Hello, all.

As some of you know, I've been pounding at getting the Cyrix MediaGX +
Kernel 2.4.x series + ov511 camera to play nicely together.

A couple notes first, and a little history -

This is a Cyrix MediaGX 233 system, 8GB hard disk (DMA turned off,
wierd/bad things happen with it enabled), 64MB RAM, and a D-Link C300 USB
camera.  It's running a custom/stripped down version of RedHat 6.2,
updated at the appropriate places for Kernel 2.4.  I'm trying to grab
simple 640x480 frames from the ov511 based camera about every 15-30
seconds.

After my initial post about 5 days ago about random oopses in both 2.4.2
and 2.4.3, several replies were sent, one by David Brownell about
reverting to kernel 2.4.2, with Alan Cox's last pre-patch (ac28), and
apply pci-pool and ohci patches from 03/23, and enable kernel debugging
and slab poisoning, one from Pete Zaitcev pointing to a patch dealing with
device initialization, and another from Mark McClelland about ov511 v1.35
being available.

I took David's approach first, and it did two things, not the least of
which *seemed* to be eliminating the oopses, as it ran for a solid 24
hours before I started the experiment.  But, it also seemed to result in
total garbage from the camera, with mostly green, pink, and blue
"compression squares" the entire JPEG image (from vidcat 0.62).  I then
quick upgraded to ov511 v1.35 with the same results.

I should also add that I'm compiling the kernel on an identically
configured (software and kernel config wise) Intel P5-233 machine and
FTP'ing the resultant files over to the Cyrix MediaGX to save me a whole
bunch of time in compilation.  (I don't think that should have *any*
adverse effect here, should it?)

So, I decided to backtrack a little, approach it scientifically and
incrementally, and try to see where things went wrong.  I'll apologize if
this is all old news, I didn't see anything obvious from the mailing list,
and I'm no kernel or driver wizard, so it is possible that I killed a
bunch of my time for nothing :)

First, I reverted all the way back to vanilla Kernel 2.4.2 .

Kernel 2.4.2 will load the needed modules fine, and grab good frames from
the camera for awhile, but how long it runs is sort of gamble, and then
will mysteriously oops, and die.

Kernel 2.4.2-ac28 with the same kernel options (and no
CONFIG_DEBUG_KERNEL=y, CONFIG_DEBUG_SLAB=y yet as David Brownell
suggested) does about the same as vanilla 2.4.2.  Good frames, but will
eventually oops.

However, with Kernel 2.4.2-ac28 and enabling kernel debugging and slab
poisoning (CONFIG_DEBUG_KERNEL=y, CONFIG_DEBUG_SLAB=y), I load usbcore
first, and then get an immediate oops when loading the usb-ohci module.

The oops is:

invalid operand: 0000
CPU:    0
EIP:    0010:[<c01242ea>]
EFLAGS: 00010082
eax: a55a5a5a   ebx: c3b6d000   ecx: c3b6d3f4   edx: 124c0000
esi: c3b6d3cc   edi: c3b6d40c   ebp: c110d0a0   esp: c3855c18
ds: 0018   es: 0018   ss: 0018
Process syslogd (pid: 318, stackpage=c3855000)
Stack: 00000000 c3b6d3fc c3b6d40c c3b6d3fc 00000007 c0117445 c3854000
00000082
       c481a083 c3b6d3d0 c3812764 c3b6d3fc 00000000 c481a0ef c3e7ea94
c3b6d3fc
       00000297 c3b6d3fc c481a116 c3812764 c3812764 c481a21c c3812764
00000000
Call Trace: [<c0117445>] [<c481a083>] [<c481a0ef>] [<c481a116>]
[<c481a21c>] [<c481bbbf>] [<c481f000>]
       [<c481c7a7>] [<c0107fdd>] [<c0108147>] [<c0106e50>] [<c01e82cf>]
[<c0190018>] [<c016e2a9>] [<c0160010>]
       [<c011450c>] [<c012bba1>] [<c012c7ef>] [<c0114368>] [<c0124346>]
[<c01aa903>] [<c01aa917>] [<c01aaa83>]
       [<c01ac3c0>] [<c01db9fb>] [<c0126b86>] [<c012da71>] [<c0121627>]
[<c01216b7>] [<c012b14f>] [<c01211f4>]
       [<c01499b4>] [<c01499a2>] [<c012bedb>] [<c0106d93>]
