cvs commit: src/sys/i386/isa apic_vector.s clock.c src/sys/kern kern_intr.c kern_sig.c kern_slaballoc.c kern_switch.c kern_systimer.c kern_upcall.c lwkt_msgport.c lwkt_thread.c lwkt_token.c src/sys/sys slaballoc.h

YONETANI Tomokazu qhwt+dragonfly-commits at les.ath.cx
Tue Feb 17 04:55:00 PST 2004


On Wed, Feb 11, 2004 at 10:57:49PM -0800, Matthew Dillon wrote:
> dillon      2004/02/11 22:57:49 PST
> 
> DragonFly src repository
> 
>   Modified files:
>     sys/i386/isa         apic_vector.s clock.c 
>     sys/kern             kern_intr.c kern_sig.c kern_slaballoc.c 
>                          kern_switch.c kern_systimer.c 
>                          kern_upcall.c lwkt_msgport.c 
>                          lwkt_thread.c lwkt_token.c 
>     sys/sys              slaballoc.h 
>   Log:
>   Change lwkt_send_ipiq() and lwkt_wait_ipiq() to take a globaldata_t instead
>   of a cpuid.  This is part of an ongoing cleanup to use globaldata_t's to
>   reference other cpus rather then their cpu numbers, reducing the number of
>   serialized memory indirections required in a number of code paths and
>   making more context available to the target code.
>   
>   Revision  Changes    Path
>   1.16      +2 -2      src/sys/i386/isa/apic_vector.s
>   1.12      +1 -1      src/sys/i386/isa/clock.c
>   1.14      +1 -1      src/sys/kern/kern_intr.c
>   1.26      +1 -1      src/sys/kern/kern_sig.c
>   1.16      +3 -2      src/sys/kern/kern_slaballoc.c
>   1.17      +2 -2      src/sys/kern/kern_switch.c
>   1.2       +1 -1      src/sys/kern/kern_systimer.c
>   1.5       +1 -1      src/sys/kern/kern_upcall.c
>   1.14      +2 -2      src/sys/kern/lwkt_msgport.c
>   1.52      +26 -19    src/sys/kern/lwkt_thread.c
>   1.3       +4 -4      src/sys/kern/lwkt_token.c
>   1.6       +1 -0      src/sys/sys/slaballoc.h

After this commit, the kernel built with gcc2 panics at the beginning of
the boot leaving the following message on the screen(from dmesg bufffer
survived across the reboot):

  Copyright (c) 2003-2004 The DragonFly Project.
  Copyright (c) 1992-2003 The FreeBSD Project.
  Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
	  The Regents of the University of California. All rights reserved.


  Fatal trap 12: page fault while in kernel mode
  fault virtual address   = 0x0
  fault code              = supervisor write, page not present
  instruction pointer     = 0x8:0xc01fc70e
  stack pointer           = 0x10:0xc0378cf0
  frame pointer           = 0x10:0xc0378d10
  code segment            = base 0x0, limit 0xfffff, type 0x1b
			  = DPL 0, pres 1, def32 1, gran
  processor eflags        = interrupt enabled, resume, IOPL = 0
  current process         = 0 (thread0)
  current thread          = pri 44 (CRIT)
  interrupt mask          = net tty bio cam
  trap number             = 12
  panic: page fault
  Uptime: 0s

The instruction pointer 0xc01fc70e is a few bytes past generic_bcopy
and is consistent.
Although the kernel compiled with gcc3 boots fine without problem,
I think it's good to know why it stopped working. What I tested so far
are:
- reverting apic_vector.s to 1.15 didn't fix it.
- removing acpica from kernel config didn't fix it.
- whether or not doing buildworld with gcc2 before buildkernel didn't
  make any difference.
- I've also tried the source from the following date tags, but anything
  past the above commit won't boot if it's built with gcc2.
    2004-02-13 00.00.00
    2004-02-14 00.00.00
    2004-02-15 00.00.00

The only thing I can think of is that I did a buildworld with gcc3 and
installed it, so the boot code is compiled with gcc3 while the kernel is
with gcc2 which might have something to do with the panic.
In case anyone is interested, my kernel config is at
http://les.ath.cx/DragonFly/GZL .

Regards.





More information about the Commits mailing list