linux/drivers/firmware
Will Deacon 7c116db24d efi/libstub/arm64: Retain 2MB kernel Image alignment if !KASLR
Since commit 82046702e2 ("efi/libstub/arm64: Replace 'preferred' offset
with alignment check"), loading a relocatable arm64 kernel at a physical
address which is not 2MB aligned and subsequently booting with EFI will
leave the Image in-place, relying on the kernel to relocate itself early
during boot. In conjunction with commit dd4bc60765 ("arm64: warn on
incorrect placement of the kernel by the bootloader"), which enables
CONFIG_RELOCATABLE by default, this effectively means that entering an
arm64 kernel loaded at an alignment smaller than 2MB with EFI (e.g. using
QEMU) will result in silent relocation at runtime.

Unfortunately, this has a subtle but confusing affect for developers
trying to inspect the PC value during a crash and comparing it to the
symbol addresses in vmlinux using tools such as 'nm' or 'addr2line';
all text addresses will be displaced by a sub-2MB offset, resulting in
the wrong symbol being identified in many cases. Passing "nokaslr" on
the command line or disabling "CONFIG_RANDOMIZE_BASE" does not help,
since the EFI stub only copies the kernel Image to a 2MB boundary if it
is not relocatable.

Adjust the EFI stub for arm64 so that the minimum Image alignment is 2MB
unless KASLR is in use.

Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Marc Zyngier <maz@kernel.org>
Cc: David Brazdil <dbrazdil@google.com>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Will Deacon <will@kernel.org>
2020-07-13 14:08:07 +01:00
..
arm_scmi firmware: arm_scmi: fix psci dependency 2020-05-07 16:28:56 +01:00
broadcom ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
efi efi/libstub/arm64: Retain 2MB kernel Image alignment if !KASLR 2020-07-13 14:08:07 +01:00
google firmware: google: Probe for a GSMI handler in firmware 2020-01-14 21:46:48 +01:00
imx i.MX drivers update for 5.8: 2020-05-26 00:00:47 +02:00
meson firmware: meson_sm: Add secure power domain support 2020-02-14 11:37:34 -08:00
psci drivers/firmware/psci: Assign @err directly in hotplug_tests() 2020-07-08 21:41:24 +01:00
smccc firmware: smccc: Add function to fetch SMCCC version 2020-05-20 19:10:37 +01:00
tegra firmware: tegra: Defer BPMP probe if shared memory not available 2020-05-22 14:57:14 +02:00
xilinx firmware: xilinx: Fix an error handling path in 'zynqmp_firmware_probe()' 2020-05-15 16:20:02 +02:00
arm_scpi.c firmware: arm_scpi: Replace zero-length array with flexible-array member 2020-02-20 17:13:59 +00:00
arm_sdei.c firmware: arm_sdei: Document the motivation behind these set_fs() calls 2020-05-20 09:36:01 +01:00
dmi_scan.c firmware/dmi: Report DMI Bios & EC firmware release 2020-06-06 11:35:50 +02:00
dmi-id.c firmware/dmi: Report DMI Bios & EC firmware release 2020-06-06 11:35:50 +02:00
dmi-sysfs.c
edd.c edd: Use scnprintf() for avoiding potential buffer overflow 2020-04-02 20:42:29 +02:00
iscsi_ibft_find.c
iscsi_ibft.c iscsi_ibft: Don't limits Targets and NICs to two 2020-01-12 13:16:04 -05:00
Kconfig pci-v5.8-changes 2020-06-06 11:01:58 -07:00
Makefile firmware: smccc: Refactor SMCCC specific bits into separate file 2020-05-20 19:10:37 +01:00
memmap.c
pcdp.c efi/ia64: Move HCDP and MPS table handling into IA64 arch code 2020-02-23 21:59:42 +01:00
pcdp.h
qcom_scm-legacy.c firmware: qcom_scm-legacy: Replace zero-length array with flexible-array 2020-05-12 15:16:33 -07:00
qcom_scm-smc.c firmware: qcom_scm: Dynamically support SMCCC and legacy conventions 2020-01-07 22:14:43 -08:00
qcom_scm.c firmware: qcom_scm: fix bogous abuse of dma-direct internals 2020-04-20 23:20:00 -07:00
qcom_scm.h firmware: qcom_scm: Dynamically support SMCCC and legacy conventions 2020-01-07 22:14:43 -08:00
qemu_fw_cfg.c
raspberrypi.c pci-v5.8-changes 2020-06-06 11:01:58 -07:00
scpi_pm_domain.c
stratix10-rsu.c firmware: fpga: replace the error codes with the standard ones 2020-04-28 15:38:37 +02:00
stratix10-svc.c firmware: fpga: replace the error codes with the standard ones 2020-04-28 15:38:37 +02:00
ti_sci.c firmware: ti_sci: Allow for device shared and exclusive requests 2019-09-04 20:44:33 +02:00
ti_sci.h ARM: SoC-related driver updates 2019-07-19 17:13:56 -07:00
trusted_foundations.c firmware: tf: Different way of L2 cache enabling after LP2 suspend 2020-05-06 18:27:26 +02:00
turris-mox-rwtm.c firmware: turris-mox-rwtm: small white space cleanup 2020-01-08 10:35:23 +01:00