Messages in this thread | | | From | "Tian, Kevin" <> | Subject | RE: [PATCH RFC 02/11] iommu: Add iommu_domain type for SVA | Date | Mon, 21 Mar 2022 07:06:00 +0000 |
| |
> From: Lu Baolu <baolu.lu@linux.intel.com> > Sent: Sunday, March 20, 2022 2:40 PM > > Add a new iommu domain type IOMMU_DOMAIN_SVA to represent an I/O > page > table which is shared from CPU host VA. Add a sva_cookie field in the > iommu_domain structure to save the mm_struct which represent the CPU > memory page table. > > Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> > --- > include/linux/iommu.h | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/include/linux/iommu.h b/include/linux/iommu.h > index 36f43af0af53..3e179b853380 100644 > --- a/include/linux/iommu.h > +++ b/include/linux/iommu.h > @@ -64,6 +64,9 @@ struct iommu_domain_geometry { > #define __IOMMU_DOMAIN_PT (1U << 2) /* Domain is identity > mapped */ > #define __IOMMU_DOMAIN_DMA_FQ (1U << 3) /* DMA-API uses > flush queue */ > > +#define __IOMMU_DOMAIN_SHARED (1U << 4) /* Page table shared from > CPU */ > +#define __IOMMU_DOMAIN_HOST_VA (1U << 5) /* Host CPU virtual > address */
suppose the SHARED bit will be also used for KVM page table sharing and HOST_VA bit is to differentiate mm sharing from the latter?
> + > /* > * This are the possible domain-types > * > @@ -86,6 +89,8 @@ struct iommu_domain_geometry { > #define IOMMU_DOMAIN_DMA_FQ (__IOMMU_DOMAIN_PAGING | > \ > __IOMMU_DOMAIN_DMA_API | \ > __IOMMU_DOMAIN_DMA_FQ) > +#define IOMMU_DOMAIN_SVA (__IOMMU_DOMAIN_SHARED | > \ > + __IOMMU_DOMAIN_HOST_VA) > > struct iommu_domain { > unsigned type; > @@ -95,6 +100,7 @@ struct iommu_domain { > void *handler_token; > struct iommu_domain_geometry geometry; > struct iommu_dma_cookie *iova_cookie; > + struct mm_struct *sva_cookie; > }; > > static inline bool iommu_is_dma_domain(struct iommu_domain *domain) > -- > 2.25.1
| |