pciehp: Acknowledge the spurious "cmd completed" event.
PATCH 1/1 pciehp: Acknowledge the spurious "cmd completed" event.
In case of a spurious "cmd completed", pcie_write_cmd() does not clear it, but yet expects more "cmd completed" events to be generated. This does not happen because the previous (spurious) event has not been acknowledged. Fix that.
Signed-off-by Rajat Jain <[email protected]>
Signed-off-by Rajat Jain <[email protected]>
Signed-off-by Guenter Roeck <[email protected]>
--- drivers/pci/hotplug/pciehp_hpc.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/pci/hotplug/pciehp_hpc.c +2 -0
@@ -159,6 +159,8 @@ static void pcie_write_cmd(struct controller *ctrl, u16 cmd, u16 mask)pcie_capability_read_word (pdev,PCI_EXP_SLTSTA , &slot_status);if (slot_status &PCI_EXP_SLTSTA_CC ) { +pcie_capability_write_word (pdev,PCI_EXP_SLTSTA , +PCI_EXP_SLTSTA_CC );if (!ctrl->no_cmd_complete) {/* * After 1 sec and CMD_COMPLETED still not set, just
Signature · 1 line
1.7.9.5
Quoted 8 lines · Rajat Jain
In case of a spurious "cmd completed",
pcie_write_cmd()does not clear it, but yet expects more "cmd completed" events to be generated. This does not happen because the previous (spurious) event has not been acknowledged. Fix that.Signed-off-by Rajat Jain <[email protected]>Signed-off-by Rajat Jain <[email protected]>Signed-off-by Guenter Roeck <[email protected]>
Applied to pci/hotplug for v3.16, thanks!
Quoted 20 lines
--- drivers/pci/hotplug/pciehp_hpc.c | 2 ++ 1 file changed, 2 insertions(+)drivers/pci/hotplug/pciehp_hpc.c +2
-0@@ -159,6 +159,8 @@ static void pcie_write_cmd(struct controller *ctrl, u16 cmd, u16 mask)pcie_capability_read_word (pdev,PCI_EXP_SLTSTA , &slot_status);if (slot_status &PCI_EXP_SLTSTA_CC ) { +pcie_capability_write_word (pdev,PCI_EXP_SLTSTA , +PCI_EXP_SLTSTA_CC );if (!ctrl->no_cmd_complete) {/* * After 1 sec and CMD_COMPLETED still not set, just Signature · 1 line
1.7.9.5