I have been bitten by a possible bug in hc_crisv10.c, which is in the linux
kernel distribution that comes with the Axis Devboard 83+. It's based on
the 2.6.11 kernel. (note that it's build under the cris compiler).
The ksymoops output is pasted below.
I am seeking some guidance as to where I should go from here (please don't
say "go to USB hell" as I am already there).
I've spoken to Axis, and they say that perhaps a patch has been posted for
the linux usb driver, but I cannot locate one. Also, since the driver may
be modified by Axis, applying a fix might break something else. I am
somewhat on my own, as Axis may not be able to look at this for some time.
Reading the debug output did not give me much of a clue as to what happened,
other than it appears that an interrupt was not properly handled.
Note that the Axis eth1 port is driven via the usb driver and that this
error occurs when the commandline: "ifconfig eth1 hw ether 00408c63abc6" is
issued to set the MAC address. This kernel crash can be easily reproduced.
Thanks to all for your suggestions and guidance.
Mark Richards
SolarWave
Boston
ksymoops-cris oops_file.txt
ksymoops 2.4.11 on i686 2.6.10-1.741_FC3. Options used
-v os/linux/vmlinux (specified)
-K (specified)
-L (specified)
-O (specified)
-m os/linux/System.map (specified)
-t cris -a cris
/usr/bin/nm: os/linux/vmlinux: Invalid bfd target Error (pclose_local):
read_nm_symbols pclose failed 0x100 Warning (read_vmlinux): no kernel
symbols in vmlinux, is os/linux/vmlinux a valid vmlinux file?
<1>Unable to handle kernel NULL pointer dereference at virtual address
00000000
IRP: c00cb428 SRP: c001ef20 DCCR: 00000400 USP: 9ffffe38 MOF:
000000fc
r0: c03c84a0 r1: 00000000 r2: c0175f84 r3: 0000001f
r4: 00000224 r5:
b00002
r8: c0175f30 r9: b0002000 r10: 0000001f
r11: c Warning (Oops_set_regs): garbage 'r11: c' at end of register line
ignored 0319380
r12: c0175f84 r13: c0150028 oR10: 0000001f
Stack from 9ffffe38:
000c81e0
000c81e0 3
564a3c8 31687465 00000000 00000000 00000000 40000001
fe116e8c
000854bc 00
000005 0008559e 00000005 00083a48 35567388 9ffffeb4
00000005 000852ea
357
0a838 3565ac3e 00000000 00000000 00000000 00000000
Call Trace:
Stack from
c0175d
c0005bfa c0175eb4 c00042fa c0175de4 c000591e c0319380 000000fc
c0175eb
c015cd40 00000000 0000100b c0175eb4 c0175df0 c00059da 00000000
c0175e94
c00050fc 00002000 b0000207 00000224 00000000 c1996000 0000100b
00000000 Call Trace: [<c0005bfa>] [<c00042fa>] [<c000591e>] [<c00059da>]
[<c00050fc>] [<c
001ef20>] [<c00096b0>]
[<c000571e>] [<c001ef20>] [<c00cb428>]
[<c001ef20>
[<c00041f0>]
Warning (Oops_read): Code line not seen, dumping what data is available
>>PC; c00cb428 <etrax_usb_hc_interrupt_top_half+32/ce> <=====
>>IRP; c00cb428 <etrax_usb_hc_interrupt_top_half+32/ce>
>>SRP; c001ef20 <handle_IRQ_event+2c/56> IRP; c00cb428
>><etrax_usb_hc_interrupt_top_half+32/ce>
>>SRP; c001ef20 <handle_IRQ_event+2c/56> r0; c03c84a0
>><_end+18cfc0/1dc4b20> r2; c0175f84 <init_thread_union+1f84/2000> r8;
>>c0175f30 <init_thread_union+1f30/2000> r12; c0175f84
>><init_thread_union+1f84/2000> r13; c0150028 <__func__.4+ee60/1aaf1>
Trace; c0005bfa <raw_printk+0/7e>
Trace; c00042fa <show_stack+0/a6>
Trace; c000591e <show_registers+e2/15c>
Trace; c00059da <die_if_kernel+32/42>
Trace; c00050fc <do_page_fault+1ec/2ac>
3 warnings and 1 error issued. Results may not be reliable.
Decoding
objdump-cris: oops.code: no symbols
oops.code: file format binary
Disassembly of section .data:
Disassembly of os/linux/vmlinux
PC = 0xc00cb428
Ooops in function c00cb3f6 t etrax_usb_hc_interrupt_top_half
os/linux/vmlinux: file format elf32-cris
Disassembly of section .text:
c00cb3f6 <etrax_usb_hc_interrupt_top_half>:
etrax_usb_hc_interrupt_top_half():
/home/dev/axis-r2/devboard-R2_00/os/linux-2.6/drivers/usb/host/hc_crisv10.c:
3273
static irqreturn_t etrax_usb_hc_interrupt_top_half(int irq, void *vhc,
struct pt_regs *regs) {
c00cb3f6: fce1 7ebe push $srp
c00cb3fa: fce1 ee8f push $r8
c00cb3fe: 6e86 move.d $sp,$r8
c00cb400: a0e2 subq 32,$sp
c00cb402: fe7b movem $r7,[$sp]
c00cb404: 6b76 move.d $r11,$r7
/home/dev/axis-r2/devboard-R2_00/os/linux-2.6/drivers/usb/host/hc_crisv10.c:
3286
usb_interrupt_registers_t *reg;
unsigned long flags;
__u32 irq_mask;
__u8 status;
__u32 epid_attn;
__u16 port_status_1;
__u16 port_status_2;
__u32 fm_number;
DBFENTER;
/* Read critical registers into local variables, do kmalloc
afterwards. */
local_irq_save(flags);
c00cb406: 7d56 move $ccr,$r13
c00cb408: f025 di
/home/dev/axis-r2/devboard-R2_00/os/linux-2.6/drivers/usb/host/hc_crisv10.c:
3288
irq_mask = *R_USB_IRQ_MASK_READ;
c00cb40a: 6f9e 0402 00b0 move.d b0000204
<dram_start-0xffffdfc>,$r9
c00cb410: 599a move.w [$r9],$r9
c00cb412: 5964 movu.w $r9,$r6
/home/dev/axis-r2/devboard-R2_00/os/linux-2.6/drivers/usb/host/hc_crisv10.c:
3292
/* Reading R_USB_STATUS clears the ctl_status interrupt. Note that
R_USB_STATUS
must be read before R_USB_EPID_ATTN since reading the latter
clears the
ourun and perror fields of R_USB_STATUS. */
status = *R_USB_STATUS;
c00cb414: 6f5e 0202 00b0 move.d b0000202
<dram_start-0xffffdfe>,$r5
c00cb41a: 455a move.b [$r5],$r5
/home/dev/axis-r2/devboard-R2_00/os/linux-2.6/drivers/usb/host/hc_crisv10.c:
3295
/* Reading R_USB_EPID_ATTN clears the iso_eof, bulk_eot and
epid_attn interrupts. */
epid_attn = *R_USB_EPID_ATTN;
c00cb41c: 6f4e 2402 00b0 move.d b0000224
<dram_start-0xffffddc>,$r4
c00cb422: 644a move.d [$r4],$r4
/home/dev/axis-r2/devboard-R2_00/os/linux-2.6/drivers/usb/host/hc_crisv10.c:
3299
/* Reading R_USB_RH_PORT_STATUS_1 and R_USB_RH_PORT_STATUS_2 clears
the
port_status interrupt. */
port_status_1 = *R_USB_RH_PORT_STATUS_1;
c00cb424: 6f3e 1802 00b0 move.d b0000218
<dram_start-0xffffde8>,$r3
Disassembly of section .exit.text:
Disassembly of section .init.text:
#### OOPS ####
c00cb428: 00b0 blt c00cb42a
<etrax_usb_hc_interrupt_top_half+0x34>
c00cb42a: 533a move.w [$r3],$r3
c00cb42c: 6f2e 1a02 00b0 move.d b000021a
<dram_start-0xffffde6>,$r2
c00cb432: 522a move.w [$r2],$r2
c00cb434: 6f1e 0c02 00b0 move.d b000020c
<dram_start-0xffffdf4>,$r1
[EMAIL PROTECTED] devboard-R2_00]#
-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games. How far can you shotput
a projector? How fast can you ride your desk chair down the office luge track?
If you want to score the big prize, get to know the little guy.
Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel