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 D0610A04DD for ; Wed, 28 Oct 2020 11:48:29 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C4E73CA0C; Wed, 28 Oct 2020 11:48:28 +0100 (CET) Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) by dpdk.org (Postfix) with ESMTP id 06C48C9FE for ; Wed, 28 Oct 2020 11:48:26 +0100 (CET) Received: by mail-wm1-f45.google.com with SMTP id k18so4293396wmj.5 for ; Wed, 28 Oct 2020 03:48:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+LVuegtF6OH1u8iScEABRXkArVRvVs3V6422X+yAau0=; b=Q89s7jkKNfiAWCflnB3jGiQSVPXK9AK63vwt9bB8IBrnrK4kmHydrDIqDlDCDDR3Al y8Cytmeejs5O+MgvOSXricDIv6SaD/mnM2RDI45qkRo77dLf74Rke8cMJlDF2hIvkK38 uGt3Y/mx4on5MPOPMT7+PI1VQEI1pzctIOwckVNGz7yPKyKpTZl5m8E36rlNzAhkE3Rl 5XiHJd/8DKQHkR6xVODGPztcDl//QfmmwcBRQNzDOVbHvjFLeZRlin/B9P9UVC0xO4DQ 4eRX0wJfPU66ng81FGcceo5gu0sn67zWoIdI08ymX5QADoLtkESiQYQ1b8YFk33HcubZ EJaQ== 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:mime-version:content-transfer-encoding; bh=+LVuegtF6OH1u8iScEABRXkArVRvVs3V6422X+yAau0=; b=fr1Iu5DEhT9yJ3OWvFRNSCwzi+REdupb+B9gvDPcEyk4UBymq+KAEl6ZdF1GwwRUFq kc3YroJHcmJyuI+7uF2jpAlc8afOYAGPGMDeFOHae/2qm+AxIOoaOWG40saIBwOrjEkJ cfaKf+OghT9k+XoY4f96YBDKHGjPNwqfG7/wmA8YZZXnn6mYAkT75p+ciGHIlYItu2pa 6W5mX1T53M9AxLSzAdkRJvoOke473IfkUCGR4P3QrqpwoktQLcXyD+KM+2SAy0FWml9q Ii/jvBJb4G01l1qHFnE3fGFhrc0K9lVbQu9Ob4bgel6rAk9WDzJqKd0N+OmUAHdVMgRz YKvg== X-Gm-Message-State: AOAM5324dyrNh9E1CgS9yL2gydY+o1Q1xtSwIODuDQPGG+Zm3JQ6f890 0YlRB57oALgkGQIgzxtgMvo= X-Google-Smtp-Source: ABdhPJxBDS0K6X+TkXJ7YkGzT4oz9cIdTZRd5ApgxbfgZnIJ/I7F8wTKrTnaD1FPNhojG+9hc+ffHg== X-Received: by 2002:a7b:c349:: with SMTP id l9mr7454583wmj.148.1603882105730; Wed, 28 Oct 2020 03:48:25 -0700 (PDT) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id f13sm6344824wrp.12.2020.10.28.03.48.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Oct 2020 03:48:25 -0700 (PDT) From: luca.boccassi@gmail.com To: Somnath Kotur Cc: Sriharsha Basavapatna , Kalesh AP , Ajit Khaparde , dpdk stable Date: Wed, 28 Oct 2020 10:43:24 +0000 Message-Id: <20201028104606.3504127-45-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201028104606.3504127-1-luca.boccassi@gmail.com> References: <20201028104606.3504127-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/bnxt: add separate mutex for FW health check' has been queued to stable release 19.11.6 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to stable release 19.11.6 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 10/30/20. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Thanks. Luca Boccassi --- >From beb74f5be42aaa494ea6b278091b028043931f69 Mon Sep 17 00:00:00 2001 From: Somnath Kotur Date: Thu, 10 Sep 2020 18:56:03 -0700 Subject: [PATCH] net/bnxt: add separate mutex for FW health check [ upstream commit 2993075dc253484ba3c87996981f32468aa86cbd ] def_cp_lock was added to sync race between dev_configure and int_handler. It should not be used to synchronize scheduling of FW health check between dev_start and async event handler as well, use a separate mutex for the same. Fixes: a73b8e939f10 ("net/bnxt: fix race between start and interrupt handler") Signed-off-by: Somnath Kotur Reviewed-by: Sriharsha Basavapatna Reviewed-by: Kalesh AP Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/bnxt.h | 1 + drivers/net/bnxt/bnxt_ethdev.c | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index 46cf418647..cdb3e2d3ff 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -593,6 +593,7 @@ struct bnxt { rte_iova_t hwrm_short_cmd_req_dma_addr; rte_spinlock_t hwrm_lock; pthread_mutex_t def_cp_lock; + pthread_mutex_t health_check_lock; uint16_t max_req_len; uint16_t max_resp_len; uint16_t hwrm_max_ext_req_len; diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index fe240b6ccc..d6afd03e56 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -885,9 +885,8 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) eth_dev->rx_pkt_burst = bnxt_receive_function(eth_dev); eth_dev->tx_pkt_burst = bnxt_transmit_function(eth_dev); - pthread_mutex_lock(&bp->def_cp_lock); bnxt_schedule_fw_health_check(bp); - pthread_mutex_unlock(&bp->def_cp_lock); + return 0; error: @@ -4205,17 +4204,22 @@ void bnxt_schedule_fw_health_check(struct bnxt *bp) { uint32_t polling_freq; + pthread_mutex_lock(&bp->health_check_lock); + if (!bnxt_is_recovery_enabled(bp)) - return; + goto done; if (bp->flags & BNXT_FLAG_FW_HEALTH_CHECK_SCHEDULED) - return; + goto done; polling_freq = bp->recovery_info->driver_polling_freq; rte_eal_alarm_set(US_PER_MS * polling_freq, bnxt_check_fw_health, (void *)bp); bp->flags |= BNXT_FLAG_FW_HEALTH_CHECK_SCHEDULED; + +done: + pthread_mutex_unlock(&bp->health_check_lock); } static void bnxt_cancel_fw_health_check(struct bnxt *bp) @@ -4747,6 +4751,10 @@ bnxt_init_locks(struct bnxt *bp) err = pthread_mutex_init(&bp->def_cp_lock, NULL); if (err) PMD_DRV_LOG(ERR, "Unable to initialize def_cp_lock\n"); + + err = pthread_mutex_init(&bp->health_check_lock, NULL); + if (err) + PMD_DRV_LOG(ERR, "Unable to initialize health_check_lock\n"); return err; } @@ -4888,6 +4896,7 @@ bnxt_uninit_locks(struct bnxt *bp) { pthread_mutex_destroy(&bp->flow_lock); pthread_mutex_destroy(&bp->def_cp_lock); + pthread_mutex_destroy(&bp->health_check_lock); } static int -- 2.20.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-10-28 10:35:13.193181379 +0000 +++ 0045-net-bnxt-add-separate-mutex-for-FW-health-check.patch 2020-10-28 10:35:11.508830082 +0000 @@ -1,15 +1,16 @@ -From 2993075dc253484ba3c87996981f32468aa86cbd Mon Sep 17 00:00:00 2001 +From beb74f5be42aaa494ea6b278091b028043931f69 Mon Sep 17 00:00:00 2001 From: Somnath Kotur Date: Thu, 10 Sep 2020 18:56:03 -0700 Subject: [PATCH] net/bnxt: add separate mutex for FW health check +[ upstream commit 2993075dc253484ba3c87996981f32468aa86cbd ] + def_cp_lock was added to sync race between dev_configure and int_handler. It should not be used to synchronize scheduling of FW health check between dev_start and async event handler as well, use a separate mutex for the same. Fixes: a73b8e939f10 ("net/bnxt: fix race between start and interrupt handler") -Cc: stable@dpdk.org Signed-off-by: Somnath Kotur Reviewed-by: Sriharsha Basavapatna @@ -17,14 +18,14 @@ Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/bnxt.h | 1 + - drivers/net/bnxt/bnxt_ethdev.c | 16 ++++++++++++---- - 2 files changed, 13 insertions(+), 4 deletions(-) + drivers/net/bnxt/bnxt_ethdev.c | 17 +++++++++++++---- + 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h -index f0b0800151..bb265999d4 100644 +index 46cf418647..cdb3e2d3ff 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h -@@ -712,6 +712,7 @@ struct bnxt { +@@ -593,6 +593,7 @@ struct bnxt { rte_iova_t hwrm_short_cmd_req_dma_addr; rte_spinlock_t hwrm_lock; pthread_mutex_t def_cp_lock; @@ -33,20 +34,21 @@ uint16_t max_resp_len; uint16_t hwrm_max_ext_req_len; diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c -index 7c27e2435a..05e9a6abbf 100644 +index fe240b6ccc..d6afd03e56 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c -@@ -1252,9 +1252,7 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) +@@ -885,9 +885,8 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) eth_dev->rx_pkt_burst = bnxt_receive_function(eth_dev); eth_dev->tx_pkt_burst = bnxt_transmit_function(eth_dev); - pthread_mutex_lock(&bp->def_cp_lock); bnxt_schedule_fw_health_check(bp); - pthread_mutex_unlock(&bp->def_cp_lock); - ++ return 0; -@@ -4675,17 +4673,22 @@ void bnxt_schedule_fw_health_check(struct bnxt *bp) + error: +@@ -4205,17 +4204,22 @@ void bnxt_schedule_fw_health_check(struct bnxt *bp) { uint32_t polling_freq; @@ -71,7 +73,7 @@ } static void bnxt_cancel_fw_health_check(struct bnxt *bp) -@@ -5473,6 +5476,10 @@ bnxt_init_locks(struct bnxt *bp) +@@ -4747,6 +4751,10 @@ bnxt_init_locks(struct bnxt *bp) err = pthread_mutex_init(&bp->def_cp_lock, NULL); if (err) PMD_DRV_LOG(ERR, "Unable to initialize def_cp_lock\n"); @@ -82,14 +84,14 @@ return err; } -@@ -5884,6 +5891,7 @@ bnxt_uninit_locks(struct bnxt *bp) +@@ -4888,6 +4896,7 @@ bnxt_uninit_locks(struct bnxt *bp) { pthread_mutex_destroy(&bp->flow_lock); pthread_mutex_destroy(&bp->def_cp_lock); + pthread_mutex_destroy(&bp->health_check_lock); - if (bp->rep_info) { - pthread_mutex_destroy(&bp->rep_info->vfr_lock); - pthread_mutex_destroy(&bp->rep_info->vfr_start_lock); + } + + static int -- 2.20.1