* [PATCH v4 0/3] Pass down hot plug CONNECTOR ID to user-space
@ 2025-11-03 17:45 Marius Vlad
2025-11-03 17:45 ` [PATCH v4 1/3] drm: Introduce a new connector status Marius Vlad
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Marius Vlad @ 2025-11-03 17:45 UTC (permalink / raw)
To: dri-devel
Cc: dmitry.baryshkov, tzimmermann, simona.vetter, jani.nikula,
ian.forbes, louis.chauvet, daniel.stone
Patch series addresses a shortcoming where we're sending a hot plug event
without passing the actual CONNECTOR that caused it. This takes into
consideration both the polling path and the HPD (Hot Plug Detect) path.
v4:
- removed the "This patch" bit - Dmitry
- added a short note when the flag is set and cleared - Dmitry
- address double dead-locking detected - kbot: https://lore.kernel.org/dri-devel/202509251410.fdfbcac3-lkp@intel.com/
- virtual connectors do not seem have any kind of hotplug - added
polling in vkms - as noted by Ian
v3: Address comments from Dmitry
- guard connector status write with mode_config.mutex
- avoid setting up the connector status and immediately unset it. Do the
unset in drm_kms_helper_hotplug_event/drm_kms_helper_connector_hotplug_event
- v3 is at https://lore.kernel.org/dri-devel/20250923083636.4749-1-marius.vlad@collabora.com/
v2: Address comments from Daniel
- split patch into 2, one that introduces a bool to track connector
connection status change and a patch that uses that to be able to send
hot plug events with the proper CONNECTOR ID to udev and further pass
that down to user-space
- nuke out mutex when iterating connector list
- fix typo
- v2 is at https://lore.kernel.org/dri-devel/20250729165708.9947-1-marius.vlad@collabora.com/
Marius Vlad (3):
drm: Introduce a new connector status
drm: Propagate connector status change
drm/vkms: Add polling for HPD
drivers/gpu/drm/drm_connector.c | 1 +
drivers/gpu/drm/drm_probe_helper.c | 39 ++++++++++++++++++++++++++----
drivers/gpu/drm/drm_sysfs.c | 1 +
drivers/gpu/drm/vkms/vkms_drv.c | 4 +++
include/drm/drm_connector.h | 3 +++
5 files changed, 43 insertions(+), 5 deletions(-)
--
2.47.2
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v4 1/3] drm: Introduce a new connector status 2025-11-03 17:45 [PATCH v4 0/3] Pass down hot plug CONNECTOR ID to user-space Marius Vlad @ 2025-11-03 17:45 ` Marius Vlad 2025-11-03 17:45 ` [PATCH v4 2/3] drm: Propagate connector status change Marius Vlad 2025-11-03 17:45 ` [PATCH v4 3/3] drm/vkms: Add polling for HPD Marius Vlad 2 siblings, 0 replies; 7+ messages in thread From: Marius Vlad @ 2025-11-03 17:45 UTC (permalink / raw) To: dri-devel Cc: dmitry.baryshkov, tzimmermann, simona.vetter, jani.nikula, ian.forbes, louis.chauvet, daniel.stone Introduce a new boolean variable used to track connector's connect/disconnect status and it is being used on both polling and the HPD (Hot Plug Detect) paths. A subsequent change would make use of this connector status to propagate per-connector udev hotplug events. The connector status is set in the drm_connector_funcs.fill_modes and cleared out when firing out KMS uevents. Allows user-space to receive the connector's ID, rather than having a generic hot-plug event for all connectors, or in the HPD path, just the first one found with a connection status change. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> --- drivers/gpu/drm/drm_connector.c | 1 + drivers/gpu/drm/drm_probe_helper.c | 17 +++++++++++++++++ drivers/gpu/drm/drm_sysfs.c | 1 + include/drm/drm_connector.h | 3 +++ 4 files changed, 22 insertions(+) diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c index 272d6254ea47..3c6628ee3096 100644 --- a/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c @@ -274,6 +274,7 @@ static int drm_connector_init_only(struct drm_device *dev, /* provide ddc symlink in sysfs */ connector->ddc = ddc; + connector->status_changed = false; INIT_LIST_HEAD(&connector->head); INIT_LIST_HEAD(&connector->global_connector_list_entry); diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c index 09b12c30df69..f0474368e98d 100644 --- a/drivers/gpu/drm/drm_probe_helper.c +++ b/drivers/gpu/drm/drm_probe_helper.c @@ -629,6 +629,8 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector, mod_delayed_work(system_wq, &dev->mode_config.output_poll_work, 0); + + connector->status_changed = true; } /* @@ -732,6 +734,17 @@ EXPORT_SYMBOL(drm_helper_probe_single_connector_modes); */ void drm_kms_helper_hotplug_event(struct drm_device *dev) { + struct drm_connector *connector; + struct drm_connector_list_iter conn_iter; + + mutex_lock(&dev->mode_config.mutex); + drm_connector_list_iter_begin(dev, &conn_iter); + drm_for_each_connector_iter(connector, &conn_iter) { + connector->status_changed = false; + } + drm_connector_list_iter_end(&conn_iter); + mutex_unlock(&dev->mode_config.mutex); + drm_sysfs_hotplug_event(dev); drm_client_dev_hotplug(dev); } @@ -748,6 +761,10 @@ void drm_kms_helper_connector_hotplug_event(struct drm_connector *connector) { struct drm_device *dev = connector->dev; + mutex_lock(&dev->mode_config.mutex); + connector->status_changed = false; + mutex_unlock(&dev->mode_config.mutex); + drm_sysfs_connector_hotplug_event(connector); drm_client_dev_hotplug(dev); } diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c index b01ffa4d6509..bd9161490116 100644 --- a/drivers/gpu/drm/drm_sysfs.c +++ b/drivers/gpu/drm/drm_sysfs.c @@ -199,6 +199,7 @@ static ssize_t status_store(struct device *device, return ret; old_force = connector->force; + connector->status_changed = true; if (sysfs_streq(buf, "detect")) connector->force = 0; diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h index 8f34f4b8183d..e4310df3d55c 100644 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h @@ -2146,6 +2146,9 @@ struct drm_connector { /** @force: a DRM_FORCE_<foo> state for forced mode sets */ enum drm_connector_force force; + /** @status_changed: if the old status doesn't match current connection status */ + bool status_changed; + /** * @edid_override: Override EDID set via debugfs. * -- 2.47.2 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 2/3] drm: Propagate connector status change 2025-11-03 17:45 [PATCH v4 0/3] Pass down hot plug CONNECTOR ID to user-space Marius Vlad 2025-11-03 17:45 ` [PATCH v4 1/3] drm: Introduce a new connector status Marius Vlad @ 2025-11-03 17:45 ` Marius Vlad 2025-11-03 17:45 ` [PATCH v4 3/3] drm/vkms: Add polling for HPD Marius Vlad 2 siblings, 0 replies; 7+ messages in thread From: Marius Vlad @ 2025-11-03 17:45 UTC (permalink / raw) To: dri-devel Cc: dmitry.baryshkov, tzimmermann, simona.vetter, jani.nikula, ian.forbes, louis.chauvet, daniel.stone On the HPD (Hot Plug Detect) path this change makes use of the connector status to notify all connectors, rather than just first one found that suffered a status change. Similarly on the polling side, this also takes into consideration sending per-connector udev hotplug events. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> --- drivers/gpu/drm/drm_probe_helper.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c index f0474368e98d..63960f589b6b 100644 --- a/drivers/gpu/drm/drm_probe_helper.c +++ b/drivers/gpu/drm/drm_probe_helper.c @@ -861,8 +861,14 @@ static void output_poll_execute(struct work_struct *work) mutex_unlock(&dev->mode_config.mutex); out: - if (changed) - drm_kms_helper_hotplug_event(dev); + if (changed) { + drm_connector_list_iter_begin(dev, &conn_iter); + drm_for_each_connector_iter(connector, &conn_iter) { + if (connector->status_changed) + drm_kms_helper_connector_hotplug_event(connector); + } + drm_connector_list_iter_end(&conn_iter); + } if (repoll) schedule_delayed_work(delayed_work, DRM_OUTPUT_POLL_PERIOD); @@ -1124,10 +1130,16 @@ bool drm_helper_hpd_irq_event(struct drm_device *dev) drm_connector_list_iter_end(&conn_iter); mutex_unlock(&dev->mode_config.mutex); - if (changed == 1) + if (changed == 1) { drm_kms_helper_connector_hotplug_event(first_changed_connector); - else if (changed > 0) - drm_kms_helper_hotplug_event(dev); + } else if (changed > 0) { + drm_connector_list_iter_begin(dev, &conn_iter); + drm_for_each_connector_iter(connector, &conn_iter) { + if (connector->status_changed) + drm_kms_helper_connector_hotplug_event(connector); + } + drm_connector_list_iter_end(&conn_iter); + } if (first_changed_connector) drm_connector_put(first_changed_connector); -- 2.47.2 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 3/3] drm/vkms: Add polling for HPD 2025-11-03 17:45 [PATCH v4 0/3] Pass down hot plug CONNECTOR ID to user-space Marius Vlad 2025-11-03 17:45 ` [PATCH v4 1/3] drm: Introduce a new connector status Marius Vlad 2025-11-03 17:45 ` [PATCH v4 2/3] drm: Propagate connector status change Marius Vlad @ 2025-11-03 17:45 ` Marius Vlad 2025-11-04 10:21 ` Louis Chauvet 2 siblings, 1 reply; 7+ messages in thread From: Marius Vlad @ 2025-11-03 17:45 UTC (permalink / raw) To: dri-devel Cc: dmitry.baryshkov, tzimmermann, simona.vetter, jani.nikula, ian.forbes, louis.chauvet, daniel.stone vkms is missing any kind of HPD (polling/irq), so add polling to handle hotplug events. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> --- drivers/gpu/drm/vkms/vkms_drv.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c index e8472d9b6e3b..ec815c42ef04 100644 --- a/drivers/gpu/drm/vkms/vkms_drv.c +++ b/drivers/gpu/drm/vkms/vkms_drv.c @@ -198,6 +198,9 @@ static int vkms_create(struct vkms_config *config) if (ret) goto out_devres; + /* init kms poll for handling hpd */ + drm_kms_helper_poll_init(&vkms_device->drm); + drm_client_setup(&vkms_device->drm, NULL); return 0; @@ -240,6 +243,7 @@ static void vkms_destroy(struct vkms_config *config) fdev = config->dev->faux_dev; + drm_kms_helper_poll_fini(&config->dev->drm); drm_dev_unregister(&config->dev->drm); drm_atomic_helper_shutdown(&config->dev->drm); devres_release_group(&fdev->dev, NULL); -- 2.47.2 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v4 3/3] drm/vkms: Add polling for HPD 2025-11-03 17:45 ` [PATCH v4 3/3] drm/vkms: Add polling for HPD Marius Vlad @ 2025-11-04 10:21 ` Louis Chauvet 2025-11-04 14:19 ` Marius Vlad 0 siblings, 1 reply; 7+ messages in thread From: Louis Chauvet @ 2025-11-04 10:21 UTC (permalink / raw) To: Marius Vlad, dri-devel Cc: dmitry.baryshkov, tzimmermann, simona.vetter, jani.nikula, ian.forbes, daniel.stone Le 03/11/2025 à 18:45, Marius Vlad a écrit : > vkms is missing any kind of HPD (polling/irq), so add polling to handle > hotplug events. Hi, I am a bit surprised by this addition, we currently have hotplug/unplug in VKMS using configFS, and it seems to work. The current "irq" system is writing in configFS the status and call drm_kms_helper_hotplug_event after the status is updated [1]. I think the polling will not work, I read in the drm_kms_helper_poll_init documentation that the connector is not polled if some connector flags are not set [2]/[3]. If the polling works, I don't think it will be enough for the current VKMS implementation. Currently setting status using configFS will do everything synchronously: - Set the connector status (next call to connector->detect will have the new value) - Call drm_kms_helper_hotplug_event With your implementation, I think you expect something to update connector->status_changed in between, using polling if I understood correctly, which will probably happen after the call to drm_kms_helper_hotplug_event. [1]:https://gitlab.freedesktop.org/drm/misc/kernel/-/blob/drm-misc-next/drivers/gpu/drm/vkms/vkms_connector.c?ref_type=heads#L91-96 [2]:https://elixir.bootlin.com/linux/v6.17.7/source/drivers/gpu/drm/drm_probe_helper.c#L917-L918 [3]:https://elixir.bootlin.com/linux/v6.17.7/source/drivers/gpu/drm/drm_probe_helper.c#L793 > Signed-off-by: Marius Vlad <marius.vlad@collabora.com> > --- > drivers/gpu/drm/vkms/vkms_drv.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c > index e8472d9b6e3b..ec815c42ef04 100644 > --- a/drivers/gpu/drm/vkms/vkms_drv.c > +++ b/drivers/gpu/drm/vkms/vkms_drv.c > @@ -198,6 +198,9 @@ static int vkms_create(struct vkms_config *config) > if (ret) > goto out_devres; > > + /* init kms poll for handling hpd */ > + drm_kms_helper_poll_init(&vkms_device->drm); > + > drm_client_setup(&vkms_device->drm, NULL); > > return 0; > @@ -240,6 +243,7 @@ static void vkms_destroy(struct vkms_config *config) > > fdev = config->dev->faux_dev; > > + drm_kms_helper_poll_fini(&config->dev->drm); > drm_dev_unregister(&config->dev->drm); > drm_atomic_helper_shutdown(&config->dev->drm); > devres_release_group(&fdev->dev, NULL); -- -- Louis Chauvet, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 3/3] drm/vkms: Add polling for HPD 2025-11-04 10:21 ` Louis Chauvet @ 2025-11-04 14:19 ` Marius Vlad 2025-11-06 9:02 ` Louis Chauvet 0 siblings, 1 reply; 7+ messages in thread From: Marius Vlad @ 2025-11-04 14:19 UTC (permalink / raw) To: Louis Chauvet Cc: dri-devel, dmitry.baryshkov, tzimmermann, simona.vetter, jani.nikula, ian.forbes, daniel.stone [-- Attachment #1: Type: text/plain, Size: 3376 bytes --] On Tue, Nov 04, 2025 at 11:21:28AM +0100, Louis Chauvet wrote: > > > Le 03/11/2025 à 18:45, Marius Vlad a écrit : > > vkms is missing any kind of HPD (polling/irq), so add polling to handle > > hotplug events. > > Hi, Hi Louis, thanks for the quick reply! > > I am a bit surprised by this addition, we currently have hotplug/unplug in > VKMS using configFS, and it seems to work. The current "irq" system is > writing in configFS the status and call drm_kms_helper_hotplug_event after > the status is updated [1]. The situation is that the VKMS connectors/card are also being exposed through sysfs similar to real devices. That's where we trigger/simulate a connector hot-plug without physically unplugging cables. Wasn't aware that VKMS had something similar to that with ConfigFS, so that needs adjusting. > > I think the polling will not work, I read in the drm_kms_helper_poll_init > documentation that the connector is not polled if some connector flags are > not set [2]/[3]. In this case the loop will be no-op, but prior to the loop `changed` is set to `changed = dev->mode_config.delayed_event` [1] so the code at [2] will do run. > > If the polling works, I don't think it will be enough for the current VKMS > implementation. Currently setting status using configFS will do everything > synchronously: > - Set the connector status (next call to connector->detect will have the new > value) > - Call drm_kms_helper_hotplug_event > > With your implementation, I think you expect something to update > connector->status_changed in between, using polling if I understood > correctly, which will probably happen after the call to > drm_kms_helper_hotplug_event. Right, that's another path for VKMS. [1] https://elixir.bootlin.com/linux/v6.17.7/source/drivers/gpu/drm/drm_probe_helper.c#L769 [2] https://elixir.bootlin.com/linux/v6.17.7/source/drivers/gpu/drm/drm_probe_helper.c#L846 > > [1]:https://gitlab.freedesktop.org/drm/misc/kernel/-/blob/drm-misc-next/drivers/gpu/drm/vkms/vkms_connector.c?ref_type=heads#L91-96 > [2]:https://elixir.bootlin.com/linux/v6.17.7/source/drivers/gpu/drm/drm_probe_helper.c#L917-L918 > [3]:https://elixir.bootlin.com/linux/v6.17.7/source/drivers/gpu/drm/drm_probe_helper.c#L793 > > > Signed-off-by: Marius Vlad <marius.vlad@collabora.com> > > --- > > drivers/gpu/drm/vkms/vkms_drv.c | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c > > index e8472d9b6e3b..ec815c42ef04 100644 > > --- a/drivers/gpu/drm/vkms/vkms_drv.c > > +++ b/drivers/gpu/drm/vkms/vkms_drv.c > > @@ -198,6 +198,9 @@ static int vkms_create(struct vkms_config *config) > > if (ret) > > goto out_devres; > > + /* init kms poll for handling hpd */ > > + drm_kms_helper_poll_init(&vkms_device->drm); > > + > > drm_client_setup(&vkms_device->drm, NULL); > > return 0; > > @@ -240,6 +243,7 @@ static void vkms_destroy(struct vkms_config *config) > > fdev = config->dev->faux_dev; > > + drm_kms_helper_poll_fini(&config->dev->drm); > > drm_dev_unregister(&config->dev->drm); > > drm_atomic_helper_shutdown(&config->dev->drm); > > devres_release_group(&fdev->dev, NULL); > > -- > -- > Louis Chauvet, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com > [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 3/3] drm/vkms: Add polling for HPD 2025-11-04 14:19 ` Marius Vlad @ 2025-11-06 9:02 ` Louis Chauvet 0 siblings, 0 replies; 7+ messages in thread From: Louis Chauvet @ 2025-11-06 9:02 UTC (permalink / raw) To: Marius Vlad Cc: dri-devel, dmitry.baryshkov, tzimmermann, simona.vetter, jani.nikula, ian.forbes, daniel.stone Le 04/11/2025 à 15:19, Marius Vlad a écrit : > On Tue, Nov 04, 2025 at 11:21:28AM +0100, Louis Chauvet wrote: >> >> >> Le 03/11/2025 à 18:45, Marius Vlad a écrit : >>> vkms is missing any kind of HPD (polling/irq), so add polling to handle >>> hotplug events. >> >> Hi, > Hi Louis, thanks for the quick reply! >> >> I am a bit surprised by this addition, we currently have hotplug/unplug in >> VKMS using configFS, and it seems to work. The current "irq" system is >> writing in configFS the status and call drm_kms_helper_hotplug_event after >> the status is updated [1]. > The situation is that the VKMS connectors/card are also being exposed > through sysfs similar to real devices. That's where we trigger/simulate > a connector hot-plug without physically unplugging cables. Wasn't aware > that VKMS had something similar to that with ConfigFS, so that needs > adjusting. Yes, that very recent, I am not surprised that you missed it. >> I think the polling will not work, I read in the drm_kms_helper_poll_init >> documentation that the connector is not polled if some connector flags are >> not set [2]/[3]. > In this case the loop will be no-op, but prior to the loop > `changed` is set to `changed = dev->mode_config.delayed_event` [1] so > the code at [2] will do run. Ho, make sense, thanks for the explanation! >> >> If the polling works, I don't think it will be enough for the current VKMS >> implementation. Currently setting status using configFS will do everything >> synchronously: >> - Set the connector status (next call to connector->detect will have the new >> value) >> - Call drm_kms_helper_hotplug_event >> >> With your implementation, I think you expect something to update >> connector->status_changed in between, using polling if I understood >> correctly, which will probably happen after the call to >> drm_kms_helper_hotplug_event. > Right, that's another path for VKMS. Let me know if you have any question about the current implementation, I can help if needed. > [1] https://elixir.bootlin.com/linux/v6.17.7/source/drivers/gpu/drm/drm_probe_helper.c#L769 > [2] https://elixir.bootlin.com/linux/v6.17.7/source/drivers/gpu/drm/drm_probe_helper.c#L846 > >> >> [1]:https://gitlab.freedesktop.org/drm/misc/kernel/-/blob/drm-misc-next/drivers/gpu/drm/vkms/vkms_connector.c?ref_type=heads#L91-96 >> [2]:https://elixir.bootlin.com/linux/v6.17.7/source/drivers/gpu/drm/drm_probe_helper.c#L917-L918 >> [3]:https://elixir.bootlin.com/linux/v6.17.7/source/drivers/gpu/drm/drm_probe_helper.c#L793 >> >>> Signed-off-by: Marius Vlad <marius.vlad@collabora.com> >>> --- >>> drivers/gpu/drm/vkms/vkms_drv.c | 4 ++++ >>> 1 file changed, 4 insertions(+) >>> >>> diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c >>> index e8472d9b6e3b..ec815c42ef04 100644 >>> --- a/drivers/gpu/drm/vkms/vkms_drv.c >>> +++ b/drivers/gpu/drm/vkms/vkms_drv.c >>> @@ -198,6 +198,9 @@ static int vkms_create(struct vkms_config *config) >>> if (ret) >>> goto out_devres; >>> + /* init kms poll for handling hpd */ >>> + drm_kms_helper_poll_init(&vkms_device->drm); >>> + >>> drm_client_setup(&vkms_device->drm, NULL); >>> return 0; >>> @@ -240,6 +243,7 @@ static void vkms_destroy(struct vkms_config *config) >>> fdev = config->dev->faux_dev; >>> + drm_kms_helper_poll_fini(&config->dev->drm); >>> drm_dev_unregister(&config->dev->drm); >>> drm_atomic_helper_shutdown(&config->dev->drm); >>> devres_release_group(&fdev->dev, NULL); >> >> -- >> -- >> Louis Chauvet, Bootlin >> Embedded Linux and Kernel engineering >> https://bootlin.com >> -- -- Louis Chauvet, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-11-06 9:02 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-11-03 17:45 [PATCH v4 0/3] Pass down hot plug CONNECTOR ID to user-space Marius Vlad 2025-11-03 17:45 ` [PATCH v4 1/3] drm: Introduce a new connector status Marius Vlad 2025-11-03 17:45 ` [PATCH v4 2/3] drm: Propagate connector status change Marius Vlad 2025-11-03 17:45 ` [PATCH v4 3/3] drm/vkms: Add polling for HPD Marius Vlad 2025-11-04 10:21 ` Louis Chauvet 2025-11-04 14:19 ` Marius Vlad 2025-11-06 9:02 ` Louis Chauvet
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox