On Sat, 29 Aug 2015, Mikko Rapeli <mikko.rapeli@xxxxxx> wrote: > Please, please merge this patch already. Without it hibernation poweroff > is broken for several users. There were some doubts raised over the > approach on lkml review but Imre as maintainer thinks this is the right > thing to do and users like me need this patch. > > Tested again with Thinkpad T60 and kernel version 4.1.6. > > Tested-by: Mikko Rapeli <mikko.rapeli@xxxxxx> Pushed to drm-intel-next-fixes. BR, Jani. > > -Mikko > > On Tue, Jun 30, 2015 at 05:06:47PM +0300, Imre Deak wrote: >> commit da2bc1b9db3351addd293e5b82757efe1f77ed1d >> Author: Imre Deak <imre.deak@xxxxxxxxx> >> Date: Thu Oct 23 19:23:26 2014 +0300 >> >> drm/i915: add poweroff_late handler >> >> introduced a regression on old platforms during hibernation. A workaround was >> added 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 >> >> using an explicit blacklist for the GENs/BIOS vendors where the issue was >> reported. Later there we had reports of the same failure on platforms not on >> this list. >> >> To my best knowledge the correct thing to do is still to put the device to PCI >> D3 state during hibernation, see [1] and [2] for the reasons. This also aligns >> with our future plans to unify more the runtime and system suspend/resume >> paths. Since an exact blacklist seems to be impractical (multiple GENs and >> BIOS vendors are affected) apply the workaround on everything pre GEN6. >> >> [1] http://lists.freedesktop.org/archives/intel-gfx/2015-February/060710.html >> [2] https://lkml.org/lkml/2015/6/22/274 >> >> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=95061 >> Reported-by: Ilya Tumaykin <itumaykin@xxxxxxxxx> >> Reported-by: Dirk Griesbach <spamthis@xxxxxxxxxx> >> Reported-by: Pavel Machek <pavel@xxxxxx> >> Reported-by: Mikko Rapeli <mikko.rapeli@xxxxxx> >> Reported-by: Paul Bolle <pebolle@xxxxxxxxxx> >> CC: stable@xxxxxxxxxxxxxxx >> Signed-off-by: Imre Deak <imre.deak@xxxxxxxxx> >> --- >> drivers/gpu/drm/i915/i915_drv.c | 15 +++++++++------ >> 1 file changed, 9 insertions(+), 6 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c >> index e44dc0d..1e675ff 100644 >> --- a/drivers/gpu/drm/i915/i915_drv.c >> +++ b/drivers/gpu/drm/i915/i915_drv.c >> @@ -664,15 +664,18 @@ static int i915_drm_suspend_late(struct drm_device *drm_dev, bool hibernation) >> >> pci_disable_device(drm_dev->pdev); >> /* >> - * During hibernation on some GEN4 platforms the BIOS may try to access >> + * During hibernation on some platforms the BIOS may try to access >> * the device even though it's already in D3 and hang the machine. So >> * leave the device in D0 on those platforms and hope the BIOS will >> - * power down the device properly. Platforms where this was seen: >> - * Lenovo Thinkpad X301, X61s >> + * power down the device properly. The issue was seen on multiple old >> + * GENs with different BIOS vendors, so having an explicit blacklist >> + * is inpractical; apply the workaround on everything pre GEN6. The >> + * platforms where the issue was seen: >> + * Lenovo Thinkpad X301, X61s, X60, T60, X41 >> + * Fujitsu FSC S7110 >> + * Acer Aspire 1830T >> */ >> - if (!(hibernation && >> - drm_dev->pdev->subsystem_vendor == PCI_VENDOR_ID_LENOVO && >> - INTEL_INFO(dev_priv)->gen == 4)) >> + if (!(hibernation && INTEL_INFO(dev_priv)->gen < 6)) >> pci_set_power_state(drm_dev->pdev, PCI_D3hot); >> >> return 0; >> -- >> 2.1.4 >> -- Jani Nikula, Intel Open Source Technology Center -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html