public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* oops when loading ehci_hcd
@ 2004-04-16  8:23 Bill Nottingham
  2004-04-16 18:14 ` [linux-usb-devel] " David Brownell
  0 siblings, 1 reply; 4+ messages in thread
From: Bill Nottingham @ 2004-04-16  8:23 UTC (permalink / raw)
  To: linux-kernel, linux-usb-devel

With a 2.6.6-rc1 based kernel. Happened when loading ehci_hcd some
10 hours after booting, couldn't reproduce in initial attempts. I
suppose the question is also why it failed to init, but it certainly
didn't like the failure...

Bill

PCI: Enabling device 0000:00:1d.7 (0000 -> 0002)
ehci_hcd 0000:00:1d.7: EHCI Host Controller
ehci_hcd 0000:00:1d.7: illegal capability!
PCI: Setting latency timer of device 0000:00:1d.7 to 64
ehci_hcd 0000:00:1d.7: irq 11, pci mem 22946000
ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1
ehci_hcd 0000:00:1d.7: init error -19ehci_hcd 0000:00:1d.7: remove, state 0
Unable to handle kernel NULL pointer dereference at virtual address 00000048
 printing eip:
22a16b84
*pde = 00000000
Oops: 0000 [#1]
CPU:    0
EIP:    0060:[<22a16b84>]    Not tainted
EFLAGS: 00210002   (2.6.5-1.326) 
EIP is at scan_async+0x36/0xf1 [ehci_hcd]
eax: 00000000   ebx: 1392c000   ecx: 228f75a8   edx: 00000000
esi: 00000000   edi: 1392c000   ebp: 00000000   esp: 1e977e3c
ds: 007b   es: 007b   ss: 0068
Process modprobe (pid: 28613, threadinfo=1e977000 task=186bf870)
Stack: 00000000 1392c000 00000000 03590444 c0000000 22a19736 1392c000 1392c07c 
       22a19540 00200206 00200206 0000002a 023b1e2a 00200246 c0000000 0211ed90 
       1e977e98 0211a5a7 00200206 00200206 00000029 023b1e29 00200246 00000000 
Call Trace:
 [<22a19736>] ehci_work+0x28/0x7d [ehci_hcd]
 [<22a19540>] ehci_stop+0xe8/0x156 [ehci_hcd]
 [<0211ed90>] printk+0x26a/0x2e3
 [<0211a5a7>] __wake_up+0x8a/0xee
 [<0225aa03>] usb_disconnect+0x16/0xd2
 [<02262792>] usb_hcd_pci_remove+0x77/0x129
 [<0226270c>] usb_hcd_pci_probe+0x3d7/0x3e6
 [<0219de1e>] create_dir+0x7c/0x99
 [<021ceb54>] pci_device_probe_static+0x2a/0x3d
 [<021ceb82>] __pci_device_probe+0x1b/0x2c
 [<021cebae>] pci_device_probe+0x1b/0x2d
 [<0221ba49>] bus_match+0x27/0x45
 [<0221bb15>] driver_attach+0x37/0x6a
 [<0221bd27>] bus_add_driver+0x6a/0x81
 [<0221c033>] driver_register+0x48/0x50
 [<021ced0c>] pci_register_driver+0x84/0x9f
 [<228e501b>] init+0x1b/0x22 [ehci_hcd]
 [<02136583>] sys_init_module+0x1ef/0x2c6

Code: 8b 70 48 85 f6 74 71 8d 46 4c 39 46 4c 74 31 8b 87 7c 02 00 
 <6>USB Universal Host Controller Interface driver v2.2

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [linux-usb-devel] oops when loading ehci_hcd
  2004-04-16  8:23 oops when loading ehci_hcd Bill Nottingham
@ 2004-04-16 18:14 ` David Brownell
  2004-04-16 18:42   ` Bill Nottingham
  2004-04-17  3:08   ` Bill Nottingham
  0 siblings, 2 replies; 4+ messages in thread
From: David Brownell @ 2004-04-16 18:14 UTC (permalink / raw)
  To: Bill Nottingham; +Cc: linux-kernel, linux-usb-devel

