Hi Drew, I've been paging in all the on_cpu* machinery, and it occurred to me that we have a chance to simplify the code and to remove a duplicate interface by not exposing smp_boot_secondary() to the tests, as the on_cpu* functions serve the same purpose. With this change, we can remove the entry argument to smp_boot_secondary(), and the assembly for secondary_entry can be made simpler by eliminating the branch to the entry function. Do you think that would be something worth pursuing? I can have a look at it. There are exactly two places where smp_boot_secondary() is used: in arm/psci.c and arm/gic.c, and from a quick glance it looks to me like those can be replaced with one of the on_cpu* functions. On Wed, Oct 23, 2024 at 03:17:20PM +0200, Andrew Jones wrote: > get/put_on_cpu_info() were trying to provide per-cpu locking for > the per-cpu on_cpu info, but they were flawed since they would > always set the "lock" since they were treating test_and_set/clear > as cmpxchg (which they're not). Just revert to a normal spinlock Would you mind expanding on that a bit more?