System Ram Not Completely Recognized
levipearson at gmail.com
Fri Jun 28 00:44:21 MDT 2013
On Thu, Jun 27, 2013 at 5:53 PM, Nathan England <nathan at nmecs.com> wrote:
> On Thursday, June 27, 2013 05:39:25 PM Chris wrote:
>> dmidecode might provide some details to ponder.
>> PLUG: http://plug.org, #utah on irc.freenode.net
>> Unsubscribe: http://plug.org/mailman/options/plug
>> Don't fear the penguin.
> I was just in the middle of reading dmidecode when you sent this. And it
> occurred to me, this stupid motherboard should not even allow "unganged" mode
> when the present IGP is in use. Duh!
> Anyway, I have the BIOs set to use 64MB but I found a section in dmidecode
> which says:
> Handle 0x0012, DMI type 20, 35 bytes
> Memory Device Mapped Address
> Starting Address: 0x00180000000
> Ending Address: 0x001FFFFFFF
> Range Size: 2 GB
> Physical Device Handle: 0x000B
> That 0x000B is one of the memory chips; DIMM1 BANK1.
> So that DIMM is not being used. But the BIOS recognizes it!!! So what gives?
Well, my only guess is that Linux asks the BIOS for info on the memory
as it's booting, since the BIOS is the one that configured it.
Perhaps the BIOS is returning something slightly screwy, which causes
Linux to ignore the region of RAM assigned to that bank. It could be
that the live CD kernel had a workaround for that BIOS, or something.
Beats me. When I worked at Linux NetworX, a bunch of my coworkers did
LinuxBios (now CoreBoot) code, and I briefly maintained a couple of
EDAC drivers. You should see the manuals from Intel and AMD required
to get all the chipset details necessary to write a BIOS....
Anyway, I just looked a bit into the x86 boot code in the Linux source
tree, and indeed the kernel makes an e820 call to the BIOS to get the
memory map. It looks like you might be able to supply your own e820
map via the kernel command line as well. You should also be able to
see the map it gets from the BIOS from your dmesg data. If you could
reproduce the live-cd boot in which you got it to see all 8G, you
might be able to use the dmesg map there to program grub to supply it
via the kernel command line.
More information about the PLUG