Patch "iommu: Fix a boundary issue to avoid performance drop" has been added to the 5.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    iommu: Fix a boundary issue to avoid performance drop

to the 5.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     iommu-fix-a-boundary-issue-to-avoid-performance-drop.patch
and it can be found in the queue-5.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 993c67f534b1ec74000a4f7cae507fc55be06641
Author: Xiang Chen <chenxiang66@xxxxxxxxxxxxx>
Date:   Thu Mar 25 11:38:24 2021 +0800

    iommu: Fix a boundary issue to avoid performance drop
    
    [ Upstream commit 3431c3f660a39f6ced954548a59dba6541ce3eb1 ]
    
    After the change of patch ("iommu: Switch gather->end to the
    inclusive end"), the performace drops from 1600+K IOPS to 1200K in our
    kunpeng ARM64 platform.
    We find that the range [start1, end1) actually is joint from the range
    [end1, end2), but it is considered as disjoint after the change,
    so it needs more times of TLB sync, and spends more time on it.
    So fix the boundary issue to avoid performance drop.
    
    Fixes: 862c3715de8f ("iommu: Switch gather->end to the inclusive end")
    Signed-off-by: Xiang Chen <chenxiang66@xxxxxxxxxxxxx>
    Acked-by: Will Deacon <will@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/1616643504-120688-1-git-send-email-chenxiang66@xxxxxxxxxxxxx
    Signed-off-by: Joerg Roedel <jroedel@xxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/include/linux/iommu.h b/include/linux/iommu.h
index f11f5072af5d..e90c267e7f3e 100644
--- a/include/linux/iommu.h
+++ b/include/linux/iommu.h
@@ -544,7 +544,7 @@ static inline void iommu_iotlb_gather_add_page(struct iommu_domain *domain,
 	 * structure can be rewritten.
 	 */
 	if (gather->pgsize != size ||
-	    end < gather->start || start > gather->end) {
+	    end + 1 < gather->start || start > gather->end + 1) {
 		if (gather->pgsize)
 			iommu_iotlb_sync(domain, gather);
 		gather->pgsize = size;



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux