[PATCH RFCv1 01/14] iommufd: Move iommufd_object to public iommufd header

Nicolin Chen nicolinc at nvidia.com
Sun May 12 15:40:44 PDT 2024


On Sun, May 12, 2024 at 10:21:49AM -0300, Jason Gunthorpe wrote:
> On Fri, Apr 12, 2024 at 08:46:58PM -0700, Nicolin Chen wrote:
> > diff --git a/include/linux/iommufd.h b/include/linux/iommufd.h 
> > +enum iommufd_object_type {
> > +	IOMMUFD_OBJ_NONE,
> > +	IOMMUFD_OBJ_ANY = IOMMUFD_OBJ_NONE,
> > +	IOMMUFD_OBJ_DEVICE,
> > +	IOMMUFD_OBJ_HWPT_PAGING,
> > +	IOMMUFD_OBJ_HWPT_NESTED,
> > +	IOMMUFD_OBJ_IOAS,
> > +	IOMMUFD_OBJ_ACCESS,
> > +#ifdef CONFIG_IOMMUFD_TEST
> > +	IOMMUFD_OBJ_SELFTEST,
> > +#endif
> > +	IOMMUFD_OBJ_MAX,
> > +};
> 
> Can we just forward declare the enum? It would be nice to keep it in
> the private header

It doesn't seem to support that:
./include/linux/iommufd.h:31:34: error: field ‘type’ has incomplete type
   31 |         enum iommufd_object_type type;

By testing the following change on top of the series:
===================================
-enum iommufd_object_type {
-       IOMMUFD_OBJ_NONE,
-       IOMMUFD_OBJ_ANY = IOMMUFD_OBJ_NONE,
-       IOMMUFD_OBJ_DEVICE,
-       IOMMUFD_OBJ_HWPT_PAGING,
-       IOMMUFD_OBJ_HWPT_NESTED,
-       IOMMUFD_OBJ_IOAS,
-       IOMMUFD_OBJ_ACCESS,
-       IOMMUFD_OBJ_VIOMMU,
-       IOMMUFD_OBJ_VQUEUE,
-#ifdef CONFIG_IOMMUFD_TEST
-       IOMMUFD_OBJ_SELFTEST,
-#endif
-       IOMMUFD_OBJ_MAX,
-};
+enum iommufd_object_type;

 /* Base struct for all objects with a userspace ID handle. */
 struct iommufd_object {
        refcount_t shortterm_users;
        refcount_t users;
        enum iommufd_object_type type;
        unsigned int id;
 };
===================================

We could change the "enum iommufd_object_type type" in struct
iommufd_object to "unsigned int type" though...

Thanks
Nicolin



More information about the linux-arm-kernel mailing list