On Thu, Nov 29, 2018 at 10:42 AM Daniel Vetter <daniel.vetter@xxxxxxxx> wrote: > > Sending the exact same hotplug event is not great uapi. Luckily the > only already merged implementation of leases (in the -modesetting > driver) doesn't care about what kind of uevent it gets, and > unconditionally processes both hotplug and lease changes. So we can > still adjust the uapi here. > > But e.g. weston tries to filter stuff, and I guess others might want > to do that too. Try to make that possible. Cc: stable since it's uapi > adjustement that we want to roll out everywhere. > > Cc: Keith Packard <keithp@xxxxxxxxxx> > Cc: Dave Airlie <airlied@xxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> Michel said on irc that -amdgpu also supports leases already, but it has the same logic as -modesetting, so would be fine too. -Daniel > --- > drivers/gpu/drm/drm_internal.h | 2 ++ > drivers/gpu/drm/drm_lease.c | 2 +- > drivers/gpu/drm/drm_sysfs.c | 10 ++++++++++ > 3 files changed, 13 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h > index c7a7d7ce5d1c..d9caf205e0b3 100644 > --- a/drivers/gpu/drm/drm_internal.h > +++ b/drivers/gpu/drm/drm_internal.h > @@ -99,6 +99,8 @@ struct device *drm_sysfs_minor_alloc(struct drm_minor *minor); > int drm_sysfs_connector_add(struct drm_connector *connector); > void drm_sysfs_connector_remove(struct drm_connector *connector); > > +void drm_sysfs_lease_event(struct drm_device *dev); > + > /* drm_gem.c */ > int drm_gem_init(struct drm_device *dev); > void drm_gem_destroy(struct drm_device *dev); > diff --git a/drivers/gpu/drm/drm_lease.c b/drivers/gpu/drm/drm_lease.c > index 3650d3c46718..99cba8ea5d82 100644 > --- a/drivers/gpu/drm/drm_lease.c > +++ b/drivers/gpu/drm/drm_lease.c > @@ -292,7 +292,7 @@ void drm_lease_destroy(struct drm_master *master) > > if (master->lessor) { > /* Tell the master to check the lessee list */ > - drm_sysfs_hotplug_event(dev); > + drm_sysfs_lease_event(dev); > drm_master_put(&master->lessor); > } > > diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c > index b3c1daad1169..ecb7b33002bb 100644 > --- a/drivers/gpu/drm/drm_sysfs.c > +++ b/drivers/gpu/drm/drm_sysfs.c > @@ -301,6 +301,16 @@ void drm_sysfs_connector_remove(struct drm_connector *connector) > connector->kdev = NULL; > } > > +void drm_sysfs_lease_event(struct drm_device *dev) > +{ > + char *event_string = "LEASE=1"; > + char *envp[] = { event_string, NULL }; > + > + DRM_DEBUG("generating lease event\n"); > + > + kobject_uevent_env(&dev->primary->kdev->kobj, KOBJ_CHANGE, envp); > +} > + > /** > * drm_sysfs_hotplug_event - generate a DRM uevent > * @dev: DRM device > -- > 2.19.1 > -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch