kernel/system can't see all 4G memory

Lamar Owen lowen at pari.edu
Thu Nov 3 18:00:35 UTC 2011


On Nov 3, 2011, at 12:13 PM, George R Goffe wrote:
> grep 'BIOS-e820' /var/log/dmesg
> [    0.000000]  BIOS-e820: 0000000000000000 - 000000000009f000  
> (usable)

0009F000=636K; this is to the bottom of the UMB. ("640K should be  
enough for anyone")....

> [    0.000000]  BIOS-e820: 000000000009f000 - 00000000000a0000  
> (reserved)
> [    0.000000]  BIOS-e820: 00000000000d2000 - 00000000000d4000  
> (reserved)
> [    0.000000]  BIOS-e820: 00000000000dc000 - 0000000000100000  
> (reserved)

UMB/BIOS (Real mode) which is still 'reserved' in this x86_64 day....

> [    0.000000]  BIOS-e820: 0000000000100000 - 00000000bfed0000  
> (usable)

1MB and up to 3070MB, your 3GB of RAM.

> [    0.000000]  BIOS-e820: 00000000bfed0000 - 00000000bfedf000 (ACPI  
> data)
> [    0.000000]  BIOS-e820: 00000000bfedf000 - 00000000bff00000 (ACPI  
> NVS)
> [    0.000000]  BIOS-e820: 00000000bff00000 - 00000000c0000000  
> (reserved)
> [    0.000000]  BIOS-e820: 00000000f0000000 - 00000000f4000000  
> (reserved)
> [    0.000000]  BIOS-e820: 00000000fec00000 - 00000000fec10000  
> (reserved)
> [    0.000000]  BIOS-e820: 00000000fed00000 - 00000000fed00400  
> (reserved)
> [    0.000000]  BIOS-e820: 00000000fed14000 - 00000000fed1a000  
> (reserved)
> [    0.000000]  BIOS-e820: 00000000fed1c000 - 00000000fed90000  
> (reserved)
> [    0.000000]  BIOS-e820: 00000000fee00000 - 00000000fee01000  
> (reserved)
> [    0.000000]  BIOS-e820: 00000000ff800000 - 0000000100000000  
> (reserved)
>

PCI and PCI express mapping areas.  Your video (among other things)  
needs memory addresses; think of this as the 32-bit equivalent of the  
20-bit upper memory blocks.  In the case of 386 and up processors,  
hardware remapping of the reserved addresses was accomplished through  
virtual 8086 mode from 32-bit protect mode, and thus a 386 memory  
manager (QEMM, EMM386, etc) actually was a 32-bit 'kernel' that  
presented a single V86 'VM' and emulated real mode in that V86 VM, and  
set up the 386's MMU to map RAM into those holes.  Microsoft built  
upon this foundation the House of Windows/386, which morphed into the  
House of Windows 3.x (enhanced), which morphed into the House of Win9x/ 
ME.....

Many 386 motherboards from that era had '1MB' of RAM, but only 640K  
was usable without UMB mapping (and address line A20 'rollover' into  
the HMA, thanks to the segmented x86 architecture, for boards with  
more than 1MB).  The 32-bit boards have the same line, at 3GB, and for  
much the same reasons.

The BIOSs on Dells with 945 chipsets allow the ACPI business to move  
up, and thus frees up a few hundred MB of RAM address space.

The 965 chipset has hardware memory remapping, and can thus take the  
1GB of RAM 'lost' by the PCI hole and put it above the 4GB line, thus  
making the system need 33 bit or better hardware addressing (just  
because the CPU has more than 32-bit addressing doesn't mean those  
lines are connected to anything, after all.....)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 1813 bytes
Desc: not available
Url : http://lists.fedoraproject.org/pipermail/users/attachments/20111103/617fb3d8/attachment.bin 


More information about the users mailing list