Module Name: src
Committed By: riastradh
Date: Sat Apr 9 12:49:37 UTC 2022
Modified Files:
src/sys/external/bsd/ena-com: ena_plat.h
Log Message:
ena: Fix rmb/wmb/mb to match Linux on x86 and aarch64.
This is not right but it's not worse than it was before.
To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/ena-com/ena_plat.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/ena-com/ena_plat.h
diff -u src/sys/external/bsd/ena-com/ena_plat.h:1.7 src/sys/external/bsd/ena-com/ena_plat.h:1.8
--- src/sys/external/bsd/ena-com/ena_plat.h:1.7 Mon Jul 19 21:16:33 2021
+++ src/sys/external/bsd/ena-com/ena_plat.h Sat Apr 9 12:49:36 2022
@@ -38,7 +38,7 @@
#if 0
__FBSDID("$FreeBSD: head/sys/contrib/ena-com/ena_plat.h 333453 2018-05-10 09:25:51Z mw $");
#endif
-__KERNEL_RCSID(0, "$NetBSD: ena_plat.h,v 1.7 2021/07/19 21:16:33 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ena_plat.h,v 1.8 2022/04/09 12:49:36 riastradh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -378,8 +378,23 @@ void prefetch(void *x)
#include "ena_defs/ena_includes.h"
+/*
+ * XXX This is not really right. Need to adjust the driver to use
+ * bus_space_barrier or bus_dmamap_sync.
+ */
+#if defined(__i386__) || defined(__x86_64__)
+#include <x86/cpufunc.h>
+#define rmb() x86_lfence()
+#define wmb() x86_sfence()
+#define mb() x86_mfence()
+#elif defined(__aarch64__)
+#define rmb() __asm __volatile("dsb ld" ::: "memory")
+#define wmb() __asm __volatile("dsb st" ::: "memory")
+#define mb() __asm __volatile("dsb sy" ::: "memory")
+#else
#define rmb() membar_enter()
#define wmb() membar_exit()
#define mb() membar_sync()
+#endif
#endif /* ENA_PLAT_H_ */