Additional memory not detected properly
I have just upgraded my machine from 2Gb (4 x 500Mb DIMMs) to 4Gb (4 x 1Gb DIMMs). Originally I had no problem detecting the 2Gb but now Linux can only see 2.7Gb!?! The BIOS reports the full 4Gb and goes to post without any errors.
My configuration is as follows: FC7 x86_64 (see below for more detail) System: Tyan Thunder K8WE motherboard with 2 x AMD Opteron 280 Memory: Corsair 1Gb PC3200 EC Reg (CM72SD1024RLP-3200/S) Other info available if required. Output from uname -a (edited): Code:
Linux xxxxxxx.com 2.6.23.15-80.fc7 #1 SMP Sun Feb 10 16:52:18 EST 2008 x86_64 x86_64 x86_64 GNU/Linux Code:
MemTotal: 2837520 kB Michael. |
I dont use Fedora, but it sounds like the Fedora Kernel does not have high memory support. You will have to either download an alternate kernel or compile your own with the highmem flag set to enable.
Heres a link that shows where the highmem option is under processor features: http://www.togaware.com/linux/surviv..._Compiles.html Hope that helps |
You need to have a kernel compiled for large memory. One of these kernel parameters needs to be set in your kernel compile:
CONFIG_HIGHMEM4G=y CONFIG_HIGHMEM64G=y Check your Fedora repository to see if they have a precompiled kernel that is both 64bit and HIGHMEM. ----------------------- Steve Stites |
Thanks but this is a 64bit kernel and, as I understand it, even with 32 bit kernels, the problems with additional memory only happen beyond 4Gb. I am certain that FC7 supports more than 2.7Gb (unless someone out there knows netter!).
Best wishes, Michael. |
The highmem setting is not relevant for 64-bit.
Does dmesg have anything to say on the subject ?. |
I suggest see if 4 GB of RAM is found by the kernel when using HIGHMEM support on a 64-bit kernel. I think using HIGMEM support will provide better compatibility with 32-bit programs.
I suggest viewing /var/log/messages to get a more thorough look what the kernel is doing upon boot up. The utility dmesg holds very little amount of information that can be missed. |
Hi,
Quote:
If I want to know the HIGHMEM support on my SlackwareŽ 12.1 system then a simple 'cat /boot/config-huge-smp-2.6.24.5-smp |grep -i HIGHMEM' would give me; Quote:
|
Quote:
I assume (haven't checked) that if you select 64 bit, there isn't even a question for CONFIG_HIGHMEM4G in the config process. There is nothing in the 64 bit kernel build process for that option to even control. Quote:
A 32bit kernel needs CONFIG_HIGHMEM4G=y to have any chance to get at the remapped memory. A 64bit kernel has no such restriction. But either needs some cooperation with the BIOS to understand what memory is available. That cooperation sometimes goes wrong and that might be your issue. |
On my own Linux system, there are several easy ways to look at the memory info the BIOS passed to the Linux Kernel. The easiest is
Code:
dmesg | less Code:
BIOS-provided physical RAM map: In a couple other threads, I was surprised/disappointed when I told people to look in the same place for that table that I found it, but in their system it wasn't present. Maybe some other expert here can tell you how to get that table if dmesg | less doesn't give it to you. |
Thanks, here's the output from dmesg | less. I am having a trawl through but am not quite clear what is what and what I can/should change.
Code:
BIOS-provided physical RAM map: Thanks, Michael |
The BIOS is only reporting 2.7 GB.
I don't know whether it is failing to remap the rest or just failing to report that it has remapped the rest. 2.7GB still seems like a very strange place for the BIOS to stop. If it has remapped the rest, but failed to report it, there are kernel boot time options to make the kernel see extra memory that the BIOS hasn't reported. I don't know the details (never needed them myself) but I have seen them discussed in other threads. The remapped memory (if it exists) would be somewhere (probably immediately) above the 4GB point. I think you need to give a boot time option telling Linux it has more than 4GB to get it to look there and find that missing 1.3GB. If the BIOS hasn't remapped it at all, I don't know if there is anything you could do about that in Linux. Go carefully through all the BIOS settings and see if there is any BIOS option that looks like it might have influence on how the BIOS configure memmory addresses and/or how it reports memory to the OS. |
Eureka! I needed to turn on memory hole remapping (now set to hardware). The system is now showing 3.9Gb - I presume that that is as good as it's going to get.
I just missed the option in the depth of my BIOS menus. Thanks to everyone for your help. Michael. |
EDIT:
Good to see it worked. Here's what I was gonna post, not sure it would have helped. You can try 'cat /proc/iomem', that'll give you some info, maybe not the one you need. Here's some info on what it is: http://www.redhat.com/docs/manuals/e...roc-iomem.html |
Hi,
Quote:
Quote:
Quote:
|
As I said, HIGHMEM isn't relevant for 64-bit - once you select that in a current config some (including HIGHMEM) irrelevant options disappear.
Hopefully the merge of the 32bit and 64bit Kconfigs will be complete soon. |
The reason why I said about my previous post is because I doubt the full compatibility of running a true 64-bit kernel and handling 32-bit IO requests from a 32-bit program. Sure the 64-bit processor is capable of running 32-bit and 64-bit programs, but the 64-bit kernel may screw up the operations of a 32-bit program when handling large amounts of memory. Sorry about the mix up.
I prefer using zcat /proc/config.gz to get a list of the kernel config. |
Hi everybody,
I have exactly same problem, but: 1. I have 64bit processor and 64bit version of Linux Mandriva 2008.1 with kernel 2.6.24.4-laptop-1mnt, so there is no option like HIGHMEM in my menuconfig and in /boot/config. 2. I have laptop Toshiba Equium A100 series and BIOS is really basic. There is nothing like "memory hole remapping" but in BIOS I see 4GB RAM. Here is specification. 3. I tried to install kernel-server. No changes. I still have 3015 MB in my system. I know, that 32bit systems should see max 3GB, but why my 64bit Linux see only three gigs? Is there some way to find those 1GB of RAM? With best regards a_patch |
All times are GMT -5. The time now is 10:35 PM. |