From patchwork Thu Apr 23 16:31:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Phil Yang X-Patchwork-Id: 185726 Delivered-To: patch@linaro.org Received: by 2002:a92:3d9a:0:0:0:0:0 with SMTP id k26csp2256189ilf; Thu, 23 Apr 2020 09:32:10 -0700 (PDT) X-Google-Smtp-Source: APiQypJ2CEo3HWVDaV/+ZD99GlFmRfY8jH5p7V0TV/9gFMeMxYupjrjXvZCiUEqLXlgRFAcHxx55 X-Received: by 2002:a17:907:a89:: with SMTP id by9mr3232625ejc.289.1587659530767; Thu, 23 Apr 2020 09:32:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587659530; cv=none; d=google.com; s=arc-20160816; b=O41RTVphTwWRvaS6llCZvx1gBIFgFdNe/1nExzD0q2js/kJdNg44tDYWhaGT4A5mkJ HlLCdK/To8h/bcEGu15GxqrU35VaTITlrQ82pQ7mml9WPNvcMhY3OQCCe+LgvOak8e/K 5nhG9MSiwoLfpQ2ruEEga7YLTBGWcqgc99Hn0fN2mUTWGl+AgdPNbZl8gwrYRBXN03Vw KrT98VibyU+w60oObxStuqWbJ+QiYDLy5m2GGyXGx+3JB3UzghNvUz8RYsdwPZijr8Cc c5zpZOa/B0LQEx7py7RvZ4AKM5+QOtIMnKMIl2R3ZxVQ0IKKsueurEm64ZjL4Kxw5z7c XzhA== 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=WkPtePAVAXarcZKboZCqxgnfN+MrlkCxUbIGhEXcwqU=; b=sE/6PmLRcgmodnO4O3A+GzDQtaJyyHymnJK3E1O2TREDrWQDex9A64FiFSBQ4VKGZK MHYaGoW6+ZSsvKhuJvap2dxmsLSdH/UZikajarSeUm76DStthwG7D1CazZGQ1huvlQFO wEVWoIbR1oKB9+fSrRYJubRewZaD6Gp4L+fAnxolxjitolhk3QWleoadIycWoHru2qIT 5HWkopRLUGRoel4if3dutttvOCiM93h8ftWRY1HrkKKoOT5u9sWnEqdTAyOOBKoY1TAc lRj3qzHRvrsmEHYUHTNgdMuYeQOafStiFa/v4IY3U44ZRaeM1bnp05ndfW8TqtFmt9RL aGGA== 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 e5si1538122edc.160.2020.04.23.09.32.10; Thu, 23 Apr 2020 09:32:10 -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 35EE71D161; Thu, 23 Apr 2020 18:32:01 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id 84B211D152; Thu, 23 Apr 2020 18:31:59 +0200 (CEST) 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 0E67730E; Thu, 23 Apr 2020 09:31:59 -0700 (PDT) Received: from phil-VirtualBox.arm.com (A010647.Arm.com [10.170.243.60]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id E1BD33F68F; Thu, 23 Apr 2020 09:31:55 -0700 (PDT) From: Phil Yang To: harry.van.haaren@intel.com, dev@dpdk.org Cc: thomas@monjalon.net, david.marchand@redhat.com, konstantin.ananyev@intel.com, jerinj@marvell.com, hemant.agrawal@nxp.com, Honnappa.Nagarahalli@arm.com, gavin.hu@arm.com, nd@arm.com, Honnappa Nagarahalli , stable@dpdk.org Date: Fri, 24 Apr 2020 00:31:17 +0800 Message-Id: <1587659482-27133-2-git-send-email-phil.yang@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1587659482-27133-1-git-send-email-phil.yang@arm.com> References: <1584407863-774-8-git-send-email-phil.yang@arm.com> <1587659482-27133-1-git-send-email-phil.yang@arm.com> Subject: [dpdk-dev] [PATCH v2 1/6] service: fix 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 The 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 --- 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 70d17a5..b8c465e 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;