mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "S. Anderson" <sa@xmission.com>
To: Pavel Rabel <pavel@xal.co.uk>
Cc: linux-kernel@vger.kernel.org
Subject: Re: OOPS 2.6.0-test2, modprobe i810fb
Date: Mon, 28 Jul 2003 20:19:54 -0600	[thread overview]
Message-ID: <20030728201954.A16103@xmission.xmission.com> (raw)
In-Reply-To: <20030728171806.GA1860@xal.co.uk>; from pavel@xal.co.uk on Mon, Jul 28, 2003 at 06:18:07PM +0100

On Mon, Jul 28, 2003 at 06:18:07PM +0100, Pavel Rabel wrote:
> Got this OOPS when trying "modprobe i810fb",
> kernel 2.6.0-test2
> 

I am also getting this oops, or somthing very simmillar.

I am new to kernel hacking, but I will try to explain what why I
think this is happening, and then hopefully someone will know how to fix
it :-).

basicly, in pci_bus_match(), when  *ids is assigned pci_drv->id_table
from a driver, (intel-agp, i810_audio and i810fb mabey others) the value
of ids->vendor is located at place where it cant be handled. Then further
up the line, the oops occurs at the pci_match_device() function when it 
tries to access ids->vendor. hopefully that makes sense.

I have added some debugging printks to pci_bus_match():

