|
@@ -298,9 +298,17 @@ void eeh_slot_error_detail(struct eeh_pe *pe, int severity)
|
|
|
*
|
|
|
* For pHyp, we have to enable IO for log retrieval. Otherwise,
|
|
|
* 0xFF's is always returned from PCI config space.
|
|
|
+ *
|
|
|
+ * When the @severity is EEH_LOG_PERM, the PE is going to be
|
|
|
+ * removed. Prior to that, the drivers for devices included in
|
|
|
+ * the PE will be closed. The drivers rely on working IO path
|
|
|
+ * to bring the devices to quiet state. Otherwise, PCI traffic
|
|
|
+ * from those devices after they are removed is like to cause
|
|
|
+ * another unexpected EEH error.
|
|
|
*/
|
|
|
if (!(pe->type & EEH_PE_PHB)) {
|
|
|
- if (eeh_has_flag(EEH_ENABLE_IO_FOR_LOG))
|
|
|
+ if (eeh_has_flag(EEH_ENABLE_IO_FOR_LOG) ||
|
|
|
+ severity == EEH_LOG_PERM)
|
|
|
eeh_pci_enable(pe, EEH_OPT_THAW_MMIO);
|
|
|
|
|
|
/*
|