lkml.org 
[lkml]   [2024]   [Mar]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRE: [PATCH 04/12] iommu/vt-d: Use cache_tag_flush_all() in flush_iotlb_all
Date
> From: Lu Baolu <baolu.lu@linux.intel.com>
> Sent: Monday, March 25, 2024 10:17 AM
>
> The flush_iotlb_all callback is called by the iommu core to flush
> all caches for the affected domain. Use cache_tag_flush_all() in
> this callback.
>
> Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
> ---
> drivers/iommu/intel/iommu.c | 21 +--------------------
> 1 file changed, 1 insertion(+), 20 deletions(-)
>
> diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
> index 93e4422c9b10..4ce98f23917c 100644
> --- a/drivers/iommu/intel/iommu.c
> +++ b/drivers/iommu/intel/iommu.c
> @@ -1560,26 +1560,7 @@ static void parent_domain_flush(struct
> dmar_domain *domain,
>
> static void intel_flush_iotlb_all(struct iommu_domain *domain)
> {
> - struct dmar_domain *dmar_domain = to_dmar_domain(domain);
> - struct iommu_domain_info *info;
> - unsigned long idx;
> -
> - xa_for_each(&dmar_domain->iommu_array, idx, info) {
> - struct intel_iommu *iommu = info->iommu;
> - u16 did = domain_id_iommu(dmar_domain, iommu);
> -
> - if (dmar_domain->use_first_level)
> - domain_flush_pasid_iotlb(iommu, dmar_domain, 0,
> -1, 0);
> - else
> - iommu->flush.flush_iotlb(iommu, did, 0, 0,
> - DMA_TLB_DSI_FLUSH);
> -
> - if (!cap_caching_mode(iommu->cap))
> - iommu_flush_dev_iotlb(dmar_domain, 0,
> MAX_AGAW_PFN_WIDTH);
> - }
> -
> - if (dmar_domain->nested_parent)
> - parent_domain_flush(dmar_domain, 0, -1, 0);
> + cache_tag_flush_all(to_dmar_domain(domain));
> }
>

this replacement causes a functional change. Now devtlb is always
invalidated while old code doesn't do so for caching mode.

Probably you may want to first clean up all inconsistent devtlb
invalidation policies for caching mode before going to this series...

\
 
 \ /
  Last update: 2024-05-27 16:13    [W:0.322 / U:0.732 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site