*BSD News Article 40432


Return to BSD News archive

Xref: sserve comp.os.386bsd.questions:15667 comp.os.386bsd.development:2997
Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.mira.net.au!otis.apana.org.au!serval.net.wsu.edu!netnews.nwnet.net!oracle.pnl.gov!osi-east2.es.net!lll-winken.llnl.gov!uwm.edu!vixen.cso.uiuc.edu!howland.reston.ans.net!gatech!newsfeed.pitt.edu!uunet!ftpbox!mothost!mdisea!lego.wes.mot.com!belle.wdgarl.wes.mot.com!malcolm.wdgarl.wes.mot.com!not-for-mail
From: pearce@malcolm.wdgarl.wes.mot.com (Mike Pearce)
Newsgroups: comp.os.386bsd.questions,comp.os.386bsd.development
Subject: 32M RAM not recognized on Dell PC
Date: 5 Jan 1995 10:49:16 -0600
Organization: Motorola - WDG Applied Research Lab
Lines: 45
Message-ID: <3eh7uc$6mr@malcolm.wdgarl.wes.mot.com>
NNTP-Posting-Host: malcolm.wdgarl.wes.mot.com
Summary: CMOS Extended Memory setting limited to 16M on 32M machine
Keywords: RAM, CMOS, Dell
X-Newsreader: NN version 6.5.0 #4 (NOV)


I have a Dell 466/ME (Phoenix BIOS) with 32M of RAM, which FreeBSD
recognizes as having only 16M of RAM. Investigation shows that FreeBSD
gets its idea of how much RAM is in the machine by reading the
extended memory entry from the RTC CMOS RAM. In my machine, this is
15296. On startup, the POST shows 32M, though, as does the BIOS setup
program.

My other operating systems (Linux and Windows NT) take advantage of
all of my RAM, so they must be getting their information from
somewhere else (investigation into how Linux does it shows that the
real-mode boot loader queries BIOS for the information and passes it
into the kernel on startup).

My next step was to grab a few DOS CMOS setup programs from the net,
and try to change the setting. None of them would allow me to set that
parameter higher than 15360!

So, I wrote my own program, which set both extended memory entries in
the CMOS to 31744 and updated the checksum. When I rebooted after
running it, POST told me there was an extended memory configuration
error, and gave me the option of continuing or running setup.
Continuing into FreeBSD allowed me to take advantage of all 32M of
RAM, but I get the error message every time I boot. Running setup
resets the extended memory entries back to 15296.

Unless someone can provide a better solution, I'll have to extend the
bootinfo_t structure to contain the extended memory size, modify the
bootblocks to query BIOS for the information, and modify the kernel to
get it from the bootinfo structure instead of CMOS. If I go down this
path though, I'd like to make sure these changes are a) appropriate;
b) provide more accurate information for all machines; and c) can be
rolled into the official distribution.

So, the question is: Does anyone know what's going on here? Is there
some ancient standard that says the extended memory entry can't go
above 15360? How do other machines with more than 16M cope with this
(different BIOS?)? What can I do to fix this problem (short of the
above source-code modifications)?

Mike
-- 
--
Mike Pearce, Staff Engineer, Motorola WDGARL, Schaumburg, IL
email: pearce@hook.wdgarl.wes.mot.com