Hi Ingo, On 01/26/2017 03:22 PM, Ingo Molnar wrote: > * Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx> wrote: > >> Hi, >> >> On 01/25/2017 10:38 PM, Peter Zijlstra wrote: >>> On Wed, Jan 25, 2017 at 08:27:38PM +0800, Lu Baolu wrote: >>>> In my driver, udelay() is mostly used to handle time out. >>>> >>>> Xdbc hides most USB things in its firmware. Early printk driver only needs >>>> to setup the registers/data structures and wait until link ready or time out. >>>> Without udelay(), I have no means to convert the polling times into waiting >>>> time. >>> What is timeout and why? >> Put it in simple: >> >> The driver sets the RUN bit in control register and polls READY >> bit in status register for the successful USB device enumeration. >> As the USB device enumeration might fail and the READY bit will >> never be set, the driver must have a timeout logic to avoid >> endless loop. > Is there any error status available in the host registers anywhere that tells us > that enumeration did not succeed? No, there isn't. The xhci spec requires software to impose a timeout. Page 425, xhci specification: " Software shall impose a timeout between the detection of the Debug Host connection and the DbC Run transition to ‘1’. " Best regards, Lu Baolu -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html