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>