Summit support for 2.5 - now with subarch! [4/5]
PATCH 1/1 Summit support for 2.5 - now with subarch! [4/5]
Adds detection for summit machines from the MPS tables. Prints a handy-dandy debug message telling you what kind of twisted machine the kernel thinks you have.
arch/i386/kernel/mpparse.c +10 -3
@@ -30,6 +30,7 @@#include <asm/mpspec.h> #include <asm/pgalloc.h> #include <asm/io_apic.h> +#include "mach_apic.h" /* Have we found an MP table */ int smp_found_config;
@@ -69,6 +70,8 @@ static unsigned int __initdata num_proce/* Bitmask of physically existing CPUs */ unsigned long phys_cpu_present_map; +int summit_x86 =0 ; +/* * Intel MP BIOS table parsing routines: */
@@ -356,6 +359,7 @@ static void __init smp_read_mpc_oem(strustatic int __init smp_read_mpc (struct mp_config_table *mpc) {char str[16 ]; +char oem[10 ];int count=sizeof (*mpc);unsigned char *mpt=((unsigned char *)mpc)+count;
@@ -380,14 +384,16 @@ static int __init smp_read_mpc(struct mpprintk (KERN_ERR "SMP mptable: null local APIC address!\n" );return 0 ; } -memcpy (str,mpc->mpc_oem,8 ); - str[8 ]=0 ; -printk ("OEM ID: %s " ,str); +memcpy (oem,mpc->mpc_oem,8 ); + oem[8 ]=0 ; +printk ("OEM ID: %s " ,oem);memcpy (str,mpc->mpc_productid,12 ); str[12 ]=0 ;printk ("Product ID: %s " ,str); +summit_check (oem, str); +printk ("APIC at: 0x%lX\n" ,mpc->mpc_lapic);/*
@@ -465,6 +471,7 @@ static int __init smp_read_mpc(struct mp } ++mpc_record; } +clustered_apic_check ();if (!num_processors)printk (KERN_ERR "SMP mptable: no processors registered!\n" );return num_processors;
arch/i386/mach-generic/mach_apic.h +10 -0
@@ -20,4 +20,14 @@ static inline unsigned long calculate_ld#define APIC_BROADCAST_ID 0x0F#define check_apicid_used (bitmap, apicid) (bitmap & (1 << apicid)) +static inline void summit_check (char *oem,char *productid) +{ +} + +static inline void clustered_apic_check (void ) +{ +printk ("Enabling APIC mode: %s. Using %d I/O APICs\n" , + (clustered_apic_mode ?"NUMA-Q" :"Flat" ), nr_ioapics); +} +#endif /* __ASM_MACH_APIC_H */
arch/i386/mach-summit/mach_apic.h +12 -0
@@ -26,4 +26,16 @@ static inline unsigned long calculate_ld#define APIC_BROADCAST_ID (x86_summit ? 0xFF : 0x0F)#define check_apicid_used (bitmap, apicid) (0) +static inline void summit_check (char *oem,char *productid) +{ +if (!strncmp (oem,"IBM ENSW" ,8 ) && !strncmp (str,"VIGIL SMP" ,9 )) + x86_summit =1 ; +} + +static inline void clustered_apic_check (void ) +{ +printk ("Enabling APIC mode: %s. Using %d I/O APICs\n" , + (x86_summit ?"Summit" :"Flat" ), nr_ioapics); +} +#endif /* __ASM_MACH_APIC_H */