On 08/02/2024 08:23, Yi Liu wrote: > The only usage of input @domain is to get the domain id (DID) to flush > cache after setting dirty tracking. However, DID can be obtained from > the pasid entry. So no need to pass in domain. This can make this helper > cleaner when adding the missing dirty tracking for the parent domain, > which needs to use the DID of nested domain. > > Signed-off-by: Yi Liu <yi.l.liu@xxxxxxxxx> Reviewed-by: Joao Martins <joao.m.martins@xxxxxxxxxx> > --- > drivers/iommu/intel/iommu.c | 7 +++---- > drivers/iommu/intel/pasid.c | 3 +-- > drivers/iommu/intel/pasid.h | 1 - > 3 files changed, 4 insertions(+), 7 deletions(-) > > diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c > index c5a0275697cb..dae20991e036 100644 > --- a/drivers/iommu/intel/iommu.c > +++ b/drivers/iommu/intel/iommu.c > @@ -4742,8 +4742,7 @@ static int intel_iommu_set_dirty_tracking(struct iommu_domain *domain, > goto out_unlock; > > list_for_each_entry(info, &dmar_domain->devices, link) { > - ret = intel_pasid_setup_dirty_tracking(info->iommu, > - info->domain, info->dev, > + ret = intel_pasid_setup_dirty_tracking(info->iommu, info->dev, > IOMMU_NO_PASID, enable); > if (ret) > goto err_unwind; > @@ -4757,8 +4756,8 @@ static int intel_iommu_set_dirty_tracking(struct iommu_domain *domain, > > err_unwind: > list_for_each_entry(info, &dmar_domain->devices, link) > - intel_pasid_setup_dirty_tracking(info->iommu, dmar_domain, > - info->dev, IOMMU_NO_PASID, > + intel_pasid_setup_dirty_tracking(info->iommu, info->dev, > + IOMMU_NO_PASID, > dmar_domain->dirty_tracking); > spin_unlock(&dmar_domain->lock); > return ret; > diff --git a/drivers/iommu/intel/pasid.c b/drivers/iommu/intel/pasid.c > index 3239cefa4c33..a32d7e509842 100644 > --- a/drivers/iommu/intel/pasid.c > +++ b/drivers/iommu/intel/pasid.c > @@ -428,7 +428,6 @@ int intel_pasid_setup_second_level(struct intel_iommu *iommu, > * Set up dirty tracking on a second only or nested translation type. > */ > int intel_pasid_setup_dirty_tracking(struct intel_iommu *iommu, > - struct dmar_domain *domain, > struct device *dev, u32 pasid, > bool enabled) > { > @@ -445,7 +444,7 @@ int intel_pasid_setup_dirty_tracking(struct intel_iommu *iommu, > return -ENODEV; > } > > - did = domain_id_iommu(domain, iommu); > + did = pasid_get_domain_id(pte); > pgtt = pasid_pte_get_pgtt(pte); > if (pgtt != PASID_ENTRY_PGTT_SL_ONLY && > pgtt != PASID_ENTRY_PGTT_NESTED) { > diff --git a/drivers/iommu/intel/pasid.h b/drivers/iommu/intel/pasid.h > index 8d40d4c66e31..487ede039bdd 100644 > --- a/drivers/iommu/intel/pasid.h > +++ b/drivers/iommu/intel/pasid.h > @@ -307,7 +307,6 @@ int intel_pasid_setup_second_level(struct intel_iommu *iommu, > struct dmar_domain *domain, > struct device *dev, u32 pasid); > int intel_pasid_setup_dirty_tracking(struct intel_iommu *iommu, > - struct dmar_domain *domain, > struct device *dev, u32 pasid, > bool enabled); > int intel_pasid_setup_pass_through(struct intel_iommu *iommu,