Skip to content
  • Nicholas Piggin's avatar
    powerpc/64s/idle: Avoid SRR usage in idle sleep/wake paths · 9d292501
    Nicholas Piggin authored
    
    
    Idle code now always runs at the 0xc... effective address whether
    in real or virtual mode. This means rfid can be ditched, along
    with a lot of SRR manipulations.
    
    In the wakeup path, carry SRR1 around in r12. Use mtmsrd to change
    MSR states as required.
    
    This also balances the return prediction for the idle call, by
    doing blr rather than rfid to return to the idle caller.
    
    On POWER9, 2-process context switch on different cores, with snooze
    disabled, increases performance by 2%.
    
    Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
    [mpe: Incorporate v2 fixes from Nick]
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    9d292501