[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] Change the Xen command-line parameter syntax. 'noacpi' and



ChangeSet 1.1441, 2005/05/11 17:18:30+01:00, kaf24@xxxxxxxxxxxxxxxxxxxx

        Change the Xen command-line parameter syntax. 'noacpi' and 
        'ignorebiostables' are gone. 'dom0_mem' can optionally take a k/m/g
        suffix to specify units (default units are still kilobytes).
        
        Also added:
         1. 'mem=xxx' to specify maximum physical RAM address (supports
             k/m/g suffix)
         2. acpi=xxx/acpi_skip_timer_override/noapic: These all have same
            semantics as in Linux. They are *automatically* propagated to
            the domain0 command line, as dom0 shares resposibility for
            platform initialisation.
        
        Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>



 docs/src/user.tex           |   55 +++++++++------
 xen/arch/ia64/xensetup.c    |    5 -
 xen/arch/x86/domain_build.c |   16 +++-
 xen/arch/x86/e820.c         |   31 ++++++++
 xen/arch/x86/setup.c        |  152 +++++++++++++++++++++++++++-----------------
 xen/arch/x86/smpboot.c      |   10 +-
 xen/common/kernel.c         |   22 +-----
 xen/common/lib.c            |   16 ++++
 xen/include/asm-x86/acpi.h  |   77 ++++++++++++----------
 xen/include/xen/init.h      |   10 +-
 xen/include/xen/lib.h       |   13 ++-
 11 files changed, 256 insertions(+), 151 deletions(-)


diff -Nru a/docs/src/user.tex b/docs/src/user.tex
--- a/docs/src/user.tex 2005-05-11 13:05:28 -04:00
+++ b/docs/src/user.tex 2005-05-11 13:05:28 -04:00
@@ -484,7 +484,7 @@
 {\small
 \begin{verbatim}
 title Xen 2.0 / XenLinux 2.6.9
-  kernel /boot/xen.gz dom0_mem=131072
+  kernel /boot/xen.gz dom0_mem=128M
   module /boot/vmlinuz-2.6.9-xen0 root=/dev/sda4 ro console=tty0
 \end{verbatim}
 }
@@ -524,7 +524,7 @@
 
 \subsection{Serial Console (optional)}
 
-%%   kernel /boot/xen.gz dom0_mem=131072 com1=115200,8n1
+%%   kernel /boot/xen.gz dom0_mem=128M com1=115200,8n1
 %%   module /boot/vmlinuz-2.6.9-xen0 root=/dev/sda4 ro 
 
 
@@ -534,9 +534,9 @@
 \begin{quote}
 {\small
 \begin{verbatim}
-   kernel /boot/xen.gz dom0_mem=131072 com1=115200,8n1
+   kernel /boot/xen.gz dom0_mem=128M com1=115200,8n1
 \end{verbatim}}
-\end{quote} 
+\end{quote}
 
 This configures Xen to output on COM1 at 115,200 baud, 8 data bits, 
 1 stop bit and no parity. Modify these parameters for your set up. 
@@ -1680,12 +1680,6 @@
 editing \path{grub.conf}.
 
 \begin{description}
-\item [ignorebiostables ] 
- Disable parsing of BIOS-supplied tables. This may help with some
- chipsets that aren't fully supported by Xen. If you specify this
- option then ACPI tables are also ignored, and SMP support is
- disabled. 
-
 \item [noreboot ] 
  Don't reboot the machine automatically on errors.  This is
  useful to catch debug output if you aren't catching console messages
@@ -1695,10 +1689,6 @@
  Disable SMP support.
  This option is implied by `ignorebiostables'. 
 
-\item [noacpi ] 
- Disable ACPI tables, which confuse Xen on some chipsets.
- This option is implied by `ignorebiostables'. 
-
 \item [watchdog ] 
  Enable NMI watchdog which can report certain failures. 
 
@@ -1756,8 +1746,16 @@
  `nmi=dom0':   Inform DOM0 of the NMI. \\
  `nmi=ignore': Ignore the NMI. 
 
