...
Arm platforms implement PSCI standards (mandated by BSA spec) and rather than introducing the sleep control and status register could make use of the PSCI standard for putting CPU and platform to suspend state.
...
...
PSCI_CPU_SUSPEND
API has a power_state
parameter and some of the bits are vendor-specific and this is typically defined in the DT
. How do we derive this for ACPI?
Linux commands to test ACPI suspend states
...
Suspend State | Wake Up event | Status | Notes |
---|---|---|---|
S2Idle | Lid | OK | |
S2Idle | RTC Alarm | OK | Linux kernel uses few ACPI GPE functions to determine if the device can wake up. They return wrong values for Arm64 implementation and had to be disabled during the testing. |
S1 | Lid | OK | |
S1 | RTC Alarm | OK | |
S3 | TF-A hack to wake up immediately after suspend | OK | This works only with single processor suspend, for SMP the wake up sequence crashes. The same behaviour is observed for DT as well. |
Gaps in existing Linux implementation
Linux kernel uses a few ACPI GPE functions to determine if the device can wake up and set appropriate flags. GPE is not present in HW-reduced platforms.
Linux ACPI suspend does not have PSCI bindings