From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marco Gerards Subject: [PATCH] Disable SMP on the MacBook by default Date: Wed, 13 Sep 2006 22:45:39 +0200 Message-ID: <87slivzea4.fsf@xs4all.nl> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org 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 #include #include +#include #include #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