Skip to content
Snippets Groups Projects
Commit 3431c3f6 authored by Xiang Chen's avatar Xiang Chen Committed by Joerg Roedel
Browse files

iommu: Fix a boundary issue to avoid performance drop


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: 862c3715 ("iommu: Switch gather->end to the inclusive end")
Signed-off-by: default avatarXiang Chen <chenxiang66@hisilicon.com>
Acked-by: default avatarWill Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/1616643504-120688-1-git-send-email-chenxiang66@hisilicon.com


Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent e49d033b
No related branches found
No related tags found
No related merge requests found
...@@ -547,7 +547,7 @@ static inline void iommu_iotlb_gather_add_page(struct iommu_domain *domain, ...@@ -547,7 +547,7 @@ static inline void iommu_iotlb_gather_add_page(struct iommu_domain *domain,
* structure can be rewritten. * structure can be rewritten.
*/ */
if (gather->pgsize != size || if (gather->pgsize != size ||
end < gather->start || start > gather->end) { end + 1 < gather->start || start > gather->end + 1) {
if (gather->pgsize) if (gather->pgsize)
iommu_iotlb_sync(domain, gather); iommu_iotlb_sync(domain, gather);
gather->pgsize = size; gather->pgsize = size;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment