Skip site navigation (1)Skip section navigation (2)
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>