Well, actually this missing memory is reported by UEFI, but it's PhysicalAddress is beyond ULONG_PTR (0xFFFFFFFF):
Code:
PhysicalAddress: 0x100000000, VirtualAddress: 0x00000000, Pages: 262144, Type: 7 (EfiConventionalMemory)
It contains 262144 pages, what gives missing 1GB of RAM (assuming 3GB assigned to VM).
However since it exceeds 0xFFFFFFFF, I think it should not be mapped, so only 2GBs are available.
Now 2 real questions:
1. Should above memory descriptor reported by EFI BootServices be mapped or not?
2. If it should be mapped - is there any specific way to do it? If it shouldn't - how OS can know it has more than 2GB of RAM to use? It should be possible to use more memory, and with PAE even more.