All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jon Hunter <jon-hunter@ti.com>
To: "linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>
Subject: [Fwd: patch usb-ehci-ensure-all-watchdog-timer-events-are-deleted-when-suspending-usb.patch added to gregkh-2.6 tree]
Date: Fri, 14 Aug 2009 12:40:31 -0500	[thread overview]
Message-ID: <4A85A18F.4040207@ti.com> (raw)

Hi All,

I just thought I would send out this patch as an FYI. We recently ran 
into an issue where we were getting a kernel panic in the ehci driver 
when entering suspend on the omap3. We discussed this with the linux-usb 
folks and they recommended the below fix. This problem is hard to 
reproduce, but has not been seen since adding this fix. Anyway the 
details are below.

Cheers
Jon

-------- Original Message --------
Subject: patch 
usb-ehci-ensure-all-watchdog-timer-events-are-deleted-when-suspending-usb.patch 
added to gregkh-2.6 tree
Date: Fri, 14 Aug 2009 11:48:45 -0500
From: gregkh@suse.de <gregkh@suse.de>
To: Hunter, Jon <jon-hunter@ti.com>, fei.yang@motorola.com 
<fei.yang@motorola.com>, gregkh@suse.de <gregkh@suse.de>, 
greg@kroah.com	<greg@kroah.com>, stern@rowland.harvard.edu 
<stern@rowland.harvard.edu>


This is a note to let you know that I've just added the patch titled

     Subject: USB: EHCI: ensure all watchdog timer events are deleted 
when suspending usb

to my gregkh-2.6 tree.  Its filename is

 
usb-ehci-ensure-all-watchdog-timer-events-are-deleted-when-suspending-usb.patch

This tree can be found at
 
http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/patches/


 From stern@rowland.harvard.edu  Thu Aug 13 16:37:16 2009
From: Jon Hunter <jon-hunter@ti.com>
Date: Wed, 12 Aug 2009 11:57:59 -0400 (EDT)
Subject: USB: EHCI: ensure all watchdog timer events are deleted when 
suspending usb
To: Greg KH <greg@kroah.com>, Jon Hunter <jon-hunter@ti.com>
Cc: Fei Yang <fei.yang@motorola.com>
Message-ID: <Pine.LNX.4.44L0.0908121157090.9635-100000@iolanthe.rowland.org>


From: Jon Hunter <jon-hunter@ti.com>

This patch was previously discussed in the following thread:
http://thread.gmane.org/gmane.linux.usb.general/19472/focus=19484

On the OMAP3 device the usbhost controller is in a separate internal
power-domain. So when the usbhost is inactive or suspend is called,
we can disable clocks and power-down the usbhost to save power.

Recently we found that after calling ehci_bus_suspend() and disabling
the usbhost clocks we would see the ehci watchdog timer event fire. This
was causing a kernel panic because the usbhost controllers clocks were
disabled and inside the watchdog timer function the clocks were not
being re-enabled, so when the ehci registers were accessed this resulted
in a CPU data-abort.

To avoid this panic, per recommendation from Alan Stern (see above 
thread), we
make sure any pending timer events (that may have been scheduled by calling
ehci_work within the ehci_bus_suspend() function) are deleted before 
returning.

Signed-off-by: Fei Yang <fei.yang@motorola.com>
Signed-off-by: Jon Hunter <jon-hunter@ti.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
  drivers/usb/host/ehci-hub.c |    5 +++++
  1 file changed, 5 insertions(+)

--- a/drivers/usb/host/ehci-hub.c
+++ b/drivers/usb/host/ehci-hub.c
@@ -209,6 +209,11 @@ static int ehci_bus_suspend (struct usb_

  	ehci->next_statechange = jiffies + msecs_to_jiffies(10);
  	spin_unlock_irq (&ehci->lock);
+
+	/* ehci_work() may have re-enabled the watchdog timer, which we do not
+	 * want, and so we must delete any pending watchdog timer events.
+	 */
+	del_timer_sync(&ehci->watchdog);
  	return 0;
  }




             reply	other threads:[~2009-08-14 17:40 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-14 17:40 Jon Hunter [this message]
2009-08-14 18:20 ` [Fwd: patch usb-ehci-ensure-all-watchdog-timer-events-are-deleted-when-suspending-usb.patch added to gregkh-2.6 tree] Kevin Hilman
2009-08-14 18:44   ` Jon Hunter

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=4A85A18F.4040207@ti.com \
    --to=jon-hunter@ti.com \
    --cc=linux-omap@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 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.