From: okaya@codeaurora.org (Sinan Kaya)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 3/6] RDMA/i40iw: Eliminate duplicate barriers on weakly-ordered archs
Date: Mon, 19 Mar 2018 22:47:45 -0400 [thread overview]
Message-ID: <1521514068-8856-4-git-send-email-okaya@codeaurora.org> (raw)
In-Reply-To: <1521514068-8856-1-git-send-email-okaya@codeaurora.org>
Code includes wmb() followed by writel(). writel() already has a barrier on
some architectures like arm64.
This ends up CPU observing two barriers back to back before executing the
register write.
Create a new wrapper function with relaxed write operator. Use the new
wrapper when a write is following a wmb().
Since code already has an explicit barrier call, changing writel() to
writel_relaxed().
Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
drivers/infiniband/hw/i40iw/i40iw_ctrl.c | 6 ++++--
drivers/infiniband/hw/i40iw/i40iw_osdep.h | 1 +
drivers/infiniband/hw/i40iw/i40iw_uk.c | 2 +-
drivers/infiniband/hw/i40iw/i40iw_utils.c | 11 +++++++++++
4 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/drivers/infiniband/hw/i40iw/i40iw_ctrl.c b/drivers/infiniband/hw/i40iw/i40iw_ctrl.c
index c74fd33..47f473e 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_ctrl.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_ctrl.c
@@ -706,9 +706,11 @@ static void i40iw_sc_ccq_arm(struct i40iw_sc_cq *ccq)
wmb(); /* make sure shadow area is updated before arming */
if (ccq->dev->is_pf)
- i40iw_wr32(ccq->dev->hw, I40E_PFPE_CQARM, ccq->cq_uk.cq_id);
+ i40iw_wr32_relaxed(ccq->dev->hw, I40E_PFPE_CQARM,
+ ccq->cq_uk.cq_id);
else
- i40iw_wr32(ccq->dev->hw, I40E_VFPE_CQARM1, ccq->cq_uk.cq_id);
+ i40iw_wr32_relaxed(ccq->dev->hw, I40E_VFPE_CQARM1,
+ ccq->cq_uk.cq_id);
}
/**
diff --git a/drivers/infiniband/hw/i40iw/i40iw_osdep.h b/drivers/infiniband/hw/i40iw/i40iw_osdep.h
index f27be3e..e06f4b9 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_osdep.h
+++ b/drivers/infiniband/hw/i40iw/i40iw_osdep.h
@@ -213,5 +213,6 @@ void i40iw_hw_stats_start_timer(struct i40iw_sc_vsi *vsi);
void i40iw_hw_stats_stop_timer(struct i40iw_sc_vsi *vsi);
#define i40iw_mmiowb() mmiowb()
void i40iw_wr32(struct i40iw_hw *hw, u32 reg, u32 value);
+void i40iw_wr32_relaxed(struct i40iw_hw *hw, u32 reg, u32 value);
u32 i40iw_rd32(struct i40iw_hw *hw, u32 reg);
#endif /* _I40IW_OSDEP_H_ */
diff --git a/drivers/infiniband/hw/i40iw/i40iw_uk.c b/drivers/infiniband/hw/i40iw/i40iw_uk.c
index 8afa5a6..7f0ebed 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_uk.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_uk.c
@@ -723,7 +723,7 @@ static void i40iw_cq_request_notification(struct i40iw_cq_uk *cq,
wmb(); /* make sure WQE is populated before valid bit is set */
- writel(cq->cq_id, cq->cqe_alloc_reg);
+ writel_relaxed(cq->cq_id, cq->cqe_alloc_reg);
}
/**
diff --git a/drivers/infiniband/hw/i40iw/i40iw_utils.c b/drivers/infiniband/hw/i40iw/i40iw_utils.c
index ddc1056..99aa6f8 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_utils.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_utils.c
@@ -125,6 +125,17 @@ inline void i40iw_wr32(struct i40iw_hw *hw, u32 reg, u32 value)
}
/**
+ * i40iw_wr32_relaxed - write 32 bits to hw register without ordering
+ * @hw: hardware information including registers
+ * @reg: register offset
+ * @value: vvalue to write to register
+ */
+inline void i40iw_wr32_relaxed(struct i40iw_hw *hw, u32 reg, u32 value)
+{
+ writel_relaxed(value, hw->hw_addr + reg);
+}
+
+/**
* i40iw_rd32 - read a 32 bit hw register
* @hw: hardware information including registers
* @reg: register offset
--
2.7.4
next prev parent reply other threads:[~2018-03-20 2:47 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-20 2:47 [PATCH v4 0/6] ib: Eliminate duplicate barriers on weakly-ordered archs Sinan Kaya
2018-03-20 2:47 ` [PATCH v4 1/6] RDMA/bnxt_re: " Sinan Kaya
2018-03-20 14:48 ` Jason Gunthorpe
2018-03-20 15:00 ` Sinan Kaya
2018-03-20 15:08 ` Sinan Kaya
2018-03-20 15:23 ` Jason Gunthorpe
2018-03-20 15:20 ` Jason Gunthorpe
2018-03-20 15:30 ` Sinan Kaya
2018-03-20 16:02 ` Jason Gunthorpe
2018-03-20 2:47 ` [PATCH v4 2/6] IB/mlx4: " Sinan Kaya
2018-03-20 14:48 ` Jason Gunthorpe
2018-03-20 2:47 ` Sinan Kaya [this message]
2018-03-20 14:56 ` [PATCH v4 3/6] RDMA/i40iw: " Jason Gunthorpe
2018-03-21 13:38 ` Shiraz Saleem
2018-03-21 20:02 ` Jason Gunthorpe
2018-03-21 21:01 ` Sinan Kaya
2018-03-20 2:47 ` [PATCH v4 4/6] infiniband: cxgb4: " Sinan Kaya
2018-03-20 14:51 ` Jason Gunthorpe
2018-03-20 15:10 ` Steve Wise
2018-03-20 15:38 ` Steve Wise
2018-03-22 6:44 ` kbuild test robot
2018-03-22 12:24 ` okaya at codeaurora.org
2018-03-22 12:48 ` okaya at codeaurora.org
2018-03-22 14:33 ` Sinan Kaya
2018-03-22 14:40 ` Steve Wise
2018-03-22 14:52 ` Sinan Kaya
2018-03-22 16:28 ` Steve Wise
2018-03-22 19:44 ` Casey Leedom
2018-03-22 20:16 ` Jason Gunthorpe
2018-03-22 20:45 ` Casey Leedom
2018-03-22 21:25 ` Jason Gunthorpe
2018-03-22 21:27 ` Sinan Kaya
2018-03-22 22:02 ` Casey Leedom
[not found] ` <437ab002-b8db-24aa-583e-0e61d61aaa97@codeaurora.org>
2018-03-22 18:46 ` Jason Gunthorpe
2018-03-22 18:48 ` Jason Gunthorpe
2018-03-22 18:58 ` Sinan Kaya
2018-03-23 4:14 ` kbuild test robot
2018-03-20 2:47 ` [PATCH v4 5/6] IB/nes: " Sinan Kaya
2018-03-20 14:54 ` Jason Gunthorpe
2018-03-20 15:23 ` Sinan Kaya
2018-03-20 16:01 ` Jason Gunthorpe
2018-03-20 16:08 ` Sinan Kaya
2018-03-20 16:29 ` Jason Gunthorpe
2018-03-20 2:47 ` [PATCH v4 6/6] RDMA/qedr: eliminate duplicate barriers on weakly-ordered archs #2 Sinan Kaya
2018-03-20 7:38 ` Kalderon, Michal
2018-03-20 14:55 ` Jason Gunthorpe
2018-03-21 20:08 ` [PATCH v4 0/6] ib: Eliminate duplicate barriers on weakly-ordered archs Jason Gunthorpe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1521514068-8856-4-git-send-email-okaya@codeaurora.org \
--to=okaya@codeaurora.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).