Code: 0f 0b 8b 4d 10 f6 c5 08 74 4a 89 74 24 10 8b 55 0c 89 54 24
 <0>Kernel panic: Aiee, killing interrupt handler!

And, when run through ksymoops (with usbcore loaded), I get:

ksymoops 2.4.1 on i586 2.4.2-ac28.  Options used
     -V (default)
     -k /proc/ksyms (default)
     -l /proc/modules (default)
     -o /lib/modules/2.4.2-ac28/ (default)
     -m /boot/System.map (specified)

invalid operand: 0000
CPU:    0
EIP:    0010:[<c01242ea>]
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010082
eax: a55a5a5a   ebx: c3b6d000   ecx: c3b6d3f4   edx: 124c0000
esi: c3b6d3cc   edi: c3b6d40c   ebp: c110d0a0   esp: c3855c18
ds: 0018   es: 0018   ss: 0018
Process syslogd (pid: 318, stackpage=c3855000)
Stack: 00000000 c3b6d3fc c3b6d40c c3b6d3fc 00000007 c0117445 c3854000
00000082
       c481a083 c3b6d3d0 c3812764 c3b6d3fc 00000000 c481a0ef c3e7ea94
c3b6d3fc
       00000297 c3b6d3fc c481a116 c3812764 c3812764 c481a21c c3812764
00000000
Call Trace: [<c0117445>] [<c481a083>] [<c481a0ef>] [<c481a116>]
[<c481a21c>] [<c481bbbf>] [<c481f000>]
       [<c481c7a7>] [<c0107fdd>] [<c0108147>] [<c0106e50>] [<c01e82cf>]
[<c0190018>] [<c016e2a9>] [<c0160010>]
       [<c011450c>] [<c012bba1>] [<c012c7ef>] [<c0114368>] [<c0124346>]
[<c01aa903>] [<c01aa917>] [<c01aaa83>]
       [<c01ac3c0>] [<c01db9fb>] [<c0126b86>] [<c012da71>] [<c0121627>]
[<c01216b7>] [<c012b14f>] [<c01211f4>]
       [<c01499b4>] [<c01499a2>] [<c012bedb>] [<c0106d93>]
Code: 0f 0b 8b 4d 10 f6 c5 08 74 4a 89 74 24 10 8b 55 0c 89 54 24

>>EIP; c01242ea <kfree+132/220>   <=====
Trace; c0117445 <update_process_times+1d/94>
Trace; c481a083 <__kstrtab_usb_devfs_handle+12ca/????>
Trace; c481a0ef <__kstrtab_usb_devfs_handle+1336/????>
Trace; c481a116 <__kstrtab_usb_devfs_handle+135d/????>
Trace; c481a21c <__kstrtab_usb_devfs_handle+1463/????>
Trace; c481bbbf <__kstrtab_usb_devfs_handle+2e06/????>
Trace; c481f000 <__kstrtab_usb_devfs_handle+6247/????>
Trace; c481c7a7 <__kstrtab_usb_devfs_handle+39ee/????>
Trace; c0107fdd <handle_IRQ_event+31/5c>
Trace; c0108147 <do_IRQ+6b/ac>
Trace; c0106e50 <ret_from_intr+0/20>
Trace; c01e82cf <__const_udelay+1b/2c>
Trace; c0190018 <ide_stall_queue+18/24>
Trace; c016e2a9 <generic_unplug_device+25/28>
Trace; c0160010 <exp_procfs_exports+64/2d4>
Trace; c011450c <__run_task_queue+50/64>
Trace; c012bba1 <__wait_on_buffer+71/9c>
Trace; c012c7ef <fsync_inode_buffers+db/11c>
Trace; c0114368 <tasklet_hi_action+3c/60>
Trace; c0124346 <kfree+18e/220>
Trace; c01aa903 <skb_release_data+67/70>
Trace; c01aa917 <kfree_skbmem+b/58>
Trace; c01aaa83 <__kfree_skb+11f/128>
Trace; c01ac3c0 <skb_free_datagram+1c/20>
Trace; c01db9fb <unix_dgram_recvmsg+10b/118>
Trace; c0126b86 <nr_free_buffer_pages+e/58>
Trace; c012da71 <generic_commit_write+55/60>
Trace; c0121627 <generic_file_write+433/604>
Trace; c01216b7 <generic_file_write+4c3/604>
Trace; c012b14f <do_readv_writev+1cb/250>
Trace; c01211f4 <generic_file_write+0/604>
Trace; c01499b4 <ext2_fsync_inode+c/48>
Trace; c01499a2 <ext2_sync_file+12/18>
Trace; c012bedb <sys_fsync+5b/88>
Trace; c0106d93 <system_call+33/40>
Code;  c01242ea <kfree+132/220>
00000000 <_EIP>:
Code;  c01242ea <kfree+132/220>   <=====
   0:   0f 0b                     ud2a      <=====