+\item [mem=xxx ]
+ Set the physical RAM address limit. Any RAM appearing beyond this
+ physical address in the memory map will be ignored. This parameter
+ may be specified with a {\bf k}, {\bf m} or {\bf g} suffix. The
+ default unit, if no suffix is specified, is bytes.
+
 \item [dom0\_mem=xxx ] 
- Set the amount of memory (in kB) to be allocated to domain0.  
+ Set the amount of memory to be allocated to domain0. This parameter
+ may be specified with a {\bf k}, {\bf m} or {\bf g} suffix. The 
+ default unit, if no suffix is specified, is kilobytes.
 
 \item [tbuf\_size=xxx ] 
  Set the size of the per-cpu trace buffers, in pages
@@ -1769,16 +1767,29 @@
  Select the CPU scheduler Xen should use.  The current
  possibilities are `bvt' (default), `atropos' and `rrobin'. 
  For more information see Section~\ref{s:sched}. 
-
-\item [physdev\_dom0\_hide=(xx:xx.x)(yy:yy.y)\ldots ]
-Hide selected PCI devices from domain 0 (for instance, to stop it
-taking ownership of them so that they can be driven by another
-domain).  Device IDs should be given in hex format.  Bridge devices do
-not need to be hidden --- they are hidden implicitly, since guest OSes
-do not need to configure them.
 \end{description} 
 
+In addition, the following platform-specific options may be specified
+on the Xen command line. Since domain 0 shares responsibility for
+booting the platform, Xen will automatically propagate these options
+to its command line.
+
+These options are taken from Linux's command-line syntax with
+unchanged semantics.
+
+\begin{description}
+\item [acpi=off,force,strict,ht,noirq,\ldots ] 
+ Modify how Xen (and domain 0) parses the BIOS ACPI tables.
+
+\item [acpi\_skip\_timer\_override ]
+ Instruct Xen (and domain 0) to ignore timer-interrupt override
+ instructions specified by the BIOS ACPI tables.
+
+\item [noapic ]
+ Instruct Xen (and domain 0) to ignore any IOAPICs that are present in
+ the system, and instead continue to use the legacy PIC.
 
+\end{description} 
 
 \section{XenLinux Boot Options}
 
diff -Nru a/xen/arch/ia64/xensetup.c b/xen/arch/ia64/xensetup.c
--- a/xen/arch/ia64/xensetup.c  2005-05-11 13:05:28 -04:00
+++ b/xen/arch/ia64/xensetup.c  2005-05-11 13:05:28 -04:00
@@ -52,15 +52,10 @@
 unsigned int opt_dom0_mem = 16000;
 /* opt_noht: If true, Hyperthreading is ignored. */
 int opt_noht=0;
-/* opt_noacpi: If true, ACPI tables are not parsed. */
-int opt_noacpi=0;
 /* opt_nosmp: If true, secondary processors are ignored. */
 int opt_nosmp=0;
 /* opt_noreboot: If true, machine will need manual reset on error. */
 int opt_noreboot=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;
 /* opt_pdb: Name of serial port for Xen pervasive debugger (and enable pdb) */
diff -Nru a/xen/arch/x86/domain_build.c b/xen/arch/x86/domain_build.c
--- a/xen/arch/x86/domain_build.c       2005-05-11 13:05:28 -04:00
+++ b/xen/arch/x86/domain_build.c       2005-05-11 13:05:28 -04:00
@@ -7,6 +7,7 @@
 #include <xen/config.h>
 #include <xen/init.h>
 #include <xen/lib.h>
+#include <xen/ctype.h>
 #include <xen/sched.h>
 #include <xen/smp.h>
 #include <xen/delay.h>
@@ -21,9 +22,18 @@
 #include <asm/i387.h>
 #include <asm/shadow.h>
 
