• Thomas Gleixner's avatar
    cpu/hotplug: Add CPU state tracking and synchronization · 6f062123
    Thomas Gleixner authored
    The CPU state tracking and synchronization mechanism in smpboot.c is
    completely independent of the hotplug code and all logic around it is
    implemented in architecture specific code.
    
    Except for the state reporting of the AP there is absolutely nothing
    architecture specific and the sychronization and decision functions can be
    moved into the generic hotplug core code.
    
    Provide an integrated variant and add the core synchronization and decision
    points. This comes in two flavours:
    
      1) DEAD state synchronization
    
         Updated by the architecture code once the AP reaches the point where
         it is ready to be torn down by the control CPU, e.g. by removing power
         or clocks or tear down via the hypervisor.
    
         The control CPU waits for this state to be reached with a timeout. If
         the state is reached an architecture specific cleanup function is
         invoked.
    
      2) Full state synchronization
    
         This extends #1 with AP alive synchronization. This is new
         functionality, which allows to replace architecture specific wait
         mechanims, e.g. cpumasks, completely.
    
         It also prevents that an AP which is in a limbo state can be brought
         up again. This can happen when an AP failed to report dead state
         during a previous off-line operation.
    
    The dead synchronization is what most architectures use. Only x86 makes a
    bringup decision based on that state at the moment.
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Tested-by: default avatarMichael Kelley <mikelley@microsoft.com>
    Tested-by: default avatarOleksandr Natalenko <oleksandr@natalenko.name>
    Tested-by: Helge Deller <deller@gmx.de> # parisc
    Tested-by: Guilherme G. Piccoli <gpiccoli@igalia.com> # Steam Deck
    Link: https://lore.kernel.org/r/20230512205256.476305035@linutronix.de
    6f062123
Kconfig 44.9 KB