iommu_domain_opsRegular
4.4: Absent ⚠️
4.8: Absent ⚠️
4.10: Absent ⚠️
4.13: Absent ⚠️
4.15: Absent ⚠️
4.18: Absent ⚠️
5.0: Absent ⚠️
5.3: Absent ⚠️
5.4: Absent ⚠️
5.8: Absent ⚠️
5.11: Absent ⚠️
5.13: Absent ⚠️
5.15: Absent ⚠️
5.19: ✅struct iommu_domain_ops {
int (*attach_dev)(struct iommu_domain *, struct device *);
void (*detach_dev)(struct iommu_domain *, struct device *);
int (*map)(struct iommu_domain *, long unsigned int, phys_addr_t, size_t, int, gfp_t);
int (*map_pages)(struct iommu_domain *, long unsigned int, phys_addr_t, size_t, size_t, int, gfp_t, size_t *);
size_t (*unmap)(struct iommu_domain *, long unsigned int, size_t, struct iommu_iotlb_gather *);
size_t (*unmap_pages)(struct iommu_domain *, long unsigned int, size_t, size_t, struct iommu_iotlb_gather *);
void (*flush_iotlb_all)(struct iommu_domain *);
void (*iotlb_sync_map)(struct iommu_domain *, long unsigned int, size_t);
void (*iotlb_sync)(struct iommu_domain *, struct iommu_iotlb_gather *);
phys_addr_t (*iova_to_phys)(struct iommu_domain *, dma_addr_t);
bool (*enforce_cache_coherency)(struct iommu_domain *);
int (*enable_nesting)(struct iommu_domain *);
int (*set_pgtable_quirks)(struct iommu_domain *, long unsigned int);
void (*free)(struct iommu_domain *);
};
6.2: ✅struct iommu_domain_ops {
int (*attach_dev)(struct iommu_domain *, struct device *);
void (*detach_dev)(struct iommu_domain *, struct device *);
int (*set_dev_pasid)(struct iommu_domain *, struct device *, ioasid_t);
int (*map)(struct iommu_domain *, long unsigned int, phys_addr_t, size_t, int, gfp_t);
int (*map_pages)(struct iommu_domain *, long unsigned int, phys_addr_t, size_t, size_t, int, gfp_t, size_t *);
size_t (*unmap)(struct iommu_domain *, long unsigned int, size_t, struct iommu_iotlb_gather *);
size_t (*unmap_pages)(struct iommu_domain *, long unsigned int, size_t, size_t, struct iommu_iotlb_gather *);
void (*flush_iotlb_all)(struct iommu_domain *);
void (*iotlb_sync_map)(struct iommu_domain *, long unsigned int, size_t);
void (*iotlb_sync)(struct iommu_domain *, struct iommu_iotlb_gather *);
phys_addr_t (*iova_to_phys)(struct iommu_domain *, dma_addr_t);
bool (*enforce_cache_coherency)(struct iommu_domain *);
int (*enable_nesting)(struct iommu_domain *);
int (*set_pgtable_quirks)(struct iommu_domain *, long unsigned int);
void (*free)(struct iommu_domain *);
};
6.5: ✅struct iommu_domain_ops {
int (*attach_dev)(struct iommu_domain *, struct device *);
int (*set_dev_pasid)(struct iommu_domain *, struct device *, ioasid_t);
int (*map)(struct iommu_domain *, long unsigned int, phys_addr_t, size_t, int, gfp_t);
int (*map_pages)(struct iommu_domain *, long unsigned int, phys_addr_t, size_t, size_t, int, gfp_t, size_t *);
size_t (*unmap)(struct iommu_domain *, long unsigned int, size_t, struct iommu_iotlb_gather *);
size_t (*unmap_pages)(struct iommu_domain *, long unsigned int, size_t, size_t, struct iommu_iotlb_gather *);
void (*flush_iotlb_all)(struct iommu_domain *);
void (*iotlb_sync_map)(struct iommu_domain *, long unsigned int, size_t);
void (*iotlb_sync)(struct iommu_domain *, struct iommu_iotlb_gather *);
phys_addr_t (*iova_to_phys)(struct iommu_domain *, dma_addr_t);
bool (*enforce_cache_coherency)(struct iommu_domain *);
int (*enable_nesting)(struct iommu_domain *);
int (*set_pgtable_quirks)(struct iommu_domain *, long unsigned int);
void (*free)(struct iommu_domain *);
};
6.8: ✅struct iommu_domain_ops {
int (*attach_dev)(struct iommu_domain *, struct device *);
int (*set_dev_pasid)(struct iommu_domain *, struct device *, ioasid_t);
int (*map_pages)(struct iommu_domain *, long unsigned int, phys_addr_t, size_t, size_t, int, gfp_t, size_t *);
size_t (*unmap_pages)(struct iommu_domain *, long unsigned int, size_t, size_t, struct iommu_iotlb_gather *);
void (*flush_iotlb_all)(struct iommu_domain *);
int (*iotlb_sync_map)(struct iommu_domain *, long unsigned int, size_t);
void (*iotlb_sync)(struct iommu_domain *, struct iommu_iotlb_gather *);
int (*cache_invalidate_user)(struct iommu_domain *, struct iommu_user_data_array *);
phys_addr_t (*iova_to_phys)(struct iommu_domain *, dma_addr_t);
bool (*enforce_cache_coherency)(struct iommu_domain *);
int (*enable_nesting)(struct iommu_domain *);
int (*set_pgtable_quirks)(struct iommu_domain *, long unsigned int);
void (*free)(struct iommu_domain *);
};
arm64: Absent ⚠️
armhf: Absent ⚠️
ppc64el: Absent ⚠️
riscv64: Absent ⚠️
aws: Absent ⚠️
azure: Absent ⚠️
gcp: Absent ⚠️
lowlatency: Absent ⚠️
Regular
5.19 and 6.2 ⚠️int (*set_dev_pasid)(struct iommu_domain *, struct device *, ioasid_t)
6.2 and 6.5 ⚠️void (*detach_dev)(struct iommu_domain *, struct device *)
6.5 and 6.8 ⚠️int (*cache_invalidate_user)(struct iommu_domain *, struct iommu_user_data_array *)
int (*map)(struct iommu_domain *, long unsigned int, phys_addr_t, size_t, int, gfp_t)
size_t (*unmap)(struct iommu_domain *, long unsigned int, size_t, struct iommu_iotlb_gather *)
void (*iotlb_sync_map)(struct iommu_domain *, long unsigned int, size_t) ➡️ int (*iotlb_sync_map)(struct iommu_domain *, long unsigned int, size_t)