diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-03-12 23:25:53 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-03-12 23:25:53 -0400 |
commit | 7946844ae890282fa03f52d226d12dda48164f10 (patch) | |
tree | d2d5f46ed12508efdd02c1da03383dba0a5320e0 | |
parent | 4febd95a8a85dd38b1a71fcf9726e19c7fd20039 (diff) | |
parent | d2e0bca377dc0f85acd19df465122f361a6c9e99 (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.
-rw-r--r-- | arch/arm/Kconfig | 3 | ||||
-rw-r--r-- | arch/arm/include/asm/xen/events.h | 25 | ||||
-rw-r--r-- | drivers/acpi/processor_perflib.c | 4 | ||||
-rw-r--r-- | drivers/xen/xen-acpi-processor.c | 8 | ||||
-rw-r--r-- | drivers/xen/xen-pciback/pciback_ops.c | 3 | ||||
-rw-r--r-- | drivers/xen/xen-stub.c | 1 | ||||
-rw-r--r-- | include/acpi/processor.h | 3 |
7 files changed, 17 insertions, 30 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 | ||
1890 | config XEN | 1890 | config 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 | ||
6 | enum ipi_vector { | 7 | enum 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 | */ | ||
23 | static 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 */ |
diff --git a/drivers/acpi/processor_perflib.c b/drivers/acpi/processor_perflib.c index 53e7ac9403a7..e854582f29a6 100644 --- a/drivers/acpi/processor_perflib.c +++ b/drivers/acpi/processor_perflib.c | |||
@@ -465,7 +465,7 @@ static int acpi_processor_get_performance_states(struct acpi_processor *pr) | |||
465 | return result; | 465 | return result; |
466 | } | 466 | } |
467 | 467 | ||
468 | static int acpi_processor_get_performance_info(struct acpi_processor *pr) | 468 | int acpi_processor_get_performance_info(struct acpi_processor *pr) |
469 | { | 469 | { |
470 | int result = 0; | 470 | int result = 0; |
471 | acpi_status status = AE_OK; | 471 | acpi_status status = AE_OK; |
@@ -509,7 +509,7 @@ static int acpi_processor_get_performance_info(struct acpi_processor *pr) | |||
509 | #endif | 509 | #endif |
510 | return result; | 510 | return result; |
511 | } | 511 | } |
512 | 512 | EXPORT_SYMBOL_GPL(acpi_processor_get_performance_info); | |
513 | int acpi_processor_notify_smm(struct module *calling_module) | 513 | int acpi_processor_notify_smm(struct module *calling_module) |
514 | { | 514 | { |
515 | acpi_status status; | 515 | acpi_status status; |
diff --git a/drivers/xen/xen-acpi-processor.c b/drivers/xen/xen-acpi-processor.c index 316df65163cf..f3278a6603ca 100644 --- a/drivers/xen/xen-acpi-processor.c +++ b/drivers/xen/xen-acpi-processor.c | |||
@@ -500,16 +500,16 @@ static int __init xen_acpi_processor_init(void) | |||
500 | (void)acpi_processor_preregister_performance(acpi_perf_data); | 500 | (void)acpi_processor_preregister_performance(acpi_perf_data); |
501 | 501 | ||
502 | for_each_possible_cpu(i) { | 502 | for_each_possible_cpu(i) { |
503 | struct acpi_processor *pr; | ||
503 | struct acpi_processor_performance *perf; | 504 | struct acpi_processor_performance *perf; |
504 | 505 | ||
506 | pr = per_cpu(processors, i); | ||
505 | perf = per_cpu_ptr(acpi_perf_data, i); | 507 | perf = per_cpu_ptr(acpi_perf_data, i); |
506 | rc = acpi_processor_register_performance(perf, i); | 508 | pr->performance = perf; |
509 | rc = acpi_processor_get_performance_info(pr); | ||
507 | if (rc) | 510 | if (rc) |
508 | goto err_out; | 511 | goto err_out; |
509 | } | 512 | } |
510 | rc = acpi_processor_notify_smm(THIS_MODULE); | ||
511 | if (rc) | ||
512 | goto err_unregister; | ||
513 | 513 | ||
514 | for_each_possible_cpu(i) { | 514 | for_each_possible_cpu(i) { |
515 | struct acpi_processor *_pr; | 515 | struct acpi_processor *_pr; |
diff --git a/drivers/xen/xen-pciback/pciback_ops.c b/drivers/xen/xen-pciback/pciback_ops.c index 37c1f825f513..b98cf0c35725 100644 --- a/drivers/xen/xen-pciback/pciback_ops.c +++ b/drivers/xen/xen-pciback/pciback_ops.c | |||
@@ -113,7 +113,8 @@ void xen_pcibk_reset_device(struct pci_dev *dev) | |||
113 | if (dev->msi_enabled) | 113 | if (dev->msi_enabled) |
114 | pci_disable_msi(dev); | 114 | pci_disable_msi(dev); |
115 | #endif | 115 | #endif |
116 | pci_disable_device(dev); | 116 | if (pci_is_enabled(dev)) |
117 | pci_disable_device(dev); | ||
117 | 118 | ||
118 | pci_write_config_word(dev, PCI_COMMAND, 0); | 119 | pci_write_config_word(dev, PCI_COMMAND, 0); |
119 | 120 | ||
diff --git a/drivers/xen/xen-stub.c b/drivers/xen/xen-stub.c index d85e411cbf89..bbef194c5b01 100644 --- a/drivers/xen/xen-stub.c +++ b/drivers/xen/xen-stub.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/export.h> | 25 | #include <linux/export.h> |
26 | #include <linux/types.h> | 26 | #include <linux/types.h> |
27 | #include <linux/acpi.h> | 27 | #include <linux/acpi.h> |
28 | #include <acpi/acpi_drivers.h> | ||
29 | #include <xen/acpi.h> | 28 | #include <xen/acpi.h> |
30 | 29 | ||
31 | #ifdef CONFIG_ACPI | 30 | #ifdef CONFIG_ACPI |
diff --git a/include/acpi/processor.h b/include/acpi/processor.h index 555d0337ad95..b327b5a9296d 100644 --- a/include/acpi/processor.h +++ b/include/acpi/processor.h | |||
@@ -235,6 +235,9 @@ extern void acpi_processor_unregister_performance(struct | |||
235 | if a _PPC object exists, rmmod is disallowed then */ | 235 | if a _PPC object exists, rmmod is disallowed then */ |
236 | int acpi_processor_notify_smm(struct module *calling_module); | 236 | int acpi_processor_notify_smm(struct module *calling_module); |
237 | 237 | ||
238 | /* parsing the _P* objects. */ | ||
239 | extern int acpi_processor_get_performance_info(struct acpi_processor *pr); | ||
240 | |||
238 | /* for communication between multiple parts of the processor kernel module */ | 241 | /* for communication between multiple parts of the processor kernel module */ |
239 | DECLARE_PER_CPU(struct acpi_processor *, processors); | 242 | DECLARE_PER_CPU(struct acpi_processor *, processors); |
240 | extern struct acpi_processor_errata errata; | 243 | extern struct acpi_processor_errata errata; |