Hi Eric, On Mon, Jan 07, 2013 at 01:53:30AM +0000, Eric W. Biederman wrote: > Russell King - ARM Linux <linux at arm.linux.org.uk> writes: > > The problem is... on ARM we're yet again shot in the foot through the > > unwillingness to architect certain aspects of the system: there is no > > architecturally known way to place CPUs into a reset state once they've > > been started up. In other words, once a CPU starts executing kernel > > code, it needs to always execute kernel code or there must be some kind > > of platform specific hook to disable it. > > > > Maybe that's the answer here: have machine_shutdown() call out to some > > platform specific function to do the forced-takedown of secondary CPUs, > > and if there's no such specific function, then we use our present CPU > > stopping method of making them spin in a WFI loop with IRQs disabled. > > Yes. On x86 we have had the generic equivalent of disable_nonboot_cpus > in the machine_shutdown for a long time. Ok, we can do that that on ARM too, but we currently call machine_shutdown from machine_{power_off, halt, restart} so we just need to fix that and we will be doing functionally the same thing as x86. > Please note the only code path that generically calls machine_shutdown() > is kernel_kexec() so if you wish you can avoid duplication by > refactoring you architecture specific code. Exactly, that sounds like the right way forward to me. Thanks. Will