mirror of
https://github.com/torvalds/linux.git
synced 2026-05-04 14:32:27 -04:00
vfio/mdev: Add missing typesafety around mdev_device
The mdev API should accept and pass a 'struct mdev_device *' in all places, not pass a 'struct device *' and cast it internally with to_mdev_device(). Particularly in its struct mdev_driver functions, the whole point of a bus's struct device_driver wrapper is to provide type safety compared to the default struct device_driver. Further, the driver core standard is for bus drivers to expose their device structure in their public headers that can be used with container_of() inlines and '&foo->dev' to go between the class levels, and '&foo->dev' to be used with dev_err/etc driver core helper functions. Move 'struct mdev_device' to mdev.h Once done this allows moving some one instruction exported functions to static inlines, which in turns allows removing one of the two grotesque symbol_get()'s related to mdev in the core code. Reviewed-by: Kevin Tian <kevin.tian@intel.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Message-Id: <3-v2-d36939638fc6+d54-vfio2_jgg@nvidia.com> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
committed by
Alex Williamson
parent
b5a1f8921d
commit
2a3d15f270
@@ -24,23 +24,6 @@ struct mdev_parent {
|
||||
struct rw_semaphore unreg_sem;
|
||||
};
|
||||
|
||||
struct mdev_device {
|
||||
struct device dev;
|
||||
struct mdev_parent *parent;
|
||||
guid_t uuid;
|
||||
void *driver_data;
|
||||
struct list_head next;
|
||||
struct kobject *type_kobj;
|
||||
struct device *iommu_device;
|
||||
bool active;
|
||||
};
|
||||
|
||||
static inline struct mdev_device *to_mdev_device(struct device *dev)
|
||||
{
|
||||
return container_of(dev, struct mdev_device, dev);
|
||||
}
|
||||
#define dev_is_mdev(d) ((d)->bus == &mdev_bus_type)
|
||||
|
||||
struct mdev_type {
|
||||
struct kobject kobj;
|
||||
struct kobject *devices_kobj;
|
||||
@@ -57,11 +40,11 @@ struct mdev_type {
|
||||
int parent_create_sysfs_files(struct mdev_parent *parent);
|
||||
void parent_remove_sysfs_files(struct mdev_parent *parent);
|
||||
|
||||
int mdev_create_sysfs_files(struct device *dev, struct mdev_type *type);
|
||||
void mdev_remove_sysfs_files(struct device *dev, struct mdev_type *type);
|
||||
int mdev_create_sysfs_files(struct mdev_device *mdev, struct mdev_type *type);
|
||||
void mdev_remove_sysfs_files(struct mdev_device *mdev, struct mdev_type *type);
|
||||
|
||||
int mdev_device_create(struct kobject *kobj,
|
||||
struct device *dev, const guid_t *uuid);
|
||||
int mdev_device_remove(struct device *dev);
|
||||
int mdev_device_remove(struct mdev_device *dev);
|
||||
|
||||
#endif /* MDEV_PRIVATE_H */
|
||||
|
||||
Reference in New Issue
Block a user