| /linux/include/linux/ |
| H A D | iommu.h | 39 struct iommu_domain; 161 typedef int (*iommu_fault_handler_t)(struct iommu_domain *, 223 struct iommu_domain { struct 254 static inline bool iommu_is_dma_domain(struct iommu_domain *domain) in iommu_is_dma_domain() 416 int (*set_dirty_tracking)(struct iommu_domain *domain, bool enabled); 417 int (*read_and_clear_dirty)(struct iommu_domain *domain, 702 struct iommu_domain *(*domain_alloc)(unsigned iommu_domain_type); 704 struct iommu_domain *(*domain_alloc_identity)(struct device *dev); 705 struct iommu_domain *(*domain_alloc_paging_flags)( 708 struct iommu_domain *(*domain_alloc_paging)(struct device *dev); [all …]
|
| H A D | omap-iommu.h | 13 struct iommu_domain; 19 int omap_iommu_domain_deactivate(struct iommu_domain *domain); 20 int omap_iommu_domain_activate(struct iommu_domain *domain); 25 static inline int omap_iommu_domain_deactivate(struct iommu_domain *domain) in omap_iommu_domain_deactivate() 30 static inline int omap_iommu_domain_activate(struct iommu_domain *domain) in omap_iommu_domain_activate()
|
| /linux/drivers/iommu/ |
| H A D | fsl_pamu_domain.c | 27 static struct fsl_dma_domain *to_fsl_dma_domain(struct iommu_domain *dom) in to_fsl_dma_domain() 29 return container_of(dom, struct fsl_dma_domain, iommu_domain); in to_fsl_dma_domain() 172 static phys_addr_t fsl_pamu_iova_to_phys(struct iommu_domain *domain, in fsl_pamu_iova_to_phys() 186 static void fsl_pamu_domain_free(struct iommu_domain *domain) in fsl_pamu_domain_free() 195 static struct iommu_domain *fsl_pamu_domain_alloc(unsigned type) in fsl_pamu_domain_alloc() 218 dma_domain->iommu_domain. geometry.aperture_start = 0; in fsl_pamu_domain_alloc() 219 dma_domain->iommu_domain.geometry.aperture_end = (1ULL << 36) - 1; in fsl_pamu_domain_alloc() 220 dma_domain->iommu_domain.geometry.force_aperture = true; in fsl_pamu_domain_alloc() 222 return &dma_domain->iommu_domain; in fsl_pamu_domain_alloc() 240 static int fsl_pamu_attach_device(struct iommu_domain *domain, in fsl_pamu_attach_device() [all …]
|
| H A D | sprd-iommu.c | 78 struct iommu_domain domain; 86 static struct sprd_iommu_domain *to_sprd_domain(struct iommu_domain *dom) in to_sprd_domain() 129 sprd_iommu_pgt_size(struct iommu_domain *domain) in sprd_iommu_pgt_size() 136 static struct iommu_domain *sprd_iommu_domain_alloc_paging(struct device *dev) in sprd_iommu_domain_alloc_paging() 241 static void sprd_iommu_domain_free(struct iommu_domain *domain) in sprd_iommu_domain_free() 249 static int sprd_iommu_attach_device(struct iommu_domain *domain, in sprd_iommu_attach_device() 251 struct iommu_domain *old) in sprd_iommu_attach_device() 287 static int sprd_iommu_map(struct iommu_domain *domain, unsigned long iova, in sprd_iommu_map() 324 static size_t sprd_iommu_unmap(struct iommu_domain *domain, unsigned long iova, in sprd_iommu_unmap() 347 static int sprd_iommu_sync_map(struct iommu_domain *domain, in sprd_iommu_sync_map() [all …]
|
| H A D | s390-iommu.c | 28 struct iommu_domain domain; 37 static struct iommu_domain blocking_domain; 495 static struct s390_domain *to_s390_domain(struct iommu_domain *dom) in to_s390_domain() 528 static struct iommu_domain *s390_domain_alloc_paging(struct device *dev) in s390_domain_alloc_paging() 579 static void s390_domain_free(struct iommu_domain *domain) in s390_domain_free() 591 struct iommu_domain *domain) in zdev_s390_domain_update() 633 struct iommu_domain *domain, u8 *status) in s390_iommu_domain_reg_ioat() 672 static int blocking_domain_attach_device(struct iommu_domain *domain, in blocking_domain_attach_device() 674 struct iommu_domain *old) in blocking_domain_attach_device() 697 static int s390_iommu_attach_device(struct iommu_domain *domain, in s390_iommu_attach_device() [all …]
|
| H A D | vsi-iommu.c | 48 struct iommu_domain *domain; /* domain to which iommu is attached */ 59 struct iommu_domain domain; 65 static struct iommu_domain vsi_identity_domain; 157 static struct vsi_iommu_domain *to_vsi_domain(struct iommu_domain *dom) in to_vsi_domain() 229 static struct iommu_domain *vsi_iommu_domain_alloc_paging(struct device *dev) in vsi_iommu_domain_alloc_paging() 293 static phys_addr_t vsi_iommu_iova_to_phys(struct iommu_domain *domain, in vsi_iommu_iova_to_phys() 366 static void vsi_iommu_flush_tlb(struct iommu_domain *domain) in vsi_iommu_flush_tlb() 388 static size_t vsi_iommu_unmap(struct iommu_domain *domain, unsigned long _iova, in vsi_iommu_unmap() 458 static int vsi_iommu_map(struct iommu_domain *domain, unsigned long _iova, in vsi_iommu_map() 499 static int vsi_iommu_identity_attach(struct iommu_domain *domain, in vsi_iommu_identity_attach() [all …]
|
| H A D | exynos-iommu.c | 30 static struct iommu_domain exynos_identity_domain; 239 struct iommu_domain *domain; /* domain this device is attached */ 255 struct iommu_domain domain; /* generic domain data structure */ 423 static struct exynos_iommu_domain *to_exynos_domain(struct iommu_domain *dom) in to_exynos_domain() 893 static struct iommu_domain *exynos_iommu_domain_alloc_paging(struct device *dev) in exynos_iommu_domain_alloc_paging() 946 static void exynos_iommu_domain_free(struct iommu_domain *iommu_domain) in exynos_iommu_domain_free() argument 948 struct exynos_iommu_domain *domain = to_exynos_domain(iommu_domain); in exynos_iommu_domain_free() 986 static int exynos_iommu_identity_attach(struct iommu_domain *identity_domain, in exynos_iommu_identity_attach() 988 struct iommu_domain *old) in exynos_iommu_identity_attach() 1033 static struct iommu_domain exynos_identity_domain = { [all …]
|
| H A D | sun50i-iommu.c | 111 struct iommu_domain *domain; 116 struct iommu_domain domain; 128 static struct sun50i_iommu_domain *to_sun50i_domain(struct iommu_domain *domain) in to_sun50i_domain() 384 static void sun50i_iommu_flush_iotlb_all(struct iommu_domain *domain) in sun50i_iommu_flush_iotlb_all() 406 static int sun50i_iommu_iotlb_sync_map(struct iommu_domain *domain, in sun50i_iommu_iotlb_sync_map() 420 static void sun50i_iommu_iotlb_sync(struct iommu_domain *domain, in sun50i_iommu_iotlb_sync() 595 static int sun50i_iommu_map(struct iommu_domain *domain, unsigned long iova, in sun50i_iommu_map() 638 static size_t sun50i_iommu_unmap(struct iommu_domain *domain, unsigned long iova, in sun50i_iommu_unmap() 662 static phys_addr_t sun50i_iommu_iova_to_phys(struct iommu_domain *domain, in sun50i_iommu_iova_to_phys() 684 static struct iommu_domain * [all …]
|
| H A D | ipmmu-vmsa.c | 72 struct iommu_domain io_domain; 81 static struct ipmmu_vmsa_domain *to_vmsa_domain(struct iommu_domain *dom) in to_vmsa_domain() 565 static struct iommu_domain *ipmmu_domain_alloc_paging(struct device *dev) in ipmmu_domain_alloc_paging() 579 static void ipmmu_domain_free(struct iommu_domain *io_domain) in ipmmu_domain_free() 592 static int ipmmu_attach_device(struct iommu_domain *io_domain, in ipmmu_attach_device() 593 struct device *dev, struct iommu_domain *old) in ipmmu_attach_device() 639 static int ipmmu_iommu_identity_attach(struct iommu_domain *identity_domain, in ipmmu_iommu_identity_attach() 641 struct iommu_domain *old) in ipmmu_iommu_identity_attach() 664 static struct iommu_domain ipmmu_iommu_identity_domain = { 669 static int ipmmu_map(struct iommu_domain *io_domain, unsigned long iova, in ipmmu_map() [all …]
|
| H A D | dma-iommu.c | 75 struct iommu_domain *fq_domain; 333 int iommu_dma_init_fq(struct iommu_domain *domain) in iommu_dma_init_fq() 369 int iommu_get_dma_cookie(struct iommu_domain *domain) in iommu_get_dma_cookie() 398 int iommu_get_msi_cookie(struct iommu_domain *domain, dma_addr_t base) in iommu_get_msi_cookie() 424 void iommu_put_dma_cookie(struct iommu_domain *domain) in iommu_put_dma_cookie() 442 void iommu_put_msi_cookie(struct iommu_domain *domain) in iommu_put_msi_cookie() 554 struct iommu_domain *domain) in iova_reserve_iommu_regions() 653 struct iommu_domain *domain) in iommu_domain_supports_fq() 670 static int iommu_dma_init_domain(struct iommu_domain *domain, struct device *dev) in iommu_dma_init_domain() 760 static dma_addr_t iommu_dma_alloc_iova(struct iommu_domain *domain, in iommu_dma_alloc_iova() [all …]
|
| H A D | fsl_pamu_domain.h | 16 struct iommu_domain iommu_domain; member
|
| H A D | virtio-iommu.c | 64 struct iommu_domain domain; 657 static struct iommu_domain *viommu_domain_alloc_paging(struct device *dev) in viommu_domain_alloc_paging() 698 static void viommu_domain_free(struct iommu_domain *domain) in viommu_domain_free() 711 static struct iommu_domain *viommu_domain_alloc_identity(struct device *dev) in viommu_domain_alloc_identity() 714 struct iommu_domain *domain; in viommu_domain_alloc_identity() 733 static int viommu_attach_dev(struct iommu_domain *domain, struct device *dev, in viommu_attach_dev() 734 struct iommu_domain *old) in viommu_attach_dev() 784 static int viommu_attach_identity_domain(struct iommu_domain *domain, in viommu_attach_identity_domain() 786 struct iommu_domain *old) in viommu_attach_identity_domain() 842 static int viommu_map_pages(struct iommu_domain *domain, unsigned long iova, in viommu_map_pages() [all …]
|
| H A D | tegra-smmu.c | 58 struct iommu_domain domain; 70 static struct tegra_smmu_as *to_smmu_as(struct iommu_domain *dom) in to_smmu_as() 288 static struct iommu_domain *tegra_smmu_domain_alloc_paging(struct device *dev) in tegra_smmu_domain_alloc_paging() 331 static void tegra_smmu_domain_free(struct iommu_domain *domain) in tegra_smmu_domain_free() 492 static int tegra_smmu_attach_dev(struct iommu_domain *domain, in tegra_smmu_attach_dev() 493 struct device *dev, struct iommu_domain *old) in tegra_smmu_attach_dev() 526 static int tegra_smmu_identity_attach(struct iommu_domain *identity_domain, in tegra_smmu_identity_attach() 528 struct iommu_domain *old) in tegra_smmu_identity_attach() 554 static struct iommu_domain tegra_smmu_identity_domain = { 721 __tegra_smmu_map(struct iommu_domain *domain, unsigned long iova, in __tegra_smmu_map() [all …]
|
| /linux/drivers/iommu/iommufd/ |
| H A D | hwpt_noiommu.c | 14 struct iommu_domain domain; 39 static struct iommu_domain * 76 static void noiommu_domain_free(struct iommu_domain *iommu_domain) in noiommu_domain_free() argument 79 container_of(iommu_domain, struct noiommu_domain, domain); in noiommu_domain_free() 85 static void noiommu_iotlb_sync(struct iommu_domain *domain, in noiommu_iotlb_sync()
|
| /linux/drivers/soc/fsl/qbman/ |
| H A D | qman_portal.c | 51 pcfg->iommu_domain = iommu_paging_domain_alloc(dev); in portal_set_cpu() 52 if (IS_ERR(pcfg->iommu_domain)) { in portal_set_cpu() 54 pcfg->iommu_domain = NULL; in portal_set_cpu() 57 ret = fsl_pamu_configure_l1_stash(pcfg->iommu_domain, cpu); in portal_set_cpu() 63 ret = iommu_attach_device(pcfg->iommu_domain, dev); in portal_set_cpu() 78 iommu_domain_free(pcfg->iommu_domain); in portal_set_cpu() 79 pcfg->iommu_domain = NULL; in portal_set_cpu() 91 pcfg->iommu_domain = NULL; in init_pcfg() 131 if (pcfg->iommu_domain) { in qman_portal_update_sdest() 132 if (fsl_pamu_configure_l1_stash(pcfg->iommu_domain, cpu) < 0) { in qman_portal_update_sdest()
|
| /linux/drivers/iommu/intel/ |
| H A D | nested.c | 21 static int intel_nested_attach_dev(struct iommu_domain *domain, in intel_nested_attach_dev() 22 struct device *dev, struct iommu_domain *old) in intel_nested_attach_dev() 79 static void intel_nested_domain_free(struct iommu_domain *domain) in intel_nested_domain_free() 91 static int intel_nested_cache_invalidate_user(struct iommu_domain *domain, in intel_nested_cache_invalidate_user() 137 struct iommu_domain *old) in domain_setup_nested() 145 static int intel_nested_set_dev_pasid(struct iommu_domain *domain, in intel_nested_set_dev_pasid() 147 struct iommu_domain *old) in intel_nested_set_dev_pasid() 195 struct iommu_domain * 196 intel_iommu_domain_alloc_nested(struct device *dev, struct iommu_domain *parent, in intel_iommu_domain_alloc_nested()
|
| H A D | svm.c | 148 static int intel_svm_set_dev_pasid(struct iommu_domain *domain, in intel_svm_set_dev_pasid() 150 struct iommu_domain *old) in intel_svm_set_dev_pasid() 190 static void intel_svm_domain_free(struct iommu_domain *domain) in intel_svm_domain_free() 203 struct iommu_domain *intel_svm_domain_alloc(struct device *dev, in intel_svm_domain_alloc()
|
| /linux/drivers/iommu/riscv/ |
| H A D | iommu.c | 838 struct iommu_domain domain; 847 #define iommu_domain_to_riscv(iommu_domain) \ argument 848 container_of(iommu_domain, struct riscv_iommu_domain, domain) 1255 static void riscv_iommu_iotlb_flush_all(struct iommu_domain *iommu_domain) in riscv_iommu_iotlb_flush_all() argument 1257 struct riscv_iommu_domain *domain = iommu_domain_to_riscv(iommu_domain); in riscv_iommu_iotlb_flush_all() 1268 static void riscv_iommu_iotlb_sync(struct iommu_domain *iommu_domain, in riscv_iommu_iotlb_sync() argument 1271 struct riscv_iommu_domain *domain = iommu_domain_to_riscv(iommu_domain); in riscv_iommu_iotlb_sync() 1277 static void riscv_iommu_free_paging_domain(struct iommu_domain *iommu_domain) in riscv_iommu_free_paging_domain() argument 1279 struct riscv_iommu_domain *domain = iommu_domain_to_riscv(iommu_domain); in riscv_iommu_free_paging_domain() 1305 static int riscv_iommu_attach_paging_domain(struct iommu_domain *iommu_domain, in riscv_iommu_attach_paging_domain() argument [all …]
|
| /linux/drivers/iommu/amd/ |
| H A D | pasid.c | 102 static int iommu_sva_set_dev_pasid(struct iommu_domain *domain, in iommu_sva_set_dev_pasid() 104 struct iommu_domain *old) in iommu_sva_set_dev_pasid() 149 struct iommu_domain *domain) in amd_iommu_remove_dev_pasid() 167 static void iommu_sva_domain_free(struct iommu_domain *domain) in iommu_sva_domain_free() 182 struct iommu_domain *amd_iommu_domain_alloc_sva(struct device *dev, in amd_iommu_domain_alloc_sva()
|
| H A D | nested.c | 16 static inline struct nested_domain *to_ndomain(struct iommu_domain *dom) in to_ndomain() 95 struct iommu_domain * 191 static void set_dte_nested(struct amd_iommu *iommu, struct iommu_domain *dom, in set_dte_nested() 237 static int nested_attach_device(struct iommu_domain *dom, struct device *dev, in nested_attach_device() 238 struct iommu_domain *old) in nested_attach_device() 263 static void nested_domain_free(struct iommu_domain *dom) in nested_domain_free()
|
| H A D | amd_iommu.h | 54 struct iommu_domain *amd_iommu_domain_alloc_sva(struct device *dev, 56 void amd_iommu_domain_free(struct iommu_domain *dom); 58 struct iommu_domain *domain); 167 static inline struct protection_domain *to_pdomain(struct iommu_domain *dom) in to_pdomain() 222 struct iommu_domain *
|
| /linux/arch/powerpc/include/asm/ |
| H A D | fsl_pamu_stash.h | 10 struct iommu_domain; 19 int fsl_pamu_configure_l1_stash(struct iommu_domain *domain, u32 cpu);
|
| /linux/drivers/net/ethernet/marvell/octeontx2/nic/ |
| H A D | otx2_txrx.h | 173 static inline u64 otx2_iova_to_phys(void *iommu_domain, dma_addr_t dma_addr) in otx2_iova_to_phys() argument 176 if (likely(iommu_domain)) in otx2_iova_to_phys() 177 return iommu_iova_to_phys(iommu_domain, dma_addr); in otx2_iova_to_phys()
|
| /linux/drivers/iommu/arm/arm-smmu-v3/ |
| H A D | arm-smmu-v3.h | 1043 struct iommu_domain domain; 1057 struct iommu_domain domain; 1114 struct iommu_domain *domain; 1120 static inline struct arm_smmu_domain *to_smmu_domain(struct iommu_domain *dom) in to_smmu_domain() 1126 to_smmu_nested_domain(struct iommu_domain *dom) in to_smmu_nested_domain() 1155 struct arm_smmu_cd *cd, struct iommu_domain *old); 1198 struct iommu_domain *old_domain; 1211 struct iommu_domain *new_domain); 1229 struct iommu_domain *arm_smmu_sva_domain_alloc(struct device *dev, 1266 struct iommu_domain *parent_domain, [all …]
|
| /linux/Documentation/userspace-api/ |
| H A D | iommufd.rst | 45 (i.e. a single struct iommu_domain) managed by the iommu driver. "PAGING" 47 indicates that it is backed by an iommu_domain with __IOMMU_DOMAIN_PAGING 56 (i.e. a single struct iommu_domain) managed by user space (e.g. guest OS). 58 It also indicates that it is backed by an iommu_domain that has a type of 157 |------------>|iommu_domain|<-----------------------|device| 173 |------------>|iommu_domain|<----|iommu_domain|<----|device| 195 |iommu_device| |------>|iommu_domain|<----|iommu_domain|<----|device| 217 an iommu_domain to userspace will be created, and then added to the list. 219 device and iommu_domain. Once this completes the device could do DMA. 309 - struct iommu_domain representing the IO page table in the IOMMU [all …]
|