You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
arm64 spawn: halt/restart must CPU_OFF every CPU, secondaries via stock PSCI #11
Stock machine_halt() on arm64 ends in smp_send_stop() -> local_cpu_stop() -> cpu_park_loop(): WFI with DAIF masked while still executing the spawn image. That is exactly the "CPU still runs the image we are about to overwrite" hazard the x86 park page exists to avoid. A spawn kernel must instead return every CPU to firmware.
Spawn-side mk_machine_halt() / mk_machine_restart() / stop-this-cpu override (x86 has mk_spawn_reboot_init() in arch/x86/multikernel/spawn.c:1732): every CPU, including the last one, calls psci_ops.cpu_off().
The spawn's cpu_die for a hot-removed CPU is already cpu_psci_cpu_die(); nothing to add.
mk_instance_settle_halted() completion signal = all instance MPIDRs report AFFINITY_LEVEL_OFF.
Secondaries in the spawn come up through stock cpu_psci_cpu_boot() (CPU_ON to secondary_entry); confirm no multikernel_wakeup_secondary_cpu_64 analogue is needed and delete the x86-only apic_update_callback(wakeup_secondary_cpu_64, ...) assumption from any shared code paths.
Test: spawn, halt inside the spawn, host sees every CPU OFF, re-spawn onto the same CPUs.
Activity