2001-11-23 16:29:54

by Didier Moens

[permalink] [raw]
Subject: OOPS in agpgart (2.4.13, 2.4.15pre7)


Hi all,


This is my first oops report on lkml, so please be gentle with me. :)


Hardware : IBM A30p (P3-1.2 GHz) with Intel i830 and ATI M6 Radeon
Mobility LY


Symptoms : oops when modprobing agpgart, both in the RedHat 2.4.13-0.6
kernel and in a vanilla 2.4.15pre7.


Traces :

RH 2.4.13-0.6 :
-------------

# modprobe agpgart

Unable to handle kernel NULL pointer dereference at virtual address 00000020
*pde = 00000000
Oops: 0000
CPU: 0
EIP: 0010:[<e292d816>] Tainted: P
EFLAGS: 00010282
EIP is at agp_enable_R50eb8453 [agpgart] 0x39b6
eax: 00000000 ebx: 00000000 ecx: ffffffff edx: c02d25e8
esi: c1c81c00 edi: e292fb88 ebp: 00000000 esp: deda9eec
ds: 0018 es: 0018 ss: 0018
Process modprobe (pid: 427, stackpage=deda9000)
Stack: 000001b7 0092fa88 00000000 e292fa88 00000000 e292da80 00000000
e2928000
00000000 00000000 00000060 e292dc84 e292ef40 00000000 00000063
e2928000
c0118665 00000000 de755000 000071df de754000 00000060 ffffffea
00000007
Call Trace: [<e292fa88>] __insmod_agpgart_S.data_L1888 [agpgart] 0x748
[<e292da80>] agp_enable_R50eb8453 [agpgart] 0x3c20
[<e292dc84>] agp_enable_R50eb8453 [agpgart] 0x3e24
[<e292ef40>] __insmod_agpgart_S.rodata_L416 [agpgart] 0x1120
[<c0118665>] sys_init_module [kernel] 0x535
[<e2928060>]
__insmod_agpgart_O/lib/modules/2.4.13-0.6/kernel/drivers/char/agp/agpgart.o_M3BF52777_V132109
[agpgart] 0x60
[<c0106f2b>] system_call [kernel] 0x33


Code: f6 43 20 07 74 15 53 68 77 35 00 00 68 86 80 00 00 e8 14 11
Segmentation fault




Vanilla 2.4.15-pre7 (through ksymoops, my first try (!) ) :
-------------------

Nov 22 15:46:54 localhost kernel: Unable to handle kernel NULL pointer
dereference at virtual address 00000020
Nov 22 15:46:54 localhost kernel: e08deb06
Nov 22 15:46:54 localhost kernel: *pde = 00000000
Nov 22 15:46:54 localhost kernel: Oops: 0000
Nov 22 15:46:54 localhost kernel: CPU: 0
Nov 22 15:46:54 localhost kernel: EIP: 0010:[<e08deb06>] Tainted: P
Using defaults from ksymoops -t elf32-i386 -a i386
Nov 22 15:46:54 localhost kernel: EFLAGS: 00010282
Nov 22 15:46:54 localhost kernel: eax: 00000000 ebx: 00000000 ecx:
ffffffff edx: c024d188
Nov 22 15:46:54 localhost kernel: esi: c1838000 edi: e08e0cc8 ebp:
00000000 esp: dfa07eec
Nov 22 15:46:54 localhost kernel: ds: 0018 es: 0018 ss: 0018
Nov 22 15:46:54 localhost kernel: Process modprobe (pid: 426,
stackpage=dfa07000)
Nov 22 15:46:54 localhost kernel: Stack: 000001b7 008e0bc8 00000000
e08e0bc8 00000000 e08ded70 00000000 e08d9000
Nov 22 15:46:54 localhost kernel: 00000000 00000000 00000060
e08def74 e08dffe0 00000000 00000063 e08d9000
Nov 22 15:46:54 localhost kernel: c01163a5 00000000 dee87000
00007283 dee88000 00000060 ffffffea 00000007
Nov 22 15:46:54 localhost kernel: Call Trace: [<e08e0bc8>] [<e08ded70>]
[<e08def74>] [<e08dffe0>] [sys_init_module+1333/1520]
Nov 22 15:46:54 localhost kernel: Call Trace: [<e08e0bc8>] [<e08ded70>]
[<e08def74>] [<e08dffe0>] [<c01163a5>]
Nov 22 15:46:54 localhost kernel: [<e08d9060>] [system_call+51/56]
Nov 22 15:46:54 localhost kernel: [<e08d9060>] [<c0106f0b>]
Nov 22 15:46:54 localhost kernel: Code: f6 43 20 07 74 15 53 68 77 35 00
00 68 86 80 00 00 e8 b4 18

>>EIP; e08deb06 <[agpgart]agp_find_supported_device+196/340> <=====
Trace; e08e0bc8 <[agpgart]agp_current_version+0/17>
Trace; e08ded70 <[agpgart]agp_backend_initialize+40/1c0>
Trace; e08def74 <[agpgart]agp_init+14/80>
Trace; e08dffe0 <[agpgart].LC85+1a0/5a0>
Trace; e08e0bc8 <[agpgart]agp_current_version+0/17>
Trace; e08ded70 <[agpgart]agp_backend_initialize+40/1c0>
Trace; e08def74 <[agpgart]agp_init+14/80>
Trace; e08dffe0 <[agpgart].LC85+1a0/5a0>
Trace; c01163a5 <sys_init_module+535/5f0>
Trace; e08d9060 <[agpgart]agp_find_mem_by_key+0/30>
Trace; e08d9060 <[agpgart]agp_find_mem_by_key+0/30>
Trace; c0106f0b <system_call+33/38>
Code; e08deb06 <[agpgart]agp_find_supported_device+196/340>
00000000 <_EIP>:
Code; e08deb06 <[agpgart]agp_find_supported_device+196/340> <=====
0: f6 43 20 07 testb $0x7,0x20(%ebx) <=====
Code; e08deb0a <[agpgart]agp_find_supported_device+19a/340>
4: 74 15 je 1b <_EIP+0x1b> e08deb21
<[agpgart]agp_find_supported_device+1b1/340>
Code; e08deb0c <[agpgart]agp_find_supported_device+19c/340>
6: 53 push %ebx
Code; e08deb0d <[agpgart]agp_find_supported_device+19d/340>
7: 68 77 35 00 00 push $0x3577
Code; e08deb12 <[agpgart]agp_find_supported_device+1a2/340>
c: 68 86 80 00 00 push $0x8086
Code; e08deb17 <[agpgart]agp_find_supported_device+1a7/340>
11: e8 b4 18 00 00 call 18ca <_EIP+0x18ca> e08e03d0
<[agpgart].LC85+590/5a0>


3 warnings issued. Results may not be reliable.




Didn't try yet with 2.4.15final.


The output of lspci (both 2.4.13-0.6 and 2.4.15pre7) doesn't mention the
i830 either, though it is defined in /drivers/char/agp/agpgart_be.c, and
support for AGP_INTEL is compiled in !?

# lspci

00:00.0 Host bridge: Intel Corporation: Unknown device 3575 (rev 02)
00:01.0 PCI bridge: Intel Corporation: Unknown device 3576 (rev 02)
00:1d.0 USB Controller: Intel Corporation: Unknown device 2482 (rev 01)
00:1d.1 USB Controller: Intel Corporation: Unknown device 2484 (rev 01)
00:1d.2 USB Controller: Intel Corporation: Unknown device 2487 (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801BA PCI (rev 41)
00:1f.0 ISA bridge: Intel Corporation: Unknown device 248c (rev 01)
00:1f.1 IDE interface: Intel Corporation: Unknown device 248a (rev 01)
00:1f.3 SMBus: Intel Corporation: Unknown device 2483 (rev 01)
00:1f.5 Multimedia audio controller: Intel Corporation: Unknown device
2485 (rev 01)
00:1f.6 Modem: Intel Corporation: Unknown device 2486 (rev 01)
01:00.0 VGA compatible controller: ATI Technologies Inc: Unknown device 4c59
02:00.0 CardBus bridge: Ricoh Co Ltd RL5c478 (rev a0)
02:00.1 CardBus bridge: Ricoh Co Ltd RL5c478 (rev a0)
02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd: Unknown device 0522
02:02.0 Network controller: Harris Semiconductor: Unknown device 3873
(rev 01)
02:08.0 Ethernet controller: Intel Corporation: Unknown device 1031 (rev 41)




Kind regards,




2001-11-23 17:00:55

by Stephan von Krawczynski

[permalink] [raw]
Subject: Re: OOPS in agpgart (2.4.13, 2.4.15pre7)

On Fri, 23 Nov 2001 18:30:01 +0100
Didier Moens <[email protected]> wrote:

>
> Hi all,
>
>
> This is my first oops report on lkml, so please be gentle with me. :)
>
>
> Hardware : IBM A30p (P3-1.2 GHz) with Intel i830 and ATI M6 Radeon
> Mobility LY
>
>
> Symptoms : oops when modprobing agpgart, both in the RedHat 2.4.13-0.6
> kernel and in a vanilla 2.4.15pre7.

