Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d49c4288 authored by Yinghai Lu's avatar Yinghai Lu Committed by Ingo Molnar
Browse files

x86: make generic arch support NUMAQ



... so it could fall back to normal numa and we'd reduce the impact of the
NUMAQ subarch.

NUMAQ depends on GENERICARCH
also decouple genericarch numa from acpi.
also make it fall back to bigsmp if apicid > 8.

Signed-off-by: default avatarYinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent e0da3364
Loading
Loading
Loading
Loading
+36 −38
Original line number Diff line number Diff line
@@ -268,36 +268,6 @@ config X86_VOYAGER
	  If you do not specifically know you have a Voyager based machine,
	  say N here, otherwise the kernel you build will not be bootable.

config X86_NUMAQ
	bool "NUMAQ (IBM/Sequent)"
	depends on SMP && X86_32
	select NUMA
	help
	  This option is used for getting Linux to run on a (IBM/Sequent) NUMA
	  multiquad box. This changes the way that processors are bootstrapped,
	  and uses Clustered Logical APIC addressing mode instead of Flat Logical.
	  You will need a new lynxer.elf file to flash your firmware with - send
	  email to <Martin.Bligh@us.ibm.com>.

config X86_SUMMIT
	bool "Summit/EXA (IBM x440)"
	depends on X86_32 && SMP
	help
	  This option is needed for IBM systems that use the Summit/EXA chipset.
	  In particular, it is needed for the x440.

	  If you don't have one of these computers, you should say N here.
	  If you want to build a NUMA kernel, you must select ACPI.

config X86_BIGSMP
	bool "Support for other sub-arch SMP systems with more than 8 CPUs"
	depends on X86_32 && SMP
	help
	  This option is needed for the systems that have more than 8 CPUs
	  and if the system is not of any sub-arch type above.

	  If you don't have such a system, you should say N here.

config X86_VISWS
	bool "SGI 320/540 (Visual Workstation)"
	depends on X86_32
@@ -311,12 +281,33 @@ config X86_VISWS
	  and vice versa. See <file:Documentation/sgi-visws.txt> for details.

config X86_GENERICARCH
       bool "Generic architecture (Summit, bigsmp, ES7000, default)"
       bool "Generic architecture"
	depends on X86_32
       help
          This option compiles in the Summit, bigsmp, ES7000, default subarchitectures.
	  It is intended for a generic binary kernel.
	  If you want a NUMA kernel, select ACPI.   We need SRAT for NUMA.
          This option compiles in the NUMAQ, Summit, bigsmp, ES7000, default
	  subarchitectures.  It is intended for a generic binary kernel.
	  if you select them all, kernel will probe it one by one. and will
	  fallback to default.

if X86_GENERICARCH

config X86_NUMAQ
	bool "NUMAQ (IBM/Sequent)"
	depends on SMP && X86_32
	select NUMA
	help
	  This option is used for getting Linux to run on a NUMAQ (IBM/Sequent)
	  NUMA multiquad box. This changes the way that processors are
	  bootstrapped, and uses Clustered Logical APIC addressing mode instead
	  of Flat Logical.  You will need a new lynxer.elf file to flash your
	  firmware with - send email to <Martin.Bligh@us.ibm.com>.

config X86_SUMMIT
	bool "Summit/EXA (IBM x440)"
	depends on X86_32 && SMP
	help
	  This option is needed for IBM systems that use the Summit/EXA chipset.
	  In particular, it is needed for the x440.

config X86_ES7000
	bool "Support for Unisys ES7000 IA32 series"
@@ -324,8 +315,15 @@ config X86_ES7000
	help
	  Support for Unisys ES7000 systems.  Say 'Y' here if this kernel is
	  supposed to run on an IA32-based Unisys ES7000 system.
	  Only choose this option if you have such a system, otherwise you
	  should say N here.

config X86_BIGSMP
	bool "Support for big SMP systems with more than 8 CPUs"
	depends on X86_32 && SMP
	help
	  This option is needed for the systems that have more than 8 CPUs
	  and if the system is not of any sub-arch type above.

endif

config X86_RDC321X
	bool "RDC R-321x SoC"
@@ -913,9 +911,9 @@ config X86_PAE
config NUMA
	bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)"
	depends on SMP
	depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || (X86_SUMMIT || X86_GENERICARCH) && ACPI) && EXPERIMENTAL)
	depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || X86_GENERICARCH || X86_SUMMIT && ACPI) && EXPERIMENTAL)
	default n if X86_PC
	default y if (X86_NUMAQ || X86_SUMMIT)
	default y if (X86_NUMAQ || X86_SUMMIT || X86_GENERICARCH)
	help
	  Enable NUMA (Non Uniform Memory Access) support.
	  The kernel will try to allocate memory used by a CPU on the
