]> git.ipfire.org Git - ipfire-2.x.git/blob - src/patches/suse-2.6.27.31/patches.arch/x86-apic-force-bigsmp-apic-on-IBM-EXA3-4.patch
Add a patch to fix Intel E100 wake-on-lan problems.
[ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.arch / x86-apic-force-bigsmp-apic-on-IBM-EXA3-4.patch
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);