2.5.19 OOPS in pcmcia setup code
Subsystems (2)
decoded oops follows, 100% reproducable.
Dell Latitude CPxJ750GT, PIII-750, Xircom RBEM56G100-TX,
kernel compiled with GCC 3.1. NB, 2.5.18 compiled with GCC 3.1 works fine.
I tried recompiling with RH7.3 GCC but I still get an oops
on boot - I can't decode it since it scrolls maybe a dozen screenfuls before stopping, so here's the GCC 3.1 one:
ksymoops 2.4.4 on i686 2.5.18. Options used
-v /usr/src/linux-2.5.19/vmlinux (specified)
-K (specified)
-L (specified)
-o /lib/modules/2.5.19 (specified)
-m /boot/System.map-2.5.19 (specified)No modules in ksyms, skipping objects
CPU: 0 EIP: 0010:[<c02cd3db>]
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010296
eax: cff57720 ebx: c13b69ec ecx: c13b6800 edx: c0207846
esi: c02f6794 edi: c13b6800 ebp: c13b6800 esp: cff5bb18
ds: 0018 es: 0018 ss: 0018
Stack: 0000000b 00000003 0000000b c13b6800 00026572 00038001 115dffff 00000000
00000000 00000000 00000000 cff57720 00000000 00000000 00000000 00000002
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Call Trace: [<c02043c7>] [<c020430f>] [<c0204286>] [<c0205ad7>] [<c0204c9a>]
[<c0120290>] [<c011d7e2>] [<c011d7c5>] [<c0207f50>] [<c0105000>] [<c011d6c7>]
[<c0105000>] [<c0105081>] [<c0105000>] [<c01057de>] [<c0105060>]
Code: 62 6f 72 61 74 6f 72 79 00 54 72 69 54 65 63 68 00 54 65 78Quoted 1 line
Quoted 1 line
EIP;
c02cd3db<timer_bug_msg+227db/2b9a0> <=====
Trace; c02043c7 <unreset_socket+a7/140>
Trace; c020430f <reset_socket+4f/60>
Trace; c0204286 <setup_socket+b6/f0>
Trace; c0205ad7 <pcmcia_register_client+277/2a0>
Trace; c0204c9a <pcmcia_bind_device+8a/f0>
Trace; c0120290 <process_timeout+0/10>
Trace; c011d7e2 <register_proc_table+b2/130>
Trace; c011d7c5 <register_proc_table+95/130>
Trace; c0207f50 <ds_event+0/90>
Trace; c0105000 <_stext+0/0>
Trace; c011d6c7 <register_sysctl_table+67/90>
Trace; c0105000 <_stext+0/0>
Trace; c0105081 <init+21/190>
Trace; c0105000 <_stext+0/0>
Trace; c01057de <kernel_thread+2e/40>
Trace; c0105060 <init+0/190>
Code; c02cd3db <timer_bug_msg+227db/2b9a0>
00000000 <_EIP>:
Code; c02cd3db <timer_bug_msg+227db/2b9a0> <=====
0: 62 6f 72 bound %ebp,0x72(%edi) <=====
Code; c02cd3de <timer_bug_msg+227de/2b9a0>
3: 61 popa
Code; c02cd3df <timer_bug_msg+227df/2b9a0>
4: 74 6f je 75 <_EIP+0x75> c02cd450 <timer_bug_msg+22850/2b9a0>
Code; c02cd3e1 <timer_bug_msg+227e1/2b9a0>
6: 72 79 jb 81 <_EIP+0x81> c02cd45c <timer_bug_msg+2285c/2b9a0>
Code; c02cd3e3 <timer_bug_msg+227e3/2b9a0>
8: 00 54 72 69 add %dl,0x69(%edx,%esi,2)
Code; c02cd3e7 <timer_bug_msg+227e7/2b9a0>
c: 54 push %esp
Code; c02cd3e8 <timer_bug_msg+227e8/2b9a0>
d: 65 63 68 00 arpl %bp,%gs:0x0(%eax)Code; c02cd3ec <timer_bug_msg+227ec/2b9a0>
11: 54 push %esp
Code; c02cd3ed <timer_bug_msg+227ed/2b9a0>
12: 65 gs
Code; c02cd3ee <timer_bug_msg+227ee/2b9a0>
13: 78 00 js 15 <_EIP+0x15> c02cd3f0 <timer_bug_msg+227f0/2b9a0>
--alessandro
"the hands that build / can also pull down
even the hands of love"
(U2, "Exit")
Quoted 9 lines · Alessandro Suardi
decoded oops follows, 100% reproducable.
Dell Latitude CPxJ750GT, PIII-750, Xircom RBEM56G100-TX,
kernel compiled with GCC 3.1. NB, 2.5.18 compiled with GCC 3.1 works fine.I tried recompiling with RH7.3 GCC but I still get an oops
on boot - I can't decode it since it scrolls maybe a dozen screenfuls before stopping, so here's the GCC 3.1 one:
My laptop also oopses on boot, but this patch makes things work again:
pci/hotplug.c renamed from pci/hotplug.c.old +1 -1
@@ -61,7 +61,7 @@struct list_head *ln;for (ln=pci_bus_type.drivers.next; ln != &pci_bus_type.drivers; ln=ln->next) { - struct pci_driver *drv = list_entry(ln, struct pci_driver, node); + struct pci_driver *drv = list_entry(ln, struct pci_driver, driver.bus_list);if (drv->remove &&pci_announce_device (drv, dev))break ; }
Signature · 2 lines
Peter Osterlund - [email protected] http://w1.894.telia.com/~u89404340
Quoted 1 line · Peter Osterlund
My laptop also oopses on boot, but this patch makes things work again:
I get an oops also in pci_unregister_driver, which happens because driver_list in the device structure is never initialized. I'm now running with this patch which seems to work:
drivers/base/driver.c +1 -0
@@ -37,6 +37,7 @@write_lock (&drv->bus->lock);list_add (&drv->bus_list,&drv->bus->drivers);write_unlock (&drv->bus->lock); +INIT_LIST_HEAD (&drv->devices);driver_make_dir (drv);put_driver (drv);return 0 ;
drivers/pci/hotplug.c +1 -1
@@ -61,7 +61,7 @@struct list_head *ln;for (ln=pci_bus_type.drivers.next; ln != &pci_bus_type.drivers; ln=ln->next) { - struct pci_driver *drv = list_entry(ln, struct pci_driver, node); + struct pci_driver *drv = list_entry(ln, struct pci_driver, driver.bus_list);if (drv->remove &&pci_announce_device (drv, dev))break ; }
drivers/pci/pci-driver.c +2 -0
@@ -52,6 +52,7 @@dev_probe_lock ();if (drv->probe (dev, id) >=0 ) { dev->driver = drv; +list_add_tail (&dev->dev.driver_list, &drv->driver.devices); ret =1 ; }dev_probe_unlock ();
@@ -169,6 +170,7 @@ pci_dev->driver =NULL ; dev->driver =NULL ;list_del_init (&dev->driver_list); + node = drv->driver.devices.next; }put_driver (&drv->driver); }
include/linux/device.h +1 -1
@@ -125,7 +125,7 @@struct list_head g_list;/* node in depth-first order list */ struct list_head node;/* node in sibling list */ struct list_head bus_list;/* node in bus's list */ -struct list_head driver_list; +struct list_head driver_list;/* node in device_driver's list */ struct list_head children;struct device * parent;
Signature · 2 lines
Peter Osterlund - [email protected] http://w1.894.telia.com/~u89404340