Date: Thu, 1 Feb 96 10:34:49 +0900 From: Mihoko Tanaka <m_tanaka@pa.yokogawa.co.jp> To: terry@lambert.org Cc: jerry@border.com, freebsd-hackers@FreeBSD.org Subject: Re: Compaq 16MB limit... Message-ID: <9602010134.AA10287@cabbage.pa.yokogawa.co.jp> In-Reply-To: Terry Lambert's message of Wed, 31 Jan 1996 14:00:20 -0700 (MST) <199601312100.OAA10547@phaeton.artisoft.com>
next in thread | previous in thread | raw e-mail | index | archive | help
>>> Problem: When a Compaq has 64 Meg DRAM in it, BSDI does not see it all.
>>> It only see's 16Meg.. The BIOS say's hat there is 64 BUT BSDI says 16..
>>>
>>> I have been told that FreeBSD has fixed this somehow... Can somebody
>>> please tell me 'approx' which files to look at in the kernel source
>>> code to see how it was done ????
>>
>>Compaq and Dell have decided that their historical misuse of a couple
>>of CMOS bits constitutes "acceptable practice". As a result, the max
>>memory you see when you query the CMOS is 16M (or 32M for non-bogus
>>machines).
>>
>>The POST reports the RAM correctly because the BIOS can be written to
>>use hardware specific mechanisms to report the RAM.
>>
>>There is no documented API to return the amount of RAM in a machine
>>other than CMOS. There is no BIOS routine that can be used by the
>>boot blocks to overcome this limit, nor does the POST place the results
>>of its test or expose a ROM routine for sizing memory.
I asked a engineer of COMPAQ about it last month.
He said that we can use the following BIOS call for getting the
amount of RAM in a machine.
------------------------ cut cut cut ---------------------------------
INT 15h AX=E801h ---- GET SUPER EXTENDED MEMORY INFORMATION
Descriptoin:
This function returns the amount of extended memory (1M-16M) and
super extended memory (>16M) installed and configured in the system.
To perform this call from 32-bit protected mode, use function E881h.
Entry:
AX=E801h
Return:
AX = KB of extended memory installed.
BX = 64KB segments of super extended memory installed.
CX = KB of extended memory configured.
DX = 64KB segments of super extended memory configured.
ROMs:
386N LTE Lite20, LTE Lite 25
386N1 Contura 20, Contura 25, Contura 25c
386N2 LTE Lite 25c, LTE Lite 25e
486N1 Contura 4/25
486N2 LTE Lite 4/25c
486N3
386E3 Portable 486c, Portable 486
386A DP 3/25i, DP 3/33i, DP 4/25i, DP 4/33i
386A1 DPifamily
486A DP XE 5xx
486A1 DP XE 4xx
386C Prolinea 3/24zx, Prolinea 3/25
386C1 Prolinea 4/33
386C2 Prolinea 4/50
486C Presario/Prolinea
486C1 Presario/Prolinea
486C2 Presario/Prolinea
486Z Presario/Prolinea
486Z1 Presario/Prolinea
486T Concerto
486S Aero
486W DP XL
------------------------ cut cut cut ---------------------------------
But this BIOS call is only for COMPAQ. We cannot use it for another machine.
>>FreeBSD "fixes" this problem by allowing you to mandate the amount of
>>RAM in the machine and force it to ignore the (standard) CMOS mechanism
>>for sizing RAM. See /sys/i386/conf/LINT for details.
>>
>>
>>UnixWare fixes this by allowing you to make a one line entry in a
>>configuration file in the /stand "bootfs" partition -- it's similar
>>to the FreeBSD "fix", except that you don't have to rebuild the kernel.
BSD/OS fixes it by testing for memory (starting at 2MB, and
continuing at most to 2GB) in the boot program, or by allowing you
to use a configuration file.
--
Mihoko Tanaka
<m_tanaka@pa.yokogawa.co.jp>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9602010134.AA10287>
