| From 631ad691b5818291d89af9be607d2fe40be0886e Mon Sep 17 00:00:00 2001 |
| From: Gavin Shan <shangw@linux.vnet.ibm.com> |
| Date: Mon, 4 Nov 2013 16:32:46 +0800 |
| Subject: powerpc/powernv: Add PE to its own PELTV |
| |
| From: Gavin Shan <shangw@linux.vnet.ibm.com> |
| |
| commit 631ad691b5818291d89af9be607d2fe40be0886e upstream. |
| |
| We need add PE to its own PELTV. Otherwise, the errors originated |
| from the PE might contribute to other PEs. In the result, we can't |
| clear up the error successfully even we're checking and clearing |
| errors during access to PCI config space. |
| |
| Reported-by: kalshett@in.ibm.com |
| Signed-off-by: Gavin Shan <shangw@linux.vnet.ibm.com> |
| Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/powerpc/platforms/powernv/pci-ioda.c | 12 +++++++++++- |
| 1 file changed, 11 insertions(+), 1 deletion(-) |
| |
| --- a/arch/powerpc/platforms/powernv/pci-ioda.c |
| +++ b/arch/powerpc/platforms/powernv/pci-ioda.c |
| @@ -151,13 +151,23 @@ static int pnv_ioda_configure_pe(struct |
| 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); |
| |