rpi3/4: Add support for offlining CPUs
The hooks were populated but the power down left the CPU in limbo-land. What we need to do - until there is a way to actually power off - is to turn off the MMU and enter the spinning loop as if we were cold-booted. This allows the on-call to pick up the CPU again. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Change-Id: Iefc7a58424e3578ad3dd355a7bd6eaba4b412699
This commit is contained in:
parent
87b582ef5b
commit
9e78cb189a
|
@ -123,6 +123,15 @@ static void rpi3_pwr_domain_off(const psci_power_state_t *target_state)
|
|||
#endif
|
||||
}
|
||||
|
||||
void __dead2 plat_secondary_cold_boot_setup(void);
|
||||
|
||||
static void __dead2
|
||||
rpi3_pwr_domain_pwr_down_wfi(const psci_power_state_t *target_state)
|
||||
{
|
||||
disable_mmu_el3();
|
||||
plat_secondary_cold_boot_setup();
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Platform handler called when a power domain is about to be turned on. The
|
||||
* mpidr determines the CPU to be turned on.
|
||||
|
@ -224,6 +233,7 @@ static void __dead2 rpi3_system_off(void)
|
|||
static const plat_psci_ops_t plat_rpi3_psci_pm_ops = {
|
||||
.cpu_standby = rpi3_cpu_standby,
|
||||
.pwr_domain_off = rpi3_pwr_domain_off,
|
||||
.pwr_domain_pwr_down_wfi = rpi3_pwr_domain_pwr_down_wfi,
|
||||
.pwr_domain_on = rpi3_pwr_domain_on,
|
||||
.pwr_domain_on_finish = rpi3_pwr_domain_on_finish,
|
||||
.system_off = rpi3_system_off,
|
||||
|
|
Loading…
Reference in New Issue