I am playing around with EDK2 on QEMU with a UEFI shell application and in the app I allocate some memory using gBS->AllocatePool(EfiBootServicesData, ...)

Programmatically accessing the pointer returned works fine, but when I print it, it does not seem to be what I would expect is a valid address.

I've allocated 4GB to the QEMU machine, which I believe starts at 0x40000000.

But, when I print the address returned by AllocatePool the value is "0x39177018".

I thought that all memory was identity mapped where phys=virt, so not sure where the 0x39177018 is coming from.  Trying to dump 0x39177018 from the QEMU console or GDB results in a bad address error.

Thanks,
Stuart