瀏覽代碼

PCI: pciehp: Ignore interrupts during D3cold

If a hotplug port is suspended to D3cold, its slot status register cannot
be read.  If that hotplug port happens to share its IRQ with other devices,
whenever an interrupt occurs for one of these devices, pciehp logs a
"no response from device" message and tries to read the PCI_EXP_SLTSTA
register, even though we know that will fail.

Ignore interrupts while we're in D3cold.

[bhelgaas: changelog]
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Lukas Wunner 9 年之前
父節點
當前提交
ed91de7e14
共有 1 個文件被更改,包括 4 次插入0 次删除
  1. 4 0
      drivers/pci/hotplug/pciehp_hpc.c

+ 4 - 0
drivers/pci/hotplug/pciehp_hpc.c

@@ -546,6 +546,10 @@ static irqreturn_t pcie_isr(int irq, void *dev_id)
 	u8 present;
 	u8 present;
 	bool link;
 	bool link;
 
 
+	/* Interrupts cannot originate from a controller that's asleep */
+	if (pdev->current_state == PCI_D3cold)
+		return IRQ_NONE;
+
 	/*
 	/*
 	 * In order to guarantee that all interrupt events are
 	 * In order to guarantee that all interrupt events are
 	 * serviced, we need to re-inspect Slot Status register after
 	 * serviced, we need to re-inspect Slot Status register after