efi_loader: Move public cert for capsules to .rodata
authorIlias Apalodimas <ilias.apalodimas@linaro.org>
Tue, 1 Apr 2025 11:27:25 +0000 (14:27 +0300)
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Fri, 11 Apr 2025 11:25:31 +0000 (13:25 +0200)
commitfd58c275f6ba524101ba0990e53f5a11ac390bd0
tree6802b43917ac76cb2b60d8f182143cf5997350f7
parent2dc04803b05ff189619d46acd137a47bedaf6193
efi_loader: Move public cert for capsules to .rodata

commit ddf67daac39d ("efi_capsule: Move signature from DTB to .rodata")
was reverted in
commit 47a25e81d35c ("Revert "efi_capsule: Move signature from DTB to .rodata"")
because that's what U-Boot was usually doing -- using the DT to store
configuration and data. Some of the discussions can be found here [0].

(Ab)using the device tree to store random data isn't ideal though.
On top of that with new features introduced over the years, keeping
the certificates in the DT has proven to be problematic.
One of the reasons is that platforms might send U-Boot a DTB
from the previous stage loader using a transfer list which won't contain
the signatures since other loaders are not  aware of internal
U-Boot ABIs. On top of that QEMU creates the DTB on the fly, so adding
the capsule certificate there does not work and requires users to dump
it and re-create it injecting the public keys.

Now that we have proper memory permissions for arm64, move the certificate
to .rodata and read it from there.

[0] https://lore.kernel.org/u-boot/CAPnjgZ2uM=n8Qo-a=DUkx5VW5Bzp5Xy8=Wgmrw8ESqUBK00YJQ@mail.gmail.com/

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Tested-by: Jonathan Humphreys <j-humphreys@ti.com> # on TI sk-am62p-lp
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on AML-A311D-CC
Tested-by: Raymond Mao <raymond.mao@linaro.org>
Makefile
include/asm-generic/sections.h
lib/efi_loader/Makefile
lib/efi_loader/capsule_esl.dtsi.in [deleted file]
lib/efi_loader/efi_capsule.c
lib/efi_loader/efi_capsule_key.S [new file with mode: 0644]
scripts/Makefile.lib