Re: [PATCH] drm/i915: enable BIOS hang workaround for Lenovo T60 too

From: Imre Deak
Date: Tue Jun 23 2015 - 08:23:30 EST


On ti, 2015-06-23 at 13:42 +0300, Mikko Rapeli wrote:
> Hi Imre,
>
> On Mon, Jun 22, 2015 at 04:43:50PM +0300, Imre Deak wrote:
> >
> > To summarize, since we extended the range of platforms to apply the
> > workaround in
> > commit ab3be73fa7b43f4c3648ce29b5fd649ea54d3adb
> > Author: Imre Deak <imre.deak@xxxxxxxxx>
> > Date: Mon Mar 2 13:04:41 2015 +0200
> >
> > drm/i915: gen4: work around hang during hibernation
> >
> > we had the following reports I know of with the same issue:
> > - Acer Aspire 1830T by Ilya (Gen5) [1]
> > - Fujitsu FSC S7110 by Dirk (Gen4.5) [2]
> > - ThinkPad X60 by Pavel (Gen4.5) [3]
> > - ThinkPad T60 by Mikko (Gen4.5) [4]
> > - ThinkPad X41 by Paul (Gen3) [5]
> >
> > Based on this I would give up on a vendor specific blacklist and apply
> > the workaround for anything < GEN6.
>
> I would not trust just user feedback on this. Do you have some HW knowledge
> from chips, reference desings on mother boards, and BIOS knowledge
> which supports enabling this poweroff_late and related workaround for all
> devices older than GEN6?

I don't have knowledge about the BIOS internals and I'm not sure how
reasonable it is to know about each vendor's implementation. What we
know is that ACPI mandates that the OS puts non-wakeup devices into PCI
D3 state during S4.

> Also, how does it work on Windows and on OS X (if that's relevant)?

I don't have the info on this. It would be interesting to know, but I
wouldn't feel completely confident either to just do the same as a given
version of a given OS.

> > About completely reverting the original
> > commit da2bc1b9db3351addd293e5b82757efe1f77ed1d
> > Author: Imre Deak <imre.deak@xxxxxxxxx>
> > Date: Thu Oct 23 19:23:26 2014 +0300
> >
> > drm/i915: add poweroff_late handler
> >
> > I still believe that the normal thing to do is to power off the device
> > during S4. This is the default action taken by the kernel's PCI core for
> > every device. S4 is not a state where it'd be guaranteed that all
> > devices are powered off, there may be wake-up devices that are still
> > powered for example, so powering off any devices explicitly that are not
> > wake-up sources makes sense to me. I think we need a point where we stop
> > applying this workaround and GEN6 seems like a good point for that,
> > since I haven't seen any report past GEN5.
>
> As a Linux user, I'd just like to be more confident that da2bc1b9db3351add and
> workaround for all chips older than GEN6 is the right thing to do. User
> testing shouldn't be the only criteria.

We had the workaround in place before da2bc1b9db335 for all platforms,
meaning we kept the device in D0 state during hibernation. What we are
aiming at now is to remove this workaround to align with the ACPI spec
and to prepare for a future state where we can simply leave the device
in runtime suspended state if it was already runtime suspended when
hibernation starts.

Removing the workaround turned out to be a bad idea on old platforms,
where we have BIOSes that depend on the GFX device being in D0 state
during hibernation (contradicting the spec).

I don't have a better idea now to address the above issues than
restoring the workaround for those old platforms.

--Imre

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/