A processing unit can be a cluster of CPUs. For Versal devices, the APU is a dual-core Arm Cortex-A72 CPU and the RPU is a dual-core Arm Cortex-R5F CPU.
For Versal AI Edge Series Gen 2 and Versal Prime Series Gen 2 devices, the APU is a four cluster dual-core Arm Cortex-A78AE CPU. There are five RPU clusters of dual-core Arm Cortex-R52F CPUs.
Any processing unit can suspend itself by calling the XPm_SelfSuspend API to inform PMC about its intent. The
processing unit must also inform the target state as part of this call. Currently, CPU
Idle and CPU OFF target states are supported for PU Suspend.
There are three types of target states: CPU Idle, CPU OFF, and Suspend to RAM. Actions performed by the respective processing units, PMC and PSM are discussed as follows in each case.
- CPU Idle
-
- Rich OS-like Linux has the capability to idle and subsequently power-down cores not being used by any process. This helps in power saving. If the workload increases, the OS can also wake up the powered down core. The platform management provides API calls as part of the TF-A and the XilPM (Client) library.
- A processing unit can invoke CPU Idle in a bare-metal
APU application use case by using
XPm_SelfSuspendwith the target state set as PM_SUSPEND_STATE_CPU_IDLE.
- CPU OFF
-
- This state is used in case of CPU power down during subsystem restart/CPU hot-plug when there is only requirement to power off CPU.
- A processing unit can invoke CPU OFF state using the
XPm_SelfSuspendcall to the PMC by setting target state as PM_SUSPEND_STATE_CPU_OFF.
- Suspend to RAM
-
- The platform management provides the capability to suspend an entire subsystem. If the subsystem uses the DDRMC and no other subsystem uses the DDRMC, XilPM puts the DDR memory into the self-refresh mode. This mode eliminates need for the DDRMC to refresh the DRAM.
- A processor node that is part of subsystem (to be
suspended) can invoke subsystem suspend using the
XPm_SelfSuspendcall to the PMC by setting target state as PM_SUSPEND_STATE_SUSPEND_TO_RAM.
For more information about XPm_SelfSuspend and XPm_SuspendFinalize,
see
BSP and
Libraries Document Collection (UG643).