On 7/10/2019 11:11 PM, Alex Williamson wrote: > This allows udev to trigger rules when a parent device is registered > or unregistered from mdev. > > Reviewed-by: Cornelia Huck <cohuck@xxxxxxxxxx> > Signed-off-by: Alex Williamson <alex.williamson@xxxxxxxxxx> > --- > > v3: Add Connie's R-b > Add comment clarifying expected device requirements for unreg > Reviewed-by: Kirti Wankhede <kwankhede@xxxxxxxxxx> Thanks, Kirti > drivers/vfio/mdev/mdev_core.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/vfio/mdev/mdev_core.c b/drivers/vfio/mdev/mdev_core.c > index ae23151442cb..23976db6c6c7 100644 > --- a/drivers/vfio/mdev/mdev_core.c > +++ b/drivers/vfio/mdev/mdev_core.c > @@ -146,6 +146,8 @@ int mdev_register_device(struct device *dev, const struct mdev_parent_ops *ops) > { > int ret; > struct mdev_parent *parent; > + char *env_string = "MDEV_STATE=registered"; > + char *envp[] = { env_string, NULL }; > > /* check for mandatory ops */ > if (!ops || !ops->create || !ops->remove || !ops->supported_type_groups) > @@ -197,6 +199,8 @@ int mdev_register_device(struct device *dev, const struct mdev_parent_ops *ops) > mutex_unlock(&parent_list_lock); > > dev_info(dev, "MDEV: Registered\n"); > + kobject_uevent_env(&dev->kobj, KOBJ_CHANGE, envp); > + > return 0; > > add_dev_err: > @@ -220,6 +224,8 @@ EXPORT_SYMBOL(mdev_register_device); > void mdev_unregister_device(struct device *dev) > { > struct mdev_parent *parent; > + char *env_string = "MDEV_STATE=unregistered"; > + char *envp[] = { env_string, NULL }; > > mutex_lock(&parent_list_lock); > parent = __find_parent_device(dev); > @@ -243,6 +249,9 @@ void mdev_unregister_device(struct device *dev) > up_write(&parent->unreg_sem); > > mdev_put_parent(parent); > + > + /* We still have the caller's reference to use for the uevent */ > + kobject_uevent_env(&dev->kobj, KOBJ_CHANGE, envp); > } > EXPORT_SYMBOL(mdev_unregister_device); > >