ia64: remove support for machvecs
authorChristoph Hellwig <hch@lst.de>
Tue, 13 Aug 2019 07:25:12 +0000 (09:25 +0200)
committerTony Luck <tony.luck@intel.com>
Fri, 16 Aug 2019 21:32:26 +0000 (14:32 -0700)
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:
arch/ia64/Kconfig
arch/ia64/Kconfig.debug
arch/ia64/Makefile
arch/ia64/configs/bigsur_defconfig
arch/ia64/configs/tiger_defconfig
arch/ia64/configs/zx1_defconfig
arch/ia64/dig/Makefile [deleted file]
arch/ia64/dig/machvec.c [deleted file]
arch/ia64/dig/setup.c [deleted file]
arch/ia64/hp/common/Makefile
arch/ia64/hp/zx1/Makefile [deleted file]
arch/ia64/hp/zx1/hpzx1_machvec.c [deleted file]
arch/ia64/include/asm/acpi.h
arch/ia64/include/asm/hw_irq.h
arch/ia64/include/asm/io.h
arch/ia64/include/asm/iommu.h
arch/ia64/include/asm/machvec.h [deleted file]
arch/ia64/include/asm/machvec_dig.h [deleted file]
arch/ia64/include/asm/machvec_hpzx1.h [deleted file]
arch/ia64/include/asm/machvec_init.h [deleted file]
arch/ia64/include/asm/machvec_uv.h [deleted file]
arch/ia64/include/asm/mmzone.h
arch/ia64/include/asm/processor.h
arch/ia64/include/asm/tlb.h
arch/ia64/include/asm/uv/uv.h
arch/ia64/kernel/Makefile
arch/ia64/kernel/acpi.c
arch/ia64/kernel/iosapic.c
arch/ia64/kernel/irq_ia64.c
arch/ia64/kernel/machvec.c [deleted file]
arch/ia64/kernel/mca.c
arch/ia64/kernel/mca_drv.c
arch/ia64/kernel/pci-dma.c
arch/ia64/kernel/setup.c
arch/ia64/kernel/smp.c
arch/ia64/kernel/smpboot.c
arch/ia64/kernel/time.c
arch/ia64/kernel/vmlinux.lds.S
arch/ia64/mm/init.c
arch/ia64/pci/fixup.c
arch/ia64/pci/pci.c
arch/ia64/uv/kernel/Makefile
arch/ia64/uv/kernel/machvec.c [deleted file]
arch/ia64/uv/kernel/setup.c
drivers/acpi/Kconfig
drivers/char/agp/Kconfig
drivers/iommu/Kconfig
drivers/misc/Kconfig
drivers/misc/sgi-xp/xp_uv.c
drivers/misc/sgi-xp/xpc_uv.c

index 9a8c7ec..13d49c2 100644 (file)
@@ -11,11 +11,13 @@ config IA64
        select ARCH_MIGHT_HAVE_PC_PARPORT
        select ARCH_MIGHT_HAVE_PC_SERIO
        select ACPI
+       select ACPI_NUMA if NUMA
        select ARCH_SUPPORTS_ACPI
        select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
        select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI
        select FORCE_PCI
        select PCI_DOMAINS if PCI
+       select PCI_MSI
        select PCI_SYSCALL if PCI
        select HAVE_UNSTABLE_SCHED_CLOCK
        select HAVE_EXIT_THREAD
@@ -30,8 +32,8 @@ config IA64
        select HAVE_ARCH_TRACEHOOK
        select HAVE_MEMBLOCK_NODE_MAP
        select HAVE_VIRT_CPU_ACCOUNTING
-       select ARCH_HAS_DMA_COHERENT_TO_PFN if SWIOTLB
-       select ARCH_HAS_SYNC_DMA_FOR_CPU if SWIOTLB
+       select ARCH_HAS_DMA_COHERENT_TO_PFN
+       select ARCH_HAS_SYNC_DMA_FOR_CPU
        select VIRT_TO_BUS
        select GENERIC_IRQ_PROBE
        select GENERIC_PENDING_IRQ if SMP
@@ -45,6 +47,7 @@ config IA64
        select ARCH_THREAD_STACK_ALLOCATOR
        select ARCH_CLOCKSOURCE_DATA
        select GENERIC_TIME_VSYSCALL
+       select SWIOTLB
        select SYSCTL_ARCH_UNALIGN_NO_WARN
        select HAVE_MOD_ARCH_SPECIFIC
        select MODULES_USE_ELF_RELA
@@ -52,6 +55,7 @@ config IA64
        select HAVE_ARCH_AUDITSYSCALL
        select NEED_DMA_MAP_STATE
        select NEED_SG_DMA_LENGTH
+       select NUMA if !FLATMEM
        default y
        help
          The Itanium Processor Family is Intel's 64-bit successor to
@@ -119,53 +123,6 @@ config AUDIT_ARCH
        bool
        default y
 
-choice
-       prompt "System type"
-       default IA64_GENERIC
-
-config IA64_GENERIC
-       bool "generic"
-       select NUMA
-       select ACPI_NUMA
-       select SWIOTLB
-       select PCI_MSI
-       help
-         This selects the system type of your hardware.  A "generic" kernel
-         will run on any supported IA-64 system.  However, if you configure
-         a kernel for your specific system, it will be faster and smaller.
-
-         generic               For any supported IA-64 system
-         DIG-compliant         For DIG ("Developer's Interface Guide") compliant systems
-         DIG+Intel+IOMMU       For DIG systems with Intel IOMMU
-         HP-zx1/sx1000         For HP systems
-         SGI-UV                For SGI UV systems
-
-         If you don't know what to do, choose "generic".
-
-config IA64_DIG
-       bool "DIG-compliant"
-       select SWIOTLB
-
-config IA64_HP_ZX1
-       bool "HP-zx1/sx1000"
-       help
-         Build a kernel that runs on HP zx1 and sx1000 systems.  This adds
-         support for the HP I/O MMU.
-
-config IA64_SGI_UV
-       bool "SGI-UV"
-       select NUMA
-       select ACPI_NUMA
-       select SWIOTLB
-       help
-         Selecting this option will optimize the kernel for use on UV based
-         systems, but the resulting kernel binary will not run on other
-         types of ia64 systems.  If you have an SGI UV system, it's safe
-         to select this option.  If in doubt, select ia64 generic support
-         instead.
-
-endchoice
-
 choice
        prompt "Processor type"
        default ITANIUM
