Commit df41017e authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Tony Luck

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: default avatarChristoph Hellwig <hch@lst.de>
Link: https://lkml.kernel.org/r/20190813072514.23299-27-hch@lst.deSigned-off-by: default avatarTony Luck <tony.luck@intel.com>
parent a8384e6c
...@@ -11,11 +11,13 @@ config IA64 ...@@ -11,11 +11,13 @@ config IA64
select ARCH_MIGHT_HAVE_PC_PARPORT select ARCH_MIGHT_HAVE_PC_PARPORT
select ARCH_MIGHT_HAVE_PC_SERIO select ARCH_MIGHT_HAVE_PC_SERIO
select ACPI select ACPI
select ACPI_NUMA if NUMA
select ARCH_SUPPORTS_ACPI select ARCH_SUPPORTS_ACPI
select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI
select FORCE_PCI select FORCE_PCI
select PCI_DOMAINS if PCI select PCI_DOMAINS if PCI
select PCI_MSI
select PCI_SYSCALL if PCI select PCI_SYSCALL if PCI
select HAVE_UNSTABLE_SCHED_CLOCK select HAVE_UNSTABLE_SCHED_CLOCK
select HAVE_EXIT_THREAD select HAVE_EXIT_THREAD
...@@ -30,8 +32,8 @@ config IA64 ...@@ -30,8 +32,8 @@ config IA64
select HAVE_ARCH_TRACEHOOK select HAVE_ARCH_TRACEHOOK
select HAVE_MEMBLOCK_NODE_MAP select HAVE_MEMBLOCK_NODE_MAP
select HAVE_VIRT_CPU_ACCOUNTING select HAVE_VIRT_CPU_ACCOUNTING
select ARCH_HAS_DMA_COHERENT_TO_PFN if SWIOTLB select ARCH_HAS_DMA_COHERENT_TO_PFN
select ARCH_HAS_SYNC_DMA_FOR_CPU if SWIOTLB select ARCH_HAS_SYNC_DMA_FOR_CPU
select VIRT_TO_BUS select VIRT_TO_BUS
select GENERIC_IRQ_PROBE select GENERIC_IRQ_PROBE
select GENERIC_PENDING_IRQ if SMP select GENERIC_PENDING_IRQ if SMP
...@@ -45,6 +47,7 @@ config IA64 ...@@ -45,6 +47,7 @@ config IA64
select ARCH_THREAD_STACK_ALLOCATOR select ARCH_THREAD_STACK_ALLOCATOR
select ARCH_CLOCKSOURCE_DATA select ARCH_CLOCKSOURCE_DATA
select GENERIC_TIME_VSYSCALL select GENERIC_TIME_VSYSCALL
select SWIOTLB
select SYSCTL_ARCH_UNALIGN_NO_WARN select SYSCTL_ARCH_UNALIGN_NO_WARN
select HAVE_MOD_ARCH_SPECIFIC select HAVE_MOD_ARCH_SPECIFIC
select MODULES_USE_ELF_RELA select MODULES_USE_ELF_RELA
...@@ -52,6 +55,7 @@ config IA64 ...@@ -52,6 +55,7 @@ config IA64
select HAVE_ARCH_AUDITSYSCALL select HAVE_ARCH_AUDITSYSCALL
select NEED_DMA_MAP_STATE select NEED_DMA_MAP_STATE
select NEED_SG_DMA_LENGTH select NEED_SG_DMA_LENGTH
select NUMA if !FLATMEM
default y default y
help help
The Itanium Processor Family is Intel's 64-bit successor to The Itanium Processor Family is Intel's 64-bit successor to
...@@ -119,53 +123,6 @@ config AUDIT_ARCH ...@@ -119,53 +123,6 @@ config AUDIT_ARCH
bool bool
default y 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 choice
prompt "Processor type" prompt "Processor type"
default ITANIUM default ITANIUM
...@@ -230,6 +187,20 @@ config IA64_L1_CACHE_SHIFT ...@@ -230,6 +187,20 @@ config IA64_L1_CACHE_SHIFT
default "7" if MCKINLEY default "7" if MCKINLEY
default "6" if ITANIUM 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 config IA64_CYCLONE
bool "Cyclone (EXA) Time Source support" bool "Cyclone (EXA) Time Source support"
help help
...@@ -334,13 +305,12 @@ config ARCH_SPARSEMEM_ENABLE ...@@ -334,13 +305,12 @@ config ARCH_SPARSEMEM_ENABLE
select SPARSEMEM_VMEMMAP_ENABLE select SPARSEMEM_VMEMMAP_ENABLE
config ARCH_DISCONTIGMEM_DEFAULT config ARCH_DISCONTIGMEM_DEFAULT
def_bool y if (IA64_GENERIC || IA64_HP_ZX1) def_bool y
depends on ARCH_DISCONTIGMEM_ENABLE depends on ARCH_DISCONTIGMEM_ENABLE
config NUMA config NUMA
bool "NUMA support" bool "NUMA support"
depends on !FLATMEM depends on !FLATMEM
select ACPI_NUMA if ACPI
help help
Say Y to compile the kernel to support NUMA (Non-Uniform Memory Say Y to compile the kernel to support NUMA (Non-Uniform Memory
Access). This option is for configuring high-end multiprocessor Access). This option is for configuring high-end multiprocessor
......
...@@ -14,7 +14,7 @@ config IA64_GRANULE_16MB ...@@ -14,7 +14,7 @@ config IA64_GRANULE_16MB
config IA64_GRANULE_64MB config IA64_GRANULE_64MB
bool "64MB" bool "64MB"
depends on !(IA64_GENERIC || IA64_HP_ZX1) depends on BROKEN
endchoice endchoice
......
...@@ -50,14 +50,9 @@ head-y := arch/ia64/kernel/head.o ...@@ -50,14 +50,9 @@ head-y := arch/ia64/kernel/head.o
libs-y += arch/ia64/lib/ libs-y += arch/ia64/lib/
core-y += arch/ia64/kernel/ arch/ia64/mm/ 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/ core-$(CONFIG_IA64_SGI_UV) += arch/ia64/uv/
drivers-y += arch/ia64/pci/ drivers-y += arch/ia64/pci/ arch/ia64/hp/common/
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-$(CONFIG_OPROFILE) += arch/ia64/oprofile/ drivers-$(CONFIG_OPROFILE) += arch/ia64/oprofile/
PHONY += compressed check PHONY += compressed check
......
...@@ -7,7 +7,6 @@ CONFIG_MODULES=y ...@@ -7,7 +7,6 @@ CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_UNLOAD=y
CONFIG_PARTITION_ADVANCED=y CONFIG_PARTITION_ADVANCED=y
CONFIG_SGI_PARTITION=y CONFIG_SGI_PARTITION=y
CONFIG_IA64_DIG=y
CONFIG_SMP=y CONFIG_SMP=y
CONFIG_NR_CPUS=2 CONFIG_NR_CPUS=2
CONFIG_PREEMPT=y CONFIG_PREEMPT=y
......
...@@ -12,7 +12,6 @@ CONFIG_MODULE_SRCVERSION_ALL=y ...@@ -12,7 +12,6 @@ CONFIG_MODULE_SRCVERSION_ALL=y
# CONFIG_BLK_DEV_BSG is not set # CONFIG_BLK_DEV_BSG is not set
CONFIG_PARTITION_ADVANCED=y CONFIG_PARTITION_ADVANCED=y
CONFIG_SGI_PARTITION=y CONFIG_SGI_PARTITION=y
CONFIG_IA64_DIG=y
CONFIG_MCKINLEY=y CONFIG_MCKINLEY=y
CONFIG_IA64_PAGE_SIZE_64KB=y CONFIG_IA64_PAGE_SIZE_64KB=y
CONFIG_IA64_CYCLONE=y CONFIG_IA64_CYCLONE=y
......
...@@ -4,7 +4,6 @@ CONFIG_BLK_DEV_INITRD=y ...@@ -4,7 +4,6 @@ CONFIG_BLK_DEV_INITRD=y
CONFIG_KPROBES=y CONFIG_KPROBES=y
CONFIG_MODULES=y CONFIG_MODULES=y
CONFIG_PARTITION_ADVANCED=y CONFIG_PARTITION_ADVANCED=y
CONFIG_IA64_HP_ZX1=y
CONFIG_MCKINLEY=y CONFIG_MCKINLEY=y
CONFIG_SMP=y CONFIG_SMP=y
CONFIG_NR_CPUS=16 CONFIG_NR_CPUS=16
......
# 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
#define MACHVEC_PLATFORM_NAME dig
#define MACHVEC_PLATFORM_HEADER <asm/machvec_dig.h>
#include <asm/machvec_init.h>
// 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
}
...@@ -6,5 +6,5 @@ ...@@ -6,5 +6,5 @@
# Copyright (C) Alex Williamson (alex_williamson@hp.com) # 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 obj-$(CONFIG_IA64_HP_AML_NFW) += aml_nfw.o
# 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
#define MACHVEC_PLATFORM_NAME hpzx1
#define MACHVEC_PLATFORM_HEADER <asm/machvec_hpzx1.h>
#include <asm/machvec_init.h>
...@@ -32,22 +32,6 @@ static inline bool acpi_has_cpu_in_madt(void) ...@@ -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 :) */ #define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */
static inline void disable_acpi(void) { } 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_request_vector (u32 int_type);
int acpi_gsi_to_irq (u32 gsi, unsigned int *irq); int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/profile.h> #include <linux/profile.h>
#include <asm/machvec.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
#include <asm/smp.h> #include <asm/smp.h>
...@@ -56,7 +55,7 @@ typedef u8 ia64_vector; ...@@ -56,7 +55,7 @@ typedef u8 ia64_vector;
extern int ia64_first_device_vector; extern int ia64_first_device_vector;
extern int ia64_last_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 */ /* Reserve the lower priority vector than device vectors for "move IRQ" IPI */
#define IA64_IRQ_MOVE_VECTOR 0x30 /* "move IRQ" IPI */ #define IA64_IRQ_MOVE_VECTOR 0x30 /* "move IRQ" IPI */
#define IA64_DEF_FIRST_DEVICE_VECTOR 0x31 #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,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 ia64_native_register_percpu_irq (ia64_vector vec, struct irqaction *action);
extern void destroy_and_reserve_irq (unsigned int irq); 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 int irq_prepare_move(int irq, int cpu);
extern void irq_complete_move(unsigned int irq); extern void irq_complete_move(unsigned int irq);
#else #else
......
...@@ -71,7 +71,6 @@ extern unsigned int num_io_spaces; ...@@ -71,7 +71,6 @@ extern unsigned int num_io_spaces;
#define HAVE_ARCH_PIO_SIZE #define HAVE_ARCH_PIO_SIZE
#include <asm/intrinsics.h> #include <asm/intrinsics.h>
#include <asm/machvec.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm-generic/iomap.h> #include <asm-generic/iomap.h>
......
...@@ -15,6 +15,5 @@ extern int iommu_detected; ...@@ -15,6 +15,5 @@ extern int iommu_detected;
#define no_iommu (1) #define no_iommu (1)
#define iommu_detected (0) #define iommu_detected (0)
#endif #endif
extern void machvec_init(const char *name);
#endif #endif
/* 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 */
/* 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 */
/* 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 */
/* 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)
/*
* 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 */
...@@ -27,16 +27,9 @@ static inline int pfn_to_nid(unsigned long pfn) ...@@ -27,16 +27,9 @@ static inline int pfn_to_nid(unsigned long pfn)
return nid; return nid;
} }
#ifdef CONFIG_IA64_DIG /* DIG systems are small */ #define MAX_PHYSNODE_ID 2048
# 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)
#endif /* CONFIG_NUMA */ #endif /* CONFIG_NUMA */
#define NR_NODE_MEMBLKS (MAX_NUMNODES * 4)
#endif /* _ASM_IA64_MMZONE_H */ #endif /* _ASM_IA64_MMZONE_H */
...@@ -679,8 +679,6 @@ enum idle_boot_override {IDLE_NO_OVERRIDE=0, IDLE_HALT, IDLE_FORCE_MWAIT, ...@@ -679,8 +679,6 @@ enum idle_boot_override {IDLE_NO_OVERRIDE=0, IDLE_HALT, IDLE_FORCE_MWAIT,
void default_idle(void); void default_idle(void);
#define ia64_platform_is(x) (strcmp(x, ia64_platform_name) == 0)
#endif /* !__ASSEMBLY__ */ #endif /* !__ASSEMBLY__ */
#endif /* _ASM_IA64_PROCESSOR_H */ #endif /* _ASM_IA64_PROCESSOR_H */
...@@ -45,7 +45,6 @@ ...@@ -45,7 +45,6 @@
#include <asm/pgalloc.h> #include <asm/pgalloc.h>
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/tlbflush.h> #include <asm/tlbflush.h>
#include <asm/machvec.h>
#include <asm-generic/tlb.h> #include <asm-generic/tlb.h>
......
...@@ -2,10 +2,29 @@ ...@@ -2,10 +2,29 @@
#ifndef _ASM_IA64_UV_UV_H #ifndef _ASM_IA64_UV_UV_H
#define _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) static inline int is_uv_system(void)
{ {
/* temporary support for running on hardware simulator */ return false;
return ia64_platform_is("uv"); }
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 */ #endif /* _ASM_IA64_UV_UV_H */
...@@ -10,7 +10,7 @@ endif ...@@ -10,7 +10,7 @@ endif
extra-y := head.o vmlinux.lds 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 \ 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 \ 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 \ unwind.o mca.o mca_asm.o topology.o dma-mapping.o iosapic.o acpi.o \
acpi-ext.o acpi-ext.o
...@@ -30,7 +30,7 @@ obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o crash.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_CRASH_DUMP) += crash_dump.o
obj-$(CONFIG_IA64_UNCACHED_ALLOCATOR) += uncached.o obj-$(CONFIG_IA64_UNCACHED_ALLOCATOR) += uncached.o
obj-$(CONFIG_AUDIT) += audit.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 mca_recovery-y += mca_drv.o mca_drv_asm.o
obj-$(CONFIG_IA64_MC_ERR_INJECT)+= err_inject.o obj-$(CONFIG_IA64_MC_ERR_INJECT)+= err_inject.o
obj-$(CONFIG_STACKTRACE) += stacktrace.o obj-$(CONFIG_STACKTRACE) += stacktrace.o
......
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#include <acpi/processor.h> #include <acpi/processor.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/iosapic.h> #include <asm/iosapic.h>
#include <asm/machvec.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm/numa.h> #include <asm/numa.h>
#include <asm/sal.h> #include <asm/sal.h>
...@@ -45,60 +44,6 @@ unsigned int acpi_cpei_phys_cpuid; ...@@ -45,60 +44,6 @@ unsigned int acpi_cpei_phys_cpuid;
unsigned long acpi_wakeup_address = 0; 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 #define ACPI_MAX_PLATFORM_INTERRUPTS 256
/* Array to record platform interrupt vectors for generic interrupt routing. */ /* Array to record platform interrupt vectors for generic interrupt routing. */
......
...@@ -93,7 +93,6 @@ ...@@ -93,7 +93,6 @@
#include <asm/hw_irq.h> #include <asm/hw_irq.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/iosapic.h> #include <asm/iosapic.h>
#include <asm/machvec.h>
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
......
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
#include <asm/intrinsics.h> #include <asm/intrinsics.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/hw_irq.h> #include <asm/hw_irq.h>
#include <asm/machvec.h>
#include <asm/pgtable.h> #include <asm/pgtable.h>
#include <asm/tlbflush.h> #include <asm/tlbflush.h>
...@@ -249,7 +248,7 @@ void __setup_vector_irq(int cpu) ...@@ -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 { static enum vector_domain_type {
VECTOR_DOMAIN_NONE, VECTOR_DOMAIN_NONE,
...@@ -637,11 +636,9 @@ init_IRQ (void) ...@@ -637,11 +636,9 @@ init_IRQ (void)
ia64_register_ipi(); ia64_register_ipi();
register_percpu_irq(IA64_SPURIOUS_INT_VECTOR, NULL); register_percpu_irq(IA64_SPURIOUS_INT_VECTOR, NULL);
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
#if defined(CONFIG_IA64_GENERIC) || defined(CONFIG_IA64_DIG)
if (vector_domain_type != VECTOR_DOMAIN_NONE) if (vector_domain_type != VECTOR_DOMAIN_NONE)
register_percpu_irq(IA64_IRQ_MOVE_VECTOR, &irq_move_irqaction); register_percpu_irq(IA64_IRQ_MOVE_VECTOR, &irq_move_irqaction);
#endif #endif
#endif
#ifdef CONFIG_PERFMON #ifdef CONFIG_PERFMON
pfm_init_percpu(); pfm_init_percpu();
#endif #endif
......
// 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);
...@@ -91,7 +91,6 @@ ...@@ -91,7 +91,6 @@
#include <linux/gfp.h> #include <linux/gfp.h>
#include <asm/delay.h> #include <asm/delay.h>
#include <asm/machvec.h>
#include <asm/meminit.h> #include <asm/meminit.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
......
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <asm/delay.h> #include <asm/delay.h>
#include <asm/machvec.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
#include <asm/sal.h> #include <asm/sal.h>
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/dmar.h> #include <linux/dmar.h>
#include <asm/iommu.h> #include <asm/iommu.h>
#include <asm/machvec.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <asm/page.h> #include <asm/page.h>
......
...@@ -52,7 +52,6 @@ ...@@ -52,7 +52,6 @@
#include <linux/kexec.h> #include <linux/kexec.h>
#include <linux/crash_dump.h> #include <linux/crash_dump.h>
#include <asm/machvec.h>
#include <asm/mca.h> #include <asm/mca.h>
#include <asm/meminit.h> #include <asm/meminit.h>
#include <asm/page.h> #include <asm/page.h>
...@@ -65,11 +64,14 @@ ...@@ -65,11 +64,14 @@
#include <asm/smp.h> #include <asm/smp.h>
#include <asm/tlbflush.h> #include <asm/tlbflush.h>
#include <asm/unistd.h> #include <asm/unistd.h>
#include <asm/uv/uv.h>
#if defined(CONFIG_SMP) && (IA64_CPU_SIZE > PAGE_SIZE) #if defined(CONFIG_SMP) && (IA64_CPU_SIZE > PAGE_SIZE)
# error "struct cpuinfo_ia64 too big!" # error "struct cpuinfo_ia64 too big!"
#endif #endif
char ia64_platform_name[64];
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
unsigned long __per_cpu_offset[NR_CPUS]; unsigned long __per_cpu_offset[NR_CPUS];
EXPORT_SYMBOL(__per_cpu_offset); EXPORT_SYMBOL(__per_cpu_offset);
...@@ -265,7 +267,7 @@ __initcall(register_memory); ...@@ -265,7 +267,7 @@ __initcall(register_memory);
*/ */
static int __init check_crashkernel_memory(unsigned long pbase, size_t size) static int __init check_crashkernel_memory(unsigned long pbase, size_t size)
{ {
if (ia64_platform_is("uv")) if (is_uv_system())
return 1; return 1;
else else
return pbase < (1UL << 32); return pbase < (1UL << 32);
...@@ -558,15 +560,7 @@ setup_arch (char **cmdline_p) ...@@ -558,15 +560,7 @@ setup_arch (char **cmdline_p)
efi_init(); efi_init();
io_port_init(); io_port_init();
#ifdef CONFIG_IA64_GENERIC uv_probe_system_type();
/* 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
parse_early_param(); parse_early_param();
if (early_console_setup(*cmdline_p) == 0) if (early_console_setup(*cmdline_p) == 0)
...@@ -641,7 +635,13 @@ setup_arch (char **cmdline_p) ...@@ -641,7 +635,13 @@ setup_arch (char **cmdline_p)
*/ */
ROOT_DEV = Root_SDA2; /* default to second partition on first drive */ 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(); screen_info_setup();
paging_init(); paging_init();
......
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
#include <linux/atomic.h> #include <linux/atomic.h>
#include <asm/current.h> #include <asm/current.h>
#include <asm/delay.h> #include <asm/delay.h>
#include <asm/machvec.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/irq.h> #include <asm/irq.h>
#include <asm/page.h> #include <asm/page.h>
......
...@@ -47,7 +47,6 @@ ...@@ -47,7 +47,6 @@
#include <asm/delay.h> #include <asm/delay.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/irq.h> #include <asm/irq.h>
#include <asm/machvec.h>
#include <asm/mca.h> #include <asm/mca.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm/pgalloc.h> #include <asm/pgalloc.h>
......
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/sched/cputime.h> #include <linux/sched/cputime.h>
#include <asm/machvec.h>
#include <asm/delay.h> #include <asm/delay.h>
#include <asm/hw_irq.h> #include <asm/hw_irq.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
......
...@@ -141,16 +141,6 @@ SECTIONS { ...@@ -141,16 +141,6 @@ SECTIONS {
__end___mckinley_e9_bundles = .; __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 #ifdef CONFIG_SMP
. = ALIGN(PERCPU_PAGE_SIZE); . = ALIGN(PERCPU_PAGE_SIZE);
__cpu0_per_cpu = .; __cpu0_per_cpu = .;
......
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/machvec.h>
#include <asm/numa.h> #include <asm/numa.h>
#include <asm/patch.h> #include <asm/patch.h>
#include <asm/pgalloc.h> #include <asm/pgalloc.h>
......
...@@ -8,8 +8,7 @@ ...@@ -8,8 +8,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/vgaarb.h> #include <linux/vgaarb.h>
#include <linux/screen_info.h> #include <linux/screen_info.h>
#include <asm/uv/uv.h>
#include <asm/machvec.h>
/* /*
* Fixup to mark boot BIOS video selected by BIOS before it changes * 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,8 +34,7 @@ static void pci_fixup_video(struct pci_dev *pdev)
u16 config; u16 config;
struct resource *res; struct resource *res;
if ((strcmp(ia64_platform_name, "dig") != 0) if (is_uv_system())
&& (strcmp(ia64_platform_name, "hpzx1") != 0))
return; return;
/* Maybe, this machine supports legacy memory map. */ /* Maybe, this machine supports legacy memory map. */
......
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
#include <linux/memblock.h> #include <linux/memblock.h>
#include <linux/export.h> #include <linux/export.h>
#include <asm/machvec.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/sal.h> #include <asm/sal.h>
......
...@@ -10,4 +10,3 @@ ...@@ -10,4 +10,3 @@
ccflags-y := -Iarch/ia64/sn/include ccflags-y := -Iarch/ia64/sn/include
obj-y += setup.o obj-y += setup.o
obj-$(CONFIG_IA64_GENERIC) += machvec.o
/*
* 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>
...@@ -8,11 +8,17 @@ ...@@ -8,11 +8,17 @@
* Copyright (C) 2008 Silicon Graphics, Inc. All rights reserved. * Copyright (C) 2008 Silicon Graphics, Inc. All rights reserved.
*/ */
#include <linux/acpi.h>
#include <linux/efi.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/percpu.h> #include <linux/percpu.h>
#include <asm/uv/uv.h>
#include <asm/uv/uv_mmrs.h> #include <asm/uv/uv_mmrs.h>
#include <asm/uv/uv_hub.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); DEFINE_PER_CPU(struct uv_hub_info_s, __uv_hub_info);
EXPORT_PER_CPU_SYMBOL_GPL(__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) ...@@ -47,6 +53,34 @@ static __init void get_lowmem_redirect(unsigned long *base, unsigned long *size)
BUG(); 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) void __init uv_setup(char **cmdline_p)
{ {
union uvh_si_addr_map_config_u m_n_config; union uvh_si_addr_map_config_u m_n_config;
......
...@@ -323,7 +323,7 @@ config ACPI_NUMA ...@@ -323,7 +323,7 @@ config ACPI_NUMA
bool "NUMA support" bool "NUMA support"
depends on NUMA depends on NUMA
depends on (X86 || IA64 || ARM64) depends on (X86 || IA64 || ARM64)
default y if IA64_GENERIC || ARM64 default y if IA64 || ARM64
config ACPI_CUSTOM_DSDT_FILE config ACPI_CUSTOM_DSDT_FILE
string "Custom DSDT Table file to include" string "Custom DSDT Table file to include"
......
...@@ -111,14 +111,14 @@ config AGP_VIA ...@@ -111,14 +111,14 @@ config AGP_VIA
config AGP_I460 config AGP_I460
tristate "Intel 460GX chipset support" tristate "Intel 460GX chipset support"
depends on AGP && (IA64_DIG || IA64_GENERIC) depends on AGP && IA64
help help
This option gives you AGP GART support for the Intel 460GX chipset This option gives you AGP GART support for the Intel 460GX chipset
for IA64 processors. for IA64 processors.
config AGP_HP_ZX1 config AGP_HP_ZX1
tristate "HP ZX1 chipset AGP support" tristate "HP ZX1 chipset AGP support"
depends on AGP && (IA64_HP_ZX1 || IA64_GENERIC) depends on AGP && IA64
help help
This option gives you AGP GART support for the HP ZX1 chipset This option gives you AGP GART support for the HP ZX1 chipset
for IA64 processors. for IA64 processors.
......
...@@ -177,7 +177,7 @@ config DMAR_TABLE ...@@ -177,7 +177,7 @@ config DMAR_TABLE
config INTEL_IOMMU config INTEL_IOMMU
bool "Support for Intel IOMMU using DMA Remapping Devices" 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_API
select IOMMU_IOVA select IOMMU_IOVA
select NEED_DMA_MAP_STATE select NEED_DMA_MAP_STATE
......
...@@ -188,7 +188,7 @@ config ENCLOSURE_SERVICES ...@@ -188,7 +188,7 @@ config ENCLOSURE_SERVICES
config SGI_XP config SGI_XP
tristate "Support communication between SGI SSIs" tristate "Support communication between SGI SSIs"
depends on NET 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 depends on X86_64 || BROKEN
select SGI_GRU if X86_64 && SMP select SGI_GRU if X86_64 && SMP
---help--- ---help---
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
#include <asm/uv/uv_hub.h> #include <asm/uv/uv_hub.h>
#if defined CONFIG_X86_64 #if defined CONFIG_X86_64
#include <asm/uv/bios.h> #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> #include <asm/sn/sn_sal.h>
#endif #endif
#include "../sgi-gru/grukservices.h" #include "../sgi-gru/grukservices.h"
...@@ -99,7 +99,7 @@ xp_expand_memprotect_uv(unsigned long phys_addr, unsigned long size) ...@@ -99,7 +99,7 @@ xp_expand_memprotect_uv(unsigned long phys_addr, unsigned long size)
return xpBiosError; return xpBiosError;
} }
#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV #elif defined CONFIG_IA64_SGI_UV
u64 nasid_array; u64 nasid_array;
ret = sn_change_memprotect(phys_addr, size, SN_MEMPROT_ACCESS_CLASS_1, 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,7 +129,7 @@ xp_restrict_memprotect_uv(unsigned long phys_addr, unsigned long size)
return xpBiosError; return xpBiosError;
} }
#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV #elif defined CONFIG_IA64_SGI_UV
u64 nasid_array; u64 nasid_array;
ret = sn_change_memprotect(phys_addr, size, SN_MEMPROT_ACCESS_CLASS_0, ret = sn_change_memprotect(phys_addr, size, SN_MEMPROT_ACCESS_CLASS_0,
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
#if defined CONFIG_X86_64 #if defined CONFIG_X86_64
#include <asm/uv/bios.h> #include <asm/uv/bios.h>
#include <asm/uv/uv_irq.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/intr.h>
#include <asm/sn/sn_sal.h> #include <asm/sn/sn_sal.h>
#endif #endif
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
#include "../sgi-gru/grukservices.h" #include "../sgi-gru/grukservices.h"
#include "xpc.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 { struct uv_IO_APIC_route_entry {
__u64 vector : 8, __u64 vector : 8,
delivery_mode : 3, 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,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); 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) if (strcmp(irq_name, XPC_ACTIVATE_IRQ_NAME) == 0)
mq->irq = SGI_XPC_ACTIVATE; mq->irq = SGI_XPC_ACTIVATE;
else if (strcmp(irq_name, XPC_NOTIFY_IRQ_NAME) == 0) 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,7 +144,7 @@ xpc_release_gru_mq_irq_uv(struct xpc_gru_mq_uv *mq)
#if defined CONFIG_X86_64 #if defined CONFIG_X86_64
uv_teardown_irq(mq->irq); uv_teardown_irq(mq->irq);
#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV #elif defined CONFIG_IA64_SGI_UV
int mmr_pnode; int mmr_pnode;
unsigned long mmr_value; unsigned long mmr_value;
...@@ -162,7 +162,7 @@ xpc_gru_mq_watchlist_alloc_uv(struct xpc_gru_mq_uv *mq) ...@@ -162,7 +162,7 @@ xpc_gru_mq_watchlist_alloc_uv(struct xpc_gru_mq_uv *mq)
{ {
int ret; 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); int mmr_pnode = uv_blade_to_pnode(mq->mmr_blade);
ret = sn_mq_watchlist_alloc(mmr_pnode, (void *)uv_gpa(mq->address), 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,7 +197,7 @@ xpc_gru_mq_watchlist_free_uv(struct xpc_gru_mq_uv *mq)
#if defined CONFIG_X86_64 #if defined CONFIG_X86_64
ret = uv_bios_mq_watchlist_free(mmr_pnode, mq->watchlist_num); ret = uv_bios_mq_watchlist_free(mmr_pnode, mq->watchlist_num);
BUG_ON(ret != BIOS_STATUS_SUCCESS); 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); ret = sn_mq_watchlist_free(mmr_pnode, mq->watchlist_num);
BUG_ON(ret != SALRET_OK); BUG_ON(ret != SALRET_OK);
#else #else
...@@ -796,7 +796,7 @@ xpc_get_partition_rsvd_page_pa_uv(void *buf, u64 *cookie, unsigned long *rp_pa, ...@@ -796,7 +796,7 @@ xpc_get_partition_rsvd_page_pa_uv(void *buf, u64 *cookie, unsigned long *rp_pa,
else else
ret = xpBiosError; 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); status = sn_partition_reserved_page_pa((u64)buf, cookie, rp_pa, len);
if (status == SALRET_OK) if (status == SALRET_OK)
ret = xpSuccess; ret = xpSuccess;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment