Hi,
Summary
=======
I've been trying to get the smartmedia part of a DPCM
device to work for some time. I've had confirmation from the
manifacturer that the Cameramate driver is the one to use ;
however, almost any operation on the card will trigger a
oops. So at last today I decided to put up a complete bug report.
[Warning, I did try to clean up the logs, but the USB debug
mode is still very verbose, so some attachements will be
compressed]
Setup
======
The kernel version used was a clean 2.4.2-ac17, except that
DPCM and SDDR09 options where added to the usb Config.in,
and the following entry to the unusual devices list :
#ifdef CONFIG_USB_STORAGE_DPCM
UNUSUAL_DEV( 0x04e6, 0x0005, 0x0100, 0x0208,
"SCM Microsystems Inc",
"eUSB SmartMedia / CompactFlash Adapter",
US_SC_SCSI, US_PR_DPCM_USB, NULL,
US_FL_START_STOP ),
#endif
[I'm pretty sure of this one : options are copied frome the
CameraMate entry, my reader is version 2.08 and the text
identification is how it reports itself on an unmodified
kernel. So please, someone complete the usb storage unusual
devices list with this]
I use a monolithic kernel compiled with RedHat's
gcc-2.96-77.1, but I got the same oopses with lots of other
kernels, some modular and others even compiled with kgcc, so
I do think the problem is in the usb code.
The kernel was compiled for an athlon processor.
The oops was triggered by a cp -r of the full contents of a
mounted 32 MB smartmedia card, just after a reboot.
Log files
=========
* ksymoops output :
ksymoops 2.4.0 on i686 2.4.2-ac17-rous1. Options used
-v /usr/src/linux-2.4.2-ac17/vmlinux (specified)
-k /proc/ksyms (specified)
-l /proc/modules (default)
-o /lib/modules/2.4.2-ac17-rous1/ (specified)
-m /boot/System.map-2.4.2-ac17-rous1 (specified)
Warning (compare_maps): ksyms_base symbol __VERSIONED_SYMBOL(shmem_file_setup) not
found in vmlinux.
Ignoring ksyms_base entry
invalid operand: 0000
CPU: 0
EIP: 0010:[<c01280be>]
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010246
eax: 00000000 ebx: 00558000 ecx: 00035000 edx: c0287ee0
esi: 00000007 edi: 00000000 ebp: c14acfc0 esp: cfe99dd4
ds: 0018 es: 0018 ss: 0018
Process usb-storage-0 (pid: 10, stackpage=cfe99000)
Stack: 0000001b 00000002 c0114c15 cfe99e00 00558000 c14acfc0 c01e
d877 00035000
00000007 ffffffff 00035000 cfe99e74 c02cc000 c023e047 0000
0000 000001a8
01a80000 0000000a ffffffff 00062d6d c0114a76 000020e8 0000
0000 00000000
Call Trace: [<c0114c15>] [<c01ed877>] [<c023e047>] [<c0114a76>] [
<c01ee4fb>] [<c023e047>] [<c0114a76>]
[<c01ee6eb>] [<c01e9d57>] [<c0114c15>] [<c01ec59b>] [<c01e
9504>] [<c01eb0ab>] [<c0108e8e>] [<c01ead70>]
[<c01074d6>] [<c01ead70>]
Code: 0f 0b 31 c0 83 c4 10 5b 5e c3 90 8d b4 26 00 00 00 00 55 57
>>EIP; c01280be <kmalloc+7e/90> <=====
Trace; c0114c15 <printk+125/130>
Trace; c01ed877 <sddr09_read_data+77/2c0>
Trace; c023e047 <vsprintf+327/360>
Trace; c0114a76 <call_console_drivers+c6/d0>
Trace; c01ee6eb <dpcm_transport+5b/90>
Trace; c01e9d57 <usb_stor_invoke_transport+17/2b0>
Trace; c0114c15 <printk+125/130>
Trace; c01ec59b <usb_stor_show_command+56b/570>
Trace; c01074d6 <kernel_thread+26/30>
Trace; c01ead70 <usb_stor_control_thread+0/400>
Code; c01280be <kmalloc+7e/90>
00000000 <_EIP>:
Code; c01280be <kmalloc+7e/90> <=====
0: 0f 0b ud2a <=====
Code; c01280c0 <kmalloc+80/90>
2: 31 c0 xor %eax,%eax
Code; c01280c2 <kmalloc+82/90>
4: 83 c4 10 add $0x10,%esp
Code; c01280c5 <kmalloc+85/90>
7: 5b pop %ebx
Code; c01280c6 <kmalloc+86/90>
8: 5e pop %esi
Code; c01280c7 <kmalloc+87/90>
9: c3 ret
Code; c01280c8 <kmalloc+88/90>
a: 90 nop
Code; c01280c9 <kmalloc+89/90>
b: 8d b4 26 00 00 00 00 lea 0x0(%esi,1),%esi
Code; c01280d0 <kmem_cache_free+0/b0>
12: 55 push %ebp
Code; c01280d1 <kmem_cache_free+1/b0>
13: 57 push %edi
1 warning issued. Results may not be reliable.
* /var/log/messages output : from system boot-up to usb
oops, cleaned-up a little : see attached file
smartmedia.txt.bz2
Other logs are available on demand. I hope some bright mind
will see where the problem is, this have been plaging me for
months.
Best regards,
--
Nicolas Mailhot
smartmedia.txt.bz2