diff mbox

4.0.8->4.1.3 : after resume from s2ram both internal and external display of a docked ThinkPad ate black

Message ID 56333A8A.3000707@gmx.de (mailing list archive)
State New, archived
Headers show

Commit Message

Toralf Förster Oct. 30, 2015, 9:38 a.m. UTC
On 10/29/2015 10:49 PM, Pavel Machek wrote:
> On Sun 2015-10-04 18:30:14, Toralf Förster wrote:
>> On 08/04/2015 02:29 PM, Toralf Förster wrote:
>>> On 08/02/2015 09:43 AM, Pavel Machek wrote:
>>>> Any chance to bisect it?
>>> Did it.
>>>
>>> FWIW: the mentioned commit was introduced between 3.18 and 3.19.
>>> But my system (hardened 64 bit Gentoo) did not suffer from it till version 4.0.8.
>>> The hardened kernel 4.1.x was the first where the bug was visible at my docked environment  too.
>>>
>>>
>>>
>>> commit e7d6f7d708290da1b7c92f533444b042c79412e0
>>> Author: Dave Airlie <airlied@redhat.com>
>>> Date:   Mon Dec 8 13:23:37 2014 +1000
>>>
>>>     drm/i915: resume MST after reading back hw state
>>>
>>>     Otherwise the MST resume paths can hit DPMS paths
>>>     which hit state checker paths, which hit WARN_ON,
>>>     because the state checker is inconsistent with the
>>>     hw.
>>>
>>>     This fixes a bunch of WARN_ON's on resume after
>>>     undocking.
>>>
>>>     Signed-off-by: Dave Airlie <airlied@redhat.com>
>>>     Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
>>>     Cc: stable@vger.kernel.org
>>>     Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>>>
>>
>> Is there anything else what I can do ?
>>
>> Current kernels up to 4.2.3 and 4.3-rc3 (not hardened) shows this issue here at my system.
> 
> Yes. Now you ask Dave Airlie <airlied@redhat.com> to fix it. If that

Dear Dave,

please fix it.

Here's a work around which works for me since kernel 4.1.x :



> does not work, you ask him to fix it, in less polite words. If that
> does not work, you verify that reverting
> e7d6f7d708290da1b7c92f533444b042c79412e0 fixes it for you, then ask
> Daniel Vetter and Jani Nikula to revert it. If they fail to do that,
> you go all the way up to Linus.
> 
> Good luck ;-), 
> 									Pavel
>

Comments

Pavel Machek Dec. 3, 2015, 4:06 p.m. UTC | #1
> >>> commit e7d6f7d708290da1b7c92f533444b042c79412e0
> >>> Author: Dave Airlie <airlied@redhat.com>
> >>> Date:   Mon Dec 8 13:23:37 2014 +1000
> >>>
> >>>     drm/i915: resume MST after reading back hw state
....
> >> Is there anything else what I can do ?
> >>
> >> Current kernels up to 4.2.3 and 4.3-rc3 (not hardened) shows this issue here at my system.
> > 
> > Yes. Now you ask Dave Airlie <airlied@redhat.com> to fix it. If that
> 
> Dear Dave,
> 
> please fix it.
> 
> Here's a work around which works for me since kernel 4.1.x :

Dave. You broke it. You fix it. Don't make me less polite?

Daniel? Jani? Can you apply the patch below, or comment whats wrong
with that?

This is a regression, so it should not require much thinking.

									Pavel

> diff --git a/drivers/gpu/drm/i915/i915_drv.c
> b/drivers/gpu/drm/i915/i915_drv.c
> index ab64d68..3aeead2 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -740,6 +740,8 @@ static int i915_drm_resume(struct drm_device *dev)
>         if (dev_priv->display.hpd_irq_setup)
>                 dev_priv->display.hpd_irq_setup(dev);
>         spin_unlock_irq(&dev_priv->irq_lock);
> +
> +       intel_dp_mst_resume(dev);
> 
>         drm_modeset_lock_all(dev);
>         intel_display_resume(dev);
> 
> 
> > does not work, you ask him to fix it, in less polite words. If that
> > does not work, you verify that reverting
> > e7d6f7d708290da1b7c92f533444b042c79412e0 fixes it for you, then ask
> > Daniel Vetter and Jani Nikula to revert it. If they fail to do that,
> > you go all the way up to Linus.
> > 
> > Good luck ;-), 
> > 									Pavel
> > 
> 
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_drv.c
b/drivers/gpu/drm/i915/i915_drv.c
index ab64d68..3aeead2 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -740,6 +740,8 @@  static int i915_drm_resume(struct drm_device *dev)
        if (dev_priv->display.hpd_irq_setup)
                dev_priv->display.hpd_irq_setup(dev);
        spin_unlock_irq(&dev_priv->irq_lock);
+
+       intel_dp_mst_resume(dev);

        drm_modeset_lock_all(dev);
        intel_display_resume(dev);