]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
powerpc/64s: Use relon prolog for EXC_VIRT_OOL_MASKABLE_HV handlers
authorNicholas Piggin <npiggin@gmail.com>
Thu, 13 Apr 2017 09:45:48 +0000 (19:45 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 20 Apr 2017 07:05:11 +0000 (17:05 +1000)
commita050d20d024dc3e1b988e715e2d811aaa3d5c39c
tree5d10bb7b9f131a81821132c512ae003b9301f5a8
parent686978b15cef8314c3b3f38f0124e070b98eae37
powerpc/64s: Use relon prolog for EXC_VIRT_OOL_MASKABLE_HV handlers

Hypervisor Virtualization and Directed Hypervisor Doorbell interrupt handlers
use the macro EXC_VIRT_OOL_MASKABLE_HV for their relocation-on handlers, which
calls MASKABLE_RELON_EXCEPTION_HV_OOL, which uses the *real mode* interrupt
prolog. This means we needlessly rfid from virtual mode to virtual mode.

For POWER8 it only affects doorbell IPIs. Context switch microbenchmark between
threads with snooze disabled (which causes IPI) gets about 3% faster, about 370
cycles. Should be more important on POWER9 with global doorbells and HVI for
host interrupts.

Use the RELON variant instead to reduce overhead.

Fixes: 1707dd1613 ("powerpc: Save CFAR before branching in interrupt entry paths")
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
[mpe: Fold some more detail into the change log]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/exception-64s.h