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: Fri, 31 Jul 2009 12:22:19 -0500 [thread overview]
Message-ID: <4A73284B.6030903@windriver.com> (raw)
In-Reply-To: <Pine.LNX.4.44L0.0907311135030.3152-100000@iolanthe.rowland.org>
Alan Stern wrote:
> On Fri, 31 Jul 2009, Jason Wessel wrote:
>
>> If the EHCI debug port is initialized and in use, the EHCI host
>> controller driver must follow two rules.
>>
>> 1) If the EHCI host driver issues a controller reset, the debug
>> controller driver re-initialization must get called after the reset
>> is completed.
>>
>> 2) The EHCI host driver should ignore any requests to the physical
>> EHCI debug port when the EHCI debug port is in use.
>>
>> The code to check for the debug port was moved from ehci_pci_reinit()
>> to ehci_pci_setup because it must get called prior to ehci_reset()
>> which will clear the debug port registers.
>> --- a/drivers/usb/host/ehci-hub.c
>> +++ b/drivers/usb/host/ehci-hub.c
>> @@ -816,6 +816,15 @@ static int ehci_hub_control (
>> case SetPortFeature:
>> selector = wIndex >> 8;
>> wIndex &= 0xff;
>> + if (unlikely(ehci->debug)) {
>
> Don't you need a similar test for ClearPortFeature? Or does that not
> matter?
I guess it depends if the user space tries to poke it, and then
perhaps yes. Do you know if that would be the case?
The rejection of the SetPortFeature at this level prevents the generic
hub code from activating the port, in so far as all my tests cases
show.
Given that it won't hurt anything to have the same code in the
ClearPortFeature I can put it in.
>
>> + /* If the debug port is active any port
>> + * feature requests should get denied */
>> + if ((readl(&ehci->debug->control) & DBGP_ENABLED) &&
>> + wIndex == HCS_DEBUG_PORT(ehci->hcs_params)) {
>
> The order of the two tests here should be reversed, to avoid an
> unnecessary I/O access in the common case.
>
Yes. I agree here.
>> + retval = -ENODEV;
>> + goto error_exit;
>
> This is the wrong return value. You should return -EPIPE, i.e., goto
> error instead of error_exit.
Do you have some insight as to how to account for the not using the
port another way? If I return -EPIPE, vs -ENODEV. The kernel code
does very different things. I chose -ENODEV based on the results
below.
With -ENODEV the kernel emits the following when trying to probe the
usb port with the dbgp device.
hub 2-0:1.0: cannot reset port 1 (err = -19)
hub 2-0:1.0: cannot reset port 1 (err = -19)
hub 2-0:1.0: cannot reset port 1 (err = -19)
hub 2-0:1.0: cannot reset port 1 (err = -19)
hub 2-0:1.0: unable to enumerate USB device on port 1
With returning -EPIPE you get this result.
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: cannot reset port 1 (err = -32)
USB Serial support registered for generic
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: cannot reset port 1 (err = -32)
hub 2-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
hub 2-0:1.0: unable to enumerate USB device on port 1
I was looking for the easiest maintainable approach to disabling the
physical port from getting reset by the HCD hub driver, which does
different things depending on the error code that is passed back.
Knowing what happens with -EPIPE, would you still prefer it to be
changed that way? Another possibility here is to implement the
restriction on the port reset another way, if you have any
suggestions.
In general folks may not need to use earlyprintk=dbpg,keep too often,
but it sure is nice when it works because you can use it as a full
console monitoring device after the /sbin/init handoff, including
debugging USB printk's because the usb debug controller driver is
completely separate.
Jason.
next prev parent reply other threads:[~2009-07-31 17:24 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 [this message]
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
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=4A73284B.6030903@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