Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1233573

[PATCH 4.2 050/134] powerpc/eeh: Fix fenced PHB caused by eeh_slot_error_detail()

From Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Newsgroups linux.kernel
Subject [PATCH 4.2 050/134] powerpc/eeh: Fix fenced PHB caused by eeh_slot_error_detail()
Date 2015-09-27 00:20 +0200
Message-ID <qd5Z1-4Gv-53@gated-at.bofh.it> (permalink)
References <qd4Jz-2Ha-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


4.2-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Gavin Shan <gwshan@linux.vnet.ibm.com>

commit 259800135c654a098d9f0adfdd3d1f20eef1f231 upstream.

The config space of some PCI devices can't be accessed when their
PEs are in frozen state. Otherwise, fenced PHB might be seen.
Those PEs are identified with flag EEH_PE_CFG_RESTRICTED, meaing
EEH_PE_CFG_BLOCKED is set automatically when the PE is put to
frozen state (EEH_PE_ISOLATED). eeh_slot_error_detail() restores
PCI device BARs with eeh_pe_restore_bars(), which then calls
eeh_ops->restore_config() to reinitialize the PCI device in
(OPAL) firmware. eeh_ops->restore_config() produces PCI config
access that causes fenced PHB. The problem was reported on below
adapter:

   0001:01:00.0 0200: 14e4:168e (rev 10)
   0001:01:00.0 Ethernet controller: Broadcom Corporation \
                NetXtreme II BCM57810 10 Gigabit Ethernet (rev 10)

This fixes the issue by skipping eeh_pe_restore_bars() in
eeh_slot_error_detail() when EEH_PE_CFG_BLOCKED is set for the PE.

Fixes: b6541db1 ("powerpc/eeh: Block PCI config access upon frozen PE")
Reported-by: Manvanthara B. Puttashankar <mputtash@in.ibm.com>
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/powerpc/kernel/eeh.c |   21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

