mirror of
https://github.com/ukui/kernel.git
synced 2026-03-09 10:07:04 -07:00
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:
committed by
Tony Luck
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)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user