xhci: Don't defer primary roothub registration if there is only one roothub
authorMathias Nyman <mathias.nyman@linux.intel.com>
Mon, 16 May 2022 09:48:50 +0000 (12:48 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 May 2022 16:10:16 +0000 (18:10 +0200)
The support for xHCI controllers with only one roothub, and the code
to defer primary roothub registation until second roothub got merged
to usb-next for 5.19 at the same time.

commit 873f323618c2 ("xhci: prepare for operation w/o shared hcd")
commit b7a4f9b5d0e4 ("xhci: Set HCD flag to defer primary roothub
registration")

These got merged in such a way that the flag to defer primary roothub
registration is set even for xHC controllers with just one roothub.

Fix this by setting the defer flag in a codepath taken only if we have
two roothubs

Fixes: 873f323618c2 ("xhci: prepare for operation w/o shared hcd")
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20220516094850.19788-2-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci.c

index d957eac..f0ab631 100644 (file)
@@ -696,8 +696,6 @@ int xhci_run(struct usb_hcd *hcd)
        xhci_dbg_trace(xhci, trace_xhci_dbg_init,
                        "Finished %s for main hcd", __func__);
 
-       set_bit(HCD_FLAG_DEFER_RH_REGISTER, &hcd->flags);
-
        xhci_create_dbc_dev(xhci);
 
        xhci_debugfs_init(xhci);
@@ -705,6 +703,8 @@ int xhci_run(struct usb_hcd *hcd)
        if (xhci_has_one_roothub(xhci))
                return xhci_run_finished(xhci);
 
+       set_bit(HCD_FLAG_DEFER_RH_REGISTER, &hcd->flags);
+
        return 0;
 }
 EXPORT_SYMBOL_GPL(xhci_run);