diff options
author | Kai-Chuan Hsieh <kaichuan.hsieh@canonical.com> | 2020-11-23 17:33:02 +0800 |
---|---|---|
committer | Kai-Chuan Hsieh <kaichuan.hsieh@canonical.com> | 2020-12-03 13:38:18 +0800 |
commit | 20b19be897a1984558f27449b96d6379ad4b9dd1 (patch) | |
tree | 9f9560fa198acd4780261ce0efd3965bf88989b8 /units | |
parent | 22dda6a1fa8d68d0466b5cfc87b96e0c5ed36180 (diff) |
Add more message when the low power idle job failed
Diffstat (limited to 'units')
-rw-r--r-- | units/power-management/jobs.pxu | 44 |
1 files changed, 34 insertions, 10 deletions
diff --git a/units/power-management/jobs.pxu b/units/power-management/jobs.pxu index 37aef99..9dc6851 100644 --- a/units/power-management/jobs.pxu +++ b/units/power-management/jobs.pxu @@ -345,25 +345,34 @@ requires: command: cpu_lpi_file=$(cpuinfo_resource.py | grep cpu_lpi_file | awk '{ print $2 }') if [ "$cpu_lpi_file" == "low_power_idle_cpu_residency_us" ]; then - echo "check /sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us" + before=$(cat /sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us) xset dpms force off sleep 20 xset dpms force on - residency=$(cat /sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us) + after=$(cat /sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us) + residency=$((after-before)) + echo "/sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us after/before screen off is $residency" else - echo "check /sys/kernel/debug/pmc_core/package_cstate_show" + echo "The system doesn't have hardware-based residency counter." + echo "please check https://www.uefi.org/sites/default/files/resources/Intel_ACPI_Low_Power_S0_Idle.pdf" before=$(cat < /sys/kernel/debug/pmc_core/package_cstate_show | grep C10 | awk '{ print $4 }') xset dpms force off sleep 20 xset dpms force on after=$(cat < /sys/kernel/debug/pmc_core/package_cstate_show | grep C10 | awk '{ print $4 }') residency=$((after-before)) + echo "/sys/kernel/debug/pmc_core/package_cstate_show after/before screen off is $residency" + fi + if [ $residency -eq 0 ]; then + echo "The cpu can't enter low power idle when screen off." + echo "please refer to https://www.kernel.org/doc/html/latest/firmware-guide/acpi/lpit.html." + exit 1 fi - [ $residency -gt 0 ] || exit 1 user: root estimated_duration: 25 id: power-management/system-low-power-idle +after: suspend/suspend_advanced_auto category_id: com.canonical.plainbox::power-management _summary: System low power idle residency check _description: @@ -379,16 +388,31 @@ command: dmesg | grep ACPI | grep supports | sed 's/\[.*ACPI/ACPI/' echo "Content of /etc/default/grub:" cat /etc/default/grub - rtcwake --mode freeze -s 10 if [ "$sys_lpi_file" == "low_power_idle_system_residency_us" ]; then - echo "check /sys/devices/system/cpu/cpuidle/low_power_idle_system_residency_us" - residency=$(cat /sys/devices/system/cpu/cpuidle/low_power_idle_system_residency_us) + before=$(cat /sys/devices/system/cpu/cpuidle/low_power_idle_system_residency_us) + rtcwake --mode freeze -s 10 + after=$(cat /sys/devices/system/cpu/cpuidle/low_power_idle_system_residency_us) + residency=$((after-before)) + echo "/sys/devices/system/cpu/cpuidle/low_power_idle_system_residency_us after/before suspend is $residency" else - echo "check /sys/kernel/debug/pmc_core/slp_s0_residency_usec" - residency=$(cat /sys/kernel/debug/pmc_core/slp_s0_residency_usec) + echo "The system doesn't have hardware-based residency counter." + echo "please check https://www.uefi.org/sites/default/files/resources/Intel_ACPI_Low_Power_S0_Idle.pdf" + before=$(cat /sys/kernel/debug/pmc_core/slp_s0_residency_usec) + rtcwake --mode freeze -s 10 + after=$(cat /sys/kernel/debug/pmc_core/slp_s0_residency_usec) + residency=$((after-before)) + echo "/sys/kernel/debug/pmc_core/slp_s0_residency_usec after/before suspend is $residency" fi # shellcheck disable=SC2086 - [ $residency -gt 0 ] || exit 1 + if [ $residency -eq 0 ]; then + echo "The system can't enter s0 when suspended." + echo "please refer to https://www.kernel.org/doc/html/latest/firmware-guide/acpi/lpit.html." + if [ -f /sys/kernel/debug/suspend_stats ]; then + echo "cat /sys/kernel/debug/suspend_stats" + cat /sys/kernel/debug/suspend_stats + fi + exit 1 + fi user: root estimated_duration: 15 |