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!