[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen stable-4.11] vtd: improve IOMMU TLB flush
commit 4ed000741e34431fa53d21ebdb93e50f5d407033 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Tue Jul 7 15:21:34 2020 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Tue Jul 7 15:21:34 2020 +0200 vtd: improve IOMMU TLB flush Do not limit PSI flushes to order 0 pages, in order to avoid doing a full TLB flush if the passed in page has an order greater than 0 and is aligned. Should increase the performance of IOMMU TLB flushes when dealing with page orders greater than 0. This is part of XSA-321. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> master commit: 5fe515a0fede07543f2a3b049167b1fd8b873caf master date: 2020-07-07 14:37:46 +0200 --- xen/drivers/passthrough/vtd/iommu.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c index 4e5e2342df..52bf0d9d23 100644 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -612,13 +612,14 @@ static int __must_check iommu_flush_iotlb(struct domain *d, if ( iommu_domid == -1 ) continue; - if ( page_count != 1 || gfn == gfn_x(INVALID_GFN) ) + if ( !page_count || (page_count & (page_count - 1)) || + gfn == gfn_x(INVALID_GFN) || !IS_ALIGNED(gfn, page_count) ) rc = iommu_flush_iotlb_dsi(iommu, iommu_domid, 0, flush_dev_iotlb); else rc = iommu_flush_iotlb_psi(iommu, iommu_domid, (paddr_t)gfn << PAGE_SHIFT_4K, - PAGE_ORDER_4K, + get_order_from_pages(page_count), !dma_old_pte_present, flush_dev_iotlb); -- generated by git-patchbot for /home/xen/git/xen.git#stable-4.11
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |