On 5/23/23 7:33 PM, Greg KH wrote: >>> During XHCI resume, if there was a host controller error detected the >>> routine will attempt to re-initialize the XHCI HC, so that it can return >>> back to an operational state. If the XHCI host controller is being >>> removed, this sequence would be already handled within the XHCI halt path, >>> leading to a duplicate set of reg ops/calls. In addition, since the XHCI >>> bus is being removed, the overhead added in restarting the HCD is >>> unnecessary. Check for the XHC state before setting the reinit_xhc >>> parameter, which is responsible for triggering the restart. >>> >>> Signed-off-by: Wesley Cheng <quic_wcheng@xxxxxxxxxxx> >>> --- >>> drivers/usb/host/xhci.c | 3 ++- >>> 1 file changed, 2 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c >>> index b81313ffeb76..2017ed3ae4a7 100644 >>> --- a/drivers/usb/host/xhci.c >>> +++ b/drivers/usb/host/xhci.c >>> @@ -1028,7 +1028,8 @@ int xhci_resume(struct xhci_hcd *xhci, pm_message_t msg) >>> temp = readl(&xhci->op_regs->status); >>> >>> /* re-initialize the HC on Restore Error, or Host Controller Error */ >>> - if (temp & (STS_SRE | STS_HCE)) { >>> + if ((temp & (STS_SRE | STS_HCE)) && >>> + !(xhci->xhc_state & XHCI_STATE_REMOVING)) { >> >> Please add one more tab here in order not to blend it with the following lines. > > Ick, no, please do not do that, it needs to move left instead. Don't we usually use 2 tabs to indent the continuation lines in the USB code? > greg k-h MBR, Sergey