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 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev