Skip to contentSkip to conversation

PROBLEM: Oops when modprobing piix (2.4.21)

DISCUSSION Wilfried Weissmann 1 participant 1 message Jul 18, 2003 1 message not in the archive

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw
Quoted 2 lines · Tuukka Toivonen

[1.] Summary:
Oops when modprobing piix (2.4.21, 2.4.20 not tested)

the attached patch fixes the problem. i just recognized that the fix is already merged into 2.4.21-pre6-ac1.

greetings,
wilfried

Quoted 98 lines

[2.] Full description:
When piix support is compiled as module, and I type
modprobe piix
I get immediately kernel oops message. modprobe crashes with segmentation fault.

[3.] Keywords:
piix, ide, dma

[4.] Kernel version:
Linux version 2.4.21

[5.] Output of Oops:
ksymoops 2.4.5 on i586 2.4.21. Options used
-V (default)
-k /proc/ksyms (default)
-l /proc/modules (default)
-o /lib/modules/2.4.21/ (default)
-m /boot/vmlinuz-2.4.21.map (specified)

Jul  5 01:21:01 datazone kernel: Unable to handle kernel paging request at virtual address 83a52264
Jul  5 01:21:01 datazone kernel: c01f1e52
Jul  5 01:21:01 datazone kernel: *pde = 00000000
Jul  5 01:21:01 datazone kernel: Oops: 0002
Jul  5 01:21:01 datazone kernel: CPU:    0
Jul  5 01:21:01 datazone kernel: EIP:    0010:[<c01f1e52>]    Not tainted
Using defaults from ksymoops -t elf32-i386 -a i386
Jul  5 01:21:01 datazone kernel: EFLAGS: 00010282
Jul  5 01:21:01 datazone kernel: eax: c3812884   ebx: c1397e46   ecx: 00000cf8   edx: 00000000
Jul  5 01:21:01 datazone kernel: esi: c023f9e0   edi: c10fc800   ebp: c1397e48   esp: c1397e30
Jul  5 01:21:01 datazone kernel: ds: 0018   es: 0018   ss: 0018
Jul  5 01:21:01 datazone kernel: Process modprobe (pid: 2467, stackpage=c1397000)
Jul  5 01:21:01 datazone kernel: Stack: c01788a8 c023f9e0 c023f9e0 c38128a2 c381f000 00058bdf c1397e84 c0178c5a
Jul  5 01:21:01 datazone kernel:        c10fc800 c3812884 c023f9e0 c10fc800 c10fc800 c3812e00 00000000 00000000
Jul  5 01:21:01 datazone kernel:        00000001 00000000 00000000 e11db874 00000000 c1397ea0 c0178ccd c1397e9c
Jul  5 01:21:01 datazone kernel: Call Trace:    [<c01788a8>] [<c38128a2>] [<c0178c5a>] [<c3812884>] [<c3812e00>]
Jul  5 01:21:01 datazone kernel:   [<c0178ccd>] [<c3812884>] [<c011e4be>] [<c3811f18>] [<c3812884>] [<c3811f54>]
Jul  5 01:21:01 datazone kernel:   [<c3812884>] [<c3812c10>] [<c017c17e>] [<c3812c10>] [<c3812e00>] [<c017c1e7>]
Jul  5 01:21:01 datazone kernel:   [<c3812e00>] [<c3812e00>] [<c0178d1f>] [<c3812e00>] [<c3812012>] [<c3812e00>]
Jul  5 01:21:01 datazone kernel:   [<c01127f5>] [<c0127fa2>] [<c3811060>] [<c0106c93>]
Jul  5 01:21:01 datazone kernel: Code: 30 34 30 30 30 0a 23 64 65 66 69 6e 65 20 4d 41 53 4b 5f 31
Quoted 11 lines
Quoted 10 lines

EIP; c01f1e52 <ide_get_or_set_dma_base+2/148> <=====

eax; c3812884 <[piix]piix_pci_info+90/3c0>
ebx; c1397e46 <_end+11541ba/35bc374>
ecx; 00000cf8 Before first symbol
esi; c023f9e0 <ide_hwifs+0/2c88>
edi; c10fc800 <_end+eb8b74/35bc374>
ebp; c1397e48 <_end+11541bc/35bc374>
esp; c1397e30 <_end+11541a4/35bc374>

Trace; c01788a8 <ide_hwif_setup_dma+48/f0>
Trace; c38128a2 <[piix]piix_pci_info+ae/3c0>
Trace; c0178c5a <do_ide_setup_pci_device+222/27c>
Trace; c3812884 <[piix]piix_pci_info+90/3c0>
Trace; c3812e00 <[piix]driver+0/3f>
Trace; c0178ccd <ide_setup_pci_device+19/20>
Trace; c3812884 <[piix]piix_pci_info+90/3c0>
Trace; c011e4be <do_anonymous_page+e2/100>
Trace; c3811f18 <[piix]init_setup_piix+10/14>
Trace; c3812884 <[piix]piix_pci_info+90/3c0>
Trace; c3811f54 <[piix]piix_init_one+38/50>
Trace; c3812884 <[piix]piix_pci_info+90/3c0>
Trace; c3812c10 <[piix]piix_pci_tbl+54/244>
Trace; c017c17e <pci_announce_device+42/68>
Trace; c3812c10 <[piix]piix_pci_tbl+54/244>
Trace; c3812e00 <[piix]driver+0/3f>
Trace; c017c1e7 <pci_register_driver+43/60>
Trace; c3812e00 <[piix]driver+0/3f>
Trace; c3812e00 <[piix]driver+0/3f>
Trace; c0178d1f <ide_pci_register_driver+17/5c>
Trace; c3812e00 <[piix]driver+0/3f>
Trace; c3812012 <[piix]piix_ide_init+12/18>
Trace; c3812e00 <[piix]driver+0/3f>
Trace; c01127f5 <sys_init_module+5a9/664>
Trace; c0127fa2 <__alloc_pages+3e/14c>
Trace; c3811060 <[piix]__module_description+0/0>
Trace; c0106c93 <system_call+33/40>

Code; c01f1e52 <ide_get_or_set_dma_base+2/148>
00000000 <_EIP>:
Code; c01f1e52 <ide_get_or_set_dma_base+2/148> <=====
0: 30 34 30 xor %dh,(%eax,%esi,1) <=====
Code; c01f1e55 <ide_get_or_set_dma_base+5/148>
3: 30 30 xor %dh,(%eax)
Code; c01f1e57 <ide_get_or_set_dma_base+7/148>
5: 0a 23 or (%ebx),%ah
Code; c01f1e59 <ide_get_or_set_dma_base+9/148>
7: 64 65 66 69 6e 65 20 imul $0x4d20,%fs:%gs:0x65(%esi),%bp
Code; c01f1e60 <ide_get_or_set_dma_base+10/148>
e: 4d
Code; c01f1e61 <ide_get_or_set_dma_base+11/148>
f: 41 inc %ecx

Quoted 8 lines

Code; c01f1e62 <ide_get_or_set_dma_base+12/148>
10: 53 push %ebx
Code; c01f1e63 <ide_get_or_set_dma_base+13/148>
11: 4b dec %ebx
Code; c01f1e64 <ide_get_or_set_dma_base+14/148>
12: 5f pop %edi
Code; c01f1e65 <ide_get_or_set_dma_base+15/148>
13: 31 00 xor %eax,(%eax)

drivers/ide/setup-pci.c renamed from drivers/ide/setup-pci.c.orig +1 -1
@@ -172,7 +172,7 @@ static int ide_setup_pci_baseregs (struc
  *	is already in DMA mode we check and enforce IDE simplex rules.
  */
 
-static unsigned long __init ide_get_or_set_dma_base (ide_hwif_t *hwif)
+static unsigned long ide_get_or_set_dma_base (ide_hwif_t *hwif)
 {
 	unsigned long	dma_base = 0;
 	struct pci_dev	*dev = hwif->pci_dev;