[PATCH] drm/lease: Send a distinct uevent

Daniel Vetter daniel.vetter at ffwll.ch
Thu Nov 29 22:33:13 UTC 2018


On Thu, Nov 29, 2018 at 10:42 AM Daniel Vetter <daniel.vetter at ffwll.ch> 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 at keithp.com>
> Cc: Dave Airlie <airlied at redhat.com>
> Cc: stable at vger.kernel.org
> Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>

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


More information about the dri-devel mailing list