Hey,
this is probably my own mistake, but since I can't figure out what it
is, I'll ask here...
I'm trying to get my driver to work under 2.5.65. For this, I use the
Makefile that you can see at [1], running under 2.5.65. The BTTV module
from the kernel works. However, when loading and subsequentially trying
to use my own module (xawtv), I get a kernel oops:
-
Unable to handle kernel paging request at virtual address d08d7ee0
printing eip:
d08b50ce
*pde = 013fa067
*pte = 00000000
Oops: 0000
CPU: 0
EIP: 0060:[<d08b50ce>] Not tainted
EFLAGS: 00010282
EIP is at video_open+0xae/0x210 [videodev]
eax: d08d7ee0 ebx: d093dca0 ecx: d08b71a0 edx: cf74b8c0
esi: d08b71e0 edi: 00000004 ebp: d08b7340 esp: c974fef4
ds: 007b es: 007b ss: 0068
Process v4l-conf (pid: 1061, threadinfo=c974e000 task=ca43d290)
Stack: 00000000 c974ff3c c974fe30 c974ff04 00000000 00000000 ce192005
00008003
00000004 c974e000 cd4b7b60 cf74b8c0 00000000 c0150108 cf74b8c0
cd4b7b60
00000001 cd4b7b60 cf74b8c0 cf74b954 c014782b cf74b8c0 cd4b7b60
c0148311
Call Trace:
[<c0150108>] chrdev_open+0x58/0x90
[<c014782b>] dentry_open+0xfb/0x1e0
[<c0148311>] vfs_read+0xc1/0x150
[<c014771d>] filp_open+0x4d/0x60
[<c01537de>] getname+0x5e/0xa0
[<c0147b35>] sys_open+0x35/0x70
[<c010a86f>] syscall_call+0x7/0xb
Code: 8b 10 bf 01 00 00 00 85 d2 74 30 b8 00 e0 ff ff 21 e0 ff 40
-
Funny, because it's inside videodev.o. Debugging this oops (ksymoops)
even gives more useful (ahem) info:
-
>>EIP; d08b50ce <__crc_ide_spin_wait_hwgroup+1d6c31/4f885f> <=====
Code; d08b50ce <__crc_ide_spin_wait_hwgroup+1d6c31/4f885f>
00000000 <_EIP>:
Code; d08b50ce <__crc_ide_spin_wait_hwgroup+1d6c31/4f885f> <=====
0: 8b 10 mov (%eax),%edx <=====
Code; d08b50d0 <__crc_ide_spin_wait_hwgroup+1d6c33/4f885f>
2: bf 01 00 00 00 mov $0x1,%edi
Code; d08b50d5 <__crc_ide_spin_wait_hwgroup+1d6c38/4f885f>
7: 85 d2 test %edx,%edx
Code; d08b50d7 <__crc_ide_spin_wait_hwgroup+1d6c3a/4f885f>
9: 74 30 je 3b <_EIP+0x3b> d08b5109
<__crc_ide_spin_wait_hwgroup+1d6c6c/4f885f>
Code; d08b50d9 <__crc_ide_spin_wait_hwgroup+1d6c3c/4f885f>
b: b8 00 e0 ff ff mov $0xffffe000,%eax
Code; d08b50de <__crc_ide_spin_wait_hwgroup+1d6c41/4f885f>
10: 21 e0 and %esp,%eax
Code; d08b50e0 <__crc_ide_spin_wait_hwgroup+1d6c43/4f885f>
12: ff 40 00 incl 0x0(%eax)
-
No clue what that means. Obviously, all this works under 2.4.20 and it
uses the new videodev2 subsystem (file_ops-based). If I leave some
random warning in /usr/src/linux-2.5.65/include/linux/videodev2.h, I can
see the warning in the compiler output which means that the correct
videodev header files are being used to compiler both kernel and module,
so it's not an ABI mismatch issue, afaics.
In short: help! Why does this crash?
Ronald
[1]
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/mjpeg/driver-zoran/Makefile?rev=1.3.2.6&content-type=text/vnd.viewcvs-markup
--
Ronald Bultje <[EMAIL PROTECTED]>
--
video4linux-list mailing list
Unsubscribe mailto:[EMAIL PROTECTED]
https://listman.redhat.com/mailman/listinfo/video4linux-list