]>
Commit | Line | Data |
---|---|---|
2cb7cef9 BS |
1 | From: IBM <lcm@us.ibm.com> |
2 | Subject: Use apic=bigsmp on specific xseries machines | |
3 | References: bnc#440497 | |
4 | Patch-Mainline: not yet | |
5 | ||
6 | Signed-off-by: Thomas Renninger <trenn@suse.de> | |
7 | ||
8 | diff -pruN a/arch//x86/mach-generic/bigsmp.c b/arch//x86/mach-generic/bigsmp.c | |
9 | --- a/arch/x86/mach-generic/bigsmp.c 2008-12-02 09:42:57.000000000 -0800 | |
10 | +++ b/arch/x86/mach-generic/bigsmp.c 2008-12-02 11:45:16.000000000 -0800 | |
11 | @@ -20,7 +20,7 @@ | |
12 | ||
13 | static int dmi_bigsmp; /* can be set by dmi scanners */ | |
14 | ||
15 | -static int hp_ht_bigsmp(const struct dmi_system_id *d) | |
16 | +static int force_bigsmp_apic(const struct dmi_system_id *d) | |
17 | { | |
18 | printk(KERN_NOTICE "%s detected: force use of apic=bigsmp\n", d->ident); | |
19 | dmi_bigsmp = 1; | |
20 | @@ -29,15 +29,35 @@ static int hp_ht_bigsmp(const struct dmi | |
21 | ||
22 | ||
23 | static const struct dmi_system_id bigsmp_dmi_table[] = { | |
24 | - { hp_ht_bigsmp, "HP ProLiant DL760 G2", | |
25 | + { force_bigsmp_apic, "HP ProLiant DL760 G2", | |
26 | { DMI_MATCH(DMI_BIOS_VENDOR, "HP"), | |
27 | DMI_MATCH(DMI_BIOS_VERSION, "P44-"),} | |
28 | }, | |
29 | ||
30 | - { hp_ht_bigsmp, "HP ProLiant DL740", | |
31 | + { force_bigsmp_apic, "HP ProLiant DL740", | |
32 | { DMI_MATCH(DMI_BIOS_VENDOR, "HP"), | |
33 | DMI_MATCH(DMI_BIOS_VERSION, "P47-"),} | |
34 | }, | |
35 | + | |
36 | + { force_bigsmp_apic, "IBM x260 / x366 / x460", | |
37 | + { DMI_MATCH(DMI_BIOS_VENDOR, "IBM"), | |
38 | + DMI_MATCH(DMI_BIOS_VERSION, "-[ZT"),} | |
39 | + }, | |
40 | + | |
41 | + { force_bigsmp_apic, "IBM x3800 / x3850 / x3950", | |
42 | + { DMI_MATCH(DMI_BIOS_VENDOR, "IBM"), | |
43 | + DMI_MATCH(DMI_BIOS_VERSION, "-[ZU"),} | |
44 | + }, | |
45 | + | |
46 | + { force_bigsmp_apic, "IBM x3800 / x3850 / x3950", | |
47 | + { DMI_MATCH(DMI_BIOS_VENDOR, "IBM"), | |
48 | + DMI_MATCH(DMI_BIOS_VERSION, "-[ZS"),} | |
49 | + }, | |
50 | + | |
51 | + { force_bigsmp_apic, "IBM x3850 M2 / x3950 M2", | |
52 | + { DMI_MATCH(DMI_BIOS_VENDOR, "IBM"), | |
53 | + DMI_MATCH(DMI_BIOS_VERSION, "-[A3"),} | |
54 | + }, | |
55 | { } | |
56 | }; | |
57 | ||
58 | diff -pruN a/arch//x86/mach-generic/probe.c b/arch//x86/mach-generic/probe.c | |
59 | --- a/arch/x86/mach-generic/probe.c 2008-12-02 09:43:18.000000000 -0800 | |
60 | +++ b/arch/x86/mach-generic/probe.c 2008-12-02 09:43:52.000000000 -0800 | |
61 | @@ -106,7 +106,7 @@ int __init mps_oem_check(struct mp_confi | |
62 | int i; | |
63 | for (i = 0; apic_probe[i]; ++i) { | |
64 | if (apic_probe[i]->mps_oem_check(mpc, oem, productid)) { | |
65 | - if (!cmdline_apic) { | |
66 | + if (!cmdline_apic && genapic == &apic_default) { | |
67 | genapic = apic_probe[i]; | |
68 | printk(KERN_INFO "Switched to APIC driver `%s'.\n", | |
69 | genapic->name); | |
70 | @@ -122,7 +122,7 @@ int __init acpi_madt_oem_check(char *oem | |
71 | int i; | |
72 | for (i = 0; apic_probe[i]; ++i) { | |
73 | if (apic_probe[i]->acpi_madt_oem_check(oem_id, oem_table_id)) { | |
74 | - if (!cmdline_apic) { | |
75 | + if (!cmdline_apic && genapic == &apic_default) { | |
76 | genapic = apic_probe[i]; | |
77 | printk(KERN_INFO "Switched to APIC driver `%s'.\n", | |
78 | genapic->name); |