Hello! On 5/23/23 4:53 AM, Wesley Cheng 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. > reinit_xhc = true; > if (!xhci->broken_suspend) > xhci_warn(xhci, "xHC error in resume, USBSTS 0x%x, Reinit\n", temp); MBR, Sergey