drm/i915: Fixing mutex deadlock window at eDP DRRS
authorRamalingam C <ramalingam.c@intel.com>
Tue, 3 Mar 2015 06:41:46 +0000 (12:11 +0530)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 17 Mar 2015 21:29:55 +0000 (22:29 +0100)
commit3954e733ab0c9449443897f2669e17fff4471a0e
tree6f8906ace38a1d3843e3cbbd1d9216a9f2a18113
parenta54746e39ad5cc27cf3099bec1e813cdf8ad7f7e
drm/i915: Fixing mutex deadlock window at eDP DRRS

In invalidate and flush functions of eDP DRRS, if deferred downclock
work starts execution at a time window between acquiring the drrs
mutex and cancellation of the deferred work
(intel_edp_drrs_downclock_work), then deferred work will find
drrs mutex locked and wait for the same.

Meanwhile the function that acquired mutex drrs invalidate/flush will
wait for the completion of the deferred work before releasing the mutex.
Thats a deadlock.

To avoid such deadlock scenario, this change cancels the deferred work
before acquiring the mutex at invalidate and flush functions.

Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_dp.c