On Mon, Oct 21, 2024 at 05:20:10PM -0700, Nicolin Chen wrote:
> struct iommufd_viommu_ops {
> + struct iommufd_vdevice *(*vdevice_alloc)(struct iommufd_viommu
> *viommu,
> + struct device *dev, u64 id);
> + void (*vdevice_free)(struct iommufd_vdevice *vdev);
...
> +#define iommufd_vdevice_alloc(ictx, drv_struct, member)
> \
> + ({
> \
> + static_assert(
> \
> + __same_type(struct iommufd_vdevice,
> \
> + ((struct drv_struct *)NULL)->member));
> \
> + static_assert(offsetof(struct drv_struct, member.obj) == 0);
> \
> + container_of(_iommufd_object_alloc(ictx,
> \
> + sizeof(struct drv_struct),
> \
> + IOMMUFD_OBJ_VDEVICE),
> \
> + struct drv_struct, member.obj);
> \
> + })
Per discussion in vIRQ series [1], we might not need to expose
struct iommufd_vdevice. So, dropping most of the changes here,
and moving iommufd_device to the private header.
[1] https://lore.kernel.org/linux-iommu/ZxlGfgfwrGZGIbeF@Asurada-Nvidia/
Nicolin