NSLU2-Linux
view · edit · print · history

Here are my notes on debugging the EHCI Issue (nobody cared)

update Still happens on 2.6.11.2 see at the bottom

update happens with 2.6.11-mm4 too (jbowler).

The appears to occur with accessing the HD on the 2.6.9 and 2.6.11 kernels.

jbowler update. I see this on 2.6.11-mm4. I've got a 250GByte Maxtor OneTouch? II attached, I get the irq26: nobody cared as soon as I mount a fresh reiser4 partition - no files on it at all.

I'm debugging on 2.6.11 with help from beewoolie.

I've got a directory named sources with about 375MB of source tarballs in it. The directory is call "sources" :)

  • update' It does happen with FLASH but it takes more, I need to dd like 240MB to the flash or erase the big file created
  • It happens on my Maxtor USB 2.0 drive.
  • It happens with only reading "cat sources/* > /dev/null" triggers it
  • It happens with only writing "dd if=/dev/zero of=zero_file bs=1M count=64 or 128" Often happens with 64MB Almost always with 128MB
  • Enabling USB_DEBUGGING and adding a line in ehci-hcd.c to print out interrupts that are not handled shows

ehci_irq: ignoring a008

ehci_irq: ignoring 8008

Around like 843 in tmp/work/openslug-kernel-2.6.11-r3/linux-2.6.11/drivers/usb/host/ehci-hcd.c just before the status &= line the following debug statement was added.

       if (status & ~INTR_MASK) printk ("%s: ignoring %x\n", __FUNCTION__, status & ~INTR_MASK);

        status &= INTR_MASK;

nodebugirq will probably turn-off the error message, but we should fine the real root cause of the issue.

[Beewoolie] The status check above seems to show that there is one interrupt bit that is set, but not interpreted (0x8). We did not check whether or not the interrupt mask includes this bit. I suspect it is not. This leaves us right where we started, no idea where the spurrious interrupt is coming from.

The error looks like: root@LKG0F9D2C?:/media/cf# rm zero

 irq26: nobody cared
 PC is at ehci_watchdog+0xdc/0xe8 [ehci_hcd]
 LR is at __mod_timer+0x8c/0xb4
 pc : [<bf0afe84>]    lr : [<c003dfc8>]    Tainted: P
 sp : c01d3ec0  ip : 00078510  fp : c01d3edc
 r10: c01d3ee0  r9 : c01d52b4  r8 : c0215b1c
 r7 : 00000000  r6 : 60000013  r5 : c021844c  r4 : c0d23af0
 r3 : 00000000  r2 : 00000001  r1 : c0d23b64  r0 : ffffffff
 Flags: nZCv  IRQs? on  FIQs? on  Mode SVC_32  Segment kernel
 Control: 39FF  Table: 00778000  DAC: 00000017
 [<c001f2e0>] (report_bad_irq+0x0/0xd0) from [<c001f664>] (do_level_IRQ+0x84/0xbc)
 r5 = 0000001A  r4 = C020FDE0?
 [<c001f5e0>] (do_level_IRQ+0x0/0xbc) from [<c001f6e8>] (asm_do_IRQ+0x4c/0x128)
  r6 = 04000000  r5 = 0000001F  r4 = C020FDE0?
 [<c001f69c>] (asm_do_IRQ+0x0/0x128) from [<c001e4e0>] (__irq_svc+0x20/0x60)
 [<bf0afda8>] (ehci_watchdog+0x0/0xe8 [ehci_hcd]) from [<c003e2dc>] (run_timer_softirq+0x188/0x1f8)
  r6 = BF0AFDA8?  r5 = 00000100  r4 = C01D2000?
 [<c003e154>] (run_timer_softirq+0x0/0x1f8) from [<c003a4d8>] (__do_softirq+0x5c/0xd0)
 [<c003a47c>] (__do_softirq+0x0/0xd0) from [<c001f7a4>] (asm_do_IRQ+0x108/0x128)
  r8 = C01D3F6C?  r7 = C0223734  r6 = 04000000  r5 = 0000001F
  r4 = C020FDE0?
 [<c001f69c>] (asm_do_IRQ+0x0/0x128) from [<c001e4e0>] (__irq_svc+0x20/0x60)
 [<c001ff74>] (default_idle+0x0/0x44) from [<c0020000>] (cpu_idle+0x48/0x64)
 [<c001ffb8>] (cpu_idle+0x0/0x64) from [<c00087c4>] (start_kernel+0x160/0x1a8)
  r5 = C020F458?  r4 = 00000000
 [<c0008664>] (start_kernel+0x0/0x1a8) from [<0000809c>] (0x809c)
 handlers:
 [<c012a398>] (usb_hcd_irq+0x0/0x74)

