OSDN Git Service

drm/i915/tc: Call TypeC port flush_work/cleanup without modeset locks held
authorImre Deak <imre.deak@intel.com>
Fri, 12 May 2023 19:55:12 +0000 (22:55 +0300)
committerImre Deak <imre.deak@intel.com>
Tue, 16 May 2023 13:53:50 +0000 (16:53 +0300)
commitb61fad5f7e5d859d95a413c3a57f59d007951fa6
tree298552a946339fec3b5064a04551f293797c28e7
parent60ded7cc86f363161e37dc41c548b2ab3e1af5ce
drm/i915/tc: Call TypeC port flush_work/cleanup without modeset locks held

Call the TypeC port flush_work and cleanup handlers without the modeset
locks held. These don't require the locks, as the work takes - as it
should be able to at any point in time - any locks it needs and by the
time cleanup is called and after cleanup returns the encoder is not in
use.

This is required by the next patch canceling a TypeC port work
synchronously during encoder suspend and shutdown, where the work can
take modeset locks as well, hence the canceling must be done without
holding the locks.

I also considered moving the modeset locking down to each encoder
suspend()/shutdown() hook instead, however locking the full modeset
state for each encoder separately would be odd, and the bigger change -
affecting all encoders - is beyond the scope of this patchset.

v2:
- Add a TODO: comment to remove modeset locks if no encoder depends
  on this. (Ville)

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230512195513.2699-1-imre.deak@intel.com
drivers/gpu/drm/i915/display/intel_ddi.c
drivers/gpu/drm/i915/display/intel_display_types.h
drivers/gpu/drm/i915/i915_driver.c