Re: edk2 memory map on QEMU

Andrew Fish

On Jul 30, 2021, at 12:32 PM, Stuart Yoder <stuart.yoder@...> wrote:

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.

You can run the `memmap` command at the EFI Shell to see the layout. 

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

Print != printf on some of the format string so be careful about that….


Andrew Fish

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.

Join to automatically receive all group messages.