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