From patchwork Thu Mar 12 07:44:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Phil Yang X-Patchwork-Id: 184433 Delivered-To: patch@linaro.org Received: by 2002:a92:1f12:0:0:0:0:0 with SMTP id i18csp232024ile; Thu, 12 Mar 2020 00:46:58 -0700 (PDT) X-Google-Smtp-Source: ADFU+vsjgR3+xL75whVD5x1+CHFyXyoCAXt6cSrxYXd9ftXZ6DGR1CgN7cOw9xXexj+V+bvf2xBc X-Received: by 2002:a05:6402:2290:: with SMTP id cw16mr6111566edb.75.1583999218466; Thu, 12 Mar 2020 00:46:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583999218; cv=none; d=google.com; s=arc-20160816; b=LlUFiaT5u8oTNFAb98wL3mtQaVTScah97b5HYidYWqlOWJMZufAjNmzQVHSqPdzfYj 053cL7+GUYOj+RWwYBuEyJeZt0bc8ESMOV5sS2HCBeqlZkUhFpkd2e7PPjT7Hr4GDesp UK/pzvWPkCuO1puza25UseR1edp9MvchEE9NXbQOrYawDH/Erq/ZnV9xhtwENY+RN0zZ ziDZiowG06talNKeifrLfBkP2RG7ZJJ4ChKicNBm0/AaDWzsGwuhwRcBU1mjnyDr+XiV 9Oaq0xYdekpicGWL8NvbwSepz2wxzuIGzUx+9jA1N36mY0yWYy3hQ1UKbdBKXBGY2XN3 LvQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:cc:to:from; bh=afOexwouZwh/k6jwnmZHOO/4VzlfSmiFNPJFKetqvOM=; b=1FoJ0Bu43+ZdomKlTzYc7Huf4Iv0LI2BbKIg55sm7mYHwo5TgIgbD6CmJN0oyzH0aP vWVGA0fDvAk+eDXOHIwyc6em8GE+rnicJS3ZoN8RTLyPtcsPMVYQld483mDPWY6oIDML xgbNbSQs0uzFPyep9DE2ZOUoGju5/7kOWy1MJTyldraeZdfVKHE3QzJpC9QrLuNqwlPk uzSAOZqfg4ViCImiZ/YV1VkC6BK4Zz3zm7NOB9wEbbsX7upQ0dAHs9t9WXaXkuuvbwoq Al4PbPHgP8zIrAFIerE/FGidnPB5E7SwLeBeISOQdVXkn3Z+cxddY/miCjgH4DCM3uxO Qfkg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of dev-bounces@dpdk.org designates 92.243.14.124 as permitted sender) smtp.mailfrom=dev-bounces@dpdk.org Return-Path: Received: from dpdk.org (dpdk.org. [92.243.14.124]) by mx.google.com with ESMTP id b18si2996214edx.60.2020.03.12.00.46.58; Thu, 12 Mar 2020 00:46:58 -0700 (PDT) Received-SPF: pass (google.com: domain of dev-bounces@dpdk.org designates 92.243.14.124 as permitted sender) client-ip=92.243.14.124; Authentication-Results: mx.google.com; spf=pass (google.com: domain of dev-bounces@dpdk.org designates 92.243.14.124 as permitted sender) smtp.mailfrom=dev-bounces@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1F81F1C065; Thu, 12 Mar 2020 08:45:59 +0100 (CET) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id 146721C05C; Thu, 12 Mar 2020 08:45:58 +0100 (CET) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9344E30E; Thu, 12 Mar 2020 00:45:57 -0700 (PDT) Received: from phil-VirtualBox.shanghai.arm.com (phil-VirtualBox.shanghai.arm.com [10.169.109.150]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 1C68F3F534; Thu, 12 Mar 2020 00:45:52 -0700 (PDT) From: Phil Yang To: thomas@monjalon.net, harry.van.haaren@intel.com, konstantin.ananyev@intel.com, stephen@networkplumber.org, maxime.coquelin@redhat.com, dev@dpdk.org Cc: david.marchand@redhat.com, jerinj@marvell.com, hemant.agrawal@nxp.com, Honnappa.Nagarahalli@arm.com, gavin.hu@arm.com, ruifeng.wang@arm.com, joyce.kong@arm.com, nd@arm.com, Honnappa Nagarahalli , stable@dpdk.org Date: Thu, 12 Mar 2020 15:44:28 +0800 Message-Id: <1583999071-22872-8-git-send-email-phil.yang@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1583999071-22872-1-git-send-email-phil.yang@arm.com> References: <1583862551-2049-1-git-send-email-phil.yang@arm.com> <1583999071-22872-1-git-send-email-phil.yang@arm.com> Subject: [dpdk-dev] [PATCH v2 07/10] service: avoid race condition for MT unsafe service 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" From: Honnappa Nagarahalli There has possible that a MT unsafe service might get configured to run on another core while the service is running currently. This might result in the MT unsafe service running on multiple cores simultaneously. Use 'execute_lock' always when the service is MT unsafe. Fixes: e9139a32f6e8 ("service: add function to run on app lcore") Cc: stable@dpdk.org Signed-off-by: Honnappa Nagarahalli Reviewed-by: Phil Yang Reviewed-by: Gavin Hu --- lib/librte_eal/common/rte_service.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) -- 2.7.4 diff --git a/lib/librte_eal/common/rte_service.c b/lib/librte_eal/common/rte_service.c index 6990dc2..b37fc56 100644 --- a/lib/librte_eal/common/rte_service.c +++ b/lib/librte_eal/common/rte_service.c @@ -50,6 +50,10 @@ struct rte_service_spec_impl { uint8_t internal_flags; /* per service statistics */ + /* Indicates how many cores the service is mapped to run on. + * It does not indicate the number of cores the service is running + * on currently. + */ rte_atomic32_t num_mapped_cores; uint64_t calls; uint64_t cycles_spent; @@ -367,12 +371,7 @@ service_run(uint32_t i, struct core_state *cs, uint64_t service_mask, cs->service_active_on_lcore[i] = 1; - /* check do we need cmpset, if MT safe or <= 1 core - * mapped, atomic ops are not required. - */ - const int use_atomics = (service_mt_safe(s) == 0) && - (rte_atomic32_read(&s->num_mapped_cores) > 1); - if (use_atomics) { + if (service_mt_safe(s) == 0) { if (!rte_atomic32_cmpset((uint32_t *)&s->execute_lock, 0, 1)) return -EBUSY;