@@ -230,6 +187,20 @@ config IA64_L1_CACHE_SHIFT
        default "7" if MCKINLEY
        default "6" if ITANIUM
 
+config IA64_SGI_UV
+       bool "SGI-UV support"
+       help
+         Selecting this option will add specific support for running on SGI
+         UV based systems.  If you have an SGI UV system or are building a
+         distro kernel, select this option.
+
+config IA64_HP_SBA_IOMMU
+       bool "HP SBA IOMMU support"
+       default y
+       help
+         Say Y here to add support for the SBA IOMMU found on HP zx1 and
+         sx1000 systems.  If you're unsure, answer Y.
+
 config IA64_CYCLONE
        bool "Cyclone (EXA) Time Source support"
        help
@@ -334,13 +305,12 @@ config ARCH_SPARSEMEM_ENABLE
        select SPARSEMEM_VMEMMAP_ENABLE
 
 config ARCH_DISCONTIGMEM_DEFAULT
-       def_bool y if (IA64_GENERIC || IA64_HP_ZX1)
+       def_bool y
        depends on ARCH_DISCONTIGMEM_ENABLE
 
 config NUMA
        bool "NUMA support"
        depends on !FLATMEM
-       select ACPI_NUMA if ACPI
        help
          Say Y to compile the kernel to support NUMA (Non-Uniform Memory
          Access).  This option is for configuring high-end multiprocessor
index abf8d04..40ca23b 100644 (file)
@@ -14,7 +14,7 @@ config IA64_GRANULE_16MB
 
 config IA64_GRANULE_64MB
        bool "64MB"
-       depends on !(IA64_GENERIC || IA64_HP_ZX1)
+       depends on BROKEN
 
 endchoice
 
index 22deb5e..e0bb2b6 100644 (file)
@@ -50,14 +50,9 @@ head-y := arch/ia64/kernel/head.o
 
 libs-y                         += arch/ia64/lib/
 core-y                         += arch/ia64/kernel/ arch/ia64/mm/
-core-$(CONFIG_IA64_DIG)        += arch/ia64/dig/
-core-$(CONFIG_IA64_GENERIC)    += arch/ia64/dig/
-core-$(CONFIG_IA64_HP_ZX1)     += arch/ia64/dig/
 core-$(CONFIG_IA64_SGI_UV)     += arch/ia64/uv/
 
-drivers-y                      += arch/ia64/pci/
-drivers-$(CONFIG_IA64_HP_ZX1)  += arch/ia64/hp/common/ arch/ia64/hp/zx1/
-drivers-$(CONFIG_IA64_GENERIC) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ arch/ia64/uv/
+drivers-y                      += arch/ia64/pci/ arch/ia64/hp/common/
 drivers-$(CONFIG_OPROFILE)     += arch/ia64/oprofile/
 
 PHONY += compressed check
index b6bda18..b630bd7 100644 (file)
@@ -7,7 +7,6 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_PARTITION_ADVANCED=y
 CONFIG_SGI_PARTITION=y
-CONFIG_IA64_DIG=y
 CONFIG_SMP=y
 CONFIG_NR_CPUS=2
 CONFIG_PREEMPT=y
index 192ed15..1d6e2a0 100644 (file)
@@ -12,7 +12,6 @@ CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_BLK_DEV_BSG is not set
 CONFIG_PARTITION_ADVANCED=y
 CONFIG_SGI_PARTITION=y
-CONFIG_IA64_DIG=y
 CONFIG_MCKINLEY=y
 CONFIG_IA64_PAGE_SIZE_64KB=y
 CONFIG_IA64_CYCLONE=y
index b504c8e..8c92e09 100644 (file)
@@ -4,7 +4,6 @@ CONFIG_BLK_DEV_INITRD=y
 CONFIG_KPROBES=y
 CONFIG_MODULES=y
 CONFIG_PARTITION_ADVANCED=y
-CONFIG_IA64_HP_ZX1=y
 CONFIG_MCKINLEY=y
 CONFIG_SMP=y
 CONFIG_NR_CPUS=16
