Commit 71b540adffd9832e025dd9401178a8ef8c814e50

Authored by Gavin Shan
Committed by Benjamin Herrenschmidt
1 parent 1ad7a72c5e

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>

Showing 1 changed file with 9 additions and 15 deletions Side-by-side Diff

arch/powerpc/platforms/powernv/eeh-ioda.c
... ... @@ -794,23 +794,17 @@
794 794 break;
795 795 case OPAL_EEH_PE_ERROR:
796 796 /*
797   - * If we can't find the corresponding PE, the
798   - * PEEV / PEST would be messy. So we force an
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.
  797 + * If we can't find the corresponding PE, we
  798 + * just try to unfreeze.
805 799 */
806 800 if (ioda_eeh_get_pe(hose,
807   - be64_to_cpu(frozen_pe_no), pe)) {
808   - *pe = phb_pe;
809   - pr_err("EEH: Escalated fenced PHB#%x "
810   - "detected for PE#%llx\n",
811   - hose->global_number,
812   - be64_to_cpu(frozen_pe_no));
813   - ret = EEH_NEXT_ERR_FENCED_PHB;
  801 + be64_to_cpu(frozen_pe_no), pe)) {
  802 + /* Try best to clear it */
  803 + pr_info("EEH: Clear non-existing PHB#%x-PE#%llx\n",
  804 + hose->global_number, frozen_pe_no);
  805 + opal_pci_eeh_freeze_clear(phb->opal_id, frozen_pe_no,
  806 + OPAL_EEH_ACTION_CLEAR_FREEZE_ALL);
  807 + ret = EEH_NEXT_ERR_NONE;
814 808 } else if ((*pe)->state & EEH_PE_ISOLATED) {
815 809 ret = EEH_NEXT_ERR_NONE;
816 810 } else {