ia64/xen-unstable

changeset 7966:e336e186e5f9

Merged.
author emellor@leeni.uk.xensource.com
date Mon Nov 21 17:30:43 2005 +0100 (2005-11-21)
parents c07d5bab4c2b 27a2cb379c8f
children 52020caa244f f72da8799418
files
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/docs/man/xend-config.sxp.pod.5	Mon Nov 21 17:30:43 2005 +0100
     1.3 @@ -0,0 +1,142 @@
     1.4 +=head1 NAME
     1.5 +
     1.6 +xend-config.sxp - Xen daemon configuration file
     1.7 +
     1.8 +=head1 SYNOPSIS
     1.9 +
    1.10 +/etc/xen/xend-config.sxp
    1.11 +
    1.12 +=head1 DESCRIPTION
    1.13 +
    1.14 +The xend(1) program requires xend-config.sxp to specify operating
    1.15 +parameters which determine the behavior of the daemon at runtime.
    1.16 +
    1.17 +The parameters are specified in S-expression format.  See the example
    1.18 +configuration file in I</etc/xen/xend-config.sxp> for details.
    1.19 +
    1.20 +=head1 OPTIONS
    1.21 +
    1.22 +The following lists the daemon configuration parameters:
    1.23 +
    1.24 +=over 4
    1.25 +
    1.26 +=item I<logfile>
    1.27 +
    1.28 +The location of the file to record runtime log messages.  Defaults to
    1.29 +I</var/log/xend.log>.
    1.30 +
    1.31 +=item I<loglevel>
    1.32 +
    1.33 +Filters out messages below the specified level.  Possible values are
    1.34 +DEBUG, INFO, WARNING, ERROR, CRITICAL.  Defaults to I<DEBUG>.
    1.35 +
    1.36 +=item I<xend-http-server>
    1.37 +
    1.38 +A boolean value that tells xend whether or not to start the http
    1.39 +stream socket management server.  Defaults to I<no>.
    1.40 +
    1.41 +=item I<xend-unix-server>
    1.42 +
    1.43 +A boolean value that tells xend whether or not to start the unix
    1.44 +domain socket management server.  This is required for the CLI tools
    1.45 +to operate.  Defaults to I<yes>.
    1.46 +
    1.47 +=item I<xend-relocation-server>
    1.48 +
    1.49 +A boolean value that tells xend whether or not to start the relocation
    1.50 +server.  This is required for cross-machine migrations.  Defaults to
    1.51 +I<no>.
    1.52 +
    1.53 +=item I<xend-unix-path>
    1.54 +
    1.55 +The location of the unix domain socket the xend-unix-server will use
    1.56 +to communicate with the management tools.  Defaults to
    1.57 +I</var/lib/xend/xend-socket>.
    1.58 +
    1.59 +=item I<xend-port>
    1.60 +
    1.61 +The port that will be used by the http management server.  Defaults to
    1.62 +I<8000>.
    1.63 +
    1.64 +=item I<xend-relocation-port>
    1.65 +
    1.66 +The port that will be used by the relocation server.  Defaults to
    1.67 +I<8002>.
    1.68 +
    1.69 +=item I<xend-address> 
    1.70 +
    1.71 +The address to which the http management server will bind.  Defaults
    1.72 +to I<''> which means "all interfaces".
    1.73 +
    1.74 +=item I<xend-relocation-address>
    1.75 +
    1.76 +The address to which the relocation server will bind.  Defaults to
    1.77 +I<''> which means "all interfaces".
    1.78 +
    1.79 +=item I<console-limit>
    1.80 +
    1.81 +The kilobyte buffer limit that will be enforced by the console server.
    1.82 +This limit is set per-domain, and is needed to prevent a single domain
    1.83 +from overwhelming the console server with massive amounts of data.
    1.84 +Defaults to I<1024>.
    1.85 +
    1.86 +=item I<network-script>
    1.87 +
    1.88 +The name of the script in I</etc/xen/scripts> that will be run to
    1.89 +setup the networking environment.  This can be any name, but in
    1.90 +general is either I<network-bridge> or I<network-route>.
    1.91 +
    1.92 +=item I<vif-script>
    1.93 +
    1.94 +The name of the script in I</etc/xen/scripts> that will be run to
    1.95 +setup a virtual interface when it is created or destroyed.  This needs
    1.96 +to (in general) work in unison with the I<network-script>.
    1.97 +
    1.98 +=item I<dom0-min-mem>
    1.99 +
   1.100 +This specifies the minimum number of megabytes that will be reserved
   1.101 +for Domain0.  If this value is positive, Domain0 will be automatically
   1.102 +ballooned down to this limit to make space for new domains.  If this
   1.103 +is set to 0, Domain0 will not be automatically ballooned.
   1.104 +
   1.105 +=item I<dom0-cpus>
   1.106 +
   1.107 +This specifies the number of CPUs that Domain0 will be allowed to use.
   1.108 +If the value is 0, all available CPUs will be used by Domain0.
   1.109 +
   1.110 +=item I<enable-dump>
   1.111 +
   1.112 +A boolean value that tells xend whether or not core dumps of guest
   1.113 +domains should be saved when a crash occurrs.  Defaults to I<no>.
   1.114 +
   1.115 +=back
   1.116 +
   1.117 +=head1 EXAMPLES
   1.118 +
   1.119 +An example configuration with relocation enabled for the local network:
   1.120 +
   1.121 +=over 4
   1.122 +
   1.123 + (xend-relocation-server yes)
   1.124 + (xend-relocation-address 192.168.1.1)
   1.125 + (network-script network-bridge)
   1.126 + (vif-script vif-bridge)
   1.127 + (dom0-min-mem 0)
   1.128 + (dom0-cpus 0)
   1.129 +
   1.130 +=back
   1.131 +
   1.132 +=head1 CAVEATS
   1.133 +
   1.134 +Note that relocation is currently unsecured and is very dangerous if
   1.135 +left enabled.  No authentication is performed, and very little sanity
   1.136 +checking takes place.  Enable at your own risk.
   1.137 +
   1.138 +=head1 SEE ALSO
   1.139 +
   1.140 +B<xend>(1)
   1.141 +
   1.142 +=head1 AUTHOR
   1.143 +
   1.144 +Dan Smith <danms@us.ibm.com>
   1.145 +
     2.1 --- a/install.sh	Mon Nov 21 17:30:22 2005 +0100
     2.2 +++ b/install.sh	Mon Nov 21 17:30:43 2005 +0100
     2.3 @@ -27,7 +27,10 @@ echo "Installing Xen from '$src' to '$ds
     2.4  cp -fdRL $src/etc/init.d/* $dst/etc/init.d/
     2.5  echo "All done."
     2.6  
     2.7 -if [ -x /sbin/udev ] && [ ! -z `/sbin/udev -V` ] && [ `/sbin/udev -V` -ge 059 ]; then
     2.8 +[ -x "$(which udevinfo)" ] && \
     2.9 +  UDEV_VERSION=$(udevinfo -V | sed -e 's/^.*\s\([0-9]\+\)[^0-9]*/\1/')
    2.10 +
    2.11 +if [ -n "$UDEV_VERSION" ] && [ $UDEV_VERSION -ge 059 ]; then
    2.12    cp -f $src/etc/udev/rules.d/*.rules $dst/etc/udev/rules.d/
    2.13  else
    2.14    cp -f $src/etc/hotplug/*.agent $dst/etc/hotplug/
     3.1 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/swiotlb.c	Mon Nov 21 17:30:22 2005 +0100
     3.2 +++ b/linux-2.6-xen-sparse/arch/xen/i386/kernel/swiotlb.c	Mon Nov 21 17:30:43 2005 +0100
     3.3 @@ -24,6 +24,7 @@
     3.4  #include <asm/io.h>
     3.5  #include <asm/pci.h>
     3.6  #include <asm/dma.h>
     3.7 +#include <asm-xen/xen-public/memory.h>
     3.8  
     3.9  #define OFFSET(val,align) ((unsigned long)((val) & ( (align) - 1)))
    3.10  
    3.11 @@ -177,6 +178,8 @@ swiotlb_init_with_default_size (size_t d
    3.12  void
    3.13  swiotlb_init(void)
    3.14  {
    3.15 +	long ram_end;
    3.16 +
    3.17  	/* The user can forcibly enable swiotlb. */
    3.18  	if (swiotlb_force)
    3.19  		swiotlb = 1;
    3.20 @@ -186,10 +189,8 @@ swiotlb_init(void)
    3.21           * which we take to mean more than 2GB.
    3.22           */
    3.23  	if (xen_start_info->flags & SIF_INITDOMAIN) {
    3.24 -		dom0_op_t op;
    3.25 -		op.cmd = DOM0_PHYSINFO;
    3.26 -		if ((HYPERVISOR_dom0_op(&op) == 0) &&
    3.27 -		    (op.u.physinfo.total_pages > 0x7ffff))
    3.28 +		ram_end = HYPERVISOR_memory_op(XENMEM_maximum_ram_page, NULL);
    3.29 +		if (ram_end > 0x7ffff)
    3.30  			swiotlb = 1;
    3.31  	}
    3.32  
     4.1 --- a/linux-2.6-xen-sparse/arch/xen/kernel/reboot.c	Mon Nov 21 17:30:22 2005 +0100
     4.2 +++ b/linux-2.6-xen-sparse/arch/xen/kernel/reboot.c	Mon Nov 21 17:30:43 2005 +0100
     4.3 @@ -189,17 +189,16 @@ static int __do_suspend(void *ignore)
     4.4  #endif
     4.5  
     4.6  	/* 
     4.7 -	** Only resume xenbus /after/ we've prepared our VCPUs; otherwise
     4.8 -	** the VCPU hotplug callback can race with our vcpu_prepare
     4.9 -	*/
    4.10 +	 * Only resume xenbus /after/ we've prepared our VCPUs; otherwise
    4.11 +	 * the VCPU hotplug callback can race with our vcpu_prepare
    4.12 +	 */
    4.13  	xenbus_resume();
    4.14  
    4.15 -
    4.16  #ifdef CONFIG_SMP
    4.17   out_reenable_cpus:
    4.18  	for_each_cpu_mask(i, prev_online_cpus) {
    4.19  		j = cpu_up(i);
    4.20 -		if (j != 0) {
    4.21 +		if ((j != 0) && !cpu_online(i)) {
    4.22  			printk(KERN_CRIT "Failed to bring cpu "
    4.23  			       "%d back up (%d).\n",
    4.24  			       i, j);
     5.1 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/e820.c	Mon Nov 21 17:30:22 2005 +0100
     5.2 +++ b/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/e820.c	Mon Nov 21 17:30:43 2005 +0100
     5.3 @@ -586,7 +586,7 @@ void __init e820_reserve_resources(void)
     5.4  	free_bootmem(__pa(map), PAGE_SIZE);
     5.5  
     5.6  	if (!found) {
     5.7 -		HYPERVISOR_memory_op(XENMEM_maximum_ram_page, &gapstart);
     5.8 +		gapstart = HYPERVISOR_memory_op(XENMEM_maximum_ram_page, NULL);
     5.9  		gapstart = (gapstart << PAGE_SHIFT) + 1024*1024;
    5.10  		printk(KERN_ERR "PCI: Warning: Cannot find a gap in the 32bit address range\n"
    5.11  		       KERN_ERR "PCI: Unassigned devices with 32bit resource registers may break!\n");
     6.1 --- a/tools/check/check_hotplug	Mon Nov 21 17:30:22 2005 +0100
     6.2 +++ b/tools/check/check_hotplug	Mon Nov 21 17:30:43 2005 +0100
     6.3 @@ -6,8 +6,10 @@ function error {
     6.4     echo '  *** Check for the hotplug scripts (hotplug) FAILED'
     6.5     exit 1
     6.6  }
     6.7 +[ -x "$(which udevinfo)" ] && \
     6.8 +  UDEV_VERSION=$(udevinfo -V | sed -e 's/^.*\s\([0-9]\+\)[^0-9]*/\1/')
     6.9  
    6.10 -if [ -x /sbin/udev ] && [ ! -z `/sbin/udev -V` ] && [ `/sbin/udev -V` -ge 059 ]; then
    6.11 +if [ -n "$UDEV_VERSION" ] && [ $UDEV_VERSION -ge 059 ]; then
    6.12    exit 0
    6.13  fi
    6.14  
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/tools/examples/README.incompatibilities	Mon Nov 21 17:30:43 2005 +0100
     7.3 @@ -0,0 +1,25 @@
     7.4 +Command Incompatibilities
     7.5 +=========================
     7.6 +
     7.7 +Known incompatibilities with various commands on various distributions, and
     7.8 +the workarounds we use.
     7.9 +
    7.10 +
    7.11 +brctl
    7.12 +-----
    7.13 +
    7.14 +brctl show <bridge> fails on SLES9 SP2.  Workaround is to use brctl show
    7.15 +without arguments, and grep, though this would be difficult were you to need
    7.16 +to check for a specific bridge-interface pair, since brctl does not show the 
    7.17 +bridge name on every line.
    7.18 +
    7.19 +
    7.20 +ifup / ifdown
    7.21 +-------------
    7.22 +
    7.23 +SuSE requires an extra parameter to ifup, which is created by calling getcfg
    7.24 +appropriately.  See xen-network-common.sh for details.
    7.25 +
    7.26 +Gentoo doesn't have ifup/ifdown; appropriate alternatives are defined in
    7.27 +xen-network-common.sh.
    7.28 +
     8.1 --- a/tools/examples/vif-bridge	Mon Nov 21 17:30:22 2005 +0100
     8.2 +++ b/tools/examples/vif-bridge	Mon Nov 21 17:30:43 2005 +0100
     8.3 @@ -48,9 +48,9 @@ fi
     8.4  
     8.5  case "$command" in
     8.6      online)
     8.7 -        if brctl show "$bridge" | grep "$vif" >&/dev/null
     8.8 +        if brctl show | grep "$vif" >&/dev/null
     8.9          then
    8.10 -          log debug "$vif already attached to $bridge"
    8.11 +          log debug "$vif already attached to a bridge"
    8.12            exit 0
    8.13          fi
    8.14  
     9.1 --- a/tools/examples/vif-common.sh	Mon Nov 21 17:30:22 2005 +0100
     9.2 +++ b/tools/examples/vif-common.sh	Mon Nov 21 17:30:43 2005 +0100
     9.3 @@ -82,7 +82,7 @@ function handle_iptable()
     9.4    # binary is not sufficient, because the user may not have the appropriate
     9.5    # modules installed.  If iptables is not working, then there's no need to do
     9.6    # anything with it, so we can just return.
     9.7 -  if ! iptables -L >&/dev/null
     9.8 +  if ! iptables -L -n >&/dev/null
     9.9    then
    9.10      return
    9.11    fi
    10.1 --- a/tools/libxc/xc_linux_save.c	Mon Nov 21 17:30:22 2005 +0100
    10.2 +++ b/tools/libxc/xc_linux_save.c	Mon Nov 21 17:30:43 2005 +0100
    10.3 @@ -798,6 +798,7 @@ int xc_linux_save(int xc_handle, int io_
    10.4      pfn_batch = calloc(MAX_BATCH_SIZE, sizeof(unsigned long));
    10.5  
    10.6      if ((pfn_type == NULL) || (pfn_batch == NULL)) {
    10.7 +        ERR("failed to alloc memory for pfn_type and/or pfn_batch arays."); 
    10.8          errno = ENOMEM;
    10.9          goto out;
   10.10      }
   10.11 @@ -817,7 +818,7 @@ int xc_linux_save(int xc_handle, int io_
   10.12          for (i = 0; i < max_pfn; i++) {
   10.13  
   10.14              mfn = live_p2m[i];
   10.15 -            if((live_m2p[mfn] != i) && (mfn != 0xffffffffUL)) { 
   10.16 +            if((mfn != 0xffffffffUL) && (live_m2p[mfn] != i)) { 
   10.17                  DPRINTF("i=0x%x mfn=%lx live_m2p=%lx\n", i, 
   10.18                          mfn, live_m2p[mfn]);
   10.19                  err++;
   10.20 @@ -912,7 +913,7 @@ int xc_linux_save(int xc_handle, int io_
   10.21                         unless its sent sooner anyhow */
   10.22  
   10.23                      set_bit(n, to_fix);
   10.24 -                    if(iter > 1)
   10.25 +                    if( (iter > 1) && IS_REAL_PFN(n) )
   10.26                          DPRINTF("netbuf race: iter %d, pfn %x. mfn %lx\n",
   10.27                                  iter, n, pfn_type[batch]);
   10.28                      continue;
   10.29 @@ -1157,6 +1158,13 @@ int xc_linux_save(int xc_handle, int io_
   10.30  
   10.31   out:
   10.32  
   10.33 +    if (live) {
   10.34 +        if(xc_shadow_control(xc_handle, dom, DOM0_SHADOW_CONTROL_OP_OFF, 
   10.35 +                             NULL, 0, NULL ) < 0) { 
   10.36 +            DPRINTF("Warning - couldn't disable shadow mode");
   10.37 +        }
   10.38 +    }
   10.39 +    
   10.40      if (live_shinfo)
   10.41          munmap(live_shinfo, PAGE_SIZE);
   10.42      
    11.1 --- a/tools/libxc/xc_private.c	Mon Nov 21 17:30:22 2005 +0100
    11.2 +++ b/tools/libxc/xc_private.c	Mon Nov 21 17:30:43 2005 +0100
    11.3 @@ -214,13 +214,6 @@ int xc_memory_op(int xc_handle,
    11.4              goto out1;
    11.5          }
    11.6          break;
    11.7 -    case XENMEM_maximum_ram_page:
    11.8 -        if ( mlock(arg, sizeof(unsigned long)) != 0 )
    11.9 -        {
   11.10 -            PERROR("Could not mlock");
   11.11 -            goto out1;
   11.12 -        }
   11.13 -        break;
   11.14      }
   11.15  
   11.16      ret = do_xen_hypercall(xc_handle, &hypercall);
   11.17 @@ -234,9 +227,6 @@ int xc_memory_op(int xc_handle,
   11.18              safe_munlock(reservation->extent_start,
   11.19                           reservation->nr_extents * sizeof(unsigned long));
   11.20          break;
   11.21 -    case XENMEM_maximum_ram_page:
   11.22 -        safe_munlock(arg, sizeof(unsigned long));
   11.23 -        break;
   11.24      }
   11.25  
   11.26   out1:
    12.1 --- a/tools/libxc/xg_save_restore.h	Mon Nov 21 17:30:22 2005 +0100
    12.2 +++ b/tools/libxc/xg_save_restore.h	Mon Nov 21 17:30:43 2005 +0100
    12.3 @@ -64,7 +64,6 @@ static int get_platform_info(int xc_hand
    12.4  { 
    12.5      xen_capabilities_info_t xen_caps = "";
    12.6      xen_platform_parameters_t xen_params;
    12.7 -    
    12.8  
    12.9      if (xc_version(xc_handle, XENVER_platform_parameters, &xen_params) != 0)
   12.10          return 0;
   12.11 @@ -72,8 +71,7 @@ static int get_platform_info(int xc_hand
   12.12      if (xc_version(xc_handle, XENVER_capabilities, &xen_caps) != 0)
   12.13          return 0;
   12.14  
   12.15 -    if (xc_memory_op(xc_handle, XENMEM_maximum_ram_page, max_mfn) != 0)
   12.16 -        return 0; 
   12.17 +    *max_mfn = xc_memory_op(xc_handle, XENMEM_maximum_ram_page, NULL);
   12.18      
   12.19      *hvirt_start = xen_params.virt_start;
   12.20  
   12.21 @@ -125,6 +123,12 @@ static int get_platform_info(int xc_hand
   12.22  /* Number of entries in the pfn_to_mfn_frame_list_list */
   12.23  #define P2M_FLL_ENTRIES (((max_pfn)+(ulpp*ulpp)-1)/(ulpp*ulpp))
   12.24  
   12.25 +/* Current guests allow 8MB 'slack' in their P2M */
   12.26 +#define NR_SLACK_ENTRIES   ((8 * 1024 * 1024) / PAGE_SIZE)
   12.27 +
   12.28 +/* Is the given PFN within the 'slack' region at the top of the P2M? */
   12.29 +#define IS_REAL_PFN(_pfn)  ((max_pfn - (_pfn)) > NR_SLACK_ENTRIES) 
   12.30 +
   12.31  /* Returns TRUE if the PFN is currently mapped */
   12.32  #define is_mapped(pfn_type) (!((pfn_type) & 0x80000000UL))
   12.33  
    13.1 --- a/xen/arch/x86/shadow32.c	Mon Nov 21 17:30:22 2005 +0100
    13.2 +++ b/xen/arch/x86/shadow32.c	Mon Nov 21 17:30:43 2005 +0100
    13.3 @@ -920,9 +920,9 @@ int __shadow_mode_enable(struct domain *
    13.4      struct vcpu *v;
    13.5      int new_modes = (mode & ~d->arch.shadow_mode);
    13.6  
    13.7 -    // Gotta be adding something to call this function.
    13.8 -    ASSERT(new_modes);
    13.9 -
   13.10 +    if(!new_modes) /* Nothing to do - return success */
   13.11 +        return 0; 
   13.12 +        
   13.13      // can't take anything away by calling this function.
   13.14      ASSERT(!(d->arch.shadow_mode & ~mode));
   13.15  
    14.1 --- a/xen/common/memory.c	Mon Nov 21 17:30:22 2005 +0100
    14.2 +++ b/xen/common/memory.c	Mon Nov 21 17:30:43 2005 +0100
    14.3 @@ -136,6 +136,7 @@ long do_memory_op(int cmd, void *arg)
    14.4      struct domain *d;
    14.5      int rc, start_extent, op, flags = 0, preempted = 0;
    14.6      struct xen_memory_reservation reservation;
    14.7 +    domid_t domid;
    14.8  
    14.9      op = cmd & ((1 << START_EXTENT_SHIFT) - 1);
   14.10  
   14.11 @@ -191,9 +192,26 @@ long do_memory_op(int cmd, void *arg)
   14.12          break;
   14.13  
   14.14      case XENMEM_maximum_ram_page:
   14.15 -        if ( put_user(max_page, (unsigned long *)arg) )
   14.16 +        rc = max_page;
   14.17 +        break;
   14.18 +
   14.19 +    case XENMEM_current_reservation:
   14.20 +    case XENMEM_maximum_reservation:
   14.21 +        if ( get_user(domid, (domid_t *)arg) )
   14.22              return -EFAULT;
   14.23 -        rc = 0;
   14.24 +
   14.25 +        if ( likely((domid = (unsigned long)arg) == DOMID_SELF) )
   14.26 +            d = current->domain;
   14.27 +        else if ( !IS_PRIV(current->domain) )
   14.28 +            return -EPERM;
   14.29 +        else if ( (d = find_domain_by_id(domid)) == NULL )
   14.30 +            return -ESRCH;
   14.31 +
   14.32 +        rc = (op == XENMEM_current_reservation) ? d->tot_pages : d->max_pages;
   14.33 +
   14.34 +        if ( unlikely(domid != DOMID_SELF) )
   14.35 +            put_domain(d);
   14.36 +
   14.37          break;
   14.38  
   14.39      default:
    15.1 --- a/xen/include/public/memory.h	Mon Nov 21 17:30:22 2005 +0100
    15.2 +++ b/xen/include/public/memory.h	Mon Nov 21 17:30:43 2005 +0100
    15.3 @@ -9,15 +9,13 @@
    15.4  #ifndef __XEN_PUBLIC_MEMORY_H__
    15.5  #define __XEN_PUBLIC_MEMORY_H__
    15.6  
    15.7 -/* arg == addr of struct xen_memory_reservation. */
    15.8 +/*
    15.9 + * Increase or decrease the specified domain's memory reservation. Returns a
   15.10 + * -ve errcode on failure, or the # extents successfully allocated or freed.
   15.11 + * arg == addr of struct xen_memory_reservation.
   15.12 + */
   15.13  #define XENMEM_increase_reservation 0
   15.14 -
   15.15 -/* arg == addr of struct xen_memory_reservation. */
   15.16  #define XENMEM_decrease_reservation 1
   15.17 -
   15.18 -/* arg == addr of unsigned long. */
   15.19 -#define XENMEM_maximum_ram_page     2
   15.20 -
   15.21  typedef struct xen_memory_reservation {
   15.22  
   15.23      /*
   15.24 @@ -47,6 +45,21 @@ typedef struct xen_memory_reservation {
   15.25  
   15.26  } xen_memory_reservation_t;
   15.27  
   15.28 +/*
   15.29 + * Returns the maximum machine frame number of mapped RAM in this system.
   15.30 + * This command always succeeds (it never returns an error code).
   15.31 + * arg == NULL.
   15.32 + */
   15.33 +#define XENMEM_maximum_ram_page     2
   15.34 +
   15.35 +/*
   15.36 + * Returns the current or maximum memory reservation, in pages, of the
   15.37 + * specified domain (may be DOMID_SELF). Returns -ve errcode on failure.
   15.38 + * arg == addr of domid_t.
   15.39 + */
   15.40 +#define XENMEM_current_reservation  3
   15.41 +#define XENMEM_maximum_reservation  4
   15.42 +
   15.43  #endif /* __XEN_PUBLIC_MEMORY_H__ */
   15.44  
   15.45  /*