Hi all,
I have persistent problems with an USB->serial adaptor which contains an FTDI FT232AM chip.
Two symptoms are observable, depending on whether ftdi_sio is loaded
before or after attaching the adaptor. The serial port has not been
opened in both cases.
1) when the driver is loaded before, my machine locks completely when
the adaptor is unplugged
2) when the driver is loaded after attaching the adaptor, the machine
sometimes locks and sometimes writes an oops to the kernel log1) or 2) occur always when the adaptor is unplugged with loaded driver. No problems at all when ftdi_sio module is never loaded during the process.
The machine runs a stock 2.4.30 kernel with USB OHCI/EHCI. The USB controller is USB Controller: nVidia Corporation nForce2 USB Controller (rev a3)
devices.txt contains the output of /proc/bus/usb/devices (ftdi_sio not loaded). The device in question is T: Bus=02 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#= 4 Spd=12 MxCh= 0 P: Vendor=0403 ProdID=fb5a Rev= 2.00
ksymoops_unplug.txt is the output of ksymoops on the oops message. Symbols have been deleted.
ksymoops_modprobe-r.txt is the oops when ftdi_sio is removed with
'modprobe -r ftdi_sio' (device is not attached!).
It seems to me that something goes wrong inside ftdi_shutdown() when the device is unplugged. I have no clue what the problem could be with modprobe -r. Suggestions are welcome.
Best regards
Arnim
T: Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 6 B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 2.04 S: Manufacturer=Linux 2.4.30 ehci_hcd S: Product=nVidia Corporation nForce2 USB Controller S: SerialNumber=00:02.2 C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=256ms T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 3 B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 0.00 S: Product=USB OHCI Root Hub S: SerialNumber=f8808000 C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms T: Bus=02 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#= 4 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0403 ProdID=fb5a Rev= 2.00 S: Manufacturer=ELV AG S: Product=ELV Univ. USB-Modul UM100 S: SerialNumber=ELKNE1Z6 C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 44mA I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 3 B: Alloc= 56/900 us ( 6%), #Int= 4, #Iso= 0 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 0.00 S: Product=USB OHCI Root Hub S: SerialNumber=f8806000 C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 5 Spd=12 MxCh= 4 D: Ver= 1.01 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=05e3 ProdID=0604 Rev= 0.12 S: Product=USB Hub C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=255ms T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 6 Spd=12 MxCh= 2 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=04cc ProdID=1122 Rev= 1.10 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=255ms T: Bus=01 Lev=02 Prnt=06 Port=01 Cnt=01 Dev#= 7 Spd=12 MxCh= 0 D: Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=06cd ProdID=c001 Rev= 1.55 S: Manufacturer=ACME usb Widgets S: Product=Sun keyboard & mouse HID C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=200mA I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=hid E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=10ms I: If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=hid E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
ksymoops 2.4.8 on i686 2.4.30. Options used
-V (default)
-k /proc/ksyms (default)
-l /proc/modules (default)
-o /lib/modules/2.4.30/ (default)
-M (specified)
[lots of symbols deleted]
Apr 25 16:33:30 lola kernel: hub.c: new USB device 00:02.1-3, assigned address 2
Apr 25 16:33:30 lola kernel: usb.c: USB device 2 (vend/prod 0x403/0xfb5a) is
not claimed by any active driver.
Apr 25 16:33:37 lola kernel: usbserial.c: USB Serial support registered for
FTDI SIO
Apr 25 16:33:37 lola kernel: usbserial.c: USB Serial support registered for
FTDI 8U232AM Compatible
Apr 25 16:33:37 lola kernel: usbserial.c: USB Serial support registered for
FTDI FT232BM Compatible
Apr 25 16:33:37 lola kernel: usbserial.c: USB Serial support registered for
USB-UIRT Infrared Tranceiver
Apr 25 16:33:37 lola kernel: usbserial.c: USB Serial support registered for
Home-Electronics TIRA-1 IR Transceiver
Apr 25 16:33:37 lola kernel: usbserial.c: USB Serial support registered for
FTDI SIO compatible
Apr 25 16:33:37 lola kernel: usbserial.c: FTDI SIO compatible converter detected
Apr 25 16:33:37 lola kernel: usbserial.c: FTDI SIO compatible converter now
attached to ttyUSB0 (or usb/tts/0 for devfs)
Apr 25 16:33:37 lola kernel: ftdi_sio.c: v1.3.5:USB FTDI Serial Converters
Driver
Apr 25 16:33:55 lola kernel: usb.c: USB disconnect on device 00:02.1-3 address 2
Apr 25 16:33:55 lola kernel: Unable to handle kernel NULL pointer dereference
at virtual address 0000000c
Apr 25 16:33:55 lola kernel: c012dc6c
Apr 25 16:33:55 lola kernel: *pde = 00000000
Apr 25 16:33:55 lola kernel: Oops: 0000
Apr 25 16:33:55 lola kernel: CPU: 0
Apr 25 16:33:55 lola kernel: EIP: 0010:[kfree+44/192] Tainted: P
Apr 25 16:33:55 lola kernel: EIP: 0010:[<c012dc6c>] Tainted: P
Using defaults from ksymoops -t elf32-i386 -a i386
Apr 25 16:33:55 lola kernel: EFLAGS: 00210016
Apr 25 16:33:55 lola kernel: eax: 00c60c60 ebx: 080480f4 ecx: 00000000
edx: c100001c
Apr 25 16:33:55 lola kernel: esi: 00000000 edi: 00200002 ebp: f35d1380
esp: f7c2df08
Apr 25 16:33:55 lola kernel: ds: 0018 es: 0018 ss: 0018
Apr 25 16:33:55 lola kernel: Process khubd (pid: 8, stackpage=f7c2d000)
Apr 25 16:33:55 lola kernel: Stack: f35d13ac 00200246 00000000 f35d1380
c01cf7de 080480f4 f9ba1cf3 080480f4
Apr 25 16:33:55 lola kernel: f692e000 00000001 f692e000 00000000
f88aa234 f692e000 f692e01c f88ab502
Apr 25 16:33:55 lola kernel: f692e000 f88ac940 f1b78f00 f88ac960
c01d067a f36a1c00 f692e000 00000100
Apr 25 16:33:55 lola kernel: Call Trace: [usb_free_urb+14/32] [<f9ba1cf3>]
[<f88aa234>] [<f88ab502>] [<f88ac940>]
Apr 25 16:33:55 lola kernel: Call Trace: [<c01cf7de>] [<f9ba1cf3>]
[<f88aa234>] [<f88ab502>] [<f88ac940>]
Apr 25 16:33:55 lola kernel: [<f88ac960>] [usb_disconnect+138/304]
[usb_hub_port_connect_change+74/528] [usb_hub_events+221/624]
[usb_hub_thread+53/176] [arch_kernel_thread+40/64]
Apr 25 16:33:55 lola kernel: [<f88ac960>] [<c01d067a>] [<c01d2a8a>]
[<c01d2d2d>] [<c01d2ef5>] [<c01055a8>]
Apr 25 16:33:55 lola kernel: Code: 2b 59 0c 89 d8 31 d2 f7 76 18 89 c3 8b 41 14
89 44 99 18 89
>>EIP; c012dc6c <kfree+2c/c0> <=====
>>edx; c100001c <_end+d0b104/38515148>
>>ebp; f35d1380 <_end+332dc468/38515148>
>>esp; f7c2df08 <_end+37938ff0/38515148>
Trace; c01cf7de <usb_free_urb+e/20>
Trace; f9ba1cf3 <.data.end+1d7c/????>
Trace; f88aa234 <[usbserial]serial_shutdown+34/50>
Trace; f88ab502 <[usbserial]usb_serial_disconnect+92/200>
Trace; f88ac940 <[usbserial]usb_serial_driver+0/3c>
Trace; f88ac960 <[usbserial]usb_serial_driver+20/3c>
Trace; f88ac960 <[usbserial]usb_serial_driver+20/3c>
Trace; c01d067a <usb_disconnect+8a/130>
Trace; c01d2a8a <usb_new_device+16ca/1c50>
Trace; c01d2d2d <usb_new_device+196d/1c50>
Trace; c01d2ef5 <usb_new_device+1b35/1c50>
Trace; c01055a8 <machine_power_off+128/280>
Code; c012dc6c <kfree+2c/c0>
00000000 <_EIP>:
Code; c012dc6c <kfree+2c/c0> <=====
0: 2b 59 0c sub 0xc(%ecx),%ebx <=====
Code; c012dc6f <kfree+2f/c0>
3: 89 d8 mov %ebx,%eax
Code; c012dc71 <kfree+31/c0>
5: 31 d2 xor %edx,%edx
Code; c012dc73 <kfree+33/c0>
7: f7 76 18 divl 0x18(%esi)
Code; c012dc76 <kfree+36/c0>
a: 89 c3 mov %eax,%ebx
Code; c012dc78 <kfree+38/c0>
c: 8b 41 14 mov 0x14(%ecx),%eax
Code; c012dc7b <kfree+3b/c0>
f: 89 44 99 18 mov %eax,0x18(%ecx,%ebx,4)
Code; c012dc7f <kfree+3f/c0>
13: 89 00 mov %eax,(%eax)
ksymoops 2.4.8 on i686 2.4.30. Options used
-V (default)
-k /proc/ksyms (default)
-l /proc/modules (default)
-o /lib/modules/2.4.30/ (default)
-M (specified)
[lots of symbols deleted]
Apr 25 17:24:05 lola kernel: Unable to handle kernel paging request at virtual
address f9bb0d50
Apr 25 17:24:05 lola kernel: f88ab82b
Apr 25 17:24:05 lola kernel: *pde = 364a5067
Apr 25 17:24:05 lola kernel: Oops: 0002
Apr 25 17:24:05 lola kernel: CPU: 0
Apr 25 17:24:05 lola kernel: EIP: 0010:[<f88ab82b>] Tainted: P
Using defaults from ksymoops -t elf32-i386 -a i386
Apr 25 17:24:05 lola kernel: EFLAGS: 00210202
Apr 25 17:24:05 lola kernel: eax: f88ac97c ebx: 00000000 ecx: f88ac8f0
edx: f9bb0d50
Apr 25 17:24:05 lola kernel: esi: 000000ff edi: f88ac8e0 ebp: f88ad6c0
esp: e4ffff7c
Apr 25 17:24:05 lola kernel: ds: 0018 es: 0018 ss: 0018
Apr 25 17:24:05 lola kernel: Process modprobe.old (pid: 2501,
stackpage=e4fff000)
Apr 25 17:24:05 lola kernel: Stack: f88a9000 fffffff0 f88a9000 bfffe228
f88ab76a f88ac8e0 c0119dd7 f88a9000
Apr 25 17:24:05 lola kernel: fffffff0 e4fd8000 bfffe228 c0119167
f88a9000 00000000 e4ffe000 40014020
Apr 25 17:24:05 lola kernel: bffff464 c0106c77 0806da78 0806da78
bfffe228 40014020 bffff464 bfffe228
Apr 25 17:24:05 lola kernel: Call Trace: [<f88ab76a>] [<f88ac8e0>]
[free_module+23/160] [sys_delete_module+247/448] [system_call+51/56]
Apr 25 17:24:05 lola kernel: Call Trace: [<f88ab76a>] [<f88ac8e0>]
[<c0119dd7>] [<c0119167>] [<c0106c77>]
Apr 25 17:24:05 lola kernel: Code: 89 02 c7 47 10 00 00 00 00 c7 41 04 00 00 00
00 5b 5e 5f 5d
>>EIP; f88ab82b <[usbserial]usb_serial_deregister+5b/70> <=====
>>eax; f88ac97c <[usbserial]usb_serial_driver_list+0/8>
>>ecx; f88ac8f0 <[usbserial]generic_device+10/54>
>>edi; f88ac8e0 <[usbserial]generic_device+0/54>
>>ebp; f88ad6c0 <[usbserial].data.end+c65/2605>
>>esp; e4ffff7c <_end+24d0b064/38515148>
Trace; f88ab76a <[usbserial]usb_serial_exit+a/30>
Trace; f88ac8e0 <[usbserial]generic_device+0/54>
Trace; f88ab76a <[usbserial]usb_serial_exit+a/30>
Trace; f88ac8e0 <[usbserial]generic_device+0/54>
Trace; c0119dd7 <try_inc_mod_count+d97/1600>
Trace; c0119167 <try_inc_mod_count+127/1600>
Trace; c0106c77 <__up_wakeup+1067/1430>
Code; f88ab82b <[usbserial]usb_serial_deregister+5b/70>
00000000 <_EIP>:
Code; f88ab82b <[usbserial]usb_serial_deregister+5b/70> <=====
0: 89 02 mov %eax,(%edx) <=====
Code; f88ab82d <[usbserial]usb_serial_deregister+5d/70>
2: c7 47 10 00 00 00 00 movl $0x0,0x10(%edi)
Code; f88ab834 <[usbserial]usb_serial_deregister+64/70>
9: c7 41 04 00 00 00 00 movl $0x0,0x4(%ecx)
Code; f88ab83b <[usbserial]usb_serial_deregister+6b/70>
10: 5b pop %ebx
Code; f88ab83c <[usbserial]usb_serial_deregister+6c/70>
11: 5e pop %esi
Code; f88ab83d <[usbserial]usb_serial_deregister+6d/70>
12: 5f pop %edi
Code; f88ab83e <[usbserial]usb_serial_deregister+6e/70>
13: 5d pop %ebp
