From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Shawn Nematbakhsh <shawnn@chromium.org>,
Sarah Sharp <sarah.a.sharp@linux.intel.com>
Subject: [ 06/28] usb: xhci: Disable runtime PM suspend for quirky controllers
Date: Tue, 24 Sep 2013 17:07:37 -0700 [thread overview]
Message-ID: <20130925000650.000689258@linuxfoundation.org> (raw)
In-Reply-To: <20130925000648.404447782@linuxfoundation.org>
3.0-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shawn Nematbakhsh <shawnn@chromium.org>
commit c8476fb855434c733099079063990e5bfa7ecad6 upstream.
If a USB controller with XHCI_RESET_ON_RESUME goes to runtime suspend,
a reset will be performed upon runtime resume. Any previously suspended
devices attached to the controller will be re-enumerated at this time.
This will cause problems, for example, if an open system call on the
device triggered the resume (the open call will fail).
Note that this change is only relevant when persist_enabled is not set
for USB devices.
This patch should be backported to kernels as old as 3.0, that
contain the commit c877b3b2ad5cb9d4fe523c5496185cc328ff3ae9 "xhci: Add
reset on resume quirk for asrock p67 host".
Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/host/xhci.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -2713,10 +2713,21 @@ void xhci_free_dev(struct usb_hcd *hcd,
{
struct xhci_hcd *xhci = hcd_to_xhci(hcd);
struct xhci_virt_device *virt_dev;
+ struct device *dev = hcd->self.controller;
unsigned long flags;
u32 state;
int i, ret;
+#ifndef CONFIG_USB_DEFAULT_PERSIST
+ /*
+ * We called pm_runtime_get_noresume when the device was attached.
+ * Decrement the counter here to allow controller to runtime suspend
+ * if no devices remain.
+ */
+ if (xhci->quirks & XHCI_RESET_ON_RESUME)
+ pm_runtime_put_noidle(dev);
+#endif
+
ret = xhci_check_args(hcd, udev, NULL, 0, true, __func__);
/* If the host is halted due to driver unload, we still need to free the
* device.
@@ -2783,6 +2794,7 @@ static int xhci_reserve_host_control_ep_
int xhci_alloc_dev(struct usb_hcd *hcd, struct usb_device *udev)
{
struct xhci_hcd *xhci = hcd_to_xhci(hcd);
+ struct device *dev = hcd->self.controller;
unsigned long flags;
int timeleft;
int ret;
@@ -2835,6 +2847,16 @@ int xhci_alloc_dev(struct usb_hcd *hcd,
goto disable_slot;
}
udev->slot_id = xhci->slot_id;
+
+#ifndef CONFIG_USB_DEFAULT_PERSIST
+ /*
+ * If resetting upon resume, we can't put the controller into runtime
+ * suspend if there is a device attached.
+ */
+ if (xhci->quirks & XHCI_RESET_ON_RESUME)
+ pm_runtime_get_noresume(dev);
+#endif
+
/* Is this a LS or FS device under a HS hub? */
/* Hub or peripherial? */
return 1;
next prev parent reply other threads:[~2013-09-25 0:07 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-25 0:07 [ 00/28] 3.0.97-stable review Greg Kroah-Hartman
2013-09-25 0:07 ` [ 01/28] SCSI: sd: Fix potential out-of-bounds access Greg Kroah-Hartman
2013-09-25 0:07 ` [ 02/28] crypto: api - Fix race condition in larval lookup Greg Kroah-Hartman
2013-09-25 0:07 ` [ 03/28] powerpc: Handle unaligned ldbrx/stdbrx Greg Kroah-Hartman
2013-09-25 0:07 ` [ 04/28] xen-gnt: prevent adding duplicate gnt callbacks Greg Kroah-Hartman
2013-09-25 0:07 ` [ 05/28] ARM: PCI: versatile: Fix SMAP register offsets Greg Kroah-Hartman
2013-09-25 0:07 ` Greg Kroah-Hartman [this message]
2013-09-25 0:07 ` [ 07/28] cifs: ensure that srv_mutex is held when dealing with ssocket pointer Greg Kroah-Hartman
2013-09-25 0:07 ` [ 08/28] staging: comedi: dt282x: dt282x_ai_insn_read() always fails Greg Kroah-Hartman
2013-09-25 0:07 ` [ 09/28] USB: mos7720: use GFP_ATOMIC under spinlock Greg Kroah-Hartman
2013-09-25 0:07 ` [ 10/28] USB: mos7720: fix big-endian control requests Greg Kroah-Hartman
2013-09-25 0:07 ` [ 11/28] USB: cdc-wdm: fix race between interrupt handler and tasklet Greg Kroah-Hartman
2013-09-25 0:07 ` [ 12/28] usb: config->desc.bLength may not exceed amount of data returned by the device Greg Kroah-Hartman
2013-09-25 0:07 ` [ 13/28] rculist: list_first_or_null_rcu() should use list_entry_rcu() Greg Kroah-Hartman
2013-09-25 0:07 ` [ 14/28] ASoC: wm8960: Fix PLL register writes Greg Kroah-Hartman
2013-09-25 0:07 ` [ 15/28] ALSA: hda - Add Toshiba Satellite C870 to MSI blacklist Greg Kroah-Hartman
2013-09-25 0:07 ` [ 16/28] ath9k: always clear ps filter bit on new assoc Greg Kroah-Hartman
2013-09-25 0:07 ` [ 17/28] ath9k: avoid accessing MRC registers on single-chain devices Greg Kroah-Hartman
2013-09-25 0:07 ` [ 18/28] HID: pantherlord: validate output report details Greg Kroah-Hartman
2013-09-25 0:07 ` [ 19/28] HID: validate HID report id size Greg Kroah-Hartman
2013-09-25 0:07 ` [ 20/28] HID: ntrig: validate feature report details Greg Kroah-Hartman
2013-09-25 0:07 ` [ 21/28] HID: check for NULL field when setting values Greg Kroah-Hartman
2013-09-25 0:07 ` [ 22/28] ocfs2: fix the end cluster offset of FIEMAP Greg Kroah-Hartman
2013-09-25 0:07 ` [ 23/28] memcg: fix multiple large threshold notifications Greg Kroah-Hartman
2013-09-25 0:07 ` [ 24/28] mm/huge_memory.c: fix potential NULL pointer dereference Greg Kroah-Hartman
2013-09-25 0:07 ` [ 25/28] isofs: Refuse RW mount of the filesystem instead of making it RO Greg Kroah-Hartman
2013-09-25 0:07 ` [ 26/28] mmc: tmio_mmc_dma: fix PIO fallback on SDHI Greg Kroah-Hartman
2013-09-25 0:07 ` [ 27/28] fuse: postpone end_page_writeback() in fuse_writepage_locked() Greg Kroah-Hartman
2013-09-25 0:07 ` [ 28/28] fuse: invalidate inode attributes on xattr modification Greg Kroah-Hartman
2013-09-26 2:22 ` [ 00/28] 3.0.97-stable review Shuah Khan
2013-09-26 2:45 ` Greg Kroah-Hartman
2013-09-27 18:52 ` Teck Choon Giam
2013-09-27 19:21 ` Shuah Khan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130925000650.000689258@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sarah.a.sharp@linux.intel.com \
--cc=shawnn@chromium.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).