[PATCH v3 4/6] mm: Add structure to keep sva information

Tina Zhang posted 6 patches 2 years, 5 months ago
There is a newer version of this series
[PATCH v3 4/6] mm: Add structure to keep sva information
Posted by Tina Zhang 2 years, 5 months ago
Introduce iommu_mm_data structure to keep sva information (pasid and the
related sva domains). Add iommu_mm pointer, pointing to an instance of
iommu_mm_data structure, to mm.

Signed-off-by: Tina Zhang <tina.zhang@intel.com>
---
 include/linux/iommu.h    | 5 +++++
 include/linux/mm_types.h | 2 ++
 2 files changed, 7 insertions(+)

diff --git a/include/linux/iommu.h b/include/linux/iommu.h
index ab8784dfdbd9..937f3abc26f2 100644
--- a/include/linux/iommu.h
+++ b/include/linux/iommu.h
@@ -670,6 +670,11 @@ struct iommu_sva {
 	struct iommu_domain		*domain;
 };
 
+struct iommu_mm_data {
+	u32			pasid;
+	struct list_head	sva_domains;
+};
+
 int iommu_fwspec_init(struct device *dev, struct fwnode_handle *iommu_fwnode,
 		      const struct iommu_ops *ops);
 void iommu_fwspec_free(struct device *dev);
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index 7d30dc4ff0ff..b486f521afee 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -595,6 +595,7 @@ struct mm_cid {
 #endif
 
 struct kioctx_table;
+struct iommu_mm_data;
 struct mm_struct {
 	struct {
 		/*
@@ -808,6 +809,7 @@ struct mm_struct {
 
 #ifdef CONFIG_IOMMU_SVA
 		u32 pasid;
+		struct iommu_mm_data *iommu_mm;
 #endif
 #ifdef CONFIG_KSM
 		/*
-- 
2.17.1
Re: [PATCH v3 4/6] mm: Add structure to keep sva information
Posted by Vasant Hegde 2 years, 5 months ago

On 9/5/2023 5:39 AM, Tina Zhang wrote:
> Introduce iommu_mm_data structure to keep sva information (pasid and the
> related sva domains). Add iommu_mm pointer, pointing to an instance of
> iommu_mm_data structure, to mm.
> 
> Signed-off-by: Tina Zhang <tina.zhang@intel.com>

Looks good to me.

Reviewed-by: Vasant Hegde <vasant.hegde@amd.com>

-Vasant


> ---
>  include/linux/iommu.h    | 5 +++++
>  include/linux/mm_types.h | 2 ++
>  2 files changed, 7 insertions(+)
> 
> diff --git a/include/linux/iommu.h b/include/linux/iommu.h
> index ab8784dfdbd9..937f3abc26f2 100644
> --- a/include/linux/iommu.h
> +++ b/include/linux/iommu.h
> @@ -670,6 +670,11 @@ struct iommu_sva {
>  	struct iommu_domain		*domain;
>  };
>  
> +struct iommu_mm_data {
> +	u32			pasid;
> +	struct list_head	sva_domains;
> +};
> +
>  int iommu_fwspec_init(struct device *dev, struct fwnode_handle *iommu_fwnode,
>  		      const struct iommu_ops *ops);
>  void iommu_fwspec_free(struct device *dev);
> diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
> index 7d30dc4ff0ff..b486f521afee 100644
> --- a/include/linux/mm_types.h
> +++ b/include/linux/mm_types.h
> @@ -595,6 +595,7 @@ struct mm_cid {
>  #endif
>  
>  struct kioctx_table;
> +struct iommu_mm_data;
>  struct mm_struct {
>  	struct {
>  		/*
> @@ -808,6 +809,7 @@ struct mm_struct {
>  
>  #ifdef CONFIG_IOMMU_SVA
>  		u32 pasid;
> +		struct iommu_mm_data *iommu_mm;
>  #endif
>  #ifdef CONFIG_KSM
>  		/*