iommu_domain_ops
Regular
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)