• G
    powerpc/powernv/idle: Correctly initialize core_idle_state_ptr · 5f221c3c
    Gautham R. Shenoy 提交于
    The lower 8 bits of core_idle_state_ptr tracks the number of non-idle
    threads in the core. This is supposed to be initialized to bit-map
    corresponding to the threads_per_core. However, currently it is
    initialized to PNV_CORE_IDLE_THREAD_BITS (0xFF). This is correct for
    POWER8 which has 8 threads per core, but not for POWER9 which has 4
    threads per core.
    
    As a result, on POWER9, core_idle_state_ptr gets initialized to
    0xFF. In case when all the threads of the core are idle, the bits
    corresponding tracking the idle-threads are non-zero. As a result, the
    idle entry/exit code fails to save/restore per-core hypervisor state
    since it assumes that there are threads in the cores which are still
    active.
    
    Fix this by correctly initializing the lower bits of the
    core_idle_state_ptr on the basis of threads_per_core.
    Signed-off-by: NGautham R. Shenoy <ego@linux.vnet.ibm.com>
    Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
    5f221c3c
idle.c 15.8 KB