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