From 49ad65c5a56b79d3e185592824c455ac3c3d6f2c Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 19 Mar 2026 12:17:05 +0100 Subject: [PATCH 1/2] FHI72: handle more than 64 cores xran needs to be informed about the cores to use for packet processing. Prior to this change, we only filled the first 64bits, but it can go up to 128 in xran. Change the helper accordingly to support all. --- radio/fhi_72/oran-config.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/radio/fhi_72/oran-config.c b/radio/fhi_72/oran-config.c index 0fac6452e6..47f796054a 100644 --- a/radio/fhi_72/oran-config.c +++ b/radio/fhi_72/oran-config.c @@ -443,17 +443,16 @@ void print_fh_config(const struct xran_fh_config *fh_config) #endif } -static uint64_t get_u64_mask(const paramdef_t *pd) +static void get_u128_mask(const paramdef_t *pd, uint64_t *u0t63, uint64_t *u64t127) { DevAssert(pd != NULL); AssertFatal(pd->numelt > 0, "no entries for creation of mask\n"); - uint64_t mask = 0; for (int i = 0; i < pd->numelt; ++i) { int num = pd->iptr[i]; - AssertFatal(num >= 0 && num < 64, "cannot put element of %d in 64-bit mask\n", num); - mask |= 1LL << num; + AssertFatal(num >= 0 && num < 128, "cannot put element of %d in 128-bit mask\n", num); + uint64_t *mask = num < 64 ? u0t63 : u64t127; + *mask |= 1LL << (num % 64); } - return mask; } #if defined F_RELEASE @@ -522,8 +521,7 @@ static bool set_fh_io_cfg(struct xran_io_cfg *io_cfg, const paramdef_t *fhip, in these parameters are machine specific */ io_cfg->core = *gpd(fhip, nump, ORAN_CONFIG_IO_CORE)->iptr; // core used for IO; absolute CPU core ID for xran library, it should be an isolated core io_cfg->system_core = *gpd(fhip, nump, ORAN_CONFIG_SYSTEM_CORE)->iptr; // absolute CPU core ID for DPDK control threads, it should be an isolated core - io_cfg->pkt_proc_core = get_u64_mask(gpd(fhip, nump, ORAN_CONFIG_WORKER_CORES)); // worker mask 0-63 - io_cfg->pkt_proc_core_64_127 = 0x0; // worker mask 64-127; to be used if machine supports more than 64 cores + get_u128_mask(gpd(fhip, nump, ORAN_CONFIG_WORKER_CORES), &io_cfg->pkt_proc_core, &io_cfg->pkt_proc_core_64_127); // worker masks 0-63 and 64-127 io_cfg->pkt_aux_core = 0; // sample app says 0 = "do not start" io_cfg->timing_core = *gpd(fhip, nump, ORAN_CONFIG_IO_CORE)->iptr; // core used by xran From 8d78c9751329a6154a1db9c1c6bbb6d3715c28f9 Mon Sep 17 00:00:00 2001 From: Romain Beurdouche Date: Thu, 19 Mar 2026 12:37:09 +0000 Subject: [PATCH 2/2] feat(FHI72): Fix lcore count on Arm targets Meson configuration was configuring a wrong maximum number of lcores on the Arm platforms we are using (Neoverse V2 & NVIDIA Grace) as no configuration is provided for these platforms with DPDK 20.11.9. This commit solves this issue by requesting meson to use a generic config that sets a high maximum number of lcores. --- docker/Dockerfile.build.fhi72.native_arm.ubuntu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile.build.fhi72.native_arm.ubuntu b/docker/Dockerfile.build.fhi72.native_arm.ubuntu index 30c1df5962..b0f735a57f 100644 --- a/docker/Dockerfile.build.fhi72.native_arm.ubuntu +++ b/docker/Dockerfile.build.fhi72.native_arm.ubuntu @@ -49,7 +49,7 @@ COPY . . RUN wget http://fast.dpdk.org/rel/dpdk-20.11.9.tar.xz && \ tar -xvf dpdk-20.11.9.tar.xz && \ cd dpdk-stable-20.11.9 && \ - meson build && \ + meson setup -Dmachine=default build && \ ninja -C build && \ ninja install -C build