Hello,

could be that this code from /drivers/char/agp/agpgart_be.c is bogus:

case PCI_DEVICE_ID_INTEL_830_M_0:
i810_dev = pci_find_device(PCI_VENDOR_ID_INTEL,

PCI_DEVICE_ID_INTEL_830_M_1,

NULL);
===> if(PCI_FUNC(i810_dev->devfn) != 0) {
i810_dev = pci_find_device(PCI_VENDOR_ID_INTEL,

PCI_DEVICE_ID_INTEL_830_M_1,

i810_dev);
}

if (i810_dev == NULL) {
printk(KERN_ERR PFX "Detected an "
"Intel 830M, but could not find the"
" secondary device.\n");
agp_bridge.type = NOT_SUPPORTED;
return -ENODEV;
}
printk(KERN_INFO PFX "Detected an Intel "
"830M Chipset.\n");
agp_bridge.type = INTEL_I810;
return intel_i830_setup(i810_dev);

Try this patch:


--- agpgart_be.c-orig Fri Nov 23 17:57:24 2001
+++ agpgart_be.c Fri Nov 23 17:55:24 2001
@@ -3879,7 +3879,7 @@
i810_dev = pci_find_device(PCI_VENDOR_ID_INTEL,

PCI_DEVICE_ID_INTEL_830_M_1,

NULL);
+ if(i810_dev && ( PCI_FUNC(i810_dev->devfn) != 0) ) {
- if(PCI_FUNC(i810_dev->devfn) != 0) {
i810_dev = pci_find_device(PCI_VENDOR_ID_INTEL,

PCI_DEVICE_ID_INTEL_830_M_1,

i810_dev);


2001-11-24 21:34:50

by Didier Moens

[permalink] [raw]
Subject: Re: OOPS in agpgart (2.4.13, 2.4.15pre7)

Dear,


Stephan von Krawczynski wrote:

> On Fri, 23 Nov 2001 18:30:01 +0100
> Didier Moens <[email protected]> wrote:
>
>
>>Hi all,
>>
>>
>>This is my first oops report on lkml, so please be gentle with me. :)
>>
>>
>>Hardware : IBM A30p (P3-1.2 GHz) with Intel i830 and ATI M6 Radeon
>>Mobility LY
>>
>>
>>Symptoms : oops when modprobing agpgart, both in the RedHat 2.4.13-0.6
>>kernel and in a vanilla 2.4.15pre7.
>>
>
> Hello,
>
> could be that this code from /drivers/char/agp/agpgart_be.c is bogus:
>
[]


>
> Try this patch:
>


[]


After applying the patch, modprobing agpgart doesn't yield an oops
anymore ; unfortunately :

# modprobe agpgart
/lib/modules/2.4.15-did/kernel/drivers/char/agp/agpgart.o: init_module:
No such device
Hint: insmod errors can be caused by incorrect module parameters,
including invalid IO or IRQ parameters
/lib/modules/2.4.15-did/kernel/drivers/char/agp/agpgart.o: insmod
/lib/modules/2.4.15-did/kernel/drivers/char/agp/agpgart.o failed
/lib/modules/2.4.15-did/kernel/drivers/char/agp/agpgart.o: insmod
agpgart failed

And in /var/log/messages :

Nov 24 22:57:49 localhost kernel: Linux agpgart interface v0.99 (c) Jeff
Hartmann
Nov 24 22:57:49 localhost kernel: agpgart: Maximum main memory to use
for agp memory: 439M
Nov 24 22:57:49 localhost kernel: agpgart: Detected an Intel 830M, but
could not find the secondary device.


I don't have the slightest idea what the secondary device is supposed to
be ; "modprobe radeon" loads the DRM radeon module without any problems
whatsoever.


Kind regards,

Didier