aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xen/arch/i386/setup.c8
-rw-r--r--xen/common/kernel.c3
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 }
};