• Daniel Vetter's avatar
    drm/i915: Take all modeset locks for DP MST hotplug · 8bb4da1d
    Daniel Vetter authored
    While auditing various users of the connector/encoder lists I realized
    that the atomic code is a very prolific user of them. And it only ever
    grabs the mode_config->connection_mutex, but not the
    mode_config->mutex like all the other code walking encoder/connector
    lists.
    
    The problem is that we can't grab the mode_config.mutex late in atomic
    code since that would lead to locking inversions. And we don't want to
    grab it unconditionally like the legacy set_config modeset path since
    that would render all the fine-grained locking moot.
    
    Instead just grab more locks in the dp mst hotplug code. Note that
    drm_connector_init (which is the one adding the connector to these
    lists) already uses drm_modeset_lock_all.
    
    The other reason for grabbing all locks is that the dpms off in the
    unplug function amounts to a modeset, so better to take all required
    locks for that.
    Reviewed-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
    8bb4da1d
intel_dp_mst.c 16.6 KB