DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 1/2] net/sfc: use eal I/O device memory read/write API
@ 2017-01-20 13:53 Andrew Rybchenko
  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
  0 siblings, 2 replies; 3+ messages in thread
From: Andrew Rybchenko @ 2017-01-20 13:53 UTC (permalink / raw)
  To: dev; +Cc: Jerin Jacob

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-01-23 10:02 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-20 13:53 [dpdk-dev] [PATCH 1/2] net/sfc: use eal I/O device memory read/write API Andrew Rybchenko
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

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).