Messages in this thread Patch in this message | | | From | Lu Baolu <> | Subject | [PATCH 1/6] iommu: Add dev_def_domain_type() callback in iommu_ops | Date | Sat, 7 Mar 2020 14:20:09 +0800 |
| |
From: Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>
Some devices are reqired to use a specific type (identity or dma) of default domain when they are used with a vendor iommu. When the system level default domain type is different from it, the vendor iommu driver has to request a new default domain with iommu_request_dma_domain_for_dev() and iommu_request_dm_for_dev() in the add_dev() callback. Unfortunately, these two helpers only work when the group hasn't been assigned to any other devices, hence, some vendor iommu driver has to use a private domain if it fails to request a new default one.
This adds dev_def_domain_type() callback in the iommu_ops, so that the special requirement of default domain for a device could be aware by the iommu generic layer.
Signed-off-by: Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com> 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 d1b5f4d98569..0c1e95e6b263 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -248,6 +248,10 @@ struct iommu_iotlb_gather { * @cache_invalidate: invalidate translation caches * @sva_bind_gpasid: bind guest pasid and mm * @sva_unbind_gpasid: unbind guest pasid and mm + * @dev_def_domain_type: device default domain type, return value: + * - IOMMU_DOMAIN_IDENTITY: must use an identity domain + * - IOMMU_DOMAIN_DMA: must use a dma domain + * - 0: use the default setting * @pgsize_bitmap: bitmap of all possible supported page sizes * @owner: Driver module providing these ops */ @@ -318,6 +322,8 @@ struct iommu_ops { int (*sva_unbind_gpasid)(struct device *dev, int pasid); + int (*dev_def_domain_type)(struct device *dev); + unsigned long pgsize_bitmap; struct module *owner; }; -- 2.17.1
| |