Commit a255b0bc authored by Jaroslava Fiedlerova's avatar Jaroslava Fiedlerova

Merge remote-tracking branch 'origin/fhi72-many-cores' into integration_2026_w13 (!4005)

FHI72: handle more than 64 cores
parents 4973c173 8d78c975
...@@ -49,7 +49,7 @@ COPY . . ...@@ -49,7 +49,7 @@ COPY . .
RUN wget http://fast.dpdk.org/rel/dpdk-20.11.9.tar.xz && \ RUN wget http://fast.dpdk.org/rel/dpdk-20.11.9.tar.xz && \
tar -xvf dpdk-20.11.9.tar.xz && \ tar -xvf dpdk-20.11.9.tar.xz && \
cd dpdk-stable-20.11.9 && \ cd dpdk-stable-20.11.9 && \
meson build && \ meson setup -Dmachine=default build && \
ninja -C build && \ ninja -C build && \
ninja install -C build ninja install -C build
......
...@@ -441,17 +441,16 @@ void print_fh_config(const struct xran_fh_config *fh_config) ...@@ -441,17 +441,16 @@ void print_fh_config(const struct xran_fh_config *fh_config)
#endif #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); DevAssert(pd != NULL);
AssertFatal(pd->numelt > 0, "no entries for creation of mask\n"); AssertFatal(pd->numelt > 0, "no entries for creation of mask\n");
uint64_t mask = 0;
for (int i = 0; i < pd->numelt; ++i) { for (int i = 0; i < pd->numelt; ++i) {
int num = pd->iptr[i]; int num = pd->iptr[i];
AssertFatal(num >= 0 && num < 64, "cannot put element of %d in 64-bit mask\n", num); AssertFatal(num >= 0 && num < 128, "cannot put element of %d in 128-bit mask\n", num);
mask |= 1LL << num; uint64_t *mask = num < 64 ? u0t63 : u64t127;
*mask |= 1LL << (num % 64);
} }
return mask;
} }
#if defined F_RELEASE #if defined F_RELEASE
...@@ -520,8 +519,7 @@ static bool set_fh_io_cfg(struct xran_io_cfg *io_cfg, const paramdef_t *fhip, in ...@@ -520,8 +519,7 @@ static bool set_fh_io_cfg(struct xran_io_cfg *io_cfg, const paramdef_t *fhip, in
these parameters are machine specific */ 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->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->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 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_proc_core_64_127 = 0x0; // worker mask 64-127; to be used if machine supports more than 64 cores
io_cfg->pkt_aux_core = 0; // sample app says 0 = "do not start" 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 io_cfg->timing_core = *gpd(fhip, nump, ORAN_CONFIG_IO_CORE)->iptr; // core used by xran
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment