• Gautham R. Shenoy's avatar
    powerpc/powernv/smp: Add busy-wait loop as fall back for CPU-Hotplug · 90061231
    Gautham R. Shenoy authored
    Currently, the powernv cpu-offline function assumes that platform idle
    states such as stop on POWER9, winkle/sleep/nap on POWER8 are always
    available. On POWER8, it picks nap as the default state if other deep
    idle states like sleep/winkle are not available and enabled in the
    platform.
    
    On POWER9, nap is not available and all idle states are managed by
    STOP instruction.  The parameters to the idle state are passed through
    processor stop status control register (PSSCR).  Hence as such
    executing STOP would take parameters from current PSSCR. We do not
    want to make any assumptions in kernel on what STOP states and PSSCR
    features are configured by the platform.
    
    Ideally platform will configure a good set of stop states that can be
    used in the kernel.  We would like to start with a clean slate, if the
    platform choose to not configure any state or there is an error in
    platform firmware that lead to no stop states being configured or
    allowed to be requested.
    
    This patch adds a fallback method for CPU-Hotplug that is similar to
    snooze loop at idle where the threads are left to spin at low priority
    and hence reduce the cycles consumed.
    
    This is a safe fallback mechanism in the case when no stop state would
    be requested if the platform firmware did not configure them most
    likely due to an error condition.
    
    Requesting a stop state when the platform has not configured them or
    enabled them would lead to further error conditions which could be
    difficult to debug.
    
    [Changelog written with inputs from svaidy@linux.vnet.ibm.com]
    Reviewed-by: default avatarNicholas Piggin <npiggin@gmail.com>
    Signed-off-by: default avatarGautham R. Shenoy <ego@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    90061231
idle.c 15.1 KB