[PATCH v1 00/10] powerpc/eeh: Remove eeh_mutex
Gavin Shan
shangw at linux.vnet.ibm.com
Tue Jun 25 15:55:07 EST 2013
The series of patches are follow-up in order to make EEH workable for PowerNV
platform on Juno-IOC-L machine. Couple of issues have been fixed with help of
Ben:
- eeh_lock() and eeh_unlock() were introduced to protect the PE hierarchy
tree. However, we already had one kthread ("eehd"). So that's not necessary
any more.
- When PHB gets fenced, we need do complete reset for the PHB in order
for recovery. However, we never checked the downstream PCIe links are
ready again.
- Introduce mechanism to block accessing to PCI-CFG and MMIO. The hardware
should return 0xFF's while the PHB is fenced. So we needn't access PCI-CFG
and MMIO during the stage (before the PHB gets complete reset).
- EEH address cache wasn't populated on PowerNV.
- PCI-CFG for PCI bridges (PCI_COMMAND) wasn't restored correctly.
- While PHB gets fenced, TG3 driver is still trying to access MMIO with loop.
That's unnecessary.
The series of patches have been verified on Juno-IOC-L machine:
Trigger frozen PE:
echo 0x0000000002000000 > /sys/kernel/debug/powerpc/PCI0000/err_injct
sleep 1
echo 0x0 > /sys/kernel/debug/powerpc/PCI0000/err_injct
Trigger fenced PHB:
echo 0x8000000000000000 > /sys/kernel/debug/powerpc/PCI0000/err_injct
---
arch/powerpc/include/asm/eeh.h | 251 ++++++++++++++++++++------
arch/powerpc/include/asm/io.h | 67 ++++---
arch/powerpc/kernel/eeh.c | 85 ++++++---
arch/powerpc/kernel/eeh_cache.c | 2 +-
arch/powerpc/kernel/eeh_driver.c | 11 ++
arch/powerpc/kernel/eeh_event.c | 3 +-
arch/powerpc/kernel/eeh_pe.c | 150 ++++++++++++----
arch/powerpc/platforms/powernv/eeh-ioda.c | 88 +++++++++-
arch/powerpc/platforms/powernv/eeh-powernv.c | 42 ++++-
arch/powerpc/platforms/powernv/pci-ioda.c | 1 +
arch/powerpc/platforms/powernv/pci.c | 63 +++++--
arch/powerpc/platforms/powernv/pci.h | 16 ++-
arch/powerpc/platforms/pseries/eeh_pseries.c | 44 +++++
drivers/net/ethernet/broadcom/tg3.c | 36 ++++
14 files changed, 685 insertions(+), 174 deletions(-)
Thanks,
Gavin
More information about the Linuxppc-dev
mailing list