--- a/arch/powerpc/kernel/eeh.c
+++ b/arch/powerpc/kernel/eeh.c
@@ -308,11 +308,26 @@ void eeh_slot_error_detail(struct eeh_pe
 	if (!(pe->type & EEH_PE_PHB)) {
 		if (eeh_has_flag(EEH_ENABLE_IO_FOR_LOG))
 			eeh_pci_enable(pe, EEH_OPT_THAW_MMIO);
+
+		/*
+		 * The config space of some PCI devices can't be accessed
+		 * when their PEs are in frozen state. Otherwise, fenced
+		 * PHB might be seen. Those PEs are identified with flag
+		 * EEH_PE_CFG_RESTRICTED, indicating EEH_PE_CFG_BLOCKED
+		 * is set automatically when the PE is put to EEH_PE_ISOLATED.
+		 *
+		 * Restoring BARs possibly triggers PCI config access in
+		 * (OPAL) firmware and then causes fenced PHB. If the
+		 * PCI config is blocked with flag EEH_PE_CFG_BLOCKED, it's
+		 * pointless to restore BARs and dump config space.
+		 */
 		eeh_ops->configure_bridge(pe);
-		eeh_pe_restore_bars(pe);
+		if (!(pe->state & EEH_PE_CFG_BLOCKED)) {
+			eeh_pe_restore_bars(pe);
 
-		pci_regs_buf[0] = 0;
-		eeh_pe_traverse(pe, eeh_dump_pe_log, &loglen);
+			pci_regs_buf[0] = 0;
+			eeh_pe_traverse(pe, eeh_dump_pe_log, &loglen);
+		}
 	}
 
 	eeh_ops->get_log(pe, severity, pci_regs_buf, loglen);


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 4.2 000/134] 4.2.2-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 049/134] powerpc/eeh: Probe after unbalanced kref check Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 018/134] MIPS: CPS: use 32b accesses to GCRs Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 032/134] arm64: compat: fix vfp save/restore across signal handlers in big-endian Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 047/134] pinctrl: at91: fix null pointer dereference Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 006/134] nfc: st-nci: Remove data from ack_pending_q when receiving a SYNC_ACK Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 015/134] rtlwifi: rtl8821ae: Fix an expression that is always false Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 030/134] of/fdt: make memblock maximum physical address arch configurable Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 035/134] arm/arm64: KVM: vgic: Check for !irqchip_in_kernel() when mapping resources Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 050/134] powerpc/eeh: Fix fenced PHB caused by eeh_slot_error_detail() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 007/134] nfc: st-nci: Free data with irrelevant NDLC PCB_SYNC value Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 017/134] tg3: Fix temperature reporting Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 053/134] powerpc: Uncomment and make enable_kernel_vsx() routine available Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 003/134] nfc: st-nci: Fix non accurate comment for st_nci_i2c_read Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 036/134] KVM: arm64: add workaround for Cortex-A57 erratum #852523 Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 004/134] NFC: st21nfca: fix use of uninitialized variables in error path Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 037/134] arm64: KVM: Disable virtual timer even if the guest is not using it Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 008/134] nfc: netlink: Add check on NFC_ATTR_VENDOR_DATA Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 048/134] powerpc/pseries: Fix corrupted pdn list Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 059/134] powerpc/mm: Recompute hash value after a failed update Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:20 +0200
  [PATCH 4.2 021/134] mac80211: enable assoc check for mesh interfaces Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:30 +0200
  [PATCH 4.2 029/134] arm64: flush FP/SIMD state correctly after execve() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:30 +0200
  [PATCH 4.2 019/134] MIPS: math-emu: Allow m{f,t}hc emulation on MIPS R6 Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:30 +0200
  [PATCH 4.2 024/134] cxl: Fix unbalanced pci_dev_get in cxl_probe Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:30 +0200
  [PATCH 4.2 002/134] nfc: st-nci: Fix typo when changing from st21nfcb to st-nci Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:30 +0200
  [PATCH 4.2 022/134] cxl: Allow release of contexts which have been OPENED but not STARTED Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:30 +0200
  [PATCH 4.2 027/134] arm64: kconfig: Move LIST_POISON to a safe value Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:30 +0200
  [PATCH 4.2 020/134] MIPS: math-emu: Emulate missing BC1{EQ,NE}Z instructions Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:30 +0200
  [PATCH 4.2 025/134] ext4: dont manipulate recovery flag when freezing no-journal fs Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:30 +0200
  [PATCH 4.2 028/134] arm64: entry: always restore x0 from the stack on syscall return Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:30 +0200
  [PATCH 4.2 010/134] nfc: nci: hci: Add check on skb nci_hci_send_cmd parameter Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:30 +0200
  [PATCH 4.2 026/134] Revert "ext4: remove block_device_ejected" Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:30 +0200
  [PATCH 4.2 023/134] cxl: Remove racy attempt to force EEH invocation in reset Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 00:30 +0200
  Re: [PATCH 4.2 000/134] 4.2.2-stable review Guenter Roeck <linux@roeck-us.net> - 2015-09-27 20:20 +0200
    Re: [PATCH 4.2 000/134] 4.2.2-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-27 20:40 +0200
  Re: [PATCH 4.2 000/134] 4.2.2-stable review Sudip Mukherjee <sudipm.mukherjee@gmail.com> - 2015-09-28 08:00 +0200
    Re: [PATCH 4.2 000/134] 4.2.2-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2015-09-28 16:30 +0200
      Re: [PATCH 4.2 000/134] 4.2.2-stable review Sudip Mukherjee <sudipm.mukherjee@gmail.com> - 2015-09-28 17:10 +0200
      Re: [PATCH 4.2 000/134] 4.2.2-stable review Guenter Roeck <linux@roeck-us.net> - 2015-09-28 17:10 +0200
  Re: [PATCH 4.2 000/134] 4.2.2-stable review Shuah Khan <shuahkh@osg.samsung.com> - 2015-09-28 19:40 +0200

csiph-web