d49c428840
... 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: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
55 lines
1.3 KiB
C
55 lines
1.3 KiB
C
/*
|
|
* APIC driver for "bigsmp" XAPIC machines with more than 8 virtual CPUs.
|
|
* Drives the local APIC in "clustered mode".
|
|
*/
|
|
#define APIC_DEFINITION 1
|
|
#include <linux/threads.h>
|
|
#include <linux/cpumask.h>
|
|
#include <asm/smp.h>
|
|
#include <asm/mpspec.h>
|
|
#include <asm/genapic.h>
|
|
#include <asm/fixmap.h>
|
|
#include <asm/apicdef.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/smp.h>
|
|
#include <linux/init.h>
|
|
#include <linux/dmi.h>
|
|
#include <asm/mach-bigsmp/mach_apic.h>
|
|
#include <asm/mach-bigsmp/mach_apicdef.h>
|
|
#include <asm/mach-bigsmp/mach_ipi.h>
|
|
#include <asm/mach-default/mach_mpparse.h>
|
|
|
|
static int dmi_bigsmp; /* can be set by dmi scanners */
|
|
|
|
static int hp_ht_bigsmp(const struct dmi_system_id *d)
|
|
{
|
|
printk(KERN_NOTICE "%s detected: force use of apic=bigsmp\n", d->ident);
|
|
dmi_bigsmp = 1;
|
|
return 0;
|
|
}
|
|
|
|
|
|
static const struct dmi_system_id bigsmp_dmi_table[] = {
|
|
{ hp_ht_bigsmp, "HP ProLiant DL760 G2",
|
|
{ DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
|
|
DMI_MATCH(DMI_BIOS_VERSION, "P44-"),}
|
|
},
|
|
|
|
{ hp_ht_bigsmp, "HP ProLiant DL740",
|
|
{ DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
|
|
DMI_MATCH(DMI_BIOS_VERSION, "P47-"),}
|
|
},
|
|
{ }
|
|
};
|
|
|
|
|
|
static int probe_bigsmp(void)
|
|
{
|
|
if (def_to_bigsmp)
|
|
dmi_bigsmp = 1;
|
|
else
|
|
dmi_check_system(bigsmp_dmi_table);
|
|
return dmi_bigsmp;
|
|
}
|
|
|
|
struct genapic apic_bigsmp = APIC_INIT("bigsmp", probe_bigsmp);
|