Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ffe9923 authored by Will Deacon's avatar Will Deacon
Browse files

arm64: errata: Pass --fix-cortex-a53-843419 to ld if workaround enabled



Cortex-A53 erratum 843419 is worked around by the linker, although it is
a configure-time option to GCC as to whether ld is actually asked to
apply the workaround or not.

This patch ensures that we pass --fix-cortex-a53-843419 to the linker
when both CONFIG_ARM64_ERRATUM_843419=y and the linker supports the
option.

Acked-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
parent b2d8b0cb
Loading
Loading
Loading
Loading
+5 −10
Original line number Diff line number Diff line
@@ -418,18 +418,13 @@ config ARM64_ERRATUM_845719

config ARM64_ERRATUM_843419
	bool "Cortex-A53: 843419: A load or store might access an incorrect address"
	depends on MODULES
	default y
	select ARM64_MODULE_CMODEL_LARGE
	select ARM64_MODULE_CMODEL_LARGE if MODULES
	help
	  This option builds kernel modules using the large memory model in
	  order to avoid the use of the ADRP instruction, which can cause
	  a subsequent memory access to use an incorrect address on Cortex-A53
	  parts up to r0p4.

	  Note that the kernel itself must be linked with a version of ld
	  which fixes potentially affected ADRP instructions through the
	  use of veneers.
	  This option links the kernel with '--fix-cortex-a53-843419' and
	  builds modules using the large memory model in order to avoid the use
	  of the ADRP instruction, which can cause a subsequent memory access
	  to use an incorrect address on Cortex-A53 parts up to r0p4.

	  If unsure, say Y.

+8 −0
Original line number Diff line number Diff line
@@ -18,6 +18,14 @@ ifneq ($(CONFIG_RELOCATABLE),)
LDFLAGS_vmlinux		+= -pie -Bsymbolic
endif

ifeq ($(CONFIG_ARM64_ERRATUM_843419),y)
  ifeq ($(call ld-option, --fix-cortex-a53-843419),)
$(warning ld does not support --fix-cortex-a53-843419; kernel may be susceptible to erratum)
  else
LDFLAGS_vmlinux	+= --fix-cortex-a53-843419
  endif
endif

KBUILD_DEFCONFIG := defconfig

# Check for binutils support for specific extensions