aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/kernel/eeh.c')
-rw-r--r--arch/powerpc/kernel/eeh.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/eeh.c b/arch/powerpc/kernel/eeh.c
index 98949b0df00a..6696c1986844 100644
--- a/arch/powerpc/kernel/eeh.c
+++ b/arch/powerpc/kernel/eeh.c
@@ -304,9 +304,17 @@ void eeh_slot_error_detail(struct eeh_pe *pe, int severity)
304 * 304 *
305 * For pHyp, we have to enable IO for log retrieval. Otherwise, 305 * For pHyp, we have to enable IO for log retrieval. Otherwise,
306 * 0xFF's is always returned from PCI config space. 306 * 0xFF's is always returned from PCI config space.
307 *
308 * When the @severity is EEH_LOG_PERM, the PE is going to be
309 * removed. Prior to that, the drivers for devices included in
310 * the PE will be closed. The drivers rely on working IO path
311 * to bring the devices to quiet state. Otherwise, PCI traffic
312 * from those devices after they are removed is like to cause
313 * another unexpected EEH error.
307 */ 314 */
308 if (!(pe->type & EEH_PE_PHB)) { 315 if (!(pe->type & EEH_PE_PHB)) {
309 if (eeh_has_flag(EEH_ENABLE_IO_FOR_LOG)) 316 if (eeh_has_flag(EEH_ENABLE_IO_FOR_LOG) ||
317 severity == EEH_LOG_PERM)
310 eeh_pci_enable(pe, EEH_OPT_THAW_MMIO); 318 eeh_pci_enable(pe, EEH_OPT_THAW_MMIO);
311 319
312 /* 320 /*