powerpc: Fix 460EX/460GT machine check handling

Started by Benjamin Herrenschmidt on Nov 12, 2008 · 3 messages from 2 authors · Last reply Nov 12, 2008

STALE6562d

open the first message on its own page

  1. [PATCH] powerpc: Fix 460EX/460GT machine check handling
    Related patches

[PATCH] powerpc: Fix 460EX/460GT machine check handling

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2008-11-12 02:02:43

Those cores use the 440A type machine check (ie, they have
MCSRR0/MCSRR1). They thus need to call the appropriate fixup
function to hook the right variant of the exception.

Without this, all machine checks become fatal due to loss
of context when entering the exception handler.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---

 arch/powerpc/kernel/cpu_setup_44x.S |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
--- linux-work.orig/arch/powerpc/kernel/cpu_setup_44x.S	2008-11-12 12:51:24.000000000 +1100
+++ linux-work/arch/powerpc/kernel/cpu_setup_44x.S	2008-11-12 13:01:03.000000000 +1100
@@ -34,7 +34,12 @@ _GLOBAL(__setup_cpu_440grx)
 	blr
 _GLOBAL(__setup_cpu_460ex)
 _GLOBAL(__setup_cpu_460gt)
-	b	__init_fpu_44x
+	mflr	r4
+	bl	__init_fpu_44x
+	bl	__fixup_440A_mcheck
+	mtlr	r4
+	blr
+
 _GLOBAL(__setup_cpu_440gx)
 _GLOBAL(__setup_cpu_440spe)
 	b	__fixup_440A_mcheck

Re: [PATCH] powerpc: Fix 460EX/460GT machine check handling

From: Josh Boyer <hidden>
Date: 2008-11-12 11:27:48

On Wed, 12 Nov 2008 13:02:43 +1100
Benjamin Herrenschmidt [off-list ref] wrote:
Those cores use the 440A type machine check (ie, they have
MCSRR0/MCSRR1). They thus need to call the appropriate fixup
function to hook the right variant of the exception.

Without this, all machine checks become fatal due to loss
of context when entering the exception handler.
Looks fine to me.  However, what machine checks were you getting that
caused you to see this that aren't fatal anyway?

josh
quoted hunk
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---

 arch/powerpc/kernel/cpu_setup_44x.S |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
--- linux-work.orig/arch/powerpc/kernel/cpu_setup_44x.S	2008-11-12 12:51:24.000000000 +1100
+++ linux-work/arch/powerpc/kernel/cpu_setup_44x.S	2008-11-12 13:01:03.000000000 +1100
@@ -34,7 +34,12 @@ _GLOBAL(__setup_cpu_440grx)
 	blr
 _GLOBAL(__setup_cpu_460ex)
 _GLOBAL(__setup_cpu_460gt)
-	b	__init_fpu_44x
+	mflr	r4
+	bl	__init_fpu_44x
+	bl	__fixup_440A_mcheck
+	mtlr	r4
+	blr
+
 _GLOBAL(__setup_cpu_440gx)
 _GLOBAL(__setup_cpu_440spe)
 	b	__fixup_440A_mcheck

Re: [PATCH] powerpc: Fix 460EX/460GT machine check handling

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2008-11-12 11:50:51

On Wed, 2008-11-12 at 06:27 -0500, Josh Boyer wrote:
On Wed, 12 Nov 2008 13:02:43 +1100
Benjamin Herrenschmidt [off-list ref] wrote:
quoted
Those cores use the 440A type machine check (ie, they have
MCSRR0/MCSRR1). They thus need to call the appropriate fixup
function to hook the right variant of the exception.

Without this, all machine checks become fatal due to loss
of context when entering the exception handler.
Looks fine to me.  However, what machine checks were you getting that
caused you to see this that aren't fatal anyway?
PCI aborts from userspace when toying with video card POSTing &
x86emu :-)

Cheers,
Ben.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help