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): How reproducible: Always Steps to Reproduce: 1.Install more than 4Gb RAM to PE6450, PE6400, PE8450 2.Install RedHat 7.2 RC2 3.cat /proc.meminfo Actual Results: mem: XXXXXXX is showing incorrectly the amount of RAM on the machine. Expected Results: Must show correctly the amount of memory that the machine have under enterprise kernel. Additional info: 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.
-PE8450: Memtotal: 6179540 It should be: 1024x1024x6=6291456 -PE6400: Memtotal: 4628552 Ii should be: 1024x1024x5=5242880 -PE6450: Memtotal: 5021768 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" output) ?
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).