• Imre Deak's avatar
    drm/i915: Fix hibernation with ACPI S0 target state · 0f90603c
    Imre Deak authored
    After
    
    commit dd9f31c7
    Author: Imre Deak <imre.deak@intel.com>
    Date:   Wed Aug 16 17:46:07 2017 +0300
    
        drm/i915/gen9+: Set same power state before hibernation image
        save/restore
    
    during hibernation/suspend the power domain functionality got disabled,
    after which resume could leave it incorrectly disabled if the ACPI
    target state was S0 during suspend and i915 was not loaded by the loader
    kernel.
    
    This was caused by not considering if we resumed from hibernation as the
    condition for power domains reiniting.
    
    Fix this by simply tracking if we suspended power domains during system
    suspend and reinit power domains accordingly during resume. This will
    result in reiniting power domains always when resuming from hibernation,
    regardless of the platform and whether or not i915 is loaded by the
    loader kernel.
    
    The reason we didn't catch this earlier is that the enabled/disabled
    state of power domains during PMSG_FREEZE/PMSG_QUIESCE is platform
    and kernel config dependent: on my SKL the target state is S4
    during PMSG_FREEZE and (with the driver loaded in the loader kernel)
    S0 during PMSG_QUIESCE. On the reporter's machine it's S0 during
    PMSG_FREEZE but (contrary to this) power domains are not initialized
    during PMSG_QUIESCE since i915 is not loaded in the loader kernel, or
    it's loaded but without the DMC firmware being available.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105196
    Reported-and-tested-by: amn-bas@hotmail.com
    Fixes: dd9f31c7 ("drm/i915/gen9+: Set same power state before hibernation image save/restore")
    Cc: amn-bas@hotmail.com
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180322143642.26883-1-imre.deak@intel.com
    0f90603c
i915_drv.c 80.9 KB