git: f1f27dfa4ad9 - stable/13 - Work around VNET and DPCPU related panics on aarch64
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 26 Jul 2023 18:05:57 UTC
The branch stable/13 has been updated by dim:
URL: https://cgit.FreeBSD.org/src/commit/?id=f1f27dfa4ad9da53fcdfc6aae644fab83bda4e76
commit f1f27dfa4ad9da53fcdfc6aae644fab83bda4e76
Author: Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2023-07-23 13:48:36 +0000
Commit: Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2023-07-26 18:02:37 +0000
Work around VNET and DPCPU related panics on aarch64
lld >= 14 and recent GNU ld can relax adrp+add and adrp+ldr
instructions, which breaks VNET and DPCPU when used in modules.
Until VNET and DPCPU can be fixed to deal with these relaxed
instructions, disable linker relaxation for now.
PR: 264094
Reviewed by: markj
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D41156
(cherry picked from commit 80e4ac2964a11edef456a15b77e43aadeaf273a2)
---
sys/conf/kmod.mk | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/sys/conf/kmod.mk b/sys/conf/kmod.mk
index a06f6a2555d9..4a0d828f0159 100644
--- a/sys/conf/kmod.mk
+++ b/sys/conf/kmod.mk
@@ -168,6 +168,13 @@ CFLAGS+= -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer
CFLAGS+= -fPIC
.endif
+.if ${MACHINE_CPUARCH} == "aarch64"
+# https://bugs.freebsd.org/264094
+# lld >= 14 and recent GNU ld can relax adrp+add and adrp+ldr instructions,
+# which breaks VNET.
+LDFLAGS+= --no-relax
+.endif
+
# Temporary workaround for PR 196407, which contains the fascinating details.
# Don't allow clang to use fpu instructions or registers in kernel modules.
.if ${MACHINE_CPUARCH} == arm