[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] Disable SMP on the MacBook by default



Hi,

As I mentioned before, SMP is non functional on the MacBook.  It even
makes the machine crash.  I am using a patch to disable SMP support in
the case a MacBook was detected.  I have included this patch at the
end of this email.

Because this will be useful for the LiveCD, I hope you will commit
this patch.  Please let me know if there are issues that I need to
take care of before it can be committed.

Thanks,
Marco


diff -r 3e31c5e160cf xen/arch/x86/dmi_scan.c
--- a/xen/arch/x86/dmi_scan.c   Wed Sep 13 14:59:14 2006
+++ b/xen/arch/x86/dmi_scan.c   Wed Sep 13 22:34:01 2006
@@ -8,6 +8,7 @@
 #include <xen/acpi.h>
 #include <asm/io.h>
 #include <asm/system.h>
+#include <xen/smp.h>
 #include <xen/dmi.h>
 
 #define bt_ioremap(b,l)  ((u8 *)__acpi_map_table(b,l))
@@ -181,6 +182,15 @@
        return 0;
 }
 
+/*
+ * Disable SMP.  */
+static int __init dmi_disable_smp(struct dmi_blacklist *d)
+{
+       printk(KERN_NOTICE "%s detected: SMP support disabled\n", d->ident);
+       opt_nosmp = 1;
+       return 0;
+}
+
 
 #ifdef CONFIG_ACPI_SLEEP
 static __init int reset_videomode_after_s3(struct dmi_blacklist *d)
@@ -262,6 +272,17 @@
                        MATCH(DMI_PRODUCT_NAME, "S4030CDT/4.3"),
                        NO_MATCH, NO_MATCH, NO_MATCH
                        } },
+
+       /*
+        * SMP support is broken for the MacBook.  Disable SMP to
+        * prevent further problems.
+        */
+        {
+          .callback = dmi_disable_smp,
+          .ident = "Apple MacBook",
+          .matches = {DMI_MATCH(DMI_PRODUCT_NAME, "MacBook1,1"),},
+        },
+
 #ifdef CONFIG_ACPI_SLEEP
        { reset_videomode_after_s3, "Toshiba Satellite 4030cdt", { /* Reset 
video mode after returning from ACPI S3 sleep */
                        MATCH(DMI_PRODUCT_NAME, "S4030CDT/4.3"),
diff -r 3e31c5e160cf xen/arch/x86/setup.c
--- a/xen/arch/x86/setup.c      Wed Sep 13 14:59:14 2006
+++ b/xen/arch/x86/setup.c      Wed Sep 13 22:34:01 2006
@@ -40,7 +40,7 @@
 #endif
 
 /* opt_nosmp: If true, secondary processors are ignored. */
-static int opt_nosmp = 0;
+int opt_nosmp = 0;
 boolean_param("nosmp", opt_nosmp);
 
 /* maxcpus: maximum number of CPUs to activate. */
diff -r 3e31c5e160cf xen/include/xen/smp.h
--- a/xen/include/xen/smp.h     Wed Sep 13 14:59:14 2006
+++ b/xen/include/xen/smp.h     Wed Sep 13 22:34:01 2006
@@ -111,4 +111,6 @@
 
 #define smp_processor_id() raw_smp_processor_id()
 
+extern int opt_nosmp ;
+
 #endif


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.