This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

JUNO idle states - how to exit from

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.

   CPU_SLEEP_0: cpu-sleep-0 {
   compatible = "arm,idle-state";
   arm,psci-suspend-param = <0x0010000>;
   local-timer-stop;
   entry-latency-us = <100>;
   exit-latency-us = <250>;
   min-residency-us = <2000>;
   };

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.

"

/* Prevent interrupts from spuriously waking up this cpu */

    arm_gic_cpuif_deactivate();

"

So, I am wondering, how Linux will wake-up core again? All interrupts are disabled.

Thanks,

A.