Message ID | 1467252398-14973-1-git-send-email-hui.wang@canonical.com |
---|---|
State | New |
Headers | show |
On Thu, Jun 30, 2016 at 10:06:38AM +0800, Hui Wang wrote: > From: "Lu, Baolu" <baolu.lu@linux.intel.com> > > BugLink: http://bugs.launchpad.net/bugs/1597564 > > Module xhci-pci and xhci-plat-hcd depend on xhci-hcd. Module xhci-hcd > should be put at a place before xhci-pci and xhci-plat-hcd. Otherwise, > xhci_hcd_init() might be executed after other functions in xhci-hcd if > they are all selected to be built in. > > Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> > Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > (cherry picked from commit 8451a34ff6c7c756e9e0f0094a3ba856c9734e5d) > Signed-off-by: Hui Wang <hui.wang@canonical.com> > --- > This patch is only needed by vivid kernel, the xenial kernel already > had this patch. Applied to Vivid. Thanks Hui. -Kamal > > With this patch, the ECHI host controller will be registerd to > USB host bus1 and XHCI host controllers will be registered to > USB host bus2 and bus3, when reboot or shutdown, the system will > call XHCI_shutdown() first, in this situation the system will not > hang. > > Without this patch, the XHCI will be registered to USB host bus1 and > bus2, the EHCI will be registered to USB host bus3, when reboot or > shutdown, the system will call EHCI_shutdown() first, the system will > hang inside the EHCI_shutdown(). > > According to the explanation of Intel side, this problem has something > to do with port switching between EHCI and xHCI controller, before EHCI > and XHCI drivers are loaded, the USB pci code will switch over ports > from EHCI to XHCI if possible at boot, so the port belongs to XHCI now, > if EHCI_shutdown() is called first, it will try to turn off a port that > does not belong to it, then the system hang. If XHCI_shutdown() is called > first, it will give back the port to EHCI, then EHCI_shutdown() will not > hang. > > drivers/usb/host/Makefile | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile > index d6216a4..bd9a828 100644 > --- a/drivers/usb/host/Makefile > +++ b/drivers/usb/host/Makefile > @@ -28,9 +28,6 @@ obj-$(CONFIG_USB_WHCI_HCD) += whci/ > > obj-$(CONFIG_PCI) += pci-quirks.o > > -obj-$(CONFIG_USB_XHCI_PCI) += xhci-pci.o > -obj-$(CONFIG_USB_XHCI_PLATFORM) += xhci-plat-hcd.o > - > obj-$(CONFIG_USB_EHCI_HCD) += ehci-hcd.o > obj-$(CONFIG_USB_EHCI_PCI) += ehci-pci.o > obj-$(CONFIG_USB_EHCI_HCD_PLATFORM) += ehci-platform.o > @@ -65,6 +62,8 @@ obj-$(CONFIG_USB_OHCI_HCD_PXA27X) += ohci-pxa27x.o > obj-$(CONFIG_USB_UHCI_HCD) += uhci-hcd.o > obj-$(CONFIG_USB_FHCI_HCD) += fhci.o > obj-$(CONFIG_USB_XHCI_HCD) += xhci-hcd.o > +obj-$(CONFIG_USB_XHCI_PCI) += xhci-pci.o > +obj-$(CONFIG_USB_XHCI_PLATFORM) += xhci-plat-hcd.o > obj-$(CONFIG_USB_SL811_HCD) += sl811-hcd.o > obj-$(CONFIG_USB_SL811_CS) += sl811_cs.o > obj-$(CONFIG_USB_U132_HCD) += u132-hcd.o > -- > 1.9.1 > > > -- > kernel-team mailing list > kernel-team@lists.ubuntu.com > https://lists.ubuntu.com/mailman/listinfo/kernel-team
diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile index d6216a4..bd9a828 100644 --- a/drivers/usb/host/Makefile +++ b/drivers/usb/host/Makefile @@ -28,9 +28,6 @@ obj-$(CONFIG_USB_WHCI_HCD) += whci/ obj-$(CONFIG_PCI) += pci-quirks.o -obj-$(CONFIG_USB_XHCI_PCI) += xhci-pci.o -obj-$(CONFIG_USB_XHCI_PLATFORM) += xhci-plat-hcd.o - obj-$(CONFIG_USB_EHCI_HCD) += ehci-hcd.o obj-$(CONFIG_USB_EHCI_PCI) += ehci-pci.o obj-$(CONFIG_USB_EHCI_HCD_PLATFORM) += ehci-platform.o @@ -65,6 +62,8 @@ obj-$(CONFIG_USB_OHCI_HCD_PXA27X) += ohci-pxa27x.o obj-$(CONFIG_USB_UHCI_HCD) += uhci-hcd.o obj-$(CONFIG_USB_FHCI_HCD) += fhci.o obj-$(CONFIG_USB_XHCI_HCD) += xhci-hcd.o +obj-$(CONFIG_USB_XHCI_PCI) += xhci-pci.o +obj-$(CONFIG_USB_XHCI_PLATFORM) += xhci-plat-hcd.o obj-$(CONFIG_USB_SL811_HCD) += sl811-hcd.o obj-$(CONFIG_USB_SL811_CS) += sl811_cs.o obj-$(CONFIG_USB_U132_HCD) += u132-hcd.o