+0 −18
Original line number Diff line number Diff line
@@ -117,29 +117,11 @@ mcore-$(CONFIG_X86_VOYAGER) := arch/x86/mach-voyager/
mflags-$(CONFIG_X86_VISWS)	:= -Iinclude/asm-x86/mach-visws
mcore-$(CONFIG_X86_VISWS)	:= arch/x86/mach-visws/

# NUMAQ subarch support
mflags-$(CONFIG_X86_NUMAQ)	:= -Iinclude/asm-x86/mach-numaq
mcore-$(CONFIG_X86_NUMAQ)	:= arch/x86/mach-default/

# BIGSMP subarch support
mflags-$(CONFIG_X86_BIGSMP)	:= -Iinclude/asm-x86/mach-bigsmp
mcore-$(CONFIG_X86_BIGSMP)	:= arch/x86/mach-default/

#Summit subarch support
mflags-$(CONFIG_X86_SUMMIT)	:= -Iinclude/asm-x86/mach-summit
mcore-$(CONFIG_X86_SUMMIT)	:= arch/x86/mach-default/

# generic subarchitecture
mflags-$(CONFIG_X86_GENERICARCH):= -Iinclude/asm-x86/mach-generic
fcore-$(CONFIG_X86_GENERICARCH)	+= arch/x86/mach-generic/
mcore-$(CONFIG_X86_GENERICARCH)	:= arch/x86/mach-default/


# ES7000 subarch support
mflags-$(CONFIG_X86_ES7000)	:= -Iinclude/asm-x86/mach-es7000
fcore-$(CONFIG_X86_ES7000)	:= arch/x86/mach-es7000/
mcore-$(CONFIG_X86_ES7000)	:= arch/x86/mach-default/

# RDC R-321x subarch support
mflags-$(CONFIG_X86_RDC321X)	:= -Iinclude/asm-x86/mach-rdc321x
mcore-$(CONFIG_X86_RDC321X)	:= arch/x86/mach-default/
+0 −4
Original line number Diff line number Diff line
@@ -221,10 +221,6 @@ static char *vidmem;
static int vidport;
static int lines, cols;

#ifdef CONFIG_X86_NUMAQ
void *xquad_portio;
#endif

#include "../../../../lib/inflate.c"

static void *malloc(int size)
+2 −2
Original line number Diff line number Diff line
@@ -848,7 +848,7 @@ static int __init acpi_parse_madt_lapic_entries(void)
#ifdef	CONFIG_X86_IO_APIC
#define MP_ISA_BUS		0

#if defined(CONFIG_X86_ES7000) || defined(CONFIG_X86_GENERICARCH)
#ifdef CONFIG_X86_ES7000
extern int es7000_plat;
#endif

@@ -997,7 +997,7 @@ void __init mp_config_acpi_legacy_irqs(void)
	set_bit(MP_ISA_BUS, mp_bus_not_pci);
	Dprintk("Bus #%d is ISA\n", MP_ISA_BUS);

#if defined(CONFIG_X86_ES7000) || defined(CONFIG_X86_GENERICARCH)
#ifdef CONFIG_X86_ES7000
	/*
	 * Older generations of ES7000 have no legacy identity mappings
	 */
+5 −4
Original line number Diff line number Diff line
@@ -1722,7 +1722,6 @@ void disable_IO_APIC(void)
 * by Matt Domsch <Matt_Domsch@dell.com>  Tue Dec 21 12:25:05 CST 1999
 */

#ifndef CONFIG_X86_NUMAQ
static void __init setup_ioapic_ids_from_mpc(void)
{
	union IO_APIC_reg_00 reg_00;
@@ -1732,6 +1731,11 @@ static void __init setup_ioapic_ids_from_mpc(void)
	unsigned char old_id;
	unsigned long flags;

#ifdef CONFIG_X86_NUMAQ
	if (found_numaq)
		return;
#endif

	/*
	 * Don't check I/O APIC IDs for xAPIC systems.  They have
	 * no meaning without the serial APIC bus.
@@ -1828,9 +1832,6 @@ static void __init setup_ioapic_ids_from_mpc(void)
			apic_printk(APIC_VERBOSE, " ok.\n");
	}
}
#else
static void __init setup_ioapic_ids_from_mpc(void) { }
#endif

int no_timer_check __initdata;

Loading