diff --git a/arch/ia64/dig/Makefile b/arch/ia64/dig/Makefile
deleted file mode 100644 (file)
index 5c2f638..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-#
-# ia64/platform/dig/Makefile
-#
-# Copyright (C) 1999 Silicon Graphics, Inc.
-# Copyright (C) Srinivasa Thirumalachar (sprasad@engr.sgi.com)
-#
-
-obj-y := setup.o
-obj-$(CONFIG_IA64_GENERIC) += machvec.o
diff --git a/arch/ia64/dig/machvec.c b/arch/ia64/dig/machvec.c
deleted file mode 100644 (file)
index 0c55bda..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#define MACHVEC_PLATFORM_NAME          dig
-#define MACHVEC_PLATFORM_HEADER                <asm/machvec_dig.h>
-#include <asm/machvec_init.h>
diff --git a/arch/ia64/dig/setup.c b/arch/ia64/dig/setup.c
deleted file mode 100644 (file)
index ca8be46..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Platform dependent support for DIG64 platforms.
- *
- * Copyright (C) 1999 Intel Corp.
- * Copyright (C) 1999, 2001 Hewlett-Packard Co
- * Copyright (C) 1999, 2001, 2003 David Mosberger-Tang <davidm@hpl.hp.com>
- * Copyright (C) 1999 VA Linux Systems
- * Copyright (C) 1999 Walt Drummond <drummond@valinux.com>
- * Copyright (C) 1999 Vijay Chander <vijay@engr.sgi.com>
- */
-
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <linux/kernel.h>
-#include <linux/string.h>
-#include <linux/screen_info.h>
-#include <linux/console.h>
-#include <linux/timex.h>
-#include <linux/sched.h>
-
-#include <asm/io.h>
-#include <asm/machvec.h>
-#include <asm/setup.h>
-
-void __init
-dig_setup (char **cmdline_p)
-{
-#ifdef CONFIG_SMP
-       init_smp_config();
-#endif
-}
index 47c8f6e..11a56ed 100644 (file)
@@ -6,5 +6,5 @@
 # Copyright (C) Alex Williamson (alex_williamson@hp.com)
 #
 
-obj-y := sba_iommu.o
+obj-$(CONFIG_IA64_HP_SBA_IOMMU) += sba_iommu.o
 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 (file)
index bea44b4..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-#
-# ia64/hp/zx1/Makefile
-#
-# Copyright (C) 2002 Hewlett Packard
-# Copyright (C) Alex Williamson (alex_williamson@hp.com)
-#
-
-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 (file)
index 32518b0..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#define MACHVEC_PLATFORM_NAME          hpzx1
-#define MACHVEC_PLATFORM_HEADER                <asm/machvec_hpzx1.h>
-#include <asm/machvec_init.h>
index be6bf3e..f886d4d 100644 (file)
@@ -32,22 +32,6 @@ static inline bool acpi_has_cpu_in_madt(void)
 #define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */
 static inline void disable_acpi(void) { }
 
-#ifdef CONFIG_IA64_GENERIC
-const char *acpi_get_sysname (void);
-#else
-static inline const char *acpi_get_sysname (void)
-{
-# if defined (CONFIG_IA64_HP_ZX1)
-       return "hpzx1";
-# elif defined (CONFIG_IA64_SGI_UV)
-       return "uv";
-# elif defined (CONFIG_IA64_DIG)
-       return "dig";
-# else
-#      error Unknown platform.  Fix acpi.c.
-# endif
-}
-#endif
 int acpi_request_vector (u32 int_type);
 int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
 
index 1280811..e6385c7 100644 (file)
@@ -12,7 +12,6 @@
 #include <linux/types.h>
 #include <linux/profile.h>
 
-#include <asm/machvec.h>
 #include <asm/ptrace.h>
 #include <asm/smp.h>
 
@@ -56,7 +55,7 @@ typedef u8 ia64_vector;
 extern int ia64_first_device_vector;
 extern int ia64_last_device_vector;
 
-#if defined(CONFIG_SMP) && (defined(CONFIG_IA64_GENERIC) || defined (CONFIG_IA64_DIG))
+#ifdef CONFIG_SMP
 /* Reserve the lower priority vector than device vectors for "move IRQ" IPI */
 #define IA64_IRQ_MOVE_VECTOR           0x30    /* "move IRQ" IPI */
 #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)
 extern void ia64_native_register_percpu_irq (ia64_vector vec, struct irqaction *action);
 extern void destroy_and_reserve_irq (unsigned int irq);
 
-#if defined(CONFIG_SMP) && (defined(CONFIG_IA64_GENERIC) || defined(CONFIG_IA64_DIG))
+#ifdef CONFIG_SMP
 extern int irq_prepare_move(int irq, int cpu);
 extern void irq_complete_move(unsigned int irq);
 #else
index edd5c26..54e70c2 100644 (file)
@@ -71,7 +71,6 @@ extern unsigned int num_io_spaces;
 #define HAVE_ARCH_PIO_SIZE
 
 #include <asm/intrinsics.h>
-#include <asm/machvec.h>
 #include <asm/page.h>
 #include <asm-generic/iomap.h>
 
index 7429a72..679854f 100644 (file)
@@ -15,6 +15,5 @@ extern int iommu_detected;
 #define no_iommu               (1)
 #define iommu_detected         (0)
 #endif
-extern void machvec_init(const char *name);
 
 #endif
