]> git.dujemihanovic.xyz Git - u-boot.git/commit
Revert "efi_memory: do not add U-Boot memory to the memory map"
authorIlias Apalodimas <ilias.apalodimas@linaro.org>
Fri, 29 Nov 2024 17:08:13 +0000 (19:08 +0200)
committerTom Rini <trini@konsulko.com>
Sat, 30 Nov 2024 14:37:53 +0000 (08:37 -0600)
commit65b38a519b0fcae6a76f48116a5f999400d7294c
treec73c3105bbedcf054e00747396508c05a7da8e29
parentbf3dfb405ba212752ca9ad103147edd8ba99cd4d
Revert "efi_memory: do not add U-Boot memory to the memory map"

This reverts commit ("commit a68c9ac5d8af ("efi_memory: do not add
U-Boot memory to the memory map").

This code was removed when the EFI subsystem started using LMB calls for
the reservations. In hindsight it unearthed two problems.

The e820 code is adding u-boot memory as EfiReservedMemory while it
should look at what LMB added and decide instead of blindly overwriting
it. The reason this worked is that we marked that code properly late,
when the EFI came up. But now with the LMB changes, the EFI map gets
added first and the e820 code overwrites it.

The second problem is that we never mark SetVirtualAddressMap as runtime
code, which we should according to the spec. Until we fix this the
current hack can't go away, at least for architectures that *need* to
call SVAM.

More specifically x86 currently requires SVAM and sets the NX bit for
pages not marked as *_CODE. So unless we do that late, it will crash
trying to execute from non-executable memory. It's also worth noting
that x86 calls SVAM late in the boot, so this will work until someone
decides to overwrite/use BootServicesCode from the OS.

Notably arm64 disables it explicitly if the VA space is > 48bits, so
doesn't suffer from any of these problems.

This doesn't really deserve a fixes tag, since it brings back a hack to
remedy a situation that was wrong long before that commit, but in case
anyone hits the same bug ...
Simon sent the original revert in the link, but we need a proper
justification for it.

Link: https://lore.kernel.org/u-boot/20241112131830.576864-1-sjg@chromium.org/
Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Acked-by: Sughosh Ganu <sughosh.ganu@linaro.org>
Reported-by: Simon Glass <sjg@chromium.org>
lib/efi_loader/efi_memory.c