linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] PCI: pciehp: clear cmd_busy bit when Command Completed in polling mode
@ 2021-11-11  5:42 Liguang Zhang
  2021-11-18 11:00 ` luanshi
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Liguang Zhang @ 2021-11-11  5:42 UTC (permalink / raw)
  To: Bjorn Helgaas, Lukas Wunner, Kuppuswamy Sathyanarayanan, Amey Narkhede
  Cc: linux-pci, linux-kernel, Liguang Zhang

This patch fixes this problem that on driver probe from system startup,
pciehp checks the Presence Detect State bit in the Slot Status register
to bring up an occupied slot or bring down an unoccupied slot. If empty
slot's power status is on, turn power off. The Hot-Plug interrupt isn't
requested yet, so avoid triggering a notification by calling
pcie_disable_notification().

Both the CCIE and HPIE bits are masked in pcie_disable_notification(),
when we issue a hotplug command, pcie_wait_cmd() will polling the
Command Completed bit instead of waiting for an interrupt. But cmd_busy
bit was not cleared when Command Completed which results in timeouts
like this in pciehp_power_off_slot() and pcie_init_notification():

  pcieport 0000:00:03.0: pciehp: Timeout on hotplug command 0x01c0
(issued 2264 msec ago)
  pcieport 0000:00:03.0: pciehp: Timeout on hotplug command 0x05c0
(issued 2288 msec ago)

Signed-off-by: Liguang Zhang <zhangliguang@linux.alibaba.com>
---
 drivers/pci/hotplug/pciehp_hpc.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c
index 83a0fa119cae..8698aefc6041 100644
--- a/drivers/pci/hotplug/pciehp_hpc.c
+++ b/drivers/pci/hotplug/pciehp_hpc.c
@@ -98,6 +98,8 @@ static int pcie_poll_cmd(struct controller *ctrl, int timeout)
 		if (slot_status & PCI_EXP_SLTSTA_CC) {
 			pcie_capability_write_word(pdev, PCI_EXP_SLTSTA,
 						   PCI_EXP_SLTSTA_CC);
+			ctrl->cmd_busy = 0;
+			smp_mb();
 			return 1;
 		}
 		msleep(10);
-- 
2.19.1.6.gb485710b


^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2022-02-03 20:42 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-11  5:42 [PATCH] PCI: pciehp: clear cmd_busy bit when Command Completed in polling mode Liguang Zhang
2021-11-18 11:00 ` luanshi
2021-11-19 12:00 ` Lukas Wunner
2021-11-21  1:50   ` luanshi
2021-11-21  6:35     ` Lukas Wunner
2021-11-26  7:47       ` luanshi
2021-11-26 17:33 ` Lukas Wunner
2021-11-26 17:35   ` Lukas Wunner
2022-01-06  8:55   ` luanshi
2022-02-03 19:07   ` Lukas Wunner
2022-02-03 20:38     ` Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).