DPDK patches and discussions
 help / color / mirror / Atom feed
From: Andrew Rybchenko <arybchenko@solarflare.com>
To: <dev@dpdk.org>
Cc: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Subject: [dpdk-dev] [PATCH 1/2] net/sfc: use eal I/O device memory read/write API
Date: Fri, 20 Jan 2017 13:53:50 +0000	[thread overview]
Message-ID: <1484920431-5770-1-git-send-email-arybchenko@solarflare.com> (raw)

Use relaxed version of these functions to guarantee no changes on
the step.

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
Due to late stage when the API appears and small time for testing,
I prefer conservative way: use relaxed version right now and
cleanup neighbour rte_*mb() calls later with switching to non-relaxed
versions.

 drivers/net/sfc/efsys.h | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/net/sfc/efsys.h b/drivers/net/sfc/efsys.h
index fb2f3b5..a024b6c 100644
--- a/drivers/net/sfc/efsys.h
+++ b/drivers/net/sfc/efsys.h
@@ -43,6 +43,7 @@
 #include <rte_common.h>
 #include <rte_malloc.h>
 #include <rte_log.h>
+#include <rte_io.h>
 
 #include "sfc_debug.h"
 
@@ -440,7 +441,7 @@
 									\
 		_addr = (volatile uint32_t *)(_base + (_offset));	\
 		rte_rmb();						\
-		(_edp)->ed_u32[0] = _addr[0];				\
+		(_edp)->ed_u32[0] = rte_read32_relaxed(_addr);		\
 									\
 		EFSYS_PROBE2(bar_readd, unsigned int, (_offset),	\
 					 uint32_t, (_edp)->ed_u32[0]);	\
@@ -463,7 +464,7 @@
 									\
 		_addr = (volatile uint64_t *)(_base + (_offset));	\
 		rte_rmb();						\
-		(_eqp)->eq_u64[0] = _addr[0];				\
+		(_eqp)->eq_u64[0] = rte_read64_relaxed(_addr);		\
 									\
 		EFSYS_PROBE3(bar_readq, unsigned int, (_offset),	\
 					 uint32_t, (_eqp)->eq_u32[1],	\
@@ -487,6 +488,7 @@
 									\
 		_addr = (volatile __m128i *)(_base + (_offset));	\
 		rte_rmb();						\
+		/* There is no rte_read128_relaxed() yet */		\
 		(_eop)->eo_u128[0] = _addr[0];				\
 									\
 		EFSYS_PROBE5(bar_reado, unsigned int, (_offset),	\
@@ -518,7 +520,7 @@
 					 uint32_t, (_edp)->ed_u32[0]);	\
 									\
 		_addr = (volatile uint32_t *)(_base + (_offset));	\
-		_addr[0] = (_edp)->ed_u32[0];				\
+		rte_write32_relaxed((_edp)->ed_u32[0], _addr);		\
 		rte_wmb();						\
 									\
 		_NOTE(CONSTANTCONDITION);				\
@@ -542,7 +544,7 @@
 					 uint32_t, (_eqp)->eq_u32[0]);	\
 									\
 		_addr = (volatile uint64_t *)(_base + (_offset));	\
-		_addr[0] = (_eqp)->eq_u64[0];				\
+		rte_write64_relaxed((_eqp)->eq_u64[0], _addr);		\
 		rte_wmb();						\
 									\
 		SFC_BAR_UNLOCK(_esbp);					\
@@ -580,6 +582,7 @@
 					 uint32_t, (_eop)->eo_u32[0]);	\
 									\
 		_addr = (volatile __m128i *)(_base + (_offset));	\
+		/* There is no rte_write128_relaxed() yet */		\
 		_addr[0] = (_eop)->eo_u128[0];				\
 		rte_wmb();						\
 									\
-- 
1.8.2.3

             reply	other threads:[~2017-01-20 13:54 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-20 13:53 Andrew Rybchenko [this message]
2017-01-20 13:53 ` [dpdk-dev] [PATCH 2/2] net/sfc: use eal I/O device memory barriers API Andrew Rybchenko
2017-01-23 10:02 ` [dpdk-dev] [PATCH 1/2] net/sfc: use eal I/O device memory read/write API Ferruh Yigit

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=1484920431-5770-1-git-send-email-arybchenko@solarflare.com \
    --to=arybchenko@solarflare.com \
    --cc=dev@dpdk.org \
    --cc=jerin.jacob@caviumnetworks.com \
    /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).