diff options
Diffstat (limited to 'arch/ia64/kernel/mca_drv.c')
-rw-r--r-- | arch/ia64/kernel/mca_drv.c | 17 |
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. |