cpu barriers moved and x86-64 cpu barriers added
PATCH 1/1 cpu barriers moved and x86-64 cpu barriers added
Apologies if this is comes in twice. I sent this earlier today but I don't see it on the list...;-0
We actually should have wmb() be defined as "asm volatile("":::"memory") since we are not using out of order io.
The patch attached removes all the instances and places the definitions in libxc/xc.h as per the discussion last week between Anthony & Keir.
Signed-off-by Jerone Young <[email protected]>
Signature · 5 lines
Jerone Young Open Virtualization IBM Linux Technology Center [email protected] 512-838-1157 (T/L: 678-1157)
tools/blktap/blktaplib.h +0 -16
@@ -10,22 +10,6 @@#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 <sys/user.h> #include <xen/xen.h> #include <xen/io/blkif.h>
tools/libxc/xc.h +15 -0
@@ -25,6 +25,21 @@#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( "" :::"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 { \