vfio_iommu_driver_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
: ✅struct vfio_iommu_driver_ops {
char *name;
struct module *owner;
void * (*open)(long unsigned int);
void (*release)(void *);
ssize_t (*read)(void *, char *, size_t, loff_t *);
ssize_t (*write)(void *, const char *, size_t, loff_t *);
long int (*ioctl)(void *, unsigned int, long unsigned int);
int (*mmap)(void *, struct vm_area_struct *);
int (*attach_group)(void *, struct iommu_group *);
void (*detach_group)(void *, struct iommu_group *);
int (*pin_pages)(void *, long unsigned int *, int, int, long unsigned int *);
int (*unpin_pages)(void *, long unsigned int *, int);
int (*register_notifier)(void *, long unsigned int *, struct notifier_block *);
int (*unregister_notifier)(void *, struct notifier_block *);
};
5.8
: ✅struct vfio_iommu_driver_ops {
char *name;
struct module *owner;
void * (*open)(long unsigned int);
void (*release)(void *);
ssize_t (*read)(void *, char *, size_t, loff_t *);
ssize_t (*write)(void *, const char *, size_t, loff_t *);
long int (*ioctl)(void *, unsigned int, long unsigned int);
int (*mmap)(void *, struct vm_area_struct *);
int (*attach_group)(void *, struct iommu_group *);
void (*detach_group)(void *, struct iommu_group *);
int (*pin_pages)(void *, struct iommu_group *, long unsigned int *, int, int, long unsigned int *);
int (*unpin_pages)(void *, long unsigned int *, int);
int (*register_notifier)(void *, long unsigned int *, struct notifier_block *);
int (*unregister_notifier)(void *, struct notifier_block *);
int (*dma_rw)(void *, dma_addr_t, void *, size_t, bool);
};
5.11
: ✅struct vfio_iommu_driver_ops {
char *name;
struct module *owner;
void * (*open)(long unsigned int);
void (*release)(void *);
ssize_t (*read)(void *, char *, size_t, loff_t *);
ssize_t (*write)(void *, const char *, size_t, loff_t *);
long int (*ioctl)(void *, unsigned int, long unsigned int);
int (*mmap)(void *, struct vm_area_struct *);
int (*attach_group)(void *, struct iommu_group *);
void (*detach_group)(void *, struct iommu_group *);
int (*pin_pages)(void *, struct iommu_group *, long unsigned int *, int, int, long unsigned int *);
int (*unpin_pages)(void *, long unsigned int *, int);
int (*register_notifier)(void *, long unsigned int *, struct notifier_block *);
int (*unregister_notifier)(void *, struct notifier_block *);
int (*dma_rw)(void *, dma_addr_t, void *, size_t, bool);
struct iommu_domain * (*group_iommu_domain)(void *, struct iommu_group *);
};
5.13
: ✅struct vfio_iommu_driver_ops {
char *name;
struct module *owner;
void * (*open)(long unsigned int);
void (*release)(void *);
ssize_t (*read)(void *, char *, size_t, loff_t *);
ssize_t (*write)(void *, const char *, size_t, loff_t *);
long int (*ioctl)(void *, unsigned int, long unsigned int);
int (*mmap)(void *, struct vm_area_struct *);
int (*attach_group)(void *, struct iommu_group *);
void (*detach_group)(void *, struct iommu_group *);
int (*pin_pages)(void *, struct iommu_group *, long unsigned int *, int, int, long unsigned int *);
int (*unpin_pages)(void *, long unsigned int *, int);
int (*register_notifier)(void *, long unsigned int *, struct notifier_block *);
int (*unregister_notifier)(void *, struct notifier_block *);
int (*dma_rw)(void *, dma_addr_t, void *, size_t, bool);
struct iommu_domain * (*group_iommu_domain)(void *, struct iommu_group *);
void (*notify)(void *, enum vfio_iommu_notify_type);
};
5.15
: ✅struct vfio_iommu_driver_ops {
char *name;
struct module *owner;
void * (*open)(long unsigned int);
void (*release)(void *);
ssize_t (*read)(void *, char *, size_t, loff_t *);
ssize_t (*write)(void *, const char *, size_t, loff_t *);
long int (*ioctl)(void *, unsigned int, long unsigned int);
int (*mmap)(void *, struct vm_area_struct *);
int (*attach_group)(void *, struct iommu_group *);
void (*detach_group)(void *, struct iommu_group *);
int (*pin_pages)(void *, struct iommu_group *, long unsigned int *, int, int, long unsigned int *);
int (*unpin_pages)(void *, long unsigned int *, int);
int (*register_notifier)(void *, long unsigned int *, struct notifier_block *);
int (*unregister_notifier)(void *, struct notifier_block *);
int (*dma_rw)(void *, dma_addr_t, void *, size_t, bool);
struct iommu_domain * (*group_iommu_domain)(void *, struct iommu_group *);
void (*notify)(void *, enum vfio_iommu_notify_type);
};
5.19
: ✅struct vfio_iommu_driver_ops {
char *name;
struct module *owner;
void * (*open)(long unsigned int);
void (*release)(void *);
long int (*ioctl)(void *, unsigned int, long unsigned int);
int (*attach_group)(void *, struct iommu_group *, enum vfio_group_type);
void (*detach_group)(void *, struct iommu_group *);
int (*pin_pages)(void *, struct iommu_group *, long unsigned int *, int, int, long unsigned int *);
int (*unpin_pages)(void *, long unsigned int *, int);
int (*register_notifier)(void *, long unsigned int *, struct notifier_block *);
int (*unregister_notifier)(void *, struct notifier_block *);
int (*dma_rw)(void *, dma_addr_t, void *, size_t, bool);
struct iommu_domain * (*group_iommu_domain)(void *, struct iommu_group *);
void (*notify)(void *, enum vfio_iommu_notify_type);
};
6.2
: Absent ⚠️
6.5
: Absent ⚠️
6.8
: Absent ⚠️
arm64
: Absent ⚠️
armhf
: Absent ⚠️
ppc64el
: ✅struct vfio_iommu_driver_ops {
char *name;
struct module *owner;
void * (*open)(long unsigned int);
void (*release)(void *);
ssize_t (*read)(void *, char *, size_t, loff_t *);
ssize_t (*write)(void *, const char *, size_t, loff_t *);
long int (*ioctl)(void *, unsigned int, long unsigned int);
int (*mmap)(void *, struct vm_area_struct *);
int (*attach_group)(void *, struct iommu_group *);
void (*detach_group)(void *, struct iommu_group *);
int (*pin_pages)(void *, long unsigned int *, int, int, long unsigned int *);
int (*unpin_pages)(void *, long unsigned int *, int);
int (*register_notifier)(void *, long unsigned int *, struct notifier_block *);
int (*unregister_notifier)(void *, struct notifier_block *);
};
riscv64
: Absent ⚠️
aws
: Absent ⚠️
azure
: ✅struct vfio_iommu_driver_ops {
char *name;
struct module *owner;
void * (*open)(long unsigned int);
void (*release)(void *);
ssize_t (*read)(void *, char *, size_t, loff_t *);
ssize_t (*write)(void *, const char *, size_t, loff_t *);
long int (*ioctl)(void *, unsigned int, long unsigned int);
int (*mmap)(void *, struct vm_area_struct *);
int (*attach_group)(void *, struct iommu_group *);
void (*detach_group)(void *, struct iommu_group *);
int (*pin_pages)(void *, long unsigned int *, int, int, long unsigned int *);
int (*unpin_pages)(void *, long unsigned int *, int);
int (*register_notifier)(void *, long unsigned int *, struct notifier_block *);
int (*unregister_notifier)(void *, struct notifier_block *);
};
gcp
: ✅struct vfio_iommu_driver_ops {
char *name;
struct module *owner;
void * (*open)(long unsigned int);
void (*release)(void *);
ssize_t (*read)(void *, char *, size_t, loff_t *);
ssize_t (*write)(void *, const char *, size_t, loff_t *);
long int (*ioctl)(void *, unsigned int, long unsigned int);
int (*mmap)(void *, struct vm_area_struct *);
int (*attach_group)(void *, struct iommu_group *);
void (*detach_group)(void *, struct iommu_group *);
int (*pin_pages)(void *, long unsigned int *, int, int, long unsigned int *);
int (*unpin_pages)(void *, long unsigned int *, int);
int (*register_notifier)(void *, long unsigned int *, struct notifier_block *);
int (*unregister_notifier)(void *, struct notifier_block *);
};
lowlatency
: ✅struct vfio_iommu_driver_ops {
char *name;
struct module *owner;
void * (*open)(long unsigned int);
void (*release)(void *);
ssize_t (*read)(void *, char *, size_t, loff_t *);
ssize_t (*write)(void *, const char *, size_t, loff_t *);
long int (*ioctl)(void *, unsigned int, long unsigned int);
int (*mmap)(void *, struct vm_area_struct *);
int (*attach_group)(void *, struct iommu_group *);
void (*detach_group)(void *, struct iommu_group *);
int (*pin_pages)(void *, long unsigned int *, int, int, long unsigned int *);
int (*unpin_pages)(void *, long unsigned int *, int);
int (*register_notifier)(void *, long unsigned int *, struct notifier_block *);
int (*unregister_notifier)(void *, struct notifier_block *);
};
Regular
5.4
and 5.8
⚠️int (*dma_rw)(void *, dma_addr_t, void *, size_t, bool)
int (*pin_pages)(void *, long unsigned int *, int, int, long unsigned int *)
➡️ int (*pin_pages)(void *, struct iommu_group *, long unsigned int *, int, int, long unsigned int *)
5.8
and 5.11
⚠️struct iommu_domain * (*group_iommu_domain)(void *, struct iommu_group *)
5.11
and 5.13
⚠️void (*notify)(void *, enum vfio_iommu_notify_type)
5.13
and 5.15
✅
5.15
and 5.19
⚠️ssize_t (*read)(void *, char *, size_t, loff_t *)
ssize_t (*write)(void *, const char *, size_t, loff_t *)
int (*mmap)(void *, struct vm_area_struct *)
int (*attach_group)(void *, struct iommu_group *)
➡️ int (*attach_group)(void *, struct iommu_group *, enum vfio_group_type)
amd64
and ppc64el
✅
generic
and azure
✅
generic
and gcp
✅
generic
and lowlatency
✅