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