diff --git a/arch/ia64/include/asm/machvec.h b/arch/ia64/include/asm/machvec.h
deleted file mode 100644 (file)
index b22d049..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Machine vector for IA-64.
- *
- * Copyright (C) 1999 Silicon Graphics, Inc.
- * Copyright (C) Srinivasa Thirumalachar <sprasad@engr.sgi.com>
- * Copyright (C) Vijay Chander <vijay@engr.sgi.com>
- * Copyright (C) 1999-2001, 2003-2004 Hewlett-Packard Co.
- *     David Mosberger-Tang <davidm@hpl.hp.com>
- */
-#ifndef _ASM_IA64_MACHVEC_H
-#define _ASM_IA64_MACHVEC_H
-
-#include <linux/types.h>
-
-struct device;
-
-typedef void ia64_mv_setup_t (char **);
-
-extern void machvec_setup (char **);
-
-# if defined (CONFIG_IA64_DIG)
-#  include <asm/machvec_dig.h>
-# elif defined (CONFIG_IA64_HP_ZX1)
-#  include <asm/machvec_hpzx1.h>
-# elif defined (CONFIG_IA64_SGI_UV)
-#  include <asm/machvec_uv.h>
-# elif defined (CONFIG_IA64_GENERIC)
-
-# ifdef MACHVEC_PLATFORM_HEADER
-#  include MACHVEC_PLATFORM_HEADER
-# else
-#  define ia64_platform_name   ia64_mv.name
-#  define platform_setup       ia64_mv.setup
-# endif
-
-/* __attribute__((__aligned__(16))) is required to make size of the
- * structure multiple of 16 bytes.
- * This will fillup the holes created because of section 3.3.1 in
- * Software Conventions guide.
- */
-struct ia64_machine_vector {
-       const char *name;
-       ia64_mv_setup_t *setup;
-} __attribute__((__aligned__(16))); /* align attrib? see above comment */
-
-#define MACHVEC_INIT(name)                     \
-{                                              \
-       #name,                                  \
-       platform_setup,                         \
-}
-
-extern struct ia64_machine_vector ia64_mv;
-extern void machvec_init (const char *name);
-extern void machvec_init_from_cmdline(const char *cmdline);
-
-# else
-#  error Unknown configuration.  Update arch/ia64/include/asm/machvec.h.
-# endif /* CONFIG_IA64_GENERIC */
-
-/*
- * Define default versions so we can extend machvec for new platforms without having
- * to update the machvec files for all existing platforms.
- */
-#ifndef platform_setup
-# define platform_setup                        machvec_setup
-#endif
-
-#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 (file)
index bc230f6..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef _ASM_IA64_MACHVEC_DIG_h
-#define _ASM_IA64_MACHVEC_DIG_h
-
-extern ia64_mv_setup_t dig_setup;
-
-/*
- * This stuff has dual use!
- *
- * For a generic kernel, the macros are used to initialize the
- * platform's machvec structure.  When compiling a non-generic kernel,
- * the macros are used directly.
- */
-#define ia64_platform_name     "dig"
-#define platform_setup         dig_setup
-
-#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 (file)
index 7d37998..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef _ASM_IA64_MACHVEC_HPZX1_h
-#define _ASM_IA64_MACHVEC_HPZX1_h
-
-extern ia64_mv_setup_t                 dig_setup;
-
-/*
- * This stuff has dual use!
- *
- * For a generic kernel, the macros are used to initialize the
- * platform's machvec structure.  When compiling a non-generic kernel,
- * the macros are used directly.
- */
-#define ia64_platform_name                     "hpzx1"
-#define platform_setup                         dig_setup
-
-#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 (file)
index 7a82e3e..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#include <asm/iommu.h>
-#include <asm/machvec.h>
-
-#define MACHVEC_HELPER(name)                                                                   \
- struct ia64_machine_vector machvec_##name __attribute__ ((unused, __section__ (".machvec")))  \
-       = MACHVEC_INIT(name);
-
-#define MACHVEC_DEFINE(name)   MACHVEC_HELPER(name)
-
-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 (file)
index 2c50853..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * This file is subject to the terms and conditions of the GNU General Public
- * License.  See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * SGI UV Core Functions
- *
- * Copyright (C) 2008 Silicon Graphics, Inc. All rights reserved.
- */
-
-#ifndef _ASM_IA64_MACHVEC_UV_H
-#define _ASM_IA64_MACHVEC_UV_H
-
-extern ia64_mv_setup_t uv_setup;
-
-/*
- * This stuff has dual use!
- *
- * For a generic kernel, the macros are used to initialize the
- * platform's machvec structure.  When compiling a non-generic kernel,
- * the macros are used directly.
- */
-#define ia64_platform_name             "uv"
-#define platform_setup                 uv_setup
-
-#endif /* _ASM_IA64_MACHVEC_UV_H */
index 0ceca5f..767201f 100644 (file)
@@ -27,16 +27,9 @@ static inline int pfn_to_nid(unsigned long pfn)
                return nid;
 }
 
-#ifdef CONFIG_IA64_DIG /* DIG systems are small */
-# define MAX_PHYSNODE_ID       8
-# define NR_NODE_MEMBLKS       (MAX_NUMNODES * 8)
-#else
-# define MAX_PHYSNODE_ID       2048
-# define NR_NODE_MEMBLKS       (MAX_NUMNODES * 4)
-#endif
-
-#else /* CONFIG_NUMA */
-# define NR_NODE_MEMBLKS       (MAX_NUMNODES * 4)
+#define MAX_PHYSNODE_ID                2048
 #endif /* CONFIG_NUMA */
 
+#define NR_NODE_MEMBLKS                (MAX_NUMNODES * 4)
+
 #endif /* _ASM_IA64_MMZONE_H */
