(4/5) Fix APIC header defines for Summit
PATCH 1/1 (4/5) Fix APIC header defines for Summit
Patch from James Cleverdon & John Stultz
Changes IO_APIC_MAX_ID to depend on the APIC type we're using. The Summit machines have to use a larger set of bits in the apic registers, we enlarge under ifdef for Summit only. We enlarge MAX_APICS for summit as well as NUMA-Q (it would be nice to move this to subarch, but it creates circular dependency problems ... I'll fix this up later).
Adds a check for the newer Summit boxes with a different name.
arch/i386/kernel/io_apic.c +1 -1
@@ -1763,7 +1763,7 @@#ifdef CONFIG_ACPI_BOOT -#define IO_APIC_MAX_ID 15 +#define IO_APIC_MAX_ID APIC_BROADCAST_IDint __init io_apic_get_unique_id (int ioapic,int apic_id) {
include/asm-i386/apicdef.h +7 -2
@@ -11,8 +11,13 @@#define APIC_DEFAULT_PHYS_BASE 0xfee00000#define APIC_ID 0x20 -#define APIC_ID_MASK (0x0F<<24) -#define GET_APIC_ID (x) (((x)>>24)&0x0F) +#ifdef CONFIG_X86_SUMMIT +#define APIC_ID_MASK (0xFF<<24) +#define GET_APIC_ID (x) (((x)>>24)&0xFF) +#else +#define APIC_ID_MASK (0x0F<<24) +#define GET_APIC_ID (x) (((x)>>24)&0x0F) +#endif #define APIC_LVR 0x30#define APIC_LVR_MASK 0xFF00FF#define GET_APIC_VERSION (x) ((x)&0xFF)
include/asm-i386/mach-summit/mach_mpparse.h +3 -1
@@ -15,7 +15,9 @@static inline void mps_oem_check (struct mp_config_table *mpc,char *oem,char *productid) { -if (!strncmp (oem,"IBM ENSW" ,8 ) && !strncmp (str,"VIGIL SMP" ,9 )) +if (!strncmp (oem,"IBM ENSW" ,8 ) && + (!strncmp (productid,"VIGIL SMP" ,9 ) + || !strncmp (productid,"RUTHLESS SMP" ,12 ))) x86_summit =1 ; }
include/asm-i386/mpspec.h +3 -3
@@ -16,11 +16,11 @@/* * a maximum of 16 APICs with the current APIC ID architecture. */ -#ifdef CONFIG_X86_NUMA +#if defined(CONFIG_X86_NUMAQ ) || defined (CONFIG_X86_SUMMIT )#define MAX_APICS 256 -#else /* !CONFIG_X86_NUMA */ +#else #define MAX_APICS 16 -#endif /* CONFIG_X86_NUMA */ +#endif #define MAX_MPC_ENTRY 1024