bitkeeper revision 1.450 (3f6c27e5nnHxybq2MyMyEWEiDcAG8A)
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Sat, 20 Sep 2003 10:11:49 +0000 (10:11 +0000)
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Sat, 20 Sep 2003 10:11:49 +0000 (10:11 +0000)
kernel.c, setup.c, README, README.CD:
  Add a Xen option to ignore all bios-supplied tables.

README
README.CD
xen/arch/i386/setup.c
xen/common/kernel.c

diff --git a/README b/README
index 4827d233b38e0581b06ac46e79caa72f3fb3a126..1b4cf6d7bbd2407de0618501f83399662c63783b 100644 (file)
--- 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).
index 1568c52e7176a83b515d0b997acbb2b45f0f6961..d3192f21c0f03731c6ff39a0427a53c762d5de67 100644 (file)
--- 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
index eb1e671fea065b493ccf5b9b0659d847496ac6e2..8a5c05838f984f5d169f620ca7f2ed53b9db2ce5 100644 (file)
@@ -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(); 
index ac80a5ff3f0aca5be1d66cdec7cc6d01cd25b90e..d1cbe51863cc50e8f906019beee75be8ab2c251c 100644 (file)
@@ -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     }
 };