cpu barriers moved and x86-64 cpu barriers added
PATCH 1/1 cpu barriers moved and x86-64 cpu barriers added
Last patch had build error in blktap that I missed since it is not apart of the standard build process. Also evidence point to that X86-64 by default does have CONFIG_UNORDERED_IO on in the Linux kernel default configuration for x86-64, so since it is really a no op nothing can really go wrong (Anthony you win this time!).
This patch moves all cpu barrier definitions to libxc/xc.h and also adds X86-64 barrier definitions.
Signed-off-by Jerone Young <[email protected]>
Jerone Young
Open Virtualization
IBM Linux Technology Center
[email protected]
512-838-1157 (T/L: 678-1157)
tools/blktap/blktaplib.h +1 -18
@@ -8,24 +8,7 @@#ifndef __BLKTAPLIB_H__#define __BLKTAPLIB_H__ -#include <stdint.h> - -typedef uint8_t u8 ; -typedef uint16_t u16 ; -typedef uint32_t u32 ; -typedef uint64_t u64 ; -typedef int8_t s8 ; -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 <xc.h> #include <sys/user.h> #include <xen/xen.h> #include <xen/io/blkif.h>
tools/libxc/xc.h +15 -0
@@ -25,6 +25,21 @@ typedef int64_t s64;#include <xen/event_channel.h> #include <xen/sched_ctl.h> + +/*\ +* DEFINITIONS FOR CPU BARRIERS +\*/ +#if defined(__i386__) +#define rmb () __asm__ __volatile__ ( "lock; addl $0,0(%%esp)" : : : "memory" ) +#define wmb () __asm__ __volatile__ ( "" : : : "memory" ) +#elif defined(__x86_64__) +#define mb () __asm__ __volatile__ ( "mfence" : : : "memory" ) +#define rmb () __asm__ __volatile__ ( "lfence" : : : "memory" ) +#define wmb () __asm__ __volatile__ ( "sfence" : : : "memory" ) +#else +#error "Define barriers" +#endif +/*\ * INITIALIZATION FUNCTIONS \*/
tools/python/xen/lowlevel/xu/xu.c +0 -8
@@ -49,14 +49,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. */ /*
tools/xcs/xcs.h +0 -7
@@ -39,13 +39,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 { \