aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/mm/fault.c
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2018-04-01 15:48:55 +1000
committerMichael Ellerman <mpe@ellerman.id.au>2018-04-04 11:11:43 +1000
commitb9ee31e100e73075431faaf7af2ee0fbfd6e624b (patch)
treebcc182bc963d0d3c126c6046ba8c3562d3f9d908 /arch/powerpc/mm/fault.c
parentpowerpc/64s/idle: Consolidate power9_offline_stop()/power9_idle_stop() (diff)
downloadlinux-dev-b9ee31e100e73075431faaf7af2ee0fbfd6e624b.tar.xz
linux-dev-b9ee31e100e73075431faaf7af2ee0fbfd6e624b.zip
powerpc/64s/idle: POWER9 ESL=0 stop avoid save/restore overhead
When stop is executed with EC=ESL=0, it appears to execute like a normal instruction (resuming from NIP when woken by interrupt). So all the save/restore handling can be avoided completely. In particular NV GPRs do not have to be saved, and MSR does not have to be switched back to kernel MSR. So move the test for EC=ESL=0 sleep states out to power9_idle_stop, and return directly to the caller after stop in that case. This improves performance for ping-pong benchmark with the stop0_lite idle state by 2.54% for 2 threads in the same core, and 2.57% for different cores. Performance increase with HV_POSSIBLE defined will be improved further by avoiding the hwsync. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/mm/fault.c')
0 files changed, 0 insertions, 0 deletions