* [PATCH] xhci: EHCI/xHCI ports switching on Intense-PC. @ 2012-07-16 16:46 Denis Turischev 2012-07-17 4:54 ` Sarah Sharp 2012-07-17 12:20 ` [PATCH] xhci: EHCI/xHCI ports switching on Intense-PC Sergei Shtylyov 0 siblings, 2 replies; 21+ messages in thread From: Denis Turischev @ 2012-07-16 16:46 UTC (permalink / raw) To: Sarah Sharp; +Cc: linux-kernel, linux-usb, Greg Kroah-Hartman Intense-PC is Compulab's mini-desktop with Intel Panther Point chipset. Unconditional ports switching provided by function usb_enable_xhci_ports() leads to surprising results, after shutdown system powered-on again after a few seconds. On Windows power related problems were not observed. The patch avoids ports switching for Intense-PC. Signed-off-by: Denis Turischev <denis@compulab.co.il> --- drivers/usb/host/pci-quirks.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c index df0828c..6f72593 100644 --- a/drivers/usb/host/pci-quirks.c +++ b/drivers/usb/host/pci-quirks.c @@ -759,6 +759,13 @@ void usb_enable_xhci_ports(struct pci_dev *xhci_pdev) { u32 ports_available; + const char *brd_name; + brd_name = dmi_get_system_info(DMI_BOARD_NAME); + + /* quirk for Compulab's Intense-PC board */ + if (brd_name && strstr(brd_name, "Intense-PC")) + return; + /* Don't switchover the ports if the user hasn't compiled the xHCI * driver. Otherwise they will see "dead" USB ports that don't power * the devices. -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH] xhci: EHCI/xHCI ports switching on Intense-PC. 2012-07-16 16:46 [PATCH] xhci: EHCI/xHCI ports switching on Intense-PC Denis Turischev @ 2012-07-17 4:54 ` Sarah Sharp 2012-07-18 6:57 ` Denis Turischev 2012-07-17 12:20 ` [PATCH] xhci: EHCI/xHCI ports switching on Intense-PC Sergei Shtylyov 1 sibling, 1 reply; 21+ messages in thread From: Sarah Sharp @ 2012-07-17 4:54 UTC (permalink / raw) To: Denis Turischev; +Cc: linux-kernel, linux-usb, Greg Kroah-Hartman On Mon, Jul 16, 2012 at 07:46:06PM +0300, Denis Turischev wrote: > Intense-PC is Compulab's mini-desktop with Intel Panther Point > chipset. > > Unconditional ports switching provided by function > usb_enable_xhci_ports() leads to surprising results, after shutdown > system powered-on again after a few seconds. On Windows power > related problems were not observed. Do you have wake on lan enabled in the BIOS? I have heard reports from other users that this is a BIOS bug triggered by WOL. > The patch avoids ports switching for Intense-PC. > > Signed-off-by: Denis Turischev <denis@compulab.co.il> > --- > drivers/usb/host/pci-quirks.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c > index df0828c..6f72593 100644 > --- a/drivers/usb/host/pci-quirks.c > +++ b/drivers/usb/host/pci-quirks.c > @@ -759,6 +759,13 @@ void usb_enable_xhci_ports(struct pci_dev *xhci_pdev) > { > u32 ports_available; > > + const char *brd_name; > + brd_name = dmi_get_system_info(DMI_BOARD_NAME); > + > + /* quirk for Compulab's Intense-PC board */ > + if (brd_name && strstr(brd_name, "Intense-PC")) > + return; > + No, this fix is not acceptable. You won't get USB 3.0 speeds if the ports are not switched over. Now, we can add a quirk to the xHCI shutdown function to switch the ports back to EHCI on shutdown. That might not trigger the BIOS bug. Sarah Sharp ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] xhci: EHCI/xHCI ports switching on Intense-PC. 2012-07-17 4:54 ` Sarah Sharp @ 2012-07-18 6:57 ` Denis Turischev 2012-07-18 16:59 ` Sarah Sharp 0 siblings, 1 reply; 21+ messages in thread From: Denis Turischev @ 2012-07-18 6:57 UTC (permalink / raw) To: Sarah Sharp; +Cc: linux-kernel, linux-usb, Greg Kroah-Hartman On 07/17/2012 07:54 AM, Sarah Sharp wrote: > On Mon, Jul 16, 2012 at 07:46:06PM +0300, Denis Turischev wrote: >> Intense-PC is Compulab's mini-desktop with Intel Panther Point >> chipset. >> >> Unconditional ports switching provided by function >> usb_enable_xhci_ports() leads to surprising results, after shutdown >> system powered-on again after a few seconds. On Windows power >> related problems were not observed. > > Do you have wake on lan enabled in the BIOS? I have heard reports from > other users that this is a BIOS bug triggered by WOL. Bug appears with WOL disabled too, moreover, it appears with PCH LAN disabled at all in the BIOS. > >> The patch avoids ports switching for Intense-PC. >> >> Signed-off-by: Denis Turischev <denis@compulab.co.il> >> --- >> drivers/usb/host/pci-quirks.c | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c >> index df0828c..6f72593 100644 >> --- a/drivers/usb/host/pci-quirks.c >> +++ b/drivers/usb/host/pci-quirks.c >> @@ -759,6 +759,13 @@ void usb_enable_xhci_ports(struct pci_dev *xhci_pdev) >> { >> u32 ports_available; >> >> + const char *brd_name; >> + brd_name = dmi_get_system_info(DMI_BOARD_NAME); >> + >> + /* quirk for Compulab's Intense-PC board */ >> + if (brd_name && strstr(brd_name, "Intense-PC")) >> + return; >> + > > No, this fix is not acceptable. You won't get USB 3.0 speeds if the > ports are not switched over. Now, we can add a quirk to the xHCI > shutdown function to switch the ports back to EHCI on shutdown. That > might not trigger the BIOS bug. Yes, switching back to EHCI in xhci_shutdown() solves the problem. I suppose to do something like this in xhci_shutdown: pdev = to_pci_dev(hcd->self.controller); if (usb_is_intel_switchable_xhci(pdev)){ brd_name = dmi_get_system_info(DMI_BOARD_NAME); /* quirk for Compulab's Intense-PC board */ if (brd_name && strstr(brd_name, "Intense-PC")) usb_disable_xhci_ports(pdev); } Is it ok? May be it worth to disable xhci ports for all intel switchable devices, not only for Intense-PC? ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] xhci: EHCI/xHCI ports switching on Intense-PC. 2012-07-18 6:57 ` Denis Turischev @ 2012-07-18 16:59 ` Sarah Sharp 2012-07-23 11:46 ` [PATCH 1/2] xhci: provide usb_disable_xhci_ports function for Intel chipsets Denis Turischev 2012-07-23 11:46 ` [PATCH 2/2] xhci: EHCI/XHCI ports switching on Intense-PC Denis Turischev 0 siblings, 2 replies; 21+ messages in thread From: Sarah Sharp @ 2012-07-18 16:59 UTC (permalink / raw) To: Denis Turischev; +Cc: linux-kernel, linux-usb, Greg Kroah-Hartman On Wed, Jul 18, 2012 at 09:57:30AM +0300, Denis Turischev wrote: > On 07/17/2012 07:54 AM, Sarah Sharp wrote: > > On Mon, Jul 16, 2012 at 07:46:06PM +0300, Denis Turischev wrote: > >> Intense-PC is Compulab's mini-desktop with Intel Panther Point > >> chipset. > >> > >> Unconditional ports switching provided by function > >> usb_enable_xhci_ports() leads to surprising results, after shutdown > >> system powered-on again after a few seconds. On Windows power > >> related problems were not observed. > > > > Do you have wake on lan enabled in the BIOS? I have heard reports from > > other users that this is a BIOS bug triggered by WOL. > > Bug appears with WOL disabled too, moreover, it appears with PCH LAN > disabled at all in the BIOS. Hmm, ok, not the same bug then. > > No, this fix is not acceptable. You won't get USB 3.0 speeds if the > > ports are not switched over. Now, we can add a quirk to the xHCI > > shutdown function to switch the ports back to EHCI on shutdown. That > > might not trigger the BIOS bug. > > Yes, switching back to EHCI in xhci_shutdown() solves the problem. Ok, good to know. The other thing to try would be to turn off all "wake on" bits in the port status registers in xhci_shutdown(). That might cause the xHCI host to stop generating spurious PMEs. It would actually be good to check that the xHCI host is the cause of the PME that reboots the system. I'm pretty sure there's a sysfs or proc file that shows where the PMEs are coming from, but I can't remember where it is off the top of my head. > I suppose to do something like this in xhci_shutdown: > pdev = to_pci_dev(hcd->self.controller); > > if (usb_is_intel_switchable_xhci(pdev)){ > brd_name = dmi_get_system_info(DMI_BOARD_NAME); > > /* quirk for Compulab's Intense-PC board */ > if (brd_name && strstr(brd_name, "Intense-PC")) > usb_disable_xhci_ports(pdev); > } > > Is it ok? > > May be it worth to disable xhci ports for all intel switchable > devices, not only for Intense-PC? I'm not sure. I'm still talking with our hardware and BIOS team to determine which boards have this issue. I suspect it's more than just your board. The only thing I wonder is if the PCI quirks will run when the xHCI driver is reloaded. If not, the ports will never be switched back to xHCI. We might need to add a port switch back to xHCI in the xhci_init function. That means if someone unloads the xHCI driver and reloads it, their devices will appear under EHCI, and then disconnect and switch over to xHCI. However, I suppose that's the same as what happens if you unload the EHCI driver on a system with an OHCI or UHCI companion controller. So I think it should be OK to attempt to switchover the ports in xhci_init. Sarah Sharp ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 1/2] xhci: provide usb_disable_xhci_ports function for Intel chipsets. 2012-07-18 16:59 ` Sarah Sharp @ 2012-07-23 11:46 ` Denis Turischev 2012-07-23 14:45 ` Sergei Shtylyov 2012-07-23 11:46 ` [PATCH 2/2] xhci: EHCI/XHCI ports switching on Intense-PC Denis Turischev 1 sibling, 1 reply; 21+ messages in thread From: Denis Turischev @ 2012-07-23 11:46 UTC (permalink / raw) To: Sarah Sharp; +Cc: linux-kernel, linux-usb, Greg Kroah-Hartman Some devices with Intel Panther Point chipset may require switchover usb ports from XHCI back to EHCI controller before shutdown. Overwise various BIOS bugs related to power management may be triggered. Signed-off-by: Denis Turischev <denis@compulab.co.il> --- drivers/usb/host/pci-quirks.c | 14 ++++++++++++++ drivers/usb/host/pci-quirks.h | 1 + 2 files changed, 15 insertions(+) diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c index df0828c..b19a84a 100644 --- a/drivers/usb/host/pci-quirks.c +++ b/drivers/usb/host/pci-quirks.c @@ -800,6 +800,20 @@ void usb_enable_xhci_ports(struct pci_dev *xhci_pdev) } EXPORT_SYMBOL_GPL(usb_enable_xhci_ports); +void usb_disable_xhci_ports(struct pci_dev *xhci_pdev) +{ + u32 ports_available; + + ports_available = 0x0; + + pci_write_config_dword(xhci_pdev, USB_INTEL_USB3_PSSEN, + cpu_to_le32(ports_available)); + + pci_write_config_dword(xhci_pdev, USB_INTEL_XUSB2PR, + cpu_to_le32(ports_available)); +} +EXPORT_SYMBOL_GPL(usb_disable_xhci_ports); + /** * PCI Quirks for xHCI. * diff --git a/drivers/usb/host/pci-quirks.h b/drivers/usb/host/pci-quirks.h index b1002a8..ef004a5 100644 --- a/drivers/usb/host/pci-quirks.h +++ b/drivers/usb/host/pci-quirks.h @@ -10,6 +10,7 @@ void usb_amd_quirk_pll_disable(void); void usb_amd_quirk_pll_enable(void); bool usb_is_intel_switchable_xhci(struct pci_dev *pdev); void usb_enable_xhci_ports(struct pci_dev *xhci_pdev); +void usb_disable_xhci_ports(struct pci_dev *xhci_pdev); #else static inline void usb_amd_quirk_pll_disable(void) {} static inline void usb_amd_quirk_pll_enable(void) {} -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH 1/2] xhci: provide usb_disable_xhci_ports function for Intel chipsets. 2012-07-23 11:46 ` [PATCH 1/2] xhci: provide usb_disable_xhci_ports function for Intel chipsets Denis Turischev @ 2012-07-23 14:45 ` Sergei Shtylyov 2012-07-23 15:59 ` [PATCH 1/2 v2] " Denis Turischev 0 siblings, 1 reply; 21+ messages in thread From: Sergei Shtylyov @ 2012-07-23 14:45 UTC (permalink / raw) To: Denis Turischev; +Cc: Sarah Sharp, linux-kernel, linux-usb, Greg Kroah-Hartman Hello. On 07/23/2012 03:46 PM, Denis Turischev wrote: > Some devices with Intel Panther Point chipset may require switchover > usb ports from XHCI back to EHCI controller before shutdown. > Overwise various BIOS bugs related to power management may be > triggered. > Signed-off-by: Denis Turischev <denis@compulab.co.il> > --- > drivers/usb/host/pci-quirks.c | 14 ++++++++++++++ > drivers/usb/host/pci-quirks.h | 1 + > 2 files changed, 15 insertions(+) > diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c > index df0828c..b19a84a 100644 > --- a/drivers/usb/host/pci-quirks.c > +++ b/drivers/usb/host/pci-quirks.c > @@ -800,6 +800,20 @@ void usb_enable_xhci_ports(struct pci_dev *xhci_pdev) > } > EXPORT_SYMBOL_GPL(usb_enable_xhci_ports); > > +void usb_disable_xhci_ports(struct pci_dev *xhci_pdev) > +{ > + u32 ports_available; > + > + ports_available = 0x0; Why not make it an initializer? And why do you need the variable at all? > + > + pci_write_config_dword(xhci_pdev, USB_INTEL_USB3_PSSEN, > + cpu_to_le32(ports_available)); cpu_to_le32() not needed. > + > + pci_write_config_dword(xhci_pdev, USB_INTEL_XUSB2PR, > + cpu_to_le32(ports_available)); > +} > +EXPORT_SYMBOL_GPL(usb_disable_xhci_ports); > + > /** > * PCI Quirks for xHCI. > * WBR, Sergei ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 1/2 v2] xhci: provide usb_disable_xhci_ports function for Intel chipsets. 2012-07-23 14:45 ` Sergei Shtylyov @ 2012-07-23 15:59 ` Denis Turischev 0 siblings, 0 replies; 21+ messages in thread From: Denis Turischev @ 2012-07-23 15:59 UTC (permalink / raw) To: Sergei Shtylyov; +Cc: Sarah Sharp, linux-kernel, linux-usb, Greg Kroah-Hartman Some devices with Intel Panther Point chipset may require switchover usb ports from XHCI back to EHCI controller before shutdown. Otherwise various BIOS bugs related to power management may be triggered. v2: deleted unnecessary variables. Signed-off-by: Denis Turischev <denis@compulab.co.il> --- drivers/usb/host/pci-quirks.c | 7 +++++++ drivers/usb/host/pci-quirks.h | 1 + 2 files changed, 8 insertions(+) diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c index df0828c..c5e9e4a 100644 --- a/drivers/usb/host/pci-quirks.c +++ b/drivers/usb/host/pci-quirks.c @@ -800,6 +800,13 @@ void usb_enable_xhci_ports(struct pci_dev *xhci_pdev) } EXPORT_SYMBOL_GPL(usb_enable_xhci_ports); +void usb_disable_xhci_ports(struct pci_dev *xhci_pdev) +{ + pci_write_config_dword(xhci_pdev, USB_INTEL_USB3_PSSEN, 0x0); + pci_write_config_dword(xhci_pdev, USB_INTEL_XUSB2PR, 0x0); +} +EXPORT_SYMBOL_GPL(usb_disable_xhci_ports); + /** * PCI Quirks for xHCI. * diff --git a/drivers/usb/host/pci-quirks.h b/drivers/usb/host/pci-quirks.h index b1002a8..ef004a5 100644 --- a/drivers/usb/host/pci-quirks.h +++ b/drivers/usb/host/pci-quirks.h @@ -10,6 +10,7 @@ void usb_amd_quirk_pll_disable(void); void usb_amd_quirk_pll_enable(void); bool usb_is_intel_switchable_xhci(struct pci_dev *pdev); void usb_enable_xhci_ports(struct pci_dev *xhci_pdev); +void usb_disable_xhci_ports(struct pci_dev *xhci_pdev); #else static inline void usb_amd_quirk_pll_disable(void) {} static inline void usb_amd_quirk_pll_enable(void) {} -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 2/2] xhci: EHCI/XHCI ports switching on Intense-PC. 2012-07-18 16:59 ` Sarah Sharp 2012-07-23 11:46 ` [PATCH 1/2] xhci: provide usb_disable_xhci_ports function for Intel chipsets Denis Turischev @ 2012-07-23 11:46 ` Denis Turischev 2012-07-23 17:44 ` Sarah Sharp 2012-08-07 17:35 ` Sarah Sharp 1 sibling, 2 replies; 21+ messages in thread From: Denis Turischev @ 2012-07-23 11:46 UTC (permalink / raw) To: Sarah Sharp; +Cc: linux-kernel, linux-usb, Greg Kroah-Hartman Intense-PC is Compulab's mini-desktop with Intel Panther Point chipset. Unconditional switchover to xHCI provided by function usb_enable_xhci_ports() leads to surprising results, after shutdown system powered-on again after a few seconds. On Windows power related problems were not observed. Switching back to EHCI solves the problem. The patch switches usb ports back to EHCI during xhci shutdown for Intense-PC. Signed-off-by: Denis Turischev <denis@compulab.co.il> --- drivers/usb/host/xhci.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index a979cd0..541efaa 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -26,6 +26,8 @@ #include <linux/module.h> #include <linux/moduleparam.h> #include <linux/slab.h> +#include <linux/dmi.h> +#include "pci-quirks.h" #include "xhci.h" @@ -656,8 +658,20 @@ void xhci_stop(struct usb_hcd *hcd) */ void xhci_shutdown(struct usb_hcd *hcd) { + struct pci_dev *pdev; + const char *brd_name; struct xhci_hcd *xhci = hcd_to_xhci(hcd); + pdev = to_pci_dev(hcd->self.controller); + + if (usb_is_intel_switchable_xhci(pdev)) { + brd_name = dmi_get_system_info(DMI_BOARD_NAME); + + /* quirk for Compulab's Intense-PC board */ + if (brd_name && strstr(brd_name, "Intense-PC")) + usb_disable_xhci_ports(pdev); + } + spin_lock_irq(&xhci->lock); xhci_halt(xhci); spin_unlock_irq(&xhci->lock); -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH 2/2] xhci: EHCI/XHCI ports switching on Intense-PC. 2012-07-23 11:46 ` [PATCH 2/2] xhci: EHCI/XHCI ports switching on Intense-PC Denis Turischev @ 2012-07-23 17:44 ` Sarah Sharp 2012-07-24 8:50 ` Denis Turischev 2012-08-07 17:35 ` Sarah Sharp 1 sibling, 1 reply; 21+ messages in thread From: Sarah Sharp @ 2012-07-23 17:44 UTC (permalink / raw) To: Denis Turischev; +Cc: linux-kernel, linux-usb, Greg Kroah-Hartman Did you try disabling the wake on bits in the port status registers? I would prefer that solution if it works. Otherwise this patchset looks fine. I'll work with the hardware folks and see if this is exposed on other boards. Also, this is not a BIOS bug, but a hardware issue that can be worked around in BIOS. So I might edit your description on the first patch a bit when I submit it to Greg. Sarah Sharp On Mon, Jul 23, 2012 at 02:46:32PM +0300, Denis Turischev wrote: > Intense-PC is Compulab's mini-desktop with Intel Panther Point > chipset. > > Unconditional switchover to xHCI provided by function > usb_enable_xhci_ports() leads to surprising results, after shutdown > system powered-on again after a few seconds. On Windows power > related problems were not observed. Switching back to EHCI solves > the problem. > > The patch switches usb ports back to EHCI during xhci shutdown > for Intense-PC. > > Signed-off-by: Denis Turischev <denis@compulab.co.il> > --- > drivers/usb/host/xhci.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c > index a979cd0..541efaa 100644 > --- a/drivers/usb/host/xhci.c > +++ b/drivers/usb/host/xhci.c > @@ -26,6 +26,8 @@ > #include <linux/module.h> > #include <linux/moduleparam.h> > #include <linux/slab.h> > +#include <linux/dmi.h> > +#include "pci-quirks.h" > > #include "xhci.h" > > @@ -656,8 +658,20 @@ void xhci_stop(struct usb_hcd *hcd) > */ > void xhci_shutdown(struct usb_hcd *hcd) > { > + struct pci_dev *pdev; > + const char *brd_name; > struct xhci_hcd *xhci = hcd_to_xhci(hcd); > > + pdev = to_pci_dev(hcd->self.controller); > + > + if (usb_is_intel_switchable_xhci(pdev)) { > + brd_name = dmi_get_system_info(DMI_BOARD_NAME); > + > + /* quirk for Compulab's Intense-PC board */ > + if (brd_name && strstr(brd_name, "Intense-PC")) > + usb_disable_xhci_ports(pdev); > + } > + > spin_lock_irq(&xhci->lock); > xhci_halt(xhci); > spin_unlock_irq(&xhci->lock); > -- > 1.7.9.5 > ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 2/2] xhci: EHCI/XHCI ports switching on Intense-PC. 2012-07-23 17:44 ` Sarah Sharp @ 2012-07-24 8:50 ` Denis Turischev 2012-07-24 19:46 ` Sarah Sharp 0 siblings, 1 reply; 21+ messages in thread From: Denis Turischev @ 2012-07-24 8:50 UTC (permalink / raw) To: Sarah Sharp; +Cc: linux-kernel, linux-usb, Greg Kroah-Hartman On 07/23/2012 08:44 PM, Sarah Sharp wrote: > Did you try disabling the wake on bits in the port status registers? I > would prefer that solution if it works. No, I didn't. Why we need to disable wake on capabilities? > > Otherwise this patchset looks fine. I'll work with the hardware folks > and see if this is exposed on other boards. Also, this is not a BIOS > bug, but a hardware issue that can be worked around in BIOS. So I might > edit your description on the first patch a bit when I submit it to Greg. Of course, please edit it if required. > > Sarah Sharp > > On Mon, Jul 23, 2012 at 02:46:32PM +0300, Denis Turischev wrote: >> Intense-PC is Compulab's mini-desktop with Intel Panther Point >> chipset. >> >> Unconditional switchover to xHCI provided by function >> usb_enable_xhci_ports() leads to surprising results, after shutdown >> system powered-on again after a few seconds. On Windows power >> related problems were not observed. Switching back to EHCI solves >> the problem. >> >> The patch switches usb ports back to EHCI during xhci shutdown >> for Intense-PC. >> >> Signed-off-by: Denis Turischev <denis@compulab.co.il> >> --- >> drivers/usb/host/xhci.c | 14 ++++++++++++++ >> 1 file changed, 14 insertions(+) >> >> diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c >> index a979cd0..541efaa 100644 >> --- a/drivers/usb/host/xhci.c >> +++ b/drivers/usb/host/xhci.c >> @@ -26,6 +26,8 @@ >> #include <linux/module.h> >> #include <linux/moduleparam.h> >> #include <linux/slab.h> >> +#include <linux/dmi.h> >> +#include "pci-quirks.h" >> >> #include "xhci.h" >> >> @@ -656,8 +658,20 @@ void xhci_stop(struct usb_hcd *hcd) >> */ >> void xhci_shutdown(struct usb_hcd *hcd) >> { >> + struct pci_dev *pdev; >> + const char *brd_name; >> struct xhci_hcd *xhci = hcd_to_xhci(hcd); >> >> + pdev = to_pci_dev(hcd->self.controller); >> + >> + if (usb_is_intel_switchable_xhci(pdev)) { >> + brd_name = dmi_get_system_info(DMI_BOARD_NAME); >> + >> + /* quirk for Compulab's Intense-PC board */ >> + if (brd_name && strstr(brd_name, "Intense-PC")) >> + usb_disable_xhci_ports(pdev); >> + } >> + >> spin_lock_irq(&xhci->lock); >> xhci_halt(xhci); >> spin_unlock_irq(&xhci->lock); >> -- >> 1.7.9.5 >> ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 2/2] xhci: EHCI/XHCI ports switching on Intense-PC. 2012-07-24 8:50 ` Denis Turischev @ 2012-07-24 19:46 ` Sarah Sharp 2012-07-30 22:34 ` Sarah Sharp 0 siblings, 1 reply; 21+ messages in thread From: Sarah Sharp @ 2012-07-24 19:46 UTC (permalink / raw) To: Denis Turischev; +Cc: linux-kernel, linux-usb, Greg Kroah-Hartman On Tue, Jul 24, 2012 at 11:50:42AM +0300, Denis Turischev wrote: > On 07/23/2012 08:44 PM, Sarah Sharp wrote: > > Did you try disabling the wake on bits in the port status registers? I > > would prefer that solution if it works. > No, I didn't. Why we need to disable wake on capabilities? My theory was that the xHCI host controller was waking up the system because one of the wake on bits was set. But you said that didn't help, so we'll just switch the ports over on shutdown. Sarah Sharp ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 2/2] xhci: EHCI/XHCI ports switching on Intense-PC. 2012-07-24 19:46 ` Sarah Sharp @ 2012-07-30 22:34 ` Sarah Sharp 2012-07-31 4:49 ` Oliver Neukum 2012-07-31 10:42 ` Denis Turischev 0 siblings, 2 replies; 21+ messages in thread From: Sarah Sharp @ 2012-07-30 22:34 UTC (permalink / raw) To: Denis Turischev; +Cc: linux-kernel, linux-usb, Greg Kroah-Hartman Hi Denis, Can you send me the output of `sudo dmidecode`? I'd like to see if I can make a more general patch apply to the Intense-PC. Sarah Sharp ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 2/2] xhci: EHCI/XHCI ports switching on Intense-PC. 2012-07-30 22:34 ` Sarah Sharp @ 2012-07-31 4:49 ` Oliver Neukum 2012-07-31 17:06 ` Sarah Sharp 2012-07-31 10:42 ` Denis Turischev 1 sibling, 1 reply; 21+ messages in thread From: Oliver Neukum @ 2012-07-31 4:49 UTC (permalink / raw) To: Sarah Sharp; +Cc: Denis Turischev, linux-kernel, linux-usb, Greg Kroah-Hartman On Monday 30 July 2012 15:34:06 Sarah Sharp wrote: > Hi Denis, > > Can you send me the output of `sudo dmidecode`? I'd like to see if I > can make a more general patch apply to the Intense-PC. As this is for shutdown, why not all systems? Regards Oliver ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 2/2] xhci: EHCI/XHCI ports switching on Intense-PC. 2012-07-31 4:49 ` Oliver Neukum @ 2012-07-31 17:06 ` Sarah Sharp 2012-07-31 18:39 ` Sarah Sharp 0 siblings, 1 reply; 21+ messages in thread From: Sarah Sharp @ 2012-07-31 17:06 UTC (permalink / raw) To: Oliver Neukum Cc: Denis Turischev, linux-kernel, linux-usb, Greg Kroah-Hartman On Tue, Jul 31, 2012 at 06:49:50AM +0200, Oliver Neukum wrote: > On Monday 30 July 2012 15:34:06 Sarah Sharp wrote: > > Hi Denis, > > > > Can you send me the output of `sudo dmidecode`? I'd like to see if I > > can make a more general patch apply to the Intense-PC. > > As this is for shutdown, why not all systems? Because it will cause a BIOS delay on the next boot. Approximately 100 ms. Some people trying to do extremely fast boot will care about that delay. Sarah Sharp ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 2/2] xhci: EHCI/XHCI ports switching on Intense-PC. 2012-07-31 17:06 ` Sarah Sharp @ 2012-07-31 18:39 ` Sarah Sharp 0 siblings, 0 replies; 21+ messages in thread From: Sarah Sharp @ 2012-07-31 18:39 UTC (permalink / raw) To: Oliver Neukum Cc: Denis Turischev, linux-kernel, linux-usb, Greg Kroah-Hartman On Tue, Jul 31, 2012 at 10:06:34AM -0700, Sarah Sharp wrote: > On Tue, Jul 31, 2012 at 06:49:50AM +0200, Oliver Neukum wrote: > > On Monday 30 July 2012 15:34:06 Sarah Sharp wrote: > > > Hi Denis, > > > > > > Can you send me the output of `sudo dmidecode`? I'd like to see if I > > > can make a more general patch apply to the Intense-PC. > > > > As this is for shutdown, why not all systems? > > Because it will cause a BIOS delay on the next boot. Approximately > 100 ms. Some people trying to do extremely fast boot will care about > that delay. However, looking at the Intense-PC SMBIOS info, it looks like I can't make the patch more generic. I'll have to key off of PCI ID, and all PPT systems will have the ports switched back to EHCI. Sarah Sharp ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 2/2] xhci: EHCI/XHCI ports switching on Intense-PC. 2012-07-30 22:34 ` Sarah Sharp 2012-07-31 4:49 ` Oliver Neukum @ 2012-07-31 10:42 ` Denis Turischev 1 sibling, 0 replies; 21+ messages in thread From: Denis Turischev @ 2012-07-31 10:42 UTC (permalink / raw) To: Sarah Sharp; +Cc: linux-kernel, linux-usb, Greg Kroah-Hartman [-- Attachment #1: Type: text/plain, Size: 278 bytes --] Hi Sarah, Attached dmidecode output of Intense-PC. Denis Turischev On 07/31/2012 01:34 AM, Sarah Sharp wrote: > Hi Denis, > > Can you send me the output of `sudo dmidecode`? I'd like to see if I > can make a more general patch apply to the Intense-PC. > > Sarah Sharp > [-- Attachment #2: dmidecode.intense-PC --] [-- Type: text/plain, Size: 19893 bytes --] # dmidecode 2.11 SMBIOS 2.7 present. 62 structures occupying 2533 bytes. Table at 0x000E0840. Handle 0x0004, DMI type 4, 42 bytes Processor Information Socket Designation: CPU Socket - soldered on-board Type: Central Processor Family: Core i7 Manufacturer: Intel(R) Corporation ID: A5 06 03 00 FF FB EB BF Signature: Type 0, Family 6, Model 58, Stepping 5 Flags: FPU (Floating-point unit on-chip) VME (Virtual mode extension) DE (Debugging extension) PSE (Page size extension) TSC (Time stamp counter) MSR (Model specific registers) PAE (Physical address extension) MCE (Machine check exception) CX8 (CMPXCHG8 instruction supported) APIC (On-chip APIC hardware supported) SEP (Fast system call) MTRR (Memory type range registers) PGE (Page global enable) MCA (Machine check architecture) CMOV (Conditional move instruction supported) PAT (Page attribute table) PSE-36 (36-bit page size extension) CLFSH (CLFLUSH instruction supported) DS (Debug store) ACPI (ACPI supported) MMX (MMX technology supported) FXSR (FXSAVE and FXSTOR instructions supported) SSE (Streaming SIMD extensions) SSE2 (Streaming SIMD extensions 2) SS (Self-snoop) HTT (Multi-threading) TM (Thermal monitor supported) PBE (Pending break enabled) Version: Genuine Intel(R) CPU @ 1.50GHz Voltage: 0.8 V External Clock: 100 MHz Max Speed: 2000 MHz Current Speed: 2000 MHz Status: Populated, Enabled Upgrade: Socket rPGA988B L1 Cache Handle: 0x0006 L2 Cache Handle: 0x0007 L3 Cache Handle: 0x0008 Serial Number: To Be Filled By O.E.M. Asset Tag: To Be Filled By O.E.M. Part Number: To Be Filled By O.E.M. Core Count: 2 Core Enabled: 2 Thread Count: 4 Characteristics: 64-bit capable Handle 0x0005, DMI type 7, 19 bytes Cache Information Socket Designation: L1-Cache Configuration: Enabled, Not Socketed, Level 1 Operational Mode: Write Through Location: Internal Installed Size: 32 kB Maximum Size: 32 kB Supported SRAM Types: Unknown Installed SRAM Type: Unknown Speed: Unknown Error Correction Type: Parity System Type: Data Associativity: 8-way Set-associative Handle 0x0006, DMI type 7, 19 bytes Cache Information Socket Designation: L1-Cache Configuration: Enabled, Not Socketed, Level 1 Operational Mode: Write Through Location: Internal Installed Size: 32 kB Maximum Size: 32 kB Supported SRAM Types: Unknown Installed SRAM Type: Unknown Speed: Unknown Error Correction Type: Parity System Type: Instruction Associativity: 8-way Set-associative Handle 0x0007, DMI type 7, 19 bytes Cache Information Socket Designation: L2-Cache Configuration: Enabled, Not Socketed, Level 2 Operational Mode: Write Through Location: Internal Installed Size: 256 kB Maximum Size: 256 kB Supported SRAM Types: Unknown Installed SRAM Type: Unknown Speed: Unknown Error Correction Type: Multi-bit ECC System Type: Unified Associativity: 8-way Set-associative Handle 0x0008, DMI type 7, 19 bytes Cache Information Socket Designation: L3-Cache Configuration: Enabled, Not Socketed, Level 3 Operational Mode: Write Back Location: Internal Installed Size: 4096 kB Maximum Size: 4096 kB Supported SRAM Types: Unknown Installed SRAM Type: Unknown Speed: Unknown Error Correction Type: Multi-bit ECC System Type: Unified Associativity: 16-way Set-associative Handle 0x0000, DMI type 0, 24 bytes BIOS Information Vendor: Phoenix Technologies Ltd. Version: CR_2.2.0.262 X64 Release Date: 07/06/2012 Address: 0xE0000 Runtime Size: 128 kB ROM Size: 3072 kB Characteristics: PCI is supported BIOS is upgradeable BIOS shadowing is allowed Boot from CD is supported Selectable boot is supported EDD is supported Print screen service is supported (int 5h) 8042 keyboard services are supported (int 9h) Serial services are supported (int 14h) Printer services are supported (int 17h) CGA/mono video services are supported (int 10h) NEC PC-98 ACPI is supported USB legacy is supported BIOS boot specification is supported Function key-initiated network boot is supported Targeted content distribution is supported UEFI is supported BIOS Revision: 0.1 Handle 0x0001, DMI type 1, 27 bytes System Information Manufacturer: CompuLab Product Name: Intense-PC Version: 1.x Serial Number: System Serial Number UUID: 5C4606FA-192F-453A-B299-7B088C63BB9B Wake-up Type: Other SKU Number: System SKUNumber Family: IPC System Handle 0x0002, DMI type 2, 15 bytes Base Board Information Manufacturer: CompuLab Ltd. Product Name: Intense-PC Version: 1.x Serial Number: 1 Asset Tag: Base Board Asset Tag Features: Board is a hosting board Board is replaceable Location In Chassis: Part Component Chassis Handle: 0x0000 Type: Motherboard Contained Object Handles: 0 Handle 0x0003, DMI type 3, 22 bytes Chassis Information Manufacturer: CompuLab Ltd. Type: Laptop Lock: Not Present Version: 1.x Serial Number: serial# Asset Tag: Asset Tag Boot-up State: Safe Power Supply State: Safe Thermal State: Other Security Status: Other OEM Information: 0x00000000 Height: Unspecified Number Of Power Cords: 1 Contained Elements: 0 SKU Number: System SKUNumber Handle 0x0009, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: Keyboard External Connector Type: PS/2 Port Type: Keyboard Port Handle 0x000A, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: Mouse External Connector Type: PS/2 Port Type: Mouse Port Handle 0x000B, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: Other External Reference Designator: COM 1 External Connector Type: DB-9 male Port Type: Serial Port 16550A Compatible Handle 0x000C, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: USB3.0 - 1#/USB2.0 - 1# External Connector Type: Access Bus (USB) Port Type: USB Handle 0x000D, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: USB3.0 - 2#/USB2.0 - 2# External Connector Type: Access Bus (USB) Port Type: USB Handle 0x000E, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: USB3.0 - 3#/USB2.0 - 3# External Connector Type: Access Bus (USB) Port Type: USB Handle 0x000F, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: USB3.0 - 4#/USB2.0 - 4# External Connector Type: Access Bus (USB) Port Type: USB Handle 0x0010, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: USB2.0 - 5# External Connector Type: Access Bus (USB) Port Type: USB Handle 0x0011, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: USB2.0 - 6# External Connector Type: Access Bus (USB) Port Type: USB Handle 0x0012, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: USB2.0 - 7# External Connector Type: Access Bus (USB) Port Type: USB Handle 0x0013, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: USB2.0 - 8# External Connector Type: Access Bus (USB) Port Type: USB Handle 0x0014, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: USB2.0 - 9# External Connector Type: Access Bus (USB) Port Type: USB Handle 0x0015, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: USB2.0 - 10# External Connector Type: Access Bus (USB) Port Type: USB Handle 0x0016, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: USB2.0 - 11# External Connector Type: Access Bus (USB) Port Type: USB Handle 0x0017, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: USB2.0 - 12# External Connector Type: Access Bus (USB) Port Type: USB Handle 0x0018, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: USB2.0 - 13# External Connector Type: Access Bus (USB) Port Type: USB Handle 0x0019, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: USB2.0 - 14# External Connector Type: Access Bus (USB) Port Type: USB Handle 0x001A, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: Ethernet External Connector Type: RJ-45 Port Type: Network Port Handle 0x001B, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: SATA Port 1 Internal Connector Type: SAS/SATA Plug Receptacle External Reference Designator: None External Connector Type: None Port Type: SATA Handle 0x001C, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: SATA Port 2 Internal Connector Type: SAS/SATA Plug Receptacle External Reference Designator: None External Connector Type: None Port Type: SATA Handle 0x001D, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: SATA Port 3 Internal Connector Type: SAS/SATA Plug Receptacle External Reference Designator: None External Connector Type: None Port Type: SATA Handle 0x001E, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: eSATA Port 1 External Connector Type: SAS/SATA Plug Receptacle Port Type: SATA Handle 0x001F, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: eSATA Port 2 External Connector Type: SAS/SATA Plug Receptacle Port Type: SATA Handle 0x0020, DMI type 8, 9 bytes Port Connector Information Internal Reference Designator: None Internal Connector Type: None External Reference Designator: SATA Port 6 External Connector Type: SAS/SATA Plug Receptacle Port Type: SATA Handle 0x0021, DMI type 9, 17 bytes System Slot Information Designation: PEG Gen1/Gen2/Gen3 X16 Type: x16 PCI Express Current Usage: Available Length: Long ID: 0 Characteristics: 3.3 V is provided Opening is shared PME signal is supported Bus Address: 0000:00:00.0 Handle 0x0022, DMI type 9, 17 bytes System Slot Information Designation: PCI-Express 1 X1 Type: x1 PCI Express Current Usage: Available Length: Short ID: 1 Characteristics: 3.3 V is provided Opening is shared PME signal is supported Bus Address: 0000:00:00.0 Handle 0x0023, DMI type 9, 17 bytes System Slot Information Designation: PCI-Express 2 X1 Type: x1 PCI Express Current Usage: Available Length: Short ID: 2 Characteristics: 3.3 V is provided Opening is shared PME signal is supported Bus Address: 0000:00:00.0 Handle 0x0024, DMI type 9, 17 bytes System Slot Information Designation: PCI-Express 3 X1 Type: x1 PCI Express Current Usage: Available Length: Short ID: 3 Characteristics: 3.3 V is provided Opening is shared PME signal is supported Bus Address: 0000:00:00.0 Handle 0x0025, DMI type 9, 17 bytes System Slot Information Designation: PCI-Express 4 X1 Type: x1 PCI Express Current Usage: In Use Length: Short ID: 4 Characteristics: 3.3 V is provided Opening is shared PME signal is supported Bus Address: 0000:00:00.0 Handle 0x0026, DMI type 9, 17 bytes System Slot Information Designation: PCI-Express 5 X4 Type: x4 PCI Express Current Usage: In Use Length: Short ID: 5 Characteristics: 3.3 V is provided Opening is shared PME signal is supported Bus Address: 0000:00:00.0 Handle 0x0027, DMI type 10, 6 bytes On Board Device Information Type: Video Status: Enabled Description: Intel(R) Extreme Graphics 3 Controller Handle 0x0028, DMI type 10, 6 bytes On Board Device Information Type: Sound Status: Enabled Description: Intel(R) Azalia Audio Device Handle 0x0029, DMI type 11, 5 bytes OEM Strings String 1: Intense-PC Handle 0x002A, DMI type 12, 5 bytes System Configuration Options Handle 0x002B, DMI type 13, 22 bytes BIOS Language Information Language Description Format: Abbreviated Installable Languages: 7 enUS frFR jaJP koKR zhCA zhCA ruRU Currently Installed Language: enUS Handle 0x002C, DMI type 22, 26 bytes Portable Battery Location: None Manufacturer: None Manufacture Date: None Serial Number: None Name: None Design Capacity: Unknown Design Voltage: Unknown SBDS Version: None Maximum Error: Unknown SBDS Chemistry: None OEM-specific Information: 0x00000000 Handle 0x002D, DMI type 32, 11 bytes System Boot Information Status: No errors detected Handle 0x002E, DMI type 18, 23 bytes 32-bit Memory Error Information Type: OK Granularity: Unknown Operation: Unknown Vendor Syndrome: Unknown Memory Array Address: Unknown Device Address: Unknown Resolution: Unknown Handle 0x002F, DMI type 21, 7 bytes Built-in Pointing Device Type: Mouse Interface: PS/2 Buttons: 2 Handle 0x0030, DMI type 23, 13 bytes System Reset Status: Disabled Watchdog Timer: Present Boot Option: Do Not Reboot Boot Option On Limit: Do Not Reboot Reset Count: Unknown Reset Limit: Unknown Timer Interval: Unknown Timeout: Unknown Handle 0x0031, DMI type 24, 5 bytes Hardware Security Power-On Password Status: Unknown Keyboard Password Status: Unknown Administrator Password Status: Unknown Front Panel Reset Status: Unknown Handle 0x0032, DMI type 27, 14 bytes Cooling Device Type: Unknown Status: Unknown OEM-specific Information: 0x00000090 Nominal Speed: Unknown Or Non-rotating Handle 0x0033, DMI type 39, 22 bytes System Power Supply Location: TBD by ODM Name: TBD by ODM Manufacturer: TBD by ODM Serial Number: TBD by ODM Asset Tag: TBD by ODM Model Part Number: TBD by ODM Revision: 1.0 Max Power Capacity: Unknown Status: Present, OK Type: Battery Input Voltage Range Switching: Other Plugged: Yes Hot Replaceable: Yes Handle 0x0034, DMI type 16, 23 bytes Physical Memory Array Location: System Board Or Motherboard Use: System Memory Error Correction Type: None Maximum Capacity: 32 GB Error Information Handle: Not Provided Number Of Devices: 4 Handle 0x0035, DMI type 17, 34 bytes Memory Device Array Handle: 0x0034 Error Information Handle: Not Provided Total Width: 64 bits Data Width: 64 bits Size: 2048 MB Form Factor: SODIMM Set: None Locator: ChannelA-DIMM0 Bank Locator: BANK 0 Type: DDR3 Type Detail: Synchronous Speed: 1333 MHz Manufacturer: Hynix/Hyundai Serial Number: 6146B1E7 Asset Tag: 9876543210 Part Number: HMT325S6BFR8C-H9 Rank: Unknown Configured Clock Speed: 1333 MHz Handle 0x0036, DMI type 17, 34 bytes Memory Device Array Handle: 0x0034 Error Information Handle: Not Provided Total Width: Unknown Data Width: Unknown Size: No Module Installed Form Factor: DIMM Set: None Locator: ChannelA-DIMM1 Bank Locator: BANK 1 Type: Unknown Type Detail: None Speed: Unknown Manufacturer: Not Specified Serial Number: Not Specified Asset Tag: 9876543210 Part Number: Not Specified Rank: Unknown Configured Clock Speed: Unknown Handle 0x0037, DMI type 17, 34 bytes Memory Device Array Handle: 0x0034 Error Information Handle: Not Provided Total Width: 64 bits Data Width: 64 bits Size: 2048 MB Form Factor: SODIMM Set: None Locator: ChannelB-DIMM0 Bank Locator: BANK 2 Type: DDR3 Type Detail: Synchronous Speed: 1333 MHz Manufacturer: Hynix/Hyundai Serial Number: 0D32B144 Asset Tag: 9876543210 Part Number: HMT325S6BFR8C-H9 Rank: Unknown Configured Clock Speed: 1333 MHz Handle 0x0038, DMI type 17, 34 bytes Memory Device Array Handle: 0x0034 Error Information Handle: Not Provided Total Width: Unknown Data Width: Unknown Size: No Module Installed Form Factor: DIMM Set: None Locator: ChannelB-DIMM1 Bank Locator: BANK 3 Type: Unknown Type Detail: None Speed: Unknown Manufacturer: Not Specified Serial Number: Not Specified Asset Tag: 9876543210 Part Number: Not Specified Rank: Unknown Configured Clock Speed: Unknown Handle 0x0039, DMI type 20, 35 bytes Memory Device Mapped Address Starting Address: 0x00000000000 Ending Address: 0x000FFFFFFFF Range Size: 4 GB Physical Device Handle: 0x0035 Memory Array Mapped Address Handle: 0x003B Partition Row Position: 1 Interleave Position: 1 Interleaved Data Depth: 2 Handle 0x003A, DMI type 20, 35 bytes Memory Device Mapped Address Starting Address: 0x00000000000 Ending Address: 0x000FFFFFFFF Range Size: 4 GB Physical Device Handle: 0x0036 Memory Array Mapped Address Handle: 0x003B Partition Row Position: 1 Interleave Position: 2 Interleaved Data Depth: 2 Handle 0x003B, DMI type 19, 31 bytes Memory Array Mapped Address Starting Address: 0x00000000000 Ending Address: 0x000FFFFFFFF Range Size: 4 GB Physical Array Handle: 0x0034 Partition Width: 4 Handle 0x003C, DMI type 15, 81 bytes System Event Log Area Length: 18 bytes Header Start Offset: 0x0000 Header Length: 16 bytes Data Start Offset: 0x0010 Access Method: General-purpose non-volatile data functions Access Address: 0x00F0 Status: Valid, Not Full Change Token: 0x00000000 Header Format: Type 1 Supported Log Type Descriptors: 29 Descriptor 1: Single-bit ECC memory error Data Format 1: Multiple-event handle Descriptor 2: Multi-bit ECC memory error Data Format 2: Multiple-event handle Descriptor 3: Parity memory error Data Format 3: None Descriptor 4: Bus timeout Data Format 4: None Descriptor 5: I/O channel block Data Format 5: None Descriptor 6: Software NMI Data Format 6: None Descriptor 7: POST memory resize Data Format 7: None Descriptor 8: POST error Data Format 8: POST results bitmap Descriptor 9: PCI parity error Data Format 9: None Descriptor 10: PCI system error Data Format 10: None Descriptor 11: CPU failure Data Format 11: None Descriptor 12: EISA failsafe timer timeout Data Format 12: None Descriptor 13: Correctable memory log disabled Data Format 13: None Descriptor 14: Logging disabled Data Format 14: None Descriptor 15: System limit exceeded Data Format 15: None Descriptor 16: Asynchronous hardware timer expired Data Format 16: None Descriptor 17: System configuration information Data Format 17: None Descriptor 18: Hard disk information Data Format 18: None Descriptor 19: System reconfigured Data Format 19: None Descriptor 20: Uncorrectable CPU-complex error Data Format 20: None Descriptor 21: Log area reset/cleared Data Format 21: None Descriptor 22: System boot Data Format 22: None Descriptor 23: OEM-specific Data Format 23: None Descriptor 24: OEM-specific Data Format 24: None Descriptor 25: OEM-specific Data Format 25: None Descriptor 26: OEM-specific Data Format 26: None Descriptor 27: OEM-specific Data Format 27: None Descriptor 28: OEM-specific Data Format 28: None Descriptor 29: OEM-specific Data Format 29: None Handle 0xFEFF, DMI type 127, 4 bytes End Of Table ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 2/2] xhci: EHCI/XHCI ports switching on Intense-PC. 2012-07-23 11:46 ` [PATCH 2/2] xhci: EHCI/XHCI ports switching on Intense-PC Denis Turischev 2012-07-23 17:44 ` Sarah Sharp @ 2012-08-07 17:35 ` Sarah Sharp 2012-08-07 17:39 ` [RFT] xhci: Switch PPT ports to EHCI on shutdown Sarah Sharp 1 sibling, 1 reply; 21+ messages in thread From: Sarah Sharp @ 2012-08-07 17:35 UTC (permalink / raw) To: Denis Turischev; +Cc: linux-kernel, linux-usb, Greg Kroah-Hartman Hi Denis, I found a couple issues with your second patch. There are non-PCI xHCI host controllers, so we can't assume the xHCI host is a PCI host. So this code can't run in the generic xHCI shutdown method: > void xhci_shutdown(struct usb_hcd *hcd) > { > + struct pci_dev *pdev; > + const char *brd_name; > struct xhci_hcd *xhci = hcd_to_xhci(hcd); > > + pdev = to_pci_dev(hcd->self.controller); > + > + if (usb_is_intel_switchable_xhci(pdev)) { > + brd_name = dmi_get_system_info(DMI_BOARD_NAME); > + > + /* quirk for Compulab's Intense-PC board */ > + if (brd_name && strstr(brd_name, "Intense-PC")) > + usb_disable_xhci_ports(pdev); > + } > + > spin_lock_irq(&xhci->lock); > xhci_halt(xhci); > spin_unlock_irq(&xhci->lock); I think the to_pci_dev call will oops if this isn't a PCI host. Plus, I've found out from the BIOS and chipset folks that this quirk needs to be more broadly applied. I'll send you a revised patch. Can you test it and make sure it works for you? Sarah Sharp ^ permalink raw reply [flat|nested] 21+ messages in thread
* [RFT] xhci: Switch PPT ports to EHCI on shutdown. 2012-08-07 17:35 ` Sarah Sharp @ 2012-08-07 17:39 ` Sarah Sharp 2012-08-09 14:31 ` Denis Turischev 2012-08-23 4:30 ` Robert Hancock 0 siblings, 2 replies; 21+ messages in thread From: Sarah Sharp @ 2012-08-07 17:39 UTC (permalink / raw) To: Denis Turischev; +Cc: linux-usb, Greg KH, linux-kernel The Intel desktop boards DH77EB and DH77DF have a hardware issue that can be worked around by BIOS. If the USB ports are switched to xHCI on shutdown, the xHCI host will send a spurious interrupt, which will wake the system. Some BIOS will work around this, but not all. The bug can be avoided if the USB ports are switched back to EHCI on shutdown. The Intel Windows driver switches the ports back to EHCI, so change the Linux xHCI driver to do the same. Unfortunately, we can't tell the two effected boards apart from other working motherboards, because the vendors will change the DMI strings for the DH77EB and DH77DF boards to their own custom names. One example is Compulab's mini-desktop, the Intense-PC. Instead, key off the Panther Point xHCI host PCI vendor and device ID, and switch the ports over for all PPT xHCI hosts. The only impact this will have on non-effected boards is to add a couple hundred milliseconds delay on boot when the BIOS has to switch the ports over from EHCI to xHCI. This patch should be backported to kernels as old as 3.0, that contain the commit 69e848c2090aebba5698a1620604c7dccb448684 "Intel xhci: Support EHCI/xHCI port switching." Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> Reported-by: Denis Turischev <denis@compulab.co.il> Cc: stable@vger.kernel.org --- drivers/usb/host/pci-quirks.c | 7 +++++++ drivers/usb/host/pci-quirks.h | 1 + drivers/usb/host/xhci-pci.c | 9 +++++++++ drivers/usb/host/xhci.c | 3 +++ drivers/usb/host/xhci.h | 1 + 5 files changed, 21 insertions(+), 0 deletions(-) diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c index df0828c..c5e9e4a 100644 --- a/drivers/usb/host/pci-quirks.c +++ b/drivers/usb/host/pci-quirks.c @@ -800,6 +800,13 @@ void usb_enable_xhci_ports(struct pci_dev *xhci_pdev) } EXPORT_SYMBOL_GPL(usb_enable_xhci_ports); +void usb_disable_xhci_ports(struct pci_dev *xhci_pdev) +{ + pci_write_config_dword(xhci_pdev, USB_INTEL_USB3_PSSEN, 0x0); + pci_write_config_dword(xhci_pdev, USB_INTEL_XUSB2PR, 0x0); +} +EXPORT_SYMBOL_GPL(usb_disable_xhci_ports); + /** * PCI Quirks for xHCI. * diff --git a/drivers/usb/host/pci-quirks.h b/drivers/usb/host/pci-quirks.h index b1002a8..ef004a5 100644 --- a/drivers/usb/host/pci-quirks.h +++ b/drivers/usb/host/pci-quirks.h @@ -10,6 +10,7 @@ void usb_amd_quirk_pll_disable(void); void usb_amd_quirk_pll_enable(void); bool usb_is_intel_switchable_xhci(struct pci_dev *pdev); void usb_enable_xhci_ports(struct pci_dev *xhci_pdev); +void usb_disable_xhci_ports(struct pci_dev *xhci_pdev); #else static inline void usb_amd_quirk_pll_disable(void) {} static inline void usb_amd_quirk_pll_enable(void) {} diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c index 92eaff6..9bfd4ca11 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c @@ -94,6 +94,15 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) xhci->quirks |= XHCI_EP_LIMIT_QUIRK; xhci->limit_active_eps = 64; xhci->quirks |= XHCI_SW_BW_CHECKING; + /* + * PPT desktop boards DH77EB and DH77DF will power back on after + * a few seconds of being shutdown. The fix for this is to + * switch the ports from xHCI to EHCI on shutdown. We can't use + * DMI information to find those particular boards (since each + * vendor will change the board name), so we have to key off all + * PPT chipsets. + */ + xhci->quirks |= XHCI_SPURIOUS_REBOOT; } if (pdev->vendor == PCI_VENDOR_ID_ETRON && pdev->device == PCI_DEVICE_ID_ASROCK_P67) { diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 95394e5..81aa10c 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -659,6 +659,9 @@ void xhci_shutdown(struct usb_hcd *hcd) { struct xhci_hcd *xhci = hcd_to_xhci(hcd); + if (xhci->quirks && XHCI_SPURIOUS_REBOOT) + usb_disable_xhci_ports(to_pci_dev(hcd->self.controller)); + spin_lock_irq(&xhci->lock); xhci_halt(xhci); spin_unlock_irq(&xhci->lock); diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h index 96f49db..c713256 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h @@ -1494,6 +1494,7 @@ struct xhci_hcd { #define XHCI_TRUST_TX_LENGTH (1 << 10) #define XHCI_LPM_SUPPORT (1 << 11) #define XHCI_INTEL_HOST (1 << 12) +#define XHCI_SPURIOUS_REBOOT (1 << 13) unsigned int num_active_eps; unsigned int limit_active_eps; /* There are two roothubs to keep track of bus suspend info for */ -- 1.7.9 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [RFT] xhci: Switch PPT ports to EHCI on shutdown. 2012-08-07 17:39 ` [RFT] xhci: Switch PPT ports to EHCI on shutdown Sarah Sharp @ 2012-08-09 14:31 ` Denis Turischev 2012-08-23 4:30 ` Robert Hancock 1 sibling, 0 replies; 21+ messages in thread From: Denis Turischev @ 2012-08-09 14:31 UTC (permalink / raw) To: Sarah Sharp; +Cc: linux-usb, Greg KH, linux-kernel Hi Sarah, Yes, it fixes unexpected wake-up on Intense-PC. Thanks! Denis. On 08/07/2012 08:39 PM, Sarah Sharp wrote: > The Intel desktop boards DH77EB and DH77DF have a hardware issue that > can be worked around by BIOS. If the USB ports are switched to xHCI on > shutdown, the xHCI host will send a spurious interrupt, which will wake > the system. Some BIOS will work around this, but not all. > > The bug can be avoided if the USB ports are switched back to EHCI on > shutdown. The Intel Windows driver switches the ports back to EHCI, so > change the Linux xHCI driver to do the same. > > Unfortunately, we can't tell the two effected boards apart from other > working motherboards, because the vendors will change the DMI strings > for the DH77EB and DH77DF boards to their own custom names. One example > is Compulab's mini-desktop, the Intense-PC. Instead, key off the > Panther Point xHCI host PCI vendor and device ID, and switch the ports > over for all PPT xHCI hosts. > > The only impact this will have on non-effected boards is to add a couple > hundred milliseconds delay on boot when the BIOS has to switch the ports > over from EHCI to xHCI. > > This patch should be backported to kernels as old as 3.0, that contain > the commit 69e848c2090aebba5698a1620604c7dccb448684 "Intel xhci: Support > EHCI/xHCI port switching." > > Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> > Reported-by: Denis Turischev <denis@compulab.co.il> > Cc: stable@vger.kernel.org > --- > drivers/usb/host/pci-quirks.c | 7 +++++++ > drivers/usb/host/pci-quirks.h | 1 + > drivers/usb/host/xhci-pci.c | 9 +++++++++ > drivers/usb/host/xhci.c | 3 +++ > drivers/usb/host/xhci.h | 1 + > 5 files changed, 21 insertions(+), 0 deletions(-) > > diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c > index df0828c..c5e9e4a 100644 > --- a/drivers/usb/host/pci-quirks.c > +++ b/drivers/usb/host/pci-quirks.c > @@ -800,6 +800,13 @@ void usb_enable_xhci_ports(struct pci_dev *xhci_pdev) > } > EXPORT_SYMBOL_GPL(usb_enable_xhci_ports); > > +void usb_disable_xhci_ports(struct pci_dev *xhci_pdev) > +{ > + pci_write_config_dword(xhci_pdev, USB_INTEL_USB3_PSSEN, 0x0); > + pci_write_config_dword(xhci_pdev, USB_INTEL_XUSB2PR, 0x0); > +} > +EXPORT_SYMBOL_GPL(usb_disable_xhci_ports); > + > /** > * PCI Quirks for xHCI. > * > diff --git a/drivers/usb/host/pci-quirks.h b/drivers/usb/host/pci-quirks.h > index b1002a8..ef004a5 100644 > --- a/drivers/usb/host/pci-quirks.h > +++ b/drivers/usb/host/pci-quirks.h > @@ -10,6 +10,7 @@ void usb_amd_quirk_pll_disable(void); > void usb_amd_quirk_pll_enable(void); > bool usb_is_intel_switchable_xhci(struct pci_dev *pdev); > void usb_enable_xhci_ports(struct pci_dev *xhci_pdev); > +void usb_disable_xhci_ports(struct pci_dev *xhci_pdev); > #else > static inline void usb_amd_quirk_pll_disable(void) {} > static inline void usb_amd_quirk_pll_enable(void) {} > diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c > index 92eaff6..9bfd4ca11 100644 > --- a/drivers/usb/host/xhci-pci.c > +++ b/drivers/usb/host/xhci-pci.c > @@ -94,6 +94,15 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) > xhci->quirks |= XHCI_EP_LIMIT_QUIRK; > xhci->limit_active_eps = 64; > xhci->quirks |= XHCI_SW_BW_CHECKING; > + /* > + * PPT desktop boards DH77EB and DH77DF will power back on after > + * a few seconds of being shutdown. The fix for this is to > + * switch the ports from xHCI to EHCI on shutdown. We can't use > + * DMI information to find those particular boards (since each > + * vendor will change the board name), so we have to key off all > + * PPT chipsets. > + */ > + xhci->quirks |= XHCI_SPURIOUS_REBOOT; > } > if (pdev->vendor == PCI_VENDOR_ID_ETRON && > pdev->device == PCI_DEVICE_ID_ASROCK_P67) { > diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c > index 95394e5..81aa10c 100644 > --- a/drivers/usb/host/xhci.c > +++ b/drivers/usb/host/xhci.c > @@ -659,6 +659,9 @@ void xhci_shutdown(struct usb_hcd *hcd) > { > struct xhci_hcd *xhci = hcd_to_xhci(hcd); > > + if (xhci->quirks && XHCI_SPURIOUS_REBOOT) > + usb_disable_xhci_ports(to_pci_dev(hcd->self.controller)); > + > spin_lock_irq(&xhci->lock); > xhci_halt(xhci); > spin_unlock_irq(&xhci->lock); > diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h > index 96f49db..c713256 100644 > --- a/drivers/usb/host/xhci.h > +++ b/drivers/usb/host/xhci.h > @@ -1494,6 +1494,7 @@ struct xhci_hcd { > #define XHCI_TRUST_TX_LENGTH (1 << 10) > #define XHCI_LPM_SUPPORT (1 << 11) > #define XHCI_INTEL_HOST (1 << 12) > +#define XHCI_SPURIOUS_REBOOT (1 << 13) > unsigned int num_active_eps; > unsigned int limit_active_eps; > /* There are two roothubs to keep track of bus suspend info for */ > ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [RFT] xhci: Switch PPT ports to EHCI on shutdown. 2012-08-07 17:39 ` [RFT] xhci: Switch PPT ports to EHCI on shutdown Sarah Sharp 2012-08-09 14:31 ` Denis Turischev @ 2012-08-23 4:30 ` Robert Hancock 1 sibling, 0 replies; 21+ messages in thread From: Robert Hancock @ 2012-08-23 4:30 UTC (permalink / raw) To: Sarah Sharp; +Cc: Denis Turischev, linux-usb, Greg KH, linux-kernel On 08/07/2012 11:39 AM, Sarah Sharp wrote: > The Intel desktop boards DH77EB and DH77DF have a hardware issue that > can be worked around by BIOS. If the USB ports are switched to xHCI on > shutdown, the xHCI host will send a spurious interrupt, which will wake > the system. Some BIOS will work around this, but not all. > > The bug can be avoided if the USB ports are switched back to EHCI on > shutdown. The Intel Windows driver switches the ports back to EHCI, so > change the Linux xHCI driver to do the same. > > Unfortunately, we can't tell the two effected boards apart from other > working motherboards, because the vendors will change the DMI strings > for the DH77EB and DH77DF boards to their own custom names. One example > is Compulab's mini-desktop, the Intense-PC. Instead, key off the > Panther Point xHCI host PCI vendor and device ID, and switch the ports > over for all PPT xHCI hosts. > > The only impact this will have on non-effected boards is to add a couple > hundred milliseconds delay on boot when the BIOS has to switch the ports > over from EHCI to xHCI. > > This patch should be backported to kernels as old as 3.0, that contain > the commit 69e848c2090aebba5698a1620604c7dccb448684 "Intel xhci: Support > EHCI/xHCI port switching." > > Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> > Reported-by: Denis Turischev <denis@compulab.co.il> > Cc: stable@vger.kernel.org > --- > drivers/usb/host/pci-quirks.c | 7 +++++++ > drivers/usb/host/pci-quirks.h | 1 + > drivers/usb/host/xhci-pci.c | 9 +++++++++ > drivers/usb/host/xhci.c | 3 +++ > drivers/usb/host/xhci.h | 1 + > 5 files changed, 21 insertions(+), 0 deletions(-) > > diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c > index df0828c..c5e9e4a 100644 > --- a/drivers/usb/host/pci-quirks.c > +++ b/drivers/usb/host/pci-quirks.c > @@ -800,6 +800,13 @@ void usb_enable_xhci_ports(struct pci_dev *xhci_pdev) > } > EXPORT_SYMBOL_GPL(usb_enable_xhci_ports); > > +void usb_disable_xhci_ports(struct pci_dev *xhci_pdev) > +{ > + pci_write_config_dword(xhci_pdev, USB_INTEL_USB3_PSSEN, 0x0); > + pci_write_config_dword(xhci_pdev, USB_INTEL_XUSB2PR, 0x0); > +} > +EXPORT_SYMBOL_GPL(usb_disable_xhci_ports); > + > /** > * PCI Quirks for xHCI. > * > diff --git a/drivers/usb/host/pci-quirks.h b/drivers/usb/host/pci-quirks.h > index b1002a8..ef004a5 100644 > --- a/drivers/usb/host/pci-quirks.h > +++ b/drivers/usb/host/pci-quirks.h > @@ -10,6 +10,7 @@ void usb_amd_quirk_pll_disable(void); > void usb_amd_quirk_pll_enable(void); > bool usb_is_intel_switchable_xhci(struct pci_dev *pdev); > void usb_enable_xhci_ports(struct pci_dev *xhci_pdev); > +void usb_disable_xhci_ports(struct pci_dev *xhci_pdev); > #else > static inline void usb_amd_quirk_pll_disable(void) {} > static inline void usb_amd_quirk_pll_enable(void) {} > diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c > index 92eaff6..9bfd4ca11 100644 > --- a/drivers/usb/host/xhci-pci.c > +++ b/drivers/usb/host/xhci-pci.c > @@ -94,6 +94,15 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) > xhci->quirks |= XHCI_EP_LIMIT_QUIRK; > xhci->limit_active_eps = 64; > xhci->quirks |= XHCI_SW_BW_CHECKING; > + /* > + * PPT desktop boards DH77EB and DH77DF will power back on after > + * a few seconds of being shutdown. The fix for this is to > + * switch the ports from xHCI to EHCI on shutdown. We can't use > + * DMI information to find those particular boards (since each > + * vendor will change the board name), so we have to key off all > + * PPT chipsets. > + */ > + xhci->quirks |= XHCI_SPURIOUS_REBOOT; > } > if (pdev->vendor == PCI_VENDOR_ID_ETRON && > pdev->device == PCI_DEVICE_ID_ASROCK_P67) { > diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c > index 95394e5..81aa10c 100644 > --- a/drivers/usb/host/xhci.c > +++ b/drivers/usb/host/xhci.c > @@ -659,6 +659,9 @@ void xhci_shutdown(struct usb_hcd *hcd) > { > struct xhci_hcd *xhci = hcd_to_xhci(hcd); > > + if (xhci->quirks && XHCI_SPURIOUS_REBOOT) > + usb_disable_xhci_ports(to_pci_dev(hcd->self.controller)); This looks like a typo, think it should be & not &&. With this code, it appears the quirk will always be triggered since XHCI_SPURIOUS_REBOOT is non-zero. > + > spin_lock_irq(&xhci->lock); > xhci_halt(xhci); > spin_unlock_irq(&xhci->lock); > diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h > index 96f49db..c713256 100644 > --- a/drivers/usb/host/xhci.h > +++ b/drivers/usb/host/xhci.h > @@ -1494,6 +1494,7 @@ struct xhci_hcd { > #define XHCI_TRUST_TX_LENGTH (1 << 10) > #define XHCI_LPM_SUPPORT (1 << 11) > #define XHCI_INTEL_HOST (1 << 12) > +#define XHCI_SPURIOUS_REBOOT (1 << 13) > unsigned int num_active_eps; > unsigned int limit_active_eps; > /* There are two roothubs to keep track of bus suspend info for */ > ^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH] xhci: EHCI/xHCI ports switching on Intense-PC. 2012-07-16 16:46 [PATCH] xhci: EHCI/xHCI ports switching on Intense-PC Denis Turischev 2012-07-17 4:54 ` Sarah Sharp @ 2012-07-17 12:20 ` Sergei Shtylyov 1 sibling, 0 replies; 21+ messages in thread From: Sergei Shtylyov @ 2012-07-17 12:20 UTC (permalink / raw) To: Denis Turischev; +Cc: Sarah Sharp, linux-kernel, linux-usb, Greg Kroah-Hartman Hello. On 16-07-2012 20:46, Denis Turischev wrote: > Intense-PC is Compulab's mini-desktop with Intel Panther Point > chipset. > Unconditional ports switching provided by function > usb_enable_xhci_ports() leads to surprising results, after shutdown > system powered-on again after a few seconds. On Windows power > related problems were not observed. > The patch avoids ports switching for Intense-PC. > Signed-off-by: Denis Turischev <denis@compulab.co.il> > --- > drivers/usb/host/pci-quirks.c | 7 +++++++ > 1 file changed, 7 insertions(+) > diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c > index df0828c..6f72593 100644 > --- a/drivers/usb/host/pci-quirks.c > +++ b/drivers/usb/host/pci-quirks.c > @@ -759,6 +759,13 @@ void usb_enable_xhci_ports(struct pci_dev *xhci_pdev) > { > u32 ports_available; > > + const char *brd_name; Group this declaration with the above one please. > + brd_name = dmi_get_system_info(DMI_BOARD_NAME); Could be an initializer... WBR, Sergei ^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2012-08-23 4:30 UTC | newest] Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2012-07-16 16:46 [PATCH] xhci: EHCI/xHCI ports switching on Intense-PC Denis Turischev 2012-07-17 4:54 ` Sarah Sharp 2012-07-18 6:57 ` Denis Turischev 2012-07-18 16:59 ` Sarah Sharp 2012-07-23 11:46 ` [PATCH 1/2] xhci: provide usb_disable_xhci_ports function for Intel chipsets Denis Turischev 2012-07-23 14:45 ` Sergei Shtylyov 2012-07-23 15:59 ` [PATCH 1/2 v2] " Denis Turischev 2012-07-23 11:46 ` [PATCH 2/2] xhci: EHCI/XHCI ports switching on Intense-PC Denis Turischev 2012-07-23 17:44 ` Sarah Sharp 2012-07-24 8:50 ` Denis Turischev 2012-07-24 19:46 ` Sarah Sharp 2012-07-30 22:34 ` Sarah Sharp 2012-07-31 4:49 ` Oliver Neukum 2012-07-31 17:06 ` Sarah Sharp 2012-07-31 18:39 ` Sarah Sharp 2012-07-31 10:42 ` Denis Turischev 2012-08-07 17:35 ` Sarah Sharp 2012-08-07 17:39 ` [RFT] xhci: Switch PPT ports to EHCI on shutdown Sarah Sharp 2012-08-09 14:31 ` Denis Turischev 2012-08-23 4:30 ` Robert Hancock 2012-07-17 12:20 ` [PATCH] xhci: EHCI/xHCI ports switching on Intense-PC Sergei Shtylyov
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.