diff options
author | Christoph Hellwig <hch@lst.de> | 2019-08-13 03:25:12 -0400 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2019-08-16 17:32:26 -0400 |
commit | df41017eafd267c08acbfff99d34e4f96bbfbc92 (patch) | |
tree | 6c6147f0ecc52dbf1ea066ba739a83ad0526712a | |
parent | a8384e6ce5231d4f697f2dca1de4ff6bed7f3890 (diff) |
ia64: remove support for machvecs
The only thing remaining of the machvecs is a few checks if we are
running on an SGI UV system. Replace those with the existing
is_uv_system() check that has been rewritten to simply check the
OEM ID directly.
That leaves us with a generic kernel that is as fast as the previous
DIG/ZX1/UV kernels, but can support all hardware. Support for UV
and the HP SBA IOMMU is now optional based on new config options.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lkml.kernel.org/r/20190813072514.23299-27-hch@lst.de
Signed-off-by: Tony Luck <tony.luck@intel.com>
50 files changed, 116 insertions, 488 deletions
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 9a8c7ec60cfc..13d49c232556 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
@@ -11,11 +11,13 @@ config IA64 | |||
11 | select ARCH_MIGHT_HAVE_PC_PARPORT | 11 | select ARCH_MIGHT_HAVE_PC_PARPORT |
12 | select ARCH_MIGHT_HAVE_PC_SERIO | 12 | select ARCH_MIGHT_HAVE_PC_SERIO |
13 | select ACPI | 13 | select ACPI |
14 | select ACPI_NUMA if NUMA | ||
14 | select ARCH_SUPPORTS_ACPI | 15 | select ARCH_SUPPORTS_ACPI |
15 | select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI | 16 | select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI |
16 | select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI | 17 | select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI |
17 | select FORCE_PCI | 18 | select FORCE_PCI |
18 | select PCI_DOMAINS if PCI | 19 | select PCI_DOMAINS if PCI |
20 | select PCI_MSI | ||
19 | select PCI_SYSCALL if PCI | 21 | select PCI_SYSCALL if PCI |
20 | select HAVE_UNSTABLE_SCHED_CLOCK | 22 | select HAVE_UNSTABLE_SCHED_CLOCK |
21 | select HAVE_EXIT_THREAD | 23 | select HAVE_EXIT_THREAD |
@@ -30,8 +32,8 @@ config IA64 | |||
30 | select HAVE_ARCH_TRACEHOOK | 32 | select HAVE_ARCH_TRACEHOOK |
31 | select HAVE_MEMBLOCK_NODE_MAP | 33 | select HAVE_MEMBLOCK_NODE_MAP |
32 | select HAVE_VIRT_CPU_ACCOUNTING | 34 | select HAVE_VIRT_CPU_ACCOUNTING |
33 | select ARCH_HAS_DMA_COHERENT_TO_PFN if SWIOTLB | 35 | select ARCH_HAS_DMA_COHERENT_TO_PFN |
34 | select ARCH_HAS_SYNC_DMA_FOR_CPU if SWIOTLB | 36 | select ARCH_HAS_SYNC_DMA_FOR_CPU |
35 | select VIRT_TO_BUS | 37 | select VIRT_TO_BUS |
36 | select GENERIC_IRQ_PROBE | 38 | select GENERIC_IRQ_PROBE |
37 | select GENERIC_PENDING_IRQ if SMP | 39 | select GENERIC_PENDING_IRQ if SMP |
@@ -45,6 +47,7 @@ config IA64 | |||
45 | select ARCH_THREAD_STACK_ALLOCATOR | 47 | select ARCH_THREAD_STACK_ALLOCATOR |
46 | select ARCH_CLOCKSOURCE_DATA | 48 | select ARCH_CLOCKSOURCE_DATA |
47 | select GENERIC_TIME_VSYSCALL | 49 | select GENERIC_TIME_VSYSCALL |
50 | select SWIOTLB | ||
48 | select SYSCTL_ARCH_UNALIGN_NO_WARN | 51 | select SYSCTL_ARCH_UNALIGN_NO_WARN |
49 | select HAVE_MOD_ARCH_SPECIFIC | 52 | select HAVE_MOD_ARCH_SPECIFIC |
50 | select MODULES_USE_ELF_RELA | 53 | select MODULES_USE_ELF_RELA |
@@ -52,6 +55,7 @@ config IA64 | |||
52 | select HAVE_ARCH_AUDITSYSCALL | 55 | select HAVE_ARCH_AUDITSYSCALL |
53 | select NEED_DMA_MAP_STATE | 56 | select NEED_DMA_MAP_STATE |
54 | select NEED_SG_DMA_LENGTH | 57 | select NEED_SG_DMA_LENGTH |
58 | select NUMA if !FLATMEM | ||
55 | default y | 59 | default y |
56 | help | 60 | help |
57 | The Itanium Processor Family is Intel's 64-bit successor to | 61 | The Itanium Processor Family is Intel's 64-bit successor to |
@@ -120,53 +124,6 @@ config AUDIT_ARCH | |||
120 | default y | 124 | default y |
121 | 125 | ||
122 | choice | 126 | choice |
123 | prompt "System type" | ||
124 | default IA64_GENERIC | ||
125 | |||
126 | config IA64_GENERIC | ||
127 | bool "generic" | ||
128 | select NUMA | ||
129 | select ACPI_NUMA | ||
130 | select SWIOTLB | ||
131 | select PCI_MSI | ||
132 | help | ||
133 | This selects the system type of your hardware. A "generic" kernel | ||
134 | will run on any supported IA-64 system. However, if you configure | ||
135 | a kernel for your specific system, it will be faster and smaller. | ||
136 | |||
137 | generic For any supported IA-64 system | ||
138 | DIG-compliant For DIG ("Developer's Interface Guide") compliant systems | ||
139 | DIG+Intel+IOMMU For DIG systems with Intel IOMMU | ||
140 | HP-zx1/sx1000 For HP systems | ||
141 | SGI-UV For SGI UV systems | ||
142 | |||
143 | If you don't know what to do, choose "generic". | ||
144 | |||
145 | config IA64_DIG | ||
146 | bool "DIG-compliant" | ||
147 | select SWIOTLB | ||
148 | |||
149 | config IA64_HP_ZX1 | ||
150 | bool "HP-zx1/sx1000" | ||
151 | help | ||
152 | Build a kernel that runs on HP zx1 and sx1000 systems. This adds | ||
153 | support for the HP I/O MMU. | ||
154 | |||
155 | config IA64_SGI_UV | ||
156 | bool "SGI-UV" | ||
157 | select NUMA | ||
158 | select ACPI_NUMA | ||
159 | select SWIOTLB | ||
160 | help | ||
161 | Selecting this option will optimize the kernel for use on UV based | ||
162 | systems, but the resulting kernel binary will not run on other | ||
163 | types of ia64 systems. If you have an SGI UV system, it's safe | ||
164 | to select this option. If in doubt, select ia64 generic support | ||
165 | instead. | ||
166 | |||
167 | endchoice | ||
168 | |||
169 | choice | ||
170 | prompt "Processor type" | 127 | prompt "Processor type" |
171 | default ITANIUM | 128 | default ITANIUM |
172 | 129 | ||
@@ -230,6 +187,20 @@ config IA64_L1_CACHE_SHIFT | |||
230 | default "7" if MCKINLEY | 187 | default "7" if MCKINLEY |
231 | default "6" if ITANIUM | 188 | default "6" if ITANIUM |
232 | 189 | ||
190 | config IA64_SGI_UV | ||
191 | bool "SGI-UV support" | ||
192 | help | ||
193 | Selecting this option will add specific support for running on SGI | ||
194 | UV based systems. If you have an SGI UV system or are building a | ||
195 | distro kernel, select this option. | ||
196 | |||
197 | config IA64_HP_SBA_IOMMU | ||
198 | bool "HP SBA IOMMU support" | ||
199 | default y | ||
200 | help | ||
201 | Say Y here to add support for the SBA IOMMU found on HP zx1 and | ||
202 | sx1000 systems. If you're unsure, answer Y. | ||
203 | |||
233 | config IA64_CYCLONE | 204 | config IA64_CYCLONE |
234 | bool "Cyclone (EXA) Time Source support" | 205 | bool "Cyclone (EXA) Time Source support" |
235 | help | 206 | help |
@@ -334,13 +305,12 @@ config ARCH_SPARSEMEM_ENABLE | |||
334 | select SPARSEMEM_VMEMMAP_ENABLE | 305 | select SPARSEMEM_VMEMMAP_ENABLE |
335 | 306 | ||
336 | config ARCH_DISCONTIGMEM_DEFAULT | 307 | config ARCH_DISCONTIGMEM_DEFAULT |
337 | def_bool y if (IA64_GENERIC || IA64_HP_ZX1) | 308 | def_bool y |
338 | depends on ARCH_DISCONTIGMEM_ENABLE | 309 | depends on ARCH_DISCONTIGMEM_ENABLE |
339 | 310 | ||
340 | config NUMA | 311 | config NUMA |
341 | bool "NUMA support" | 312 | bool "NUMA support" |
342 | depends on !FLATMEM | 313 | depends on !FLATMEM |
343 | select ACPI_NUMA if ACPI | ||
344 | help | 314 | help |
345 | Say Y to compile the kernel to support NUMA (Non-Uniform Memory | 315 | Say Y to compile the kernel to support NUMA (Non-Uniform Memory |
346 | Access). This option is for configuring high-end multiprocessor | 316 | Access). This option is for configuring high-end multiprocessor |
diff --git a/arch/ia64/Kconfig.debug b/arch/ia64/Kconfig.debug index abf8d04ab6ab..40ca23bd228d 100644 --- a/arch/ia64/Kconfig.debug +++ b/arch/ia64/Kconfig.debug | |||
@@ -14,7 +14,7 @@ config IA64_GRANULE_16MB | |||
14 | 14 | ||
15 | config IA64_GRANULE_64MB | 15 | config IA64_GRANULE_64MB |
16 | bool "64MB" | 16 | bool "64MB" |
17 | depends on !(IA64_GENERIC || IA64_HP_ZX1) | 17 | depends on BROKEN |
18 | 18 | ||
19 | endchoice | 19 | endchoice |
20 | 20 | ||
diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile index 22deb5e6f346..e0bb2b6aaa35 100644 --- a/arch/ia64/Makefile +++ b/arch/ia64/Makefile | |||
@@ -50,14 +50,9 @@ head-y := arch/ia64/kernel/head.o | |||
50 | 50 | ||
51 | libs-y += arch/ia64/lib/ | 51 | libs-y += arch/ia64/lib/ |
52 | core-y += arch/ia64/kernel/ arch/ia64/mm/ | 52 | core-y += arch/ia64/kernel/ arch/ia64/mm/ |
53 | core-$(CONFIG_IA64_DIG) += arch/ia64/dig/ | ||
54 | core-$(CONFIG_IA64_GENERIC) += arch/ia64/dig/ | ||
55 | core-$(CONFIG_IA64_HP_ZX1) += arch/ia64/dig/ | ||
56 | core-$(CONFIG_IA64_SGI_UV) += arch/ia64/uv/ | 53 | core-$(CONFIG_IA64_SGI_UV) += arch/ia64/uv/ |
57 | 54 | ||
58 | drivers-y += arch/ia64/pci/ | 55 | drivers-y += arch/ia64/pci/ arch/ia64/hp/common/ |
59 | drivers-$(CONFIG_IA64_HP_ZX1) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ | ||
60 | drivers-$(CONFIG_IA64_GENERIC) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ arch/ia64/uv/ | ||
61 | drivers-$(CONFIG_OPROFILE) += arch/ia64/oprofile/ | 56 | drivers-$(CONFIG_OPROFILE) += arch/ia64/oprofile/ |
62 | 57 | ||
63 | PHONY += compressed check | 58 | PHONY += compressed check |
diff --git a/arch/ia64/configs/bigsur_defconfig b/arch/ia64/configs/bigsur_defconfig index b6bda1838629..b630bd7351c4 100644 --- a/arch/ia64/configs/bigsur_defconfig +++ b/arch/ia64/configs/bigsur_defconfig | |||
@@ -7,7 +7,6 @@ CONFIG_MODULES=y | |||
7 | CONFIG_MODULE_UNLOAD=y | 7 | CONFIG_MODULE_UNLOAD=y |
8 | CONFIG_PARTITION_ADVANCED=y | 8 | CONFIG_PARTITION_ADVANCED=y |
9 | CONFIG_SGI_PARTITION=y | 9 | CONFIG_SGI_PARTITION=y |
10 | CONFIG_IA64_DIG=y | ||
11 | CONFIG_SMP=y | 10 | CONFIG_SMP=y |
12 | CONFIG_NR_CPUS=2 | 11 | CONFIG_NR_CPUS=2 |
13 | CONFIG_PREEMPT=y | 12 | CONFIG_PREEMPT=y |
diff --git a/arch/ia64/configs/tiger_defconfig b/arch/ia64/configs/tiger_defconfig index 192ed157c9ce..1d6e2a01452b 100644 --- a/arch/ia64/configs/tiger_defconfig +++ b/arch/ia64/configs/tiger_defconfig | |||
@@ -12,7 +12,6 @@ CONFIG_MODULE_SRCVERSION_ALL=y | |||
12 | # CONFIG_BLK_DEV_BSG is not set | 12 | # CONFIG_BLK_DEV_BSG is not set |
13 | CONFIG_PARTITION_ADVANCED=y | 13 | CONFIG_PARTITION_ADVANCED=y |
14 | CONFIG_SGI_PARTITION=y | 14 | CONFIG_SGI_PARTITION=y |
15 | CONFIG_IA64_DIG=y | ||
16 | CONFIG_MCKINLEY=y | 15 | CONFIG_MCKINLEY=y |
17 | CONFIG_IA64_PAGE_SIZE_64KB=y | 16 | CONFIG_IA64_PAGE_SIZE_64KB=y |
18 | CONFIG_IA64_CYCLONE=y | 17 | CONFIG_IA64_CYCLONE=y |
diff --git a/arch/ia64/configs/zx1_defconfig b/arch/ia64/configs/zx1_defconfig index b504c8e2fd52..8c92e095f8bb 100644 --- a/arch/ia64/configs/zx1_defconfig +++ b/arch/ia64/configs/zx1_defconfig | |||
@@ -4,7 +4,6 @@ CONFIG_BLK_DEV_INITRD=y | |||
4 | CONFIG_KPROBES=y | 4 | CONFIG_KPROBES=y |
5 | CONFIG_MODULES=y | 5 | CONFIG_MODULES=y |
6 | CONFIG_PARTITION_ADVANCED=y | 6 | CONFIG_PARTITION_ADVANCED=y |
7 | CONFIG_IA64_HP_ZX1=y | ||
8 | CONFIG_MCKINLEY=y | 7 | CONFIG_MCKINLEY=y |
9 | CONFIG_SMP=y | 8 | CONFIG_SMP=y |
10 | CONFIG_NR_CPUS=16 | 9 | CONFIG_NR_CPUS=16 |
diff --git a/arch/ia64/dig/Makefile b/arch/ia64/dig/Makefile deleted file mode 100644 index 5c2f638c31f4..000000000000 --- a/arch/ia64/dig/Makefile +++ /dev/null | |||
@@ -1,10 +0,0 @@ | |||
1 | # SPDX-License-Identifier: GPL-2.0 | ||
2 | # | ||
3 | # ia64/platform/dig/Makefile | ||
4 | # | ||
5 | # Copyright (C) 1999 Silicon Graphics, Inc. | ||
6 | # Copyright (C) Srinivasa Thirumalachar (sprasad@engr.sgi.com) | ||
7 | # | ||
8 | |||
9 | obj-y := setup.o | ||
10 | obj-$(CONFIG_IA64_GENERIC) += machvec.o | ||
diff --git a/arch/ia64/dig/machvec.c b/arch/ia64/dig/machvec.c deleted file mode 100644 index 0c55bdafb473..000000000000 --- a/arch/ia64/dig/machvec.c +++ /dev/null | |||
@@ -1,3 +0,0 @@ | |||
1 | #define MACHVEC_PLATFORM_NAME dig | ||
2 | #define MACHVEC_PLATFORM_HEADER <asm/machvec_dig.h> | ||
3 | #include <asm/machvec_init.h> | ||
diff --git a/arch/ia64/dig/setup.c b/arch/ia64/dig/setup.c deleted file mode 100644 index ca8be4617b2e..000000000000 --- a/arch/ia64/dig/setup.c +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | // SPDX-License-Identifier: GPL-2.0 | ||
2 | /* | ||
3 | * Platform dependent support for DIG64 platforms. | ||
4 | * | ||
5 | * Copyright (C) 1999 Intel Corp. | ||
6 | * Copyright (C) 1999, 2001 Hewlett-Packard Co | ||
7 | * Copyright (C) 1999, 2001, 2003 David Mosberger-Tang <davidm@hpl.hp.com> | ||
8 | * Copyright (C) 1999 VA Linux Systems | ||
9 | * Copyright (C) 1999 Walt Drummond <drummond@valinux.com> | ||
10 | * Copyright (C) 1999 Vijay Chander <vijay@engr.sgi.com> | ||
11 | */ | ||
12 | |||
13 | #include <linux/init.h> | ||
14 | #include <linux/delay.h> | ||
15 | #include <linux/kernel.h> | ||
16 | #include <linux/string.h> | ||
17 | #include <linux/screen_info.h> | ||
18 | #include <linux/console.h> | ||
19 | #include <linux/timex.h> | ||
20 | #include <linux/sched.h> | ||
21 | |||
22 | #include <asm/io.h> | ||
23 | #include <asm/machvec.h> | ||
24 | #include <asm/setup.h> | ||
25 | |||
26 | void __init | ||
27 | dig_setup (char **cmdline_p) | ||
28 | { | ||
29 | #ifdef CONFIG_SMP | ||
30 | init_smp_config(); | ||
31 | #endif | ||
32 | } | ||
diff --git a/arch/ia64/hp/common/Makefile b/arch/ia64/hp/common/Makefile index 47c8f6ecb6f4..11a56ed38229 100644 --- a/arch/ia64/hp/common/Makefile +++ b/arch/ia64/hp/common/Makefile | |||
@@ -6,5 +6,5 @@ | |||
6 | # Copyright (C) Alex Williamson (alex_williamson@hp.com) | 6 | # Copyright (C) Alex Williamson (alex_williamson@hp.com) |
7 | # | 7 | # |
8 | 8 | ||
9 | obj-y := sba_iommu.o | 9 | obj-$(CONFIG_IA64_HP_SBA_IOMMU) += sba_iommu.o |
10 | obj-$(CONFIG_IA64_HP_AML_NFW) += aml_nfw.o | 10 | obj-$(CONFIG_IA64_HP_AML_NFW) += aml_nfw.o |
diff --git a/arch/ia64/hp/zx1/Makefile b/arch/ia64/hp/zx1/Makefile deleted file mode 100644 index bea44b4ed173..000000000000 --- a/arch/ia64/hp/zx1/Makefile +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | # SPDX-License-Identifier: GPL-2.0-only | ||
2 | # | ||
3 | # ia64/hp/zx1/Makefile | ||
4 | # | ||
5 | # Copyright (C) 2002 Hewlett Packard | ||
6 | # Copyright (C) Alex Williamson (alex_williamson@hp.com) | ||
7 | # | ||
8 | |||
9 | obj-$(CONFIG_IA64_GENERIC) += hpzx1_machvec.o | ||
diff --git a/arch/ia64/hp/zx1/hpzx1_machvec.c b/arch/ia64/hp/zx1/hpzx1_machvec.c deleted file mode 100644 index 32518b0f923e..000000000000 --- a/arch/ia64/hp/zx1/hpzx1_machvec.c +++ /dev/null | |||
@@ -1,3 +0,0 @@ | |||
1 | #define MACHVEC_PLATFORM_NAME hpzx1 | ||
2 | #define MACHVEC_PLATFORM_HEADER <asm/machvec_hpzx1.h> | ||
3 | #include <asm/machvec_init.h> | ||
diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h index be6bf3e499a6..f886d4dc9d55 100644 --- a/arch/ia64/include/asm/acpi.h +++ b/arch/ia64/include/asm/acpi.h | |||
@@ -32,22 +32,6 @@ static inline bool acpi_has_cpu_in_madt(void) | |||
32 | #define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */ | 32 | #define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */ |
33 | static inline void disable_acpi(void) { } | 33 | static inline void disable_acpi(void) { } |
34 | 34 | ||
35 | #ifdef CONFIG_IA64_GENERIC | ||
36 | const char *acpi_get_sysname (void); | ||
37 | #else | ||
38 | static inline const char *acpi_get_sysname (void) | ||
39 | { | ||
40 | # if defined (CONFIG_IA64_HP_ZX1) | ||
41 | return "hpzx1"; | ||
42 | # elif defined (CONFIG_IA64_SGI_UV) | ||
43 | return "uv"; | ||
44 | # elif defined (CONFIG_IA64_DIG) | ||
45 | return "dig"; | ||
46 | # else | ||
47 | # error Unknown platform. Fix acpi.c. | ||
48 | # endif | ||
49 | } | ||
50 | #endif | ||
51 | int acpi_request_vector (u32 int_type); | 35 | int acpi_request_vector (u32 int_type); |
52 | int acpi_gsi_to_irq (u32 gsi, unsigned int *irq); | 36 | int acpi_gsi_to_irq (u32 gsi, unsigned int *irq); |
53 | 37 | ||
diff --git a/arch/ia64/include/asm/hw_irq.h b/arch/ia64/include/asm/hw_irq.h index 12808111a767..e6385c7bdeb0 100644 --- a/arch/ia64/include/asm/hw_irq.h +++ b/arch/ia64/include/asm/hw_irq.h | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/types.h> | 12 | #include <linux/types.h> |
13 | #include <linux/profile.h> | 13 | #include <linux/profile.h> |
14 | 14 | ||
15 | #include <asm/machvec.h> | ||
16 | #include <asm/ptrace.h> | 15 | #include <asm/ptrace.h> |
17 | #include <asm/smp.h> | 16 | #include <asm/smp.h> |
18 | 17 | ||
@@ -56,7 +55,7 @@ typedef u8 ia64_vector; | |||
56 | extern int ia64_first_device_vector; | 55 | extern int ia64_first_device_vector; |
57 | extern int ia64_last_device_vector; | 56 | extern int ia64_last_device_vector; |
58 | 57 | ||
59 | #if defined(CONFIG_SMP) && (defined(CONFIG_IA64_GENERIC) || defined (CONFIG_IA64_DIG)) | 58 | #ifdef CONFIG_SMP |
60 | /* Reserve the lower priority vector than device vectors for "move IRQ" IPI */ | 59 | /* Reserve the lower priority vector than device vectors for "move IRQ" IPI */ |
61 | #define IA64_IRQ_MOVE_VECTOR 0x30 /* "move IRQ" IPI */ | 60 | #define IA64_IRQ_MOVE_VECTOR 0x30 /* "move IRQ" IPI */ |
62 | #define IA64_DEF_FIRST_DEVICE_VECTOR 0x31 | 61 | #define IA64_DEF_FIRST_DEVICE_VECTOR 0x31 |
@@ -127,7 +126,7 @@ extern void ia64_send_ipi (int cpu, int vector, int delivery_mode, int redirect) | |||
127 | extern void ia64_native_register_percpu_irq (ia64_vector vec, struct irqaction *action); | 126 | extern void ia64_native_register_percpu_irq (ia64_vector vec, struct irqaction *action); |
128 | extern void destroy_and_reserve_irq (unsigned int irq); | 127 | extern void destroy_and_reserve_irq (unsigned int irq); |
129 | 128 | ||
130 | #if defined(CONFIG_SMP) && (defined(CONFIG_IA64_GENERIC) || defined(CONFIG_IA64_DIG)) | 129 | #ifdef CONFIG_SMP |
131 | extern int irq_prepare_move(int irq, int cpu); | 130 | extern int irq_prepare_move(int irq, int cpu); |
132 | extern void irq_complete_move(unsigned int irq); | 131 | extern void irq_complete_move(unsigned int irq); |
133 | #else | 132 | #else |
diff --git a/arch/ia64/include/asm/io.h b/arch/ia64/include/asm/io.h index edd5c262d360..54e70c21352a 100644 --- a/arch/ia64/include/asm/io.h +++ b/arch/ia64/include/asm/io.h | |||
@@ -71,7 +71,6 @@ extern unsigned int num_io_spaces; | |||
71 | #define HAVE_ARCH_PIO_SIZE | 71 | #define HAVE_ARCH_PIO_SIZE |
72 | 72 | ||
73 | #include <asm/intrinsics.h> | 73 | #include <asm/intrinsics.h> |
74 | #include <asm/machvec.h> | ||
75 | #include <asm/page.h> | 74 | #include <asm/page.h> |
76 | #include <asm-generic/iomap.h> | 75 | #include <asm-generic/iomap.h> |
77 | 76 | ||
diff --git a/arch/ia64/include/asm/iommu.h b/arch/ia64/include/asm/iommu.h index 7429a72f3f92..679854fbdfc5 100644 --- a/arch/ia64/include/asm/iommu.h +++ b/arch/ia64/include/asm/iommu.h | |||
@@ -15,6 +15,5 @@ extern int iommu_detected; | |||
15 | #define no_iommu (1) | 15 | #define no_iommu (1) |
16 | #define iommu_detected (0) | 16 | #define iommu_detected (0) |
17 | #endif | 17 | #endif |
18 | extern void machvec_init(const char *name); | ||
19 | 18 | ||
20 | #endif | 19 | #endif |
diff --git a/arch/ia64/include/asm/machvec.h b/arch/ia64/include/asm/machvec.h deleted file mode 100644 index b22d0499b58c..000000000000 --- a/arch/ia64/include/asm/machvec.h +++ /dev/null | |||
@@ -1,69 +0,0 @@ | |||
1 | /* SPDX-License-Identifier: GPL-2.0 */ | ||
2 | /* | ||
3 | * Machine vector for IA-64. | ||
4 | * | ||
5 | * Copyright (C) 1999 Silicon Graphics, Inc. | ||
6 | * Copyright (C) Srinivasa Thirumalachar <sprasad@engr.sgi.com> | ||
7 | * Copyright (C) Vijay Chander <vijay@engr.sgi.com> | ||
8 | * Copyright (C) 1999-2001, 2003-2004 Hewlett-Packard Co. | ||
9 | * David Mosberger-Tang <davidm@hpl.hp.com> | ||
10 | */ | ||
11 | #ifndef _ASM_IA64_MACHVEC_H | ||
12 | #define _ASM_IA64_MACHVEC_H | ||
13 | |||
14 | #include <linux/types.h> | ||
15 | |||
16 | struct device; | ||
17 | |||
18 | typedef void ia64_mv_setup_t (char **); | ||
19 | |||
20 | extern void machvec_setup (char **); | ||
21 | |||
22 | # if defined (CONFIG_IA64_DIG) | ||
23 | # include <asm/machvec_dig.h> | ||
24 | # elif defined (CONFIG_IA64_HP_ZX1) | ||
25 | # include <asm/machvec_hpzx1.h> | ||
26 | # elif defined (CONFIG_IA64_SGI_UV) | ||
27 | # include <asm/machvec_uv.h> | ||
28 | # elif defined (CONFIG_IA64_GENERIC) | ||
29 | |||
30 | # ifdef MACHVEC_PLATFORM_HEADER | ||
31 | # include MACHVEC_PLATFORM_HEADER | ||
32 | # else | ||
33 | # define ia64_platform_name ia64_mv.name | ||
34 | # define platform_setup ia64_mv.setup | ||
35 | # endif | ||
36 | |||
37 | /* __attribute__((__aligned__(16))) is required to make size of the | ||
38 | * structure multiple of 16 bytes. | ||
39 | * This will fillup the holes created because of section 3.3.1 in | ||
40 | * Software Conventions guide. | ||
41 | */ | ||
42 | struct ia64_machine_vector { | ||
43 | const char *name; | ||
44 | ia64_mv_setup_t *setup; | ||
45 | } __attribute__((__aligned__(16))); /* align attrib? see above comment */ | ||
46 | |||
47 | #define MACHVEC_INIT(name) \ | ||
48 | { \ | ||
49 | #name, \ | ||
50 | platform_setup, \ | ||
51 | } | ||
52 | |||
53 | extern struct ia64_machine_vector ia64_mv; | ||
54 | extern void machvec_init (const char *name); | ||
55 | extern void machvec_init_from_cmdline(const char *cmdline); | ||
56 | |||
57 | # else | ||
58 | # error Unknown configuration. Update arch/ia64/include/asm/machvec.h. | ||
59 | # endif /* CONFIG_IA64_GENERIC */ | ||
60 | |||
61 | /* | ||
62 | * Define default versions so we can extend machvec for new platforms without having | ||
63 | * to update the machvec files for all existing platforms. | ||
64 | */ | ||
65 | #ifndef platform_setup | ||
66 | # define platform_setup machvec_setup | ||
67 | #endif | ||
68 | |||
69 | #endif /* _ASM_IA64_MACHVEC_H */ | ||
diff --git a/arch/ia64/include/asm/machvec_dig.h b/arch/ia64/include/asm/machvec_dig.h deleted file mode 100644 index bc230f69faeb..000000000000 --- a/arch/ia64/include/asm/machvec_dig.h +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | /* SPDX-License-Identifier: GPL-2.0 */ | ||
2 | #ifndef _ASM_IA64_MACHVEC_DIG_h | ||
3 | #define _ASM_IA64_MACHVEC_DIG_h | ||
4 | |||
5 | extern ia64_mv_setup_t dig_setup; | ||
6 | |||
7 | /* | ||
8 | * This stuff has dual use! | ||
9 | * | ||
10 | * For a generic kernel, the macros are used to initialize the | ||
11 | * platform's machvec structure. When compiling a non-generic kernel, | ||
12 | * the macros are used directly. | ||
13 | */ | ||
14 | #define ia64_platform_name "dig" | ||
15 | #define platform_setup dig_setup | ||
16 | |||
17 | #endif /* _ASM_IA64_MACHVEC_DIG_h */ | ||
diff --git a/arch/ia64/include/asm/machvec_hpzx1.h b/arch/ia64/include/asm/machvec_hpzx1.h deleted file mode 100644 index 7d37998ffdbf..000000000000 --- a/arch/ia64/include/asm/machvec_hpzx1.h +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | /* SPDX-License-Identifier: GPL-2.0 */ | ||
2 | #ifndef _ASM_IA64_MACHVEC_HPZX1_h | ||
3 | #define _ASM_IA64_MACHVEC_HPZX1_h | ||
4 | |||
5 | extern ia64_mv_setup_t dig_setup; | ||
6 | |||
7 | /* | ||
8 | * This stuff has dual use! | ||
9 | * | ||
10 | * For a generic kernel, the macros are used to initialize the | ||
11 | * platform's machvec structure. When compiling a non-generic kernel, | ||
12 | * the macros are used directly. | ||
13 | */ | ||
14 | #define ia64_platform_name "hpzx1" | ||
15 | #define platform_setup dig_setup | ||
16 | |||
17 | #endif /* _ASM_IA64_MACHVEC_HPZX1_h */ | ||
diff --git a/arch/ia64/include/asm/machvec_init.h b/arch/ia64/include/asm/machvec_init.h deleted file mode 100644 index 7a82e3ea0aff..000000000000 --- a/arch/ia64/include/asm/machvec_init.h +++ /dev/null | |||
@@ -1,11 +0,0 @@ | |||
1 | /* SPDX-License-Identifier: GPL-2.0 */ | ||
2 | #include <asm/iommu.h> | ||
3 | #include <asm/machvec.h> | ||
4 | |||
5 | #define MACHVEC_HELPER(name) \ | ||
6 | struct ia64_machine_vector machvec_##name __attribute__ ((unused, __section__ (".machvec"))) \ | ||
7 | = MACHVEC_INIT(name); | ||
8 | |||
9 | #define MACHVEC_DEFINE(name) MACHVEC_HELPER(name) | ||
10 | |||
11 | MACHVEC_DEFINE(MACHVEC_PLATFORM_NAME) | ||
diff --git a/arch/ia64/include/asm/machvec_uv.h b/arch/ia64/include/asm/machvec_uv.h deleted file mode 100644 index 2c50853f35ac..000000000000 --- a/arch/ia64/include/asm/machvec_uv.h +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * SGI UV Core Functions | ||
7 | * | ||
8 | * Copyright (C) 2008 Silicon Graphics, Inc. All rights reserved. | ||
9 | */ | ||
10 | |||
11 | #ifndef _ASM_IA64_MACHVEC_UV_H | ||
12 | #define _ASM_IA64_MACHVEC_UV_H | ||
13 | |||
14 | extern ia64_mv_setup_t uv_setup; | ||
15 | |||
16 | /* | ||
17 | * This stuff has dual use! | ||
18 | * | ||
19 | * For a generic kernel, the macros are used to initialize the | ||
20 | * platform's machvec structure. When compiling a non-generic kernel, | ||
21 | * the macros are used directly. | ||
22 | */ | ||
23 | #define ia64_platform_name "uv" | ||
24 | #define platform_setup uv_setup | ||
25 | |||
26 | #endif /* _ASM_IA64_MACHVEC_UV_H */ | ||
diff --git a/arch/ia64/include/asm/mmzone.h b/arch/ia64/include/asm/mmzone.h index 0ceca5f9449c..767201f66c93 100644 --- a/arch/ia64/include/asm/mmzone.h +++ b/arch/ia64/include/asm/mmzone.h | |||
@@ -27,16 +27,9 @@ static inline int pfn_to_nid(unsigned long pfn) | |||
27 | return nid; | 27 | return nid; |
28 | } | 28 | } |
29 | 29 | ||
30 | #ifdef CONFIG_IA64_DIG /* DIG systems are small */ | 30 | #define MAX_PHYSNODE_ID 2048 |
31 | # define MAX_PHYSNODE_ID 8 | ||
32 | # define NR_NODE_MEMBLKS (MAX_NUMNODES * 8) | ||
33 | #else | ||
34 | # define MAX_PHYSNODE_ID 2048 | ||
35 | # define NR_NODE_MEMBLKS (MAX_NUMNODES * 4) | ||
36 | #endif | ||
37 | |||
38 | #else /* CONFIG_NUMA */ | ||
39 | # define NR_NODE_MEMBLKS (MAX_NUMNODES * 4) | ||
40 | #endif /* CONFIG_NUMA */ | 31 | #endif /* CONFIG_NUMA */ |
41 | 32 | ||
33 | #define NR_NODE_MEMBLKS (MAX_NUMNODES * 4) | ||
34 | |||
42 | #endif /* _ASM_IA64_MMZONE_H */ | 35 | #endif /* _ASM_IA64_MMZONE_H */ |
diff --git a/arch/ia64/include/asm/processor.h b/arch/ia64/include/asm/processor.h index c91ef98ed6bf..95a2ec37400f 100644 --- a/arch/ia64/include/asm/processor.h +++ b/arch/ia64/include/asm/processor.h | |||
@@ -679,8 +679,6 @@ enum idle_boot_override {IDLE_NO_OVERRIDE=0, IDLE_HALT, IDLE_FORCE_MWAIT, | |||
679 | 679 | ||
680 | void default_idle(void); | 680 | void default_idle(void); |
681 | 681 | ||
682 | #define ia64_platform_is(x) (strcmp(x, ia64_platform_name) == 0) | ||
683 | |||
684 | #endif /* !__ASSEMBLY__ */ | 682 | #endif /* !__ASSEMBLY__ */ |
685 | 683 | ||
686 | #endif /* _ASM_IA64_PROCESSOR_H */ | 684 | #endif /* _ASM_IA64_PROCESSOR_H */ |
diff --git a/arch/ia64/include/asm/tlb.h b/arch/ia64/include/asm/tlb.h index 86ec034ba499..f1f257d632b3 100644 --- a/arch/ia64/include/asm/tlb.h +++ b/arch/ia64/include/asm/tlb.h | |||
@@ -45,7 +45,6 @@ | |||
45 | #include <asm/pgalloc.h> | 45 | #include <asm/pgalloc.h> |
46 | #include <asm/processor.h> | 46 | #include <asm/processor.h> |
47 | #include <asm/tlbflush.h> | 47 | #include <asm/tlbflush.h> |
48 | #include <asm/machvec.h> | ||
49 | 48 | ||
50 | #include <asm-generic/tlb.h> | 49 | #include <asm-generic/tlb.h> |
51 | 50 | ||
diff --git a/arch/ia64/include/asm/uv/uv.h b/arch/ia64/include/asm/uv/uv.h index 502cf1c56369..48d4526bf4cd 100644 --- a/arch/ia64/include/asm/uv/uv.h +++ b/arch/ia64/include/asm/uv/uv.h | |||
@@ -2,10 +2,29 @@ | |||
2 | #ifndef _ASM_IA64_UV_UV_H | 2 | #ifndef _ASM_IA64_UV_UV_H |
3 | #define _ASM_IA64_UV_UV_H | 3 | #define _ASM_IA64_UV_UV_H |
4 | 4 | ||
5 | #ifdef CONFIG_IA64_SGI_UV | ||
6 | extern bool ia64_is_uv; | ||
7 | |||
8 | static inline int is_uv_system(void) | ||
9 | { | ||
10 | return ia64_is_uv; | ||
11 | } | ||
12 | |||
13 | void __init uv_probe_system_type(void); | ||
14 | void __init uv_setup(char **cmdline_p); | ||
15 | #else /* CONFIG_IA64_SGI_UV */ | ||
5 | static inline int is_uv_system(void) | 16 | static inline int is_uv_system(void) |
6 | { | 17 | { |
7 | /* temporary support for running on hardware simulator */ | 18 | return false; |
8 | return ia64_platform_is("uv"); | 19 | } |
20 | |||
21 | static inline void __init uv_probe_system_type(void) | ||
22 | { | ||
23 | } | ||
24 | |||
25 | static inline void __init uv_setup(char **cmdline_p) | ||
26 | { | ||
9 | } | 27 | } |
28 | #endif /* CONFIG_IA64_SGI_UV */ | ||
10 | 29 | ||
11 | #endif /* _ASM_IA64_UV_UV_H */ | 30 | #endif /* _ASM_IA64_UV_UV_H */ |
diff --git a/arch/ia64/kernel/Makefile b/arch/ia64/kernel/Makefile index dbde36702cf2..1a8df6669eee 100644 --- a/arch/ia64/kernel/Makefile +++ b/arch/ia64/kernel/Makefile | |||
@@ -10,7 +10,7 @@ endif | |||
10 | extra-y := head.o vmlinux.lds | 10 | extra-y := head.o vmlinux.lds |
11 | 11 | ||
12 | obj-y := entry.o efi.o efi_stub.o gate-data.o fsys.o ia64_ksyms.o irq.o irq_ia64.o \ | 12 | obj-y := entry.o efi.o efi_stub.o gate-data.o fsys.o ia64_ksyms.o irq.o irq_ia64.o \ |
13 | irq_lsapic.o ivt.o machvec.o pal.o patch.o process.o perfmon.o ptrace.o sal.o \ | 13 | irq_lsapic.o ivt.o pal.o patch.o process.o perfmon.o ptrace.o sal.o \ |
14 | salinfo.o setup.o signal.o sys_ia64.o time.o traps.o unaligned.o \ | 14 | salinfo.o setup.o signal.o sys_ia64.o time.o traps.o unaligned.o \ |
15 | unwind.o mca.o mca_asm.o topology.o dma-mapping.o iosapic.o acpi.o \ | 15 | unwind.o mca.o mca_asm.o topology.o dma-mapping.o iosapic.o acpi.o \ |
16 | acpi-ext.o | 16 | acpi-ext.o |
@@ -30,7 +30,7 @@ obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o crash.o | |||
30 | obj-$(CONFIG_CRASH_DUMP) += crash_dump.o | 30 | obj-$(CONFIG_CRASH_DUMP) += crash_dump.o |
31 | obj-$(CONFIG_IA64_UNCACHED_ALLOCATOR) += uncached.o | 31 | obj-$(CONFIG_IA64_UNCACHED_ALLOCATOR) += uncached.o |
32 | obj-$(CONFIG_AUDIT) += audit.o | 32 | obj-$(CONFIG_AUDIT) += audit.o |
33 | obj-$(CONFIG_PCI_MSI) += msi_ia64.o | 33 | obj-y += msi_ia64.o |
34 | mca_recovery-y += mca_drv.o mca_drv_asm.o | 34 | mca_recovery-y += mca_drv.o mca_drv_asm.o |
35 | obj-$(CONFIG_IA64_MC_ERR_INJECT)+= err_inject.o | 35 | obj-$(CONFIG_IA64_MC_ERR_INJECT)+= err_inject.o |
36 | obj-$(CONFIG_STACKTRACE) += stacktrace.o | 36 | obj-$(CONFIG_STACKTRACE) += stacktrace.o |
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index 644f34e4342e..70d1587ddcd4 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <acpi/processor.h> | 31 | #include <acpi/processor.h> |
32 | #include <asm/io.h> | 32 | #include <asm/io.h> |
33 | #include <asm/iosapic.h> | 33 | #include <asm/iosapic.h> |
34 | #include <asm/machvec.h> | ||
35 | #include <asm/page.h> | 34 | #include <asm/page.h> |
36 | #include <asm/numa.h> | 35 | #include <asm/numa.h> |
37 | #include <asm/sal.h> | 36 | #include <asm/sal.h> |
@@ -45,60 +44,6 @@ unsigned int acpi_cpei_phys_cpuid; | |||
45 | 44 | ||
46 | unsigned long acpi_wakeup_address = 0; | 45 | unsigned long acpi_wakeup_address = 0; |
47 | 46 | ||
48 | #ifdef CONFIG_IA64_GENERIC | ||
49 | static unsigned long __init acpi_find_rsdp(void) | ||
50 | { | ||
51 | unsigned long rsdp_phys = 0; | ||
52 | |||
53 | if (efi.acpi20 != EFI_INVALID_TABLE_ADDR) | ||
54 | rsdp_phys = efi.acpi20; | ||
55 | else if (efi.acpi != EFI_INVALID_TABLE_ADDR) | ||
56 | printk(KERN_WARNING PREFIX | ||
57 | "v1.0/r0.71 tables no longer supported\n"); | ||
58 | return rsdp_phys; | ||
59 | } | ||
60 | |||
61 | const char __init * | ||
62 | acpi_get_sysname(void) | ||
63 | { | ||
64 | unsigned long rsdp_phys; | ||
65 | struct acpi_table_rsdp *rsdp; | ||
66 | struct acpi_table_xsdt *xsdt; | ||
67 | struct acpi_table_header *hdr; | ||
68 | |||
69 | rsdp_phys = acpi_find_rsdp(); | ||
70 | if (!rsdp_phys) { | ||
71 | printk(KERN_ERR | ||
72 | "ACPI 2.0 RSDP not found, default to \"dig\"\n"); | ||
73 | return "dig"; | ||
74 | } | ||
75 | |||
76 | rsdp = (struct acpi_table_rsdp *)__va(rsdp_phys); | ||
77 | if (strncmp(rsdp->signature, ACPI_SIG_RSDP, sizeof(ACPI_SIG_RSDP) - 1)) { | ||
78 | printk(KERN_ERR | ||
79 | "ACPI 2.0 RSDP signature incorrect, default to \"dig\"\n"); | ||
80 | return "dig"; | ||
81 | } | ||
82 | |||
83 | xsdt = (struct acpi_table_xsdt *)__va(rsdp->xsdt_physical_address); | ||
84 | hdr = &xsdt->header; | ||
85 | if (strncmp(hdr->signature, ACPI_SIG_XSDT, sizeof(ACPI_SIG_XSDT) - 1)) { | ||
86 | printk(KERN_ERR | ||
87 | "ACPI 2.0 XSDT signature incorrect, default to \"dig\"\n"); | ||
88 | return "dig"; | ||
89 | } | ||
90 | |||
91 | if (!strcmp(hdr->oem_id, "HP")) { | ||
92 | return "hpzx1"; | ||
93 | } else if (!strcmp(hdr->oem_id, "SGI")) { | ||
94 | if (!strcmp(hdr->oem_table_id + 4, "UV")) | ||
95 | return "uv"; | ||
96 | } | ||
97 | |||
98 | return "dig"; | ||
99 | } | ||
100 | #endif /* CONFIG_IA64_GENERIC */ | ||
101 | |||
102 | #define ACPI_MAX_PLATFORM_INTERRUPTS 256 | 47 | #define ACPI_MAX_PLATFORM_INTERRUPTS 256 |
103 | 48 | ||
104 | /* Array to record platform interrupt vectors for generic interrupt routing. */ | 49 | /* Array to record platform interrupt vectors for generic interrupt routing. */ |
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c index 2d25958a7ed7..fad4db20ce65 100644 --- a/arch/ia64/kernel/iosapic.c +++ b/arch/ia64/kernel/iosapic.c | |||
@@ -93,7 +93,6 @@ | |||
93 | #include <asm/hw_irq.h> | 93 | #include <asm/hw_irq.h> |
94 | #include <asm/io.h> | 94 | #include <asm/io.h> |
95 | #include <asm/iosapic.h> | 95 | #include <asm/iosapic.h> |
96 | #include <asm/machvec.h> | ||
97 | #include <asm/processor.h> | 96 | #include <asm/processor.h> |
98 | #include <asm/ptrace.h> | 97 | #include <asm/ptrace.h> |
99 | 98 | ||
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c index b989731bbeac..f10208478131 100644 --- a/arch/ia64/kernel/irq_ia64.c +++ b/arch/ia64/kernel/irq_ia64.c | |||
@@ -37,7 +37,6 @@ | |||
37 | #include <asm/intrinsics.h> | 37 | #include <asm/intrinsics.h> |
38 | #include <asm/io.h> | 38 | #include <asm/io.h> |
39 | #include <asm/hw_irq.h> | 39 | #include <asm/hw_irq.h> |
40 | #include <asm/machvec.h> | ||
41 | #include <asm/pgtable.h> | 40 | #include <asm/pgtable.h> |
42 | #include <asm/tlbflush.h> | 41 | #include <asm/tlbflush.h> |
43 | 42 | ||
@@ -249,7 +248,7 @@ void __setup_vector_irq(int cpu) | |||
249 | } | 248 | } |
250 | } | 249 | } |
251 | 250 | ||
252 | #if defined(CONFIG_SMP) && (defined(CONFIG_IA64_GENERIC) || defined(CONFIG_IA64_DIG)) | 251 | #ifdef CONFIG_SMP |
253 | 252 | ||
254 | static enum vector_domain_type { | 253 | static enum vector_domain_type { |
255 | VECTOR_DOMAIN_NONE, | 254 | VECTOR_DOMAIN_NONE, |
@@ -637,11 +636,9 @@ init_IRQ (void) | |||
637 | ia64_register_ipi(); | 636 | ia64_register_ipi(); |
638 | register_percpu_irq(IA64_SPURIOUS_INT_VECTOR, NULL); | 637 | register_percpu_irq(IA64_SPURIOUS_INT_VECTOR, NULL); |
639 | #ifdef CONFIG_SMP | 638 | #ifdef CONFIG_SMP |
640 | #if defined(CONFIG_IA64_GENERIC) || defined(CONFIG_IA64_DIG) | ||
641 | if (vector_domain_type != VECTOR_DOMAIN_NONE) | 639 | if (vector_domain_type != VECTOR_DOMAIN_NONE) |
642 | register_percpu_irq(IA64_IRQ_MOVE_VECTOR, &irq_move_irqaction); | 640 | register_percpu_irq(IA64_IRQ_MOVE_VECTOR, &irq_move_irqaction); |
643 | #endif | 641 | #endif |
644 | #endif | ||
645 | #ifdef CONFIG_PERFMON | 642 | #ifdef CONFIG_PERFMON |
646 | pfm_init_percpu(); | 643 | pfm_init_percpu(); |
647 | #endif | 644 | #endif |
diff --git a/arch/ia64/kernel/machvec.c b/arch/ia64/kernel/machvec.c deleted file mode 100644 index 3db3be7aaae5..000000000000 --- a/arch/ia64/kernel/machvec.c +++ /dev/null | |||
@@ -1,70 +0,0 @@ | |||
1 | // SPDX-License-Identifier: GPL-2.0 | ||
2 | #include <linux/module.h> | ||
3 | #include <linux/dma-mapping.h> | ||
4 | #include <asm/machvec.h> | ||
5 | |||
6 | #ifdef CONFIG_IA64_GENERIC | ||
7 | |||
8 | #include <linux/kernel.h> | ||
9 | #include <linux/string.h> | ||
10 | |||
11 | #include <asm/page.h> | ||
12 | |||
13 | struct ia64_machine_vector ia64_mv = { | ||
14 | }; | ||
15 | EXPORT_SYMBOL(ia64_mv); | ||
16 | |||
17 | static struct ia64_machine_vector * __init | ||
18 | lookup_machvec (const char *name) | ||
19 | { | ||
20 | extern struct ia64_machine_vector machvec_start[]; | ||
21 | extern struct ia64_machine_vector machvec_end[]; | ||
22 | struct ia64_machine_vector *mv; | ||
23 | |||
24 | for (mv = machvec_start; mv < machvec_end; ++mv) | ||
25 | if (strcmp (mv->name, name) == 0) | ||
26 | return mv; | ||
27 | |||
28 | return 0; | ||
29 | } | ||
30 | |||
31 | void __init | ||
32 | machvec_init (const char *name) | ||
33 | { | ||
34 | struct ia64_machine_vector *mv; | ||
35 | |||
36 | if (!name) | ||
37 | name = acpi_get_sysname(); | ||
38 | mv = lookup_machvec(name); | ||
39 | if (!mv) | ||
40 | panic("generic kernel failed to find machine vector for" | ||
41 | " platform %s!", name); | ||
42 | |||
43 | ia64_mv = *mv; | ||
44 | printk(KERN_INFO "booting generic kernel on platform %s\n", name); | ||
45 | } | ||
46 | |||
47 | void __init | ||
48 | machvec_init_from_cmdline(const char *cmdline) | ||
49 | { | ||
50 | char str[64]; | ||
51 | const char *start; | ||
52 | char *end; | ||
53 | |||
54 | if (! (start = strstr(cmdline, "machvec=")) ) | ||
55 | return machvec_init(NULL); | ||
56 | |||
57 | strlcpy(str, start + strlen("machvec="), sizeof(str)); | ||
58 | if ( (end = strchr(str, ' ')) ) | ||
59 | *end = '\0'; | ||
60 | |||
61 | return machvec_init(str); | ||
62 | } | ||
63 | |||
64 | #endif /* CONFIG_IA64_GENERIC */ | ||
65 | |||
66 | void | ||
67 | machvec_setup (char **arg) | ||
68 | { | ||
69 | } | ||
70 | EXPORT_SYMBOL(machvec_setup); | ||
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c index a7f05883935b..bf2cb9294795 100644 --- a/arch/ia64/kernel/mca.c +++ b/arch/ia64/kernel/mca.c | |||
@@ -91,7 +91,6 @@ | |||
91 | #include <linux/gfp.h> | 91 | #include <linux/gfp.h> |
92 | 92 | ||
93 | #include <asm/delay.h> | 93 | #include <asm/delay.h> |
94 | #include <asm/machvec.h> | ||
95 | #include <asm/meminit.h> | 94 | #include <asm/meminit.h> |
96 | #include <asm/page.h> | 95 | #include <asm/page.h> |
97 | #include <asm/ptrace.h> | 96 | #include <asm/ptrace.h> |
diff --git a/arch/ia64/kernel/mca_drv.c b/arch/ia64/kernel/mca_drv.c index cd7972ede1d6..4d0ab323dee8 100644 --- a/arch/ia64/kernel/mca_drv.c +++ b/arch/ia64/kernel/mca_drv.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/slab.h> | 26 | #include <linux/slab.h> |
27 | 27 | ||
28 | #include <asm/delay.h> | 28 | #include <asm/delay.h> |
29 | #include <asm/machvec.h> | ||
30 | #include <asm/page.h> | 29 | #include <asm/page.h> |
31 | #include <asm/ptrace.h> | 30 | #include <asm/ptrace.h> |
32 | #include <asm/sal.h> | 31 | #include <asm/sal.h> |
diff --git a/arch/ia64/kernel/pci-dma.c b/arch/ia64/kernel/pci-dma.c index c5a8df9e77d0..7885b4a22a59 100644 --- a/arch/ia64/kernel/pci-dma.c +++ b/arch/ia64/kernel/pci-dma.c | |||
@@ -10,7 +10,6 @@ | |||
10 | #include <linux/module.h> | 10 | #include <linux/module.h> |
11 | #include <linux/dmar.h> | 11 | #include <linux/dmar.h> |
12 | #include <asm/iommu.h> | 12 | #include <asm/iommu.h> |
13 | #include <asm/machvec.h> | ||
14 | #include <linux/dma-mapping.h> | 13 | #include <linux/dma-mapping.h> |
15 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
16 | #include <asm/page.h> | 15 | #include <asm/page.h> |
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c index 65d07c60f12d..18de565d5825 100644 --- a/arch/ia64/kernel/setup.c +++ b/arch/ia64/kernel/setup.c | |||
@@ -52,7 +52,6 @@ | |||
52 | #include <linux/kexec.h> | 52 | #include <linux/kexec.h> |
53 | #include <linux/crash_dump.h> | 53 | #include <linux/crash_dump.h> |
54 | 54 | ||
55 | #include <asm/machvec.h> | ||
56 | #include <asm/mca.h> | 55 | #include <asm/mca.h> |
57 | #include <asm/meminit.h> | 56 | #include <asm/meminit.h> |
58 | #include <asm/page.h> | 57 | #include <asm/page.h> |
@@ -65,11 +64,14 @@ | |||
65 | #include <asm/smp.h> | 64 | #include <asm/smp.h> |
66 | #include <asm/tlbflush.h> | 65 | #include <asm/tlbflush.h> |
67 | #include <asm/unistd.h> | 66 | #include <asm/unistd.h> |
67 | #include <asm/uv/uv.h> | ||
68 | 68 | ||
69 | #if defined(CONFIG_SMP) && (IA64_CPU_SIZE > PAGE_SIZE) | 69 | #if defined(CONFIG_SMP) && (IA64_CPU_SIZE > PAGE_SIZE) |
70 | # error "struct cpuinfo_ia64 too big!" | 70 | # error "struct cpuinfo_ia64 too big!" |
71 | #endif | 71 | #endif |
72 | 72 | ||
73 | char ia64_platform_name[64]; | ||
74 | |||
73 | #ifdef CONFIG_SMP | 75 | #ifdef CONFIG_SMP |
74 | unsigned long __per_cpu_offset[NR_CPUS]; | 76 | unsigned long __per_cpu_offset[NR_CPUS]; |
75 | EXPORT_SYMBOL(__per_cpu_offset); | 77 | EXPORT_SYMBOL(__per_cpu_offset); |
@@ -265,7 +267,7 @@ __initcall(register_memory); | |||
265 | */ | 267 | */ |
266 | static int __init check_crashkernel_memory(unsigned long pbase, size_t size) | 268 | static int __init check_crashkernel_memory(unsigned long pbase, size_t size) |
267 | { | 269 | { |
268 | if (ia64_platform_is("uv")) | 270 | if (is_uv_system()) |
269 | return 1; | 271 | return 1; |
270 | else | 272 | else |
271 | return pbase < (1UL << 32); | 273 | return pbase < (1UL << 32); |
@@ -558,15 +560,7 @@ setup_arch (char **cmdline_p) | |||
558 | efi_init(); | 560 | efi_init(); |
559 | io_port_init(); | 561 | io_port_init(); |
560 | 562 | ||
561 | #ifdef CONFIG_IA64_GENERIC | 563 | uv_probe_system_type(); |
562 | /* machvec needs to be parsed from the command line | ||
563 | * before parse_early_param() is called to ensure | ||
564 | * that ia64_mv is initialised before any command line | ||
565 | * settings may cause console setup to occur | ||
566 | */ | ||
567 | machvec_init_from_cmdline(*cmdline_p); | ||
568 | #endif | ||
569 | |||
570 | parse_early_param(); | 564 | parse_early_param(); |
571 | 565 | ||
572 | if (early_console_setup(*cmdline_p) == 0) | 566 | if (early_console_setup(*cmdline_p) == 0) |
@@ -641,7 +635,13 @@ setup_arch (char **cmdline_p) | |||
641 | */ | 635 | */ |
642 | ROOT_DEV = Root_SDA2; /* default to second partition on first drive */ | 636 | ROOT_DEV = Root_SDA2; /* default to second partition on first drive */ |
643 | 637 | ||
644 | platform_setup(cmdline_p); | 638 | if (is_uv_system()) |
639 | uv_setup(cmdline_p); | ||
640 | #ifdef CONFIG_SMP | ||
641 | else | ||
642 | init_smp_config(); | ||
643 | #endif | ||
644 | |||
645 | screen_info_setup(); | 645 | screen_info_setup(); |
646 | paging_init(); | 646 | paging_init(); |
647 | 647 | ||
diff --git a/arch/ia64/kernel/smp.c b/arch/ia64/kernel/smp.c index 4825b0b41d49..de35c54f033d 100644 --- a/arch/ia64/kernel/smp.c +++ b/arch/ia64/kernel/smp.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <linux/atomic.h> | 36 | #include <linux/atomic.h> |
37 | #include <asm/current.h> | 37 | #include <asm/current.h> |
38 | #include <asm/delay.h> | 38 | #include <asm/delay.h> |
39 | #include <asm/machvec.h> | ||
40 | #include <asm/io.h> | 39 | #include <asm/io.h> |
41 | #include <asm/irq.h> | 40 | #include <asm/irq.h> |
42 | #include <asm/page.h> | 41 | #include <asm/page.h> |
diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c index f7058659526c..6501d9a9a21b 100644 --- a/arch/ia64/kernel/smpboot.c +++ b/arch/ia64/kernel/smpboot.c | |||
@@ -47,7 +47,6 @@ | |||
47 | #include <asm/delay.h> | 47 | #include <asm/delay.h> |
48 | #include <asm/io.h> | 48 | #include <asm/io.h> |
49 | #include <asm/irq.h> | 49 | #include <asm/irq.h> |
50 | #include <asm/machvec.h> | ||
51 | #include <asm/mca.h> | 50 | #include <asm/mca.h> |
52 | #include <asm/page.h> | 51 | #include <asm/page.h> |
53 | #include <asm/pgalloc.h> | 52 | #include <asm/pgalloc.h> |
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c index d9ad93a6d825..1e95d32c8877 100644 --- a/arch/ia64/kernel/time.c +++ b/arch/ia64/kernel/time.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/platform_device.h> | 25 | #include <linux/platform_device.h> |
26 | #include <linux/sched/cputime.h> | 26 | #include <linux/sched/cputime.h> |
27 | 27 | ||
28 | #include <asm/machvec.h> | ||
29 | #include <asm/delay.h> | 28 | #include <asm/delay.h> |
30 | #include <asm/hw_irq.h> | 29 | #include <asm/hw_irq.h> |
31 | #include <asm/ptrace.h> | 30 | #include <asm/ptrace.h> |
diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S index 0da58cf8e213..d9d4e21107cd 100644 --- a/arch/ia64/kernel/vmlinux.lds.S +++ b/arch/ia64/kernel/vmlinux.lds.S | |||
@@ -141,16 +141,6 @@ SECTIONS { | |||
141 | __end___mckinley_e9_bundles = .; | 141 | __end___mckinley_e9_bundles = .; |
142 | } | 142 | } |
143 | 143 | ||
144 | #if defined(CONFIG_IA64_GENERIC) | ||
145 | /* Machine Vector */ | ||
146 | . = ALIGN(16); | ||
147 | .machvec : AT(ADDR(.machvec) - LOAD_OFFSET) { | ||
148 | machvec_start = .; | ||
149 | *(.machvec) | ||
150 | machvec_end = .; | ||
151 | } | ||
152 | #endif | ||
153 | |||
154 | #ifdef CONFIG_SMP | 144 | #ifdef CONFIG_SMP |
155 | . = ALIGN(PERCPU_PAGE_SIZE); | 145 | . = ALIGN(PERCPU_PAGE_SIZE); |
156 | __cpu0_per_cpu = .; | 146 | __cpu0_per_cpu = .; |
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c index ed3ced65705e..1979cdb61d7c 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c | |||
@@ -28,7 +28,6 @@ | |||
28 | 28 | ||
29 | #include <asm/dma.h> | 29 | #include <asm/dma.h> |
30 | #include <asm/io.h> | 30 | #include <asm/io.h> |
31 | #include <asm/machvec.h> | ||
32 | #include <asm/numa.h> | 31 | #include <asm/numa.h> |
33 | #include <asm/patch.h> | 32 | #include <asm/patch.h> |
34 | #include <asm/pgalloc.h> | 33 | #include <asm/pgalloc.h> |
diff --git a/arch/ia64/pci/fixup.c b/arch/ia64/pci/fixup.c index e1fa45b2148c..acb55a41260d 100644 --- a/arch/ia64/pci/fixup.c +++ b/arch/ia64/pci/fixup.c | |||
@@ -8,8 +8,7 @@ | |||
8 | #include <linux/init.h> | 8 | #include <linux/init.h> |
9 | #include <linux/vgaarb.h> | 9 | #include <linux/vgaarb.h> |
10 | #include <linux/screen_info.h> | 10 | #include <linux/screen_info.h> |
11 | 11 | #include <asm/uv/uv.h> | |
12 | #include <asm/machvec.h> | ||
13 | 12 | ||
14 | /* | 13 | /* |
15 | * Fixup to mark boot BIOS video selected by BIOS before it changes | 14 | * Fixup to mark boot BIOS video selected by BIOS before it changes |
@@ -35,8 +34,7 @@ static void pci_fixup_video(struct pci_dev *pdev) | |||
35 | u16 config; | 34 | u16 config; |
36 | struct resource *res; | 35 | struct resource *res; |
37 | 36 | ||
38 | if ((strcmp(ia64_platform_name, "dig") != 0) | 37 | if (is_uv_system()) |
39 | && (strcmp(ia64_platform_name, "hpzx1") != 0)) | ||
40 | return; | 38 | return; |
41 | /* Maybe, this machine supports legacy memory map. */ | 39 | /* Maybe, this machine supports legacy memory map. */ |
42 | 40 | ||
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c index 89c9f36dc94d..211757e34198 100644 --- a/arch/ia64/pci/pci.c +++ b/arch/ia64/pci/pci.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <linux/memblock.h> | 24 | #include <linux/memblock.h> |
25 | #include <linux/export.h> | 25 | #include <linux/export.h> |
26 | 26 | ||
27 | #include <asm/machvec.h> | ||
28 | #include <asm/page.h> | 27 | #include <asm/page.h> |
29 | #include <asm/io.h> | 28 | #include <asm/io.h> |
30 | #include <asm/sal.h> | 29 | #include <asm/sal.h> |
diff --git a/arch/ia64/uv/kernel/Makefile b/arch/ia64/uv/kernel/Makefile index 124e441d383d..297196578d19 100644 --- a/arch/ia64/uv/kernel/Makefile +++ b/arch/ia64/uv/kernel/Makefile | |||
@@ -10,4 +10,3 @@ | |||
10 | ccflags-y := -Iarch/ia64/sn/include | 10 | ccflags-y := -Iarch/ia64/sn/include |
11 | 11 | ||
12 | obj-y += setup.o | 12 | obj-y += setup.o |
13 | obj-$(CONFIG_IA64_GENERIC) += machvec.o | ||
diff --git a/arch/ia64/uv/kernel/machvec.c b/arch/ia64/uv/kernel/machvec.c deleted file mode 100644 index 50737a9dca74..000000000000 --- a/arch/ia64/uv/kernel/machvec.c +++ /dev/null | |||
@@ -1,11 +0,0 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (c) 2008 Silicon Graphics, Inc. All Rights Reserved. | ||
7 | */ | ||
8 | |||
9 | #define MACHVEC_PLATFORM_NAME uv | ||
10 | #define MACHVEC_PLATFORM_HEADER <asm/machvec_uv.h> | ||
11 | #include <asm/machvec_init.h> | ||
diff --git a/arch/ia64/uv/kernel/setup.c b/arch/ia64/uv/kernel/setup.c index b081f5138f5c..bb025486d791 100644 --- a/arch/ia64/uv/kernel/setup.c +++ b/arch/ia64/uv/kernel/setup.c | |||
@@ -8,11 +8,17 @@ | |||
8 | * Copyright (C) 2008 Silicon Graphics, Inc. All rights reserved. | 8 | * Copyright (C) 2008 Silicon Graphics, Inc. All rights reserved. |
9 | */ | 9 | */ |
10 | 10 | ||
11 | #include <linux/acpi.h> | ||
12 | #include <linux/efi.h> | ||
11 | #include <linux/module.h> | 13 | #include <linux/module.h> |
12 | #include <linux/percpu.h> | 14 | #include <linux/percpu.h> |
15 | #include <asm/uv/uv.h> | ||
13 | #include <asm/uv/uv_mmrs.h> | 16 | #include <asm/uv/uv_mmrs.h> |
14 | #include <asm/uv/uv_hub.h> | 17 | #include <asm/uv/uv_hub.h> |
15 | 18 | ||
19 | bool ia64_is_uv; | ||
20 | EXPORT_SYMBOL_GPL(ia64_is_uv); | ||
21 | |||
16 | DEFINE_PER_CPU(struct uv_hub_info_s, __uv_hub_info); | 22 | DEFINE_PER_CPU(struct uv_hub_info_s, __uv_hub_info); |
17 | EXPORT_PER_CPU_SYMBOL_GPL(__uv_hub_info); | 23 | EXPORT_PER_CPU_SYMBOL_GPL(__uv_hub_info); |
18 | 24 | ||
@@ -47,6 +53,34 @@ static __init void get_lowmem_redirect(unsigned long *base, unsigned long *size) | |||
47 | BUG(); | 53 | BUG(); |
48 | } | 54 | } |
49 | 55 | ||
56 | void __init uv_probe_system_type(void) | ||
57 | { | ||
58 | struct acpi_table_rsdp *rsdp; | ||
59 | struct acpi_table_xsdt *xsdt; | ||
60 | |||
61 | if (efi.acpi20 == EFI_INVALID_TABLE_ADDR) { | ||
62 | pr_err("ACPI 2.0 RSDP not found.\n"); | ||
63 | return; | ||
64 | } | ||
65 | |||
66 | rsdp = (struct acpi_table_rsdp *)__va(efi.acpi20); | ||
67 | if (strncmp(rsdp->signature, ACPI_SIG_RSDP, sizeof(ACPI_SIG_RSDP) - 1)) { | ||
68 | pr_err("ACPI 2.0 RSDP signature incorrect.\n"); | ||
69 | return; | ||
70 | } | ||
71 | |||
72 | xsdt = (struct acpi_table_xsdt *)__va(rsdp->xsdt_physical_address); | ||
73 | if (strncmp(xsdt->header.signature, ACPI_SIG_XSDT, | ||
74 | sizeof(ACPI_SIG_XSDT) - 1)) { | ||
75 | pr_err("ACPI 2.0 XSDT signature incorrect.\n"); | ||
76 | return; | ||
77 | } | ||
78 | |||
79 | if (!strcmp(xsdt->header.oem_id, "SGI") && | ||
80 | !strcmp(xsdt->header.oem_table_id + 4, "UV")) | ||
81 | ia64_is_uv = true; | ||
82 | } | ||
83 | |||
50 | void __init uv_setup(char **cmdline_p) | 84 | void __init uv_setup(char **cmdline_p) |
51 | { | 85 | { |
52 | union uvh_si_addr_map_config_u m_n_config; | 86 | union uvh_si_addr_map_config_u m_n_config; |
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig index 06a16dc5cfb5..ebe1e9e5fd81 100644 --- a/drivers/acpi/Kconfig +++ b/drivers/acpi/Kconfig | |||
@@ -323,7 +323,7 @@ config ACPI_NUMA | |||
323 | bool "NUMA support" | 323 | bool "NUMA support" |
324 | depends on NUMA | 324 | depends on NUMA |
325 | depends on (X86 || IA64 || ARM64) | 325 | depends on (X86 || IA64 || ARM64) |
326 | default y if IA64_GENERIC || ARM64 | 326 | default y if IA64 || ARM64 |
327 | 327 | ||
328 | config ACPI_CUSTOM_DSDT_FILE | 328 | config ACPI_CUSTOM_DSDT_FILE |
329 | string "Custom DSDT Table file to include" | 329 | string "Custom DSDT Table file to include" |
diff --git a/drivers/char/agp/Kconfig b/drivers/char/agp/Kconfig index 42d45e97c2ae..812d6aa6e013 100644 --- a/drivers/char/agp/Kconfig +++ b/drivers/char/agp/Kconfig | |||
@@ -111,14 +111,14 @@ config AGP_VIA | |||
111 | 111 | ||
112 | config AGP_I460 | 112 | config AGP_I460 |
113 | tristate "Intel 460GX chipset support" | 113 | tristate "Intel 460GX chipset support" |
114 | depends on AGP && (IA64_DIG || IA64_GENERIC) | 114 | depends on AGP && IA64 |
115 | help | 115 | help |
116 | This option gives you AGP GART support for the Intel 460GX chipset | 116 | This option gives you AGP GART support for the Intel 460GX chipset |
117 | for IA64 processors. | 117 | for IA64 processors. |
118 | 118 | ||
119 | config AGP_HP_ZX1 | 119 | config AGP_HP_ZX1 |
120 | tristate "HP ZX1 chipset AGP support" | 120 | tristate "HP ZX1 chipset AGP support" |
121 | depends on AGP && (IA64_HP_ZX1 || IA64_GENERIC) | 121 | depends on AGP && IA64 |
122 | help | 122 | help |
123 | This option gives you AGP GART support for the HP ZX1 chipset | 123 | This option gives you AGP GART support for the HP ZX1 chipset |
124 | for IA64 processors. | 124 | for IA64 processors. |
diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig index e15cdcd8cb3c..9a618459d067 100644 --- a/drivers/iommu/Kconfig +++ b/drivers/iommu/Kconfig | |||
@@ -177,7 +177,7 @@ config DMAR_TABLE | |||
177 | 177 | ||
178 | config INTEL_IOMMU | 178 | config INTEL_IOMMU |
179 | bool "Support for Intel IOMMU using DMA Remapping Devices" | 179 | bool "Support for Intel IOMMU using DMA Remapping Devices" |
180 | depends on PCI_MSI && ACPI && (X86 || IA64_GENERIC) | 180 | depends on PCI_MSI && ACPI && (X86 || IA64) |
181 | select IOMMU_API | 181 | select IOMMU_API |
182 | select IOMMU_IOVA | 182 | select IOMMU_IOVA |
183 | select NEED_DMA_MAP_STATE | 183 | select NEED_DMA_MAP_STATE |
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig index 423d2d26d8f7..4ef2b751410c 100644 --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig | |||
@@ -188,7 +188,7 @@ config ENCLOSURE_SERVICES | |||
188 | config SGI_XP | 188 | config SGI_XP |
189 | tristate "Support communication between SGI SSIs" | 189 | tristate "Support communication between SGI SSIs" |
190 | depends on NET | 190 | depends on NET |
191 | depends on (IA64_GENERIC || IA64_SGI_UV || X86_UV) && SMP | 191 | depends on (IA64_SGI_UV || X86_UV) && SMP |
192 | depends on X86_64 || BROKEN | 192 | depends on X86_64 || BROKEN |
193 | select SGI_GRU if X86_64 && SMP | 193 | select SGI_GRU if X86_64 && SMP |
194 | ---help--- | 194 | ---help--- |
diff --git a/drivers/misc/sgi-xp/xp_uv.c b/drivers/misc/sgi-xp/xp_uv.c index 5e335e93459c..f15a9f2ac1dd 100644 --- a/drivers/misc/sgi-xp/xp_uv.c +++ b/drivers/misc/sgi-xp/xp_uv.c | |||
@@ -17,7 +17,7 @@ | |||
17 | #include <asm/uv/uv_hub.h> | 17 | #include <asm/uv/uv_hub.h> |
18 | #if defined CONFIG_X86_64 | 18 | #if defined CONFIG_X86_64 |
19 | #include <asm/uv/bios.h> | 19 | #include <asm/uv/bios.h> |
20 | #elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV | 20 | #elif defined CONFIG_IA64_SGI_UV |
21 | #include <asm/sn/sn_sal.h> | 21 | #include <asm/sn/sn_sal.h> |
22 | #endif | 22 | #endif |
23 | #include "../sgi-gru/grukservices.h" | 23 | #include "../sgi-gru/grukservices.h" |
@@ -99,7 +99,7 @@ xp_expand_memprotect_uv(unsigned long phys_addr, unsigned long size) | |||
99 | return xpBiosError; | 99 | return xpBiosError; |
100 | } | 100 | } |
101 | 101 | ||
102 | #elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV | 102 | #elif defined CONFIG_IA64_SGI_UV |
103 | u64 nasid_array; | 103 | u64 nasid_array; |
104 | 104 | ||
105 | ret = sn_change_memprotect(phys_addr, size, SN_MEMPROT_ACCESS_CLASS_1, | 105 | ret = sn_change_memprotect(phys_addr, size, SN_MEMPROT_ACCESS_CLASS_1, |
@@ -129,7 +129,7 @@ xp_restrict_memprotect_uv(unsigned long phys_addr, unsigned long size) | |||
129 | return xpBiosError; | 129 | return xpBiosError; |
130 | } | 130 | } |
131 | 131 | ||
132 | #elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV | 132 | #elif defined CONFIG_IA64_SGI_UV |
133 | u64 nasid_array; | 133 | u64 nasid_array; |
134 | 134 | ||
135 | ret = sn_change_memprotect(phys_addr, size, SN_MEMPROT_ACCESS_CLASS_0, | 135 | ret = sn_change_memprotect(phys_addr, size, SN_MEMPROT_ACCESS_CLASS_0, |
diff --git a/drivers/misc/sgi-xp/xpc_uv.c b/drivers/misc/sgi-xp/xpc_uv.c index d8a6fe16e4f5..09e24659ef3d 100644 --- a/drivers/misc/sgi-xp/xpc_uv.c +++ b/drivers/misc/sgi-xp/xpc_uv.c | |||
@@ -27,7 +27,7 @@ | |||
27 | #if defined CONFIG_X86_64 | 27 | #if defined CONFIG_X86_64 |
28 | #include <asm/uv/bios.h> | 28 | #include <asm/uv/bios.h> |
29 | #include <asm/uv/uv_irq.h> | 29 | #include <asm/uv/uv_irq.h> |
30 | #elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV | 30 | #elif defined CONFIG_IA64_SGI_UV |
31 | #include <asm/sn/intr.h> | 31 | #include <asm/sn/intr.h> |
32 | #include <asm/sn/sn_sal.h> | 32 | #include <asm/sn/sn_sal.h> |
33 | #endif | 33 | #endif |
@@ -35,7 +35,7 @@ | |||
35 | #include "../sgi-gru/grukservices.h" | 35 | #include "../sgi-gru/grukservices.h" |
36 | #include "xpc.h" | 36 | #include "xpc.h" |
37 | 37 | ||
38 | #if defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV | 38 | #if defined CONFIG_IA64_SGI_UV |
39 | struct uv_IO_APIC_route_entry { | 39 | struct uv_IO_APIC_route_entry { |
40 | __u64 vector : 8, | 40 | __u64 vector : 8, |
41 | delivery_mode : 3, | 41 | delivery_mode : 3, |
@@ -121,7 +121,7 @@ xpc_get_gru_mq_irq_uv(struct xpc_gru_mq_uv *mq, int cpu, char *irq_name) | |||
121 | 121 | ||
122 | mq->mmr_value = uv_read_global_mmr64(mmr_pnode, mq->mmr_offset); | 122 | mq->mmr_value = uv_read_global_mmr64(mmr_pnode, mq->mmr_offset); |
123 | 123 | ||
124 | #elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV | 124 | #elif defined CONFIG_IA64_SGI_UV |
125 | if (strcmp(irq_name, XPC_ACTIVATE_IRQ_NAME) == 0) | 125 | if (strcmp(irq_name, XPC_ACTIVATE_IRQ_NAME) == 0) |
126 | mq->irq = SGI_XPC_ACTIVATE; | 126 | mq->irq = SGI_XPC_ACTIVATE; |
127 | else if (strcmp(irq_name, XPC_NOTIFY_IRQ_NAME) == 0) | 127 | else if (strcmp(irq_name, XPC_NOTIFY_IRQ_NAME) == 0) |
@@ -144,7 +144,7 @@ xpc_release_gru_mq_irq_uv(struct xpc_gru_mq_uv *mq) | |||
144 | #if defined CONFIG_X86_64 | 144 | #if defined CONFIG_X86_64 |
145 | uv_teardown_irq(mq->irq); | 145 | uv_teardown_irq(mq->irq); |
146 | 146 | ||
147 | #elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV | 147 | #elif defined CONFIG_IA64_SGI_UV |
148 | int mmr_pnode; | 148 | int mmr_pnode; |
149 | unsigned long mmr_value; | 149 | unsigned long mmr_value; |
150 | 150 | ||
@@ -162,7 +162,7 @@ xpc_gru_mq_watchlist_alloc_uv(struct xpc_gru_mq_uv *mq) | |||
162 | { | 162 | { |
163 | int ret; | 163 | int ret; |
164 | 164 | ||
165 | #if defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV | 165 | #if defined CONFIG_IA64_SGI_UV |
166 | int mmr_pnode = uv_blade_to_pnode(mq->mmr_blade); | 166 | int mmr_pnode = uv_blade_to_pnode(mq->mmr_blade); |
167 | 167 | ||
168 | ret = sn_mq_watchlist_alloc(mmr_pnode, (void *)uv_gpa(mq->address), | 168 | ret = sn_mq_watchlist_alloc(mmr_pnode, (void *)uv_gpa(mq->address), |
@@ -197,7 +197,7 @@ xpc_gru_mq_watchlist_free_uv(struct xpc_gru_mq_uv *mq) | |||
197 | #if defined CONFIG_X86_64 | 197 | #if defined CONFIG_X86_64 |
198 | ret = uv_bios_mq_watchlist_free(mmr_pnode, mq->watchlist_num); | 198 | ret = uv_bios_mq_watchlist_free(mmr_pnode, mq->watchlist_num); |
199 | BUG_ON(ret != BIOS_STATUS_SUCCESS); | 199 | BUG_ON(ret != BIOS_STATUS_SUCCESS); |
200 | #elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV | 200 | #elif defined CONFIG_IA64_SGI_UV |
201 | ret = sn_mq_watchlist_free(mmr_pnode, mq->watchlist_num); | 201 | ret = sn_mq_watchlist_free(mmr_pnode, mq->watchlist_num); |
202 | BUG_ON(ret != SALRET_OK); | 202 | BUG_ON(ret != SALRET_OK); |
203 | #else | 203 | #else |
@@ -796,7 +796,7 @@ xpc_get_partition_rsvd_page_pa_uv(void *buf, u64 *cookie, unsigned long *rp_pa, | |||
796 | else | 796 | else |
797 | ret = xpBiosError; | 797 | ret = xpBiosError; |
798 | 798 | ||
799 | #elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV | 799 | #elif defined CONFIG_IA64_SGI_UV |
800 | status = sn_partition_reserved_page_pa((u64)buf, cookie, rp_pa, len); | 800 | status = sn_partition_reserved_page_pa((u64)buf, cookie, rp_pa, len); |
801 | if (status == SALRET_OK) | 801 | if (status == SALRET_OK) |
802 | ret = xpSuccess; | 802 | ret = xpSuccess; |