diff mbox series

[rc,6/8] iommu/vt-d: Remove @domain parameter from intel_pasid_setup_dirty_tracking()

Message ID 20240208082307.15759-7-yi.l.liu@intel.com (mailing list archive)
State New, archived
Headers show
Series Add missing cache flush and dirty tracking set for nested parent domain | expand

Commit Message

Yi Liu Feb. 8, 2024, 8:23 a.m. UTC
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@intel.com>
---
 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(-)

Comments

Tian, Kevin Feb. 8, 2024, 8:43 a.m. UTC | #1
> From: Liu, Yi L <yi.l.liu@intel.com>
> Sent: Thursday, February 8, 2024 4:23 PM
> 
> 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@intel.com>

Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Joao Martins Feb. 8, 2024, 10:29 a.m. UTC | #2
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@intel.com>

Reviewed-by: Joao Martins <joao.m.martins@oracle.com>

> ---
>  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,
diff mbox series

Patch

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,