Here is another example:

  root@LKG7DD61D?:/m/sda1# dd if=/dev/zero of=foo bs=1024k count=100
  irq26: nobody cared
  PC is at ehci_watchdog+0xdc/0xe0 [ehci_hcd]
  LR is at __mod_timer+0x8c/0xb4
  pc : [<bf003b0c>]    lr : [<c003bb38>]    Tainted: P
  sp : c1b9fc5c  ip : 00016375  fp : c1b9fc78
  r10: c1b9fd00  r9 : c01f3d78  r8 : c01f9ce0
  r7 : c01c5274  r6 : 60000013  r5 : c01fc7d8  r4 : c1890c00
  r3 : 00000000  r2 : ffc04000  r1 : 00000000  r0 : ffffffff
  Flags: nZCv  IRQs? on  FIQs? on  Mode SVC_32  Segment user
  Control: 39FF  Table: 00784000  DAC: 00000015
  [<c001e684>] (report_bad_irq+0x0/0xd0) from [<c001ea20>] (do_level_IRQ+0x84/0xb)
   r5 = 0000001A  r4 = C01F4258?
  [<c001e99c>] (do_level_IRQ+0x0/0xbc) from [<c001eaa4>] (asm_do_IRQ+0x4c/0x150)
   r6 = C1B9E000?  r5 = 0000001F  r4 = C1B9FC48?
  [<c001ea58>] (asm_do_IRQ+0x0/0x150) from [<c001d940>] (__irq_svc+0x20/0x60)
  [<bf003a30>] (ehci_watchdog+0x0/0xe0 [ehci_hcd]) from [<c003be44>] (run_timer_s)
   r6 = C1B9FC7C?  r5 = C01F9F7C?  r4 = 00000000
  [<c003bcc8>] (run_timer_softirq+0x0/0x1b0) from [<c003833c>] (__do_softirq+0x5c)
   r7 = 0000000A  r6 = C1B9E000?  r5 = C01F9D10?  r4 = 00000001
  [<c00382e0>] (__do_softirq+0x0/0xd4) from [<c001eb88>] (asm_do_IRQ+0x130/0x150)
   r8 = 20000013  r7 = C00D4760?  r6 = C1B9E000?  r5 = 0000001F
   r4 = C1B9FD34?
  [<c001ea58>] (asm_do_IRQ+0x0/0x150) from [<c001d940>] (__irq_svc+0x20/0x60)
  [<c004f6c4>] (generic_file_buffered_write+0x4/0x5bc) from [<c005026c>] (generic)
  [<c004fe20>] (generic_file_aio_write_nolock+0x0/0x478) from [<c005044c>] (gener)
  [<c00503c8>] (generic_file_write_nolock+0x0/0xb0) from [<c00505ac>] (generic_fi)
   r8 = C0DAB7A0?  r7 = C0EAD544?  r6 = 00000000  r5 = C0EAD5DC?
   r4 = C0EAD5AC?
  [<c0050550>] (generic_file_write+0x0/0xec) from [<c006be48>] (vfs_write+0xe4/0x)
  [<c006bd64>] (vfs_write+0x0/0x120) from [<c006bf44>] (sys_write+0x4c/0x74)
  [<c006bef8>] (sys_write+0x0/0x74) from [<c001dc80>] (ret_fast_syscall+0x0/0x2c)
   r8 = C001DE04?  r7 = 00000004  r6 = 401EA008  r5 = 00100000
   r4 = 00100000
  handlers:
  [<c011cc48>] (usb_hcd_irq+0x0/0x78)
  100+0 records in
  100+0 records out

