On Fri, May 30, 2014 at 3:28 PM, Yinghai Lu <yinghai@xxxxxxxxxx> wrote: > On Tue, May 20, 2014 at 1:53 PM, Bjorn Helgaas <bhelgaas@xxxxxxxxxx> wrote: >> I don't understand this change. Why do you test "slot_status & >> PCI_EXP_SLTSTA_CC" here? Did you mean to write this: >> >> if (!ctrl->no_cmd_complete && !(slot_status & PCI_EXP_SLTSTA_CC) && ... >> >> instead? I think we want to wait if (1) the controller generates Command >> Complete events and (2) Slot Status indicates that a command is still in >> progress. > > Yes. your logic is right for those real hotplug event, that means > CC is not set, and isr is not called to clear cmd_busy. > > but it will wait for real or non-real cmd right after non-real hotplug cmd. > > looks like we need to start one timer for non-real hotplug to clear cmd_busy? That looks make it too complicated. I would revert back to first way change to only wait when (EIC, PCC, PIC, AIC) bits get changed. and add one flag in ctrl to see if need to apply the rule. Thanks Yinghai -- 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