aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-03-12 23:25:53 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-03-12 23:25:53 -0400
commit7946844ae890282fa03f52d226d12dda48164f10 (patch)
treed2d5f46ed12508efdd02c1da03383dba0a5320e0 /arch
parent4febd95a8a85dd38b1a71fcf9726e19c7fd20039 (diff)
parentd2e0bca377dc0f85acd19df465122f361a6c9e99 (diff)
Merge tag 'stable/for-linus-3.9-rc2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen
Pull Xen fixes from Konrad Rzeszutek Wilk: - Compile warnings and errors (one on x86, two on ARM) - WARNING in xen-pciback - Use the acpi_processor_get_performance_info instead of the 'register' version * tag 'stable/for-linus-3.9-rc2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen: xen/acpi: remove redundant acpi/acpi_drivers.h include xen: arm: mandate EABI and use generic atomic operations. acpi: Export the acpi_processor_get_performance_info xen/pciback: Don't disable a PCI device that is already disabled.
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/Kconfig3
-rw-r--r--arch/arm/include/asm/xen/events.h25
2 files changed, 6 insertions, 22 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index a98070fe7f14..2c3bdce15134 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1889,8 +1889,9 @@ config XEN_DOM0
1889 1889
1890config XEN 1890config XEN
1891 bool "Xen guest support on ARM (EXPERIMENTAL)" 1891 bool "Xen guest support on ARM (EXPERIMENTAL)"
1892 depends on ARM && OF 1892 depends on ARM && AEABI && OF
1893 depends on CPU_V7 && !CPU_V6 1893 depends on CPU_V7 && !CPU_V6
1894 depends on !GENERIC_ATOMIC64
1894 help 1895 help
1895 Say Y if you want to run Linux in a Virtual Machine on Xen on ARM. 1896 Say Y if you want to run Linux in a Virtual Machine on Xen on ARM.
1896 1897
diff --git a/arch/arm/include/asm/xen/events.h b/arch/arm/include/asm/xen/events.h
index 5c27696de14f..8b1f37bfeeec 100644
--- a/arch/arm/include/asm/xen/events.h
+++ b/arch/arm/include/asm/xen/events.h
@@ -2,6 +2,7 @@
2#define _ASM_ARM_XEN_EVENTS_H 2#define _ASM_ARM_XEN_EVENTS_H
3 3
4#include <asm/ptrace.h> 4#include <asm/ptrace.h>
5#include <asm/atomic.h>
5 6
6enum ipi_vector { 7enum ipi_vector {
7 XEN_PLACEHOLDER_VECTOR, 8 XEN_PLACEHOLDER_VECTOR,
@@ -15,26 +16,8 @@ static inline int xen_irqs_disabled(struct pt_regs *regs)
15 return raw_irqs_disabled_flags(regs->ARM_cpsr); 16 return raw_irqs_disabled_flags(regs->ARM_cpsr);
16} 17}
17 18
18/* 19#define xchg_xen_ulong(ptr, val) atomic64_xchg(container_of((ptr), \
19 * We cannot use xchg because it does not support 8-byte 20 atomic64_t, \
20 * values. However it is safe to use {ldr,dtd}exd directly because all 21 counter), (val))
21 * platforms which Xen can run on support those instructions.
22 */
23static inline xen_ulong_t xchg_xen_ulong(xen_ulong_t *ptr, xen_ulong_t val)
24{
25 xen_ulong_t oldval;
26 unsigned int tmp;
27
28 wmb();
29 asm volatile("@ xchg_xen_ulong\n"
30 "1: ldrexd %0, %H0, [%3]\n"
31 " strexd %1, %2, %H2, [%3]\n"
32 " teq %1, #0\n"
33 " bne 1b"
34 : "=&r" (oldval), "=&r" (tmp)
35 : "r" (val), "r" (ptr)
36 : "memory", "cc");
37 return oldval;
38}
39 22
40#endif /* _ASM_ARM_XEN_EVENTS_H */ 23#endif /* _ASM_ARM_XEN_EVENTS_H */