Hi Mathias, Thanks for suggestion. The reason I do not use xhci_handshake() is we get build fail when configuring below as module: USB_XHCI_HCD = m USB_XHCI_PCI = m Fail message as below: ERROR: "xhci_handshake" [drivers/usb/host/xhci-pci.ko] undefined! So I write my own function to check CNR. Thanks, Rick -- nvpublic 寄件者: Mathias Nyman <mathias.nyman@xxxxxxxxxxxxxxx> 寄件日期: 2019年8月13日 上午 03:39 收件者: Oliver Neukum <oneukum@xxxxxxxx>; Rick Tseng <rtseng@xxxxxxxxxx>; mathias.nyman@xxxxxxxxx <mathias.nyman@xxxxxxxxx>; gregkh@xxxxxxxxxxxxxxxxxxx <gregkh@xxxxxxxxxxxxxxxxxxx> 副本: linux-usb@xxxxxxxxxxxxxxx <linux-usb@xxxxxxxxxxxxxxx> 主旨: Re: [PATCH] xhci: wait CNR when doing xhci resume On 12.8.2019 11.19, Oliver Neukum wrote: > Am Montag, den 12.08.2019, 15:24 +0800 schrieb Rick Tseng: >> From: Rick <rtseng@xxxxxxxxxx> >> >> NVIDIA 3.1 xHCI card would lose power when moving power state into D3Cold. >> Thus we need to wait CNR bit to clear when xhci resmue as xhci init. > > Should any controller have CNR set? Why is this specific to a vendor? > Good point, always checking CNR in resume sounds like a good idea. And use xhci_handshake() as Felipe pointed out, just like in xhci_reset(): ret = xhci_handshake(&xhci->op_regs->status, STS_CNR, 0, 10 * 1000 * 1000); Rick, would you like to write a patch for this? -Mathias