index c91ef98..95a2ec3 100644 (file)
@@ -679,8 +679,6 @@ enum idle_boot_override {IDLE_NO_OVERRIDE=0, IDLE_HALT, IDLE_FORCE_MWAIT,
 
 void default_idle(void);
 
-#define ia64_platform_is(x) (strcmp(x, ia64_platform_name) == 0)
-
 #endif /* !__ASSEMBLY__ */
 
 #endif /* _ASM_IA64_PROCESSOR_H */
index 86ec034..f1f257d 100644 (file)
@@ -45,7 +45,6 @@
 #include <asm/pgalloc.h>
 #include <asm/processor.h>
 #include <asm/tlbflush.h>
-#include <asm/machvec.h>
 
 #include <asm-generic/tlb.h>
 
index 502cf1c..48d4526 100644 (file)
@@ -2,10 +2,29 @@
 #ifndef _ASM_IA64_UV_UV_H
 #define _ASM_IA64_UV_UV_H
 
+#ifdef CONFIG_IA64_SGI_UV
+extern bool ia64_is_uv;
+
+static inline int is_uv_system(void)
+{
+       return ia64_is_uv;
+}
+
+void __init uv_probe_system_type(void);
+void __init uv_setup(char **cmdline_p);
+#else /* CONFIG_IA64_SGI_UV */
 static inline int is_uv_system(void)
 {
-       /* temporary support for running on hardware simulator */
-       return ia64_platform_is("uv");
+       return false;
+}
+
+static inline void __init uv_probe_system_type(void)
+{
+}
+
+static inline void __init uv_setup(char **cmdline_p)
+{
 }
+#endif /* CONFIG_IA64_SGI_UV */
 
 #endif /* _ASM_IA64_UV_UV_H */
index dbde367..1a8df66 100644 (file)
@@ -10,7 +10,7 @@ endif
 extra-y        := head.o vmlinux.lds
 
 obj-y := entry.o efi.o efi_stub.o gate-data.o fsys.o ia64_ksyms.o irq.o irq_ia64.o     \
-        irq_lsapic.o ivt.o machvec.o pal.o patch.o process.o perfmon.o ptrace.o sal.o          \
+        irq_lsapic.o ivt.o pal.o patch.o process.o perfmon.o ptrace.o sal.o            \
         salinfo.o setup.o signal.o sys_ia64.o time.o traps.o unaligned.o \
         unwind.o mca.o mca_asm.o topology.o dma-mapping.o iosapic.o acpi.o \
         acpi-ext.o
@@ -30,7 +30,7 @@ obj-$(CONFIG_KEXEC)           += machine_kexec.o relocate_kernel.o crash.o
 obj-$(CONFIG_CRASH_DUMP)       += crash_dump.o
 obj-$(CONFIG_IA64_UNCACHED_ALLOCATOR)  += uncached.o
 obj-$(CONFIG_AUDIT)            += audit.o
-obj-$(CONFIG_PCI_MSI)          += msi_ia64.o
+obj-y                          += msi_ia64.o
 mca_recovery-y                 += mca_drv.o mca_drv_asm.o
 obj-$(CONFIG_IA64_MC_ERR_INJECT)+= err_inject.o
 obj-$(CONFIG_STACKTRACE)       += stacktrace.o
index 644f34e..70d1587 100644 (file)
@@ -31,7 +31,6 @@
 #include <acpi/processor.h>
 #include <asm/io.h>
 #include <asm/iosapic.h>
-#include <asm/machvec.h>
 #include <asm/page.h>
 #include <asm/numa.h>
 #include <asm/sal.h>
@@ -45,60 +44,6 @@ unsigned int acpi_cpei_phys_cpuid;
 
 unsigned long acpi_wakeup_address = 0;
 
-#ifdef CONFIG_IA64_GENERIC
-static unsigned long __init acpi_find_rsdp(void)
-{
-       unsigned long rsdp_phys = 0;
-
-       if (efi.acpi20 != EFI_INVALID_TABLE_ADDR)
-               rsdp_phys = efi.acpi20;
-       else if (efi.acpi != EFI_INVALID_TABLE_ADDR)
-               printk(KERN_WARNING PREFIX
-                      "v1.0/r0.71 tables no longer supported\n");
-       return rsdp_phys;
-}
-
-const char __init *
-acpi_get_sysname(void)
-{
-       unsigned long rsdp_phys;
-       struct acpi_table_rsdp *rsdp;
-       struct acpi_table_xsdt *xsdt;
-       struct acpi_table_header *hdr;
-
-       rsdp_phys = acpi_find_rsdp();
-       if (!rsdp_phys) {
-               printk(KERN_ERR
-                      "ACPI 2.0 RSDP not found, default to \"dig\"\n");
-               return "dig";
-       }
-
-       rsdp = (struct acpi_table_rsdp *)__va(rsdp_phys);
-       if (strncmp(rsdp->signature, ACPI_SIG_RSDP, sizeof(ACPI_SIG_RSDP) - 1)) {
-               printk(KERN_ERR
-                      "ACPI 2.0 RSDP signature incorrect, default to \"dig\"\n");
-               return "dig";
-       }
-
-       xsdt = (struct acpi_table_xsdt *)__va(rsdp->xsdt_physical_address);
-       hdr = &xsdt->header;
-       if (strncmp(hdr->signature, ACPI_SIG_XSDT, sizeof(ACPI_SIG_XSDT) - 1)) {
-               printk(KERN_ERR
-                      "ACPI 2.0 XSDT signature incorrect, default to \"dig\"\n");
-               return "dig";
-       }
-
-       if (!strcmp(hdr->oem_id, "HP")) {
-               return "hpzx1";
-       } else if (!strcmp(hdr->oem_id, "SGI")) {
-               if (!strcmp(hdr->oem_table_id + 4, "UV"))
-                       return "uv";
-       }
-
-       return "dig";
-}
-#endif /* CONFIG_IA64_GENERIC */
-
 #define ACPI_MAX_PLATFORM_INTERRUPTS   256
 
 /* Array to record platform interrupt vectors for generic interrupt routing. */
index 2d25958..fad4db2 100644 (file)
@@ -93,7 +93,6 @@
 #include <asm/hw_irq.h>
 #include <asm/io.h>
 #include <asm/iosapic.h>
-#include <asm/machvec.h>
 #include <asm/processor.h>
 #include <asm/ptrace.h>
 
index b989731..f102084 100644 (file)
@@ -37,7 +37,6 @@
 #include <asm/intrinsics.h>
 #include <asm/io.h>
 #include <asm/hw_irq.h>
-#include <asm/machvec.h>
 #include <asm/pgtable.h>
 #include <asm/tlbflush.h>
 
@@ -249,7 +248,7 @@ void __setup_vector_irq(int cpu)
        }
 }
 
