On 3/17/22 23:05, qianfan wrote: [ ... ]
So I think it's a bug of MUSB, not caused by dev_WARN_ONCE. But I can't check which stop hrtimer.
Correct. Look at the code: static void musb_h_tx_flush_fifo(struct musb_hw_ep *ep) { ... int retries = 1000; ... while (csr & MUSB_TXCSR_FIFONOTEMPTY) { ... if (dev_WARN_ONCE(musb->controller, retries-- < 1, "Could not flush host TX%d fifo: csr: %04x\n", ep->epnum, csr)) return; mdelay(1); } This is where the one second comes from. The function is called from musb_urb_dequeue() which disables interrupts. This forces a hard stall of the kernel for a full second. There is nothing we can do about that in the watchdog driver. Guenter