From patchwork Mon Apr 8 18:25:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 52441 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C953B5592; Mon, 8 Apr 2019 20:25:19 +0200 (CEST) Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) by dpdk.org (Postfix) with ESMTP id 7209D3572 for ; Mon, 8 Apr 2019 20:25:16 +0200 (CEST) Received: by mail-pl1-f181.google.com with SMTP id b3so7794871plr.7 for ; Mon, 08 Apr 2019 11:25:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=mbQIcA1uhldaEFarsVAa047HrCNJQvNe3d0S2pgozUY=; b=KOIOmdS1192jR0taCOWOJG2ICxauJZfqzkX9NCokWEaqY6nY1Iissh6erQuuwcX+mc uNLiwzWNsAdD5XQnZaPA3aYn6Z3ToiH2bpxPrHqInDtNAAE/f82DWwk8tY0k3jC+tKFJ mI7DkRPL6pFRTNqGeKT292SKV1KxHFGakGD740pRFrRWgCxVWOVtDxbhiOJlVAgDCUmg Dbyp5Nb6mjOLEBInYupmFcNbMl+O271803Th3GsUwidXaejbqV1gmWn1qB9WGXI9t+Tn 658J+Yul4+8Q/HRrvymZ4kZmoi0VoGPcjMnjf7nLXshYeGZDz2+hjAPc6GoI8cnz4CuK 18pg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=mbQIcA1uhldaEFarsVAa047HrCNJQvNe3d0S2pgozUY=; b=gR1CYby6NoLVZTZO/LelHuBsDQid0d9n6nHithpo7mCzJLvgDCq/ln6GXt6cLBC75I 9Jm+dwpz7Fi0GIZfJQWsFXUe3JHdP66FZg1TqqubGxi6HoGycNay45zah0r8+eN7d+nt y6PfOREyXLGXtVhAaC660xNTAYLd/XF40VlbrU/EaMA2wykniYxRTh+GUT2PTJh7vHIt eAqoJCNsUcR1kRYAxQxb2c539JGZAg1EIVPpGET+hU23g2RDR796pQsHleXsz5BzJRgz czotkhANulhFG//8T34kRIUGNXtNCsfKc/+GMKQqmWimlmtR/cp71j7z2bQcJjJo7gGf eMgw== X-Gm-Message-State: APjAAAXEZCMd7H7FUu4B8acuRAZC5gt+V8JRQ6lb0jgS0DC/5vxcHQvm jUsADUD5nBQixbMe5L7Zuym8Bn7dMIWA8Q== X-Google-Smtp-Source: APXvYqz6HWrA7K83qA8bKh8x6B8GDIzqmYvAKx/PXwHljt76GdKXJh6suHRnWfc9bU1f/56P7P8lBQ== X-Received: by 2002:a17:902:f094:: with SMTP id go20mr31697593plb.159.1554747914922; Mon, 08 Apr 2019 11:25:14 -0700 (PDT) Received: from shemminger-XPS-13-9360.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id d25sm40891081pfn.154.2019.04.08.11.25.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 08 Apr 2019 11:25:13 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Mon, 8 Apr 2019 11:25:06 -0700 Message-Id: <20190408182510.16078-2-stephen@networkplumber.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190408182510.16078-1-stephen@networkplumber.org> References: <20190408182510.16078-1-stephen@networkplumber.org> Subject: [dpdk-dev] [PATCH v1 1/5] eal: add accessor functions for lcore_config 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" The fields of the internal EAL core configuration are currently laid bare as part of the API. This is not good practice and limits fixing issues with layout and sizes. Make new accessor functions for the fields used by current drivers and examples. Mark the state and return code functions as experimental since these values might change in the future and probably shouldn't have been used by non EAL code anyway. Most of these functions are not marked as experimental since we want applications to convert over asap. The one exception is the return_code, which is only used by some tests now and not clear that it is even that useful. Signed-off-by: Stephen Hemminger Reviewed-by: David Marchand --- doc/guides/rel_notes/release_19_05.rst | 7 +++ lib/librte_eal/common/eal_common_lcore.c | 39 +++++++++++++++++ lib/librte_eal/common/include/rte_lcore.h | 52 ++++++++++++++++------- lib/librte_eal/rte_eal_version.map | 11 +++++ 4 files changed, 94 insertions(+), 15 deletions(-) diff --git a/doc/guides/rel_notes/release_19_05.rst b/doc/guides/rel_notes/release_19_05.rst index dbdf07a0c05b..4beea5705be7 100644 --- a/doc/guides/rel_notes/release_19_05.rst +++ b/doc/guides/rel_notes/release_19_05.rst @@ -222,6 +222,13 @@ ABI Changes alignment for ``rte_crypto_asym_op`` to restore expected ``rte_crypto_op`` layout and alignment. +* eal: the lcore config structure ``struct lcore_config`` will be made + internal to the EAL in a future release. This will allow the structure to + change without impacting API or ABI. All accesses to fields of this + structure should be done by the corresponding accessor functions. + For example, instead of using ``lcore_config[lcore_id].socket_id`` + the function ``rte_lcore_socket_id(lcore_id)`` should be used instead. + Shared Library Versions ----------------------- diff --git a/lib/librte_eal/common/eal_common_lcore.c b/lib/librte_eal/common/eal_common_lcore.c index 1cbac42286ba..c3cf5a06269d 100644 --- a/lib/librte_eal/common/eal_common_lcore.c +++ b/lib/librte_eal/common/eal_common_lcore.c @@ -16,6 +16,45 @@ #include "eal_private.h" #include "eal_thread.h" +int rte_lcore_index(int lcore_id) +{ + if (unlikely(lcore_id >= RTE_MAX_LCORE)) + return -1; + + if (lcore_id < 0) + lcore_id = (int)rte_lcore_id(); + + return lcore_config[lcore_id].core_index; +} + +int rte_lcore_to_cpu_id(int lcore_id) +{ + if (unlikely(lcore_id >= RTE_MAX_LCORE)) + return -1; + + if (lcore_id < 0) + lcore_id = (int)rte_lcore_id(); + + return lcore_config[lcore_id].core_id; +} + +rte_cpuset_t rte_lcore_cpuset(unsigned int lcore_id) +{ + return lcore_config[lcore_id].cpuset; +} + +unsigned +rte_lcore_to_socket_id(unsigned int lcore_id) +{ + return lcore_config[lcore_id].socket_id; +} + +int +rte_lcore_return_code(unsigned int lcore_id) +{ + return lcore_config[lcore_id].ret; +} + static int socket_id_cmp(const void *a, const void *b) { diff --git a/lib/librte_eal/common/include/rte_lcore.h b/lib/librte_eal/common/include/rte_lcore.h index dea17f500065..7687fe650f64 100644 --- a/lib/librte_eal/common/include/rte_lcore.h +++ b/lib/librte_eal/common/include/rte_lcore.h @@ -121,15 +121,8 @@ rte_lcore_count(void) * @return * The relative index, or -1 if not enabled. */ -static inline int -rte_lcore_index(int lcore_id) -{ - if (lcore_id >= RTE_MAX_LCORE) - return -1; - if (lcore_id < 0) - lcore_id = (int)rte_lcore_id(); - return lcore_config[lcore_id].core_index; -} +int +rte_lcore_index(int lcore_id); /** * Return the ID of the physical socket of the logical core we are @@ -177,11 +170,40 @@ rte_socket_id_by_idx(unsigned int idx); * @return * the ID of lcoreid's physical socket */ -static inline unsigned -rte_lcore_to_socket_id(unsigned lcore_id) -{ - return lcore_config[lcore_id].socket_id; -} +unsigned int +rte_lcore_to_socket_id(unsigned int lcore_id); + +/** + * Return the id of the lcore on a socket starting from zero. + * + * @param lcore_id + * The targeted lcore, or -1 for the current one. + * @return + * The relative index, or -1 if not enabled. + */ +int +rte_lcore_to_cpu_id(int lcore_id); + +/** + * Return the cpuset for a given lcore. + * @param lcore_id + * the targeted lcore, which MUST be between 0 and RTE_MAX_LCORE-1. + * @return + * The cpuset of that lcore + */ +rte_cpuset_t +rte_lcore_cpuset(unsigned int lcore_id); + +/** + * Get the return code from a lcore thread. + * @param lcore_id + * the targeted lcore, which MUST be between 0 and RTE_MAX_LCORE-1 + * and finished + * @return + * the return code from the lcore thread + */ +int __rte_experimental +rte_lcore_return_code(unsigned int lcore_id); /** * Test if an lcore is enabled. @@ -193,7 +215,7 @@ rte_lcore_to_socket_id(unsigned lcore_id) * True if the given lcore is enabled; false otherwise. */ static inline int -rte_lcore_is_enabled(unsigned lcore_id) +rte_lcore_is_enabled(unsigned int lcore_id) { struct rte_config *cfg = rte_eal_get_configuration(); if (lcore_id >= RTE_MAX_LCORE) diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map index d6e375135ad1..f6688327cad3 100644 --- a/lib/librte_eal/rte_eal_version.map +++ b/lib/librte_eal/rte_eal_version.map @@ -268,6 +268,16 @@ DPDK_18.11 { } DPDK_18.08; +DPDK_19.05 { + global: + + rte_lcore_cpuset; + rte_lcore_index; + rte_lcore_to_cpu_id; + rte_lcore_to_socket_id; + +} DPDK_18.08; + EXPERIMENTAL { global: @@ -329,6 +339,7 @@ EXPERIMENTAL { rte_fbarray_set_free; rte_fbarray_set_used; rte_intr_callback_unregister_pending; + rte_lcore_return_code; rte_log_register_type_and_pick_level; rte_malloc_dump_heaps; rte_malloc_heap_create; From patchwork Mon Apr 8 18:25:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 52442 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 814975681; Mon, 8 Apr 2019 20:25:23 +0200 (CEST) Received: from mail-pg1-f195.google.com (mail-pg1-f195.google.com [209.85.215.195]) by dpdk.org (Postfix) with ESMTP id 26AAD4F9C for ; Mon, 8 Apr 2019 20:25:17 +0200 (CEST) Received: by mail-pg1-f195.google.com with SMTP id i2so7769165pgj.11 for ; Mon, 08 Apr 2019 11:25:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=3FO51MkZ21vvvofbgTf+19JWuMHY3hfQGqQwdvpJkxY=; b=ywqKRz34fqKrxqzwxy4s3SHebEFBIExl1brUBYR20vA9t6sIuxRGQJbcMc0vDgqzWW 77hF1SuWI4WMzLD66GBi9EXTI8uGBc7wLdMiH7GMi9tDttWRTKZcb9TnYpgWdLLga81h OE1Q+N0I0UdjfpLKujNgt3AVkPTmJ/3rOlYL+DyBm4NMRiA4aLo4DfKPT+InLkX1R/P2 XosEu++eidD1JH2lI/PvChAOoQFh36xVYYsZEQqBv4rljAmYOSpxUsbBWkGAN40i+J1L 4GByl4scsSubJGyF4TMRvoIw05brFyjZ/7aDkXNCVGGS0iXyLLuYwluTH8S/Lwc80ZQ7 YUYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=3FO51MkZ21vvvofbgTf+19JWuMHY3hfQGqQwdvpJkxY=; b=pNVnys6FoHi9UcIoWjThX0cLDdlMlKD1YqG87Se3CdncBrPbKUyYflyiHIQDKvRtJ3 pYL2l/iWUsnSU+QGcRRZG8ifdz1iXuEmE4SGk2enLB71CrFg2BNiw3k1EzhqSx483UTF gebp5ooSdkNJRL99c1cTzS7QJWnq7gYWwBL09ql1xA5z2m+5Etj35r58lxcymUNwKRoW BdRuRXpLYMgHgNqVnZnhaPY5J5rRpBWMPVCIlTGAxmAtRTymBwk/0TOEx4YI9D6BKVi4 SELdn47832qk66TKiOYRiWjectMFtqgQri3PZxsRGUnLikHtbMey8awwxH2HcdWkhs0Q qdPQ== X-Gm-Message-State: APjAAAVAynY9/cvTwr4Hya2uH2TD2bsB3q6XB8OvFIhkDUvizoTamKDG NPWpglwuDaS1CSXaAp2W+EU8CVnD8FnJoQ== X-Google-Smtp-Source: APXvYqxAn56iZixNzRvWzMh54ob0IP62RYM//HinDiqNO/Ust6uRmAaI2NYFUDUg+PYheOYxwzS0QQ== X-Received: by 2002:a62:6f47:: with SMTP id k68mr15292363pfc.196.1554747916035; Mon, 08 Apr 2019 11:25:16 -0700 (PDT) Received: from shemminger-XPS-13-9360.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id d25sm40891081pfn.154.2019.04.08.11.25.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 08 Apr 2019 11:25:15 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Mon, 8 Apr 2019 11:25:07 -0700 Message-Id: <20190408182510.16078-3-stephen@networkplumber.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190408182510.16078-1-stephen@networkplumber.org> References: <20190408182510.16078-1-stephen@networkplumber.org> Subject: [dpdk-dev] [PATCH v1 2/5] bus: use lcore accessor functions 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" Fix the bus logic in fslmc and dpaa drivers to use the new accessor functions. Signed-off-by: Stephen Hemminger Reviewed-by: David Marchand --- drivers/bus/dpaa/dpaa_bus.c | 6 ++++-- drivers/bus/fslmc/portal/dpaa2_hw_dpio.c | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c index ac20eccd53c1..08c822781d9d 100644 --- a/drivers/bus/dpaa/dpaa_bus.c +++ b/drivers/bus/dpaa/dpaa_bus.c @@ -254,6 +254,7 @@ int rte_dpaa_portal_init(void *arg) unsigned int cpu, lcore = rte_lcore_id(); int ret; struct dpaa_portal *dpaa_io_portal; + rte_cpuset_t cpuset; BUS_INIT_FUNC_TRACE(); @@ -263,12 +264,13 @@ int rte_dpaa_portal_init(void *arg) if (lcore >= RTE_MAX_LCORE) return -1; - cpu = lcore_config[lcore].core_id; + cpu = rte_lcore_to_cpu_id(lcore); /* Set CPU affinity for this thread.*/ id = pthread_self(); + cpuset = rte_lcore_cpuset(lcore); ret = pthread_setaffinity_np(id, sizeof(cpu_set_t), - &lcore_config[lcore].cpuset); + &cpuset); if (ret) { DPAA_BUS_LOG(ERR, "pthread_setaffinity_np failed on core :%u" " (lcore=%u) with ret: %d", cpu, lcore, ret); diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c index 7bcbde840e63..8efb24af5c6a 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c +++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c @@ -366,7 +366,9 @@ dpaa2_check_lcore_cpuset(void) for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) { for (i = 0; i < RTE_MAX_LCORE; i++) { - if (CPU_ISSET(i, &lcore_config[lcore_id].cpuset)) { + rte_cpuset_t cpuset = rte_lcore_cpuset(lcore_id); + + if (CPU_ISSET(i, &cpuset)) { RTE_LOG(DEBUG, EAL, "lcore id = %u cpu=%u\n", lcore_id, i); if (dpaa2_cpu[lcore_id] != 0xffffffff) { From patchwork Mon Apr 8 18:25:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 52443 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B52FF58CB; Mon, 8 Apr 2019 20:25:26 +0200 (CEST) Received: from mail-pl1-f196.google.com (mail-pl1-f196.google.com [209.85.214.196]) by dpdk.org (Postfix) with ESMTP id 91DCE4F91 for ; Mon, 8 Apr 2019 20:25:18 +0200 (CEST) Received: by mail-pl1-f196.google.com with SMTP id t16so7814763plo.0 for ; Mon, 08 Apr 2019 11:25:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=0ThhFIn4SaOCY0Ee5dvp1///f0wyYwJ9V1lQ97ciQ+A=; b=MTlwafoVKrd9hl4QAqx3mTgenSg4JLPxMqd/0D/mXXapoiH35qqgLBS3SqoPn+Is6E iA3VBYizUopWYNrz1IDs8HXOj8GxP55Swb9lqMSucamPjoiGjmcCn2KTDt1biqKRxJHM kKQX7KHGt8c5lM0XTJSjpXRBgKsH28E+YEIDH9i1A86g5bUqfyHcN4QOM3UgPqai9Rue QdGqJBhg0A9ZilO7bJnUpbuQ2n1x85661CySThJe1L3CwbWiP/d392Tkoqy1mCNtpgaD /8cmsqPs4VbL62xYFyDyQ+QpkNUgRyiGUo5Yu70BS6uNyhT0tojE3qXu+tCTf6CZ3l/U 51Mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=0ThhFIn4SaOCY0Ee5dvp1///f0wyYwJ9V1lQ97ciQ+A=; b=R7dTfvO2a7S0mKmPP1w1q0TzwfDmlrfe/t4mFUGeh5BjtC2jIGKmT3U1nd9yGebxrm AjVhSfA837KoXkju0+Sd6P9gnnH0aew0Pc9YXz87w2vy8Cdyk4hwXjxWdvRDefr4nFZ9 wBqRwzMh8m7bsLSfpFUWMWqV/D82WC3SZRaU9q9oMQbWs18fy7xkkZYyV3cnJXXJys0q 1nONECV5t0Dw1i+57hw2HMG9elh+GPYM5iCuEJqX4uucsaPCp1uaf4C+qEIg1MHhxHt9 OX3GQLdx5NlNhYVqJcQK3qHvNsRz2QDiy3K78eW9xcNcumt5vSqlUGXXQ8h4xq/zKb8Y jwSA== X-Gm-Message-State: APjAAAUBRM/vqlKoGaDRROPBX5GC903Zgn5dpAjGKnrDJ1/5wS4yUmIL 2acAhshkdXhSJlYjc6o0QbNPVI3425W2ag== X-Google-Smtp-Source: APXvYqy4ujbAvD7IyeJieRsuA38TW52NuhaCrWTYY/VY7VHgt8+uf8eX1uTrWK0JI/TILyaZcQXM9Q== X-Received: by 2002:a17:902:d701:: with SMTP id w1mr32496165ply.124.1554747917496; Mon, 08 Apr 2019 11:25:17 -0700 (PDT) Received: from shemminger-XPS-13-9360.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id d25sm40891081pfn.154.2019.04.08.11.25.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 08 Apr 2019 11:25:16 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Mon, 8 Apr 2019 11:25:08 -0700 Message-Id: <20190408182510.16078-4-stephen@networkplumber.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190408182510.16078-1-stephen@networkplumber.org> References: <20190408182510.16078-1-stephen@networkplumber.org> Subject: [dpdk-dev] [PATCH v1 3/5] examples/bond: use lcore accessor 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" Use the accessor function to look at lcore state. Signed-off-by: Stephen Hemminger --- examples/bond/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/bond/main.c b/examples/bond/main.c index ef86194fff4a..48e6755ea294 100644 --- a/examples/bond/main.c +++ b/examples/bond/main.c @@ -526,8 +526,8 @@ static void cmd_start_parsed(__attribute__((unused)) void *parsed_result, int slave_core_id = rte_lcore_id(); rte_spinlock_trylock(&global_flag_stru_p->lock); - if (global_flag_stru_p->LcoreMainIsRunning == 0) { - if (lcore_config[global_flag_stru_p->LcoreMainCore].state != WAIT) { + if (global_flag_stru_p->LcoreMainIsRunning == 0) { + if (rte_lcore_state(global_flag_stru_p->LcoreMainCore) != WAIT) { rte_spinlock_unlock(&global_flag_stru_p->lock); return; } From patchwork Mon Apr 8 18:25:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 52444 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7183B58FE; Mon, 8 Apr 2019 20:25:29 +0200 (CEST) Received: from mail-pf1-f196.google.com (mail-pf1-f196.google.com [209.85.210.196]) by dpdk.org (Postfix) with ESMTP id 8D8845681 for ; Mon, 8 Apr 2019 20:25:20 +0200 (CEST) Received: by mail-pf1-f196.google.com with SMTP id 9so8086937pfj.13 for ; Mon, 08 Apr 2019 11:25:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=sQ+iNUXhTxBVtOq8XRGTYh30Wpb2MtAgGcRRbB25FMs=; b=eZymP0E08kslFOo6qPH/ErkDHVw8PsGS2UMVJR98DbjllXF3epCQoE/MEt4YBokFXD v7EFIAMnjAm1HRSPUKIyb+onnSzyXjRRPdVMjt5nLZLT+021T/9eyAp6iM0cScRypW50 NkrIcMaVmPGFGuEqzJ2VwvestwcclKzLkE5qbIblNKNgBfoQ742GWIX98Ds8zE7M7VD9 NE0c0fFaRhtwVv0K6ApQAEDJQMeYOMg2HezjFOASuizuL9qXX8ooW8k3UyH5VfZBR+VC O3OtAmiSab+WdR4gDNA+lhvCeViY8dRJiID4DBxyB/uQ4PRcqRCodBQaanUgtMEWoiGl yyyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=sQ+iNUXhTxBVtOq8XRGTYh30Wpb2MtAgGcRRbB25FMs=; b=G2bu5W93BXNv/opFcdV2+yKQJ2jWgpMe/b7Sm2m3kGZ8yIPzb3dUUV/e+K94uwHGJx ipI6i2VQuXKD+klBIj9fQcUQSRiNpnRJ4j7YRUz4mIUJ55dIyM1uQfauZokgbDzH8xnA UL8L+UdoLEhS4fJUIJwQ+RVmCc4y+O3c+Oy1atY1nNlcpfptkPuozyJ16MtmGMKz30st +q6uHhkQrDmDbx7gVYwOtvRSHDYwacBqt274g7rhfpxpDjKRv3VAzCUP18Ztx0PVJeko 7crcQz45k+SHaT28pvHZbH2FB+NW6bAWy87hx5A2wn/XMrcSIxS/JLiSsbpoXSHvpoX9 wjCQ== X-Gm-Message-State: APjAAAV9qEKLcOQAg1QuLGSmlClOhqa/l+fUwphMfvkWXAwXmF0sM7Te 8ztUF1E/BjD8WL4bVa+0Tj6FG52StEBEKQ== X-Google-Smtp-Source: APXvYqzO1reOP735IA0a8rrJJjQOjUKTlG/EOASgLEqqtaMc/UYEX4Hga7hRPwCeQhhUF2S9fqoHYA== X-Received: by 2002:a65:420b:: with SMTP id c11mr30038260pgq.24.1554747919113; Mon, 08 Apr 2019 11:25:19 -0700 (PDT) Received: from shemminger-XPS-13-9360.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id d25sm40891081pfn.154.2019.04.08.11.25.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 08 Apr 2019 11:25:18 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Mon, 8 Apr 2019 11:25:09 -0700 Message-Id: <20190408182510.16078-5-stephen@networkplumber.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190408182510.16078-1-stephen@networkplumber.org> References: <20190408182510.16078-1-stephen@networkplumber.org> Subject: [dpdk-dev] [PATCH v1 4/5] app/test: use lcore accessor functions 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" Use the new accessor functions. Don't refer to lcore_config directly. Signed-off-by: Stephen Hemminger Reviewed-by: David Marchand --- app/test/test_cryptodev.c | 2 +- app/test/test_hash_readwrite_lf.c | 14 +++++++------- app/test/test_ring_perf.c | 22 ++++++++++++---------- app/test/test_stack_perf.c | 20 ++++++++++---------- 4 files changed, 30 insertions(+), 28 deletions(-) diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c index 9f31aaa7e6b2..eca6d3db16a5 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -378,7 +378,7 @@ testsuite_setup(void) strcpy(temp_str, vdev_args); strlcat(temp_str, ";", sizeof(temp_str)); slave_core_count++; - socket_id = lcore_config[i].socket_id; + socket_id = rte_lcore_to_socket_id(i); } if (slave_core_count != 2) { RTE_LOG(ERR, USER1, diff --git a/app/test/test_hash_readwrite_lf.c b/app/test/test_hash_readwrite_lf.c index 4ab4c8ee64cf..1361a8aa4c9c 100644 --- a/app/test/test_hash_readwrite_lf.c +++ b/app/test/test_hash_readwrite_lf.c @@ -741,7 +741,7 @@ test_hash_add_no_ks_lookup_hit(struct rwc_perf *rwc_perf_results, int rwc_lf, rte_eal_mp_wait_lcore(); for (i = 1; i <= rwc_core_cnt[n]; i++) - if (lcore_config[i].ret < 0) + if (rte_lcore_return_code(i) < 0) goto err; unsigned long long cycles_per_lookup = @@ -813,7 +813,7 @@ test_hash_add_no_ks_lookup_miss(struct rwc_perf *rwc_perf_results, int rwc_lf, if (ret < 0) goto err; for (i = 1; i <= rwc_core_cnt[n]; i++) - if (lcore_config[i].ret < 0) + if (rte_lcore_return_code(i) < 0) goto err; unsigned long long cycles_per_lookup = @@ -889,7 +889,7 @@ test_hash_add_ks_lookup_hit_non_sp(struct rwc_perf *rwc_perf_results, if (ret < 0) goto err; for (i = 1; i <= rwc_core_cnt[n]; i++) - if (lcore_config[i].ret < 0) + if (rte_lcore_return_code(i) < 0) goto err; unsigned long long cycles_per_lookup = @@ -965,7 +965,7 @@ test_hash_add_ks_lookup_hit_sp(struct rwc_perf *rwc_perf_results, int rwc_lf, if (ret < 0) goto err; for (i = 1; i <= rwc_core_cnt[n]; i++) - if (lcore_config[i].ret < 0) + if (rte_lcore_return_code(i) < 0) goto err; unsigned long long cycles_per_lookup = @@ -1040,7 +1040,7 @@ test_hash_add_ks_lookup_miss(struct rwc_perf *rwc_perf_results, int rwc_lf, int if (ret < 0) goto err; for (i = 1; i <= rwc_core_cnt[n]; i++) - if (lcore_config[i].ret < 0) + if (rte_lcore_return_code(i) < 0) goto err; unsigned long long cycles_per_lookup = @@ -1141,7 +1141,7 @@ test_hash_multi_add_lookup(struct rwc_perf *rwc_perf_results, int rwc_lf, rte_eal_mp_wait_lcore(); for (i = 1; i <= rwc_core_cnt[n]; i++) - if (lcore_config[i].ret < 0) + if (rte_lcore_return_code(i) < 0) goto err; unsigned long long cycles_per_lookup = @@ -1225,7 +1225,7 @@ test_hash_add_ks_lookup_hit_extbkt(struct rwc_perf *rwc_perf_results, rte_eal_mp_wait_lcore(); for (i = 1; i <= rwc_core_cnt[n]; i++) - if (lcore_config[i].ret < 0) + if (rte_lcore_return_code(i) < 0) goto err; unsigned long long cycles_per_lookup = diff --git a/app/test/test_ring_perf.c b/app/test/test_ring_perf.c index ebb3939f51d0..6eccccfe93b4 100644 --- a/app/test/test_ring_perf.c +++ b/app/test/test_ring_perf.c @@ -52,10 +52,11 @@ get_two_hyperthreads(struct lcore_pair *lcp) RTE_LCORE_FOREACH(id2) { if (id1 == id2) continue; - c1 = lcore_config[id1].core_id; - c2 = lcore_config[id2].core_id; - s1 = lcore_config[id1].socket_id; - s2 = lcore_config[id2].socket_id; + + c1 = rte_lcore_to_cpu_id(id1); + c2 = rte_lcore_to_cpu_id(id2); + s1 = rte_lcore_to_socket_id(id1); + s2 = rte_lcore_to_socket_id(id2); if ((c1 == c2) && (s1 == s2)){ lcp->c1 = id1; lcp->c2 = id2; @@ -75,10 +76,11 @@ get_two_cores(struct lcore_pair *lcp) RTE_LCORE_FOREACH(id2) { if (id1 == id2) continue; - c1 = lcore_config[id1].core_id; - c2 = lcore_config[id2].core_id; - s1 = lcore_config[id1].socket_id; - s2 = lcore_config[id2].socket_id; + + c1 = rte_lcore_to_cpu_id(id1); + c2 = rte_lcore_to_cpu_id(id2); + s1 = rte_lcore_to_socket_id(id1); + s2 = rte_lcore_to_socket_id(id2); if ((c1 != c2) && (s1 == s2)){ lcp->c1 = id1; lcp->c2 = id2; @@ -98,8 +100,8 @@ get_two_sockets(struct lcore_pair *lcp) RTE_LCORE_FOREACH(id2) { if (id1 == id2) continue; - s1 = lcore_config[id1].socket_id; - s2 = lcore_config[id2].socket_id; + s1 = rte_lcore_to_socket_id(id1); + s2 = rte_lcore_to_socket_id(id2); if (s1 != s2){ lcp->c1 = id1; lcp->c2 = id2; diff --git a/app/test/test_stack_perf.c b/app/test/test_stack_perf.c index ba27fbf7076d..70561fecda0d 100644 --- a/app/test/test_stack_perf.c +++ b/app/test/test_stack_perf.c @@ -44,10 +44,10 @@ get_two_hyperthreads(struct lcore_pair *lcp) RTE_LCORE_FOREACH(id[1]) { if (id[0] == id[1]) continue; - core[0] = lcore_config[id[0]].core_id; - core[1] = lcore_config[id[1]].core_id; - socket[0] = lcore_config[id[0]].socket_id; - socket[1] = lcore_config[id[1]].socket_id; + core[0] = rte_lcore_to_cpu_id(id[0]); + core[1] = rte_lcore_to_cpu_id(id[1]); + socket[0] = rte_lcore_to_socket_id(id[0]); + socket[1] = rte_lcore_to_socket_id(id[1]); if ((core[0] == core[1]) && (socket[0] == socket[1])) { lcp->c1 = id[0]; lcp->c2 = id[1]; @@ -70,10 +70,10 @@ get_two_cores(struct lcore_pair *lcp) RTE_LCORE_FOREACH(id[1]) { if (id[0] == id[1]) continue; - core[0] = lcore_config[id[0]].core_id; - core[1] = lcore_config[id[1]].core_id; - socket[0] = lcore_config[id[0]].socket_id; - socket[1] = lcore_config[id[1]].socket_id; + core[0] = rte_lcore_to_cpu_id(id[0]); + core[1] = rte_lcore_to_cpu_id(id[1]); + socket[0] = rte_lcore_to_socket_id(id[0]); + socket[1] = rte_lcore_to_socket_id(id[1]); if ((core[0] != core[1]) && (socket[0] == socket[1])) { lcp->c1 = id[0]; lcp->c2 = id[1]; @@ -95,8 +95,8 @@ get_two_sockets(struct lcore_pair *lcp) RTE_LCORE_FOREACH(id[1]) { if (id[0] == id[1]) continue; - socket[0] = lcore_config[id[0]].socket_id; - socket[1] = lcore_config[id[1]].socket_id; + socket[0] = rte_lcore_to_socket_id(id[0]); + socket[1] = rte_lcore_to_socket_id(id[1]); if (socket[0] != socket[1]) { lcp->c1 = id[0]; lcp->c2 = id[1]; From patchwork Mon Apr 8 18:25:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 52445 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1F8F25942; Mon, 8 Apr 2019 20:25:33 +0200 (CEST) Received: from mail-pf1-f196.google.com (mail-pf1-f196.google.com [209.85.210.196]) by dpdk.org (Postfix) with ESMTP id 5B21E5688 for ; Mon, 8 Apr 2019 20:25:21 +0200 (CEST) Received: by mail-pf1-f196.google.com with SMTP id t21so5791226pfh.2 for ; Mon, 08 Apr 2019 11:25:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=3ridAZN/1T9M6kFd5SOhS6KCU4uzTbkMWPJ5SM2K97U=; b=ku0ivT1+6vIBhx5TCFkZi7lqZI4NPbeKQKCw3AII5IIZ0bctp3ATpTmcJirE03uXLp QruxTdtHrdxKv7r8XRtesSOSTffG5T1EH6lvXfK/vFtSXMOp4zW3muwi/GM3c7vi5gQK GMb6LQbdAfNyJ0EIGeBt5apptBdojA7BOlA5v2ww5hHQDfgyEScjifAUa8nHvvI+S7cb G+zg8ff+Q55l9sia81ccjlZuLzuC8sabBuI+ihdPY65lvWO4LOQtT00/m0XmdGCJTRUe xFzOeI7QpmDicJ4s+6ZK7mLde8r4206vqxll7ib+wzHsiyHpIrTe5ckJ5SERPkty2SpA ZR+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=3ridAZN/1T9M6kFd5SOhS6KCU4uzTbkMWPJ5SM2K97U=; b=l+BsHar77fK9i3qA552yPwNiYrXznRFlkPixLjHMo40/aSh+UWjnJ7ioYTVbpooyLo moAU6JTFG3/TdGXYrx+Pttn4LU6Z2z9gz28PHckhp/F+PWgd59YdQmNPyZ4zzfy0Lg+9 LRVlu1T48ul8Ovx/qOg6Ib9n17nhPkEIAO+mLXF8DOg1a4BRLnXNdOS5bQAMSvs2wGyp SazrnRCD14SITHf8fQuWvjh2pLCIF1nAiYqA79QK30bSouXGqlBREmK8n+OddPzzYXzX kljiXi7rbiPhzJiZhaEE32MGhwKRPbISpm/AenJT29vFqmJE39g0Ae2LIJOqUJcD0KEQ e2Xg== X-Gm-Message-State: APjAAAUBjqbA133uVOCK+gnwFE5MoxgQshf1a7je18GLcNqxa/QohZ4O Ijr4Ek6w5hEJwd2q5ufcvXAHI3PIFYwp9A== X-Google-Smtp-Source: APXvYqxj/NTCj3Yd+rwu/JvQ0JSxTMlBBGyKyR4wdQZMeh5nqgRGg2WzIw0m5a/x9PRLN5OUsNR2Kg== X-Received: by 2002:a63:5ec2:: with SMTP id s185mr30302021pgb.27.1554747920213; Mon, 08 Apr 2019 11:25:20 -0700 (PDT) Received: from shemminger-XPS-13-9360.lan (204-195-22-127.wavecable.com. [204.195.22.127]) by smtp.gmail.com with ESMTPSA id d25sm40891081pfn.154.2019.04.08.11.25.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 08 Apr 2019 11:25:19 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Mon, 8 Apr 2019 11:25:10 -0700 Message-Id: <20190408182510.16078-6-stephen@networkplumber.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190408182510.16078-1-stephen@networkplumber.org> References: <20190408182510.16078-1-stephen@networkplumber.org> Subject: [dpdk-dev] [PATCH v1 5/5] eal: make lcore_config private 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" The internal structure of lcore_config should not be part of visible API/ABI. Make it private to EAL. Rearrange and resize the fields in the structure so it takes less memory (and cache footprint). THIS BREAKS ABI OF PREVIOUS RELEASES. Signed-off-by: Stephen Hemminger --- lib/librte_eal/common/eal_common_launch.c | 2 ++ lib/librte_eal/common/eal_private.h | 22 +++++++++++++++++++++ lib/librte_eal/common/include/rte_lcore.h | 24 ----------------------- lib/librte_eal/common/rte_service.c | 2 ++ lib/librte_eal/rte_eal_version.map | 1 - 5 files changed, 26 insertions(+), 25 deletions(-) diff --git a/lib/librte_eal/common/eal_common_launch.c b/lib/librte_eal/common/eal_common_launch.c index fe0ba3f0d617..cf52d717f68e 100644 --- a/lib/librte_eal/common/eal_common_launch.c +++ b/lib/librte_eal/common/eal_common_launch.c @@ -15,6 +15,8 @@ #include #include +#include "eal_private.h" + /* * Wait until a lcore finished its job. */ diff --git a/lib/librte_eal/common/eal_private.h b/lib/librte_eal/common/eal_private.h index 798ede553b21..25e80547904f 100644 --- a/lib/librte_eal/common/eal_private.h +++ b/lib/librte_eal/common/eal_private.h @@ -10,6 +10,28 @@ #include #include +#include + +/** + * Structure storing internal configuration (per-lcore) + */ +struct lcore_config { + uint32_t core_id; /**< core number on socket for this lcore */ + uint32_t core_index; /**< relative index, starting from 0 */ + uint16_t socket_id; /**< physical socket id for this lcore */ + uint8_t core_role; /**< role of core eg: OFF, RTE, SERVICE */ + uint8_t detected; /**< true if lcore was detected */ + volatile enum rte_lcore_state_t state; /**< lcore state */ + rte_cpuset_t cpuset; /**< cpu set which the lcore affinity to */ + pthread_t thread_id; /**< pthread identifier */ + int pipe_master2slave[2]; /**< communication pipe with master */ + int pipe_slave2master[2]; /**< communication pipe with master */ + lcore_function_t * volatile f; /**< function to call */ + void * volatile arg; /**< argument of function */ + volatile int ret; /**< return value of function */ +}; + +extern struct lcore_config lcore_config[RTE_MAX_LCORE]; /** * Initialize the memzone subsystem (private to eal). diff --git a/lib/librte_eal/common/include/rte_lcore.h b/lib/librte_eal/common/include/rte_lcore.h index 7687fe650f64..bc416bc8c19f 100644 --- a/lib/librte_eal/common/include/rte_lcore.h +++ b/lib/librte_eal/common/include/rte_lcore.h @@ -37,30 +37,6 @@ typedef cpuset_t rte_cpuset_t; } while (0) #endif -/** - * Structure storing internal configuration (per-lcore) - */ -struct lcore_config { - unsigned detected; /**< true if lcore was detected */ - pthread_t thread_id; /**< pthread identifier */ - int pipe_master2slave[2]; /**< communication pipe with master */ - int pipe_slave2master[2]; /**< communication pipe with master */ - lcore_function_t * volatile f; /**< function to call */ - void * volatile arg; /**< argument of function */ - volatile int ret; /**< return value of function */ - volatile enum rte_lcore_state_t state; /**< lcore state */ - unsigned socket_id; /**< physical socket id for this lcore */ - unsigned core_id; /**< core number on socket for this lcore */ - int core_index; /**< relative index, starting from 0 */ - rte_cpuset_t cpuset; /**< cpu set which the lcore affinity to */ - uint8_t core_role; /**< role of core eg: OFF, RTE, SERVICE */ -}; - -/** - * Internal configuration (per-lcore) - */ -extern struct lcore_config lcore_config[RTE_MAX_LCORE]; - RTE_DECLARE_PER_LCORE(unsigned, _lcore_id); /**< Per thread "lcore id". */ RTE_DECLARE_PER_LCORE(rte_cpuset_t, _cpuset); /**< Per thread "cpuset". */ diff --git a/lib/librte_eal/common/rte_service.c b/lib/librte_eal/common/rte_service.c index 5f75e5a53fbf..8d53d966446a 100644 --- a/lib/librte_eal/common/rte_service.c +++ b/lib/librte_eal/common/rte_service.c @@ -21,6 +21,8 @@ #include #include +#include "eal_private.h" + #define RTE_SERVICE_NUM_MAX 64 #define SERVICE_F_REGISTERED (1 << 0) diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map index f6688327cad3..2f175f58ed42 100644 --- a/lib/librte_eal/rte_eal_version.map +++ b/lib/librte_eal/rte_eal_version.map @@ -4,7 +4,6 @@ DPDK_2.0 { __rte_panic; eal_parse_sysfs_value; eal_timer_source; - lcore_config; per_lcore__lcore_id; per_lcore__rte_errno; rte_calloc;