Client PC - Linux ACPI low power alignment
Current Linux(5.19.0 RC7) ACPI low power framework support:
Low Power feature | Linux framework | Arm64 |
---|---|---|
cpu,smp | Y | Y |
cpu,hotplug | Y | Y |
dvfs | Y | acpi system IO can be used for arm If using smc to atf for arm, it requires to add patch to support. |
cpuidle | Y | Y |
powerdomain | Y | Y |
suspend | Y | N |
runtime pm | Y | Y |
devfreq | N | N |
thermal | Y | N |
regulator | No needed | No needed |
clocktree | No needed | No needed |
2. Linux ACPI for Arm64 platform low power solution and plan
P state (performance state)
cpu dvfs:
Linux(5.19.0 RC7) already support acpi-cpufreq, support ACPI_ADR_SPACE_SYSTEM_IO and ACPI_ADR_SPACE_FIXED_HARDWARE
arm64 ACPI dvfs:
set space_id to ACPI_ADR_SPACE_SYSTEM_IO, binding system IO with fast channel(mailbox) which generate interrupt on SCP side. SCP handle the voltage and freq adjustion.
C state (cpu sleep state)
cpuidle:c0/c1/c2/c3
ACPI table configure latency, Linux cpuidle acpi driver should parse latency from ACPI table
Follow Linux cpuidle policy
D state (device sleep state)
runtime pm: D3 hot
Linux device driver should support runtime pm
suspend: D3 cold
Linux device driver should support suspend/resume callback, save/restore context
S state (system sleep state)
s3, s5
Follow DT Linux suspend policy, for example:
Linux suspend: kernel suspend -> device suspend, driver save context -> arch suspend, PSCI -> TF-A, SCMI -> SCP