Code;  c01242ec <kfree+134/220>
   2:   8b 4d 10                  mov    0x10(%ebp),%ecx
Code;  c01242ef <kfree+137/220>
   5:   f6 c5 08                  test   $0x8,%ch
Code;  c01242f2 <kfree+13a/220>
   8:   74 4a                     je     54 <_EIP+0x54> c012433e
<kfree+186/220>
Code;  c01242f4 <kfree+13c/220>
   a:   89 74 24 10               mov    %esi,0x10(%esp,1)
Code;  c01242f8 <kfree+140/220>
   e:   8b 55 0c                  mov    0xc(%ebp),%edx
Code;  c01242fb <kfree+143/220>
  11:   89 54 24 00               mov    %edx,0x0(%esp,1)

 <0>Kernel panic: Aiee, killing interrupt handler!


Now, I haven't a clue where that puts me :)  I did check, and it's
perfectly repeatable.  (BTW, thanks Pete, I knew about serial consoles a
long time ago, just never bothered to set one up before - never needed to.
Now I do, I did, and it saved about 15 minutes of typing the oops in by
hand.)

I'm planning on continuing my magic journey, applying the pci-pool patch
next, seeing if that oops goes away and if good grabs can be had.  Then
ohci patch, and so on.

Also, taking that same compiled kernel (2.4.2-ac28 with kernel debugging
and slab poisoning enabled) it doesn't work correctly either (but doesn't
oops), with this in the message log:

Apr  7 17:04:31 devel-uhci kernel: usb.c: registered new driver usbdevfs
Apr  7 17:04:31 devel-uhci kernel: usb.c: registered new driver hub
Apr  7 17:04:31 devel-uhci kernel: usb-uhci.c: $Revision: 1.251 $ time 15:56:36 Apr  7 
2001
Apr  7 17:04:31 devel-uhci kernel: usb-uhci.c: High bandwidth mode enabled
Apr  7 17:04:31 devel-uhci kernel: PCI: Found IRQ 12 for device 00:01.2
Apr  7 17:04:31 devel-uhci kernel: usb-uhci.c: USB UHCI at I/O 0xd800, IRQ 12
Apr  7 17:04:31 devel-uhci kernel: usb-uhci.c: Detected 2 ports
Apr  7 17:04:31 devel-uhci kernel: usb.c: new USB bus registered, assigned bus number 1
Apr  7 17:04:31 devel-uhci kernel: usb-uhci.c: interrupt, status 30, frame# 0
Apr  7 17:04:31 devel-uhci kernel: hub.c: USB hub found
Apr  7 17:04:31 devel-uhci kernel: hub.c: 2 ports detected
Apr  7 17:04:31 devel-uhci kernel: Linux video capture interface: v1.00
Apr  7 17:04:31 devel-uhci kernel: hub.c: USB new device connect on bus1/2, assigned 
device number 2
Apr  7 17:04:31 devel-uhci kernel: usb.c: registered new driver ov511
Apr  7 17:04:31 devel-uhci kernel: ov511.c: ov511 driver version 1.28 registered
Apr  7 17:04:34 devel-uhci kernel: usb_control/bulk_msg: timeout
Apr  7 17:04:34 devel-uhci kernel: usb.c: USB device not accepting new address=2 
(error=-110)
Apr  7 17:04:34 devel-uhci kernel: hub.c: USB new device connect on bus1/2, assigned 
device number 3
Apr  7 17:04:37 devel-uhci kernel: usb_control/bulk_msg: timeout
Apr  7 17:04:37 devel-uhci kernel: usb.c: USB device not accepting new address=3 
(error=-110)

As always, any and all help, suggestions, whatever, are more than welcome.
So close, but yet so far it seems...



Brad



_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
http://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to