aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorGavin Shan <gwshan@linux.vnet.ibm.com>2014-04-24 04:00:22 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2014-04-28 03:34:44 -0400
commitfd5cee7ce8f488768f918e73231d4859a520eb33 (patch)
treeb2a538a47a70d1b8c5d060695520ca8e95bbeae6 /arch
parent54f112a3837d4e7532bbedbbbf27c0de277be510 (diff)
powerpc/powernv: Reset root port in firmware
Resetting root port has more stuff to do than that for PCIe switch ports and we should have resetting root port done in firmware instead of the kernel itself. The problem was introduced by commit 5b2e198e ("powerpc/powernv: Rework EEH reset"). Cc: linux-stable <stable@vger.kernel.org> 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.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/arch/powerpc/platforms/powernv/eeh-ioda.c b/arch/powerpc/platforms/powernv/eeh-ioda.c
index 3a755b5f9952..0844e00ccdd8 100644
--- a/arch/powerpc/platforms/powernv/eeh-ioda.c
+++ b/arch/powerpc/platforms/powernv/eeh-ioda.c
@@ -510,12 +510,10 @@ static int ioda_eeh_reset(struct eeh_pe *pe, int option)
510 int ret; 510 int ret;
511 511
512 /* 512 /*
513 * The rules applied to reset, either fundamental or hot reset: 513 * For PHB reset, we always have complete reset. For those PEs whose
514 * 514 * primary bus derived from root complex (root bus) or root port
515 * We always reset the direct upstream bridge of the PE. If the 515 * (usually bus#1), we apply hot or fundamental reset on the root port.
516 * direct upstream bridge isn't root bridge, we always take hot 516 * For other PEs, we always have hot reset on the PE primary bus.
517 * reset no matter what option (fundamental or hot) is. Otherwise,
518 * we should do the reset according to the required option.
519 * 517 *
520 * Here, we have different design to pHyp, which always clear the 518 * Here, we have different design to pHyp, which always clear the
521 * frozen state during PE reset. However, the good idea here from 519 * frozen state during PE reset. However, the good idea here from
@@ -529,7 +527,8 @@ static int ioda_eeh_reset(struct eeh_pe *pe, int option)
529 ret = ioda_eeh_phb_reset(hose, option); 527 ret = ioda_eeh_phb_reset(hose, option);
530 } else { 528 } else {
531 bus = eeh_pe_bus_get(pe); 529 bus = eeh_pe_bus_get(pe);
532 if (pci_is_root_bus(bus)) 530 if (pci_is_root_bus(bus) ||
531 pci_is_root_bus(bus->parent))
533 ret = ioda_eeh_root_reset(hose, option); 532 ret = ioda_eeh_root_reset(hose, option);
534 else 533 else
535 ret = ioda_eeh_bridge_reset(bus->self, option); 534 ret = ioda_eeh_bridge_reset(bus->self, option);