On Tue, Jun 30, 2015 at 05:06:47PM +0300, Imre Deak wrote:
> commit da2bc1b9db3351addd293e5b82757efe1f77ed1d
> Author: Imre Deak <imre.d...@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
> 
> commit ab3be73fa7b43f4c3648ce29b5fd649ea54d3adb
> Author: Imre Deak <imre.d...@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 <itumay...@gmail.com>
> Reported-by: Dirk Griesbach <spamt...@freenet.de>
> Reported-by: Pavel Machek <pa...@ucw.cz>
> Reported-by: Mikko Rapeli <mikko.rap...@iki.fi>
> Reported-by: Paul Bolle <pebo...@tiscali.nl>
> CC: sta...@vger.kernel.org
> Signed-off-by: Imre Deak <imre.d...@intel.com>

Tested-by: Mikko Rapeli <mikko.rap...@iki.fi>

on top of v4.1.2.

Could this or any better alternative please be sent Linus and then to stable?

-Mikko

> ---
>  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
> 
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to