From: David Brownell <david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
To: Alan Stern <stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org>
Cc: Bernard Blackham
<bernard-4vSAtV5O1nc0n/F98K4Iww@public.gmane.org>,
ncunningham-3EexvZdKGZRWk0Htik3J/w@public.gmane.org,
Linux-pm mailing list
<linux-pm-qjLDD68F18O7TbgM5vRIOg@public.gmane.org>,
Pavel Machek <pavel-+ZI9xUNit7I@public.gmane.org>
Subject: Re: Re: uhci-hcd suspend/resume under the new driver model
Date: Tue, 15 Mar 2005 14:11:54 -0800 [thread overview]
Message-ID: <200503151411.54748.david-b@pacbell.net> (raw)
In-Reply-To: <Pine.LNX.4.44L0.0503151636290.711-100000-3WpdWqXrU/qjv4eRiOYp3g@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 1796 bytes --]
On Tuesday 15 March 2005 1:48 pm, Alan Stern wrote:
> It turns out there are a few problems in the hcd-pci.c suspend and resume
> routines; mostly that the resume routine doesn't do the reverse of what
> the suspend routine does. One particularly bad symptom is that when
> "resuming" from D0 it does pci_restore_state() even though
> pci_save_state() was never called. That's why my controller ended up
> unconfigured.
I noticed that a while back, and had a patch for it. Didn't seem to
matter on anything I tested; sorry, I should have posted the patch
just for comments, in case it mattered on other hardware! Attached;
applies to current code with some fuzz, not guaranteed to behave.
> One other point: Suspend calls free_irq() and resume calls request_irq().
> This doesn't seem necessary to me since the common IRQ handler will reject
> interrupts occuring while the controller is suspended. Also it's asking
> for trouble if the driver is unloaded before the controller is resumed,
> since the remove routine will call free_irq() again on its own. I've
> #ifdef'ed out those calls below, but this deserves closer attention.
Those request/free calls moved up out of PPC-specific code; Ben can
comment on why at least some of the Apple hardware needed it. The
free_irq() should be safe, since it should be a NOP if there's no
handler associated with that cookie.
> Another thing deserving closer attention is the various error pathways and
> what state they end up leaving the hardware and the data structures in.
As always! My rule of thumb is that if there aren't three lines of
fault handling code for every "productive" line, it's likely there's
something wrong in a fault path. That's not always accurate, but it's
surprisingly close on stable codebases.
- Dave
[-- Attachment #2: hcd.patch --]
[-- Type: text/x-diff, Size: 732 bytes --]
--- 1.50/drivers/usb/core/hcd-pci.c Sun Nov 7 05:06:51 2004
+++ edited/drivers/usb/core/hcd-pci.c Wed Nov 10 09:55:10 2004
@@ -407,9 +407,9 @@
hcd->state = USB_STATE_RESUMING;
- if (has_pci_pm)
- pci_set_power_state (dev, 0);
- dev->dev.power.power_state = 0;
+ pci_enable_device (dev);
+ pci_restore_state (dev);
+ pci_set_master (dev);
retval = request_irq (dev->irq, usb_hcd_irq, SA_SHIRQ,
hcd->description, hcd);
if (retval < 0) {
@@ -418,7 +418,9 @@
return retval;
}
hcd->saw_irq = 0;
- pci_restore_state (dev);
+ if (has_pci_pm)
+ pci_set_power_state (dev, 0);
+ dev->dev.power.power_state = 0;
#ifdef CONFIG_USB_SUSPEND
pci_enable_wake (dev, dev->current_state, 0);
pci_enable_wake (dev, 4, 0);
[-- Attachment #3: Type: text/plain, Size: 0 bytes --]
next prev parent reply other threads:[~2005-03-15 22:11 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20050313101453.GA4820@blackham.com.au>
[not found] ` <20050313101453.GA4820-4vSAtV5O1nc0n/F98K4Iww@public.gmane.org>
2005-03-13 18:12 ` uhci-hcd suspend/resume under the new driver model Pavel Machek
[not found] ` <20050313181225.GC1579-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2005-03-13 22:57 ` Benjamin Herrenschmidt
2005-03-13 23:20 ` Pavel Machek
[not found] ` <20050313232002.GC22635-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2005-03-14 2:23 ` Bernard Blackham
[not found] ` <20050314022308.GD6008-4vSAtV5O1nc0n/F98K4Iww@public.gmane.org>
2005-03-14 4:03 ` David Brownell
[not found] ` <200503132003.27555.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2005-03-14 8:08 ` Pavel Machek
[not found] ` <20050314080827.GG22635-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2005-03-14 18:17 ` David Brownell
[not found] ` <200503141017.17305.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2005-03-14 18:44 ` Pavel Machek
[not found] ` <20050314184454.GL5461-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2005-03-14 18:59 ` David Brownell
[not found] ` <200503141059.26107.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2005-03-14 19:30 ` Pavel Machek
[not found] ` <20050314193054.GO5461-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2005-03-16 21:05 ` David Brownell
[not found] ` <200503161305.57698.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2005-03-16 21:44 ` Nigel Cunningham
[not found] ` <1111009442.3240.28.camel-r49W/1Cwd2ff0s6lnCXPX/uOuaPYTxhvJwvTLr3MMZM@public.gmane.org>
2005-03-16 22:12 ` David Brownell
[not found] ` <200503161412.42387.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2005-03-16 22:19 ` Pavel Machek
2005-03-16 22:48 ` Nigel Cunningham
2005-03-16 21:57 ` Pavel Machek
2005-03-14 22:22 ` Benjamin Herrenschmidt
2005-03-14 22:21 ` Benjamin Herrenschmidt
2005-03-14 22:31 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.0503141717240.620-100000-3WpdWqXrU/qjv4eRiOYp3g@public.gmane.org>
2005-03-14 22:38 ` Nigel Cunningham
2005-03-15 21:48 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.0503151636290.711-100000-3WpdWqXrU/qjv4eRiOYp3g@public.gmane.org>
2005-03-15 21:52 ` Pavel Machek
2005-03-15 22:11 ` David Brownell [this message]
2005-03-16 3:04 ` Bernard Blackham
[not found] ` <20050316030448.GA8588-4vSAtV5O1nc0n/F98K4Iww@public.gmane.org>
2005-03-16 15:45 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.0503161024360.1040-100000-3WpdWqXrU/qjv4eRiOYp3g@public.gmane.org>
2005-03-16 16:52 ` Bernard Blackham
[not found] ` <20050316165239.GA10545-4vSAtV5O1nc0n/F98K4Iww@public.gmane.org>
2005-03-16 18:44 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.0503161336500.1040-100000-3WpdWqXrU/qjv4eRiOYp3g@public.gmane.org>
2005-03-17 1:10 ` Bernard Blackham
[not found] ` <20050317011013.GD10545-4vSAtV5O1nc0n/F98K4Iww@public.gmane.org>
2005-03-17 3:57 ` Alan Stern
2005-03-16 21:09 ` David Brownell
[not found] ` <200503161309.34142.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2005-03-16 22:10 ` Alan Stern
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=200503151411.54748.david-b@pacbell.net \
--to=david-b-ybekhbn/0ldr7s880joybq@public.gmane.org \
--cc=bernard-4vSAtV5O1nc0n/F98K4Iww@public.gmane.org \
--cc=linux-pm-qjLDD68F18O7TbgM5vRIOg@public.gmane.org \
--cc=ncunningham-3EexvZdKGZRWk0Htik3J/w@public.gmane.org \
--cc=pavel-+ZI9xUNit7I@public.gmane.org \
--cc=stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.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