Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Sep 2001 13:53:01 -0700 (PDT)
From:      John Baldwin <jhb@FreeBSD.org>
To:        Doug Ambrisko <ambrisko@ambrisko.com>
Cc:        dhw@whistle.com, mark@whistle.com, freebsd-hackers@FreeBSD.ORG, roam@ringlet.net, msmith@FreeBSD.ORG, kstewart@urx.com, rnordier@FreeBSD.ORG
Subject:   Re: Does boot1 still have a > 1023 cyl limit?
Message-ID:  <XFMail.010914135301.jhb@FreeBSD.org>
In-Reply-To: <200109142039.f8EKdNT75021@ambrisko.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On 14-Sep-01 Doug Ambrisko wrote:
> rnordier@FreeBSD.ORG writes:
>| Kent Stewart wrote:
>| 
>| > Mike Smith wrote:
>| > > 
>| > > > So.. if I read you right, booting correctly for > 1024 cylinders works
>| > > > if boot0 knows about it.  Isn't boot0 the one in the MBR, not in the
>| > > > fbsd
>| > > > slice?  Does this mean that boot1 and boot2 should work just fine if
>| > > > they
>| > > > are loaded by another kind of MBR loader (say, Grub), and they find
>| > > > out
>| > > > that they are placed beyond the 1023th cylinder?
>| > > 
>| > > This should work, yes.
>| > 
>| > I tried this with a boot1 from FreeBSD 4.4-rc and get a BTX error. I
>| > had to go back to the boot1 from 4.3 before I could boot.
>|  
>| That could be serious.  Can you post a brief description of your
>| hardware, together with the BTX register dump if possible?  boot1 was
>| changed to address some problems with certain hardware, so it is
>| important to know if other incompatibilities have been introduced.
> 
> ... in 4.3:
>       warp% nm boot1.o | grep flags
>       00000199 t flags
>       warp% 
> 
> in -current
>       a21p% !nm
>       nm boot1.o | grep flags
>       000001ba t flags
>       a21p% 
> 
> Is someone writing into boot1 "flags"?  Then there is a problem since this
> has moved.  We did some work to avoid this "linking type" problem for xread 
> in boot2.c to prevent this type of error.  Do we have to do it for "flags"?
> 
> I see in libdisk:
>   static void
>   Cfg_Boot_Mgr(u_char *mbr, int edd)
>   {
>     if (mbr[0x1b0] == 0x66 && mbr[0x1b1] == 0xbb) {
>         if (edd)  
>             mbr[0x1bb] |= 0x80; /* Packet mode on */
>         else
>             mbr[0x1bb] &= 0x7f; /* Packet mode off */
>     }
>   }

This is for boot0.  Nothing should be touching boot1 flags.
My guess is that someone has somehow mixed an old boot2 with the new boot1
which is jumping to the wrong place to call xread.  The "code" at cs:eip looks
a lot like the BPB in boot1 now.

-- 

John Baldwin <jhb@FreeBSD.org> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




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