iommufd_device
int iommufd_device_attach(struct iommufd_device *idev, ioasid_t pasid,
int iommufd_device_replace(struct iommufd_device *idev, ioasid_t pasid,
void iommufd_device_detach(struct iommufd_device *idev, ioasid_t pasid)
static void iommufd_device_remove_vdev(struct iommufd_device *idev)
struct iommufd_device *idev;
struct iommufd_device *idev =
container_of(obj, struct iommufd_device, obj);
struct iommufd_device *idev =
container_of(obj, struct iommufd_device, obj);
struct iommufd_device *iommufd_device_bind(struct iommufd_ctx *ictx,
struct iommufd_device *idev;
container_of(obj, struct iommufd_device, obj)
void iommufd_device_unbind(struct iommufd_device *idev)
struct iommufd_ctx *iommufd_device_to_ictx(struct iommufd_device *idev)
u32 iommufd_device_to_id(struct iommufd_device *idev)
struct iommufd_device *idev;
iommufd_device_attach_reserved_iova(struct iommufd_device *idev,
static bool iommufd_device_is_attached(struct iommufd_device *idev,
struct iommufd_device *idev,
struct iommufd_device *idev)
struct iommufd_device *idev,
iommufd_device_get_attach_handle(struct iommufd_device *idev, ioasid_t pasid)
struct iommufd_device *idev,
static int iommufd_hwpt_replace_device(struct iommufd_device *idev,
struct iommufd_device *idev, ioasid_t pasid)
iommufd_hw_pagetable_detach(struct iommufd_device *idev, ioasid_t pasid)
iommufd_device_do_attach(struct iommufd_device *idev, ioasid_t pasid,
struct iommufd_device *cur;
struct iommufd_device *cur;
iommufd_device_do_replace(struct iommufd_device *idev, ioasid_t pasid,
iommufd_device_auto_get_domain(struct iommufd_device *idev, ioasid_t pasid,
static int iommufd_device_change_pt(struct iommufd_device *idev,
struct iommufd_device *idev;
struct iommufd_device *idev,
struct iommufd_device *idev, ioasid_t pasid,
struct iommufd_device *idev, u32 flags,
struct iommufd_device *idev;
struct iommufd_device;
struct iommufd_device *idev, ioasid_t pasid,
struct iommufd_device *idev, ioasid_t pasid);
iommufd_hw_pagetable_detach(struct iommufd_device *idev, ioasid_t pasid);
static inline struct iommufd_device *
struct iommufd_device, obj);
struct iommufd_device *idev;
struct iommufd_device *idev;
struct iommufd_device *idev;
struct iommufd_device *idev;
struct iommufd_device *idev;
struct iommufd_device *idev;
struct iommufd_device *idev = vdev->idev;
struct iommufd_device *idev = vdev->idev;
struct iommufd_device *idev;
struct iommufd_device *idev;
struct iommufd_device *idev;
vdev->iommufd_device = idev;
iommufd_device_detach(vdev->iommufd_device, pasid);
iommufd_device_detach(vdev->iommufd_device, IOMMU_NO_PASID);
iommufd_device_unbind(vdev->iommufd_device);
vdev->iommufd_device = NULL;
if (WARN_ON(!vdev->iommufd_device))
rc = iommufd_device_replace(vdev->iommufd_device,
rc = iommufd_device_attach(vdev->iommufd_device,
if (WARN_ON(!vdev->iommufd_device) || !vdev->iommufd_attached)
iommufd_device_detach(vdev->iommufd_device, IOMMU_NO_PASID);
if (WARN_ON(!vdev->iommufd_device))
return iommufd_device_replace(vdev->iommufd_device,
rc = iommufd_device_attach(vdev->iommufd_device, pasid, pt_id);
if (WARN_ON(!vdev->iommufd_device))
iommufd_device_detach(vdev->iommufd_device, pasid);
if (vdev->iommufd_device)
return iommufd_device_to_ictx(vdev->iommufd_device);
if (vdev->iommufd_device)
return iommufd_device_to_id(vdev->iommufd_device);
struct iommufd_device *idev;
struct iommufd_device;
struct iommufd_device *iommufd_device_bind(struct iommufd_ctx *ictx,
void iommufd_device_unbind(struct iommufd_device *idev);
int iommufd_device_attach(struct iommufd_device *idev, ioasid_t pasid,
int iommufd_device_replace(struct iommufd_device *idev, ioasid_t pasid,
void iommufd_device_detach(struct iommufd_device *idev, ioasid_t pasid);
struct iommufd_ctx *iommufd_device_to_ictx(struct iommufd_device *idev);
u32 iommufd_device_to_id(struct iommufd_device *idev);
struct iommufd_device;
struct iommufd_device *iommufd_device;