summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2019-08-13 03:25:12 -0400
committerTony Luck <tony.luck@intel.com>2019-08-16 17:32:26 -0400
commitdf41017eafd267c08acbfff99d34e4f96bbfbc92 (patch)
tree6c6147f0ecc52dbf1ea066ba739a83ad0526712a
parenta8384e6ce5231d4f697f2dca1de4ff6bed7f3890 (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>
-rw-r--r--arch/ia64/Kconfig72
-rw-r--r--arch/ia64/Kconfig.debug2
-rw-r--r--arch/ia64/Makefile7
-rw-r--r--arch/ia64/configs/bigsur_defconfig1
-rw-r--r--arch/ia64/configs/tiger_defconfig1
-rw-r--r--arch/ia64/configs/zx1_defconfig1
-rw-r--r--arch/ia64/dig/Makefile10
-rw-r--r--arch/ia64/dig/machvec.c3
-rw-r--r--arch/ia64/dig/setup.c32
-rw-r--r--arch/ia64/hp/common/Makefile2
-rw-r--r--arch/ia64/hp/zx1/Makefile9
-rw-r--r--arch/ia64/hp/zx1/hpzx1_machvec.c3
-rw-r--r--arch/ia64/include/asm/acpi.h16
-rw-r--r--arch/ia64/include/asm/hw_irq.h5
-rw-r--r--arch/ia64/include/asm/io.h1
-rw-r--r--arch/ia64/include/asm/iommu.h1
-rw-r--r--arch/ia64/include/asm/machvec.h69
-rw-r--r--arch/ia64/include/asm/machvec_dig.h17
-rw-r--r--arch/ia64/include/asm/machvec_hpzx1.h17
-rw-r--r--arch/ia64/include/asm/machvec_init.h11
-rw-r--r--arch/ia64/include/asm/machvec_uv.h26
-rw-r--r--arch/ia64/include/asm/mmzone.h13
-rw-r--r--arch/ia64/include/asm/processor.h2
-rw-r--r--arch/ia64/include/asm/tlb.h1
-rw-r--r--arch/ia64/include/asm/uv/uv.h23
-rw-r--r--arch/ia64/kernel/Makefile4
-rw-r--r--arch/ia64/kernel/acpi.c55
-rw-r--r--arch/ia64/kernel/iosapic.c1
-rw-r--r--arch/ia64/kernel/irq_ia64.c5
-rw-r--r--arch/ia64/kernel/machvec.c70
-rw-r--r--arch/ia64/kernel/mca.c1
-rw-r--r--arch/ia64/kernel/mca_drv.c1
-rw-r--r--arch/ia64/kernel/pci-dma.c1
-rw-r--r--arch/ia64/kernel/setup.c24
-rw-r--r--arch/ia64/kernel/smp.c1
-rw-r--r--arch/ia64/kernel/smpboot.c1
-rw-r--r--arch/ia64/kernel/time.c1
-rw-r--r--arch/ia64/kernel/vmlinux.lds.S10
-rw-r--r--arch/ia64/mm/init.c1
-rw-r--r--arch/ia64/pci/fixup.c6
-rw-r--r--arch/ia64/pci/pci.c1
-rw-r--r--arch/ia64/uv/kernel/Makefile1
-rw-r--r--arch/ia64/uv/kernel/machvec.c11
-rw-r--r--arch/ia64/uv/kernel/setup.c34
-rw-r--r--drivers/acpi/Kconfig2
-rw-r--r--drivers/char/agp/Kconfig4
-rw-r--r--drivers/iommu/Kconfig2
-rw-r--r--drivers/misc/Kconfig2
-rw-r--r--drivers/misc/sgi-xp/xp_uv.c6
-rw-r--r--drivers/misc/sgi-xp/xpc_uv.c14
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
122choice 126choice
123 prompt "System type"
124 default IA64_GENERIC
125
126config 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
145config IA64_DIG
146 bool "DIG-compliant"
147 select SWIOTLB
148
149config 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
155config 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
167endchoice
168
169choice
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
190config 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
197config 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
233config IA64_CYCLONE 204config 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
336config ARCH_DISCONTIGMEM_DEFAULT 307config 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
340config NUMA 311config 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
15config IA64_GRANULE_64MB 15config IA64_GRANULE_64MB
16 bool "64MB" 16 bool "64MB"
17 depends on !(IA64_GENERIC || IA64_HP_ZX1) 17 depends on BROKEN
18 18
19endchoice 19endchoice
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
51libs-y += arch/ia64/lib/ 51libs-y += arch/ia64/lib/
52core-y += arch/ia64/kernel/ arch/ia64/mm/ 52core-y += arch/ia64/kernel/ arch/ia64/mm/
53core-$(CONFIG_IA64_DIG) += arch/ia64/dig/
54core-$(CONFIG_IA64_GENERIC) += arch/ia64/dig/
55core-$(CONFIG_IA64_HP_ZX1) += arch/ia64/dig/
56core-$(CONFIG_IA64_SGI_UV) += arch/ia64/uv/ 53core-$(CONFIG_IA64_SGI_UV) += arch/ia64/uv/
57 54
58drivers-y += arch/ia64/pci/ 55drivers-y += arch/ia64/pci/ arch/ia64/hp/common/
59drivers-$(CONFIG_IA64_HP_ZX1) += arch/ia64/hp/common/ arch/ia64/hp/zx1/
60drivers-$(CONFIG_IA64_GENERIC) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ arch/ia64/uv/
61drivers-$(CONFIG_OPROFILE) += arch/ia64/oprofile/ 56drivers-$(CONFIG_OPROFILE) += arch/ia64/oprofile/
62 57
63PHONY += compressed check 58PHONY += 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
7CONFIG_MODULE_UNLOAD=y 7CONFIG_MODULE_UNLOAD=y
8CONFIG_PARTITION_ADVANCED=y 8CONFIG_PARTITION_ADVANCED=y
9CONFIG_SGI_PARTITION=y 9CONFIG_SGI_PARTITION=y
10CONFIG_IA64_DIG=y
11CONFIG_SMP=y 10CONFIG_SMP=y
12CONFIG_NR_CPUS=2 11CONFIG_NR_CPUS=2
13CONFIG_PREEMPT=y 12CONFIG_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
13CONFIG_PARTITION_ADVANCED=y 13CONFIG_PARTITION_ADVANCED=y
14CONFIG_SGI_PARTITION=y 14CONFIG_SGI_PARTITION=y
15CONFIG_IA64_DIG=y
16CONFIG_MCKINLEY=y 15CONFIG_MCKINLEY=y
17CONFIG_IA64_PAGE_SIZE_64KB=y 16CONFIG_IA64_PAGE_SIZE_64KB=y
18CONFIG_IA64_CYCLONE=y 17CONFIG_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
4CONFIG_KPROBES=y 4CONFIG_KPROBES=y
5CONFIG_MODULES=y 5CONFIG_MODULES=y
6CONFIG_PARTITION_ADVANCED=y 6CONFIG_PARTITION_ADVANCED=y
7CONFIG_IA64_HP_ZX1=y
8CONFIG_MCKINLEY=y 7CONFIG_MCKINLEY=y
9CONFIG_SMP=y 8CONFIG_SMP=y
10CONFIG_NR_CPUS=16 9CONFIG_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
9obj-y := setup.o
10obj-$(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
26void __init
27dig_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
9obj-y := sba_iommu.o 9obj-$(CONFIG_IA64_HP_SBA_IOMMU) += sba_iommu.o
10obj-$(CONFIG_IA64_HP_AML_NFW) += aml_nfw.o 10obj-$(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
9obj-$(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 :) */
33static inline void disable_acpi(void) { } 33static inline void disable_acpi(void) { }
34 34
35#ifdef CONFIG_IA64_GENERIC
36const char *acpi_get_sysname (void);
37#else
38static 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
51int acpi_request_vector (u32 int_type); 35int acpi_request_vector (u32 int_type);
52int acpi_gsi_to_irq (u32 gsi, unsigned int *irq); 36int 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;
56extern int ia64_first_device_vector; 55extern int ia64_first_device_vector;
57extern int ia64_last_device_vector; 56extern 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)
127extern void ia64_native_register_percpu_irq (ia64_vector vec, struct irqaction *action); 126extern void ia64_native_register_percpu_irq (ia64_vector vec, struct irqaction *action);
128extern void destroy_and_reserve_irq (unsigned int irq); 127extern 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
131extern int irq_prepare_move(int irq, int cpu); 130extern int irq_prepare_move(int irq, int cpu);
132extern void irq_complete_move(unsigned int irq); 131extern 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
18extern 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
16struct device;
17
18typedef void ia64_mv_setup_t (char **);
19
20extern 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 */
42struct 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
53extern struct ia64_machine_vector ia64_mv;
54extern void machvec_init (const char *name);
55extern 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
5extern 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
5extern 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
11MACHVEC_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
14extern 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
680void default_idle(void); 680void 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
6extern bool ia64_is_uv;
7
8static inline int is_uv_system(void)
9{
10 return ia64_is_uv;
11}
12
13void __init uv_probe_system_type(void);
14void __init uv_setup(char **cmdline_p);
15#else /* CONFIG_IA64_SGI_UV */
5static inline int is_uv_system(void) 16static 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
21static inline void __init uv_probe_system_type(void)
22{
23}
24
25static 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
10extra-y := head.o vmlinux.lds 10extra-y := head.o vmlinux.lds
11 11
12obj-y := entry.o efi.o efi_stub.o gate-data.o fsys.o ia64_ksyms.o irq.o irq_ia64.o \ 12obj-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
30obj-$(CONFIG_CRASH_DUMP) += crash_dump.o 30obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
31obj-$(CONFIG_IA64_UNCACHED_ALLOCATOR) += uncached.o 31obj-$(CONFIG_IA64_UNCACHED_ALLOCATOR) += uncached.o
32obj-$(CONFIG_AUDIT) += audit.o 32obj-$(CONFIG_AUDIT) += audit.o
33obj-$(CONFIG_PCI_MSI) += msi_ia64.o 33obj-y += msi_ia64.o
34mca_recovery-y += mca_drv.o mca_drv_asm.o 34mca_recovery-y += mca_drv.o mca_drv_asm.o
35obj-$(CONFIG_IA64_MC_ERR_INJECT)+= err_inject.o 35obj-$(CONFIG_IA64_MC_ERR_INJECT)+= err_inject.o
36obj-$(CONFIG_STACKTRACE) += stacktrace.o 36obj-$(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
46unsigned long acpi_wakeup_address = 0; 45unsigned long acpi_wakeup_address = 0;
47 46
48#ifdef CONFIG_IA64_GENERIC
49static 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
61const char __init *
62acpi_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
254static enum vector_domain_type { 253static 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
13struct ia64_machine_vector ia64_mv = {
14};
15EXPORT_SYMBOL(ia64_mv);
16
17static struct ia64_machine_vector * __init
18lookup_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
31void __init
32machvec_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
47void __init
48machvec_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
66void
67machvec_setup (char **arg)
68{
69}
70EXPORT_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
73char ia64_platform_name[64];
74
73#ifdef CONFIG_SMP 75#ifdef CONFIG_SMP
74unsigned long __per_cpu_offset[NR_CPUS]; 76unsigned long __per_cpu_offset[NR_CPUS];
75EXPORT_SYMBOL(__per_cpu_offset); 77EXPORT_SYMBOL(__per_cpu_offset);
@@ -265,7 +267,7 @@ __initcall(register_memory);
265 */ 267 */
266static int __init check_crashkernel_memory(unsigned long pbase, size_t size) 268static 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 @@
10ccflags-y := -Iarch/ia64/sn/include 10ccflags-y := -Iarch/ia64/sn/include
11 11
12obj-y += setup.o 12obj-y += setup.o
13obj-$(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
19bool ia64_is_uv;
20EXPORT_SYMBOL_GPL(ia64_is_uv);
21
16DEFINE_PER_CPU(struct uv_hub_info_s, __uv_hub_info); 22DEFINE_PER_CPU(struct uv_hub_info_s, __uv_hub_info);
17EXPORT_PER_CPU_SYMBOL_GPL(__uv_hub_info); 23EXPORT_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
56void __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
50void __init uv_setup(char **cmdline_p) 84void __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
328config ACPI_CUSTOM_DSDT_FILE 328config 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
112config AGP_I460 112config 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
119config AGP_HP_ZX1 119config 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
178config INTEL_IOMMU 178config 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
188config SGI_XP 188config 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
39struct uv_IO_APIC_route_entry { 39struct 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;