All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Cleanup rmb()/wmb() usage
@ 2005-02-23  3:38 Anthony Liguori
  2005-02-23  7:18 ` Keir Fraser
  0 siblings, 1 reply; 4+ messages in thread
From: Anthony Liguori @ 2005-02-23  3:38 UTC (permalink / raw)
  To: xen-devel

[-- Attachment #1: Type: text/plain, Size: 629 bytes --]

This is a pretty simple patch to use the read/write barriers defined in 
asm/system.h instead of using hardcoded versions in various places 
throughout Xen.

I've checked and using asm/system.h generates the same code on my 
system.  I also tested xcs and it seems to work fine.  I haven't tested 
blktap but again, it's generating the same code.

Right now, wmb() is defined as a NOP on any 386 architecture.  Some 
Intel clones require a non-NOP wmb().   Using asm/system.h ensures we do 
the right thing.

It's against xen-unstable as of today.

Regards,
Anthony Liguori

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>


[-- Attachment #2: rmb_wmb_cleanup.diff --]
[-- Type: text/x-patch, Size: 2621 bytes --]

diff -ur xen-unstable-orig/tools/blktap/blktaplib.h xen-unstable/tools/blktap/blktaplib.h
--- xen-unstable-orig/tools/blktap/blktaplib.h	2005-02-21 22:19:26.000000000 -0600
+++ xen-unstable/tools/blktap/blktaplib.h	2005-02-22 21:26:06.000000000 -0600
@@ -18,14 +18,9 @@
 typedef int16_t            s16;
 typedef int32_t            s32;
 typedef int64_t            s64;
-                                                                                
-#if defined(__i386__)
-#define rmb() __asm__ __volatile__ ( "lock; addl $0,0(%%esp)" : : : "memory" )
-#define wmb() __asm__ __volatile__ ( "" : : : "memory" )
-#else
-#error "Define barriers"
-#endif
-    
+
+#include <asm/system.h>
+
 #include <sys/user.h>
 #include <xen/xen.h>
 #include <xen/io/blkif.h>
diff -ur xen-unstable-orig/tools/python/xen/lowlevel/xu/xu.c xen-unstable/tools/python/xen/lowlevel/xu/xu.c
--- xen-unstable-orig/tools/python/xen/lowlevel/xu/xu.c	2005-02-21 22:19:25.000000000 -0600
+++ xen-unstable/tools/python/xen/lowlevel/xu/xu.c	2005-02-22 21:23:50.000000000 -0600
@@ -27,6 +27,8 @@
 #include <xen/io/domain_controller.h>
 #include <xen/linux/privcmd.h>
 
+#include <asm/system.h>
+
 #define XENPKG "xen.lowlevel.xu"
 
 /* Needed for Python versions earlier than 2.3. */
@@ -49,14 +51,6 @@
 /* Size of a machine page frame. */
 #define PAGE_SIZE 4096
 
-#if defined(__i386__)
-#define rmb() __asm__ __volatile__ ( "lock; addl $0,0(%%esp)" : : : "memory" )
-#define wmb() __asm__ __volatile__ ( "" : : : "memory" )
-#else
-#error "Define barriers"
-#endif
-
-
 /* Set the close-on-exec flag on a file descriptor.  Doesn't currently bother
  * to check for errors. */
 /*
diff -ur xen-unstable-orig/tools/xcs/xcs.h xen-unstable/tools/xcs/xcs.h
--- xen-unstable-orig/tools/xcs/xcs.h	2005-02-21 22:19:31.000000000 -0600
+++ xen-unstable/tools/xcs/xcs.h	2005-02-22 21:24:12.000000000 -0600
@@ -16,6 +16,7 @@
 #include <xen/io/domain_controller.h>
 #include <xen/linux/privcmd.h>
 #include <sys/time.h>
+#include <asm/system.h>
 #include "xcs_proto.h"
 
 /* ------[ Debug macros ]--------------------------------------------------*/
@@ -39,13 +40,6 @@
 /* Size of a machine page frame. */
 #define PAGE_SIZE 4096
 
-#if defined(__i386__)
-#define rmb() __asm__ __volatile__ ( "lock; addl $0,0(%%esp)" : : : "memory" )
-#define wmb() __asm__ __volatile__ ( "" : : : "memory" )
-#else
-#error "Define barriers"
-#endif
-
 #ifndef timersub /* XOPEN and __BSD don't cooperate well... */
 #define timersub(a, b, result)                                                \
   do {                                                                        \

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

end of thread, other threads:[~2005-02-23  8:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-02-23  3:38 [PATCH] Cleanup rmb()/wmb() usage Anthony Liguori
2005-02-23  7:18 ` Keir Fraser
2005-02-23  7:57   ` Anthony Liguori
2005-02-23  8:44     ` Keir Fraser

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.