CPU Hotplug (A64)
It's possible to shutdown CPU cores while running Linux if they are not necessary for the current workload by writing to sysfs files:
echo 0 > /sys/devices/system/cpu/cpu1/online echo 0 > /sys/devices/system/cpu/cpu2/online echo 0 > /sys/devices/system/cpu/cpu3/online
You need to have at least one core running.
To re-enable:
echo 1 > /sys/devices/system/cpu/cpu1/online echo 1 > /sys/devices/system/cpu/cpu2/online echo 1 > /sys/devices/system/cpu/cpu3/online
It saves 10mW per core compared to letting the CPU cores idle.
CPU hoptlug is handled by ATF firmware that is loaded by U-Boot during boot and runs from SRAM on ARM cores.
To shutdown all ARM CPU cores, you need to run code on the arisc CPU, that will take care of shutting down the last ARM core and re-enabling it when necessary. This role will almost certainly be filled by crust firmware project.
ATF and Linux will be able to communicate with crust via shared memory and some synchronization/notification mechanism (msgbox).