mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: stable-review@kernel.org, torvalds@linux-foundation.org,
	akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk,
	Alan Stern <stern@rowland.harvard.edu>,
	Rickard Bellini <rickard.bellini@ericsson.com>
Subject: [15/29] USB: add missing delay during remote wakeup
Date: Fri, 22 Jan 2010 16:09:59 -0800	[thread overview]
Message-ID: <20100123001112.141623063@mini.kroah.org> (raw)
In-Reply-To: <20100123001145.GA7391@kroah.com>

2.6.32-stable review patch.  If anyone has any objections, please let us know.

------------------

From: Alan Stern <stern@rowland.harvard.edu>

commit 49d0f078f494b9d81e820a13dd8093a9bfb0b6b1 upstream.

This patch (as1330) fixes a bug in khbud's handling of remote
wakeups.  When a device sends a remote-wakeup request, the parent hub
(or the host controller driver, for directly attached devices) begins
the resume sequence and notifies khubd when the sequence finishes.  At
this point the port's SUSPEND feature is automatically turned off.

However the device needs an additional 10-ms resume-recovery time
(TRSMRCY in the USB spec).  Khubd does not wait for this delay if the
SUSPEND feature is off, and as a result some devices fail to behave
properly following a remote wakeup.  This patch adds the missing
delay to the remote-wakeup path.

It also extends the resume-signalling delay used by ehci-hcd and
uhci-hcd from 20 ms (the value in the spec) to 25 ms (the value we use
for non-remote-wakeup resumes).  The extra time appears to help some
devices.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Cc: Rickard Bellini <rickard.bellini@ericsson.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/usb/core/hub.c      |    3 +++
 drivers/usb/host/ehci-hcd.c |    5 +++--
 drivers/usb/host/uhci-hub.c |    2 +-
 3 files changed, 7 insertions(+), 3 deletions(-)

