Hi Bjorn / list, I think there are two independent problems that need to be addressed. Problem #1: In any condition where (e.g. spurious interrupt) once the execution reaches inside the if condition below, the PCI_EXP_SLTSTA_CC bit is already set, and needs to be cleared. This does not happen today and hence this patch was aimed at solving that. Please note that this will not cause any problems to the systems that were fixed by 5808639bfa98, because this is equally applicable to any case. >>> >>> drivers/pci/hotplug/pciehp_hpc.c | 1 + >>> 1 file changed, 1 insertion(+) >>> >>> diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c >>> index 5b8d749..ba8e06f 100644 >>> --- a/drivers/pci/hotplug/pciehp_hpc.c >>> +++ b/drivers/pci/hotplug/pciehp_hpc.c >>> @@ -185,6 +185,7 @@ static int pcie_write_cmd(struct controller *ctrl, u16 cmd, u16 mask) >>> } >>> >>> if (slot_status & PCI_EXP_SLTSTA_CC) { >>> + pciehp_writew(ctrl, PCI_EXP_SLTSTA, PCI_EXP_SLTSTA_CC); >>> if (!ctrl->no_cmd_complete) { >>> /* >>> * After 1 sec and CMD_COMPLETED still not set, just >>> -- >>> 1.7.9.5 >>> Problem #2: Looks like we have now 2 classes of systems: a) The 5808639bfa98 was addressed towards systems that advertise the "Command completion notification" capability, but do not notify of command completion in case MRL, Power Ctrl, Attn LED and Pwr LED bits are not written in SLOT_CTRL register (not implemented in capabilities). Thus no command completion shall be generated for pcie_disable_notifications() for e.g. b) I have a system that where none of the above described HP elements are present implemented, but the controller supports command completion, and sends it out for every write of the slot control register. Thus notification for command complete is generated for pcie_disable_notifiction(). I don't believe there is a way to differentiate between these 2 classes of systems at init time, unless we try to generate a notification and do or do not get one. The PCIe specification section 7.8.10 seems to lean towards category (b) of systems, but today this class of systems shall get penalized by delay of 1 second (per controller) during probe. I can try and address that, but admittedly I could not think of a better solution than moving this code from pcie_init() to pcie_write_cmd(). > if (NO_CMD_CMPL(ctrl) || > !(POWER_CTRL(ctrl) | ATTN_LED(ctrl) | PWR_LED(ctrl) | EMI(ctrl))) > ctrl->no_cmd_complete = 1; Please advise. Also, I'd appreciate if you could please let me know if there are any comments on the patch for problem #1 above. Thanks, Rajat -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html