[RFC,3/6] iommu: Introduce struct iommu_mm_data
Commit Message
To make sva domain 1:1 with mm pasid, mm needs to keep reference to the
sva domain as well as keeping the information of mm pasid. Introduce
struct iommu_mm_data to wrap the information up.
When a process is created, the mm pasid is initialized as IOMMU_PASID_
INVALID. The default_iommu_mms is introduced to initialize an mm pasid
with that default value.
Signed-off-by: Tina Zhang <tina.zhang@intel.com>
---
drivers/iommu/iommu.c | 2 ++
include/linux/iommu.h | 7 +++++++
2 files changed, 9 insertions(+)
@@ -83,6 +83,8 @@ static const char * const iommu_group_resv_type_string[] = {
[IOMMU_RESV_SW_MSI] = "msi",
};
+struct iommu_mm_data default_iommu_mm = { IOMMU_PASID_INVALID, NULL };
+
#define IOMMU_CMD_LINE_DMA_API BIT(0)
#define IOMMU_CMD_LINE_STRICT BIT(1)
@@ -42,6 +42,8 @@ struct iommu_sva;
struct iommu_fault_event;
struct iommu_dma_cookie;
+extern struct iommu_mm_data default_iommu_mm;
+
/* iommu fault flags */
#define IOMMU_FAULT_READ 0x0
#define IOMMU_FAULT_WRITE 0x1
@@ -664,6 +666,11 @@ struct iommu_sva {
struct iommu_domain *domain;
};
+struct iommu_mm_data {
+ u32 pasid;
+ struct iommu_domain *sva_domain;
+};
+
int iommu_fwspec_init(struct device *dev, struct fwnode_handle *iommu_fwnode,
const struct iommu_ops *ops);
void iommu_fwspec_free(struct device *dev);