|
@@ -163,13 +163,23 @@ static int pnv_ioda_configure_pe(struct pnv_phb *phb, struct pnv_ioda_pe *pe)
|
|
|
rid_end = pe->rid + 1;
|
|
|
}
|
|
|
|
|
|
- /* Associate PE in PELT */
|
|
|
+ /*
|
|
|
+ * Associate PE in PELT. We need add the PE into the
|
|
|
+ * corresponding PELT-V as well. Otherwise, the error
|
|
|
+ * originated from the PE might contribute to other
|
|
|
+ * PEs.
|
|
|
+ */
|
|
|
rc = opal_pci_set_pe(phb->opal_id, pe->pe_number, pe->rid,
|
|
|
bcomp, dcomp, fcomp, OPAL_MAP_PE);
|
|
|
if (rc) {
|
|
|
pe_err(pe, "OPAL error %ld trying to setup PELT table\n", rc);
|
|
|
return -ENXIO;
|
|
|
}
|
|
|
+
|
|
|
+ rc = opal_pci_set_peltv(phb->opal_id, pe->pe_number,
|
|
|
+ pe->pe_number, OPAL_ADD_PE_TO_DOMAIN);
|
|
|
+ if (rc)
|
|
|
+ pe_warn(pe, "OPAL error %d adding self to PELTV\n", rc);
|
|
|
opal_pci_eeh_freeze_clear(phb->opal_id, pe->pe_number,
|
|
|
OPAL_EEH_ACTION_CLEAR_FREEZE_ALL);
|
|
|
|