* [PATCH 0/1] xhci: fixes for 3.14 @ 2014-03-03 17:30 Mathias Nyman 2014-03-03 17:30 ` [PATCH v3 1/1] xhci: Prevent runtime pm from autosuspending during initialization Mathias Nyman 0 siblings, 1 reply; 6+ messages in thread From: Mathias Nyman @ 2014-03-03 17:30 UTC (permalink / raw) To: gregkh Cc: linux-usb, linux-kernel, sarah.a.sharp, dan.j.williams, Mathias Nyman Hi Greg, Here's a small xhci fix for 3.14 rc Only one patch that prevents a panic on xhci_suspend() during xhci initialization on some specific intel platforms if autosuspend is set to 0. We're already at rc5 and I'm not sure what is acceptable anymore at this stage in the cycle. -Mathias Mathias Nyman (1): xhci: Prevent runtime pm from autosuspending during initialization drivers/usb/host/xhci-pci.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) -- 1.8.1.2 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v3 1/1] xhci: Prevent runtime pm from autosuspending during initialization 2014-03-03 17:30 [PATCH 0/1] xhci: fixes for 3.14 Mathias Nyman @ 2014-03-03 17:30 ` Mathias Nyman [not found] ` <20140303183733.GA13926@kroah.com> 0 siblings, 1 reply; 6+ messages in thread From: Mathias Nyman @ 2014-03-03 17:30 UTC (permalink / raw) To: gregkh Cc: linux-usb, linux-kernel, sarah.a.sharp, dan.j.williams, Mathias Nyman, stable xHCI driver has its own pci probe function that will call usb_hcd_pci_probe to register its usb-2 bus, and then continue to manually register the usb-3 bus. usb_hcd_pci_probe does a pm_runtime_put_noidle at the end and might thus trigger a runtime suspend before the usb-3 bus is ready. Prevent the runtime suspend by increasing the usage count in the beginning of xhci_pci_probe, and decrease it once the usb-3 bus is ready. xhci-platform driver is not using usb_hcd_pci_probe to set up busses and should not need to have it's usage count increased during probe. Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> Acked-by: Dan Williams <dan.j.williams@intel.com> Acked-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> Cc: stable@vger.kernel.org --- drivers/usb/host/xhci-pci.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c index 04f986d..753857f 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c @@ -190,6 +190,10 @@ static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) struct usb_hcd *hcd; driver = (struct hc_driver *)id->driver_data; + + /* Prevent runtime suspending between USB-2 and USB-3 initialization */ + pm_runtime_get_noresume(&dev->dev); + /* Register the USB 2.0 roothub. * FIXME: USB core must know to register the USB 2.0 roothub first. * This is sort of silly, because we could just set the HCD driver flags @@ -199,7 +203,7 @@ static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) retval = usb_hcd_pci_probe(dev, id); if (retval) - return retval; + goto put_runtime_pm; /* USB 2.0 roothub is stored in the PCI device now. */ hcd = dev_get_drvdata(&dev->dev); @@ -228,12 +232,17 @@ static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) if (xhci->quirks & XHCI_LPM_SUPPORT) hcd_to_bus(xhci->shared_hcd)->root_hub->lpm_capable = 1; + /* USB-2 and USB-3 roothubs initialized, allow runtime pm suspend */ + pm_runtime_put_noidle(&dev->dev); + return 0; put_usb3_hcd: usb_put_hcd(xhci->shared_hcd); dealloc_usb2_hcd: usb_hcd_pci_remove(dev); +put_runtime_pm: + pm_runtime_put_noidle(&dev->dev); return retval; } -- 1.8.1.2 ^ permalink raw reply related [flat|nested] 6+ messages in thread
[parent not found: <20140303183733.GA13926@kroah.com>]
* Re: [PATCH v3 1/1] xhci: Prevent runtime pm from autosuspending during initialization [not found] ` <20140303183733.GA13926@kroah.com> @ 2014-03-04 11:50 ` Mathias Nyman 2014-03-04 17:04 ` Greg KH 0 siblings, 1 reply; 6+ messages in thread From: Mathias Nyman @ 2014-03-04 11:50 UTC (permalink / raw) To: Greg KH Cc: linux-usb, linux-kernel, sarah.a.sharp, dan.j.williams, stable, David Cohen On 03/03/2014 08:37 PM, Greg KH wrote: > On Mon, Mar 03, 2014 at 07:30:17PM +0200, Mathias Nyman wrote: >> xHCI driver has its own pci probe function that will call usb_hcd_pci_probe >> to register its usb-2 bus, and then continue to manually register the >> usb-3 bus. usb_hcd_pci_probe does a pm_runtime_put_noidle at the end and >> might thus trigger a runtime suspend before the usb-3 bus is ready. > > What is the result if that happens? Crashes. Null pointer dereference in xhci_suspend() when touching xhci->shared_hcd before it's initialized. More info here: http://marc.info/?l=linux-usb&m=138914518219334&w=2 > > Is this a regression from 3.13? Or something new for 3.14? > According to reporter its been around since 3.7 commit 596d789a211d134dc5f94d1e5957248c204ef850 USB: set hub's default autosuspend delay as 0 But nobody else than the reporter is able to trigger it. > What platform(s) are affected by this? David, the reporter (added to cc), mentioned "This bug happened in a platform with 1 usb3 host controller + 1 usb3 OTG controller" run by some Intel internal group http://marc.info/?l=linux-usb&m=138915969822029&w=2 David, can you elaborate on the platform? >> xhci-platform driver is not using usb_hcd_pci_probe to set up >> busses and should not need to have it's usage count increased during probe. > > I didn't think we had any in-kernel users of the xhci-platform driver, > has that changed and I missed a new platform being added? > Not that I'm aware of. I just wanted to point out that this issue is only a matter on pci enumerated xhci hosts. -Mathias ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v3 1/1] xhci: Prevent runtime pm from autosuspending during initialization 2014-03-04 11:50 ` Mathias Nyman @ 2014-03-04 17:04 ` Greg KH 2014-03-04 17:35 ` David Cohen 2014-03-04 22:44 ` Sarah Sharp 0 siblings, 2 replies; 6+ messages in thread From: Greg KH @ 2014-03-04 17:04 UTC (permalink / raw) To: Mathias Nyman Cc: linux-usb, linux-kernel, sarah.a.sharp, dan.j.williams, stable, David Cohen On Tue, Mar 04, 2014 at 01:50:55PM +0200, Mathias Nyman wrote: > On 03/03/2014 08:37 PM, Greg KH wrote: > >On Mon, Mar 03, 2014 at 07:30:17PM +0200, Mathias Nyman wrote: > >>xHCI driver has its own pci probe function that will call usb_hcd_pci_probe > >>to register its usb-2 bus, and then continue to manually register the > >>usb-3 bus. usb_hcd_pci_probe does a pm_runtime_put_noidle at the end and > >>might thus trigger a runtime suspend before the usb-3 bus is ready. > > > >What is the result if that happens? > > Crashes. Null pointer dereference in xhci_suspend() when touching > xhci->shared_hcd before it's initialized. More info here: > > http://marc.info/?l=linux-usb&m=138914518219334&w=2 > > > > >Is this a regression from 3.13? Or something new for 3.14? > > > > According to reporter its been around since 3.7 > > commit 596d789a211d134dc5f94d1e5957248c204ef850 > USB: set hub's default autosuspend delay as 0 > > But nobody else than the reporter is able to trigger it. Then it can wait for 3.15-rc1, and then go back to the stable trees at that time, right? I'd prefer that as it's not a regression and not common. > >What platform(s) are affected by this? > > David, the reporter (added to cc), mentioned > "This bug happened in a platform with 1 usb3 host controller + 1 usb3 OTG > controller" run by some Intel internal group > > http://marc.info/?l=linux-usb&m=138915969822029&w=2 That sounds like a "not shipping platform" to me :) Please resend this with patches for 3.15-rc1. thanks, greg k-h ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v3 1/1] xhci: Prevent runtime pm from autosuspending during initialization 2014-03-04 17:04 ` Greg KH @ 2014-03-04 17:35 ` David Cohen 2014-03-04 22:44 ` Sarah Sharp 1 sibling, 0 replies; 6+ messages in thread From: David Cohen @ 2014-03-04 17:35 UTC (permalink / raw) To: Greg KH Cc: Mathias Nyman, linux-usb, linux-kernel, sarah.a.sharp, dan.j.williams, stable Hi Greg, On Tue, Mar 04, 2014 at 09:04:58AM -0800, Greg KH wrote: > On Tue, Mar 04, 2014 at 01:50:55PM +0200, Mathias Nyman wrote: > > On 03/03/2014 08:37 PM, Greg KH wrote: > > >On Mon, Mar 03, 2014 at 07:30:17PM +0200, Mathias Nyman wrote: > > >>xHCI driver has its own pci probe function that will call usb_hcd_pci_probe > > >>to register its usb-2 bus, and then continue to manually register the > > >>usb-3 bus. usb_hcd_pci_probe does a pm_runtime_put_noidle at the end and > > >>might thus trigger a runtime suspend before the usb-3 bus is ready. > > > > > >What is the result if that happens? > > > > Crashes. Null pointer dereference in xhci_suspend() when touching > > xhci->shared_hcd before it's initialized. More info here: > > > > http://marc.info/?l=linux-usb&m=138914518219334&w=2 > > > > > > > >Is this a regression from 3.13? Or something new for 3.14? > > > > > > > According to reporter its been around since 3.7 > > > > commit 596d789a211d134dc5f94d1e5957248c204ef850 > > USB: set hub's default autosuspend delay as 0 > > > > But nobody else than the reporter is able to trigger it. > > Then it can wait for 3.15-rc1, and then go back to the stable trees at > that time, right? I'd prefer that as it's not a regression and not > common. > > > >What platform(s) are affected by this? > > > > David, the reporter (added to cc), mentioned > > "This bug happened in a platform with 1 usb3 host controller + 1 usb3 OTG > > controller" run by some Intel internal group > > > > http://marc.info/?l=linux-usb&m=138915969822029&w=2 > > That sounds like a "not shipping platform" to me :) Not quite. You'd find this configuration on Asus T100T. I said "not quite" because I don't think we can run Linux smoothly on it yet. But... > > Please resend this with patches for 3.15-rc1. ...that sounds fine :) Br, David > > thanks, > > greg k-h ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v3 1/1] xhci: Prevent runtime pm from autosuspending during initialization 2014-03-04 17:04 ` Greg KH 2014-03-04 17:35 ` David Cohen @ 2014-03-04 22:44 ` Sarah Sharp 1 sibling, 0 replies; 6+ messages in thread From: Sarah Sharp @ 2014-03-04 22:44 UTC (permalink / raw) To: Greg KH Cc: Mathias Nyman, linux-usb, linux-kernel, dan.j.williams, stable, David Cohen On Tue, Mar 04, 2014 at 09:04:58AM -0800, Greg KH wrote: > On Tue, Mar 04, 2014 at 01:50:55PM +0200, Mathias Nyman wrote: > > On 03/03/2014 08:37 PM, Greg KH wrote: > > >On Mon, Mar 03, 2014 at 07:30:17PM +0200, Mathias Nyman wrote: > > >>xHCI driver has its own pci probe function that will call usb_hcd_pci_probe > > >>to register its usb-2 bus, and then continue to manually register the > > >>usb-3 bus. usb_hcd_pci_probe does a pm_runtime_put_noidle at the end and > > >>might thus trigger a runtime suspend before the usb-3 bus is ready. > > > > > >What is the result if that happens? > > > > Crashes. Null pointer dereference in xhci_suspend() when touching > > xhci->shared_hcd before it's initialized. More info here: > > > > http://marc.info/?l=linux-usb&m=138914518219334&w=2 > > > > > > > >Is this a regression from 3.13? Or something new for 3.14? > > > > > > > According to reporter its been around since 3.7 > > > > commit 596d789a211d134dc5f94d1e5957248c204ef850 > > USB: set hub's default autosuspend delay as 0 > > > > But nobody else than the reporter is able to trigger it. > > Then it can wait for 3.15-rc1, and then go back to the stable trees at > that time, right? I'd prefer that as it's not a regression and not > common. Ok, I'll queue it with the other features for 3.15. Sarah Sharp ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-03-04 22:44 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-03 17:30 [PATCH 0/1] xhci: fixes for 3.14 Mathias Nyman
2014-03-03 17:30 ` [PATCH v3 1/1] xhci: Prevent runtime pm from autosuspending during initialization Mathias Nyman
[not found] ` <20140303183733.GA13926@kroah.com>
2014-03-04 11:50 ` Mathias Nyman
2014-03-04 17:04 ` Greg KH
2014-03-04 17:35 ` David Cohen
2014-03-04 22:44 ` Sarah Sharp
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox