linux/arch/powerpc
Paul Mackerras 8117ac6a6c powerpc/powernv: Switch off MMU before entering nap/sleep/rvwinkle mode
Currently, when going idle, we set the flag indicating that we are in
nap mode (paca->kvm_hstate.hwthread_state) and then execute the nap
(or sleep or rvwinkle) instruction, all with the MMU on.  This is bad
for two reasons: (a) the architecture specifies that those instructions
must be executed with the MMU off, and in fact with only the SF, HV, ME
and possibly RI bits set, and (b) this introduces a race, because as
soon as we set the flag, another thread can switch the MMU to a guest
context.  If the race is lost, this thread will typically start looping
on relocation-on ISIs at 0xc...4400.

This fixes it by setting the MSR as required by the architecture before
setting the flag or executing the nap/sleep/rvwinkle instruction.

Cc: stable@vger.kernel.org
[ shreyas@linux.vnet.ibm.com: Edited to handle LE ]
Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Shreyas B. Prabhu <shreyas@linux.vnet.ibm.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2014-12-15 10:46:32 +11:00
..
boot Merge remote-tracking branch 'scottwood/next' into next 2014-11-18 17:00:38 +11:00
configs powerpc/config: Enable memory driver 2014-11-17 19:36:42 -06:00
crypto
include powerpc/powernv: Switch off MMU before entering nap/sleep/rvwinkle mode 2014-12-15 10:46:32 +11:00
kernel powerpc/powernv: Switch off MMU before entering nap/sleep/rvwinkle mode 2014-12-15 10:46:32 +11:00
kvm powerpc/powernv: Return to cpu offline loop when finished in KVM guest 2014-12-08 13:16:31 +11:00
lib powerpc: Remove more traces of bootmem 2014-11-19 21:41:51 +11:00
math-emu
mm powerpc/mm: don't do tlbie for updatepp request with NO HPTE fault 2014-12-05 16:26:15 +11:00
net net: bpf: be friendly to kmemcheck 2014-09-09 16:58:56 -07:00
oprofile powerpc/oprofile: Disable pagefaults during user stack read 2014-12-02 14:10:08 +11:00
perf power/perf/hv-24x7: Use kmem_cache_free() instead of kfree 2014-12-12 16:06:13 +11:00
platforms i2c: Driver to expose PowerNV platform i2c busses 2014-12-14 12:44:46 +11:00
sysdev powerpc: Remove more traces of bootmem 2014-11-19 21:41:51 +11:00
xmon powerpc/xmon: Cleanup the breakpoint flags 2014-12-02 14:23:04 +11:00
Kconfig Merge remote-tracking branch 'scottwood/next' into next 2014-11-18 17:00:38 +11:00
Kconfig.debug Patch queue for ppc - 2014-08-01 2014-08-05 09:58:11 +02:00
Makefile powerpc: Add POWER8 CPU selection 2014-09-25 23:14:49 +10:00
relocs_check.pl