summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel
diff options
context:
space:
mode:
authorGavin Shan2014-09-30 04:38:52 +0200
committerMichael Ellerman2014-09-30 09:15:07 +0200
commit0d5ee5205e62908172bf5e1a5fd171ba262fdb75 (patch)
tree427ac277b994176d914427ea2cb9a07d06fc4636 /arch/powerpc/kernel
parentpowerpc/eeh: Add eeh_pe_state sysfs entry (diff)
downloadkernel-qcow2-linux-0d5ee5205e62908172bf5e1a5fd171ba262fdb75.tar.gz
kernel-qcow2-linux-0d5ee5205e62908172bf5e1a5fd171ba262fdb75.tar.xz
kernel-qcow2-linux-0d5ee5205e62908172bf5e1a5fd171ba262fdb75.zip
powerpc/eeh: Freeze PE before PE reset
The patch adds one more option (EEH_OPT_FREEZE_PE) to set_option() method to proactively freeze PE, which will be issued before resetting pass-throughed PE to drop MMIO access during reset because it's always contributing to recursive EEH error. Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/kernel')
-rw-r--r--arch/powerpc/kernel/eeh.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/eeh.c b/arch/powerpc/kernel/eeh.c
index db35c2722201..633f6bf965c3 100644
--- a/arch/powerpc/kernel/eeh.c
+++ b/arch/powerpc/kernel/eeh.c
@@ -1382,6 +1382,13 @@ int eeh_pe_reset(struct eeh_pe *pe, int option)
break;
case EEH_RESET_HOT:
case EEH_RESET_FUNDAMENTAL:
+ /*
+ * Proactively freeze the PE to drop all MMIO access
+ * during reset, which should be banned as it's always
+ * cause recursive EEH error.
+ */
+ eeh_ops->set_option(pe, EEH_OPT_FREEZE_PE);
+
ret = eeh_ops->reset(pe, option);
break;
default: