• Nicholas Piggin's avatar
    powerpc/64s: Fix doorbell wakeup msgclr optimisation · 0c89649a
    Nicholas Piggin authored
    Commit 3282a3da ("powerpc/64: Implement soft interrupt replay in C")
    broke the doorbell wakeup optimisation introduced by commit a9af97aa
    ("powerpc/64s: msgclr when handling doorbell exceptions from system
    reset").
    
    This patch restores the msgclr, in C code. It's now done in the system
    reset wakeup path rather than doorbell interrupt replay where it used
    to be, because it is always the right thing to do in the wakeup case,
    but it may be rarely of use in other interrupt replay situations in
    which case it's wasted work - we would have to run measurements to see
    if that was a worthwhile optimisation, and I suspect it would not be.
    
    The results are similar to those in the original commit, test on POWER8
    of context_switch selftests benchmark with polling idle disabled (e.g.,
    always nap, giving cross-CPU IPIs) gives the following results:
    
                                      broken           patched
      Different threads, same core:   317k/s           375k/s    +18.7%
      Different cores:                280k/s           282k/s     +1.0%
    
    Fixes: 3282a3da ("powerpc/64: Implement soft interrupt replay in C")
    Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200402121212.1118218-1-npiggin@gmail.com
    0c89649a
exceptions-64s.S 85 KB