Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/lease: Send a distinct uevent

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.

Michel Dänzer mentioned on irc that -amdgpu also has lease support. It
has the same code flow as -modesetting though, so we can still go
ahead.

v2: Mention -amdgpu (Michel)

Cc: Keith Packard <keithp@keithp.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: stable@vger.kernel.org
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20181129094226.30591-1-daniel.vetter@ffwll.ch

+13 -1
+2
drivers/gpu/drm/drm_internal.h
··· 104 104 int drm_sysfs_connector_add(struct drm_connector *connector); 105 105 void drm_sysfs_connector_remove(struct drm_connector *connector); 106 106 107 + void drm_sysfs_lease_event(struct drm_device *dev); 108 + 107 109 /* drm_gem.c */ 108 110 int drm_gem_init(struct drm_device *dev); 109 111 void drm_gem_destroy(struct drm_device *dev);
+1 -1
drivers/gpu/drm/drm_lease.c
··· 296 296 297 297 if (master->lessor) { 298 298 /* Tell the master to check the lessee list */ 299 - drm_sysfs_hotplug_event(dev); 299 + drm_sysfs_lease_event(dev); 300 300 drm_master_put(&master->lessor); 301 301 } 302 302
+10
drivers/gpu/drm/drm_sysfs.c
··· 301 301 connector->kdev = NULL; 302 302 } 303 303 304 + void drm_sysfs_lease_event(struct drm_device *dev) 305 + { 306 + char *event_string = "LEASE=1"; 307 + char *envp[] = { event_string, NULL }; 308 + 309 + DRM_DEBUG("generating lease event\n"); 310 + 311 + kobject_uevent_env(&dev->primary->kdev->kobj, KOBJ_CHANGE, envp); 312 + } 313 + 304 314 /** 305 315 * drm_sysfs_hotplug_event - generate a DRM uevent 306 316 * @dev: DRM device