aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64
diff options
context:
space:
mode:
authorRuss Anderson <rja@efs.americas.sgi.com>2005-11-04 14:39:38 -0500
committerTony Luck <tony.luck@intel.com>2005-11-08 13:00:56 -0500
commita14f25a076a8e5040d6f4e93f84034c81bcddbf7 (patch)
treeff6c0d93ff410d549ee887001341b118574a4234 /arch/ia64
parentf093182d313edde9b1f86dbdaf40ba4da2dbd0e7 (diff)
[IA64] MCA recovery based on PSP bits
The determination of whether an MCA is recoverable or not must be based on the bits set in the PSP (Processor State Parameter). The specific bits are shown in the Intel IA-64 Architecture Software Developer's Manual, Vol 2, Table 11-6 Software Recovery Bits in Processor State Parameter. Those bits should be consistent across the entire IA-64 family of processors. Signed-off-by: Russ Anderson <rja@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64')
-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 f081c60ab206..eb860e293415 100644
--- a/arch/ia64/kernel/mca_drv.c
+++ b/arch/ia64/kernel/mca_drv.c
@@ -546,9 +546,20 @@ recover_from_processor_error(int platform, slidx_table_t *slidx,
546 (pal_processor_state_info_t*)peidx_psp(peidx); 546 (pal_processor_state_info_t*)peidx_psp(peidx);
547 547
548 /* 548 /*
549 * We cannot recover errors with other than bus_check. 549 * Processor recovery status must key off of the PAL recovery
550 * status in the Processor State Parameter.
550 */ 551 */
551 if (psp->cc || psp->rc || psp->uc) 552
553 /*
554 * The machine check is corrected.
555 */
556 if (psp->cm == 1)
557 return 1;
558
559 /*
560 * The error was not contained. Software must be reset.
561 */
562 if (psp->us || psp->ci == 0)
552 return 0; 563 return 0;
553 564
554 /* 565 /*
@@ -569,8 +580,6 @@ recover_from_processor_error(int platform, slidx_table_t *slidx,
569 return 0; 580 return 0;
570 if (pbci->eb && pbci->bsi > 0) 581 if (pbci->eb && pbci->bsi > 0)
571 return 0; 582 return 0;
572 if (psp->ci == 0)
573 return 0;
574 583
575 /* 584 /*
576 * This is a local MCA and estimated as recoverble external bus error. 585 * This is a local MCA and estimated as recoverble external bus error.