-/* opt_dom0_mem: Kilobytes of memory allocated to domain 0. */
-static unsigned int opt_dom0_mem = 0;
-integer_unit_param("dom0_mem", opt_dom0_mem);
+/* opt_dom0_mem: memory allocated to domain 0. */
+static unsigned int opt_dom0_mem;
+static void parse_dom0_mem(char *s)
+{
+    unsigned long long bytes = memparse(s);
+    /* If no unit is specified we default to kB units, not bytes. */
+    if ( isdigit(s[strlen(s)-1]) )
+        opt_dom0_mem = (unsigned int)bytes;
+    else
+        opt_dom0_mem = (unsigned int)(bytes >> 10);
+}
+custom_param("dom0_mem", parse_dom0_mem);
 
 static unsigned int opt_dom0_shadow = 0;
 boolean_param("dom0_shadow", opt_dom0_shadow);
diff -Nru a/xen/arch/x86/e820.c b/xen/arch/x86/e820.c
--- a/xen/arch/x86/e820.c       2005-05-11 13:05:28 -04:00
+++ b/xen/arch/x86/e820.c       2005-05-11 13:05:28 -04:00
@@ -3,6 +3,11 @@
 #include <xen/lib.h>
 #include <asm/e820.h>
 
+/* opt_mem: Limit of physical RAM. Any RAM beyond this point is ignored. */
+unsigned long long opt_mem;
+static void parse_mem(char *s) { opt_mem = memparse(s); }
+custom_param("mem", parse_mem);
+
 struct e820map e820;
 
 static void __init add_memory_region(unsigned long long start,
@@ -341,6 +346,31 @@
 #define clip_4gb() ((void)0)
 #endif
 
+static void __init clip_mem(void)
+{
+    int i;
+
+    if ( !opt_mem )
+        return;
+
+    for ( i = 0; i < e820.nr_map; i++ )
+    {
+        if ( (e820.map[i].addr + e820.map[i].size) <= opt_mem )
+            continue;
+        printk("Truncating memory map to %lukB\n",
+               (unsigned long)(opt_mem >> 10));
+        if ( e820.map[i].addr >= opt_mem )
+        {
+            e820.nr_map = i;
+        }
+        else
+        {
+            e820.map[i].size = opt_mem - e820.map[i].addr;
+            e820.nr_map = i + 1;          
+        }
+    }
+}
+
 static void __init machine_specific_memory_setup(
     struct e820entry *raw, int raw_nr)
 {
@@ -348,6 +378,7 @@
     sanitize_e820_map(raw, &nr);
     (void)copy_e820_map(raw, nr);
     clip_4gb();
+    clip_mem();
 }
 
 unsigned long __init init_e820(struct e820entry *raw, int raw_nr)
diff -Nru a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
--- a/xen/arch/x86/setup.c      2005-05-11 13:05:28 -04:00
+++ b/xen/arch/x86/setup.c      2005-05-11 13:05:28 -04:00
@@ -33,23 +33,29 @@
 int opt_noht = 0;
 boolean_param("noht", opt_noht);
 
-/* opt_noacpi: If true, ACPI tables are not parsed. */
-static int opt_noacpi = 0;
-boolean_param("noacpi", opt_noacpi);
-
-/* opt_nosmp: If true, secondary processors are ignored. */
-static int opt_nosmp = 0;
-boolean_param("nosmp", opt_nosmp);
-
-/* opt_ignorebiostables: If true, ACPI and MP tables are ignored. */
-/* NB. This flag implies 'nosmp' and 'noacpi'. */
-static int opt_ignorebiostables = 0;
-boolean_param("ignorebiostables", opt_ignorebiostables);
-
 /* opt_watchdog: If true, run a watchdog NMI on each processor. */
 static int opt_watchdog = 0;
 boolean_param("watchdog", opt_watchdog);
 
+/* **** Linux config option: propagated to domain0. */
+/* "acpi=off":    Sisables both ACPI table parsing and interpreter. */
+/* "acpi=force":  Override the disable blacklist.                   */
+/* "acpi=strict": Disables out-of-spec workarounds.                 */
+/* "acpi=ht":     Limit ACPI just to boot-time to enable HT.        */
+/* "acpi=noirq":  Disables ACPI interrupt routing.                  */
+static void parse_acpi_param(char *s);

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.