Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 29 Apr 2006 05:49:19 +1000 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        Yuichiro Goto <y7goto@gmail.com>
Cc:        freebsd-gnats-submit@freebsd.org, freebsd-i386@freebsd.org
Subject:   Re: i386/96430: boot2 is unable to load kernel directly
Message-ID:  <20060429053833.G22060@delplex.bde.org>
In-Reply-To: <200604271927.k3RJRsGU023448@www.freebsd.org>
References:  <200604271927.k3RJRsGU023448@www.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 27 Apr 2006, Yuichiro Goto wrote:

>> Description:
> Loading a kernel directly using boot2 causes the invalid-opcode fault like the
> following:
>
> int=00000006  err=00000000  efl=00010002  eip=c0445a90
> eax=c0445a90  ebx=0007cd0f  ecx=c0b5e1a7  edx=a030001e
> esi=c0b5e1a7  edi=c0445a90  ebp=00000002  esp=0009eb84
> cs=0008  ds=0010  es=0010    fs=0010  gs=0010  ss=0010
> cs:eip=ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff
>       ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff
> ss:esp=69 95 00 00 00 00 00 80-1e 00 30 a0 00 00 00 00
>       00 00 00 00 00 00 00 00-60 dd 00 00 36 42 00 00
> BTX halted
>
> I tried to load a kernel directly that is a slightly modified
> version of GENERIC.  ...

>> How-To-Repeat:
> Directly load a kernel using boot2.
>> Fix:
> load() in src/sys/boot/i386/boot2/boot2.c tries to copy kernel segments at a
> phisical address on memory whose most significant 2 bits are set.  This is
> because of changes between rev 1.70 and 1.71 of
> src/sys/boot/i386/boot2/boot2.c.

I reported this to the author of the bug a few months ago.

I use an old 2-stage-only boot loader that is missing this bug, but
still the GENERIC kernel doesn't load - the load hangs with no message.
Loading of smaller kernels (size ~= 3MB) with boot2 still works with
both my old boot loader and the FreeBSD-6.0 boot2 with rev.1.71 backed
out.

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060429053833.G22060>