summaryrefslogtreecommitdiff
path: root/units
diff options
authorKai-Chuan Hsieh <kaichuan.hsieh@canonical.com>2020-11-23 17:33:02 +0800
committerKai-Chuan Hsieh <kaichuan.hsieh@canonical.com>2020-12-03 13:38:18 +0800
commit20b19be897a1984558f27449b96d6379ad4b9dd1 (patch)
tree9f9560fa198acd4780261ce0efd3965bf88989b8 /units
parent22dda6a1fa8d68d0466b5cfc87b96e0c5ed36180 (diff)
Add more message when the low power idle job failed
Diffstat (limited to 'units')
-rw-r--r--units/power-management/jobs.pxu44
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