diff options
-rw-r--r-- | xen/arch/i386/setup.c | 8 | ||||
-rw-r--r-- | xen/common/kernel.c | 3 |
2 files changed, 8 insertions, 3 deletions
diff --git a/xen/arch/i386/setup.c b/xen/arch/i386/setup.c index f4f62c2b02..1e5f35a73e 100644 --- a/xen/arch/i386/setup.c +++ b/xen/arch/i386/setup.c @@ -292,7 +292,7 @@ void __init start_of_day(void) extern void initialize_keytable(); extern void initialize_serial(void); extern void initialize_keyboard(void); - + extern int opt_nosmp; unsigned long low_mem_size; /* @@ -327,7 +327,11 @@ void __init start_of_day(void) #ifndef CONFIG_SMP APIC_init_uniprocessor(); #else - smp_boot_cpus(); /* + if( opt_nosmp ) + APIC_init_uniprocessor(); + else + smp_boot_cpus(); + /* * Does loads of stuff, including kicking the local * APIC, and the IO APIC after other CPUs are booted. * Each IRQ is preferably handled by IO-APIC, but diff --git a/xen/common/kernel.c b/xen/common/kernel.c index 344eae59c2..28eaae9b51 100644 --- a/xen/common/kernel.c +++ b/xen/common/kernel.c @@ -41,7 +41,7 @@ unsigned int opt_ser_baud = 9600; /* default baud for COM1 */ unsigned int opt_dom0_mem = 16000; /* default kbytes for DOM0 */ unsigned int opt_ne_base = 0; /* NE2k NICs cannot be probed */ unsigned char opt_ifname[10] = "eth0"; -int opt_noht=0, opt_noacpi=0; +int opt_noht=0, opt_noacpi=0, opt_nosmp; enum { OPT_IP, OPT_STR, OPT_UINT, OPT_BOOL }; static struct { unsigned char *name; @@ -55,6 +55,7 @@ static struct { { "ifname", OPT_STR, &opt_ifname }, { "noht", OPT_BOOL, &opt_noht }, { "noacpi", OPT_BOOL, &opt_noacpi }, + { "nosmp", OPT_BOOL, &opt_nosmp }, { NULL, 0, NULL } }; |