From c0f6d9ba7ead80eba3205dfa58858285b39dca24 Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Tue, 16 Jul 2024 16:46:38 +0200 Subject: [PATCH] lx_emul: cache_line_size and cpufeature on arm64 Issue #5236 --- .../lib/import/import-lx_emul_common.inc | 4 +++- .../dde_linux/lib/mk/spec/arm_v8/wireguard.mk | 2 -- repos/dde_linux/src/driver/usb_net/dummies.c | 2 -- .../shadow/arch/arm64/kernel/cacheinfo.c | 19 +++++++++++++++++++ .../shadow/arch/arm64/kernel/cpufeature.c | 3 +++ repos/dde_linux/src/lib/lxip/lx_emul.c | 1 - 6 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 repos/dde_linux/src/lib/lx_emul/shadow/arch/arm64/kernel/cacheinfo.c rename repos/dde_linux/src/{app/wireguard => lib}/lx_emul/shadow/arch/arm64/kernel/cpufeature.c (94%) diff --git a/repos/dde_linux/lib/import/import-lx_emul_common.inc b/repos/dde_linux/lib/import/import-lx_emul_common.inc index 34994161eb..e03eeb5373 100644 --- a/repos/dde_linux/lib/import/import-lx_emul_common.inc +++ b/repos/dde_linux/lib/import/import-lx_emul_common.inc @@ -71,7 +71,6 @@ LX_ARCH := x86 GEN_ARCH := x86 SPEC_ARCH := x86_64 - SRC_C += lx_emul/shadow/arch/x86/kernel/irq.c SRC_C += lx_emul/shadow/arch/x86/kernel/setup_percpu.c endif @@ -92,6 +91,9 @@ ifeq ($(filter-out $(SPECS),arm_v8),) LX_ARCH := arm64 GEN_ARCH := arm SPEC_ARCH := arm_v8 + +SRC_C += lx_emul/shadow/arch/arm64/kernel/cacheinfo.c +SRC_C += lx_emul/shadow/arch/arm64/kernel/cpufeature.c endif ifneq ($(SHARED_LIB),) diff --git a/repos/dde_linux/lib/mk/spec/arm_v8/wireguard.mk b/repos/dde_linux/lib/mk/spec/arm_v8/wireguard.mk index 58bc4afd07..daa88ca12e 100644 --- a/repos/dde_linux/lib/mk/spec/arm_v8/wireguard.mk +++ b/repos/dde_linux/lib/mk/spec/arm_v8/wireguard.mk @@ -8,9 +8,7 @@ PRG_DIR := $(PRG_TOP_DIR)/spec/arm_v8 DDE_LINUX_DIR := $(subst /src/include/lx_kit,,$(call select_from_repositories,src/include/lx_kit)) SRC_C += arch/arm64/kernel/smp.c -SRC_C += arch/arm64/kernel/cpufeature.c -vpath arch/arm64/kernel/cpufeature.c $(PRG_TOP_DIR)/lx_emul/shadow vpath arch/arm64/kernel/smp.c $(DDE_LINUX_DIR)/src/lib/lx_emul/shadow SRC_S += arch/arm64/crypto/poly1305-core.S diff --git a/repos/dde_linux/src/driver/usb_net/dummies.c b/repos/dde_linux/src/driver/usb_net/dummies.c index d750c18400..9fe3d7bbb9 100644 --- a/repos/dde_linux/src/driver/usb_net/dummies.c +++ b/repos/dde_linux/src/driver/usb_net/dummies.c @@ -24,8 +24,6 @@ EXPORT_PER_CPU_SYMBOL(cpu_sibling_map); unsigned long __FIXADDR_TOP = 0xfffff000; -bool arm64_use_ng_mappings = false; - const struct ipv6_stub *ipv6_stub; diff --git a/repos/dde_linux/src/lib/lx_emul/shadow/arch/arm64/kernel/cacheinfo.c b/repos/dde_linux/src/lib/lx_emul/shadow/arch/arm64/kernel/cacheinfo.c new file mode 100644 index 0000000000..41311dcfe1 --- /dev/null +++ b/repos/dde_linux/src/lib/lx_emul/shadow/arch/arm64/kernel/cacheinfo.c @@ -0,0 +1,19 @@ +/* + * \brief Replaces arch/arm64/kernel/cacheinfo.c + * \author Christian Helmuth + * \date 2024-07-16 + */ + +/* + * Copyright (C) 2024 Genode Labs GmbH + * + * This file is distributed under the terms of the GNU General Public License + * version 2. + */ + +#include + +int cache_line_size(void) +{ + return ARCH_DMA_MINALIGN; +} diff --git a/repos/dde_linux/src/app/wireguard/lx_emul/shadow/arch/arm64/kernel/cpufeature.c b/repos/dde_linux/src/lib/lx_emul/shadow/arch/arm64/kernel/cpufeature.c similarity index 94% rename from repos/dde_linux/src/app/wireguard/lx_emul/shadow/arch/arm64/kernel/cpufeature.c rename to repos/dde_linux/src/lib/lx_emul/shadow/arch/arm64/kernel/cpufeature.c index b4d3702f11..7c3a38ba82 100644 --- a/repos/dde_linux/src/app/wireguard/lx_emul/shadow/arch/arm64/kernel/cpufeature.c +++ b/repos/dde_linux/src/lib/lx_emul/shadow/arch/arm64/kernel/cpufeature.c @@ -1,6 +1,7 @@ /* * \brief Replaces arch/arm64/kernel/cpufeature.c * \author Martin Stein + * \author Christian Helmuth * \date 2022-05-09 */ @@ -36,3 +37,5 @@ EXPORT_SYMBOL(cpu_hwcap_keys); DECLARE_BITMAP(cpu_hwcaps, ARM64_NCAPS); EXPORT_SYMBOL(cpu_hwcaps); + +bool arm64_use_ng_mappings = false; diff --git a/repos/dde_linux/src/lib/lxip/lx_emul.c b/repos/dde_linux/src/lib/lxip/lx_emul.c index 76e79fbe55..d8e492d696 100644 --- a/repos/dde_linux/src/lib/lxip/lx_emul.c +++ b/repos/dde_linux/src/lib/lxip/lx_emul.c @@ -33,7 +33,6 @@ DEFINE_PER_CPU(unsigned long, cpu_scale); pgd_t reserved_pg_dir[PTRS_PER_PGD]; #endif -bool arm64_use_ng_mappings = false; pteval_t __default_kernel_pte_mask __read_mostly = ~0;