Client PC - Linux ACPI low power alignment

  1. Current Linux(5.19.0 RC7) ACPI low power framework support:

Low Power feature

Linux framework

Arm64

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