On Tuesday, October 18th, 2022 at 11:24, Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> wrote: > On Mon, Oct 17, 2022 at 03:32:01PM +0000, Simon Ser wrote: > > > A typical DP-MST unplug removes a KMS connector. However care must > > be taken to properly synchronize with user-space. The expected > > sequence of events is the following: > > > > 1. The kernel notices that the DP-MST port is gone. > > 2. The kernel marks the connector as disconnected, then sends a > > uevent to make user-space re-scan the connector list. > > 3. User-space notices the connector goes from connected to disconnected, > > disables it. > > 4. Kernel handles the the IOCTL disabling the connector. On success, > > the very last reference to the struct drm_connector is dropped and > > drm_connector_cleanup() is called. > > 5. The connector is removed from the list, and a uevent is sent to tell > > user-space that the connector disappeared. > > > > The very last step was missing. As a result, user-space thought the > > connector still existed and could try to disable it again. Since the > > kernel no longer knows about the connector, that would end up with > > EINVAL and confused user-space. > > So is the uevent sent by the mst delayed destroy work > useless now, or what is going on there? No, that one is still useful, step (2) above.