diff options
author | Ingo Molnar <mingo@kernel.org> | 2014-04-14 10:44:42 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2014-04-14 10:44:42 -0400 |
commit | 740c699a8d316c8bf8593f19e2ca47795e690622 (patch) | |
tree | a78886955770a477945c5d84e06b2e7678733b54 /arch/ia64 | |
parent | e69af4657e7764d03ad555f0b583d9c4217bcefa (diff) | |
parent | c9eaa447e77efe77b7fa4c953bd62de8297fd6c5 (diff) |
Merge tag 'v3.15-rc1' into perf/urgent
Pick up the latest fixes.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/ia64')
-rw-r--r-- | arch/ia64/Kconfig | 2 | ||||
-rw-r--r-- | arch/ia64/configs/generic_defconfig | 1 | ||||
-rw-r--r-- | arch/ia64/configs/tiger_defconfig | 1 | ||||
-rw-r--r-- | arch/ia64/configs/zx1_defconfig | 1 | ||||
-rw-r--r-- | arch/ia64/hp/common/sba_iommu.c | 32 | ||||
-rw-r--r-- | arch/ia64/include/asm/pci.h | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/acpi.c | 32 | ||||
-rw-r--r-- | arch/ia64/kernel/err_inject.c | 15 | ||||
-rw-r--r-- | arch/ia64/kernel/ftrace.c | 4 | ||||
-rw-r--r-- | arch/ia64/kernel/palinfo.c | 6 | ||||
-rw-r--r-- | arch/ia64/kernel/salinfo.c | 6 | ||||
-rw-r--r-- | arch/ia64/kernel/topology.c | 6 | ||||
-rw-r--r-- | arch/ia64/kvm/kvm-ia64.c | 1 | ||||
-rw-r--r-- | arch/ia64/pci/fixup.c | 25 | ||||
-rw-r--r-- | arch/ia64/pci/pci.c | 10 |
15 files changed, 67 insertions, 77 deletions
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 0c8e553e0b9f..12c3afee0f6f 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
@@ -21,6 +21,7 @@ config IA64 | |||
21 | select HAVE_FUNCTION_TRACER | 21 | select HAVE_FUNCTION_TRACER |
22 | select HAVE_DMA_ATTRS | 22 | select HAVE_DMA_ATTRS |
23 | select HAVE_KVM | 23 | select HAVE_KVM |
24 | select TTY | ||
24 | select HAVE_ARCH_TRACEHOOK | 25 | select HAVE_ARCH_TRACEHOOK |
25 | select HAVE_DMA_API_DEBUG | 26 | select HAVE_DMA_API_DEBUG |
26 | select HAVE_MEMBLOCK | 27 | select HAVE_MEMBLOCK |
@@ -44,6 +45,7 @@ config IA64 | |||
44 | select HAVE_MOD_ARCH_SPECIFIC | 45 | select HAVE_MOD_ARCH_SPECIFIC |
45 | select MODULES_USE_ELF_RELA | 46 | select MODULES_USE_ELF_RELA |
46 | select ARCH_USE_CMPXCHG_LOCKREF | 47 | select ARCH_USE_CMPXCHG_LOCKREF |
48 | select HAVE_ARCH_AUDITSYSCALL | ||
47 | default y | 49 | default y |
48 | help | 50 | help |
49 | The Itanium Processor Family is Intel's 64-bit successor to | 51 | The Itanium Processor Family is Intel's 64-bit successor to |
diff --git a/arch/ia64/configs/generic_defconfig b/arch/ia64/configs/generic_defconfig index 6404acbb84b2..b4efaf2bc13e 100644 --- a/arch/ia64/configs/generic_defconfig +++ b/arch/ia64/configs/generic_defconfig | |||
@@ -25,7 +25,6 @@ CONFIG_KEXEC=y | |||
25 | CONFIG_CRASH_DUMP=y | 25 | CONFIG_CRASH_DUMP=y |
26 | CONFIG_EFI_VARS=y | 26 | CONFIG_EFI_VARS=y |
27 | CONFIG_BINFMT_MISC=m | 27 | CONFIG_BINFMT_MISC=m |
28 | CONFIG_ACPI_PROCFS=y | ||
29 | CONFIG_ACPI_BUTTON=m | 28 | CONFIG_ACPI_BUTTON=m |
30 | CONFIG_ACPI_FAN=m | 29 | CONFIG_ACPI_FAN=m |
31 | CONFIG_ACPI_DOCK=y | 30 | CONFIG_ACPI_DOCK=y |
diff --git a/arch/ia64/configs/tiger_defconfig b/arch/ia64/configs/tiger_defconfig index 0f4e9e41f130..0fed9ae5a42a 100644 --- a/arch/ia64/configs/tiger_defconfig +++ b/arch/ia64/configs/tiger_defconfig | |||
@@ -26,7 +26,6 @@ CONFIG_IA64_PALINFO=y | |||
26 | CONFIG_KEXEC=y | 26 | CONFIG_KEXEC=y |
27 | CONFIG_EFI_VARS=y | 27 | CONFIG_EFI_VARS=y |
28 | CONFIG_BINFMT_MISC=m | 28 | CONFIG_BINFMT_MISC=m |
29 | CONFIG_ACPI_PROCFS=y | ||
30 | CONFIG_ACPI_BUTTON=m | 29 | CONFIG_ACPI_BUTTON=m |
31 | CONFIG_ACPI_FAN=m | 30 | CONFIG_ACPI_FAN=m |
32 | CONFIG_ACPI_PROCESSOR=m | 31 | CONFIG_ACPI_PROCESSOR=m |
diff --git a/arch/ia64/configs/zx1_defconfig b/arch/ia64/configs/zx1_defconfig index fc7aba07c2b4..54bc72eda30d 100644 --- a/arch/ia64/configs/zx1_defconfig +++ b/arch/ia64/configs/zx1_defconfig | |||
@@ -16,7 +16,6 @@ CONFIG_IA64_PALINFO=y | |||
16 | CONFIG_CRASH_DUMP=y | 16 | CONFIG_CRASH_DUMP=y |
17 | CONFIG_EFI_VARS=y | 17 | CONFIG_EFI_VARS=y |
18 | CONFIG_BINFMT_MISC=y | 18 | CONFIG_BINFMT_MISC=y |
19 | CONFIG_ACPI_PROCFS=y | ||
20 | CONFIG_HOTPLUG_PCI=y | 19 | CONFIG_HOTPLUG_PCI=y |
21 | CONFIG_HOTPLUG_PCI_ACPI=y | 20 | CONFIG_HOTPLUG_PCI_ACPI=y |
22 | CONFIG_PACKET=y | 21 | CONFIG_PACKET=y |
diff --git a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c index 30c43d39dede..1a871b78e570 100644 --- a/arch/ia64/hp/common/sba_iommu.c +++ b/arch/ia64/hp/common/sba_iommu.c | |||
@@ -1140,11 +1140,13 @@ sba_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, | |||
1140 | 1140 | ||
1141 | #ifdef CONFIG_NUMA | 1141 | #ifdef CONFIG_NUMA |
1142 | { | 1142 | { |
1143 | int node = ioc->node; | ||
1143 | struct page *page; | 1144 | struct page *page; |
1144 | page = alloc_pages_exact_node(ioc->node == MAX_NUMNODES ? | ||
1145 | numa_node_id() : ioc->node, flags, | ||
1146 | get_order(size)); | ||
1147 | 1145 | ||
1146 | if (node == NUMA_NO_NODE) | ||
1147 | node = numa_node_id(); | ||
1148 | |||
1149 | page = alloc_pages_exact_node(node, flags, get_order(size)); | ||
1148 | if (unlikely(!page)) | 1150 | if (unlikely(!page)) |
1149 | return NULL; | 1151 | return NULL; |
1150 | 1152 | ||
@@ -1914,7 +1916,7 @@ ioc_show(struct seq_file *s, void *v) | |||
1914 | seq_printf(s, "Hewlett Packard %s IOC rev %d.%d\n", | 1916 | seq_printf(s, "Hewlett Packard %s IOC rev %d.%d\n", |
1915 | ioc->name, ((ioc->rev >> 4) & 0xF), (ioc->rev & 0xF)); | 1917 | ioc->name, ((ioc->rev >> 4) & 0xF), (ioc->rev & 0xF)); |
1916 | #ifdef CONFIG_NUMA | 1918 | #ifdef CONFIG_NUMA |
1917 | if (ioc->node != MAX_NUMNODES) | 1919 | if (ioc->node != NUMA_NO_NODE) |
1918 | seq_printf(s, "NUMA node : %d\n", ioc->node); | 1920 | seq_printf(s, "NUMA node : %d\n", ioc->node); |
1919 | #endif | 1921 | #endif |
1920 | seq_printf(s, "IOVA size : %ld MB\n", ((ioc->pdir_size >> 3) * iovp_size)/(1024*1024)); | 1922 | seq_printf(s, "IOVA size : %ld MB\n", ((ioc->pdir_size >> 3) * iovp_size)/(1024*1024)); |
@@ -2015,31 +2017,19 @@ sba_connect_bus(struct pci_bus *bus) | |||
2015 | printk(KERN_WARNING "No IOC for PCI Bus %04x:%02x in ACPI\n", pci_domain_nr(bus), bus->number); | 2017 | printk(KERN_WARNING "No IOC for PCI Bus %04x:%02x in ACPI\n", pci_domain_nr(bus), bus->number); |
2016 | } | 2018 | } |
2017 | 2019 | ||
2018 | #ifdef CONFIG_NUMA | ||
2019 | static void __init | 2020 | static void __init |
2020 | sba_map_ioc_to_node(struct ioc *ioc, acpi_handle handle) | 2021 | sba_map_ioc_to_node(struct ioc *ioc, acpi_handle handle) |
2021 | { | 2022 | { |
2023 | #ifdef CONFIG_NUMA | ||
2022 | unsigned int node; | 2024 | unsigned int node; |
2023 | int pxm; | ||
2024 | |||
2025 | ioc->node = MAX_NUMNODES; | ||
2026 | |||
2027 | pxm = acpi_get_pxm(handle); | ||
2028 | |||
2029 | if (pxm < 0) | ||
2030 | return; | ||
2031 | |||
2032 | node = pxm_to_node(pxm); | ||
2033 | 2025 | ||
2034 | if (node >= MAX_NUMNODES || !node_online(node)) | 2026 | node = acpi_get_node(handle); |
2035 | return; | 2027 | if (node != NUMA_NO_NODE && !node_online(node)) |
2028 | node = NUMA_NO_NODE; | ||
2036 | 2029 | ||
2037 | ioc->node = node; | 2030 | ioc->node = node; |
2038 | return; | ||
2039 | } | ||
2040 | #else | ||
2041 | #define sba_map_ioc_to_node(ioc, handle) | ||
2042 | #endif | 2031 | #endif |
2032 | } | ||
2043 | 2033 | ||
2044 | static int | 2034 | static int |
2045 | acpi_sba_ioc_add(struct acpi_device *device, | 2035 | acpi_sba_ioc_add(struct acpi_device *device, |
diff --git a/arch/ia64/include/asm/pci.h b/arch/ia64/include/asm/pci.h index 71fbaaa495cc..7d41cc089822 100644 --- a/arch/ia64/include/asm/pci.h +++ b/arch/ia64/include/asm/pci.h | |||
@@ -98,7 +98,7 @@ struct pci_controller { | |||
98 | struct acpi_device *companion; | 98 | struct acpi_device *companion; |
99 | void *iommu; | 99 | void *iommu; |
100 | int segment; | 100 | int segment; |
101 | int node; /* nearest node with memory or -1 for global allocation */ | 101 | int node; /* nearest node with memory or NUMA_NO_NODE for global allocation */ |
102 | 102 | ||
103 | void *platform_data; | 103 | void *platform_data; |
104 | }; | 104 | }; |
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index 07d209c9507f..0d407b300762 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
@@ -54,10 +54,6 @@ | |||
54 | #include <asm/sal.h> | 54 | #include <asm/sal.h> |
55 | #include <asm/cyclone.h> | 55 | #include <asm/cyclone.h> |
56 | 56 | ||
57 | #define BAD_MADT_ENTRY(entry, end) ( \ | ||
58 | (!entry) || (unsigned long)entry + sizeof(*entry) > end || \ | ||
59 | ((struct acpi_subtable_header *)entry)->length < sizeof(*entry)) | ||
60 | |||
61 | #define PREFIX "ACPI: " | 57 | #define PREFIX "ACPI: " |
62 | 58 | ||
63 | unsigned int acpi_cpei_override; | 59 | unsigned int acpi_cpei_override; |
@@ -803,14 +799,9 @@ int acpi_isa_irq_to_gsi(unsigned isa_irq, u32 *gsi) | |||
803 | * ACPI based hotplug CPU support | 799 | * ACPI based hotplug CPU support |
804 | */ | 800 | */ |
805 | #ifdef CONFIG_ACPI_HOTPLUG_CPU | 801 | #ifdef CONFIG_ACPI_HOTPLUG_CPU |
806 | static | 802 | static int acpi_map_cpu2node(acpi_handle handle, int cpu, int physid) |
807 | int acpi_map_cpu2node(acpi_handle handle, int cpu, int physid) | ||
808 | { | 803 | { |
809 | #ifdef CONFIG_ACPI_NUMA | 804 | #ifdef CONFIG_ACPI_NUMA |
810 | int pxm_id; | ||
811 | int nid; | ||
812 | |||
813 | pxm_id = acpi_get_pxm(handle); | ||
814 | /* | 805 | /* |
815 | * We don't have cpu-only-node hotadd. But if the system equips | 806 | * We don't have cpu-only-node hotadd. But if the system equips |
816 | * SRAT table, pxm is already found and node is ready. | 807 | * SRAT table, pxm is already found and node is ready. |
@@ -818,11 +809,10 @@ int acpi_map_cpu2node(acpi_handle handle, int cpu, int physid) | |||
818 | * This code here is for the system which doesn't have full SRAT | 809 | * This code here is for the system which doesn't have full SRAT |
819 | * table for possible cpus. | 810 | * table for possible cpus. |
820 | */ | 811 | */ |
821 | nid = acpi_map_pxm_to_node(pxm_id); | ||
822 | node_cpuid[cpu].phys_id = physid; | 812 | node_cpuid[cpu].phys_id = physid; |
823 | node_cpuid[cpu].nid = nid; | 813 | node_cpuid[cpu].nid = acpi_get_node(handle); |
824 | #endif | 814 | #endif |
825 | return (0); | 815 | return 0; |
826 | } | 816 | } |
827 | 817 | ||
828 | int additional_cpus __initdata = -1; | 818 | int additional_cpus __initdata = -1; |
@@ -929,7 +919,7 @@ static acpi_status acpi_map_iosapic(acpi_handle handle, u32 depth, | |||
929 | union acpi_object *obj; | 919 | union acpi_object *obj; |
930 | struct acpi_madt_io_sapic *iosapic; | 920 | struct acpi_madt_io_sapic *iosapic; |
931 | unsigned int gsi_base; | 921 | unsigned int gsi_base; |
932 | int pxm, node; | 922 | int node; |
933 | 923 | ||
934 | /* Only care about objects w/ a method that returns the MADT */ | 924 | /* Only care about objects w/ a method that returns the MADT */ |
935 | if (ACPI_FAILURE(acpi_evaluate_object(handle, "_MAT", NULL, &buffer))) | 925 | if (ACPI_FAILURE(acpi_evaluate_object(handle, "_MAT", NULL, &buffer))) |
@@ -956,17 +946,9 @@ static acpi_status acpi_map_iosapic(acpi_handle handle, u32 depth, | |||
956 | 946 | ||
957 | kfree(buffer.pointer); | 947 | kfree(buffer.pointer); |
958 | 948 | ||
959 | /* | 949 | /* OK, it's an IOSAPIC MADT entry; associate it with a node */ |
960 | * OK, it's an IOSAPIC MADT entry, look for a _PXM value to tell | 950 | node = acpi_get_node(handle); |
961 | * us which node to associate this with. | 951 | if (node == NUMA_NO_NODE || !node_online(node) || |
962 | */ | ||
963 | pxm = acpi_get_pxm(handle); | ||
964 | if (pxm < 0) | ||
965 | return AE_OK; | ||
966 | |||
967 | node = pxm_to_node(pxm); | ||
968 | |||
969 | if (node >= MAX_NUMNODES || !node_online(node) || | ||
970 | cpumask_empty(cpumask_of_node(node))) | 952 | cpumask_empty(cpumask_of_node(node))) |
971 | return AE_OK; | 953 | return AE_OK; |
972 | 954 | ||
diff --git a/arch/ia64/kernel/err_inject.c b/arch/ia64/kernel/err_inject.c index f59c0b844e88..0c161ed6d18e 100644 --- a/arch/ia64/kernel/err_inject.c +++ b/arch/ia64/kernel/err_inject.c | |||
@@ -269,12 +269,17 @@ err_inject_init(void) | |||
269 | #ifdef ERR_INJ_DEBUG | 269 | #ifdef ERR_INJ_DEBUG |
270 | printk(KERN_INFO "Enter error injection driver.\n"); | 270 | printk(KERN_INFO "Enter error injection driver.\n"); |
271 | #endif | 271 | #endif |
272 | |||
273 | cpu_notifier_register_begin(); | ||
274 | |||
272 | for_each_online_cpu(i) { | 275 | for_each_online_cpu(i) { |
273 | err_inject_cpu_callback(&err_inject_cpu_notifier, CPU_ONLINE, | 276 | err_inject_cpu_callback(&err_inject_cpu_notifier, CPU_ONLINE, |
274 | (void *)(long)i); | 277 | (void *)(long)i); |
275 | } | 278 | } |
276 | 279 | ||
277 | register_hotcpu_notifier(&err_inject_cpu_notifier); | 280 | __register_hotcpu_notifier(&err_inject_cpu_notifier); |
281 | |||
282 | cpu_notifier_register_done(); | ||
278 | 283 | ||
279 | return 0; | 284 | return 0; |
280 | } | 285 | } |
@@ -288,11 +293,17 @@ err_inject_exit(void) | |||
288 | #ifdef ERR_INJ_DEBUG | 293 | #ifdef ERR_INJ_DEBUG |
289 | printk(KERN_INFO "Exit error injection driver.\n"); | 294 | printk(KERN_INFO "Exit error injection driver.\n"); |
290 | #endif | 295 | #endif |
296 | |||
297 | cpu_notifier_register_begin(); | ||
298 | |||
291 | for_each_online_cpu(i) { | 299 | for_each_online_cpu(i) { |
292 | sys_dev = get_cpu_device(i); | 300 | sys_dev = get_cpu_device(i); |
293 | sysfs_remove_group(&sys_dev->kobj, &err_inject_attr_group); | 301 | sysfs_remove_group(&sys_dev->kobj, &err_inject_attr_group); |
294 | } | 302 | } |
295 | unregister_hotcpu_notifier(&err_inject_cpu_notifier); | 303 | |
304 | __unregister_hotcpu_notifier(&err_inject_cpu_notifier); | ||
305 | |||
306 | cpu_notifier_register_done(); | ||
296 | } | 307 | } |
297 | 308 | ||
298 | module_init(err_inject_init); | 309 | module_init(err_inject_init); |
diff --git a/arch/ia64/kernel/ftrace.c b/arch/ia64/kernel/ftrace.c index 7fc8c961b1f7..3b0c2aa07857 100644 --- a/arch/ia64/kernel/ftrace.c +++ b/arch/ia64/kernel/ftrace.c | |||
@@ -198,9 +198,7 @@ int ftrace_update_ftrace_func(ftrace_func_t func) | |||
198 | } | 198 | } |
199 | 199 | ||
200 | /* run from kstop_machine */ | 200 | /* run from kstop_machine */ |
201 | int __init ftrace_dyn_arch_init(void *data) | 201 | int __init ftrace_dyn_arch_init(void) |
202 | { | 202 | { |
203 | *(unsigned long *)data = 0; | ||
204 | |||
205 | return 0; | 203 | return 0; |
206 | } | 204 | } |
diff --git a/arch/ia64/kernel/palinfo.c b/arch/ia64/kernel/palinfo.c index ab333284f4b2..c39c3cd3ac34 100644 --- a/arch/ia64/kernel/palinfo.c +++ b/arch/ia64/kernel/palinfo.c | |||
@@ -996,13 +996,17 @@ palinfo_init(void) | |||
996 | if (!palinfo_dir) | 996 | if (!palinfo_dir) |
997 | return -ENOMEM; | 997 | return -ENOMEM; |
998 | 998 | ||
999 | cpu_notifier_register_begin(); | ||
1000 | |||
999 | /* Create palinfo dirs in /proc for all online cpus */ | 1001 | /* Create palinfo dirs in /proc for all online cpus */ |
1000 | for_each_online_cpu(i) { | 1002 | for_each_online_cpu(i) { |
1001 | create_palinfo_proc_entries(i); | 1003 | create_palinfo_proc_entries(i); |
1002 | } | 1004 | } |
1003 | 1005 | ||
1004 | /* Register for future delivery via notify registration */ | 1006 | /* Register for future delivery via notify registration */ |
1005 | register_hotcpu_notifier(&palinfo_cpu_notifier); | 1007 | __register_hotcpu_notifier(&palinfo_cpu_notifier); |
1008 | |||
1009 | cpu_notifier_register_done(); | ||
1006 | 1010 | ||
1007 | return 0; | 1011 | return 0; |
1008 | } | 1012 | } |
diff --git a/arch/ia64/kernel/salinfo.c b/arch/ia64/kernel/salinfo.c index 960a396f5929..ee9719eebb1e 100644 --- a/arch/ia64/kernel/salinfo.c +++ b/arch/ia64/kernel/salinfo.c | |||
@@ -635,6 +635,8 @@ salinfo_init(void) | |||
635 | (void *)salinfo_entries[i].feature); | 635 | (void *)salinfo_entries[i].feature); |
636 | } | 636 | } |
637 | 637 | ||
638 | cpu_notifier_register_begin(); | ||
639 | |||
638 | for (i = 0; i < ARRAY_SIZE(salinfo_log_name); i++) { | 640 | for (i = 0; i < ARRAY_SIZE(salinfo_log_name); i++) { |
639 | data = salinfo_data + i; | 641 | data = salinfo_data + i; |
640 | data->type = i; | 642 | data->type = i; |
@@ -669,7 +671,9 @@ salinfo_init(void) | |||
669 | salinfo_timer.function = &salinfo_timeout; | 671 | salinfo_timer.function = &salinfo_timeout; |
670 | add_timer(&salinfo_timer); | 672 | add_timer(&salinfo_timer); |
671 | 673 | ||
672 | register_hotcpu_notifier(&salinfo_cpu_notifier); | 674 | __register_hotcpu_notifier(&salinfo_cpu_notifier); |
675 | |||
676 | cpu_notifier_register_done(); | ||
673 | 677 | ||
674 | return 0; | 678 | return 0; |
675 | } | 679 | } |
diff --git a/arch/ia64/kernel/topology.c b/arch/ia64/kernel/topology.c index ca69a5a96dcc..f295f9abba4b 100644 --- a/arch/ia64/kernel/topology.c +++ b/arch/ia64/kernel/topology.c | |||
@@ -454,12 +454,16 @@ static int __init cache_sysfs_init(void) | |||
454 | { | 454 | { |
455 | int i; | 455 | int i; |
456 | 456 | ||
457 | cpu_notifier_register_begin(); | ||
458 | |||
457 | for_each_online_cpu(i) { | 459 | for_each_online_cpu(i) { |
458 | struct device *sys_dev = get_cpu_device((unsigned int)i); | 460 | struct device *sys_dev = get_cpu_device((unsigned int)i); |
459 | cache_add_dev(sys_dev); | 461 | cache_add_dev(sys_dev); |
460 | } | 462 | } |
461 | 463 | ||
462 | register_hotcpu_notifier(&cache_cpu_notifier); | 464 | __register_hotcpu_notifier(&cache_cpu_notifier); |
465 | |||
466 | cpu_notifier_register_done(); | ||
463 | 467 | ||
464 | return 0; | 468 | return 0; |
465 | } | 469 | } |
diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c index 53f44bee9ebb..6a4309bb821a 100644 --- a/arch/ia64/kvm/kvm-ia64.c +++ b/arch/ia64/kvm/kvm-ia64.c | |||
@@ -199,6 +199,7 @@ int kvm_dev_ioctl_check_extension(long ext) | |||
199 | case KVM_CAP_IRQCHIP: | 199 | case KVM_CAP_IRQCHIP: |
200 | case KVM_CAP_MP_STATE: | 200 | case KVM_CAP_MP_STATE: |
201 | case KVM_CAP_IRQ_INJECT_STATUS: | 201 | case KVM_CAP_IRQ_INJECT_STATUS: |
202 | case KVM_CAP_IOAPIC_POLARITY_IGNORED: | ||
202 | r = 1; | 203 | r = 1; |
203 | break; | 204 | break; |
204 | case KVM_CAP_COALESCED_MMIO: | 205 | case KVM_CAP_COALESCED_MMIO: |
diff --git a/arch/ia64/pci/fixup.c b/arch/ia64/pci/fixup.c index 5dc969dd4ac0..eee069a0b539 100644 --- a/arch/ia64/pci/fixup.c +++ b/arch/ia64/pci/fixup.c | |||
@@ -5,6 +5,7 @@ | |||
5 | 5 | ||
6 | #include <linux/pci.h> | 6 | #include <linux/pci.h> |
7 | #include <linux/init.h> | 7 | #include <linux/init.h> |
8 | #include <linux/vgaarb.h> | ||
8 | 9 | ||
9 | #include <asm/machvec.h> | 10 | #include <asm/machvec.h> |
10 | 11 | ||
@@ -19,9 +20,10 @@ | |||
19 | * IORESOURCE_ROM_SHADOW is used to associate the boot video | 20 | * IORESOURCE_ROM_SHADOW is used to associate the boot video |
20 | * card with this copy. On laptops this copy has to be used since | 21 | * card with this copy. On laptops this copy has to be used since |
21 | * the main ROM may be compressed or combined with another image. | 22 | * the main ROM may be compressed or combined with another image. |
22 | * See pci_map_rom() for use of this flag. IORESOURCE_ROM_SHADOW | 23 | * See pci_map_rom() for use of this flag. Before marking the device |
23 | * is marked here since the boot video device will be the only enabled | 24 | * with IORESOURCE_ROM_SHADOW check if a vga_default_device is already set |
24 | * video device at this point. | 25 | * by either arch cde or vga-arbitration, if so only apply the fixup to this |
26 | * already determined primary video card. | ||
25 | */ | 27 | */ |
26 | 28 | ||
27 | static void pci_fixup_video(struct pci_dev *pdev) | 29 | static void pci_fixup_video(struct pci_dev *pdev) |
@@ -35,9 +37,6 @@ static void pci_fixup_video(struct pci_dev *pdev) | |||
35 | return; | 37 | return; |
36 | /* Maybe, this machine supports legacy memory map. */ | 38 | /* Maybe, this machine supports legacy memory map. */ |
37 | 39 | ||
38 | if ((pdev->class >> 8) != PCI_CLASS_DISPLAY_VGA) | ||
39 | return; | ||
40 | |||
41 | /* Is VGA routed to us? */ | 40 | /* Is VGA routed to us? */ |
42 | bus = pdev->bus; | 41 | bus = pdev->bus; |
43 | while (bus) { | 42 | while (bus) { |
@@ -60,10 +59,14 @@ static void pci_fixup_video(struct pci_dev *pdev) | |||
60 | } | 59 | } |
61 | bus = bus->parent; | 60 | bus = bus->parent; |
62 | } | 61 | } |
63 | pci_read_config_word(pdev, PCI_COMMAND, &config); | 62 | if (!vga_default_device() || pdev == vga_default_device()) { |
64 | if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) { | 63 | pci_read_config_word(pdev, PCI_COMMAND, &config); |
65 | pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW; | 64 | if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) { |
66 | dev_printk(KERN_DEBUG, &pdev->dev, "Boot video device\n"); | 65 | pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW; |
66 | dev_printk(KERN_DEBUG, &pdev->dev, "Boot video device\n"); | ||
67 | vga_set_default_device(pdev); | ||
68 | } | ||
67 | } | 69 | } |
68 | } | 70 | } |
69 | DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_video); | 71 | DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID, |
72 | PCI_CLASS_DISPLAY_VGA, 8, pci_fixup_video); | ||
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c index 9e4938d8ca4d..291a582777cf 100644 --- a/arch/ia64/pci/pci.c +++ b/arch/ia64/pci/pci.c | |||
@@ -126,7 +126,6 @@ static struct pci_controller *alloc_pci_controller(int seg) | |||
126 | return NULL; | 126 | return NULL; |
127 | 127 | ||
128 | controller->segment = seg; | 128 | controller->segment = seg; |
129 | controller->node = -1; | ||
130 | return controller; | 129 | return controller; |
131 | } | 130 | } |
132 | 131 | ||
@@ -430,19 +429,14 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root) | |||
430 | struct pci_root_info *info = NULL; | 429 | struct pci_root_info *info = NULL; |
431 | int busnum = root->secondary.start; | 430 | int busnum = root->secondary.start; |
432 | struct pci_bus *pbus; | 431 | struct pci_bus *pbus; |
433 | int pxm, ret; | 432 | int ret; |
434 | 433 | ||
435 | controller = alloc_pci_controller(domain); | 434 | controller = alloc_pci_controller(domain); |
436 | if (!controller) | 435 | if (!controller) |
437 | return NULL; | 436 | return NULL; |
438 | 437 | ||
439 | controller->companion = device; | 438 | controller->companion = device; |
440 | 439 | controller->node = acpi_get_node(device->handle); | |
441 | pxm = acpi_get_pxm(device->handle); | ||
442 | #ifdef CONFIG_NUMA | ||
443 | if (pxm >= 0) | ||
444 | controller->node = pxm_to_node(pxm); | ||
445 | #endif | ||
446 | 440 | ||
447 | info = kzalloc(sizeof(*info), GFP_KERNEL); | 441 | info = kzalloc(sizeof(*info), GFP_KERNEL); |
448 | if (!info) { | 442 | if (!info) { |