bug report: paride with devfs

idalton@ferret.phonewave.net
Sun, 25 Mar 2001 20:18:43 -0800


I found this one out while trying to back up an old win95 system ;)

[1.] One line summary of the problem:

paride and/or devfs bork up and OOPS

[2.] Full description of the problem/report:

When releasing and re-loading the 'pd' module, swapping drives on the
parport box hardware, the devfs entry under /dev/pd/ doesn't get
updated, OOPS happens when creating or removing nodes by hand.

[3.] Keywords (i.e., modules, networking, kernel):

parport paride devfs modules

[4.] Kernel version (from /proc/version):

Linux version 2.4.2cc (root@bicycle) (gcc version 2.95.3 20010125 (prerelease)) #1 Thu Mar 15 13:10:32 PST 2001

[5.] Output of Oops.. message (if applicable) with symbolic information
resolved (see Documentation/oops-tracing.txt)

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

Warning: You did not tell me where to find symbol information. I will
assume that the log matches the kernel and modules that are running
right now and I'll use the default options above for symbol resolution.
If the current kernel and/or modules do not match the log, you can get
more accurate output by telling me the kernel version and where to find
map, modules, ksyms etc. ksymoops -h explains the options.

Warning (compare_maps): ksyms_base symbol __VERSIONED_SYMBOL(cuecat_process_scancode) not found in System.map. Ignoring ksyms_base entry
Warning (compare_maps): snd symbol pm_register not found in /usr/lib/alsa-modules/2.4.2cc/0.5/snd.o. Ignoring /usr/lib/alsa-modules/2.4.2cc/0.5/snd.o entry
Warning (compare_maps): snd symbol pm_send not found in /usr/lib/alsa-modules/2.4.2cc/0.5/snd.o. Ignoring /usr/lib/alsa-modules/2.4.2cc/0.5/snd.o entry
Warning (compare_maps): snd symbol pm_unregister not found in /usr/lib/alsa-modules/2.4.2cc/0.5/snd.o. Ignoring /usr/lib/alsa-modules/2.4.2cc/0.5/snd.o entry

