linux/arch/powerpc/platforms/powernv
Gavin Shan 7895470063 powerpc/eeh: Avoid I/O access during PE reset
We have suffered recrusive frozen PE a lot, which was caused
by IO accesses during the PE reset. Ben came up with the good
idea to keep frozen PE until recovery (BAR restore) gets done.
With that, IO accesses during PE reset are dropped by hardware
and wouldn't incur the recrusive frozen PE any more.

The patch implements the idea. We don't clear the frozen state
until PE reset is done completely. During the period, the EEH
core expects unfrozen state from backend to keep going. So we
have to reuse EEH_PE_RESET flag, which has been set during PE
reset, to return normal state from backend. The side effect is
we have to clear frozen state for towice (PE reset and clear it
explicitly), but that's harmless.

We have some limitations on pHyp. pHyp doesn't allow to enable
IO or DMA for unfrozen PE. So we don't enable them on unfrozen PE
in eeh_pci_enable(). We have to enable IO before grabbing logs on
pHyp. Otherwise, 0xFF's is always returned from PCI config space.
Also, we had wrong return value from eeh_pci_enable() for
EEH_OPT_THAW_DMA case. The patch fixes it too.

Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2014-04-28 17:34:10 +10:00
..
Kconfig cpufreq: powernv: Select CPUFreq related Kconfig options for powernv 2014-04-07 14:35:28 +02:00
Makefile powerpc/powernv: Add OPAL message log interface 2014-04-09 12:53:19 +10:00
eeh-ioda.c powerpc/eeh: Avoid I/O access during PE reset 2014-04-28 17:34:10 +10:00
eeh-powernv.c powerpc/eeh: Cleanup on eeh_subsystem_enabled 2014-02-17 11:19:39 +11:00
opal-async.c powerpc/powernv: Fix endian issues with OPAL async code 2014-04-07 10:34:27 +10:00
opal-dump.c powerpc/powernv: Fix little endian issues in OPAL dump code 2014-04-28 13:11:24 +10:00
opal-elog.c powerpc/powernv: Fix little endian issues in OPAL error log code 2014-04-28 13:11:23 +10:00
opal-flash.c powerpc/powernv: Create OPAL sglist helper functions and fix endian issues 2014-04-28 13:11:23 +10:00
opal-lpc.c powerpc/powernv: Fix OPAL LPC access in Little Endian 2013-12-13 15:55:15 +11:00
opal-memory-errors.c powerpc/powernv: Get FSP memory errors and plumb into memory poison infrastructure. 2013-12-09 11:41:14 +11:00
opal-msglog.c powerpc/powernv: Add OPAL message log interface 2014-04-09 12:53:19 +10:00
opal-nvram.c powerpc/powernv: Make OPAL NVRAM device tree accesses endian safe 2013-10-11 16:48:47 +11:00
opal-rtc.c powernv: Remove get/set_rtc_time when they are not present 2013-12-05 16:08:22 +11:00
opal-sensor.c powerpc/powernv: Fix endian issues with sensor code 2014-04-09 12:52:49 +10:00
opal-sysparam.c powerpc/powernv: Check sysparam size before creation 2014-04-28 13:08:49 +10:00
opal-takeover.S powerpc: Merge STK_REG/PARAM/FRAMESIZE 2012-07-10 19:18:03 +10:00
opal-wrappers.S powerpc/powernv: Add invalid OPAL call 2014-04-09 12:53:23 +10:00
opal-xscom.c powerpc/powernv: Fix indirect XSCOM unmangling 2014-02-28 19:15:49 +11:00
opal.c powerpc/powernv: Create OPAL sglist helper functions and fix endian issues 2014-04-28 13:11:23 +10:00
pci-ioda.c powerpc/powernv: Release the refcount for pci_dev 2014-04-28 13:11:20 +10:00
pci-p5ioc2.c PPC: POWERNV: move iommu_add_device earlier 2013-12-05 16:08:17 +11:00
pci.c powerpc/eeh: Block PCI-CFG access during PE reset 2014-04-28 17:34:02 +10:00
pci.h powerpc/powernv: Move PNV_EEH_STATE_ENABLED around 2014-04-28 17:33:48 +10:00
powernv.h powerpc/powernv: Add iommu DMA bypass support for IODA2 2014-02-11 16:07:37 +11:00
rng.c powerpc: Make cpu_to_chip_id() available when SMP=n 2013-11-21 10:33:44 +11:00
setup.c powerpc/powernv: Fix kexec races going back to OPAL 2014-04-28 13:08:50 +10:00
smp.c ppc/powernv: Set the runlatch bits correctly for offline cpus 2014-04-28 16:32:40 +10:00