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 74432A2EDB for ; Fri, 6 Sep 2019 08:38:06 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 43ED21F131; Fri, 6 Sep 2019 08:38:06 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by dpdk.org (Postfix) with ESMTP id D5ACD1F11A; Fri, 6 Sep 2019 08:38:02 +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 12D0A28; Thu, 5 Sep 2019 23:38:02 -0700 (PDT) Received: from net-arm-thunderx2-01.test.ast.arm.com (net-arm-thunderx2-01.shanghai.arm.com [10.169.40.40]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 8E52E3F67D; Thu, 5 Sep 2019 23:40:25 -0700 (PDT) From: Gavin Hu To: dev@dpdk.org Cc: nd@arm.com, thomas@monjalon.net, jit.khaparde@broadcom.com, somnath.kotur@broadcom.com, Honnappa.Nagarahalli@arm.com, stable@dpdk.org Date: Fri, 6 Sep 2019 14:37:53 +0800 Message-Id: <1567751873-15964-1-git-send-email-gavin.hu@arm.com> X-Mailer: git-send-email 2.7.4 Subject: [dpdk-stable] [PATCH] net/bnxt: fix memory barriers 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" As there is an inclusive rte_io_wmb within the following rte_write32() API who rings the doorbell, this makes the above rte_wmb unecessary and remove it. The doorbell ringing operation requires a rte_io_wmb immediately to make it complete and visible to the device. To read the doorbell response, which is held in the host CIO memory, rte_cio_rmb is sufficient. Fixes: 804e746c7b73 ("net/bnxt: add hardware resource manager init code") Fixes: ca241d9a0952 ("net/bnxt: use I/O device memory read/write API") Cc: stable@dpdk.org Signed-off-by: Gavin Hu Reviewed-by: Steve Capper Reviewed-by: Ruifeng Wang Reviewed-by: Phil Yang --- drivers/net/bnxt/bnxt_hwrm.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 9883fb5..ee07db9 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -115,9 +115,6 @@ static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg, data = (uint32_t *)&short_input; msg_len = sizeof(short_input); - /* Sync memory write before updating doorbell */ - rte_wmb(); - max_req_len = BNXT_HWRM_SHORT_REQ_LEN; } @@ -137,11 +134,12 @@ static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg, /* Ring channel doorbell */ bar = (uint8_t *)bp->bar0 + mb_trigger_offset; rte_write32(1, bar); + rte_io_wmb(); /* Poll for the valid bit */ for (i = 0; i < HWRM_CMD_TIMEOUT; i++) { /* Sanity check on the resp->resp_len */ - rte_rmb(); + rte_cio_rmb(); if (resp->resp_len && resp->resp_len <= bp->max_resp_len) { /* Last byte of resp contains the valid key */ valid = (uint8_t *)resp + resp->resp_len - 1; -- 2.7.4