Module Name: src
Committed By: riastradh
Date: Sat Feb 25 00:32:26 UTC 2023
Modified Files:
src/sys/arch/xen/include: hypervisor.h xenring.h
Log Message:
xen: Fix sense of xen_rmb/wmb to make sense.
Use membar_acquire and membar_release, not membar_consumer and
membar_producer, out of paranoia -- that better matches Linux's
rmb/wmb (at least for non-I/O loads and stores).
Proposed on port-xen:
https://mail-index.netbsd.org/port-xen/2022/07/13/msg010248.html
To generate a diff of this commit:
cvs rdiff -u -r1.55 -r1.56 src/sys/arch/xen/include/hypervisor.h
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/xen/include/xenring.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/arch/xen/include/hypervisor.h
diff -u src/sys/arch/xen/include/hypervisor.h:1.55 src/sys/arch/xen/include/hypervisor.h:1.56
--- src/sys/arch/xen/include/hypervisor.h:1.55 Wed Sep 7 00:40:19 2022
+++ src/sys/arch/xen/include/hypervisor.h Sat Feb 25 00:32:26 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: hypervisor.h,v 1.55 2022/09/07 00:40:19 knakahara Exp $ */
+/* $NetBSD: hypervisor.h,v 1.56 2023/02/25 00:32:26 riastradh Exp $ */
/*
* Copyright (c) 2006 Manuel Bouyer.
@@ -111,8 +111,8 @@ struct xen_npx_attach_args {
#undef xen_wmb
#define xen_mb() membar_sync()
-#define xen_rmb() membar_producer()
-#define xen_wmb() membar_consumer()
+#define xen_rmb() membar_acquire()
+#define xen_wmb() membar_release()
#endif /* __XEN_INTERFACE_VERSION */
#include <machine/xen/hypercalls.h>
Index: src/sys/arch/xen/include/xenring.h
diff -u src/sys/arch/xen/include/xenring.h:1.6 src/sys/arch/xen/include/xenring.h:1.7
--- src/sys/arch/xen/include/xenring.h:1.6 Sat Apr 25 15:26:17 2020
+++ src/sys/arch/xen/include/xenring.h Sat Feb 25 00:32:26 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: xenring.h,v 1.6 2020/04/25 15:26:17 bouyer Exp $ */
+/* $NetBSD: xenring.h,v 1.7 2023/02/25 00:32:26 riastradh Exp $ */
/*
* Glue goop for xbd ring request/response protocol structures.
@@ -25,8 +25,8 @@
#undef xen_wmb
#define xen_mb() membar_sync()
-#define xen_rmb() membar_producer()
-#define xen_wmb() membar_consumer()
+#define xen_rmb() membar_acquire()
+#define xen_wmb() membar_release()
/*
* Define ring types. These were previously part of the public API.