Date: Mon, 18 Nov 1996 01:21:50 +1100 From: Bruce Evans <bde@zeta.org.au> To: dg@root.com, erich@uruk.org Cc: hackers@freebsd.org Subject: Re: Memory probe(s) in FreeBSD Message-ID: <199611171421.BAA19697@godzilla.zeta.org.au>
next in thread | raw e-mail | index | archive | help
>> 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". Support for the really old bootblocks should be dropped, and the RTC numbers should never be used. This takes less code and works better. >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). There will have to be a new version number just to fix this. The bits need to be cleared in the kernel for the current version. Perhaps support for all old boot blocks should be dropped. It is reasonable to require that the (interface) version number of the bootblocks is >= that of the kernel to reduce the number of cases. Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199611171421.BAA19697>