> > err_exit: > > + if (ctrl->slot_retries++ < DEVICE_ADD_RETRIES) { > > + ctrl_dbg(ctrl, "Retrying (%d/%d) device add at %04x:%02x:00\n", > > + ctrl->slot_retries, DEVICE_ADD_RETRIES, > > + pci_domain_nr(parent), parent->number); > > + pciehp_queue_power_work(p_slot, ENABLE_RETRY_REQ); > > + return retval; > > + } > > Does the retry need to be requeued instead of just doing this in a loop? The requeue gives a little bit more time and performs the actions in pciehp_enable_slot in case something has changed. We could push the loop to within pciehp_enable_slot, but that could cause us to potentially miss DISABLE_REQ events. .. That brings up the question about racing with DISBALE_REQ. If a power controller is implemented, a DISABLE_REQ request will disable the slot, which could then be reenabled by the ENABLE_RETRY_REQ path. Would disabling and reenabling the slot's power just cause the same faults over and over again? I'm not so sure. -- 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