OSDN Git Service

drm/dp_mst: Refactor pdt setup/teardown, add more locking
authorLyude Paul <lyude@redhat.com>
Wed, 13 Mar 2019 17:51:41 +0000 (13:51 -0400)
committerLyude Paul <lyude@redhat.com>
Thu, 24 Oct 2019 18:23:55 +0000 (14:23 -0400)
commitc485e2c97dae4e13f239ccad455070e99213dd4b
treec9e777e6d221871f96bbd997bcc16d38327ea4ce
parentd29333cf5cd7594bd9a6bac10cbb4ec7079dc9a3
drm/dp_mst: Refactor pdt setup/teardown, add more locking

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: Sean Paul <sean@poorly.run>
Signed-off-by: Lyude Paul <lyude@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191022023641.8026-4-lyude@redhat.com
drivers/gpu/drm/drm_dp_mst_topology.c
include/drm/drm_dp_mst_helper.h