From: Liu, Yi L yi.l.liu@intel.com Sent: Thursday, February 8, 2024 4:23 PM
+/*
- Flush the relevant caches in nested translation if the domain
- also serves as a parent
- */
+static void parent_domain_flush(struct dmar_domain *domain,
unsigned long pfn,unsigned long pages, int ih)+{
- struct dmar_domain *s1_domain;
- spin_lock(&domain->s1_lock);
- list_for_each_entry(s1_domain, &domain->s1_domains, s2_link) {
struct iommu_domain_info *info;unsigned long i;xa_for_each(&s1_domain->iommu_array, i, info)__iommu_flush_iotlb_psi(info->iommu, info->did,pfn, pages, ih);- }
As Jason suggested before this xarray lacks of proper locking.
but given it's rc fix I'm fine with it. @Baolu we do need fix it soon so this problem won't further expand like here.
Reviewed-by: Kevin Tian kevin.tian@intel.com