mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-22 13:54:57 +08:00
drm/i915: apply the PCI_D0/D3 hibernation workaround everywhere on pre GEN6
commitda2bc1b9db
Author: Imre Deak <imre.deak@intel.com> 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 commitab3be73fa7
Author: Imre Deak <imre.deak@intel.com> 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@gmail.com> Reported-by: Dirk Griesbach <spamthis@freenet.de> Reported-by: Pavel Machek <pavel@ucw.cz> Reported-by: Mikko Rapeli <mikko.rapeli@iki.fi> Tested-by: Mikko Rapeli <mikko.rapeli@iki.fi> Reported-by: Paul Bolle <pebolle@tiscali.nl> CC: stable@vger.kernel.org Signed-off-by: Imre Deak <imre.deak@intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
parent
d14e7b6d1d
commit
54875571bb
@ -662,15 +662,18 @@ static int i915_drm_suspend_late(struct drm_device *drm_dev, bool hibernation)
|
|||||||
|
|
||||||
pci_disable_device(drm_dev->pdev);
|
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
|
* 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
|
* leave the device in D0 on those platforms and hope the BIOS will
|
||||||
* power down the device properly. Platforms where this was seen:
|
* power down the device properly. The issue was seen on multiple old
|
||||||
* Lenovo Thinkpad X301, X61s
|
* 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 &&
|
if (!(hibernation && INTEL_INFO(dev_priv)->gen < 6))
|
||||||
drm_dev->pdev->subsystem_vendor == PCI_VENDOR_ID_LENOVO &&
|
|
||||||
INTEL_INFO(dev_priv)->gen == 4))
|
|
||||||
pci_set_power_state(drm_dev->pdev, PCI_D3hot);
|
pci_set_power_state(drm_dev->pdev, PCI_D3hot);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user