Hi,
I have examined "cpuidle" procedure for ARM JUNO board with different idle states. My question is related to idle states which will cause the CPU core to suspend itself. I am familiar with properties under "idle-state" device tree node.
Example below.
taken from linux dts file [juno.dts]
based on commit: 102340
Date: Wed Mar 18 17:17:13 2015 +0000
arm64: dts: Add idle-states for Juno
Signed-off-by: Jon Medhurst <tixy@linaro.org>
from JUNO linux-kernel repository
So, Linux will at some point (when it satisfies all the latencies above) call PSCI suspend function, with "psci-suspend-param" as an argument.. That will propagate to the ATF (EL3) software layer and at the end will notify PMU (Cortex M3) to set new power state for the particular core. (scpi_set_css_power_state(..)).
But before invoking that call, all interrupts (at GIC level) are disabled.
"
arm_gic_cpuif_deactivate();
So, I am wondering, how Linux will wake-up core again? All interrupts are disabled.
Thanks,
A.