ia64/xen-unstable

changeset 750:8b83e1b92625

bitkeeper revision 1.450 (3f6c27e5nnHxybq2MyMyEWEiDcAG8A)

kernel.c, setup.c, README, README.CD:
Add a Xen option to ignore all bios-supplied tables.
author kaf24@scramble.cl.cam.ac.uk
date Sat Sep 20 10:11:49 2003 +0000 (2003-09-20)
parents e0274a094846
children 57c34fef26af 9f659d018e60
files README README.CD xen/arch/i386/setup.c xen/common/kernel.c
line diff
     1.1 --- a/README	Sat Sep 20 08:27:19 2003 +0000
     1.2 +++ b/README	Sat Sep 20 10:11:49 2003 +0000
     1.3 @@ -105,7 +105,8 @@ Hardware support
     1.4  Xen is intended to be run on server-class machines, and the current
     1.5  list of supported hardware very much reflects this, avoiding the need
     1.6  for us to write drivers for "legacy" hardware. Certain desktop chipsets
     1.7 -such as nvidia nforce2 are currently unsupported.   
     1.8 +such as nvidia nforce2 are not fully supported. Some can be made
     1.9 +to work by specifying 'noacpi' or 'ignorebiostables' when booting Xen.
    1.10  
    1.11  Xen requires a "P6" or newer processor (e.g. Pentium Pro, Celeron,
    1.12  Pentium II, Pentium III, Pentium IV, Xeon, AMD Athlon, AMD Duron).
     2.1 --- a/README.CD	Sat Sep 20 08:27:19 2003 +0000
     2.2 +++ b/README.CD	Sat Sep 20 10:11:49 2003 +0000
     2.3 @@ -256,15 +256,28 @@ Troubleshooting Problems
     2.4  If you have problems booting Xen, there are a number of boot parameters 
     2.5  that may be able to help diagnose problems:
     2.6  
     2.7 - noacpi   	turn acpi probing off, which may confuse Xen on some chipsets
     2.8 - watchdog	enable NMI watchdog which can report certain failures
     2.9 - nosmp		disable SMP support
    2.10 - noht		disable Hyperthreading
    2.11 - ifname=ethXX	select which Ethernet interface to use if you have multiple
    2.12 - ifname=dummy	don't use any network interface
    2.13 - ser_baud=xxx	set serial line baud rate for console 
    2.14 - dom0_mem=xxx 	set the initial amount of memory for domain0. Xen will also
    2.15 -		  reserve some memory fr itself too. 
    2.16 + ignorebiostables Disable parsing of BIOS-supplied tables. This is needed
    2.17 +                  for some very unsupported chipsets (eg. nforce2). If you
    2.18 +                  specify this option then ACPI tables are also ignored, and
    2.19 +                  SMP suppirt is disabled.
    2.20 +
    2.21 + nosmp		  Disable SMP support.
    2.22 +                  This option is implied by 'ignorebiostables'.
    2.23 +
    2.24 + noacpi   	  Disable ACPI tables, which confuse Xen on some chipsets.
    2.25 +                  This option is implied by 'ignorebiostables'.
    2.26 +
    2.27 + watchdog	  Enable NMI watchdog which can report certain failures.
    2.28 +
    2.29 + noht		  Disable Hyperthreading.
    2.30 +
    2.31 + ifname=ethXX	  Select which Ethernet interface to use.
    2.32 +
    2.33 + ifname=dummy	  Don't use any network interface.
    2.34 +
    2.35 + ser_baud=xxx	  Set serial line baud rate for console.
    2.36 +
    2.37 + dom0_mem=xxx 	  Set the initial amount of memory for domain0.
    2.38  		  
    2.39  
    2.40  It's probably a good idea to join the Xen developer's mailing list on
     3.1 --- a/xen/arch/i386/setup.c	Sat Sep 20 08:27:19 2003 +0000
     3.2 +++ b/xen/arch/i386/setup.c	Sat Sep 20 10:11:49 2003 +0000
     3.3 @@ -331,7 +331,7 @@ void __init start_of_day(void)
     3.4      extern void initialize_keytable(); 
     3.5      extern void initialize_serial(void);
     3.6      extern void initialize_keyboard(void);
     3.7 -    extern int opt_nosmp, opt_watchdog;
     3.8 +    extern int opt_nosmp, opt_watchdog, opt_noacpi, opt_ignorebiostables;
     3.9      extern int do_timer_lists_from_pit;
    3.10      unsigned long low_mem_size;
    3.11      
    3.12 @@ -352,12 +352,21 @@ void __init start_of_day(void)
    3.13      if ( cpu_has_fxsr ) set_in_cr4(X86_CR4_OSFXSR);
    3.14      if ( cpu_has_xmm )  set_in_cr4(X86_CR4_OSXMMEXCPT);
    3.15  #ifdef CONFIG_SMP
    3.16 -    find_smp_config();            /* find ACPI tables */
    3.17 -    smp_alloc_memory();           /* trampoline which other CPUs jump at */
    3.18 +    if ( opt_ignorebiostables )
    3.19 +    {
    3.20 +        opt_nosmp  = 1;           /* No SMP without configuration          */
    3.21 +        opt_noacpi = 1;           /* ACPI will just confuse matters also   */
    3.22 +    }
    3.23 +    else
    3.24 +    {
    3.25 +        find_smp_config();
    3.26 +        smp_alloc_memory();       /* trampoline which other CPUs jump at   */
    3.27 +    }
    3.28  #endif
    3.29      paging_init();                /* not much here now, but sets up fixmap */
    3.30  #ifdef CONFIG_SMP
    3.31 -    if ( smp_found_config ) get_smp_config();
    3.32 +    if ( smp_found_config ) 
    3.33 +        get_smp_config();
    3.34  #endif
    3.35      domain_init();
    3.36      scheduler_init();	
    3.37 @@ -374,7 +383,7 @@ void __init start_of_day(void)
    3.38  #ifndef CONFIG_SMP    
    3.39      APIC_init_uniprocessor();
    3.40  #else
    3.41 -    if( opt_nosmp )
    3.42 +    if ( opt_nosmp )
    3.43  	APIC_init_uniprocessor();
    3.44      else
    3.45      	smp_boot_cpus(); 
     4.1 --- a/xen/common/kernel.c	Sat Sep 20 08:27:19 2003 +0000
     4.2 +++ b/xen/common/kernel.c	Sat Sep 20 10:11:49 2003 +0000
     4.3 @@ -59,6 +59,9 @@ int opt_noht=0;
     4.4  int opt_noacpi=0;
     4.5  /* opt_nosmp: If true, secondary processors are ignored. */
     4.6  int opt_nosmp=0;
     4.7 +/* opt_ignorebiostables: If true, ACPI and MP tables are ignored. */
     4.8 +/* NB. This flag implies 'nosmp' and 'noacpi'. */
     4.9 +int opt_ignorebiostables=0;
    4.10  /* opt_watchdog: If true, run a watchdog NMI on each processor. */
    4.11  int opt_watchdog=0;
    4.12  
    4.13 @@ -67,15 +70,16 @@ static struct {
    4.14      enum { OPT_IP, OPT_STR, OPT_UINT, OPT_BOOL } type;
    4.15      void *var;
    4.16  } opts[] = {
    4.17 -    { "console",     OPT_UINT, &opt_console },
    4.18 -    { "ser_baud",    OPT_UINT, &opt_ser_baud },
    4.19 -    { "dom0_mem",    OPT_UINT, &opt_dom0_mem }, 
    4.20 -    { "ifname",      OPT_STR,  &opt_ifname },
    4.21 -    { "noht",        OPT_BOOL, &opt_noht },
    4.22 -    { "noacpi",      OPT_BOOL, &opt_noacpi },
    4.23 -    { "nosmp",       OPT_BOOL, &opt_nosmp },
    4.24 -    { "watchdog",    OPT_BOOL, &opt_watchdog },
    4.25 -    { NULL,          0,        NULL     }
    4.26 +    { "console",          OPT_UINT, &opt_console },
    4.27 +    { "ser_baud",         OPT_UINT, &opt_ser_baud },
    4.28 +    { "dom0_mem",         OPT_UINT, &opt_dom0_mem }, 
    4.29 +    { "ifname",           OPT_STR,  &opt_ifname },
    4.30 +    { "noht",             OPT_BOOL, &opt_noht },
    4.31 +    { "noacpi",           OPT_BOOL, &opt_noacpi },
    4.32 +    { "nosmp",            OPT_BOOL, &opt_nosmp },
    4.33 +    { "ignorebiostables", OPT_BOOL, &opt_ignorebiostables },
    4.34 +    { "watchdog",         OPT_BOOL, &opt_watchdog },
    4.35 +    { NULL,               0,        NULL     }
    4.36  };
    4.37  
    4.38