Originally Posted by a_patch
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.
You should verify that the BIOS is failing to report the extra memory to Linux.
Try (fairly soon after rebooting)
The output should include the map of memory passed from the BIOS to the OS. Mine looks like this:
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000bbee0000 (usable)
BIOS-e820: 00000000bbee0000 - 00000000bbee3000 (ACPI NVS)
BIOS-e820: 00000000bbee3000 - 00000000bbef0000 (ACPI data)
BIOS-e820: 00000000bbef0000 - 00000000bbf00000 (reserved)
BIOS-e820: 00000000bc000000 - 00000000c0000000 (reserved)
BIOS-e820: 00000000f0000000 - 00000000f2000000 (reserved)
BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
BIOS-e820: 0000000100000000 - 0000000240000000 (usable)
The first and fourth lines show I have almost 3 GB of RAM within the first 4GB address space. The last line shows I have 5GB of RAM above the first 4GB address. So almost all of my 8GB is usable.
If your BIOS ram map does show the full 4GB (very unlikely based on what you already posted) that would imply you're not running the version of the Linux kernel you think you're running and the correction would be there.
If (as we expect) it shows 3GB ram in the first 4GB of address space and nothing above that, then the main problem is in the BIOS.
Look though the entire BIOS menu system for anything related to either memory or communication with the OS. Often there is a confusing choice about how the BIOS reports memory to the OS.
There are also boot time options to get Linux to see memory that the BIOS fails to report. I forget the details, but I've seen them in other posts on this topic in LinuxQuestions. So far as I understand, those only work for memory the BIOS has remapped, but not reported. More often, any memory the BIOS doesn't report, it hasn't even remapped. I don't know if there is any work around within Linux if the BIOS hasn't remapped the memory.