efi_loader: Expose U-Boot addresses in memory map for sandbox
authorAlexander Graf <agraf@suse.de>
Mon, 18 Jun 2018 15:23:15 +0000 (17:23 +0200)
committerAlexander Graf <agraf@suse.de>
Wed, 25 Jul 2018 12:57:44 +0000 (14:57 +0200)
commit282a06cbcae84acd86125210dbd54a10ff41e809
tree5b29af4cdcef7080b1238e79160b29e5b888d0c4
parent69259b83670661ad530442e1ebb788e96a7676cb
efi_loader: Expose U-Boot addresses in memory map for sandbox

We currently expose host addresses in the EFI memory map. That can be
bad if we ever want to use sandbox to boot strap a real kernel, because
then the kernel would fetch its memory table from our host virtual address
map. But to make that use case work, we would need to have full control
over the address space the EFI application sees.

So let's expose only U-Boot addresses to the guest until we get to the
point of allocation. EFI's allocation functions are fun - they can take
U-Boot addresses as input values for hints and return host addresses as
allocation results through the same uint64_t * parameter. So we need to
be extra careful on what to pass in when.

With this patch I am successfully able to run the efi selftest suite as
well as grub.efi on aarch64.

Signed-off-by: Alexander Graf <agraf@suse.de>
lib/efi_loader/efi_memory.c