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

Reply via email to