On Tue, May 23, 2023 at 11:45:27AM +0300, Sergey Shtylyov wrote: > 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. Ick, no, please do not do that, it needs to move left instead. greg k-h