From patchwork Tue Mar 17 01:17:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Phil Yang X-Patchwork-Id: 184604 Delivered-To: patch@linaro.org Received: by 2002:a92:1f12:0:0:0:0:0 with SMTP id i18csp3500786ile; Mon, 16 Mar 2020 18:19:55 -0700 (PDT) X-Google-Smtp-Source: ADFU+vvy7MQ6bhQLe7ZntpKIewJwuK0wudMqnjybwxAXCOuZTi4YBQwcgHgytuEgbOVcA2f7nWGr X-Received: by 2002:a05:600c:2105:: with SMTP id u5mr1817493wml.163.1584407995690; Mon, 16 Mar 2020 18:19:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1584407995; cv=none; d=google.com; s=arc-20160816; b=Yy4QqAwmdLbUFP9Y8sJ9sJKgxYmlTfIT2hlJvsdl4BgOKO2MjTk9lPAkeX0RmcJyfS tNwln7uZkiLw4x6ILyhmShFjRmf/WcNxVDXHTJENlJ4dEeFOcaCTsXdR7JVKs8W5oHU8 h39R4V4bq+9dC0BQ1h/SLSRT+CklypAXEkHmIA+zLWh6xYr7e6le/l2dvHkx7mGoSktj xkmnoIJUP9sSpbrOmyIObSl4noHNtLq1KO3OaFCpscQVEo2kmc08BF7WA/o2c4Bc0beu QIT3sw7apYEdbdZKlQQtrGvA6jAXhGjscZI153yg3lR5ae9tFYquQGlqg5VJyoc3ArOE l9Dg== 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=Ir3CD2MMynwSUbFf2m0Aya+rdH0xcmMe4Bb04YjI0YQ=; b=DcQdUqzibmZgOKDVgMy0Q01fch/OccBZ1Hdhs3IkuB48HU2mAMk92Y9/GDlB3diryZ B+HYT6shPXFMtyU6TnvjBbtWDY+VV7OgeA0uz4m9VGqsfWJ6UbUaQ6vULplZFFuHG4es NVkXYszv4bNg+AVxmXPL/ec5I3rga8oG82Es6Z/wdMgtsOM0trxzSDcoEHHA17TEUGB2 7AiLDp7kPRvQIXT33q/M1hX5mbNu8EWxsR83Gx6LBOXRF5HKlxG3hNuYCKUaqTMiuXWE iFqTXjMWLb2J+7V82fKLaDT1HftiKC029ZeptPkgQhjBmA+Jn25rAHPbb2GOpcehBeQ/ 8UxA== 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 m16si1042309wmi.143.2020.03.16.18.19.55; Mon, 16 Mar 2020 18:19:55 -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 009101C10F; Tue, 17 Mar 2020 02:19:05 +0100 (CET) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id E71F91C0C9; Tue, 17 Mar 2020 02:19:03 +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 712451FB; Mon, 16 Mar 2020 18:19:03 -0700 (PDT) Received: from phil-VirtualBox.shanghai.arm.com (phil-VirtualBox.shanghai.arm.com [10.169.108.137]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 42CF83F52E; Mon, 16 Mar 2020 18:18:59 -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: Tue, 17 Mar 2020 09:17:40 +0800 Message-Id: <1584407863-774-10-git-send-email-phil.yang@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1584407863-774-1-git-send-email-phil.yang@arm.com> References: <1583999071-22872-1-git-send-email-phil.yang@arm.com> <1584407863-774-1-git-send-email-phil.yang@arm.com> Subject: [dpdk-dev] [PATCH v3 09/12] 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 557b5a9..32a2f8a 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; @@ -370,12 +374,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;