--- pci-driver.0.c      2003-07-27 15:40:56.000000000 -0600
+++ pci-driver.c        2003-07-28 19:51:47.000000000 -0600
@@ -48,6 +48,7 @@
 const struct pci_device_id *
 pci_match_device(const struct pci_device_id *ids, const struct pci_dev *dev)
 {
+       printk("pci_match_device: &ids->vendor = %p\n", &ids->vendor);
        while (ids->vendor || ids->subvendor || ids->class_mask) {
                if (pci_match_one_device(ids, dev))
                        return ids;
@@ -430,6 +431,12 @@
        if (!ids)
                return 0;
 
+       printk("pci_bus_match: bus=%d, devfn=%d %x %x\n",
+               pci_dev->bus->number, pci_dev->devfn, 
+               pci_dev->vendor,      pci_dev->device);
+       printk(" ^ matching? ^ (%s)  ((( &ids->vendor = %p )))\n", 
+                       pci_drv->name, &ids->vendor);
+
        found_id = pci_match_device(ids, pci_dev);
        if (found_id)
                return 1;

here is the output I get right before the oops + the oops run
through ksymoops

...
Adding 524280k swap on /swapfile.  Priority:-1 extents:209
mtrr: 0xe8000000,0x8000000 overlaps existing 0xe8000000,0x80000
 (pci_bus_add_devices) bus 3 devfn 0  1260 3890
pci_bus_match: bus=3, devfn=0 1260 3890
 ^ matching? ^ (agpgart-intel)  ((( &ids->vendor = c03f8e98 )))
pci_match_device: &ids->vendor = c03f8e98
Unable to handle kernel paging request at virtual address c03f8e98
 printing eip:
c01f7da3
... 

Error (regular_file): read_ksyms stat /proc/ksyms failed
No modules in ksyms, skipping objects
No ksyms, skipping lsmod
Unable to handle kernel paging request at virtual address c03f8e98
c01f7da3
*pde = 00102027
Oops: 0000 [#1]
CPU:    0
EIP:    0060:[<c01f7da3>]    Not tainted
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010286
eax: 0000002a   ebx: c03f8e98   ecx: 00000001   edx: c036f238
esi: c748b004   edi: c748b004   ebp: cf5fde94   esp: cf5fde84
ds: 007b   es: 007b   ss: 0068
Stack: c0327020 c03f8e98 c03a65a0 c03f8e98 cf5fdeb4 c01f84fb c03f8e98 c748b004
       ffffffed c03a65c8 c748b058 c8f12004 cf5fded0 c022b599 c748b058 c03a65c8
       c03a6610 c03a10f4 c748b058 cf5fdeec c022b62a c748b058 c03a65c8 c03a1080
Call Trace:
 [<c01f84fb>] pci_bus_match+0x5f/0x2b0
 [<c022b599>] bus_match+0x21/0x64
 [<c022b62a>] device_attach+0x4e/0x70
 [<c022b7a2>] bus_add_device+0x72/0xb4
 [<c022a0e0>] device_add+0xd0/0x108
 [<c01f4864>] pci_bus_add_devices+0x50/0x300
 [<c026186d>] cb_alloc+0xad/0xc8
 [<c025e802>] socket_insert+0x56/0xa4
 [<c025ea11>] socket_detect_change+0x69/0x70
 [<c025ec07>] pccardd+0x1ef/0x2a0
 [<c025ea18>] pccardd+0x0/0x2a0
 [<c011ae7c>] default_wake_function+0x0/0x20
 [<c011ae7c>] default_wake_function+0x0/0x20
 [<c01070c5>] kernel_thread_helper+0x5/0xc
Code: 83 3b 00 75 a0 83 7b 08 00 75 9a 83 7b 14 00 75 94 31 c0 8d


>>EIP; c01f7da3 <pci_match_device+73/90>   <=====

>>ebx; c03f8e98 <agp_intel_pci_table+0/38>
>>edx; c036f238 <log_wait+18/20>
>>esi; c748b004 <_end+7066900/3fbd98fc>
>>edi; c748b004 <_end+7066900/3fbd98fc>
>>ebp; cf5fde94 <_end+f1d9790/3fbd98fc>
>>esp; cf5fde84 <_end+f1d9780/3fbd98fc>

Trace; c01f84fb <pci_bus_match+5f/2b0>
Trace; c022b599 <bus_match+21/64>
Trace; c022b62a <device_attach+4e/70>
Trace; c022b7a2 <bus_add_device+72/b4>
Trace; c022a0e0 <device_add+d0/108>
Trace; c01f4864 <pci_bus_add_devices+50/300>
Trace; c026186d <cb_alloc+ad/c8>
Trace; c025e802 <socket_insert+56/a4>
Trace; c025ea11 <socket_detect_change+69/70>
Trace; c025ec07 <pccardd+1ef/2a0>
Trace; c025ea18 <pccardd+0/2a0>
Trace; c011ae7c <default_wake_function+0/20>
Trace; c011ae7c <default_wake_function+0/20>
Trace; c01070c5 <kernel_thread_helper+5/c>

Code;  c01f7da3 <pci_match_device+73/90>
00000000 <_EIP>:
Code;  c01f7da3 <pci_match_device+73/90>   <=====
   0:   83 3b 00                  cmpl   $0x0,(%ebx)   <=====
Code;  c01f7da6 <pci_match_device+76/90>
   3:   75 a0                     jne    ffffffa5 <_EIP+0xffffffa5> c01f7d48 <pci_match_device+18/90>
Code;  c01f7da8 <pci_match_device+78/90>
   5:   83 7b 08 00               cmpl   $0x0,0x8(%ebx)
Code;  c01f7dac <pci_match_device+7c/90>
   9:   75 9a                     jne    ffffffa5 <_EIP+0xffffffa5> c01f7d48 <pci_match_device+18/90>
Code;  c01f7dae <pci_match_device+7e/90>
   b:   83 7b 14 00               cmpl   $0x0,0x14(%ebx)
Code;  c01f7db2 <pci_match_device+82/90>
   f:   75 94                     jne    ffffffa5 <_EIP+0xffffffa5> c01f7d48 <pci_match_device+18/90>
Code;  c01f7db4 <pci_match_device+84/90>
  11:   31 c0                     xor    %eax,%eax
Code;  c01f7db6 <pci_match_device+86/90>
  13:   8d 00                     lea    (%eax),%eax


1 warning and 1 error issued.  Results may not be reliable.


  reply	other threads:[~2003-07-29  2:20 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-28 17:18 Pavel Rabel
2003-07-29  2:19 ` S. Anderson [this message]
2003-07-29  3:26   ` Andrew Morton
2003-07-29  5:18     ` S. Anderson
2003-07-29  5:32       ` Andrew Morton
2003-07-30  2:56         ` Bill Davidsen
2003-07-30 20:56           ` Michael Driscoll
2003-07-29  5:59       ` Andrew Morton
2003-07-29  7:24         ` S. Anderson
2003-07-29  7:54           ` Andrew Morton
2003-07-29  8:18             ` S. Anderson
2003-07-29 12:00             ` Alan Cox
2003-07-29 19:59               ` Andrew Morton
2003-07-29 23:04               ` S. Anderson
2003-07-29  9:34     ` Pavel Rabel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20030728201954.A16103@xmission.xmission.com \
    --to=sa@xmission.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pavel@xal.co.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®