summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Luck <tony.luck@intel.com>2005-11-10 19:38:05 +0100
committerTony Luck <tony.luck@intel.com>2005-11-10 19:38:05 +0100
commitcf1d469ec10015f8ced338c00e7944941f816e89 (patch)
tree1db8f0944db9294b9a90b4c868745d20321feefa
parentPull align-sig-frame into release branch (diff)
parent[IA64] MCA recovery based on PSP bits (diff)
downloadlinux-cf1d469ec10015f8ced338c00e7944941f816e89.tar.xz
linux-cf1d469ec10015f8ced338c00e7944941f816e89.zip
Pull mca-check-psp into release branch
-rw-r--r--arch/ia64/kernel/mca_drv.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/arch/ia64/kernel/mca_drv.c b/arch/ia64/kernel/mca_drv.c
index eb39bc9c133b..3492e3211a44 100644
--- a/arch/ia64/kernel/mca_drv.c
+++ b/arch/ia64/kernel/mca_drv.c
@@ -547,9 +547,20 @@ recover_from_processor_error(int platform, slidx_table_t *slidx,
(pal_processor_state_info_t*)peidx_psp(peidx);
/*
- * We cannot recover errors with other than bus_check.
+ * Processor recovery status must key off of the PAL recovery
+ * status in the Processor State Parameter.
*/
- if (psp->cc || psp->rc || psp->uc)
+
+ /*
+ * The machine check is corrected.
+ */
+ if (psp->cm == 1)
+ return 1;
+
+ /*
+ * The error was not contained. Software must be reset.
+ */
+ if (psp->us || psp->ci == 0)
return 0;
/*
@@ -570,8 +581,6 @@ recover_from_processor_error(int platform, slidx_table_t *slidx,
return 0;
if (pbci->eb && pbci->bsi > 0)
return 0;
- if (psp->ci == 0)
- return 0;
/*
* This is a local MCA and estimated as recoverble external bus error.