From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2CFECC44529 for ; Tue, 21 Jul 2026 09:48:57 +0000 (UTC) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C08F840DDD; Tue, 21 Jul 2026 11:46:32 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) by mails.dpdk.org (Postfix) with ESMTP id 15B5340E32 for ; Tue, 21 Jul 2026 11:46:28 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1784627189; x=1816163189; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=QE7d9kirSZ4r210TvgKNVqhbCiOPBtupftdEMz93FrQ=; b=BWnKqay2oQMUvl+n7Ng8vmfPJP6BllXO/MS9P22ViFpKT7qvFNglv9bT VsnrV4m+5kNS0i+K8c9Bc6jhTIoq1fcLvDqNvTD64rTf+aYuPm2ClkySz yVaCO5LpCa8aKdNYzQrC3APyRXrnPeBLVwDILbD8mhdCobu+G75Jm4HbM Zu8Li8pX42W8pCeSIs6PXDdHdD4TFqYQoT1BZKehiIvmg2JWzEc9FoUdk r3yt4aQXV5qADDE1Mt6ZfQFPknCz0OIL6JztvNgCKveWTBFmL9BjkfJDY +qkhbMpB5tCdtfoTUM+i+nkviEJZm3VwWtAShG32gAhhoGVE2jKtp/lzs w==; X-CSE-ConnectionGUID: jLIqTWO6TFuf8snAOfSUmQ== X-CSE-MsgGUID: lv8UhN29QuqnpYF2K09pbg== X-IronPort-AV: E=McAfee;i="6800,10657,11852"; a="95872493" X-IronPort-AV: E=Sophos;i="6.25,176,1779174000"; d="scan'208";a="95872493" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jul 2026 02:46:28 -0700 X-CSE-ConnectionGUID: m0GMGDpBS6+QaCWb8WeAbg== X-CSE-MsgGUID: sBNlZRAdSu6ov6yDLx1b/Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,176,1779174000"; d="scan'208";a="295922399" Received: from silpixa00401385.ir.intel.com ([10.20.224.226]) by orviesa001.jf.intel.com with ESMTP; 21 Jul 2026 02:46:27 -0700 From: Bruce Richardson To: dev@dpdk.org Cc: Bruce Richardson Subject: [PATCH 26/39] eal: move device options staging list into user cfg Date: Tue, 21 Jul 2026 10:45:34 +0100 Message-ID: <20260721094555.2188496-27-bruce.richardson@intel.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260721094555.2188496-1-bruce.richardson@intel.com> References: <20260429165845.2136843-1-bruce.richardson@intel.com> <20260721094555.2188496-1-bruce.richardson@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The file-static devopt_list in eal_common_options.c holds device options (-a/-b/--vdev) staged during arg parsing for later consumption by eal_option_device_parse(). Rather than holding this as file local static data, store it in the user_cfg struct. Signed-off-by: Bruce Richardson --- lib/eal/common/eal_common_options.c | 21 ++++++--------------- lib/eal/common/eal_internal_cfg.h | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/lib/eal/common/eal_common_options.c b/lib/eal/common/eal_common_options.c index f733512aec..1bc6731fba 100644 --- a/lib/eal/common/eal_common_options.c +++ b/lib/eal/common/eal_common_options.c @@ -305,18 +305,6 @@ static const char *default_solib_dir = RTE_EAL_PMD_PATH; RTE_PMD_EXPORT_SYMBOL(const char, dpdk_solib_path)[] = "DPDK_PLUGIN_PATH=" RTE_EAL_PMD_PATH; -TAILQ_HEAD(device_option_list, device_option); - -struct device_option { - TAILQ_ENTRY(device_option) next; - - enum rte_devtype type; - char arg[]; -}; - -static struct device_option_list devopt_list = -TAILQ_HEAD_INITIALIZER(devopt_list); - /* Returns rte_usage_hook_t */ rte_usage_hook_t eal_get_application_usage_hook(void) @@ -454,6 +442,7 @@ eal_clean_saved_args(void) static int eal_option_device_add(enum rte_devtype type, const char *arg) { + struct eal_user_cfg *user_cfg = eal_get_user_configuration(); struct device_option *devopt; size_t arglen; int ret; @@ -472,25 +461,26 @@ eal_option_device_add(enum rte_devtype type, const char *arg) free(devopt); return -EINVAL; } - TAILQ_INSERT_TAIL(&devopt_list, devopt, next); + TAILQ_INSERT_TAIL(&user_cfg->devopt_list, devopt, next); return 0; } int eal_option_device_parse(void) { + struct eal_user_cfg *user_cfg = eal_get_user_configuration(); struct device_option *devopt; void *tmp; int ret = 0; - RTE_TAILQ_FOREACH_SAFE(devopt, &devopt_list, next, tmp) { + RTE_TAILQ_FOREACH_SAFE(devopt, &user_cfg->devopt_list, next, tmp) { if (ret == 0) { ret = rte_devargs_add(devopt->type, devopt->arg); if (ret) EAL_LOG(ERR, "Unable to parse device '%s'", devopt->arg); } - TAILQ_REMOVE(&devopt_list, devopt, next); + TAILQ_REMOVE(&user_cfg->devopt_list, devopt, next); free(devopt); } return ret; @@ -514,6 +504,7 @@ eal_reset_internal_config(void) struct eal_platform_info *platform_info = eal_get_platform_info(); int i; + TAILQ_INIT(&user_cfg->devopt_list); user_cfg->memory = 0; user_cfg->force_nrank = 0; user_cfg->force_nchannel = 0; diff --git a/lib/eal/common/eal_internal_cfg.h b/lib/eal/common/eal_internal_cfg.h index 38c16c244d..478c16aeae 100644 --- a/lib/eal/common/eal_internal_cfg.h +++ b/lib/eal/common/eal_internal_cfg.h @@ -10,6 +10,9 @@ #ifndef EAL_INTERNAL_CFG_H #define EAL_INTERNAL_CFG_H +#include + +#include #include #include #include @@ -55,11 +58,23 @@ struct hugepage_file_discipline { bool unlink_existing; }; +/** + * A single device option (-a/-b/--vdev) staged during arg parsing. + * Lives in user_cfg->devopt_list; drained by eal_option_device_parse(). + */ +struct device_option { + TAILQ_ENTRY(device_option) next; + enum rte_devtype type; + char arg[]; +}; +TAILQ_HEAD(eal_devopt_list, device_option); + /** * User-provided EAL initialization configuration. * Immutable after initialization, so no need for atomic types or locks. */ struct eal_user_cfg { + struct eal_devopt_list devopt_list; /**< staged device options (-a/-b/--vdev) */ size_t memory; /**< amount of asked memory */ size_t huge_worker_stack_size; /**< worker thread stack size */ enum rte_proc_type_t process_type; /**< requested process type */ -- 2.53.0