patch-2.4.25 linux-2.4.25/arch/ppc64/kernel/eeh.c

Next file: linux-2.4.25/arch/ppc64/kernel/entry.S
Previous file: linux-2.4.25/arch/ppc64/kernel/cputable.c
Back to the patch index
Back to the overall index

diff -urN linux-2.4.24/arch/ppc64/kernel/eeh.c linux-2.4.25/arch/ppc64/kernel/eeh.c
@@ -30,6 +30,7 @@
 #include <asm/processor.h>
 #include <asm/naca.h>
 #include <asm/io.h>
+#include <asm/machdep.h>
 #include "pci.h"
 
 #define BUID_HI(buid) ((buid) >> 32)
@@ -114,6 +115,18 @@
 		ret = rtas_call(ibm_read_slot_reset_state, 3, 3, rets,
 				dn->eeh_config_addr, BUID_HI(dn->phb->buid), BUID_LO(dn->phb->buid));
 		if (ret == 0 && rets[1] == 1 && rets[0] >= 2) {
+			unsigned char   slot_err_buf[RTAS_ERROR_LOG_MAX];
+			unsigned long   slot_err_ret;
+
+			memset(slot_err_buf, 0, RTAS_ERROR_LOG_MAX);
+			slot_err_ret = rtas_call(rtas_token("ibm,slot-error-detail"),
+						 8, 1, dn->eeh_config_addr,
+						 BUID_HI(dn->phb->buid), BUID_LO(dn->phb->buid),
+						 NULL, 0, __pa(slot_err_buf), RTAS_ERROR_LOG_MAX,
+						 2 /* Permanent Error */);
+			if (slot_err_ret == 0)
+				log_error(slot_err_buf, ERR_TYPE_RTAS_LOG, 1 /* Fatal */);
+
 			panic("EEH:  MMIO failure (%ld) on device:\n  %s %s\n",
 			      rets[0], dev->slot_name, dev->name);
 		}

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)