--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -3286,6 +3286,9 @@ static void hub_events(void)
 					USB_PORT_FEAT_C_SUSPEND);
 				udev = hdev->children[i-1];
 				if (udev) {
+					/* TRSMRCY = 10 msec */
+					msleep(10);
+
 					usb_lock_device(udev);
 					ret = remote_wakeup(hdev->
 							children[i-1]);
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -785,9 +785,10 @@ static irqreturn_t ehci_irq (struct usb_
 
 			/* start 20 msec resume signaling from this port,
 			 * and make khubd collect PORT_STAT_C_SUSPEND to
-			 * stop that signaling.
+			 * stop that signaling.  Use 5 ms extra for safety,
+			 * like usb_port_resume() does.
 			 */
-			ehci->reset_done [i] = jiffies + msecs_to_jiffies (20);
+			ehci->reset_done[i] = jiffies + msecs_to_jiffies(25);
 			ehci_dbg (ehci, "port %d remote wakeup\n", i + 1);
 			mod_timer(&hcd->rh_timer, ehci->reset_done[i]);
 		}
--- a/drivers/usb/host/uhci-hub.c
+++ b/drivers/usb/host/uhci-hub.c
@@ -167,7 +167,7 @@ static void uhci_check_ports(struct uhci
 				/* Port received a wakeup request */
 				set_bit(port, &uhci->resuming_ports);
 				uhci->ports_timeout = jiffies +
-						msecs_to_jiffies(20);
+						msecs_to_jiffies(25);
 
 				/* Make sure we see the port again
 				 * after the resuming period is over. */



  parent reply	other threads:[~2010-01-23  0:24 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-23  0:11 [00/29] 2.6.32.6 stable review Greg KH
2010-01-23  0:09 ` [01/29] x86, msr/cpuid: Register enough minors for the MSR and CPUID drivers Greg KH
2010-01-23  0:09 ` [02/29] V4L/DVB (13900): gspca - sunplus: Fix bridge exchanges Greg KH
2010-01-23  0:09 ` [03/29] Staging: asus_oled: fix oops in 2.6.32.2 Greg KH
2010-01-23  0:09 ` [04/29] Staging: hv: fix smp problems in the hyperv core code Greg KH
2010-01-23  0:09 ` [05/29] tty: fix race in tty_fasync Greg KH
2010-01-23  0:09 ` [06/29] ecryptfs: use after free Greg KH
2010-01-23  0:09 ` [07/29] ecryptfs: initialize private persistent file before dereferencing pointer Greg KH
2010-01-23  0:09 ` [08/29] nozomi: quick fix for the close/close bug Greg KH
2010-01-23  0:09 ` [09/29] serial: 8250_pnp: use wildcard for serial Wacom tablets Greg KH
2010-01-23  0:09 ` [10/29] usb: serial: fix memory leak in generic driver Greg KH
2010-01-23  0:09 ` [11/29] USB: fix bitmask merge error Greg KH
2010-01-23  0:09 ` [12/29] USB: Dont use GFP_KERNEL while we cannot reset a storage device Greg KH
2010-01-23  0:09 ` [13/29] USB: EHCI: fix handling of unusual interrupt intervals Greg KH
2010-01-23  0:09 ` [14/29] USB: EHCI & UHCI: fix race between root-hub suspend and port resume Greg KH
2010-01-23  0:09 ` Greg KH [this message]
2010-01-23  0:10 ` [16/29] USB: add speed values for USB 3.0 and wireless controllers Greg KH
2010-01-23  0:10 ` [17/29] ACPI: EC: Accelerate query execution Greg KH
2010-01-23  0:10 ` [18/29] ACPI: EC: Add wait for irq storm Greg KH
2010-01-23  0:10 ` [19/29] SCSI: enclosure: fix oops while iterating enclosure_status array Greg KH
2010-01-23  0:10 ` [20/29] drm/i915: Read the response after issuing DDC bus switch command Greg KH
2010-01-23  0:10 ` [21/29] drm/i915: try another possible DDC bus for the SDVO device with multiple outputs Greg KH
2010-01-23  0:10 ` [22/29] block: bdev_stack_limits wrapper Greg KH
2010-01-23  0:10 ` [23/29] DM: Fix device mapper topology stacking Greg KH
2010-01-23  0:10 ` [24/29] x86/PCI/PAT: return EINVAL for pci mmap WC request for !pat_enabled Greg KH
2010-01-23  0:10 ` [25/29] USB: fix usbstorage for 2770:915d delivers no FAT Greg KH
2010-01-23  2:43   ` [Stable-review] " Ben Hutchings
2010-01-23  6:05     ` Greg KH
2010-01-23  0:10 ` [26/29] vmalloc: remove BUG_ON due to racy counting of VM_LAZY_FREE Greg KH
2010-01-23  0:10 ` [27/29] perf timechart: Use tid not pid for COMM change Greg KH
2010-01-23  0:10 ` [28/29] perf events: Dont report side-band events on each cpu for per-task-per-cpu events Greg KH
2010-01-23 11:38   ` [Stable-review] " Stefan Bader
2010-01-23 15:33     ` Greg KH
2010-01-25 18:04     ` Greg KH
2010-01-23  0:10 ` [29/29] perf: Honour event state for aux stream data Greg KH
2010-01-24  7:21 ` [stable] [00/29] 2.6.32.6 stable review Andrew Morton
2010-01-24 16:29   ` Thomas Gleixner
2010-01-25  8:40     ` Ozan Çağlayan
2010-01-25 17:16       ` Greg KH
2010-01-25 17:39         ` Ozan Çağlayan
2010-01-25 17:46           ` Greg KH
2010-01-25 19:09             ` Greg KH
2010-01-25 18:22         ` Thomas Gleixner
2010-01-25 17:15     ` Greg KH

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=20100123001112.141623063@mini.kroah.org \
    --to=gregkh@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rickard.bellini@ericsson.com \
    --cc=stable-review@kernel.org \
    --cc=stable@kernel.org \
    --cc=stern@rowland.harvard.edu \
    --cc=torvalds@linux-foundation.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

all inboxes | Powered by JetHome®