From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: [PATCH] Cleanup rmb()/wmb() usage Date: Tue, 22 Feb 2005 21:38:53 -0600 Message-ID: <421BFACD.7090606@us.ibm.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020008000106010709040509" Sender: xen-devel-admin@lists.sourceforge.net Errors-To: xen-devel-admin@lists.sourceforge.net List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , List-Archive: To: xen-devel List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------020008000106010709040509 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit 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 --------------020008000106010709040509 Content-Type: text/x-patch; name="rmb_wmb_cleanup.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="rmb_wmb_cleanup.diff" 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 + #include #include #include 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 #include +#include + #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 #include #include +#include #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 { \ --------------020008000106010709040509-- ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click