diff mbox

[v2,9/9] hw/phb3: Override root slot's prepare_link_change() with PHB's

Message ID 1476321413-5245-10-git-send-email-gwshan@linux.vnet.ibm.com
State Changes Requested
Headers show

Commit Message

Gavin Shan Oct. 13, 2016, 1:16 a.m. UTC
For PCI slot behind root port, its prepare_link_change() should be
same to PHB's. Otherwise, the UTL events cannot be masked when the
adapter behind the slot, leading to EEH error on removing the adapter.

Cc: stable # 5.3.0+
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
---
 hw/phb3.c | 8 ++++++++
 1 file changed, 8 insertions(+)
diff mbox

Patch

diff --git a/hw/phb3.c b/hw/phb3.c
index 35bc73a..1c09ffe 100644
--- a/hw/phb3.c
+++ b/hw/phb3.c
@@ -284,6 +284,14 @@  static void phb3_root_port_init(struct phb *phb, struct pci_device *dev,
 	uint16_t val16;
 	uint32_t val32;
 
+	/* Use PHB's callback so that the UTL events will be masked
+	 * or unmasked when the link is down or up.
+	 */
+	if (dev->slot && dev->slot->ops.prepare_link_change &&
+	    phb->slot && phb->slot->ops.prepare_link_change)
+		dev->slot->ops.prepare_link_change =
+			phb->slot->ops.prepare_link_change;
+
 	/* Mask UTL link down event if root slot supports surprise
 	 * hotplug as the event should be handled by hotplug driver
 	 * instead of EEH subsystem.