2.6.11.2 --------------
 root@LKG0F9D2C?:/media/hdd# uname -a
 Linux LKG0F9D2C? 2.6.11.2 #1 Wed Mar 9 09:28:19 EST 2005 armv5teb unknown
 root@LKG0F9D2C?:/media/hdd# cp -a sources s2
 irq26: nobody cared
 PC is at ehci_watchdog+0xdc/0xe8 [ehci_hcd]
 LR is at __mod_timer+0x8c/0xb4
 pc : [<bf0afe84>]    lr : [<c003dfc8>]    Tainted: P
 sp : c1c9dd80  ip : 00214ff9  fp : c1c9dd9c
 r10: c1c9dda0  r9 : c01d52b4  r8 : c0215b1c
 r7 : 00000000  r6 : 60000013  r5 : c021844c  r4 : c0d23ef0
 r3 : c0215b1c  r2 : 00000009  r1 : c0d23f64  r0 : 00000000
 Flags: Nzcv  IRQs? on  FIQs? on  Mode SVC_32  Segment kernel
 Control: 39FF  Table: 0093C000  DAC: 00000017
 [<c001f2e0>] (report_bad_irq+0x0/0xd0) from [<c001f664>] (do_level_IRQ+0x84/0xbc)
  r5 = 0000001A  r4 = C020FDE0?
 [<c001f5e0>] (do_level_IRQ+0x0/0xbc) from [<c001f6e8>] (asm_do_IRQ+0x4c/0x128)
  r6 = 04000000  r5 = 0000001F  r4 = C020FDE0?
 [<c001f69c>] (asm_do_IRQ+0x0/0x128) from [<c001e4e0>] (__irq_svc+0x20/0x60)
 [<bf0afda8>] (ehci_watchdog+0x0/0xe8 [ehci_hcd]) from [<c003e2dc>] (run_timer_softirq+0x188/0x1f8)
  r6 = BF0AFDA8?  r5 = 00000100  r4 = C1C9C000?
 [<c003e154>] (run_timer_softirq+0x0/0x1f8) from [<c003a4d8>] (__do_softirq+0x5c/0xd0)
 [<c003a47c>] (__do_softirq+0x0/0xd0) from [<c001f7a4>] (asm_do_IRQ+0x108/0x128)
  r8 = C1C9DE2C?  r7 = 00000001  r6 = 00000020  r5 = 0000001F
  r4 = C020F99C?
 [<c001f69c>] (asm_do_IRQ+0x0/0x128) from [<c001e4e0>] (__irq_svc+0x20/0x60)
 [<c012b2f8>] (usb_sg_wait+0x0/0x16c) from [<c0138900>] (usb_stor_bulk_transfer_sglist+0xb8/0x114)
  r7 = 00001000  r6 = C0EB2A00?  r5 = C0DA64C4?  r4 = C0DA6400?
 [<c0138848>] (usb_stor_bulk_transfer_sglist+0x0/0x114) from [<c0138990>] (usb_stor_bulk_transfer_sg+0x34/0x58)
 [<c013895c>] (usb_stor_bulk_transfer_sg+0x0/0x58) from [<c013903c>] (usb_stor_Bulk_transport+0x14c/0x2c0)
  r5 = FFC08080?  r4 = FFC0808F?
 [<c0138ef0>] (usb_stor_Bulk_transport+0x0/0x2c0) from [<c01389dc>] (usb_stor_invoke_transport+0x28/0x250)
 [<c01389b4>] (usb_stor_invoke_transport+0x0/0x250) from [<c01380d0>] (usb_stor_transparent_scsi_command+0x1c/0xb8) 
 [<c01380b4>] (usb_stor_transparent_scsi_command+0x0/0xb8) from [<c01396dc>] (usb_stor_control_thread+0x194/0x240) 
  r8 = 00000000  r7 = C0DA6510?  r6 = C0DA641C?  r5 = C0DA6400?
  r4 = 00000000
 [<c0139548>] (usb_stor_control_thread+0x0/0x240) from [<c0037968>] (do_exit+0x0/0xafc)
  r7 = 00000000  r6 = 00000000  r5 = 00000000  r4 = 00000000
 handlers: 
 [<c012a3b8>] (usb_hcd_irq+0x0/0x74)
view · edit · print · history · Last edited by g2.
Based on work by g2, beewoolie, Siddy, and jbowler.
Originally by jbowler.
Page last modified on April 17, 2005, at 10:15 AM