powerpc/64s: Fix doorbell wakeup msgclr optimisation
authorNicholas Piggin <npiggin@gmail.com>
Thu, 2 Apr 2020 12:12:12 +0000 (22:12 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 2 Apr 2020 13:09:53 +0000 (00:09 +1100)
commit0c89649a70bed679fd408c1eb82fa99dbe1354a0
treed08a0e2cd3bb3d9bfd9c2747e167e6971bfb2417
parentc17eb4dca5a353a9dbbb8ad6934fe57af7165e91
powerpc/64s: Fix doorbell wakeup msgclr optimisation

Commit 3282a3da25bd ("powerpc/64: Implement soft interrupt replay in C")
broke the doorbell wakeup optimisation introduced by commit a9af97aa0a12
("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: 3282a3da25bd ("powerpc/64: Implement soft interrupt replay in C")
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20200402121212.1118218-1-npiggin@gmail.com
arch/powerpc/kernel/exceptions-64s.S
arch/powerpc/kernel/irq.c