Hello community, here is the log from the commit of package xen checked in at Thu Apr 20 01:07:13 CEST 2006. -------- --- arch/i386/xen/xen.changes 2006-04-19 18:02:01.000000000 +0200 +++ STABLE/xen/xen.changes 2006-04-19 20:30:13.000000000 +0200 @@ -1,0 +2,20 @@ +Wed Apr 19 12:22:53 MDT 2006 - ccoffing@novell.com + +- Don't kill xenstored and xenconsoled when stopping xend. + (#158562, #156261) + +------------------------------------------------------------------- +Wed Apr 19 10:46:32 MDT 2006 - ccoffing@novell.com + +- Update to 3.0.2-2 (xen-3.0-testing tree, changeset 9629): + + Fix for SMP IA32 VMX guest booting. + + KY's SETMAXMEM fix. + +------------------------------------------------------------------- +Wed Apr 19 10:23:57 MDT 2006 - cgriffin@novell.com + +- Removed HTT bit from cpuid and set logical processor count to 1. + Also fixed logic problem in svm code where apic=0 was not + handled (#162244). + +------------------------------------------------------------------- @@ -7,0 +28,64 @@ +Tue Apr 18 15:40:41 MDT 2006 - ccoffing@novell.com + +- Add /etc/xen/vm to vm config file search path (#167208). + +------------------------------------------------------------------- +Fri Apr 14 11:05:40 MDT 2006 - kallan@novell.com + +- Add support for bonding in network-bridge. (#161678). + +------------------------------------------------------------------- +Fri Apr 14 09:27:40 MDT 2006 - ccoffing@novell.com + +- Update to 3.0.2-2 (xen-3.0-testing tree, changeset 9620): + + Fixes stack corruption in libxs (XenSource #411). + +------------------------------------------------------------------- +Thu Apr 13 09:55:02 MDT 2006 - rmaxfiel@novell.com + +- Fixed a problem in ioemu which exited when the cdrom line was + found in the guest def file but the cd device contained no media. + (#161210) + +------------------------------------------------------------------- +Wed Apr 12 12:57:23 MDT 2006 - ccoffing@novell.com + +- Auto-balloon domain 0 for HVM domains (#149179). +- Update to 3.0.2-1 (xen-3.0-testing tree, changeset 9612): + + Fixes xmlrpc issues. + + Fixes several emulated instructions for HVM. + + Fixes for x86_64 inline assembly. + +------------------------------------------------------------------- +Tue Apr 11 16:45:48 MDT 2006 - ccoffing@novell.com + +- Fix "jitter" and race in dom0's memory target calculation, which + could cause auto-ballooning to fail (#164714). + +------------------------------------------------------------------- +Tue Apr 11 05:03:34 MDT 2006 - brogers@novell.com + +- Fix problem where localtime=1 results in zombie domains after + they shutdown (#164960) + +------------------------------------------------------------------- +Mon Apr 10 09:54:49 MDT 2006 - ccoffing@novell.com + +- Update to hg 9598 (xen-3.0-testing tree; 3.0.2-rc). Discounting + Linux changes and patches we already carry, this update contains: + + Saner error handling in iret hypercall (x86/64). + + Make root page table sanity check on restore more generic. + + Additional sanity / compatability checks during guest build. + + IO-APIC update hypercall fixes. + +------------------------------------------------------------------- +Fri Apr 7 11:45:56 MDT 2006 - ccoffing@novell.com + +- Don't throw an exception if 'xm top' is run by non-root; print + error message instead (#164224). +- Change localtime patch to account for daylight savings time + (Bruce Rogers). +- Re-add patch to make tightvnc work. It was accidentally dropped + recently (#149556). + +------------------------------------------------------------------- New: ---- xen-balloon.diff xen-bonding.diff xen-hvm-auto-balloon.diff xen-hvm-cpuid-ht.diff xen-hvm-interrupt-race.diff xen-missing-media.diff xen-tightvnc.diff xen-xm-top-needs-root.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xen.spec ++++++ --- /var/tmp/diff_new_pack.MgaPcb/_old 2006-04-20 01:06:26.000000000 +0200 +++ /var/tmp/diff_new_pack.MgaPcb/_new 2006-04-20 01:06:26.000000000 +0200 @@ -1,5 +1,5 @@ # -# spec file for package xen (Version 3.0.2_09590) +# spec file for package xen (Version 3.0.2_09629) # # Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine @@ -14,12 +14,12 @@ BuildRequires: LibVNCServer SDL-devel autoconf automake bin86 dev86 glibc-devel-32bit latex2html libjpeg-devel libreiserfs-devel python-devel te_ams te_latex tetex transfig %define xvers 3.0 %define xvermaj 3 -%define changeset 09590 +%define changeset 09629 %define build_xmtest 0 %define with_pygrub 1 %define xen_build_dir xen-3.0-testing -Version: 3.0.2_09590 -Release: 4 +Version: 3.0.2_09629 +Release: 1 License: GPL Group: System/Kernel Autoreqprov: on @@ -58,7 +58,15 @@ Patch18: xen-no-dummy-nfs-ip.diff Patch19: xen-xendomains-defaults.diff Patch20: xen-localtime.diff -Patch21: xen-hvm-localtime.diff +Patch21: xen-xm-top-needs-root.diff +Patch22: xen-tightvnc.diff +Patch23: xen-balloon.diff +Patch24: xen-missing-media.diff +Patch25: xen-bonding.diff +Patch26: xen-hvm-localtime.diff +Patch27: xen-hvm-auto-balloon.diff +Patch28: xen-hvm-cpuid-ht.diff +Patch29: xen-hvm-interrupt-race.diff Patch49: xen-enable-hvm-debug.diff Patch50: xen-enable-debug Patch99: xen-poweroff.diff @@ -427,6 +435,14 @@ %patch19 -p1 %patch20 -p1 %patch21 -p1 +%patch22 -p1 +%patch23 -p1 +%patch24 -p1 +%patch25 -p1 +%patch26 -p1 +%patch27 -p1 +%patch28 -p1 +%patch29 -p1 #%patch49 -p1 XEN_EXTRAVERSION=%version-%release XEN_EXTRAVERSION=${XEN_EXTRAVERSION#%{xvers}} @@ -733,6 +749,54 @@ * Wed Apr 19 2006 - agruen@suse.de - Create /boot symlinks in the %%install section instead of in %%post so that they will end up in the package file list. +* Wed Apr 19 2006 - ccoffing@novell.com +- Don't kill xenstored and xenconsoled when stopping xend. + (#158562, #156261) +* Wed Apr 19 2006 - ccoffing@novell.com +- Update to 3.0.2-2 (xen-3.0-testing tree, changeset 9629): + + Fix for SMP IA32 VMX guest booting. + + KY's SETMAXMEM fix. +* Wed Apr 19 2006 - cgriffin@novell.com +- Removed HTT bit from cpuid and set logical processor count to 1. + Also fixed logic problem in svm code where apic=0 was not + handled (#162244). +* Tue Apr 18 2006 - ccoffing@novell.com +- Add /etc/xen/vm to vm config file search path (#167208). +* Fri Apr 14 2006 - kallan@novell.com +- Add support for bonding in network-bridge. (#161678). +* Fri Apr 14 2006 - ccoffing@novell.com +- Update to 3.0.2-2 (xen-3.0-testing tree, changeset 9620): + + Fixes stack corruption in libxs (XenSource #411). +* Thu Apr 13 2006 - rmaxfiel@novell.com +- Fixed a problem in ioemu which exited when the cdrom line was + found in the guest def file but the cd device contained no media. + (#161210) +* Wed Apr 12 2006 - ccoffing@novell.com +- Auto-balloon domain 0 for HVM domains (#149179). +- Update to 3.0.2-1 (xen-3.0-testing tree, changeset 9612): + + Fixes xmlrpc issues. + + Fixes several emulated instructions for HVM. + + Fixes for x86_64 inline assembly. +* Tue Apr 11 2006 - ccoffing@novell.com +- Fix "jitter" and race in dom0's memory target calculation, which + could cause auto-ballooning to fail (#164714). +* Tue Apr 11 2006 - brogers@novell.com +- Fix problem where localtime=1 results in zombie domains after + they shutdown (#164960) +* Mon Apr 10 2006 - ccoffing@novell.com +- Update to hg 9598 (xen-3.0-testing tree; 3.0.2-rc). Discounting + Linux changes and patches we already carry, this update contains: + + Saner error handling in iret hypercall (x86/64). + + Make root page table sanity check on restore more generic. + + Additional sanity / compatability checks during guest build. + + IO-APIC update hypercall fixes. +* Fri Apr 07 2006 - ccoffing@novell.com +- Don't throw an exception if 'xm top' is run by non-root; print + error message instead (#164224). +- Change localtime patch to account for daylight savings time + (Bruce Rogers). +- Re-add patch to make tightvnc work. It was accidentally dropped + recently (#149556). * Thu Apr 06 2006 - ccoffing@novell.com - Update to hg 9590 (xen-3.0-testing tree; 3.0.2-rc). - Fix type error in localtime patch for para (Bruce Rogers). ++++++ init.xend ++++++ --- arch/i386/xen/init.xend 2006-04-04 18:53:47.000000000 +0200 +++ STABLE/xen/init.xend 2006-04-19 20:30:41.000000000 +0200 @@ -88,8 +88,6 @@ if [ -z "$XEND" ]; then echo -n "(not running) " xend stop - killall xenconsoled >/dev/null 2>&1 - killall xenstored >/dev/null 2>&1 rc_reset else echo -n "(pid $XEND) " @@ -104,8 +102,6 @@ done < <(xm list | grep -v ^Name) if [ -n "$sysrq_sent" ]; then sleep 1; fi xend stop - killall xenconsoled >/dev/null 2>&1 - killall xenstored >/dev/null 2>&1 rc_reset fi ;; ++++++ xen-3.0-testing-src.tar.bz2 ++++++ ++++ 2365 lines of diff (skipped) ++++++ xen-balloon.diff ++++++ Index: xen-3.0-testing/tools/python/xen/xend/balloon.py =================================================================== --- xen-3.0-testing.orig/tools/python/xen/xend/balloon.py +++ xen-3.0-testing/tools/python/xen/xend/balloon.py @@ -127,7 +127,7 @@ def free(required): retries = 0 sleep_time = SLEEP_TIME_GROWTH - last_new_alloc = None + last_new_alloc = float('inf') while retries < RETRY_LIMIT: free_mem = xc.physinfo()['free_memory'] @@ -136,15 +136,14 @@ def free(required): need_mem) return - if retries == 0: - log.debug("Balloon: free %d; need %d.", free_mem, need_mem) - if dom0_min_mem > 0: dom0_alloc = get_dom0_current_alloc() - new_alloc = dom0_alloc - (need_mem - free_mem) + log.debug("Balloon #%d: dom0_alloc %d; free %d; need %d.", + retries, dom0_alloc, free_mem, need_mem) + new_alloc = dom0_alloc - (need_mem - free_mem) if (new_alloc >= dom0_min_mem and - new_alloc != last_new_alloc): + new_alloc < last_new_alloc): log.debug("Balloon: setting dom0 target to %d.", new_alloc) dom0 = XendDomain.instance().privilegedDomain() ++++++ xen-bonding.diff ++++++ Index: xen-3.0-testing/tools/examples/network-bridge =================================================================== --- xen-3.0-testing.orig/tools/examples/network-bridge +++ xen-3.0-testing/tools/examples/network-bridge @@ -211,10 +211,11 @@ using loopback.nloopbacks=<N> on the dom create_bridge ${bridge} - if link_exists "$vdev"; then + preiftransfer + . /etc/sysconfig/network/ifcfg-${hwddev} + if [ ! "$BONDING_MASTER" = yes ] && link_exists "$vdev"; then mac=`ip link show ${netdev} | grep 'link\/ether' | sed -e 's/.*ether \(..:..:..:..:..:..\).*/\1/'` ifup ${netdev} # To ensure there is an IP to transfer - preiftransfer transfer_addrs ${netdev} ${vdev} ifdown ${netdev} ip link set ${netdev} name ${pdev} @@ -232,6 +233,9 @@ using loopback.nloopbacks=<N> on the dom ifup ${hwddev} else # old style without ${vdev} + add_to_bridge ${bridge} ${vif0} + ip link set ${vif0} up + add_to_bridge2 ${bridge} ${netdev} transfer_addrs ${netdev} ${bridge} transfer_routes ${netdev} ${bridge} fi @@ -268,6 +272,7 @@ op_stop () { ip link set ${pdev} name ${netdev} ifup ${netdev} else + ip link set dev ${vif0} down transfer_routes ${bridge} ${netdev} ip link set ${bridge} down fi ++++++ xen-changeset.diff ++++++ --- /var/tmp/diff_new_pack.MgaPcb/_old 2006-04-20 01:06:42.000000000 +0200 +++ /var/tmp/diff_new_pack.MgaPcb/_new 2006-04-20 01:06:42.000000000 +0200 @@ -5,7 +5,7 @@ @@ -7,6 +7,7 @@ INSTALL_DIR = $(INSTALL) -d -m0755 export XEN_VERSION = 3 export XEN_SUBVERSION = 0 - export XEN_EXTRAVERSION = .2 + export XEN_EXTRAVERSION = .2-2 +export XEN_CHANGESET = unavailable export XEN_FULLVERSION = $(XEN_VERSION).$(XEN_SUBVERSION)$(XEN_EXTRAVERSION) ++++++ xen-destdir.diff ++++++ --- /var/tmp/diff_new_pack.MgaPcb/_old 2006-04-20 01:06:42.000000000 +0200 +++ /var/tmp/diff_new_pack.MgaPcb/_new 2006-04-20 01:06:42.000000000 +0200 @@ -1,7 +1,7 @@ -Index: xen-unstable/Makefile +Index: xen-3.0-testing/Makefile =================================================================== ---- xen-unstable.orig/Makefile -+++ xen-unstable/Makefile +--- xen-3.0-testing.orig/Makefile ++++ xen-3.0-testing/Makefile @@ -2,6 +2,15 @@ # Grand Unified Makefile for Xen. # @@ -18,10 +18,10 @@ KERNELS ?= linux-2.6-xen # You may use wildcards in the above e.g. KERNELS=*2.6* -Index: xen-unstable/docs/Makefile +Index: xen-3.0-testing/docs/Makefile =================================================================== ---- xen-unstable.orig/docs/Makefile -+++ xen-unstable/docs/Makefile +--- xen-3.0-testing.orig/docs/Makefile ++++ xen-3.0-testing/docs/Makefile @@ -12,7 +12,7 @@ LATEX2HTML := latex2html DOXYGEN := doxygen POD2MAN := pod2man @@ -45,10 +45,10 @@ all: build build: ps pdf html man-pages rm -f *.aux *.dvi *.bbl *.blg *.glo *.idx *.ilg *.log *.ind *.toc -Index: xen-unstable/tools/Makefile +Index: xen-3.0-testing/tools/Makefile =================================================================== ---- xen-unstable.orig/tools/Makefile -+++ xen-unstable/tools/Makefile +--- xen-3.0-testing.orig/tools/Makefile ++++ xen-3.0-testing/tools/Makefile @@ -26,6 +26,14 @@ endif .PHONY: all install clean check check_clean ioemu eioemuinstall ioemuclean @@ -64,10 +64,10 @@ all: check @set -e; for subdir in $(SUBDIRS); do \ $(MAKE) -C $$subdir $@; \ -Index: xen-unstable/tools/xentrace/Makefile +Index: xen-3.0-testing/tools/xentrace/Makefile =================================================================== ---- xen-unstable.orig/tools/xentrace/Makefile -+++ xen-unstable/tools/xentrace/Makefile +--- xen-3.0-testing.orig/tools/xentrace/Makefile ++++ xen-3.0-testing/tools/xentrace/Makefile @@ -35,14 +35,14 @@ install: build [ -d $(DESTDIR)/usr/bin ] || $(INSTALL_DIR) $(DESTDIR)/usr/bin [ -z "$(LIBBIN)" ] || [ -d $(DESTDIR)/usr/$(LIBDIR)/xen/bin ] || \ @@ -89,10 +89,10 @@ clean: $(RM) *.a *.so *.o *.rpm $(BIN) $(LIBBIN) -Index: xen-unstable/xen/Makefile +Index: xen-3.0-testing/xen/Makefile =================================================================== ---- xen-unstable.orig/xen/Makefile -+++ xen-unstable/xen/Makefile +--- xen-3.0-testing.orig/xen/Makefile ++++ xen-3.0-testing/xen/Makefile @@ -11,6 +11,14 @@ export XEN_FULLVERSION = $(XEN_VERSION export BASEDIR := $(CURDIR) @@ -108,10 +108,10 @@ include Rules.mk default: build -Index: xen-unstable/tools/examples/Makefile +Index: xen-3.0-testing/tools/examples/Makefile =================================================================== ---- xen-unstable.orig/tools/examples/Makefile -+++ xen-unstable/tools/examples/Makefile +--- xen-3.0-testing.orig/tools/examples/Makefile ++++ xen-3.0-testing/tools/examples/Makefile @@ -38,29 +38,17 @@ XEN_HOTPLUG_SCRIPTS = xen-backend.agent UDEV_RULES_DIR = /etc/udev UDEV_RULES = xen-backend.rules @@ -156,10 +156,10 @@ done clean: -Index: xen-unstable/tools/xenmon/Makefile +Index: xen-3.0-testing/tools/xenmon/Makefile =================================================================== ---- xen-unstable.orig/tools/xenmon/Makefile -+++ xen-unstable/tools/xenmon/Makefile +--- xen-3.0-testing.orig/tools/xenmon/Makefile ++++ xen-3.0-testing/tools/xenmon/Makefile @@ -15,7 +15,9 @@ INSTALL_PROG = $(INSTALL) -m0755 INSTALL_DIR = $(INSTALL) -d -m0755 INSTALL_DATA = $(INSTALL) -m0644 @@ -186,10 +186,10 @@ clean: rm -f $(BIN) -Index: xen-unstable/tools/pygrub/Makefile +Index: xen-3.0-testing/tools/pygrub/Makefile =================================================================== ---- xen-unstable.orig/tools/pygrub/Makefile -+++ xen-unstable/tools/pygrub/Makefile +--- xen-3.0-testing.orig/tools/pygrub/Makefile ++++ xen-3.0-testing/tools/pygrub/Makefile @@ -8,10 +8,10 @@ build: ifndef XEN_PYTHON_NATIVE_INSTALL @@ -203,10 +203,10 @@ endif clean: -Index: xen-unstable/tools/python/Makefile +Index: xen-3.0-testing/tools/python/Makefile =================================================================== ---- xen-unstable.orig/tools/python/Makefile -+++ xen-unstable/tools/python/Makefile +--- xen-3.0-testing.orig/tools/python/Makefile ++++ xen-3.0-testing/tools/python/Makefile @@ -9,10 +9,10 @@ build: ifndef XEN_PYTHON_NATIVE_INSTALL @@ -220,10 +220,10 @@ endif test: -Index: xen-unstable/tools/security/Makefile +Index: xen-3.0-testing/tools/security/Makefile =================================================================== ---- xen-unstable.orig/tools/security/Makefile -+++ xen-unstable/tools/security/Makefile +--- xen-3.0-testing.orig/tools/security/Makefile ++++ xen-3.0-testing/tools/security/Makefile @@ -74,9 +74,9 @@ install: all $(ACM_CONFIG_FILE) $(INSTALL_DIR) -p $(DESTDIR)$(ACM_SECGEN_CGIDIR) $(INSTALL_PROG) -p $(ACM_INST_CGI) $(DESTDIR)$(ACM_SECGEN_CGIDIR) @@ -236,3 +236,16 @@ endif else all: +Index: xen-3.0-testing/tools/python/xen/xm/create.py +=================================================================== +--- xen-3.0-testing.orig/tools/python/xen/xm/create.py ++++ xen-3.0-testing/tools/python/xen/xm/create.py +@@ -65,7 +65,7 @@ gopts.opt('quiet', short='q', + use="Quiet.") + + gopts.opt('path', val='PATH', +- fn=set_value, default='.:/etc/xen', ++ fn=set_value, default='.:/etc/xen/vm', + use="""Search path for configuration scripts. + The value of PATH is a colon-separated directory list.""") + ++++++ xen-hvm-auto-balloon.diff ++++++ Index: xen-3.0-testing/tools/python/xen/xend/image.py =================================================================== --- xen-3.0-testing.orig/tools/python/xen/xend/image.py +++ xen-3.0-testing/tools/python/xen/xend/image.py @@ -19,6 +19,7 @@ import os, string import re +import math import xen.lowlevel.xc from xen.xend import sxp @@ -379,15 +380,19 @@ class HVMImageHandler(ImageHandler): os.waitpid(self.pid, 0) self.pid = 0 - def getDomainMemory(self, mem): + def getDomainMemory(self, mem_kb): """@see ImageHandler.getDomainMemory""" - page_kb = 4 - extra_pages = 0 if os.uname()[4] == 'ia64': page_kb = 16 # ROM size for guest firmware, ioreq page and xenstore page extra_pages = 1024 + 2 - return mem + extra_pages * page_kb + else: + page_kb = 4 + # This was derived emperically: + # 2.4 MB overhead per 1024 MB RAM + 16 MB constant + extra_mb = (2.4/1024) * (mem_kb/1024.0) + 16; + extra_pages = int( math.ceil( extra_mb*1024 / page_kb )) + return mem_kb + extra_pages * page_kb def register_shutdown_watch(self): """ add xen store watch on control/shutdown """ ++++++ xen-hvm-cpuid-ht.diff ++++++ Index: xen-3.0-testing/xen/arch/x86/hvm/svm/svm.c =================================================================== --- xen-3.0-testing.orig/xen/arch/x86/hvm/svm/svm.c +++ xen-3.0-testing/xen/arch/x86/hvm/svm/svm.c @@ -919,7 +919,13 @@ static void svm_vmexit_do_cpuid(struct v { if ( !hvm_apic_support(v->domain) || !vlapic_global_enabled((VLAPIC(v))) ) + { clear_bit(X86_FEATURE_APIC, &edx); + /* Since the apic is disabled, avoid any confusion about SMP cpus being available */ + clear_bit(X86_FEATURE_HT, &edx); /* clear the hyperthread bit */ + ebx &= 0xFF00FFFF; /* set the logical processor count to 1 */ + ebx |= 0x00010000; + } #if CONFIG_PAGING_LEVELS < 3 clear_bit(X86_FEATURE_PAE, &edx); Index: xen-3.0-testing/xen/arch/x86/hvm/vmx/vmx.c =================================================================== --- xen-3.0-testing.orig/xen/arch/x86/hvm/vmx/vmx.c +++ xen-3.0-testing/xen/arch/x86/hvm/vmx/vmx.c @@ -827,9 +827,16 @@ static void vmx_vmexit_do_cpuid(struct c if ( input == 1 ) { - if ( hvm_apic_support(v->domain) && + if ( !hvm_apic_support(v->domain) || !vlapic_global_enabled((VLAPIC(v))) ) + { clear_bit(X86_FEATURE_APIC, &edx); + /* Since the apic is disabled, avoid any confusion about SMP cpus being available */ + clear_bit(X86_FEATURE_HT, &edx); /* clear the hyperthread bit */ + ebx &= 0xFF00FFFF; /* set the logical processor count to 1 */ + ebx |= 0x00010000; + } + #if CONFIG_PAGING_LEVELS < 3 clear_bit(X86_FEATURE_PAE, &edx); ++++++ xen-hvm-interrupt-race.diff ++++++ Sending to the larger group. We think we have a handle on some of the instabilities reported below. Yunhong has a patch to catch a race condition we have observed here and another patch to fix it. Please incorporate the test patch to see if you're hitting the race condition. Thanks. Wilfred Index: xen-3.0-testing/xen/arch/x86/hvm/vmx/io.c =================================================================== --- xen-3.0-testing.orig/xen/arch/x86/hvm/vmx/io.c +++ xen-3.0-testing/xen/arch/x86/hvm/vmx/io.c @@ -148,12 +148,18 @@ asmlinkage void vmx_intr_assist(void) { int intr_type = 0; int highest_vector; - unsigned long eflags; + unsigned long eflags, idtv_info_field; struct vcpu *v = current; struct hvm_domain *plat=&v->domain->arch.hvm_domain; struct hvm_virpit *vpit = &plat->vpit; struct hvm_virpic *pic= &plat->vpic; + __vmread(IDT_VECTORING_INFO_FIELD, &idtv_info_field); + if (idtv_info_field & INTR_INFO_VALID_MASK) { + enable_irq_window(v); + return; + } + if ( v->vcpu_id == 0 ) hvm_pic_assist(v); ++++++ xen-localtime.diff ++++++ --- /var/tmp/diff_new_pack.MgaPcb/_old 2006-04-20 01:06:42.000000000 +0200 +++ /var/tmp/diff_new_pack.MgaPcb/_new 2006-04-20 01:06:42.000000000 +0200 @@ -1,7 +1,7 @@ -Index: xen-unstable/tools/libxc/xc_domain.c +Index: xen-3.0-testing/tools/libxc/xc_domain.c =================================================================== ---- xen-unstable.orig/tools/libxc/xc_domain.c -+++ xen-unstable/tools/libxc/xc_domain.c +--- xen-3.0-testing.orig/tools/libxc/xc_domain.c ++++ xen-3.0-testing/tools/libxc/xc_domain.c @@ -257,6 +257,17 @@ int xc_domain_setmaxmem(int xc_handle, return do_dom0_op(xc_handle, &op); } @@ -20,10 +20,10 @@ int xc_domain_memory_increase_reservation(int xc_handle, uint32_t domid, unsigned long nr_extents, -Index: xen-unstable/tools/libxc/xenctrl.h +Index: xen-3.0-testing/tools/libxc/xenctrl.h =================================================================== ---- xen-unstable.orig/tools/libxc/xenctrl.h -+++ xen-unstable/tools/libxc/xenctrl.h +--- xen-3.0-testing.orig/tools/libxc/xenctrl.h ++++ xen-3.0-testing/tools/libxc/xenctrl.h @@ -385,6 +385,10 @@ int xc_domain_setmaxmem(int xc_handle, uint32_t domid, unsigned int max_memkb); @@ -35,48 +35,10 @@ int xc_domain_memory_increase_reservation(int xc_handle, uint32_t domid, unsigned long nr_extents, -Index: xen-unstable/tools/python/xen/lowlevel/xc/xc.c +Index: xen-3.0-testing/tools/python/xen/xend/XendDomainInfo.py =================================================================== ---- xen-unstable.orig/tools/python/xen/lowlevel/xc/xc.c -+++ xen-unstable/tools/python/xen/lowlevel/xc/xc.c -@@ -826,6 +826,19 @@ static PyObject *pyxc_domain_iomem_permi - return zero; - } - -+static PyObject *pyxc_domain_set_time_offset(XcObject *self, PyObject *args) -+{ -+ uint32_t dom; -+ int32_t time_offset_seconds; -+ -+ if (!PyArg_ParseTuple(args, "i", &dom)) -+ return NULL; -+ -+ time_offset_seconds = -__timezone; -+ if (xc_domain_set_time_offset(self->xc_handle, dom, time_offset_seconds) != 0) -+ return NULL; -+ return zero; -+} - - static PyObject *dom_op(XcObject *self, PyObject *args, - int (*fn)(int, uint32_t)) -@@ -1147,6 +1160,13 @@ static PyMethodDef pyxc_methods[] = { - "Returns: [int]: The size in KiB of memory spanning the given number " - "of pages.\n" }, - -+ { "domain_set_time_offset", -+ (PyCFunction)pyxc_domain_set_time_offset, -+ METH_VARARGS, "\n" -+ "Set a domain's time offset to Dom0's localtime\n" -+ " dom [int]: Domain whose time offset is being set.\n" -+ "Returns: [int] 0 on success; -1 on error.\n" }, -+ - { NULL, NULL, 0, NULL } - }; - -Index: xen-unstable/tools/python/xen/xend/XendDomainInfo.py -=================================================================== ---- xen-unstable.orig/tools/python/xen/xend/XendDomainInfo.py -+++ xen-unstable/tools/python/xen/xend/XendDomainInfo.py +--- xen-3.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py ++++ xen-3.0-testing/tools/python/xen/xend/XendDomainInfo.py @@ -128,6 +128,7 @@ ROUNDTRIPPING_CONFIG_ENTRIES = [ ('bootloader', str), ('bootentry', str), @@ -96,10 +58,10 @@ xc.domain_setcpuweight(self.domid, self.info['cpu_weight']) # repin domain vcpus if a restricted cpus list is provided -Index: xen-unstable/tools/python/xen/xm/create.py +Index: xen-3.0-testing/tools/python/xen/xm/create.py =================================================================== ---- xen-unstable.orig/tools/python/xen/xm/create.py -+++ xen-unstable/tools/python/xen/xm/create.py +--- xen-3.0-testing.orig/tools/python/xen/xm/create.py ++++ xen-3.0-testing/tools/python/xen/xm/create.py @@ -626,6 +626,8 @@ def make_config(vals): config.append(['backend', ['tpmif']]) if vals.root: @@ -109,10 +71,10 @@ if vals.bootloader: config_image = run_bootloader(vals) -Index: xen-unstable/xen/arch/x86/time.c +Index: xen-3.0-testing/xen/arch/x86/time.c =================================================================== ---- xen-unstable.orig/xen/arch/x86/time.c -+++ xen-unstable/xen/arch/x86/time.c +--- xen-3.0-testing.orig/xen/arch/x86/time.c ++++ xen-3.0-testing/xen/arch/x86/time.c @@ -716,7 +716,7 @@ void do_settime(unsigned long secs, unsi { s = d->shared_info; @@ -145,11 +107,11 @@ d->shared_info->wc_nsec = wc_nsec; version_update_end(&d->shared_info->wc_version); spin_unlock(&wc_lock); -Index: xen-unstable/xen/common/dom0_ops.c +Index: xen-3.0-testing/xen/common/dom0_ops.c =================================================================== ---- xen-unstable.orig/xen/common/dom0_ops.c -+++ xen-unstable/xen/common/dom0_ops.c -@@ -682,6 +682,20 @@ long do_dom0_op(GUEST_HANDLE(dom0_op_t) +--- xen-3.0-testing.orig/xen/common/dom0_ops.c ++++ xen-3.0-testing/xen/common/dom0_ops.c +@@ -682,6 +682,21 @@ long do_dom0_op(GUEST_HANDLE(dom0_op_t) break; #endif @@ -162,6 +124,7 @@ + if ( d != NULL ) + { + do_settimeoffset(d, op->u.settimeoffset.time_offset_seconds); ++ put_domain(d); + ret = 0; + } + } @@ -170,10 +133,10 @@ default: ret = arch_do_dom0_op(op, u_dom0_op); break; -Index: xen-unstable/xen/include/public/dom0_ops.h +Index: xen-3.0-testing/xen/include/public/dom0_ops.h =================================================================== ---- xen-unstable.orig/xen/include/public/dom0_ops.h -+++ xen-unstable/xen/include/public/dom0_ops.h +--- xen-3.0-testing.orig/xen/include/public/dom0_ops.h ++++ xen-3.0-testing/xen/include/public/dom0_ops.h @@ -471,6 +471,12 @@ typedef struct dom0_hypercall_init { } dom0_hypercall_init_t; DEFINE_GUEST_HANDLE(dom0_hypercall_init_t); @@ -195,10 +158,10 @@ uint8_t pad[128]; } u; } dom0_op_t; -Index: xen-unstable/xen/include/xen/sched.h +Index: xen-3.0-testing/xen/include/xen/sched.h =================================================================== ---- xen-unstable.orig/xen/include/xen/sched.h -+++ xen-unstable/xen/include/xen/sched.h +--- xen-3.0-testing.orig/xen/include/xen/sched.h ++++ xen-3.0-testing/xen/include/xen/sched.h @@ -155,6 +155,7 @@ struct domain /* Control-plane tools handle for this domain. */ @@ -207,10 +170,10 @@ }; struct domain_setup_info -Index: xen-unstable/xen/include/xen/time.h +Index: xen-3.0-testing/xen/include/xen/time.h =================================================================== ---- xen-unstable.orig/xen/include/xen/time.h -+++ xen-unstable/xen/include/xen/time.h +--- xen-3.0-testing.orig/xen/include/xen/time.h ++++ xen-3.0-testing/xen/include/xen/time.h @@ -59,6 +59,7 @@ extern void update_dom_time(struct vcpu extern void do_settime( unsigned long secs, unsigned long nsecs, u64 system_time_base); @@ -219,3 +182,52 @@ extern void send_timer_event(struct vcpu *v); #endif /* __XEN_TIME_H__ */ +Index: xen-3.0-testing/tools/python/xen/lowlevel/xc/xc.c +=================================================================== +--- xen-3.0-testing.orig/tools/python/xen/lowlevel/xc/xc.c ++++ xen-3.0-testing/tools/python/xen/lowlevel/xc/xc.c +@@ -826,6 +826,30 @@ static PyObject *pyxc_domain_iomem_permi + return zero; + } + ++static PyObject *pyxc_domain_set_time_offset(XcObject *self, PyObject *args) ++{ ++ uint32_t dom; ++ int32_t time_offset_seconds; ++ time_t calendar_time; ++ struct tm local_time; ++ struct tm utc_time; ++ ++ if (!PyArg_ParseTuple(args, "i", &dom)) ++ return NULL; ++ ++ calendar_time = time(NULL); ++ localtime_r(&calendar_time, &local_time); ++ gmtime_r(&calendar_time, &utc_time); ++ /* set up to get calendar time based on utc_time, with local dst setting */ ++ utc_time.tm_isdst = local_time.tm_isdst; ++ time_offset_seconds = (int32_t)difftime(calendar_time, mktime(&utc_time)); ++ ++ if (xc_domain_set_time_offset(self->xc_handle, dom, time_offset_seconds) != 0) ++ return NULL; ++ ++ Py_INCREF(zero); ++ return zero; ++} + + static PyObject *dom_op(XcObject *self, PyObject *args, + int (*fn)(int, uint32_t)) +@@ -1147,6 +1171,13 @@ static PyMethodDef pyxc_methods[] = { + "Returns: [int]: The size in KiB of memory spanning the given number " + "of pages.\n" }, + ++ { "domain_set_time_offset", ++ (PyCFunction)pyxc_domain_set_time_offset, ++ METH_VARARGS, "\n" ++ "Set a domain's time offset to Dom0's localtime\n" ++ " dom [int]: Domain whose time offset is being set.\n" ++ "Returns: [int] 0 on success; -1 on error.\n" }, ++ + { NULL, NULL, 0, NULL } + }; + ++++++ xen-max-free-mem.diff ++++++ --- /var/tmp/diff_new_pack.MgaPcb/_old 2006-04-20 01:06:42.000000000 +0200 +++ /var/tmp/diff_new_pack.MgaPcb/_new 2006-04-20 01:06:43.000000000 +0200 @@ -1,7 +1,7 @@ -Index: xen-unstable/tools/python/xen/xend/XendNode.py +Index: xen-3.0-testing/tools/python/xen/xend/XendNode.py =================================================================== ---- xen-unstable.orig/tools/python/xen/xend/XendNode.py -+++ xen-unstable/tools/python/xen/xend/XendNode.py +--- xen-3.0-testing.orig/tools/python/xen/xend/XendNode.py ++++ xen-3.0-testing/tools/python/xen/xend/XendNode.py @@ -65,6 +65,16 @@ class XendNode: info['threads_per_core']) info['cpu_mhz'] = info['cpu_khz'] / 1000 @@ -27,89 +27,22 @@ ] return [[k, info[k]] for k in ITEM_ORDER] -Index: xen-unstable/tools/python/xen/xend/image.py +Index: xen-3.0-testing/tools/python/xen/xend/balloon.py =================================================================== ---- xen-unstable.orig/tools/python/xen/xend/image.py -+++ xen-unstable/tools/python/xen/xend/image.py -@@ -381,12 +381,25 @@ class HVMImageHandler(ImageHandler): - - def getDomainMemory(self, mem): - """@see ImageHandler.getDomainMemory""" -- page_kb = 4 -- extra_pages = 0 - if os.uname()[4] == 'ia64': - page_kb = 16 - # ROM size for guest firmware, ioreq page and xenstore page - extra_pages = 1024 + 2 -+ else: -+ page_kb = 4 -+ # Max video RAM allocated by tools/ioemu/vl.c: -+ # vgaram_pages = (vga_ram_size -1)/PAGE_SIZE + 1; -+ # = (4096*1024 -1)/4096 + 1 -+ # = 1024 -+ # free_pages = vgaram_pages / L1_PAGETABLE_ENTRIES; -+ # = 1024 / min(512,1024) -+ # = 2 -+ # extra_pages = vgaram_pages + free_pages; -+ # = 1024 + 2 -+ # FIXME: Ideally this value would be determined by querying -+ # qemu-dm, or having qemu-dm do the ballooning, rather -+ # than hard-coding values here. :-/ -+ extra_pages = 1024 + 2 - return mem + extra_pages * page_kb - - def register_shutdown_watch(self): -Index: xen-unstable/tools/python/xen/xend/balloon.py -=================================================================== ---- xen-unstable.orig/tools/python/xen/xend/balloon.py -+++ xen-unstable/tools/python/xen/xend/balloon.py -@@ -26,6 +26,57 @@ import XendRoot - from XendLogging import log - from XendError import VmError - -+# A mapping between easy-to-remember labels and the more verbose -+# label actually shown in the PROC_XEN_BALLOON file. -+labels = { 'current' : 'Current allocation', -+ 'target' : 'Requested target', +--- xen-3.0-testing.orig/tools/python/xen/xend/balloon.py ++++ xen-3.0-testing/tools/python/xen/xend/balloon.py +@@ -44,6 +44,7 @@ SLEEP_TIME_GROWTH = 0.1 + # label actually shown in the PROC_XEN_BALLOON file. + labels = { 'current' : 'Current allocation', + 'target' : 'Requested target', + 'max-target' : 'Maximum target', -+ 'low-balloon' : 'Low-mem balloon', -+ 'high-balloon' : 'High-mem balloon', -+ 'limit' : 'Xen hard limit' } -+ -+def _get_proc_balloon(label): -+ """Returns the value for the named label. Returns None if the label was -+ not found or the value was non-numeric.""" -+ -+ f = file(PROC_XEN_BALLOON, 'r') -+ try: -+ for line in f: -+ keyvalue = line.split(':') -+ if keyvalue[0] == label: -+ values = keyvalue[1].split() -+ if values[0].isdigit(): -+ return int(values[0]) -+ else: -+ return None -+ return None -+ finally: -+ f.close() -+ -+def get_dom0_current_alloc(): -+ """Returns the current memory allocation (in MiB) of dom0.""" -+ -+ kb = _get_proc_balloon(labels['current']) -+ if kb == None: -+ raise VmError('Failed to query current memory allocation of dom0.') -+ return kb / 1024 -+ -+def get_dom0_target_alloc(): -+ """Returns the target memory allocation (in MiB) of dom0.""" -+ -+ kb = _get_proc_balloon(labels['target']) -+ if kb == None: -+ raise VmError('Failed to query target memory allocation of dom0.') -+ return kb / 1024 -+ + 'low-balloon' : 'Low-mem balloon', + 'high-balloon' : 'High-mem balloon', + 'limit' : 'Xen hard limit' } +@@ -82,6 +83,15 @@ def get_dom0_target_alloc(): + raise VmError('Failed to query target memory allocation of dom0.') + return kb / 1024 + +def get_dom0_max_target(): + """Returns the maximum amount of memory (in MiB) that is potentially visible + to dom0.""" @@ -118,49 +51,14 @@ + if kb == None: + raise VmError('Failed to query maximum target memory allocation of dom0.') + return kb / 1024 - - PROC_XEN_BALLOON = '/proc/xen/balloon' - -@@ -126,21 +177,21 @@ def free(required): - need_mem) - return - -- if retries == 0: -- log.debug("Balloon: free %d; need %d.", free_mem, need_mem) -+ log.debug("Balloon #%d: free %d; need %d.", retries, free_mem, need_mem) + -+ if dom0_min_mem == 0: -+ break - -- if dom0_min_mem > 0: -- dom0_alloc = get_dom0_current_alloc() -- new_alloc = dom0_alloc - (need_mem - free_mem) -- -- if (new_alloc >= dom0_min_mem and -- new_alloc != last_new_alloc): -- log.debug("Balloon: setting dom0 target to %d.", -- new_alloc) -- dom0 = XendDomain.instance().privilegedDomain() -- dom0.setMemoryTarget(new_alloc) -- last_new_alloc = new_alloc -- # Continue to retry, waiting for ballooning. -+ dom0_alloc = get_dom0_current_alloc() -+ new_alloc = dom0_alloc - (need_mem - free_mem) -+ log.debug("new_alloc: %d", new_alloc) -+ if (new_alloc >= dom0_min_mem and -+ new_alloc != last_new_alloc): -+ log.debug("Balloon: setting dom0 target to %d.", new_alloc) -+ dom0 = XendDomain.instance().privilegedDomain() -+ dom0.setMemoryTarget(new_alloc) -+ last_new_alloc = new_alloc -+ # Continue to retry, waiting for ballooning. - - time.sleep(sleep_time) - retries += 1 -Index: xen-unstable/tools/python/xen/xend/XendDomainInfo.py + def free(required): + """Balloon out memory from the privileged domain so that there is the + specified required amount (in KiB) free. +Index: xen-3.0-testing/tools/python/xen/xend/XendDomainInfo.py =================================================================== ---- xen-unstable.orig/tools/python/xen/xend/XendDomainInfo.py -+++ xen-unstable/tools/python/xen/xend/XendDomainInfo.py +--- xen-3.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py ++++ xen-3.0-testing/tools/python/xen/xend/XendDomainInfo.py @@ -940,6 +940,27 @@ class XendDomainInfo: ## public: @@ -189,10 +87,10 @@ def setMemoryTarget(self, target): """Set the memory target of this domain. @param target In MiB. -Index: xen-unstable/tools/python/xen/xend/server/SrvDomain.py +Index: xen-3.0-testing/tools/python/xen/xend/server/SrvDomain.py =================================================================== ---- xen-unstable.orig/tools/python/xen/xend/server/SrvDomain.py -+++ xen-unstable/tools/python/xen/xend/server/SrvDomain.py +--- xen-3.0-testing.orig/tools/python/xen/xend/server/SrvDomain.py ++++ xen-3.0-testing/tools/python/xen/xend/server/SrvDomain.py @@ -145,7 +145,7 @@ class SrvDomain(SrvDir): ++++++ xen-missing-media.diff ++++++ Index: xen-3.0-testing/tools/ioemu/vl.c =================================================================== --- xen-3.0-testing.orig/tools/ioemu/vl.c +++ xen-3.0-testing/tools/ioemu/vl.c @@ -3243,17 +3243,8 @@ int main(int argc, char **argv) /* we always create the cdrom drive, even if no disk is there */ bdrv_init(); if (has_cdrom) { - int fd; - if ( (fd = open(hd_filename[2], O_RDONLY | O_BINARY)) < 0) { - hd_filename[2]=NULL; - bs_table[2]=NULL; - fprintf(logfile, "Could not open CD %s.\n", hd_filename[i]); - } - else { - close(fd); - bs_table[2] = bdrv_new("cdrom"); - bdrv_set_type_hint(bs_table[2], BDRV_TYPE_CDROM); - } + bs_table[2] = bdrv_new("cdrom"); + bdrv_set_type_hint(bs_table[2], BDRV_TYPE_CDROM); } /* open the virtual block devices */ @@ -3265,6 +3256,8 @@ int main(int argc, char **argv) bs_table[i] = bdrv_new(buf); } if (bdrv_open(bs_table[i], hd_filename[i], snapshot) < 0) { + if ((i==2) && has_cdrom) + continue; fprintf(stderr, "qemu: could not open hard disk image '%s'\n", hd_filename[i]); exit(1); ++++++ xen-tightvnc.diff ++++++ Index: xen-3.0-testing/tools/python/xen/xm/create.py =================================================================== --- xen-3.0-testing.orig/tools/python/xen/xm/create.py +++ xen-3.0-testing/tools/python/xen/xm/create.py @@ -766,8 +766,7 @@ def choose_vnc_display(): vncpid = None def spawn_vnc(display): - vncargs = (["vncviewer", "-log", "*:stdout:0", - "-listen", "%d" % (VNC_BASE_PORT + display) ]) + vncargs = (["vncviewer", "-listen", "%d" % (display) ]) global vncpid vncpid = os.spawnvp(os.P_NOWAIT, "vncviewer", vncargs) ++++++ xen-xm-top-needs-root.diff ++++++ Index: xen-3.0-testing/tools/python/xen/xm/main.py =================================================================== --- xen-3.0-testing.orig/tools/python/xen/xm/main.py +++ xen-3.0-testing/tools/python/xen/xm/main.py @@ -716,6 +716,10 @@ def xm_console(args): def xm_top(args): arg_check(args, "top", 0) + # A hack to get a clear error message if ran as non-root + if os.geteuid() != 0: + raise IOError() + os.execvp('xentop', ['xentop']) def xm_dmesg(args): ++++++ xen-xmexample.diff ++++++ --- /var/tmp/diff_new_pack.MgaPcb/_old 2006-04-20 01:06:43.000000000 +0200 +++ /var/tmp/diff_new_pack.MgaPcb/_new 2006-04-20 01:06:43.000000000 +0200 @@ -1,11 +1,10 @@ Change various example paths in the config files to match SUSE. -Index: xen-unstable/tools/examples/xmexample1 +Index: xen-3.0-testing/tools/examples/xmexample1 =================================================================== ---- xen-unstable.orig/tools/examples/xmexample1 -+++ xen-unstable/tools/examples/xmexample1 -@@ -6,13 +6,16 @@ - # you can set the parameters for the domain on the xm command line. +--- xen-3.0-testing.orig/tools/examples/xmexample1 ++++ xen-3.0-testing/tools/examples/xmexample1 +@@ -7,11 +7,14 @@ #============================================================================ #---------------------------------------------------------------------------- @@ -25,13 +24,11 @@ # The domain build function. Default is 'linux'. #builder='linux' - -Index: xen-unstable/tools/examples/xmexample2 +Index: xen-3.0-testing/tools/examples/xmexample2 =================================================================== ---- xen-unstable.orig/tools/examples/xmexample2 -+++ xen-unstable/tools/examples/xmexample2 -@@ -34,13 +34,16 @@ xm_vars.var('vmid', - # Check the defined variables have valid values.. +--- xen-3.0-testing.orig/tools/examples/xmexample2 ++++ xen-3.0-testing/tools/examples/xmexample2 +@@ -35,11 +35,14 @@ xm_vars.var('vmid', xm_vars.check() #---------------------------------------------------------------------------- @@ -51,13 +48,11 @@ # The domain build function. Default is 'linux'. #builder='linux' - -Index: xen-unstable/tools/examples/xmexample3 +Index: xen-3.0-testing/tools/examples/xmexample3 =================================================================== ---- xen-unstable.orig/tools/examples/xmexample3 -+++ xen-unstable/tools/examples/xmexample3 -@@ -34,13 +34,16 @@ xm_vars.var('vmid', - # Check the defined variables have valid values.. +--- xen-3.0-testing.orig/tools/examples/xmexample3 ++++ xen-3.0-testing/tools/examples/xmexample3 +@@ -35,11 +35,14 @@ xm_vars.var('vmid', xm_vars.check() #---------------------------------------------------------------------------- @@ -77,13 +72,11 @@ # The domain build function. Default is 'linux'. #builder='linux' - -Index: xen-unstable/tools/examples/xmexample.vti +Index: xen-3.0-testing/tools/examples/xmexample.vti =================================================================== ---- xen-unstable.orig/tools/examples/xmexample.vti -+++ xen-unstable/tools/examples/xmexample.vti -@@ -43,9 +43,9 @@ vif = [ 'type=ioemu, bridge=xenbr0' ] - # where UNAME is the device, DEV is the device name the domain will see, +--- xen-3.0-testing.orig/tools/examples/xmexample.vti ++++ xen-3.0-testing/tools/examples/xmexample.vti +@@ -44,7 +44,7 @@ vif = [ 'type=ioemu, bridge=xenbr0' ] # and MODE is r for read-only, w for read-write. #disk = [ 'phy:hda1,hda1,r' ] @@ -92,13 +85,11 @@ #---------------------------------------------------------------------------- # Set according to whether you want the domain restarted when it exits. - # The default is 'onreboot', which restarts the domain when it shuts down -Index: xen-unstable/tools/examples/xmexample.hvm +Index: xen-3.0-testing/tools/examples/xmexample.hvm =================================================================== ---- xen-unstable.orig/tools/examples/xmexample.hvm -+++ xen-unstable/tools/examples/xmexample.hvm -@@ -57,9 +57,9 @@ vif = [ 'type=ioemu, bridge=xenbr0' ] - # where UNAME is the device, DEV is the device name the domain will see, +--- xen-3.0-testing.orig/tools/examples/xmexample.hvm ++++ xen-3.0-testing/tools/examples/xmexample.hvm +@@ -58,7 +58,7 @@ vif = [ 'type=ioemu, bridge=xenbr0' ] # and MODE is r for read-only, w for read-write. #disk = [ 'phy:hda1,hda1,r' ] @@ -107,4 +98,12 @@ #---------------------------------------------------------------------------- # Configure the behaviour when a domain exits. There are three 'reasons' - # for a domain to stop: poweroff, reboot, and crash. For each of these you +@@ -108,7 +108,7 @@ device_model = '/usr/' + arch_libdir + ' + + #----------------------------------------------------------------------------- + # boot on floppy (a), hard disk (c) or CD-ROM (d) +-#boot=[a|c|d] ++#boot='d' + #----------------------------------------------------------------------------- + # write to temporary files instead of disk image files + #snapshot=1 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun...