• Zhang Rui's avatar
    thermal: intel: pch: enhance overheat handling · 92923028
    Zhang Rui authored
    Commit ef63b043 ("thermal: intel: pch: fix S0ix failure due to PCH
    temperature above threshold") introduces delay loop mechanism that allows
    PCH temperature to go down below threshold during suspend so it won't
    block S0ix. And the default overall delay timeout is 1 second.
    
    However, in practice, we found that the time it takes to cool the PCH down
    below threshold highly depends on the initial PCH temperature when the
    delay starts, as well as the ambient temperature.
    And in some cases, the 1 second delay is not sufficient. As a result, the
    system stays in a shallower power state like PCx instead of S0ix, and
    drains the battery power, without user' notice.
    
    To make sure S0ix is not blocked by the PCH overheating, we
    1. expand the default overall timeout to 60 seconds.
    2. make sure the temperature is below threshold rather than equal to it.
    
    At the same time, as the cooling delay can be much longer and many wakeup
    events (ACPI Power Button press, USB mouse move, etc) becomes valid in the
    suspend_noirq phase, add detection of wakeup event so that the driver
    does not delay blindly when the system suspend is likely to abort soon.
    
    This patch may introduce longer suspend time, but only in the cases when
    the system overheats and Linux used to enter a shallower S2idle state,
    say, PCx instead of S0ix.
    Signed-off-by: default avatarZhang Rui <rui.zhang@intel.com>
    Tested-by: default avatarSumeet Pawnikar <sumeet.r.pawnikar@intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    92923028
intel_pch_thermal.c 13.8 KB