[Intel-gfx] [PATCH 3/3] drm/i915: cancel the panel VDD work when we do it manually
Daniel Vetter
daniel at ffwll.ch
Thu Oct 31 15:13:53 CET 2013
On Thu, Oct 31, 2013 at 1:46 PM, Jani Nikula
<jani.nikula at linux.intel.com> wrote:
> On Thu, 31 Oct 2013, Daniel Vetter <daniel at ffwll.ch> wrote:
>> On Wed, Oct 30, 2013 at 07:50:28PM -0200, Paulo Zanoni wrote:
>>> From: Paulo Zanoni <paulo.r.zanoni at intel.com>
>>>
>>> After I reorganized the panel VDD debug messages I was able to spot we
>>> were disabling it one extra time. The problem is that we're missing
>>> the call to cancel the delayed work in one of the instances where we
>>> manually call ironlake_panel_vdd_off_sync().
>>>
>>> Signed-off-by: Paulo Zanoni <paulo.r.zanoni at intel.com>
>>> ---
>>> drivers/gpu/drm/i915/intel_dp.c | 1 +
>>> 1 file changed, 1 insertion(+)
>>>
>>> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
>>> index 8db1fda..f2280b4 100644
>>> --- a/drivers/gpu/drm/i915/intel_dp.c
>>> +++ b/drivers/gpu/drm/i915/intel_dp.c
>>> @@ -1159,6 +1159,7 @@ void ironlake_edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync)
>>> intel_dp->want_panel_vdd = false;
>>>
>>> if (sync) {
>>> + cancel_delayed_work_sync(&intel_dp->panel_vdd_work);
>>
>> This will deadlock since we hold the mode_config.mutex here, and the
>> panel_vdd_work also needs that. I've merged the other two patches.
>
> Ooof, reviewer facepalm.
>
> So we are calling ironlake_panel_vdd_off_sync() twice in this path, but
> that shouldn't matter, as we have
>
> if (!intel_dp->want_panel_vdd && ironlake_edp_have_panel_vdd(intel_dp))
>
> in there, right? Paulo, is that what you're seeing, or something else?
The work item should have a check for the actual vdd overwrite state
and if it's off already silently do nothing. At least that should have
been there once before ...
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
More information about the Intel-gfx
mailing list