Red Hat Bugzilla – Bug 53176
meminfo report incorrectly in Enterprise kernel
Last modified: 2007-04-18 12:36:51 EDT
From Bugzilla Helper:
User-Agent: Mozilla/4.77 [en] (X11; U; Linux 2.4.3-6smp i686)
Description of problem:
meminfo reports incorrectly the amount of memmory installed on PE6400,
PE6450, PE8450. All three servers use enterprise kernel.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1.Install more than 4Gb RAM to PE6450, PE6400, PE8450
2.Install RedHat 7.2 RC2
Actual Results: mem: XXXXXXX is showing incorrectly the amount of RAM on
Expected Results: Must show correctly the amount of memory that the
machine have under enterprise kernel.
PE6450 has 5120MB RAM
PE6400 has 5120MB RAM
PE8450 has 6GB RAM
Created attachment 30894 [details]
meminfo for PE6400
Created attachment 30895 [details]
meminfo for PE8450
Created attachment 30896 [details]
meminfo for PE6450
This is the unfortionate effect that the Mem: field is there for
compatibility with older applications that assume the memory fits in a 32 bit
field, and will explode if it is a bigger number than 32 bit. The "MemTotal"
field is the field that counts.
It should be: 1024x1024x6=6291456
Ii should be: 1024x1024x5=5242880
It should be: 1024x1024x5=5242880
MemTotal is the kernel usable memory, eg after the bios reservations and such.
Would it be possible to attach the e820 map (eg the first table of the "dmesg"
Created attachment 30899 [details]
dmesg output of PE6400
Created attachment 30900 [details]
dmesg output of PE6450
Created attachment 30901 [details]
dmesg output of PE8450
hmmm all three have the important bits cut off, probably because the dmesg
buffer overflowed. If you install and boot the kernel-BOOT kernel, the
important information can also be obtained from the /proc/e820info file (only
available in the -BOOT kernel)
Created attachment 30974 [details]
e820info of PE6450
This looks normal. The bios is reporting that memory is split into three
sections: the base 640KB followed by 4062200KB starting at the 1MB boundry and
1GB at the 4GB mark. This works out to a total of 5234089984 bytes, which is
4991MB, or a little shy of the 5GB total. The missing memory appears to be
reserved by the BIOS for mapping PCI cards into the 32 bit address space, and as
such there is nothing that the kernel can do to access the missing memory. Keep
in mind that with that much memory in the machine Linux will need to allocate
~100MB just for keeping track of what memory is free/allocated.
Created attachment 30975 [details]
patch for /proc/meminfo 32 bit overflow
The patch seems to work on PE6450 (5GB RAM).