Commit 72b0d51d authored by Nicholas Piggin's avatar Nicholas Piggin Committed by Michael Ellerman

powerpc/64s: idle POWER9 can execute stop in virtual mode

The hardware can execute stop in any context, and KVM does not
require real mode because siblings do not share MMU state. This
saves a switch to real-mode when going idle.
Acked-by: default avatarGautham R. Shenoy <ego@linux.vnet.ibm.com>
Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
Reviewed-by: default avatarPaul Mackerras <paulus@ozlabs.org>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 65dbbe81
...@@ -195,7 +195,16 @@ pnv_powersave_common: ...@@ -195,7 +195,16 @@ pnv_powersave_common:
std r5,_CCR(r1) std r5,_CCR(r1)
std r1,PACAR1(r13) std r1,PACAR1(r13)
BEGIN_FTR_SECTION
/*
* POWER9 does not require real mode to stop, and presently does not
* set hwthread_state for KVM (threads don't share MMU context), so
* we can remain in virtual mode for this.
*/
bctr
END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300)
/* /*
* POWER8
* Go to real mode to do the nap, as required by the architecture. * Go to real mode to do the nap, as required by the architecture.
* Also, we need to be in real mode before setting hwthread_state, * Also, we need to be in real mode before setting hwthread_state,
* because as soon as we do that, another thread can switch * because as soon as we do that, another thread can switch
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment