Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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.

+17 -30
+2 -1
arch/arm/Kconfig
··· 1889 1889 1890 1890 config XEN 1891 1891 bool "Xen guest support on ARM (EXPERIMENTAL)" 1892 - depends on ARM && OF 1892 + depends on ARM && AEABI && OF 1893 1893 depends on CPU_V7 && !CPU_V6 1894 + depends on !GENERIC_ATOMIC64 1894 1895 help 1895 1896 Say Y if you want to run Linux in a Virtual Machine on Xen on ARM. 1896 1897
+4 -21
arch/arm/include/asm/xen/events.h
··· 2 2 #define _ASM_ARM_XEN_EVENTS_H 3 3 4 4 #include <asm/ptrace.h> 5 + #include <asm/atomic.h> 5 6 6 7 enum ipi_vector { 7 8 XEN_PLACEHOLDER_VECTOR, ··· 16 15 return raw_irqs_disabled_flags(regs->ARM_cpsr); 17 16 } 18 17 19 - /* 20 - * We cannot use xchg because it does not support 8-byte 21 - * values. However it is safe to use {ldr,dtd}exd directly because all 22 - * platforms which Xen can run on support those instructions. 23 - */ 24 - static inline xen_ulong_t xchg_xen_ulong(xen_ulong_t *ptr, xen_ulong_t val) 25 - { 26 - xen_ulong_t oldval; 27 - unsigned int tmp; 28 - 29 - wmb(); 30 - asm volatile("@ xchg_xen_ulong\n" 31 - "1: ldrexd %0, %H0, [%3]\n" 32 - " strexd %1, %2, %H2, [%3]\n" 33 - " teq %1, #0\n" 34 - " bne 1b" 35 - : "=&r" (oldval), "=&r" (tmp) 36 - : "r" (val), "r" (ptr) 37 - : "memory", "cc"); 38 - return oldval; 39 - } 18 + #define xchg_xen_ulong(ptr, val) atomic64_xchg(container_of((ptr), \ 19 + atomic64_t, \ 20 + counter), (val)) 40 21 41 22 #endif /* _ASM_ARM_XEN_EVENTS_H */
+2 -2
drivers/acpi/processor_perflib.c
··· 465 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 470 int result = 0; 471 471 acpi_status status = AE_OK; ··· 509 509 #endif 510 510 return result; 511 511 } 512 - 512 + EXPORT_SYMBOL_GPL(acpi_processor_get_performance_info); 513 513 int acpi_processor_notify_smm(struct module *calling_module) 514 514 { 515 515 acpi_status status;
+4 -4
drivers/xen/xen-acpi-processor.c
··· 500 500 (void)acpi_processor_preregister_performance(acpi_perf_data); 501 501 502 502 for_each_possible_cpu(i) { 503 + struct acpi_processor *pr; 503 504 struct acpi_processor_performance *perf; 504 505 506 + pr = per_cpu(processors, i); 505 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 510 if (rc) 508 511 goto err_out; 509 512 } 510 - rc = acpi_processor_notify_smm(THIS_MODULE); 511 - if (rc) 512 - goto err_unregister; 513 513 514 514 for_each_possible_cpu(i) { 515 515 struct acpi_processor *_pr;
+2 -1
drivers/xen/xen-pciback/pciback_ops.c
··· 113 113 if (dev->msi_enabled) 114 114 pci_disable_msi(dev); 115 115 #endif 116 - pci_disable_device(dev); 116 + if (pci_is_enabled(dev)) 117 + pci_disable_device(dev); 117 118 118 119 pci_write_config_word(dev, PCI_COMMAND, 0); 119 120
-1
drivers/xen/xen-stub.c
··· 25 25 #include <linux/export.h> 26 26 #include <linux/types.h> 27 27 #include <linux/acpi.h> 28 - #include <acpi/acpi_drivers.h> 29 28 #include <xen/acpi.h> 30 29 31 30 #ifdef CONFIG_ACPI
+3
include/acpi/processor.h
··· 235 235 if a _PPC object exists, rmmod is disallowed then */ 236 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 241 /* for communication between multiple parts of the processor kernel module */ 239 242 DECLARE_PER_CPU(struct acpi_processor *, processors); 240 243 extern struct acpi_processor_errata errata;