Mar 25 18:42:02 bicycle kernel: paride: version 1.05 installed
Mar 25 18:42:02 bicycle kernel: paride: epat registered as protocol 0
Mar 25 18:42:05 bicycle kernel: pd: pd version 1.05, major 45, cluster 64, nice 0
Mar 25 18:42:05 bicycle kernel: pda: Sharing parport0 at 0x378
Mar 25 18:42:05 bicycle kernel: pda: epat 1.01, Shuttle EPAT chip c6 at 0x378, mode 5 (EPP-32), delay 1
Mar 25 18:42:05 bicycle kernel: pda: Conner Periphe, master, 237744 blocks [116M], (762/8/39), fixed media
Mar 25 18:42:05 bicycle kernel: pda: p1
Mar 25 18:42:05 bicycle kernel: devfs: devfs_auto_unregister(): only one slave allowed
Mar 25 18:42:05 bicycle kernel: master: "disc" old slave: "disc1" new slave: "disc3"
Mar 25 18:42:05 bicycle kernel: Forcing Oops
Mar 25 18:42:05 bicycle kernel: kernel BUG at base.c:1887!
Mar 25 18:42:05 bicycle kernel: invalid operand: 0000
Mar 25 18:42:05 bicycle kernel: CPU: 0
Mar 25 18:42:05 bicycle kernel: EIP: 0010:[devfs_auto_unregister+98/116]
Mar 25 18:42:05 bicycle kernel: EFLAGS: 00010282
Mar 25 18:42:05 bicycle kernel: eax: 0000001b ebx: c6541d40 ecx: c7442000 edx: c022e888
Mar 25 18:42:05 bicycle kernel: esi: c6541bc0 edi: c88a84c0 ebp: c6541c40 esp: c276dd90
Mar 25 18:42:05 bicycle kernel: ds: 0018 es: 0018 ss: 0018
Mar 25 18:42:05 bicycle kernel: Process modprobe (pid: 4615, stackpage=c276d000)
Mar 25 18:42:05 bicycle kernel: Stack: c0201f4f c02026c0 0000075f 00000000 00002d00 c014a40e c6541d40 c6541bc0
Mar 25 18:42:05 bicycle kernel: c023229c 00002d00 c88a84c0 c88a84c0 00000000 00000000 c6541bc0 63736964
Mar 25 18:42:05 bicycle kernel: 00000033 c027c584 c0113e8f 702f2e2e 69642f64 00306373 c7af66c0 c012f371
Mar 25 18:42:05 bicycle kernel: Call Trace: [devfs_register_disc+378/412] [<c88a84c0>] [<c88a84c0>]
Mar 25 18:42:05 bicycle kernel: [<c88a84c0>] [devfs_register_partitions+26/184] [<c88a84c0>]
[<c88a84c0>] [check_partition+274/288] [<c88a84c0>] [<c88a84c0>] [<c88a8d20>]
Mar 25 18:42:05 bicycle kernel: [<c88a8d68>] [<c88a1214>] [<c88a1243>] [<c88a8d20>] [<c88a8d20>] [<c88a6e51>] [<c88a8d20>] [<c88a8106>]
[<c88a84c0>] [<c88a74da>] [<c88a84c0>] [<c88a84f0>] [<c88a64f3>]
Mar 25 18:42:05 bicycle kernel: [<c88a80a0>] [<c88a7e40>] [<c88a7e40>] [<c88a8083>] [<c88a6000>] [<c88a6ab1>] [sys_init_module+1269/1424] [<c88a3000>]
Mar 25 18:42:05 bicycle kernel: [<c88a6060>] [system_call+51/64]
Mar 25 18:42:05 bicycle kernel: Code: 0f 0b 83 c4 0c 90 8d 74 26 00 89 73 24 5b 5e c3 89 f6 8b 44
Using defaults from ksymoops -t elf32-i386 -a i386

Trace; c88a84c0 <[pd]pd_gendisk+0/30>
Trace; c88a84c0 <[pd]pd_gendisk+0/30>
Trace; c88a8d68 <[pd]pd_buf+4c/203>
Trace; c88a1214 <[paride]pi_unclaim+18/1c>
Trace; c88a1243 <[paride]pi_disconnect+13/18>
Trace; c88a8d20 <[pd]pd_buf+4/203>
Trace; c88a8d20 <[pd]pd_buf+4/203>
Trace; c88a6e51 <[pd]pd_init_dev_parms+79/80>
Trace; c88a8d20 <[pd]pd_buf+4/203>
Trace; c88a8106 <[pd].rodata.start+2c6/4d3>
Trace; c88a84c0 <[pd]pd_gendisk+0/30>
Trace; c88a74da <[pd]pd_detect+14e/184>
Trace; c88a84c0 <[pd]pd_gendisk+0/30>
Trace; c88a84f0 <[pd]pd_fops+0/13>
Trace; c88a64f3 <[pd]pd_init+127/150>
Trace; c88a80a0 <[pd].rodata.start+260/4d3>
Trace; c88a7e40 <[pd].rodata.start+0/4d3>
Trace; c88a7e40 <[pd].rodata.start+0/4d3>
Trace; c88a8083 <[pd].rodata.start+243/4d3>
Trace; c88a6000 <[epat].data.end+18d5/1935>
Trace; c88a6ab1 <[pd]init_module+5/8>
Trace; c88a6060 <[pd]ps_set_intr+0/ac>
Code; 00000000 Before first symbol
00000000 <_EIP>:
Code; 00000000 Before first symbol
0: 0f 0b ud2a
Code; 00000002 Before first symbol
2: 83 c4 0c add $0xc,%esp
Code; 00000005 Before first symbol
5: 90 nop
Code; 00000006 Before first symbol
6: 8d 74 26 00 lea 0x0(%esi,1),%esi
Code; 0000000a Before first symbol
a: 89 73 24 mov %esi,0x24(%ebx)
Code; 0000000d Before first symbol
d: 5b pop %ebx
Code; 0000000e Before first symbol
e: 5e pop %esi
Code; 0000000f Before first symbol
f: c3 ret
Code; 00000010 Before first symbol
10: 89 f6 mov %esi,%esi
Code; 00000012 Before first symbol
12: 8b 44 00 00 mov 0x0(%eax,%eax,1),%eax

