Originally Posted by matiasar
Within mobo user manual I found there's a bios option called "Memory Hole Remapping" enable/disable. The name of that feature is quite cryptic I'll check when I get home how is setted.
If that were disabled then even with PAE you couldn't use more than 3.2 GB.
I don't have any insight into your problem with suspend to disk. But it seems plausible that the memory you need PAE to access is the memory that isn't working right for suspend to disk.
Under control of the BIOS, the memory controller on the motherboard maps chunks of physical ram (identified by "row" and "column" select signals) to ranges of physical addresses. Since a big block of physical addresses under 4GB are reserved for things other than ram, the BIOS must either leave that much ram unmapped or map it above 4GB. (The remapping is not really a re
mapping. No ram inherently has a physical address. Any chunk of ram has an address only because the BIOS sets up the memory controller to map it that way. The ram mapped above 4GB is mapped the same way as the ram below 4GB, but to a higher address).
When you tell the kernel to limit memory, it is limiting by physical address, not by quantity of memory. So if you wanted approx 3600MB of ram enabled, you could use
mem=4400m getting about 3.2GB with addresses below 4GB plus about 0.4GB with address above 4GB, which if I understand you correctly is less ram than having no mem= at all, which is letting you use close to 0.8GB of the ram above 4GB.
If the same ram that needs PAE (anything above 4GB physical) is the ram that breaks suspend to disk, then splitting the difference is just an interesting experiment, not a solution.
Maybe you just want to simplify to a non PAE kernel.
A few device drivers need code that has special support for use of ram above 4GB. I expect the disk driver is one of those. But if there were a bug in that support, I would expect there to always be a bug, not just for suspend to disk.
Such bugs in device drivers were a major source of the original idea that PAE is unstable or often incompatible. But Linux never had many real problems in that area. Windows has a much uglier boundary between kernel and device driver, so it is much harder to make 32 bit drivers compatible with ram use above 4GB. But that Windows issue was never a big deal in Linux.
Edit: I see (from your other thread) I didn't read carefully enough. You have suspend to disk working and to ram not working. So I have even less understanding why using memory above the 4GB boundary seems to make it fail. Maybe a BIOS bug in the way the memory controller is reconfigured for low power mode?
Anyway, you seem to have verified that enabling all the ram above 4GB triggers the failure and enabling none of the ram above 4GB is OK. As I described above, you could try enabling half of the ram above 4GB as you seem to have wanted to try, but I'd be amazed if that did not also break suspend.
As long as you can't get benefits from PAE, I think you should get a non PAE kernel.