forked from Minki/linux
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>
This commit is contained in:
parent
a8384e6ce5
commit
df41017eaf
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -1,3 +0,0 @@
|
||||
#define MACHVEC_PLATFORM_NAME dig
|
||||
#define MACHVEC_PLATFORM_HEADER <asm/machvec_dig.h>
|
||||
#include <asm/machvec_init.h>
|
@ -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
|
||||
}
|
@ -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
|
||||
|
@ -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
|
@ -1,3 +0,0 @@
|
||||
#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)
|
||||
#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);
|
||||
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 */
|
@ -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 */
|
@ -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 */
|
@ -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)
|
@ -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 */
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
/* temporary support for running on hardware simulator */
|
||||
return ia64_platform_is("uv");
|
||||
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)
|
||||
{
|
||||
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 */
|
||||
|
@ -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
|
||||
|
@ -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. */
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
@ -65,11 +64,14 @@
|
||||
#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();
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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 = .;
|
||||
|
@ -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>
|
||||
|
@ -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. */
|
||||
|
||||
|
@ -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>
|
||||
|
@ -10,4 +10,3 @@
|
||||
ccflags-y := -Iarch/ia64/sn/include
|
||||
|
||||
obj-y += setup.o
|
||||
obj-$(CONFIG_IA64_GENERIC) += machvec.o
|
||||
|
@ -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>
|
@ -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;
|
||||
|
@ -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"
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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---
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user