5 warnings issued. Results may not be reliable.

[6.] A small shell script or example program which triggers the
problem (if possible)

Steps to make the OOPS:

I'm using an H45 3.5" external IDE case with a Shuttle EPAT plus
controller, and a pair of standard IDE hard drives.
The case is connected to the parallal port and the power is disconnected.

* modprobe epat
* Plug in hard drive (set to slave) and plug in power
* modprobe pd
* Wait a minute or so to realise the drive is set to slave
* rmmod pd
* remove power, then re-jumper hard drive to be single/master
* modprobe pd
* Notice there is no /dev/pd/disc0/part1, even though the drive has a partition.
* rmmod pd
* Notice that /dev/pd/disc0/disc still exists
* rm /dev/pd/disc0/disc
* modprobe pd
* see OOPS

Notice that there appears to be a related problem with paride not
refreshing devfs.

[7.] Environment
[7.1.] Software (add the output of the ver_linux script here)

Hmmm. I don't have a ver_linux script on this machine. I'm going to
have to ask the kernel-package maintainer to include it in the
kernel-image debs.

[7.2.] Processor information (from /proc/cpuinfo):

processor : 0
vendor_id : AuthenticAMD
cpu family : 5
model : 7
model name : AMD-K6tm w/ multimedia extensions
stepping : 0
cpu MHz : 300.685
cache size : 64 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr mce cx8 mmx
bogomips : 599.65

[7.3.] Module information (from /proc/modules):

pd 12144 (initializing)
epat 6176 1
paride 3776 1 [pd epat]
nfs 74304 2 (autoclean)
lockd 49232 1 (autoclean) [nfs]
sunrpc 58528 1 (autoclean) [nfs lockd]
mousedev 4000 0 (unused)
hid 11616 0 (unused)
usbcore 46768 1 [hid]
input 3424 0 [mousedev hid]
parport_pc 22432 2 (autoclean)
lp 4624 0 (autoclean) (unused)
parport 25664 2 (autoclean) [paride parport_pc lp]
snd-card-opl3sa2 8720 0
snd-cs4231 18720 0 [snd-card-opl3sa2]
snd-mixer 24112 0 [snd-card-opl3sa2 snd-cs4231]
snd-pcm 32192 0 [snd-cs4231]
snd-mpu401-uart 2688 0 [snd-card-opl3sa2]
snd-rawmidi 10208 0 [snd-mpu401-uart]
snd-seq-device 4272 0 [snd-rawmidi]
snd-opl3 5008 0 [snd-card-opl3sa2]
snd-timer 8672 0 [snd-cs4231 snd-pcm snd-opl3]
snd-hwdep 3504 0 [snd-opl3]
snd 37488 1 [snd-card-opl3sa2 snd-cs4231 snd-mixer snd-pcm snd-mpu401-uart snd-rawmidi snd-seq-device snd-opl3 snd-timer snd-hwdep]
soundcore 4048 3 [snd]
3c59x 22624 1 (autoclean)

[7.4.] Loaded driver and hardware information (/proc/ioports, /proc/iomem)

0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0100-0101 : OPL3-SA control
0170-0177 : ide1
01f0-01f7 : ide0
0213-0213 : isapnp read
0240-024f : OPL3-SA SB
02f8-02ff : serial(set)
0300-0301 : OPL3-SA MPU-401
0376-0376 : ide1
0378-037a : parport0
037b-037f : parport0
0388-038f : OPL3-SA AdLib FM
03c0-03df : vga+
03e8-03ef : serial(auto)
03f6-03f6 : ide0
03f8-03ff : serial(set)
0a79-0a79 : isapnp write
0cf8-0cff : PCI conf1
0e80-0e87 : OPL3-SA WSS
4000-403f : Intel Corporation 82371AB PIIX4 ACPI
5000-501f : Intel Corporation 82371AB PIIX4 ACPI
6400-641f : Intel Corporation 82371AB PIIX4 USB
6800-687f : 3Com Corporation 3c905B 100BaseTX [Cyclone]
6800-687f : eth0
f000-f00f : Intel Corporation 82371AB PIIX4 IDE
f000-f007 : ide0
f008-f00f : ide1

00000000-0009fbff : System RAM
0009fc00-0009ffff : System RAM
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM
000f0000-000fffff : System ROM
00100000-07feffff : System RAM
00100000-001ef201 : Kernel code
001ef202-00244af3 : Kernel data
07ff0000-07ff2fff : ACPI Non-volatile Storage
07ff3000-07ffffff : ACPI Tables
e0000000-e07fffff : 3DLabs Permedia II 2D+3D
e0800000-e0ffffff : 3DLabs Permedia II 2D+3D
e1000000-e101ffff : 3DLabs Permedia II 2D+3D
e1020000-e102007f : 3Com Corporation 3c905B 100BaseTX [Cyclone]
ffff0000-ffffffff : reserved

[7.5.] PCI information ('lspci -vvv' as root)

00:00.0 Host bridge: Intel Corporation 430TX - 82439TX MTXC (rev 01)
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR-
Latency: 64

00:07.0 ISA bridge: Intel Corporation 82371AB PIIX4 ISA (rev 01)
Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 0

00:07.1 IDE interface: Intel Corporation 82371AB PIIX4 IDE (rev 01) (prog-if 80 [Master])
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 64
Region 4: I/O ports at f000 [size=16]

00:07.2 USB Controller: Intel Corporation 82371AB PIIX4 USB (rev 01) (prog-if 00 [UHCI])
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 64
Interrupt: pin D routed to IRQ 11
Region 4: I/O ports at 6400 [size=32]

00:07.3 Bridge: Intel Corporation 82371AB PIIX4 ACPI (rev 01)
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-

00:09.0 VGA compatible unclassified device: 3DLabs Permedia II 2D+3D (rev 01)
Subsystem: 3DLabs: Unknown device 0123
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 64 (48000ns min, 48000ns max)
Interrupt: pin A routed to IRQ 10
Region 0: Memory at e1000000 (32-bit, non-prefetchable) [size=128K]
Region 1: Memory at e0000000 (32-bit, non-prefetchable) [size=8M]
Region 2: Memory at e0800000 (32-bit, non-prefetchable) [size=8M]
Expansion ROM at <unassigned> [disabled] [size=64K]
Capabilities: [4c] Power Management version 1
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-

00:0f.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 30)
Subsystem: 3Com Corporation 3C905B Fast Etherlink XL 10/100
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 64 (2500ns min, 2500ns max), cache line size 08
Interrupt: pin A routed to IRQ 11
Region 0: I/O ports at 6800 [size=128]
Region 1: Memory at e1020000 (32-bit, non-prefetchable) [size=128]
Expansion ROM at <unassigned> [disabled] [size=128K]
Capabilities: [dc] Power Management version 1
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-

[7.6.] SCSI information (from /proc/scsi/scsi)

Don't have SCSI.

[7.7.] Other information that might be relevant to the problem
(please look in /proc and include all information that you
think to be relevant):

Seems to be devfs-related.

[X.] Other notes, patches, fixes, workarounds:
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/