From owner-freebsd-hackers Sun Nov 17 00:19:23 1996 Return-Path: owner-hackers Received: (from root@localhost) by freefall.freebsd.org (8.7.5/8.7.3) id AAA04464 for hackers-outgoing; Sun, 17 Nov 1996 00:19:23 -0800 (PST) Received: from root.com (implode.root.com [198.145.90.17]) by freefall.freebsd.org (8.7.5/8.7.3) with ESMTP id AAA04456 for ; Sun, 17 Nov 1996 00:19:13 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by root.com (8.7.6/8.6.5) with SMTP id AAA18013; Sun, 17 Nov 1996 00:18:13 -0800 (PST) Message-Id: <199611170818.AAA18013@root.com> X-Authentication-Warning: implode.root.com: Host localhost [127.0.0.1] didn't use HELO protocol To: Erich Boleyn cc: hackers@freebsd.org Subject: Re: Memory probe(s) in FreeBSD In-reply-to: Your message of "Sat, 16 Nov 1996 22:33:19 PST." From: David Greenman Reply-To: dg@root.com Date: Sun, 17 Nov 1996 00:18:13 -0800 Sender: owner-hackers@freebsd.org X-Loop: FreeBSD.org Precedence: bulk >> >I would argue that the BIOS values should always be used, and the RTC >> >values simply ignored unless something specific (like the SMP probe) needs >> >them. >> >> I seem to recall that there was a problem with doing this on some systems, >> but since my memory is so vague, I'm inclined to agree with you. :-) It's >> probably that old FreeBSD bootblocks didn't pass in the BIOS information (via >> the bootinfo struct)...but this was so long ago that I don't think it matters >> anymore. Perhaps it should use the RTC numbers if the passed-in BIOS numbers >> are zero? > >There is a "valid" flag set in the info passed by the bootloader. You'll >see it if you look in "i386/i386/machdep.c". > >What I'd suggest is to use the values from the bootloader if they are >"valid", or otherwise use the RTC values. Just take out the current >parts where it complains if the RTC values are different from the >BIOS values. It is confusing and on many modern machines they are usually >different anyway, so you'll see it all the time for no good reason. Agreed. >As to there being a problem a while ago... the problem was that the >FreeBSD bootblocks read the return value from the EAX register for the >upper memory BIOS call, where it is only valid for the AX register. Some >machines return garbage in the high bits of EAX. The proper thing to >do is to zero the top 16 bits of EAX after the INT 0x15 AH=0x88 call >in the bootloader, not in the kernel proper (again, because some >bootloaders might pass valid information from other BIOS interfaces). I think the plan is to switch to your bootblocks eventually, but in the meantime, do you happen to know if the current FreeBSD bootblocks still suffer from this problem? -DG David Greenman Core-team/Principal Architect, The FreeBSD Project