]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc/64s/idle: POWER9 ESL=0 stop avoid save/restore overhead
authorNicholas Piggin <npiggin@gmail.com>
Sun, 1 Apr 2018 05:48:55 +0000 (15:48 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 4 Apr 2018 01:11:43 +0000 (11:11 +1000)
commitc732cc7083132c05a86529b033c18433935aa804
treebcc182bc963d0d3c126c6046ba8c3562d3f9d908
parentbc2b276d8f5b4fb5d59b169f9fbceb47e48ac7e6
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>
arch/powerpc/kernel/idle_book3s.S