On Tue, Oct 18, 2022 at 12:58:53PM +0300, Ville Syrjälä wrote: > On Tue, Oct 18, 2022 at 11:27:19AM +0200, Jonas Ådahl wrote: > > On Tue, Oct 18, 2022 at 12:14:09PM +0300, Ville Syrjälä wrote: > > > On Mon, Oct 17, 2022 at 03:31:57PM +0000, Simon Ser wrote: > > > > This reverts commit 981f09295687f856d5345e19c7084aca481c1395. > > > > > > > > It turns out this breaks Mutter. > > > > > > A bit more detail would be a good to help future archaeologists. > > > > Perhaps a better explanation is > > > > It turns out this causes logically active but disconnected MST display > > port connectors to disappear from the drmModeGetResources() list, > > That was the whole point was it not? So I'd drop the > "it turns out" part. > > > meaning userspace is made to believe the connector is already disabled. > > That wording to me implies its a generic issue affecting all > userspace when so far it looks like only mutter is affected. Maybe other userspace was? I only found out by testing drm-next, and only tried using mutter when bisecting. > So apparently mutter (for some reason) assumes that the > connector has somehow magically been disabled by someone > else if it disappears from the list of resources? Mutter makes the assumption that connectors it can interact with are the ones that drmModeGetResources() return - nothing magic about that. Jonas > > > > > When userspace then attempts post a new mode set commit, if that commit > > uses the same CRTC used to previously drive the disconnected connector, > > it will fail as that CRTC is logically still tied to the disconnected > > connector. > > > > This was discovered by a bisecting docking station hot plugging > > regression using mutter. > > > > > > Jonas > > > > > > > > > > > > > Signed-off-by: Simon Ser <contact@xxxxxxxxxxx> > > > > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > > > > Cc: Lyude Paul <lyude@xxxxxxxxxx> > > > > Cc: Jonas Ådahl <jadahl@xxxxxxxxxx> > > > > --- > > > > drivers/gpu/drm/drm_mode_config.c | 3 --- > > > > 1 file changed, 3 deletions(-) > > > > > > > > diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c > > > > index 939d621c9ad4..688c8afe0bf1 100644 > > > > --- a/drivers/gpu/drm/drm_mode_config.c > > > > +++ b/drivers/gpu/drm/drm_mode_config.c > > > > @@ -151,9 +151,6 @@ int drm_mode_getresources(struct drm_device *dev, void *data, > > > > count = 0; > > > > connector_id = u64_to_user_ptr(card_res->connector_id_ptr); > > > > drm_for_each_connector_iter(connector, &conn_iter) { > > > > - if (connector->registration_state != DRM_CONNECTOR_REGISTERED) > > > > - continue; > > > > - > > > > /* only expose writeback connectors if userspace understands them */ > > > > if (!file_priv->writeback_connectors && > > > > (connector->connector_type == DRM_MODE_CONNECTOR_WRITEBACK)) > > > > -- > > > > 2.38.0 > > > > > > > > > > -- > > > Ville Syrjälä > > > Intel > > > > > -- > Ville Syrjälä > Intel >