Ctrl-Alt-ESC during boot

Chuck Tuffli chuck_tuffli at agilent.com
Thu Jan 27 14:45:56 PST 2005


To set this up properly, this is running with HEAD as of yesterday (Jan 
26th) on an Asus P5GD1 motherboard (Pentium 4, based on the Intel 915G 
chipset). The kernel config is GENERIC plus support for gdb. Also, this 
is booting off of a live-cd. Note that the same CD boots an older Intel 
815 based machine just fine. The registers and memory values on the 
machine that boots fine are (almost) identical to what is shown below.

Matthew Dillon wrote:
    Inside spl0 means that a pending interrupt unmasked by spl0 is being
    run and is causing the hang.  Presumably it is related to the suspect
    devices.
    I recommend adding some diagnostic printf()'s to the interrupt service
    routines for the device(s) in question, it might help you better diagnose
    where the problem is occuring.
At the point of the hang, the system hasn't finished booting the OS. The 
hang occurs in

(kgdb) bt
#0  spl0 () at /usr/home/ctuffli/dfly-cvs/src/sys/i386/isa/ipl_funcs.c:177
#1  0xc03f2715 in configure (dummy=0x0)
    at /usr/home/ctuffli/dfly-cvs/src/sys/i386/i386/autoconf.c:176
#2  0xc024264c in mi_startup ()
    at /usr/home/ctuffli/dfly-cvs/src/sys/kern/init_main.c:207
on assignment of

	td->td_cpl = 0;

where td = gd->mi.gd_curthread

(kgdb) p *((struct mdglobaldata *)gd)
$4 = {mi = {gd_prvspace = 0xff800000, gd_curthread = 0xc04e0860,
    gd_tdfreecount = 0, gd_reqflags = 2, gd_freesysun = 0x0, gd_tdallq =
     {tqh_first = 0xff80034c, tqh_last = 0xc0530c88}, gd_tdfreeq =
     {tqh_first = 0x0, tqh_last = 0xff80001c}, gd_tdrunq = {
     {tqh_first = 0x0, tqh_last = 0xff800024},
     {tqh_first = 0x0, tqh_last = 0xff80002c}, {
. ..
the assignment of td seems to go ok

(kgdb) display/i $pc
1: x/i $eip  0xc0410632 <spl0+6>:       mov    0x4(%eax),%edx
(kgdb) p/x $eax
$1 = 0xff800000
(kgdb) si
179             td->td_cpl = 0;
1: x/i $eip  0xc0410635 <spl0+9>:       movl   $0x0,0xc8(%edx)
(kgdb) p/x $edx
$2 = 0xc04e0860
(kgdb) p td
$3 = (struct thread *) 0xc04e0860
but something bad is happening upon dereferencing td

(kgdb) p td->td_cpl
There is no member named td_cpl.
(kgdb) p/x td->td_mach.mtd_cpl
$4 = 0xffffffff
(kgdb) si
Asking gdb about 0xc04e0860 gives back <thread0+64> if that is any help.

--
Chuck Tuffli
Agilent Technologies




More information about the Kernel mailing list