From: Jason Wessel <jason.wessel@windriver.com>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: gregkh@suse.de, linux-usb@vger.kernel.org,
linux-kernel@vger.kernel.org, dbrownell@users.sourceforge.net,
Ingo Molnar <mingo@elte.hu>,
Andrew Morton <akpm@linux-foundation.org>,
Yinghai Lu <yinghai@kernel.org>,
"Eric W. Biederman" <ebiederm@xmission.com>
Subject: Re: [PATCH 07/10] ehci-dbgp,ehci: Allow early or late use of the dbgp device
Date: Mon, 03 Aug 2009 09:48:01 -0500 [thread overview]
Message-ID: <4A76F8A1.3020000@windriver.com> (raw)
In-Reply-To: <Pine.LNX.4.44L0.0908011144110.20464-100000@netrider.rowland.org>
Alan Stern wrote:
> On Fri, 31 Jul 2009, Jason Wessel wrote:
>
>
>> Alan Stern wrote:
>>
>>> What happens across a system suspend?
>>>
>>>
>>>
>> I assume you mean as a test case:
>>
>> echo -n mem > /sys/power/state
>>
>> The dbgp device goes away entirely, when used with
>> earlyprintk=dbgp,keep. But there is a way to fix it reasonably
>> easily. Perhaps you might ack this resume patch, if you agree?
>>
>> Jason.
>>
>> ---
>> From: Jason Wessel <jason.wessel@windriver.com>
>> Subject: [PATCH] ehci-dbgp,ehci: Allow dbpg to work with suspend/resume
>>
>> In order for the dbgp driver to survive suspend/resume, on every ehci
>> resume operation the debug controller must get re-initialized.
>>
>> Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
>> Cc: Greg KH <gregkh@suse.de>
>> Cc: Alan Stern <stern@rowland.harvard.edu>
>> Cc: dbrownell@users.sourceforge.net
>> Cc: Ingo Molnar <mingo@elte.hu>
>> Cc: Andrew Morton <akpm@linux-foundation.org>
>> Cc: Yinghai Lu <yinghai@kernel.org>
>> Cc: "Eric W. Biederman" <ebiederm@xmission.com>
>>
>> ---
>> drivers/usb/host/ehci-hub.c | 6 ++++++
>> 1 file changed, 6 insertions(+)
>>
>> --- a/drivers/usb/host/ehci-hub.c
>> +++ b/drivers/usb/host/ehci-hub.c
>> @@ -204,6 +204,13 @@ static int ehci_bus_resume (struct usb_h
>> return -ESHUTDOWN;
>> }
>>
>> + if (unlikely(ehci->debug)) {
>> + if (ehci->debug && !dbgp_reset_prep())
>> + ehci->debug = NULL;
>> + else
>> + dbgp_external_startup();
>> + }
>> +
>> /* Ideally and we've got a real resume here, and no port's power
>> * was lost. (For PCI, that means Vaux was maintained.) But we
>> * could instead be restoring a swsusp snapshot -- so that BIOS was
>>
>
> It looks fine to me. Would you perhaps want to make dbgp_reset_prep()
> automatically call dbgp_external_startup() on success so that ehci-hcd
> doesn't have to?
>
Unfortunately the dbgp_reset_prep() and dbgp_external_startup() have to
be separate for the hcd case because the ehci controller reset comes in
between. If you don't call dbgp_reset_prep() first, the ehci controller
can hang the system for the "ehci debug controller timeout death
period", or you can end up with undefined behavior if the ehci debug
controller is accessed while the reset code is being processed.
The dbgp_reset_prep() puts the ehci debug controller/driver into a safe
state until after the reset is done, and then the
dbgp_external_startup() re-initializes the ehci debug controller.
For the case of the power suspend, the ehci debug controller appeared to
be usable all the way to the time the power got yanked. For the resume
operation, the debug controller driver sees that from the resume state
that the enable bit is off and doesn't try to use the device until
dbgp_reset_prep() and dbgp_external_reset() are called in sequence.
The dbgp_reset_prep() has to get called in resume to handle the case
where you remove the dbgp device while suspended and before you resumed
such that it won't hang the kernel.
Jason.
next prev parent reply other threads:[~2009-08-03 14:49 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-31 15:07 [PATCH 0/10] x86: EHCI and earlyprintk= improvements (Round 2) Jason Wessel
2009-07-31 15:07 ` [PATCH 01/10] ehci early_printk: split ehci debug driver from early_printk.c Jason Wessel
2009-07-31 15:07 ` [PATCH 02/10] usb,early_printk: insert cr prior to nl as needed Jason Wessel
2009-07-31 15:07 ` [PATCH 03/10] ehci-dbgp: Execute early BIOS hand off Jason Wessel
2009-07-31 15:07 ` [PATCH 04/10] usb,early_printk: EHCI debug controller initialization delays Jason Wessel
2009-07-31 15:07 ` [PATCH 05/10] printk,early_printk,console: Allow more than one early console Jason Wessel
2009-07-31 15:07 ` [PATCH 06/10] ehci-dbgp: stability improvements and external re-init Jason Wessel
2009-07-31 15:07 ` [PATCH 07/10] ehci-dbgp,ehci: Allow early or late use of the dbgp device Jason Wessel
2009-07-31 15:07 ` [PATCH 08/10] ehci-dbgp: errata for EHCI debug controller initialization Jason Wessel
2009-07-31 15:07 ` [PATCH 09/10] ehci-dbgp: errata for EHCI debug/host controller synchronization Jason Wessel
2009-07-31 15:07 ` [PATCH 10/10] ehci-dbgp,documentation: Documentation updates for ehci-dbgp Jason Wessel
2009-07-31 15:41 ` [PATCH 07/10] ehci-dbgp,ehci: Allow early or late use of the dbgp device Alan Stern
2009-07-31 17:22 ` Jason Wessel
2009-07-31 18:53 ` Alan Stern
[not found] ` <4A7355EA.60107@windriver.com>
2009-07-31 21:34 ` Jason Wessel
2009-08-01 15:47 ` Alan Stern
2009-08-03 14:48 ` Jason Wessel [this message]
2009-08-18 17:47 ` Greg KH
-- strict thread matches above, loose matches on Subject: below --
2009-07-20 20:06 [PATCH 0/10] x86: EHCI and earlyprintk= improvements Jason Wessel
2009-07-20 20:06 ` [PATCH 01/10] ehci early_printk: split ehci debug driver from early_printk.c Jason Wessel
2009-07-20 20:06 ` [PATCH 02/10] usb,early_printk: insert cr prior to nl as needed Jason Wessel
2009-07-20 20:06 ` [PATCH 03/10] ehci-dbgp: Execute early BIOS hand off Jason Wessel
2009-07-20 20:06 ` [PATCH 04/10] usb,early_printk: EHCI debug controller initialization delays Jason Wessel
2009-07-20 20:06 ` [PATCH 05/10] printk,early_printk,console: Allow more than one early console Jason Wessel
2009-07-20 20:06 ` [PATCH 06/10] ehci-dbgp: stability improvements and external re-init Jason Wessel
2009-07-20 20:06 ` [PATCH 07/10] ehci-dbgp,ehci: Allow early or late use of the dbgp device Jason Wessel
2009-07-20 21:25 ` Alan Stern
2009-07-20 21:38 ` Jason Wessel
2009-07-21 7:47 ` Jason Wessel
2009-07-21 14:34 ` 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=4A76F8A1.3020000@windriver.com \
--to=jason.wessel@windriver.com \
--cc=akpm@linux-foundation.org \
--cc=dbrownell@users.sourceforge.net \
--cc=ebiederm@xmission.com \
--cc=gregkh@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=stern@rowland.harvard.edu \
--cc=yinghai@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