[+ Joerg] On Thu, Mar 25, 2021 at 11:38:24AM +0800, chenxiang wrote: > From: Xiang Chen <[email protected]> > > 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 <[email protected]> > --- > include/linux/iommu.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/linux/iommu.h b/include/linux/iommu.h > index ae8eddd..4d5bcc2 100644 > --- a/include/linux/iommu.h > +++ b/include/linux/iommu.h > @@ -547,7 +547,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;
Urgh, I must say I much preferred these things being exclusive, but this looks like a necessary fix: Acked-by: Will Deacon <[email protected]> I wonder whether we should've just made these things u64s instead... Will _______________________________________________ iommu mailing list [email protected] https://lists.linuxfoundation.org/mailman/listinfo/iommu
