From: Andre Przywara <andre.przywara@arm.com>
To: u-boot@lists.denx.de
Subject: [PATCH v2 0/6] qemu-arm64: Allow booting via Trusted Firmware
Date: Wed, 30 Sep 2020 17:39:12 +0100 [thread overview]
Message-ID: <20200930163918.24995-1-andre.przywara@arm.com> (raw)
U-Boot on QEMU-arm64 can be used in two configurations: Loaded directly
via QEMU's -bios option, or as a non-secure payload (BL33) via
ARM Trusted Firmware-A (TF-A).
In the latter case we need to define CONFIG_TFABOOT, to accommodate
the first flash bank being secure only, and manually set SYS_TEXT_BASE
to the address configured in TF-A (currently 0x60000000).
To avoid this poorly documented adventure, we enable a position
independent build, and also let the flash regions be always detected
through the DTB. This results in a single build to work under both
scenarios, and also allows to move the BL33 load address in TF-A to
something lower in the future.
For this to work, we have to first make PIE work when booted from ROM.
While writing to ROM should not hurt, it might trigger CFI flash
sequences, and indeed crashes for me in the middle of the fixup routine.
This is covered by patch 2/6, which skips the whole fixup routine if the
offset is actually 0 (as it is in our case). To support older toolchains
(including the popular Linaro builds), we need to ensure we do the
static RELA fixups, even with PIE enabled (patch 1/6).
Also we have to decouple the relative initial stack pointer from the
PIE option, as we always need to use the fixed version, pointing to
RAM (patch 3/6).
Patch 4/6 drops the hard-coded flash address, instead U-Boot can already
read all required information from QEMU's DTB.
Patch 5/6 is a cleanup, while the last patch enables the PIE build.
With this series the very same u-boot.bin file works when directly loaded
from the QEMU command line (-bios), but also when embedded into TF-A's
fip.bin, removing the need for case-specific build options.
Please have a look!
Cheers,
Andre
Changelog v1 .. v2:
- Always do STATIC_RELA static fixups (new first patch)
- Reword commit messages for 3/6 and 5/6
Andre Przywara (5):
arm64: PIE: Skip fixups if distance is zero
arm64: PIE: Allow fixed stack pointer
qemu-arm: Remove need to specify flash banks
qemu: Drop ARCH_SUPPORT_TFABOOT
qemu/arm64: Enable POSITION_INDEPENDENT
arch/arm/Kconfig | 4 ++--
arch/arm/cpu/armv8/start.S | 3 ++-
configs/qemu_arm64_defconfig | 1 +
include/configs/qemu-arm.h | 8 +-------
4 files changed, 6 insertions(+), 10 deletions(-)
--
2.17.5
*** BLURB HERE ***
Andre Przywara (6):
arm64: PIE: Do not skip static relocation
arm64: PIE: Skip fixups if distance is zero
arm64: PIE: Allow fixed stack pointer
qemu-arm: Remove need to specify flash banks
qemu-arm: Drop ARCH_SUPPORT_TFABOOT
qemu-arm64: Enable POSITION_INDEPENDENT
arch/arm/Kconfig | 6 +++---
arch/arm/cpu/armv8/start.S | 3 ++-
configs/qemu_arm64_defconfig | 1 +
include/configs/qemu-arm.h | 8 +-------
4 files changed, 7 insertions(+), 11 deletions(-)
--
2.17.5
next reply other threads:[~2020-09-30 16:39 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-30 16:39 Andre Przywara [this message]
2020-09-30 16:39 ` [PATCH v2 1/6] arm64: PIE: Do not skip static relocation Andre Przywara
2020-09-30 17:11 ` Stephen Warren
2020-10-01 8:33 ` Amit Tomar
2020-10-09 13:02 ` Tom Rini
2020-09-30 16:39 ` [PATCH v2 2/6] arm64: PIE: Skip fixups if distance is zero Andre Przywara
2020-10-09 13:02 ` Tom Rini
2020-09-30 16:39 ` [PATCH v2 3/6] arm64: PIE: Allow fixed stack pointer Andre Przywara
2020-10-09 13:02 ` Tom Rini
2020-09-30 16:39 ` [PATCH v2 4/6] qemu-arm: Remove need to specify flash banks Andre Przywara
2020-10-09 13:02 ` Tom Rini
2020-09-30 16:39 ` [PATCH v2 5/6] qemu-arm: Drop ARCH_SUPPORT_TFABOOT Andre Przywara
2020-09-30 17:40 ` Tom Rini
2020-10-09 13:02 ` Tom Rini
2020-09-30 16:39 ` [PATCH v2 6/6] qemu-arm64: Enable POSITION_INDEPENDENT Andre Przywara
2020-10-09 13:03 ` Tom Rini
2020-09-30 17:39 ` [PATCH v2 0/6] qemu-arm64: Allow booting via Trusted Firmware Tom Rini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200930163918.24995-1-andre.przywara@arm.com \
--to=andre.przywara@arm.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox