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 D627AA0597; Wed, 8 Apr 2020 17:56:18 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 316C61C0B4; Wed, 8 Apr 2020 17:56:18 +0200 (CEST) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 1CE4A1C065 for ; Wed, 8 Apr 2020 17:56:16 +0200 (CEST) IronPort-SDR: V1HPHYfBnCp6Psx5Y8Pi+4IBT9snd1Sz4tcbeRpit7Y26+91hgmoJFzGafQ406Jvw7qO95scU0 uFmF9MDo3exA== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Apr 2020 08:56:15 -0700 IronPort-SDR: XY5xpi1vXPvjEEJ6eDeLGyQJ1s+y6LkVSiIABaKYPJfhPEsKksB4Cn1++FHnyDLA4Rgmamn15x UnPW7Fv9YhPQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,359,1580803200"; d="scan'208";a="297271506" Received: from silpixa00399498.ir.intel.com (HELO silpixa00399498.ger.corp.intel.com) ([10.237.222.52]) by FMSMGA003.fm.intel.com with ESMTP; 08 Apr 2020 08:56:15 -0700 From: Anatoly Burakov To: dev@dpdk.org Cc: David Hunt , reshma.pattan@intel.com Date: Wed, 8 Apr 2020 16:56:13 +0100 Message-Id: <854770a880777e7ad200481294a7aa5ac9a45f2d.1586361368.git.anatoly.burakov@intel.com> X-Mailer: git-send-email 2.17.1 Subject: [dpdk-dev] [PATCH 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 --- 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 c7fe0ec034..0e5fe42a64 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