iommufd_ctx
static struct iommufd_access *__iommufd_access_create(struct iommufd_ctx *ictx)
struct iommufd_access *iommufd_access_create_internal(struct iommufd_ctx *ictx)
iommufd_access_create(struct iommufd_ctx *ictx,
struct iommufd_device *iommufd_device_bind(struct iommufd_ctx *ictx,
bool iommufd_ctx_has_group(struct iommufd_ctx *ictx, struct iommu_group *group)
struct iommufd_ctx *iommufd_device_to_ictx(struct iommufd_device *idev)
struct iommufd_ctx *ictx = igroup->ictx;
static struct iommufd_group *iommufd_get_group(struct iommufd_ctx *ictx,
iommufd_sw_msi_get_map(struct iommufd_ctx *ictx, phys_addr_t msi_addr,
int iommufd_sw_msi_install(struct iommufd_ctx *ictx,
struct iommufd_ctx *ictx;
int _iommufd_alloc_mmap(struct iommufd_ctx *ictx, struct iommufd_object *owner,
void _iommufd_destroy_mmap(struct iommufd_ctx *ictx,
struct iommufd_ctx *ictx,
iommufd_hwpt_paging_alloc(struct iommufd_ctx *ictx, struct iommufd_ioas *ioas,
iommufd_hwpt_nested_alloc(struct iommufd_ctx *ictx,
static int iopt_map_common(struct iommufd_ctx *ictx, struct io_pagetable *iopt,
int iopt_map_user_pages(struct iommufd_ctx *ictx, struct io_pagetable *iopt,
int iopt_map_file_pages(struct iommufd_ctx *ictx, struct io_pagetable *iopt,
struct iopt_pages *iopt_alloc_dmabuf_pages(struct iommufd_ctx *ictx,
struct iommufd_ioas *iommufd_ioas_alloc(struct iommufd_ctx *ictx)
static void iommufd_release_all_iova_rwsem(struct iommufd_ctx *ictx,
static int iommufd_take_all_iova_rwsem(struct iommufd_ctx *ictx,
struct iommufd_ctx *ictx = ucmd->ictx;
struct iommufd_ctx *ictx)
int iopt_map_user_pages(struct iommufd_ctx *ictx, struct io_pagetable *iopt,
int iopt_map_file_pages(struct iommufd_ctx *ictx, struct io_pagetable *iopt,
struct iommufd_ctx *ictx;
int iommufd_vfio_ioctl(struct iommufd_ctx *ictx, unsigned int cmd,
struct iommufd_object *iommufd_get_object(struct iommufd_ctx *ictx, u32 id,
static inline void iommufd_put_object(struct iommufd_ctx *ictx,
void iommufd_object_abort(struct iommufd_ctx *ictx, struct iommufd_object *obj);
void iommufd_object_abort_and_destroy(struct iommufd_ctx *ictx,
void iommufd_object_finalize(struct iommufd_ctx *ictx,
int iommufd_object_remove(struct iommufd_ctx *ictx,
static inline void iommufd_object_destroy_user(struct iommufd_ctx *ictx,
static inline void iommufd_object_tombstone_user(struct iommufd_ctx *ictx,
iommufd_object_put_and_try_destroy(struct iommufd_ctx *ictx,
struct iommufd_object *_iommufd_object_alloc(struct iommufd_ctx *ictx,
static inline struct iommufd_ioas *iommufd_get_ioas(struct iommufd_ctx *ictx,
struct iommufd_ioas *iommufd_ioas_alloc(struct iommufd_ctx *ictx);
struct iommufd_ctx *ictx);
int iommufd_sw_msi_install(struct iommufd_ctx *ictx,
iommufd_hwpt_paging_alloc(struct iommufd_ctx *ictx, struct iommufd_ioas *ioas,
static inline void iommufd_hw_pagetable_put(struct iommufd_ctx *ictx,
struct iommufd_ctx *ictx;
struct iommufd_ctx *ictx;
struct iommufd_ctx *ictx;
struct iommufd_access *iommufd_access_create_internal(struct iommufd_ctx *ictx);
iommufd_access_destroy_internal(struct iommufd_ctx *ictx,
struct iommufd_ctx *ictx;
iommufd_get_vdevice(struct iommufd_ctx *ictx, u32 id)
void iommufd_object_finalize(struct iommufd_ctx *ictx,
void iommufd_object_abort(struct iommufd_ctx *ictx, struct iommufd_object *obj)
void iommufd_object_abort_and_destroy(struct iommufd_ctx *ictx,
struct iommufd_object *iommufd_get_object(struct iommufd_ctx *ictx, u32 id,
static int iommufd_object_dec_wait(struct iommufd_ctx *ictx,
int iommufd_object_remove(struct iommufd_ctx *ictx,
struct iommufd_ctx *ictx;
struct iommufd_ctx *ictx = filp->private_data;
struct iommufd_object *_iommufd_object_alloc(struct iommufd_ctx *ictx,
struct iommufd_ctx *ictx = filp->private_data;
struct iommufd_ctx *ictx = filp->private_data;
void iommufd_ctx_get(struct iommufd_ctx *ictx)
struct iommufd_ctx *iommufd_ctx_from_file(struct file *file)
struct iommufd_ctx *ictx;
struct iommufd_ctx *iommufd_ctx_from_fd(int fd)
void iommufd_ctx_put(struct iommufd_ctx *ictx)
static int iopt_map_dmabuf(struct iommufd_ctx *ictx, struct iopt_pages *pages,
struct iopt_pages *iopt_alloc_dmabuf_pages(struct iommufd_ctx *ictx,
iommufd_test_get_selftest_obj(struct iommufd_ctx *ictx, u32 id)
struct iommufd_ctx *ictx;
static struct iommufd_ioas *get_compat_ioas(struct iommufd_ctx *ictx)
static int iommufd_vfio_map_dma(struct iommufd_ctx *ictx, unsigned int cmd,
static int iommufd_vfio_unmap_dma(struct iommufd_ctx *ictx, unsigned int cmd,
static int iommufd_vfio_cc_iommu(struct iommufd_ctx *ictx)
static int iommufd_vfio_check_extension(struct iommufd_ctx *ictx,
static int iommufd_vfio_set_iommu(struct iommufd_ctx *ictx, unsigned long type)
int iommufd_vfio_compat_ioas_get_id(struct iommufd_ctx *ictx, u32 *out_ioas_id)
static int iommufd_vfio_iommu_get_info(struct iommufd_ctx *ictx,
int iommufd_vfio_ioctl(struct iommufd_ctx *ictx, unsigned int cmd,
int iommufd_vfio_compat_set_no_iommu(struct iommufd_ctx *ictx)
int iommufd_vfio_compat_ioas_create(struct iommufd_ctx *ictx)
struct iommufd_ctx *ictx = idev->ictx;
static void iommufd_hw_queue_destroy_access(struct iommufd_ctx *ictx,
struct iommufd_ctx *iommufd;
struct iommufd_ctx *ictx, u32 *out_device_id)
struct iommufd_ctx *ictx)
struct iommufd_ctx *ictx = df->iommufd;
struct iommufd_ctx *ictx, u32 *out_device_id)
struct iommufd_ctx *ictx)
struct iommufd_ctx *vfio_iommufd_device_ictx(struct vfio_device *vdev)
int vfio_iommufd_get_dev_id(struct vfio_device *vdev, struct iommufd_ctx *ictx)
struct iommufd_ctx *iommufd_ctx);
struct iommufd_ctx *iommufd_ctx)
if (iommufd_ctx) {
iommufd_ctx);
struct iommufd_ctx *iommufd = vfio_iommufd_device_ictx(fill->vdev);
struct iommufd_ctx;
struct iommufd_ctx *iommufd; /* protected by struct vfio_device_set::lock */
struct iommufd_ctx *ictx);
struct iommufd_ctx *ictx);
struct iommufd_ctx *ictx)
struct iommufd_ctx *ictx)
struct iommufd_ctx *iommufd;
struct iommufd_ctx *iommufd = df->iommufd;
struct iommufd_ctx *iommufd = df->iommufd;
struct iommufd_ctx;
struct iommufd_ctx *ictx;
struct iommufd_ctx *iommufd_ctx_from_file(struct file *file);
struct iommufd_ctx *iommufd_ctx_from_fd(int fd);
void iommufd_ctx_put(struct iommufd_ctx *ictx);
bool iommufd_ctx_has_group(struct iommufd_ctx *ictx, struct iommu_group *group);
int iommufd_vfio_compat_ioas_get_id(struct iommufd_ctx *ictx, u32 *out_ioas_id);
int iommufd_vfio_compat_ioas_create(struct iommufd_ctx *ictx);
int iommufd_vfio_compat_set_no_iommu(struct iommufd_ctx *ictx);
static inline struct iommufd_ctx *iommufd_ctx_from_file(struct file *file)
static inline void iommufd_ctx_put(struct iommufd_ctx *ictx)
struct iommufd_ctx;
static inline int iommufd_vfio_compat_ioas_create(struct iommufd_ctx *ictx)
static inline int iommufd_vfio_compat_set_no_iommu(struct iommufd_ctx *ictx)
int _iommufd_alloc_mmap(struct iommufd_ctx *ictx, struct iommufd_object *owner,
void _iommufd_destroy_mmap(struct iommufd_ctx *ictx,
static inline int _iommufd_alloc_mmap(struct iommufd_ctx *ictx,
static inline void _iommufd_destroy_mmap(struct iommufd_ctx *ictx,
struct iommufd_device *iommufd_device_bind(struct iommufd_ctx *ictx,
struct iommufd_ctx *iommufd_device_to_ictx(struct iommufd_device *idev);
iommufd_access_create(struct iommufd_ctx *ictx,
void iommufd_ctx_get(struct iommufd_ctx *ictx);
struct iommufd_ctx *ictx, u32 *out_device_id);
struct iommufd_ctx *vfio_iommufd_device_ictx(struct vfio_device *vdev);
int vfio_iommufd_get_dev_id(struct vfio_device *vdev, struct iommufd_ctx *ictx);
struct iommufd_ctx *ictx, u32 *out_device_id);
struct iommufd_ctx *ictx, u32 *out_device_id);
static inline struct iommufd_ctx *
vfio_iommufd_get_dev_id(struct vfio_device *vdev, struct iommufd_ctx *ictx)
((int (*)(struct vfio_device *vdev, struct iommufd_ctx *ictx, \
((int (*)(struct vfio_device *vdev, struct iommufd_ctx *ictx, \
struct iommufd_ctx;