[v3, 2/2] powernv: Fix MCE handler to avoid trashing CR0/CR1 registers.
patch-notifications at ellerman.id.au
Tue Aug 9 21:26:34 AEST 2016
On Fri, 2016-05-08 at 12:04:13 UTC, Mahesh Salgaonkar wrote:
> From: Mahesh Salgaonkar <mahesh at linux.vnet.ibm.com>
> 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.
> Reported-by: Paul Mackerras <paulus at samba.org>
> Signed-off-by: Mahesh Salgaonkar <mahesh at linux.vnet.ibm.com>
> Reviewed-by: Shreyas B. Prabhu <shreyas at linux.vnet.ibm.com>
Applied to powerpc fixes, thanks.
More information about the Linuxppc-dev