strange E820 map from HP BIOS
Posted: Wed Apr 11, 2012 6:29 am
Hi all,
today I discovered that the E820 memory map returned by the BIOS of a HP Compaq dc7900 (version 78661, v01.16) is a bit strange:
I get something like that:
I ignore entry 02 for it has length 0. I combine entries 07 and 08 for they are adjacent and have the same type.
That's all fine. What bothers me is the entries 10 and 11. There the base addresses have the upper 32 bits set, which seems wrong to me. How should I deal with these entries? (I have a 64 bit OS, so I care about the full 64 bit address.)
Oh, and second: For the memory region that lies between the region described by entries 09 and 10, i.e. 0x7F000000 - 0xF4000000, is it safe to assume it's usable memory? Or should I only allocate memory in regions that are reported in the E820 map and typed "usable" (type 1)?
Thanks in advance!
today I discovered that the E820 memory map returned by the BIOS of a HP Compaq dc7900 (version 78661, v01.16) is a bit strange:
I get something like that:
Code: Select all
01 base=0x00000000_00000000 length=0x00000000_0009F800 type=usable
02 base=0x00000000_0009F800 length=0x00000000_00000000 type=reserved
03 base=0x00000000_0009FC00 length=0x00000000_00000400 type=reserved
04 base=0x00000000_0009F800 length=0x00000000_00000400 type=usable
05 base=0x00000000_000E8000 length=0x00000000_00018000 type=reserved
06 base=0x00000000_00100000 length=0x00000000_7C8A1740 type=usable
07 base=0x00000000_7C9A1740 length=0x00000000_00002000 type=acpi_nvs
08 base=0x00000000_7C9A3740 length=0x00000000_00000060 type=acpi_nvs
09 base=0x00000000_7C9A37A0 length=0x00000000_0265C860 type=reserved
10 base=0xFFFFFFFF_F4000000 length=0x00000000_04000000 type=reserved
11 base=0xFFFFFFFF_FEC00000 length=0x00000000_00140000 type=reserved
That's all fine. What bothers me is the entries 10 and 11. There the base addresses have the upper 32 bits set, which seems wrong to me. How should I deal with these entries? (I have a 64 bit OS, so I care about the full 64 bit address.)
Oh, and second: For the memory region that lies between the region described by entries 09 and 10, i.e. 0x7F000000 - 0xF4000000, is it safe to assume it's usable memory? Or should I only allocate memory in regions that are reported in the E820 map and typed "usable" (type 1)?
Thanks in advance!