aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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.