aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorGavin Shan <gwshan@linux.vnet.ibm.com>2014-05-04 19:29:04 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2014-06-11 03:04:20 -0400
commit71b540adffd9832e025dd9401178a8ef8c814e50 (patch)
tree05c8d941e1dc8a35851db3a26222d6131014d26a /arch
parent1ad7a72c5e57bc6a7a3190c580df14dc3642febf (diff)
powerpc/powernv: Don't escalate non-existing frozen PE
Commit cb5b242c ("powerpc/eeh: Escalate error on non-existing PE") escalates the frozen state on non-existing PE to fenced PHB. It was to improve kdump reliability. After that, commit 361f2a2a ("powrpc/powernv: Reset PHB in kdump kernel") was introduced to issue complete reset on all PHBs to increase the reliability of kdump kernel. Commit cb5b242c becomes unuseful and it would be reverted. Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/platforms/powernv/eeh-ioda.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/arch/powerpc/platforms/powernv/eeh-ioda.c b/arch/powerpc/platforms/powernv/eeh-ioda.c
index 68167cd9ea97..5711f6f1fda6 100644
--- a/arch/powerpc/platforms/powernv/eeh-ioda.c
+++ b/arch/powerpc/platforms/powernv/eeh-ioda.c
@@ -794,23 +794,17 @@ static int ioda_eeh_next_error(struct eeh_pe **pe)
794 break; 794 break;
795 case OPAL_EEH_PE_ERROR: 795 case OPAL_EEH_PE_ERROR:
796 /* 796 /*
797 * If we can't find the corresponding PE, the 797 * If we can't find the corresponding PE, we
798 * PEEV / PEST would be messy. So we force an 798 * just try to unfreeze.
799 * fenced PHB so that it can be recovered.
800 *
801 * If the PE has been marked as isolated, that
802 * should have been removed permanently or in
803 * progress with recovery. We needn't report
804 * it again.
805 */ 799 */
806 if (ioda_eeh_get_pe(hose, 800 if (ioda_eeh_get_pe(hose,
807 be64_to_cpu(frozen_pe_no), pe)) { 801 be64_to_cpu(frozen_pe_no), pe)) {
808 *pe = phb_pe; 802 /* Try best to clear it */
809 pr_err("EEH: Escalated fenced PHB#%x " 803 pr_info("EEH: Clear non-existing PHB#%x-PE#%llx\n",
810 "detected for PE#%llx\n", 804 hose->global_number, frozen_pe_no);
811 hose->global_number, 805 opal_pci_eeh_freeze_clear(phb->opal_id, frozen_pe_no,
812 be64_to_cpu(frozen_pe_no)); 806 OPAL_EEH_ACTION_CLEAR_FREEZE_ALL);
813 ret = EEH_NEXT_ERR_FENCED_PHB; 807 ret = EEH_NEXT_ERR_NONE;
814 } else if ((*pe)->state & EEH_PE_ISOLATED) { 808 } else if ((*pe)->state & EEH_PE_ISOLATED) {
815 ret = EEH_NEXT_ERR_NONE; 809 ret = EEH_NEXT_ERR_NONE;
816 } else { 810 } else {