From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 320E4A0598; Tue, 21 Apr 2020 12:50:04 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7ACE31D8F1; Tue, 21 Apr 2020 12:50:03 +0200 (CEST) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by dpdk.org (Postfix) with ESMTP id DE1831D8E9 for ; Tue, 21 Apr 2020 12:50:01 +0200 (CEST) IronPort-SDR: GYlnUUgA44IzdvOznITmQeTXOdozbQBjH5xSdrXrME9omftgcJCq3kxe/G8UMILwPrrG5mNaYh d2d7tSTAaEcA== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Apr 2020 03:50:00 -0700 IronPort-SDR: LPam7gdF+y7hOGQQ1FXvf/4SClG1zcgaVGP3WAUGilhMxNeQDbujuZkeBOvb1EP9c968HYWXhb bGJSaoxY5lzQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,410,1580803200"; d="scan'208";a="456058652" Received: from aburakov-mobl.ger.corp.intel.com (HELO localhost.localdomain) ([10.213.208.123]) by fmsmga005.fm.intel.com with ESMTP; 21 Apr 2020 03:50:00 -0700 From: Anatoly Burakov To: dev@dpdk.org Cc: David Hunt , reshma.pattan@intel.com Date: Mon, 20 Apr 2020 17:56:51 +0000 Message-Id: X-Mailer: git-send-email 2.17.1 In-Reply-To: <854770a880777e7ad200481294a7aa5ac9a45f2d.1586361368.git.anatoly.burakov@intel.com> References: <854770a880777e7ad200481294a7aa5ac9a45f2d.1586361368.git.anatoly.burakov@intel.com> Subject: [dpdk-dev] [PATCH v2 1/2] l3fwd-power: exit if initializing power library failed X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Currently, if power library initialization fails, only a log message is displayed. This is suboptimal for a number of reasons, but the main one is that telemetry mode does not depend on the power library and can therefore run in environments where l3fwd-power would normally not run correctly (such as inside a VM). This will lead to attempts to deinitialize the power library on exit, with a subsequent forced unclean shutdown of DPDK. Fix this by only initializing the power library in modes that actually need it, and change a log message to a failure to initialize. Signed-off-by: Anatoly Burakov Acked-by: David Hunt Reviewed-by: Reshma Pattan --- examples/l3fwd-power/main.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/examples/l3fwd-power/main.c b/examples/l3fwd-power/main.c index b46aa7bac..be50ec049 100644 --- a/examples/l3fwd-power/main.c +++ b/examples/l3fwd-power/main.c @@ -2065,15 +2065,17 @@ static int check_ptype(uint16_t portid) static int init_power_library(void) { - int ret = 0, lcore_id; - for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) { - if (rte_lcore_is_enabled(lcore_id)) { - /* init power management library */ - ret = rte_power_init(lcore_id); - if (ret) - RTE_LOG(ERR, POWER, + unsigned int lcore_id; + int ret = 0; + + RTE_LCORE_FOREACH(lcore_id) { + /* init power management library */ + ret = rte_power_init(lcore_id); + if (ret) { + RTE_LOG(ERR, POWER, "Library initialization failed on core %u\n", lcore_id); + return ret; } } return ret; @@ -2224,8 +2226,8 @@ main(int argc, char **argv) if (ret < 0) rte_exit(EXIT_FAILURE, "Invalid L3FWD parameters\n"); - if (init_power_library()) - RTE_LOG(ERR, L3FWD_POWER, "init_power_library failed\n"); + if (app_mode != APP_MODE_TELEMETRY && init_power_library()) + rte_exit(EXIT_FAILURE, "init_power_library failed\n"); if (update_lcore_params() < 0) rte_exit(EXIT_FAILURE, "update_lcore_params failed\n"); -- 2.17.1