]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.31/patches.arch/x86-apic-force-bigsmp-apic-on-IBM-EXA3-4.patch
Reenabled linux-xen, added patches for Xen Kernel Version 2.6.27.31,
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.arch / x86-apic-force-bigsmp-apic-on-IBM-EXA3-4.patch
diff --git a/src/patches/suse-2.6.27.31/patches.arch/x86-apic-force-bigsmp-apic-on-IBM-EXA3-4.patch b/src/patches/suse-2.6.27.31/patches.arch/x86-apic-force-bigsmp-apic-on-IBM-EXA3-4.patch
new file mode 100644 (file)
index 0000000..312404e
--- /dev/null
@@ -0,0 +1,78 @@
+From: IBM <lcm@us.ibm.com>
+Subject: Use apic=bigsmp on specific xseries machines
+References: bnc#440497
+Patch-Mainline: not yet
+
+Signed-off-by: Thomas Renninger <trenn@suse.de>
+
+diff -pruN a/arch//x86/mach-generic/bigsmp.c b/arch//x86/mach-generic/bigsmp.c
+--- a/arch/x86/mach-generic/bigsmp.c   2008-12-02 09:42:57.000000000 -0800
++++ b/arch/x86/mach-generic/bigsmp.c   2008-12-02 11:45:16.000000000 -0800
+@@ -20,7 +20,7 @@
+ static int dmi_bigsmp; /* can be set by dmi scanners */
+-static int hp_ht_bigsmp(const struct dmi_system_id *d)
++static int force_bigsmp_apic(const struct dmi_system_id *d)
+ {
+       printk(KERN_NOTICE "%s detected: force use of apic=bigsmp\n", d->ident);
+       dmi_bigsmp = 1;
+@@ -29,15 +29,35 @@ static int hp_ht_bigsmp(const struct dmi
+ static const struct dmi_system_id bigsmp_dmi_table[] = {
+-      { hp_ht_bigsmp, "HP ProLiant DL760 G2",
++      { force_bigsmp_apic, "HP ProLiant DL760 G2",
+       { DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
+       DMI_MATCH(DMI_BIOS_VERSION, "P44-"),}
+       },
+-      { hp_ht_bigsmp, "HP ProLiant DL740",
++      { force_bigsmp_apic, "HP ProLiant DL740",
+       { DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
+       DMI_MATCH(DMI_BIOS_VERSION, "P47-"),}
+       },
++
++      { force_bigsmp_apic, "IBM x260 / x366 / x460",
++      { DMI_MATCH(DMI_BIOS_VENDOR, "IBM"),
++      DMI_MATCH(DMI_BIOS_VERSION, "-[ZT"),}
++      },
++
++      { force_bigsmp_apic, "IBM x3800 / x3850 / x3950",
++      { DMI_MATCH(DMI_BIOS_VENDOR, "IBM"),
++      DMI_MATCH(DMI_BIOS_VERSION, "-[ZU"),}
++      },
++
++      { force_bigsmp_apic, "IBM x3800 / x3850 / x3950",
++      { DMI_MATCH(DMI_BIOS_VENDOR, "IBM"),
++      DMI_MATCH(DMI_BIOS_VERSION, "-[ZS"),}
++      },
++
++      { force_bigsmp_apic, "IBM x3850 M2 / x3950 M2",
++      { DMI_MATCH(DMI_BIOS_VENDOR, "IBM"),
++      DMI_MATCH(DMI_BIOS_VERSION, "-[A3"),}
++      },
+        { }
+ };
+diff -pruN a/arch//x86/mach-generic/probe.c b/arch//x86/mach-generic/probe.c
+--- a/arch/x86/mach-generic/probe.c    2008-12-02 09:43:18.000000000 -0800
++++ b/arch/x86/mach-generic/probe.c    2008-12-02 09:43:52.000000000 -0800
+@@ -106,7 +106,7 @@ int __init mps_oem_check(struct mp_confi
+       int i;
+       for (i = 0; apic_probe[i]; ++i) {
+               if (apic_probe[i]->mps_oem_check(mpc, oem, productid)) {
+-                      if (!cmdline_apic) {
++                      if (!cmdline_apic && genapic == &apic_default) {
+                               genapic = apic_probe[i];
+                               printk(KERN_INFO "Switched to APIC driver `%s'.\n",
+                                      genapic->name);
+@@ -122,7 +122,7 @@ int __init acpi_madt_oem_check(char *oem
+       int i;
+       for (i = 0; apic_probe[i]; ++i) {
+               if (apic_probe[i]->acpi_madt_oem_check(oem_id, oem_table_id)) {
+-                      if (!cmdline_apic) {
++                      if (!cmdline_apic && genapic == &apic_default) {
+                               genapic = apic_probe[i];
+                               printk(KERN_INFO "Switched to APIC driver `%s'.\n",
+                                      genapic->name);