aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>2003-09-20 10:11:49 +0000
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>2003-09-20 10:11:49 +0000
commitab6d8744afb8c7dcb310afe3649d9867dbc78b94 (patch)
tree00e698dc7a220301196a7aff10e30f49d7b1f03d
parentf810087ecb952053cf3a03b75455da26e379b947 (diff)
downloadxen-ab6d8744afb8c7dcb310afe3649d9867dbc78b94.tar.gz
xen-ab6d8744afb8c7dcb310afe3649d9867dbc78b94.tar.bz2
xen-ab6d8744afb8c7dcb310afe3649d9867dbc78b94.zip
bitkeeper revision 1.450 (3f6c27e5nnHxybq2MyMyEWEiDcAG8A)
kernel.c, setup.c, README, README.CD: Add a Xen option to ignore all bios-supplied tables.
-rw-r--r--README3
-rw-r--r--README.CD31
-rw-r--r--xen/arch/i386/setup.c19
-rw-r--r--xen/common/kernel.c22
4 files changed, 51 insertions, 24 deletions
diff --git a/README b/README
index 4827d233b3..1b4cf6d7bb 100644
--- a/README
+++ b/README
@@ -105,7 +105,8 @@ Hardware support
Xen is intended to be run on server-class machines, and the current
list of supported hardware very much reflects this, avoiding the need
for us to write drivers for "legacy" hardware. Certain desktop chipsets
-such as nvidia nforce2 are currently unsupported.
+such as nvidia nforce2 are not fully supported. Some can be made
+to work by specifying 'noacpi' or 'ignorebiostables' when booting Xen.
Xen requires a "P6" or newer processor (e.g. Pentium Pro, Celeron,
Pentium II, Pentium III, Pentium IV, Xeon, AMD Athlon, AMD Duron).
diff --git a/README.CD b/README.CD
index 1568c52e71..d3192f21c0 100644
--- a/README.CD
+++ b/README.CD
@@ -256,15 +256,28 @@ Troubleshooting Problems
If you have problems booting Xen, there are a number of boot parameters
that may be able to help diagnose problems:
- noacpi turn acpi probing off, which may confuse Xen on some chipsets
- watchdog enable NMI watchdog which can report certain failures
- nosmp disable SMP support
- noht disable Hyperthreading
- ifname=ethXX select which Ethernet interface to use if you have multiple
- ifname=dummy don't use any network interface
- ser_baud=xxx set serial line baud rate for console
- dom0_mem=xxx set the initial amount of memory for domain0. Xen will also
- reserve some memory fr itself too.
+ ignorebiostables Disable parsing of BIOS-supplied tables. This is needed
+ for some very unsupported chipsets (eg. nforce2). If you
+ specify this option then ACPI tables are also ignored, and
+ SMP suppirt is disabled.
+
+ nosmp Disable SMP support.
+ This option is implied by 'ignorebiostables'.
+
+ noacpi Disable ACPI tables, which confuse Xen on some chipsets.
+ This option is implied by 'ignorebiostables'.
+
+ watchdog Enable NMI watchdog which can report certain failures.
+
+ noht Disable Hyperthreading.
+
+ ifname=ethXX Select which Ethernet interface to use.
+
+ ifname=dummy Don't use any network interface.
+
+ ser_baud=xxx Set serial line baud rate for console.
+
+ dom0_mem=xxx Set the initial amount of memory for domain0.
It's probably a good idea to join the Xen developer's mailing list on
diff --git a/xen/arch/i386/setup.c b/xen/arch/i386/setup.c
index eb1e671fea..8a5c05838f 100644
--- a/xen/arch/i386/setup.c
+++ b/xen/arch/i386/setup.c
@@ -331,7 +331,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, opt_watchdog;
+ extern int opt_nosmp, opt_watchdog, opt_noacpi, opt_ignorebiostables;
extern int do_timer_lists_from_pit;
unsigned long low_mem_size;
@@ -352,12 +352,21 @@ void __init start_of_day(void)
if ( cpu_has_fxsr ) set_in_cr4(X86_CR4_OSFXSR);
if ( cpu_has_xmm ) set_in_cr4(X86_CR4_OSXMMEXCPT);
#ifdef CONFIG_SMP
- find_smp_config(); /* find ACPI tables */
- smp_alloc_memory(); /* trampoline which other CPUs jump at */
+ if ( opt_ignorebiostables )
+ {
+ opt_nosmp = 1; /* No SMP without configuration */
+ opt_noacpi = 1; /* ACPI will just confuse matters also */
+ }
+ else
+ {
+ find_smp_config();
+ smp_alloc_memory(); /* trampoline which other CPUs jump at */
+ }
#endif
paging_init(); /* not much here now, but sets up fixmap */
#ifdef CONFIG_SMP
- if ( smp_found_config ) get_smp_config();
+ if ( smp_found_config )
+ get_smp_config();
#endif
domain_init();
scheduler_init();
@@ -374,7 +383,7 @@ void __init start_of_day(void)
#ifndef CONFIG_SMP
APIC_init_uniprocessor();
#else
- if( opt_nosmp )
+ if ( opt_nosmp )
APIC_init_uniprocessor();
else
smp_boot_cpus();
diff --git a/xen/common/kernel.c b/xen/common/kernel.c
index ac80a5ff3f..d1cbe51863 100644
--- a/xen/common/kernel.c
+++ b/xen/common/kernel.c
@@ -59,6 +59,9 @@ int opt_noht=0;
int opt_noacpi=0;
/* opt_nosmp: If true, secondary processors are ignored. */
int opt_nosmp=0;
+/* opt_ignorebiostables: If true, ACPI and MP tables are ignored. */
+/* NB. This flag implies 'nosmp' and 'noacpi'. */
+int opt_ignorebiostables=0;
/* opt_watchdog: If true, run a watchdog NMI on each processor. */
int opt_watchdog=0;
@@ -67,15 +70,16 @@ static struct {
enum { OPT_IP, OPT_STR, OPT_UINT, OPT_BOOL } type;
void *var;
} opts[] = {
- { "console", OPT_UINT, &opt_console },
- { "ser_baud", OPT_UINT, &opt_ser_baud },
- { "dom0_mem", OPT_UINT, &opt_dom0_mem },
- { "ifname", OPT_STR, &opt_ifname },
- { "noht", OPT_BOOL, &opt_noht },
- { "noacpi", OPT_BOOL, &opt_noacpi },
- { "nosmp", OPT_BOOL, &opt_nosmp },
- { "watchdog", OPT_BOOL, &opt_watchdog },
- { NULL, 0, NULL }
+ { "console", OPT_UINT, &opt_console },
+ { "ser_baud", OPT_UINT, &opt_ser_baud },
+ { "dom0_mem", OPT_UINT, &opt_dom0_mem },
+ { "ifname", OPT_STR, &opt_ifname },
+ { "noht", OPT_BOOL, &opt_noht },
+ { "noacpi", OPT_BOOL, &opt_noacpi },
+ { "nosmp", OPT_BOOL, &opt_nosmp },
+ { "ignorebiostables", OPT_BOOL, &opt_ignorebiostables },
+ { "watchdog", OPT_BOOL, &opt_watchdog },
+ { NULL, 0, NULL }
};