[PATCH v4 01/14] iommufd/viommu: Introduce IOMMUFD_OBJ_VDEVICE and its related struct

Nicolin Chen nicolinc at nvidia.com
Thu Oct 24 20:37:05 PDT 2024


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



More information about the linux-arm-kernel mailing list