[-- Attachment #1: Type: text/plain, Size: 1362 bytes --]

Bill Nottingham wrote:
> With a 2.6.6-rc1 based kernel. Happened when loading ehci_hcd some
> 10 hours after booting, couldn't reproduce in initial attempts. I
> suppose the question is also why it failed to init, but it certainly
> didn't like the failure...

Hmm, no it didn't.  The "illegal capability" is the hardware acting
broken (what kind of EHCI hardware?); I've had reports of similar
stuff happening after ACPI resume (bogus PCI config space values,
in this case zero).

The "-19" means -ENODEV, which seem likely to be another case of a PCI
request not responding correctly:  handshake() failing because reading
a register returned 0xffffffff.

Looks like a cleanup path needs to handle early failure a bit better;
likely just having ehci_stop test for ehci->async non-null (before
calling scan-async to clean up any pending work) would suffice.

- Dave


> Bill
> 
> PCI: Enabling device 0000:00:1d.7 (0000 -> 0002)
> ehci_hcd 0000:00:1d.7: EHCI Host Controller
> ehci_hcd 0000:00:1d.7: illegal capability!
> PCI: Setting latency timer of device 0000:00:1d.7 to 64
> ehci_hcd 0000:00:1d.7: irq 11, pci mem 22946000
> ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1
> ehci_hcd 0000:00:1d.7: init error -19ehci_hcd 0000:00:1d.7: remove, state 0
> Unable to handle kernel NULL pointer dereference at virtual address 00000048
> ...

[-- Attachment #2: Diff --]
[-- Type: text/plain, Size: 377 bytes --]

--- 1.75/drivers/usb/host/ehci-hcd.c	Wed Apr 14 20:20:58 2004
+++ edited/drivers/usb/host/ehci-hcd.c	Fri Apr 16 11:03:50 2004
@@ -592,7 +592,8 @@
 
 	/* root hub is shut down separately (first, when possible) */
 	spin_lock_irq (&ehci->lock);
-	ehci_work (ehci, NULL);
+	if (ehci->async)
+		ehci_work (ehci, NULL);
 	spin_unlock_irq (&ehci->lock);
 	ehci_mem_cleanup (ehci);
 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [linux-usb-devel] oops when loading ehci_hcd
  2004-04-16 18:14 ` [linux-usb-devel] " David Brownell
@ 2004-04-16 18:42   ` Bill Nottingham
  2004-04-17  3:08   ` Bill Nottingham
  1 sibling, 0 replies; 4+ messages in thread
From: Bill Nottingham @ 2004-04-16 18:42 UTC (permalink / raw)
  To: David Brownell; +Cc: linux-kernel, linux-usb-devel

David Brownell (david-b@pacbell.net) said: 
> Bill Nottingham wrote:
> >With a 2.6.6-rc1 based kernel. Happened when loading ehci_hcd some
> >10 hours after booting, couldn't reproduce in initial attempts. I
> >suppose the question is also why it failed to init, but it certainly
> >didn't like the failure...
> 
> Hmm, no it didn't.  The "illegal capability" is the hardware acting
> broken (what kind of EHCI hardware?); I've had reports of similar
> stuff happening after ACPI resume (bogus PCI config space values,
> in this case zero).

In fact, I believe I did do suspend/resume at some point previous
in the day. Thinkpad T40p - the ACPI suspend/resume probably explains
why it didn't happen again after reboot.

> --- 1.75/drivers/usb/host/ehci-hcd.c	Wed Apr 14 20:20:58 2004
> +++ edited/drivers/usb/host/ehci-hcd.c	Fri Apr 16 11:03:50 2004
> @@ -592,7 +592,8 @@
>  
>  	/* root hub is shut down separately (first, when possible) */
>  	spin_lock_irq (&ehci->lock);
> -	ehci_work (ehci, NULL);
> +	if (ehci->async)
> +		ehci_work (ehci, NULL);
>  	spin_unlock_irq (&ehci->lock);
>  	ehci_mem_cleanup (ehci);

Will try that at some point, thanks!

Bill


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [linux-usb-devel] oops when loading ehci_hcd
  2004-04-16 18:14 ` [linux-usb-devel] " David Brownell
  2004-04-16 18:42   ` Bill Nottingham
@ 2004-04-17  3:08   ` Bill Nottingham
  1 sibling, 0 replies; 4+ messages in thread
From: Bill Nottingham @ 2004-04-17  3:08 UTC (permalink / raw)
  To: David Brownell; +Cc: linux-kernel, linux-usb-devel

David Brownell (david-b@pacbell.net) said: 
> Looks like a cleanup path needs to handle early failure a bit better;
> likely just having ehci_stop test for ehci->async non-null (before
> calling scan-async to clean up any pending work) would suffice.

This patch solves the oops for me - thanks!

Bill

> --- 1.75/drivers/usb/host/ehci-hcd.c	Wed Apr 14 20:20:58 2004
> +++ edited/drivers/usb/host/ehci-hcd.c	Fri Apr 16 11:03:50 2004
> @@ -592,7 +592,8 @@
>  
>  	/* root hub is shut down separately (first, when possible) */
>  	spin_lock_irq (&ehci->lock);
> -	ehci_work (ehci, NULL);
> +	if (ehci->async)
> +		ehci_work (ehci, NULL);
>  	spin_unlock_irq (&ehci->lock);
>  	ehci_mem_cleanup (ehci);
>  


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2004-04-17  3:11 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-04-16  8:23 oops when loading ehci_hcd Bill Nottingham
2004-04-16 18:14 ` [linux-usb-devel] " David Brownell
2004-04-16 18:42   ` Bill Nottingham
2004-04-17  3:08   ` Bill Nottingham

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox