summaryrefslogtreecommitdiff
diff options
authorPMR <pmr@pmr-lander>2020-09-08 07:13:48 +0000
committerPMR <pmr@pmr-lander>2020-09-08 07:13:48 +0000
commit412ec6faaa246fd178f0a49bfcb79792e7477b58 (patch)
tree766303b4f9397f658a45c9d924d7f17a6504da77
parent2b29686eec66c17395bc38660dfc8484a6c5f095 (diff)
parentd7261a1daca92c9b0860a6bedb9f102db0cc5f35 (diff)
Merge #390146 from ~kchsieh/plainbox-provider-checkbox/+git/plainbox-provider-checkbox:s2idle
-rw-r--r--units/cpu/test-plan.pxu2
-rw-r--r--units/power-management/jobs.pxu61
2 files changed, 63 insertions, 0 deletions
diff --git a/units/cpu/test-plan.pxu b/units/cpu/test-plan.pxu
index e5313f1..5d06090 100644
--- a/units/cpu/test-plan.pxu
+++ b/units/cpu/test-plan.pxu
@@ -32,6 +32,8 @@ include:
cpu/offlining_test certification-status=blocker
cpu/topology certification-status=blocker
cpu/clocktest
+ power-management/cpu-low-power-idle
+ power-management/system-low-power-idle
id: cpu-cert-blockers
unit: test plan
diff --git a/units/power-management/jobs.pxu b/units/power-management/jobs.pxu
index 5dfa56c..37aef99 100644
--- a/units/power-management/jobs.pxu
+++ b/units/power-management/jobs.pxu
@@ -331,6 +331,67 @@ plugin: shell
command: failed_service_check.sh
estimated_duration: 1.0
+id: power-management/cpu-low-power-idle
+category_id: com.canonical.plainbox::power-management
+_summary: CPU low power idle residency check
+_description:
+ Check if CPU can achieve low power idle when screen off.
+ For more detail, please refer to https://www.kernel.org/doc/html/latest/firmware-guide/acpi/lpit.html.
+unit: job
+plugin: shell
+requires:
+ cpuinfo.cpu_lpi_file in ('low_power_idle_cpu_residency_us', 'package_cstate_show')
+ package.name == 'x11-xserver-utils'
+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"
+ xset dpms force off
+ sleep 20
+ xset dpms force on
+ residency=$(cat /sys/devices/system/cpu/cpuidle/low_power_idle_cpu_residency_us)
+ else
+ echo "check /sys/kernel/debug/pmc_core/package_cstate_show"
+ 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))
+ fi
+ [ $residency -gt 0 ] || exit 1
+user: root
+estimated_duration: 25
+
+id: power-management/system-low-power-idle
+category_id: com.canonical.plainbox::power-management
+_summary: System low power idle residency check
+_description:
+ Check if system can achieve low power idle in suspend.
+ For more detail, plesae refer to https://www.kernel.org/doc/html/latest/firmware-guide/acpi/lpit.html.
+unit: job
+plugin: shell
+requires:
+ cpuinfo.sys_lpi_file in ('low_power_idle_system_residency_us', 'slp_s0_residency_usec')
+command:
+ sys_lpi_file=$(cpuinfo_resource.py | grep sys_lpi_file | awk '{ print $2 }')
+ echo "mem_sleep: $(cat /sys/power/mem_sleep)"
+ 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)
+ else
+ echo "check /sys/kernel/debug/pmc_core/slp_s0_residency_usec"
+ residency=$(cat /sys/kernel/debug/pmc_core/slp_s0_residency_usec)
+ fi
+ # shellcheck disable=SC2086
+ [ $residency -gt 0 ] || exit 1
+user: root
+estimated_duration: 15
+
unit: template
template-resource: model_assertion
template-unit: job