[ltp] X60s 4 GB RAM PAE only 3 recognized (64 Bit)

Carl-Daniel Hailfinger linux-thinkpad@linux-thinkpad.org
Sun, 23 Nov 2014 19:40:38 +0100

On 13.11.2014 16:41, Paul Seelig wrote:
> On 11/13/2014 09:41 AM, Uwe Brauer wrote:
>> Now I upgraded again to 4 GB RAM, but even with PAE enabled only 3 are=

>> recognized.=20
>> Would it help to upgrade to a 64 bit version of Ubuntu?
> The X60s is a variant of the X60, which in turn is based on the same
> chipset as the T60 Thinkpad generation. The chipset used in this
> Thinkpad generation is only capable of addressing a maximum of 3GB RAM.=

> This is a hardware imposed limit which cannot be circumvented by any
> means, e.g., installation of a 64bit OS. See the more up to date German=

> http://thinkwiki.de/X60 for further details.

TL;DR: The 3 GB limit is a BIOS problem. With coreboot, you get 3.2-3.8 G=

While there is a hardware limit of 4 GB, the 3 GB limit claimed
everywhere is an artifact of the BIOS. Regardless of CPU address space,
the i945 memory bus uses 32 bit addresses (4 GB address space) and is
unable to hoist any memory to addresses above 4 GB. This means that even
if you have 4 GB RAM theoretically occupying the whole 32 bit address
space, quite a few large chunks of the address space will be used by
MMIO ranges of internal devices (PCI etc.) and on some machines, one
chunk of the memory will also be used as shared graphics memory.

In the end, the total usable memory by the operating system depends on
the resource allocator in the firmware. /proc/iomem has the details.
With stock T60/x60 BIOS, you get 3 GB usable RAM (look at the address
ranged marked "System RAM" in /proc/iomem). With coreboot (default
settings) on my T60 (128 MB ATI graphics), I get 3.2 GB usable RAM. If
you're willing to sacrifice Cardbus or Expresscard usability, you can
get an additional 128 MB usable RAM for each because the resource
allocator can then avoid reserving space for it. Even with optimal
resource allocation and just 64 MB graphics memory, having more than 3.8
GB usable RAM is impossible due to MMIO resource alignment constraints.