-#if defined(CONFIG_SMP) && (defined(CONFIG_IA64_GENERIC) || defined(CONFIG_IA64_DIG))
+#ifdef CONFIG_SMP
 
 static enum vector_domain_type {
        VECTOR_DOMAIN_NONE,
@@ -637,11 +636,9 @@ init_IRQ (void)
        ia64_register_ipi();
        register_percpu_irq(IA64_SPURIOUS_INT_VECTOR, NULL);
 #ifdef CONFIG_SMP
-#if defined(CONFIG_IA64_GENERIC) || defined(CONFIG_IA64_DIG)
        if (vector_domain_type != VECTOR_DOMAIN_NONE)
                register_percpu_irq(IA64_IRQ_MOVE_VECTOR, &irq_move_irqaction);
 #endif
-#endif
 #ifdef CONFIG_PERFMON
        pfm_init_percpu();
 #endif
diff --git a/arch/ia64/kernel/machvec.c b/arch/ia64/kernel/machvec.c
deleted file mode 100644 (file)
index 3db3be7..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-#include <linux/module.h>
-#include <linux/dma-mapping.h>
-#include <asm/machvec.h>
-
-#ifdef CONFIG_IA64_GENERIC
-
-#include <linux/kernel.h>
-#include <linux/string.h>
-
-#include <asm/page.h>
-
-struct ia64_machine_vector ia64_mv = {
-};
-EXPORT_SYMBOL(ia64_mv);
-
-static struct ia64_machine_vector * __init
-lookup_machvec (const char *name)
-{
-       extern struct ia64_machine_vector machvec_start[];
-       extern struct ia64_machine_vector machvec_end[];
-       struct ia64_machine_vector *mv;
-
-       for (mv = machvec_start; mv < machvec_end; ++mv)
-               if (strcmp (mv->name, name) == 0)
-                       return mv;
-
-       return 0;
-}
-
-void __init
-machvec_init (const char *name)
-{
-       struct ia64_machine_vector *mv;
-
-       if (!name)
-               name = acpi_get_sysname();
-       mv = lookup_machvec(name);
-       if (!mv)
-               panic("generic kernel failed to find machine vector for"
-                     " platform %s!", name);
-
-       ia64_mv = *mv;
-       printk(KERN_INFO "booting generic kernel on platform %s\n", name);
-}
-
-void __init
-machvec_init_from_cmdline(const char *cmdline)
-{
-       char str[64];
-       const char *start;
-       char *end;
-
-       if (! (start = strstr(cmdline, "machvec=")) )
-               return machvec_init(NULL);
-
-       strlcpy(str, start + strlen("machvec="), sizeof(str));
-       if ( (end = strchr(str, ' ')) )
-               *end = '\0';
-
-       return machvec_init(str);
-}
-
-#endif /* CONFIG_IA64_GENERIC */
-
-void
-machvec_setup (char **arg)
-{
-}
-EXPORT_SYMBOL(machvec_setup);
index a7f0588..bf2cb92 100644 (file)
@@ -91,7 +91,6 @@
 #include <linux/gfp.h>
 
 #include <asm/delay.h>
-#include <asm/machvec.h>
 #include <asm/meminit.h>
 #include <asm/page.h>
 #include <asm/ptrace.h>
index cd7972e..4d0ab32 100644 (file)
@@ -26,7 +26,6 @@
 #include <linux/slab.h>
 
 #include <asm/delay.h>
-#include <asm/machvec.h>
 #include <asm/page.h>
 #include <asm/ptrace.h>
 #include <asm/sal.h>
index c5a8df9..7885b4a 100644 (file)
@@ -10,7 +10,6 @@
 #include <linux/module.h>
 #include <linux/dmar.h>
 #include <asm/iommu.h>
-#include <asm/machvec.h>
 #include <linux/dma-mapping.h>
 #include <linux/kernel.h>
 #include <asm/page.h>
index 65d07c6..18de565 100644 (file)
@@ -52,7 +52,6 @@
 #include <linux/kexec.h>
 #include <linux/crash_dump.h>
 
-#include <asm/machvec.h>
 #include <asm/mca.h>
 #include <asm/meminit.h>
 #include <asm/page.h>
 #include <asm/smp.h>
 #include <asm/tlbflush.h>
 #include <asm/unistd.h>
+#include <asm/uv/uv.h>
 
 #if defined(CONFIG_SMP) && (IA64_CPU_SIZE > PAGE_SIZE)
 # error "struct cpuinfo_ia64 too big!"
 #endif
 
+char ia64_platform_name[64];
+
 #ifdef CONFIG_SMP
 unsigned long __per_cpu_offset[NR_CPUS];
 EXPORT_SYMBOL(__per_cpu_offset);
@@ -265,7 +267,7 @@ __initcall(register_memory);
  */
 static int __init check_crashkernel_memory(unsigned long pbase, size_t size)
 {
-       if (ia64_platform_is("uv"))
+       if (is_uv_system())
                return 1;
        else
                return pbase < (1UL << 32);
@@ -558,15 +560,7 @@ setup_arch (char **cmdline_p)
        efi_init();
        io_port_init();
 
-#ifdef CONFIG_IA64_GENERIC
-       /* machvec needs to be parsed from the command line
-        * before parse_early_param() is called to ensure
-        * that ia64_mv is initialised before any command line
-        * settings may cause console setup to occur
-        */
-       machvec_init_from_cmdline(*cmdline_p);
-#endif
-
+       uv_probe_system_type();
        parse_early_param();
 
        if (early_console_setup(*cmdline_p) == 0)
@@ -641,7 +635,13 @@ setup_arch (char **cmdline_p)
         */
        ROOT_DEV = Root_SDA2;           /* default to second partition on first drive */
 
-       platform_setup(cmdline_p);
+       if (is_uv_system())
+               uv_setup(cmdline_p);
+#ifdef CONFIG_SMP
+       else
+               init_smp_config();
+#endif
+
        screen_info_setup();
        paging_init();
 
index 4825b0b..de35c54 100644 (file)
@@ -36,7 +36,6 @@
 #include <linux/atomic.h>
 #include <asm/current.h>
 #include <asm/delay.h>
-#include <asm/machvec.h>
 #include <asm/io.h>
 #include <asm/irq.h>
 #include <asm/page.h>
index f705865..6501d9a 100644 (file)
@@ -47,7 +47,6 @@
 #include <asm/delay.h>
 #include <asm/io.h>
 #include <asm/irq.h>
-#include <asm/machvec.h>
 #include <asm/mca.h>
 #include <asm/page.h>
 #include <asm/pgalloc.h>
index d9ad93a..1e95d32 100644 (file)
@@ -25,7 +25,6 @@
 #include <linux/platform_device.h>
 #include <linux/sched/cputime.h>
 
-#include <asm/machvec.h>
 #include <asm/delay.h>
 #include <asm/hw_irq.h>
 #include <asm/ptrace.h>
index 0da58cf..d9d4e21 100644 (file)
@@ -141,16 +141,6 @@ SECTIONS {
                __end___mckinley_e9_bundles = .;
        }
 
-#if defined(CONFIG_IA64_GENERIC)
-       /* Machine Vector */
-       . = ALIGN(16);
-       .machvec : AT(ADDR(.machvec) - LOAD_OFFSET) {
-               machvec_start = .;
-               *(.machvec)
-               machvec_end = .;
-       }
-#endif
-
 #ifdef CONFIG_SMP
        . = ALIGN(PERCPU_PAGE_SIZE);
        __cpu0_per_cpu = .;
index ed3ced6..1979cdb 100644 (file)
@@ -28,7 +28,6 @@
 
 #include <asm/dma.h>
 #include <asm/io.h>
-#include <asm/machvec.h>
 #include <asm/numa.h>
 #include <asm/patch.h>
 #include <asm/pgalloc.h>
index e1fa45b..acb55a4 100644 (file)
@@ -8,8 +8,7 @@
 #include <linux/init.h>
 #include <linux/vgaarb.h>
 #include <linux/screen_info.h>
-
-#include <asm/machvec.h>
+#include <asm/uv/uv.h>
 
 /*
  * 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)
        u16 config;
        struct resource *res;
 
-       if ((strcmp(ia64_platform_name, "dig") != 0)
-           && (strcmp(ia64_platform_name, "hpzx1")  != 0))
+       if (is_uv_system())
                return;
        /* Maybe, this machine supports legacy memory map. */
 
index 89c9f36..211757e 100644 (file)
@@ -24,7 +24,6 @@
 #include <linux/memblock.h>
 #include <linux/export.h>
 
-#include <asm/machvec.h>
 #include <asm/page.h>
 #include <asm/io.h>
 #include <asm/sal.h>
index 124e441..2971965 100644 (file)
@@ -10,4 +10,3 @@
 ccflags-y := -Iarch/ia64/sn/include
 
 obj-y                          += setup.o
-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 (file)
index 50737a9..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * This file is subject to the terms and conditions of the GNU General Public
- * License.  See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (c) 2008 Silicon Graphics, Inc.  All Rights Reserved.
- */
-
-#define MACHVEC_PLATFORM_NAME  uv
-#define MACHVEC_PLATFORM_HEADER        <asm/machvec_uv.h>
-#include <asm/machvec_init.h>
index b081f51..bb02548 100644 (file)
@@ -8,11 +8,17 @@
  * Copyright (C) 2008 Silicon Graphics, Inc. All rights reserved.
  */
 
+#include <linux/acpi.h>
+#include <linux/efi.h>
 #include <linux/module.h>
 #include <linux/percpu.h>
+#include <asm/uv/uv.h>
 #include <asm/uv/uv_mmrs.h>
 #include <asm/uv/uv_hub.h>
 
+bool ia64_is_uv;
+EXPORT_SYMBOL_GPL(ia64_is_uv);
+
 DEFINE_PER_CPU(struct uv_hub_info_s, __uv_hub_info);
 EXPORT_PER_CPU_SYMBOL_GPL(__uv_hub_info);
 
@@ -47,6 +53,34 @@ static __init void get_lowmem_redirect(unsigned long *base, unsigned long *size)
        BUG();
 }
 
+void __init uv_probe_system_type(void)
+{
+       struct acpi_table_rsdp *rsdp;
+       struct acpi_table_xsdt *xsdt;
+
+       if (efi.acpi20 == EFI_INVALID_TABLE_ADDR) {
+               pr_err("ACPI 2.0 RSDP not found.\n");
+               return;
+       }
+
+       rsdp = (struct acpi_table_rsdp *)__va(efi.acpi20);
+       if (strncmp(rsdp->signature, ACPI_SIG_RSDP, sizeof(ACPI_SIG_RSDP) - 1)) {
+               pr_err("ACPI 2.0 RSDP signature incorrect.\n");
+               return;
+       }
+
+       xsdt = (struct acpi_table_xsdt *)__va(rsdp->xsdt_physical_address);
+       if (strncmp(xsdt->header.signature, ACPI_SIG_XSDT,
+                       sizeof(ACPI_SIG_XSDT) - 1)) {
+               pr_err("ACPI 2.0 XSDT signature incorrect.\n");
+               return;
+       }
+
+       if (!strcmp(xsdt->header.oem_id, "SGI") &&
+           !strcmp(xsdt->header.oem_table_id + 4, "UV"))
+               ia64_is_uv = true;
+}
+
 void __init uv_setup(char **cmdline_p)
 {
        union uvh_si_addr_map_config_u m_n_config;
index 06a16dc..ebe1e9e 100644 (file)
@@ -323,7 +323,7 @@ config ACPI_NUMA
        bool "NUMA support"
        depends on NUMA
        depends on (X86 || IA64 || ARM64)
-       default y if IA64_GENERIC || ARM64
+       default y if IA64 || ARM64
 
 config ACPI_CUSTOM_DSDT_FILE
        string "Custom DSDT Table file to include"
index 42d45e9..812d6aa 100644 (file)
@@ -111,14 +111,14 @@ config AGP_VIA
 
 config AGP_I460
        tristate "Intel 460GX chipset support"
-       depends on AGP && (IA64_DIG || IA64_GENERIC)
+       depends on AGP && IA64
        help
          This option gives you AGP GART support for the Intel 460GX chipset
          for IA64 processors.
 
 config AGP_HP_ZX1
        tristate "HP ZX1 chipset AGP support"
-       depends on AGP && (IA64_HP_ZX1 || IA64_GENERIC)
+       depends on AGP && IA64
        help
          This option gives you AGP GART support for the HP ZX1 chipset
          for IA64 processors.
index e15cdcd..9a61845 100644 (file)
@@ -177,7 +177,7 @@ config DMAR_TABLE
 
 config INTEL_IOMMU
        bool "Support for Intel IOMMU using DMA Remapping Devices"
-       depends on PCI_MSI && ACPI && (X86 || IA64_GENERIC)
+       depends on PCI_MSI && ACPI && (X86 || IA64)
        select IOMMU_API
        select IOMMU_IOVA
        select NEED_DMA_MAP_STATE
index 423d2d2..4ef2b75 100644 (file)
@@ -188,7 +188,7 @@ config ENCLOSURE_SERVICES
 config SGI_XP
        tristate "Support communication between SGI SSIs"
        depends on NET
-       depends on (IA64_GENERIC || IA64_SGI_UV || X86_UV) && SMP
+       depends on (IA64_SGI_UV || X86_UV) && SMP
        depends on X86_64 || BROKEN
        select SGI_GRU if X86_64 && SMP
        ---help---
index 5e335e9..f15a9f2 100644 (file)
@@ -17,7 +17,7 @@
 #include <asm/uv/uv_hub.h>
 #if defined CONFIG_X86_64
 #include <asm/uv/bios.h>
-#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
+#elif defined CONFIG_IA64_SGI_UV
 #include <asm/sn/sn_sal.h>
 #endif
 #include "../sgi-gru/grukservices.h"
@@ -99,7 +99,7 @@ xp_expand_memprotect_uv(unsigned long phys_addr, unsigned long size)
                return xpBiosError;
        }
 
-#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
+#elif defined CONFIG_IA64_SGI_UV
        u64 nasid_array;
 
        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)
                return xpBiosError;
        }
 
