[openwrt/openwrt] bpf-headers: switch to mips64 for 64 bit targets

LEDE Commits lede-commits at lists.infradead.org
Fri Nov 19 14:52:59 PST 2021


nbd pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/8f355becdf39e4a166063a887f04f7b4feb78cc0

commit 8f355becdf39e4a166063a887f04f7b4feb78cc0
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Thu Nov 18 22:25:47 2021 +0100

    bpf-headers: switch to mips64 for 64 bit targets
    
    BTF pointer data has a different size on 32 vs 64 bit targets,
    and while the generated eBPF code works, the BTF data fails to validate
    on mismatch
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 include/bpf.mk                      | 4 ++--
 package/kernel/bpf-headers/Makefile | 6 ++++++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/include/bpf.mk b/include/bpf.mk
index 61e5b534ab..411763c4a2 100644
--- a/include/bpf.mk
+++ b/include/bpf.mk
@@ -27,7 +27,7 @@ LLVM_OPT:=$(LLVM_PATH)/opt$(LLVM_VER)
 LLVM_STRIP:=$(LLVM_PATH)/llvm-strip$(LLVM_VER)
 
 BPF_KARCH:=mips
-BPF_ARCH:=mips$(if $(CONFIG_BIG_ENDIAN),,el)
+BPF_ARCH:=mips$(if $(CONFIG_ARCH_64BIT),64)$(if $(CONFIG_BIG_ENDIAN),,el)
 BPF_TARGET:=bpf$(if $(CONFIG_BIG_ENDIAN),eb,el)
 
 BPF_HEADERS_DIR:=$(STAGING_DIR)/bpf-headers
@@ -49,7 +49,7 @@ BPF_KERNEL_INCLUDE := \
 
 BPF_CFLAGS := \
 	$(BPF_KERNEL_INCLUDE) -I$(PKG_BUILD_DIR) \
-	-D__KERNEL__ -D__BPF_TRACING__ \
+	-D__KERNEL__ -D__BPF_TRACING__ -DCONFIG_GENERIC_CSUM \
 	-D__TARGET_ARCH_${BPF_KARCH} \
 	-m$(if $(CONFIG_BIG_ENDIAN),big,little)-endian \
 	-fno-stack-protector -Wall \
diff --git a/package/kernel/bpf-headers/Makefile b/package/kernel/bpf-headers/Makefile
index df24bfa13f..f3c0584007 100644
--- a/package/kernel/bpf-headers/Makefile
+++ b/package/kernel/bpf-headers/Makefile
@@ -63,9 +63,15 @@ endef
 
 BPF_DOC = $(PKG_BUILD_DIR)/scripts/bpf_helpers_doc.py
 
+define Build/Configure/64
+	echo 'CONFIG_CPU_MIPS64_R2=y' >> $(PKG_BUILD_DIR)/.config
+	echo 'CONFIG_64BIT=y' >> $(PKG_BUILD_DIR)/.config
+endef
+
 define Build/Configure
 	grep -vE 'CONFIG_(CPU_.*ENDIAN|HZ)' $(PKG_BUILD_DIR)/arch/mips/configs/generic_defconfig > $(PKG_BUILD_DIR)/.config
 	echo 'CONFIG_CPU_$(if $(CONFIG_BIG_ENDIAN),BIG,LITTLE)_ENDIAN=y' >> $(PKG_BUILD_DIR)/.config
+	$(if $(CONFIG_ARCH_64BIT),$(Build/Configure/64))
 	grep CONFIG_HZ $(REAL_LINUX_DIR)/.config >> $(PKG_BUILD_DIR)/.config
 	yes '' | $(KERNEL_MAKE) oldconfig
 	grep 'CONFIG_HZ=' $(REAL_LINUX_DIR)/.config | \



More information about the lede-commits mailing list