Jan Beulich
2007-Dec-06 16:00 UTC
[Xen-devel] [PATCH] linux/x86: Use cpu_relax() rather than barrier() in smp_call_function()
Short of getting an explanation for the odd difference to native, make the code match native (and also, in the case of x86-64, __smp_call_function_single()). As usual, written and tested against 2.6.24-rc3 and made apply against 2.6.18 without further testing. Signed-off-by: Jan Beulich <jbeulich@novell.com> Index: head-2007-11-30/arch/i386/kernel/smp-xen.c ==================================================================--- head-2007-11-30.orig/arch/i386/kernel/smp-xen.c 2007-12-06 14:56:17.000000000 +0100 +++ head-2007-11-30/arch/i386/kernel/smp-xen.c 2007-12-04 09:36:41.000000000 +0100 @@ -525,11 +525,11 @@ /* Wait for response */ while (atomic_read(&data.started) != cpus) - barrier(); + cpu_relax(); if (wait) while (atomic_read(&data.finished) != cpus) - barrier(); + cpu_relax(); spin_unlock(&call_lock); return 0; Index: head-2007-11-30/arch/x86_64/kernel/smp-xen.c ==================================================================--- head-2007-11-30.orig/arch/x86_64/kernel/smp-xen.c 2007-12-06 14:56:17.000000000 +0100 +++ head-2007-11-30/arch/x86_64/kernel/smp-xen.c 2007-12-04 09:38:48.000000000 +0100 @@ -404,21 +404,13 @@ /* Wait for response */ while (atomic_read(&data.started) != cpus) -#ifndef CONFIG_XEN cpu_relax(); -#else - barrier(); -#endif if (!wait) return; while (atomic_read(&data.finished) != cpus) -#ifndef CONFIG_XEN cpu_relax(); -#else - barrier(); -#endif } /* _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Possibly Parallel Threads
- [PATCH] Simplify smp_call_function*() by using common implementation
- [PATCH] Simplify smp_call_function*() by using common implementation
- [PATCH V2] xen/arm: implement smp_call_function
- [GIT PULL v2 3/5] s390: make cpu_relax a barrier again
- [PATCH/RFC 0/5] cpu_relax: introduce yield, remove lowlatency