Thread (76 messages) 76 messages, 9 authors, 2020-10-13

Re: [dpdk-dev] [PATCH v1 1/2] eal/x86: add WC store function

From: Ananyev, Konstantin <hidden>
Date: 2020-06-15 11:11:35

Hi Radu,
Add rte_write32_wc function that implements a WC store
using movdiri instruction.
Probably worth to add 1-2 lines of text
explaining what are the advantages (perf improvement or whatever). 
quoted hunk ↗ jump to hunk
Signed-off-by: Radu Nicolau <redacted>
---
 lib/librte_eal/x86/include/rte_io.h | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)
diff --git a/lib/librte_eal/x86/include/rte_io.h b/lib/librte_eal/x86/include/rte_io.h
index 2db71b1..3d74bec 100644
--- a/lib/librte_eal/x86/include/rte_io.h
+++ b/lib/librte_eal/x86/include/rte_io.h
@@ -11,6 +11,26 @@ extern "C" {

 #include "generic/rte_io.h"

+/**
+ * Write a 32-bit value to I/O device memory address *addr*.
+ * Uses MOVDIRI instruction to perform a direct-store operation using WC
+ * memory write protocol.
+ *
+ * @param value
+ *  Value to write
+ * @param addr
+ *  I/O memory address to write the value to
+ */
+static __rte_always_inline void
+rte_write32_wc(uint32_t value, volatile void *addr)
+{
+	asm volatile("sfence\n\t"
Why not rte_wmb()?
+		/* MOVDIRI */
+		".byte 0x40, 0x0f, 0x38, 0xf9, 0x02"
+		:
+		: "a" (value), "d" (addr));
+}
+
 #ifdef __cplusplus
 }
 #endif
--
2.7.4
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help