• Lyude Paul's avatar
    drm/dp_mst: Refactor pdt setup/teardown, add more locking · c485e2c9
    Lyude Paul authored
    Since we're going to be implementing suspend/resume reprobing very soon,
    we need to make sure we are extra careful to ensure that our locking
    actually protects the topology state where we expect it to. Turns out
    this isn't the case with drm_dp_port_setup_pdt() and
    drm_dp_port_teardown_pdt(), both of which change port->mstb without
    grabbing &mgr->lock.
    
    Additionally, since most callers of these functions are just using it to
    teardown the port's previous PDT and setup a new one we can simplify
    things a bit and combine drm_dp_port_setup_pdt() and
    drm_dp_port_teardown_pdt() into a single function:
    drm_dp_port_set_pdt(). This function also handles actually ensuring that
    we grab the correct locks when we need to modify port->mstb.
    
    Cc: Juston Li <juston.li@intel.com>
    Cc: Imre Deak <imre.deak@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Harry Wentland <hwentlan@amd.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Reviewed-by: default avatarSean Paul <sean@poorly.run>
    Signed-off-by: default avatarLyude Paul <lyude@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20191022023641.8026-4-lyude@redhat.com
    c485e2c9
drm_dp_mst_topology.c 122 KB