diff --git a/lib/eal/common/eal_common_thread.c b/lib/eal/common/eal_common_thread.c index c5d8b4327d..a588535224 100644 --- a/lib/eal/common/eal_common_thread.c +++ b/lib/eal/common/eal_common_thread.c @@ -251,8 +251,13 @@ static void *ctrl_thread_init(void *arg) struct rte_thread_ctrl_params *params = arg; void *(*start_routine)(void *) = params->start_routine; void *routine_arg = params->arg; + unsigned int lcore_id; + + lcore_id = eal_lcore_non_eal_allocate(); + if (lcore_id >= RTE_MAX_LCORE) + lcore_id = LCORE_ID_ANY; - __rte_thread_init(rte_lcore_id(), cpuset); + __rte_thread_init(lcore_id, cpuset); params->ret = pthread_setaffinity_np(pthread_self(), sizeof(*cpuset), cpuset); if (params->ret != 0) {