linux/arch/powerpc
Mahesh Salgaonkar bc14c49195 powerpc/powernv: Fix MCE handler to avoid trashing CR0/CR1 registers.
The current implementation of MCE early handling modifies CR0/1 registers
without saving its old values. Fix this by moving early check for
powersaving mode to machine_check_handle_early().

The power architecture 2.06 or later allows the possibility of getting
machine check while in nap/sleep/winkle. The last bit of HSPRG0 is set
to 1, if thread is woken up from winkle. Hence, clear the last bit of
HSPRG0 (r13) before MCE handler starts using it as paca pointer.

Also, the current code always puts the thread into nap state irrespective
of whatever idle state it woke up from. Fix that by looking at
paca->thread_idle_state and put the thread back into same state where it
came from.

Fixes: 1c51089f77 ("powerpc/book3s: Return from interrupt if coming from evil context.")
Reported-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
Reviewed-by: Shreyas B. Prabhu <shreyas@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2016-08-09 16:51:35 +10:00
..
boot Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-08-02 16:37:12 -04:00
configs powerpc updates for 4.8 # 1 2016-07-30 21:01:36 -07:00
crypto crypto: crc32c-vpmsum - Convert to CPU feature based module autoloading 2016-08-09 14:50:17 +10:00
include powerpc/powernv: Move IDLE_STATE_ENTER_SEQ macro to cpuidle.h 2016-08-09 14:50:20 +10:00
kernel powerpc/powernv: Fix MCE handler to avoid trashing CR0/CR1 registers. 2016-08-09 16:51:35 +10:00
kvm Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-08-02 16:37:12 -04:00
lib powerpc updates for 4.8 #2 2016-08-05 09:00:54 -04:00
math-emu
mm powerpc updates for 4.8 #2 2016-08-05 09:00:54 -04:00
net powerpc/ebpf/jit: Implement JIT compiler for extended BPF 2016-06-24 15:17:57 +10:00
oprofile powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
perf powerpc/perf: Fix incorrect event codes in power9-event-list 2016-08-04 20:22:34 +10:00
platforms powerpc/powernv/ioda: Fix TCE invalidate to work in real mode again 2016-08-09 14:50:19 +10:00
scripts powerpc/ftrace: Add Kconfig & Make glue for mprofile-kernel 2016-03-07 14:53:56 +11:00
sysdev powerpc/xics: Properly set Edge/Level type and enable resend 2016-08-09 14:50:18 +10:00
xmon powerpc: Move cpu_has_feature() to a separate file 2016-08-01 11:15:03 +10:00
Kconfig powerpc updates for 4.8 # 1 2016-07-30 21:01:36 -07:00
Kconfig.debug powerpc/mm: Catch usage of cpu/mmu_has_feature() before jump label init 2016-08-01 11:15:06 +10:00
Makefile powerpc/sparse: Pass endianness to sparse 2016-07-14 20:44:03 +10:00
relocs_check.sh