-#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
+#elif defined CONFIG_IA64_SGI_UV
        u64 nasid_array;
 
        ret = sn_change_memprotect(phys_addr, size, SN_MEMPROT_ACCESS_CLASS_0,
index d8a6fe1..09e2465 100644 (file)
@@ -27,7 +27,7 @@
 #if defined CONFIG_X86_64
 #include <asm/uv/bios.h>
 #include <asm/uv/uv_irq.h>
-#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
+#elif defined CONFIG_IA64_SGI_UV
 #include <asm/sn/intr.h>
 #include <asm/sn/sn_sal.h>
 #endif
@@ -35,7 +35,7 @@
 #include "../sgi-gru/grukservices.h"
 #include "xpc.h"
 
-#if defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
+#if defined CONFIG_IA64_SGI_UV
 struct uv_IO_APIC_route_entry {
        __u64   vector          :  8,
                delivery_mode   :  3,
@@ -121,7 +121,7 @@ xpc_get_gru_mq_irq_uv(struct xpc_gru_mq_uv *mq, int cpu, char *irq_name)
 
        mq->mmr_value = uv_read_global_mmr64(mmr_pnode, mq->mmr_offset);
 
-#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
+#elif defined CONFIG_IA64_SGI_UV
        if (strcmp(irq_name, XPC_ACTIVATE_IRQ_NAME) == 0)
                mq->irq = SGI_XPC_ACTIVATE;
        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)
 #if defined CONFIG_X86_64
        uv_teardown_irq(mq->irq);
 
-#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
+#elif defined CONFIG_IA64_SGI_UV
        int mmr_pnode;
        unsigned long mmr_value;
 
@@ -162,7 +162,7 @@ xpc_gru_mq_watchlist_alloc_uv(struct xpc_gru_mq_uv *mq)
 {
        int ret;
 
-#if defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
+#if defined CONFIG_IA64_SGI_UV
        int mmr_pnode = uv_blade_to_pnode(mq->mmr_blade);
 
        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)
 #if defined CONFIG_X86_64
        ret = uv_bios_mq_watchlist_free(mmr_pnode, mq->watchlist_num);
        BUG_ON(ret != BIOS_STATUS_SUCCESS);
-#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
+#elif defined CONFIG_IA64_SGI_UV
        ret = sn_mq_watchlist_free(mmr_pnode, mq->watchlist_num);
        BUG_ON(ret != SALRET_OK);
 #else
@@ -796,7 +796,7 @@ xpc_get_partition_rsvd_page_pa_uv(void *buf, u64 *cookie, unsigned long *rp_pa,
        else
                ret = xpBiosError;
 
-#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
+#elif defined CONFIG_IA64_SGI_UV
        status = sn_partition_reserved_page_pa((u64)buf, cookie, rp_pa, len);
        if (status == SALRET_OK)
                ret = xpSuccess;