[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

usb-irda and etrax usb driver or how quicky we oops



Hi all!

I'm trying to use a irda device connected to the dev board 82 over usb. 
Firstly I connected the device to a PC just to see if it works under linux 
and it did. Next i correctly compiled the kernel with PPP support, etrax usb 
driver, irda support and usb-irda driver. I loaded the kernel (image) to the 
dev board, boot it and the kernel correctly found the device:

<---			snip				-->
usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
hub.c: 2 ports detected
<---			snip				-->
usb-host.c: USB controller running.
hub.c: new USB device ETRAX 100LX-1, assigned address 2
rtl8150.c: eth1: rtl8150 is detected
hub.c: new USB device ETRAX 100LX-2, assigned address 3
IRDA-USB found at address 3, Vendor: 50f, Product: 180

Next, I tried to attach the irda0 interface to the irda stack with "irattach 
irda0 -s", which seamed to succeed - according to the output of dmesg:

<---                  snip                       --->
irda_usb_parse_endpoints(), And our endpoints are : in=02, out=01 (64), int=03
irda_usb_init_qos(), dongle says speed=0x13E, size=0x20, window=0x1, bofs=0x4, 
turn=0x2
IrDA: Registered device irda0
<-----               snip                      --->

But the first sign of troubles ahead was allready here. The "data" LED on my 
device did not start to blink, as it should. So the link was probably not on 
line.

The final step was to run the pppd to set up the networking. When I started 
the pppd with correct options (the ones that worked on my PC) the board 
oopsed.

The last thing written to the kernel buffer was:

usb-host.c: urb->timeout specified, ignoring.

From what I can gather from the resolved oops (which is attached to this mail) 
and from comments at the top of the irda-usb.c (drivers/net/irda) the problem 
seams to be that etrax usb driver incorrectly timeout.

Any advice would be deeply appreciated. Thank you.

P.S. I'm using 2.4.26 kernel (usb driver version 1.20), but I also tried with 
2.4.22 kernel (usb driver version 1.19), which just blocks the board...

		Regards Simon
ksymoops 2.4.9 on i686 2.6.4-52-smp.  Options used
     -v build/linux-2.4.26/vmlinux (specified)
     -K (specified)
     -L (specified)
     -O (specified)
     -M (specified)
     -t crisq -a cris

Unable to handle kernel NULL pointer dereference at virtual address 00000000
Oops: 0000
IRP: c0098766 SRP: c00982c6 DCCR: 00000420 USP: 9ffffdb0 MOF: 00000000
 r0: 00030003  r1: c0d09e50   r2: c03e0000  r3: c0140700
 r4: ffffffe9  r5: c0154b20   r6: c0d09f8c  r7: 35557e4a
 r8: 00000000  r9: c03ec255  r10: 000000f0 r11: c03e0028
r12: c0120028 r13: 000000c0 oR10: 000000f0
Process pppd (pid: 250, stackpage=c0d08000)
Stack from 9ffffdb0:
       00000000 000860e4 00087a78 00000000 000860e4 05000000 00000000 b2000000
       00087b26 00000000 00000000 35557e4a 3555c14c 3555c000 0008748a 000bb248
       355ed688 000afb28 000860e4 ffffffff 0009abaa 9ffffea4 00085838 00088096
Call Trace:
Stack from c0d09cd0:
       c0006e26 c0d09e10 c0053f1e c005407c c03e0028 00000000 ffffffe9 c0d08000
       00000000 c0d09dcc c0d09dcc c0054128 c0006e26 c00570f6 00000000 35557e4a
       c0d09f8c c0154b20 ffffffe9 c0140700 c0d5a000 c0d09dcc 00000000 c0228665
Call Trace: [<c0006e26>] [<c0053f1e>] [<c005407c>] [<c0054128>] [<c0006e26>] [<c00570f6>] [<c00f05c8>]
       [<c00ebc1e>] [<c00eaa10>] [<c005498a>] [<c0056ed0>] [<c0053d82>] [<c00982c6>] [<c0098766>] [<c000927a>]
       [<c000a2a8>] [<c00091c8>] [<c0009104>] [<c0008ef8>] [<c0054bb0>] [<c0054a52>] [<c0016842>] [<c0016d80>]
       [<c0016842>] [<c00257ea>] [<c002e890>] [<c0025868>] [<c001e470>] [<c002590e>] [<c009277c>] [<c00091c8>]
       [<c0009104>] [<c0008ef8>] [<c0055816>] [<c0054bb0>] [<c0053c86>]
Code: 09 a1 52 2a 0b a1 53 3a 30 d1 5a ce (5c) c4 52 b6 01 b3 34 d1 51 9e 01 93
Error (Oops_bfd_perror): /tmp/ksymoops.phBSQo Invalid bfd target


>>PC;  c0098766 <etrax_usb_hc_port_status_interrupt+12/ee>   <=====

>>IRP; c0098766 <etrax_usb_hc_port_status_interrupt+12/ee>
>>SRP; c00982c6 <etrax_usb_hc_interrupt_bottom_half+24/82>
>>IRP; c0098766 <etrax_usb_hc_port_status_interrupt+12/ee>
>>SRP; c00982c6 <etrax_usb_hc_interrupt_bottom_half+24/82>
>>r1; c0d09e50 <_end+b09890/dffa40>
>>r2; c03e0000 <_end+1dfa40/dffa40>
>>r3; c0140700 <eth4_dev+f4/154>
>>r5; c0154b20 <initial_table+f0/3f0>
>>r6; c0d09f8c <_end+b099cc/dffa40>
>>r9; c03ec255 <_end+1ebc95/dffa40>
>>r11; c03e0028 <_end+1dfa68/dffa40>
>>r12; c0120028 <bl_order+160a8/1f19c>

Trace; c0006e26 <printk+0/14e>
Trace; c0053f1e <show_stack+0/8a>
Trace; c005407c <show_registers+d4/13a>
Trace; c0054128 <die_if_kernel+2c/38>
Trace; c0006e26 <printk+0/14e>
Trace; c00570f6 <do_page_fault+222/2cc>
Trace; c00f05c8 <irlap_start_slot_timer+16/18>
Trace; c00ebc1e <irlap_do_event+72/170>
Trace; c00eaa10 <irlap_discovery_request+186/18e>
Trace; c005498a <sIRQ24_interrupt+18/2e>
Trace; c0056ed0 <handle_mmu_bus_fault+b0/b4>
Trace; c0053d82 <mmu_bus_fault+28/30>
Trace; c00982c6 <etrax_usb_hc_interrupt_bottom_half+24/82>
Trace; c0098766 <etrax_usb_hc_port_status_interrupt+12/ee>
Trace; c000927a <__run_task_queue+48/54>
Trace; c000a2a8 <immediate_bh+16/18>
Trace; c00091c8 <bh_action+24/58>
Trace; c0009104 <tasklet_hi_action+62/80>
Trace; c0008ef8 <do_softirq+58/9c>
Trace; c0054bb0 <do_IRQ+82/86>
Trace; c0054a52 <sIRQ31_interrupt+18/2e>
Trace; c0016842 <kmalloc+30/3c>
Trace; c0016d80 <__kmem_cache_alloc+c6/e0>
Trace; c0016842 <kmalloc+30/3c>
Trace; c00257ea <pipe_new+30/82>
Trace; c002e890 <new_inode+a/4a>
Trace; c0025868 <get_pipe_inode+26/a0>
Trace; c001e470 <get_empty_filp+0/126>
Trace; c002590e <do_pipe+2c/22c>
Trace; c009277c <do_serial_bh+16/18>
Trace; c00091c8 <bh_action+24/58>
Trace; c0009104 <tasklet_hi_action+62/80>
Trace; c0008ef8 <do_softirq+58/9c>
Trace; c0055816 <sys_pipe+16/32>
Trace; c0054bb0 <do_IRQ+82/86>
Trace; c0053c86 <system_call+50/58>

Kernel panic: Aiee, killing interrupt handler!

1 error issued.  Results may not be reliable.