Hello community,
here is the log from the commit of package xen
checked in at Fri Sep 12 17:57:49 CEST 2008.
--------
--- arch/i386/xen/xen.changes 2008-09-01 16:57:04.000000000 +0200
+++ /mounts/work_src_done/STABLE/xen/xen.changes 2008-09-12 01:02:38.000000000 +0200
@@ -1,0 +2,37 @@
+Thu Sep 11 12:42:05 MDT 2008 - brogers@novell.com
+
+- Added gdbserver-xen to the set of tools we build.
+ fate#302942
+
+-------------------------------------------------------------------
+Thu Sep 11 10:32:17 MDT 2008 - jfehlig@novell.com
+
+- Added ocfs2 to Should-Start in xendomains init script
+
+-------------------------------------------------------------------
+Wed Sep 10 20:47:45 MDT 2008 - plc@novell.com
+
+- Added pv cdrom support to blktap
+ fate#300964
+
+-------------------------------------------------------------------
+Wed Sep 10 14:06:51 MDT 2008 - jfehlig@novell.com
+
+- Removed invocation of network-bridge script from xend-config.sxp.
+ Networks are now created through yast2-network package.
+- Added sysconfig hook script for Xen to cope with ifup/ifdown
+ events on network devices (e.g. bridges) in use by virtual
+ machines.
+ fate#303386
+
+-------------------------------------------------------------------
+Mon Sep 8 08:53:25 MDT 2008 - carnold@novell.com
+
+- Updated to xen version 3.3.1 RC changeset 18390.
+
+-------------------------------------------------------------------
+Wed Sep 3 21:07:56 CEST 2008 - kwolf@suse.de
+
+- Snapshots: Fix xend API functions for libvirt usage
+
+-------------------------------------------------------------------
Old:
----
ns_tools.patch
ns_xen_base.patch
ns_xen_extension.patch
xen-3.3.0-testing-src.tar.bz2
New:
----
18412-x86-page-type-preemptible.patch
18420-x86-page-type-preemptible-fix.patch
blktap-pv-cdrom.patch
dump-exec-state.patch
hv_tools.patch
hv_xen_base.patch
hv_xen_extension.patch
poll-single-port.patch
tools-gdbserver-build.diff
x86-microcode.patch
xen-3.3.1-testing-src.tar.bz2
xen-updown.sh
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xen.spec ++++++
--- /var/tmp/diff_new_pack.UX8100/_old 2008-09-12 17:57:25.000000000 +0200
+++ /var/tmp/diff_new_pack.UX8100/_new 2008-09-12 17:57:25.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package xen (Version 3.3.0_18358_02)
+# spec file for package xen (Version 3.3.1_18390_01)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -21,8 +21,8 @@
Name: xen
%define xvers 3.3
%define xvermaj 3
-%define changeset 18358
-%define xen_build_dir xen-3.3.0-testing
+%define changeset 18390
+%define xen_build_dir xen-3.3.1-testing
%if %sles_version
%define with_kmp 1
%else
@@ -40,14 +40,14 @@
%if %{?with_kmp}0
BuildRequires: kernel-source kernel-syms module-init-tools xorg-x11
%endif
-Version: 3.3.0_18358_02
-Release: 2
+Version: 3.3.1_18390_01
+Release: 1
License: GPL v2 only
Group: System/Kernel
AutoReqProv: on
PreReq: %insserv_prereq %fillup_prereq
Summary: Xen Virtualization: Hypervisor (aka VMM aka Microkernel)
-Source0: xen-3.3.0-testing-src.tar.bz2
+Source0: xen-3.3.1-testing-src.tar.bz2
Source2: README.SuSE
Source3: boot.xen
Source4: boot.local.xenU
@@ -66,7 +66,11 @@
# Xen API remote authentication sources
Source23: etc_pam.d_xen-api
Source24: xenapiusers
+# sysconfig hook script for Xen
+Source25: xen-updown.sh
# Upstream patches
+Patch0: 18412-x86-page-type-preemptible.patch
+Patch1: 18420-x86-page-type-preemptible-fix.patch
# Our patches
Patch100: xen-config.diff
Patch101: xend-config.diff
@@ -111,6 +115,7 @@
Patch157: xen-api-auth.patch
Patch158: xen-qemu-iscsi-fix.patch
Patch159: xend-vif-fix.patch
+Patch160: tools-gdbserver-build.diff
# Patches for snapshot support
Patch170: qemu-img-snapshot.patch
Patch171: ioemu-blktap-fix-open.patch
@@ -126,18 +131,22 @@
# Jim's domain lock patch
Patch190: xend-domain-lock.patch
# Patches from Jan
-Patch240: x86-show-page-walk-early.patch
-Patch241: svm-lmsl.patch
-Patch242: x86-extra-trap-info.patch
+Patch240: poll-single-port.patch
+Patch241: dump-exec-state.patch
+Patch242: x86-show-page-walk-early.patch
+Patch243: svm-lmsl.patch
+Patch244: x86-extra-trap-info.patch
+Patch245: x86-microcode.patch
Patch250: 32on64-extra-mem.patch
# PV Driver Patches
Patch350: pv-driver-build.patch
Patch351: xen-ioemu-hvm-pv-support.diff
Patch352: pvdrv_emulation_control.patch
+Patch353: blktap-pv-cdrom.patch
# novell_shim patches
-Patch400: ns_tools.patch
-Patch401: ns_xen_base.patch
-Patch402: ns_xen_extension.patch
+Patch400: hv_tools.patch
+Patch401: hv_xen_base.patch
+Patch402: hv_xen_extension.patch
Url: http://www.cl.cam.ac.uk/Research/SRG/netos/xen/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%define pysite %(python -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib()")
@@ -469,6 +478,8 @@
%prep
%setup -q -n %xen_build_dir
+%patch0 -p1
+%patch1 -p1
%patch100 -p1
%patch101 -p1
%patch102 -p1
@@ -512,6 +523,7 @@
%patch157 -p1
%patch158 -p1
%patch159 -p1
+%patch160 -p1
%patch170 -p1
%patch171 -p1
%patch172 -p1
@@ -527,16 +539,20 @@
%patch240 -p1
%patch241 -p1
%patch242 -p1
+%patch243 -p1
+%patch244 -p1
+%patch245 -p1
%patch250 -p1
%patch350 -p1
%patch351 -p1
%patch352 -p1
+%patch353 -p1
# Don't use shim for now
-#%ifarch x86_64
-#%patch400 -p1
-#%patch401 -p1
-#%patch402 -p1
-#%endif
+%ifarch x86_64
+%patch400 -p1
+%patch401 -p1
+%patch402 -p1
+%endif
%build
XEN_EXTRAVERSION=%version-%release
@@ -548,6 +564,10 @@
export RPM_OPT_FLAGS
make -C tools/include/xen-foreign
make tools docs
+cd tools/debugger/gdb
+# there are code problems that don't pass the 02-check-gcc-output, hence bitbucket
+./gdbbuild 1>/dev/null 2>/dev/null
+cd ../../..
%if %{?with_kmp}0
# pv driver modules
export XL=/usr/src/linux
@@ -610,6 +630,7 @@
export XEN_PYTHON_NATIVE_INSTALL=1
make -C tools install \
DESTDIR=$RPM_BUILD_ROOT MANDIR=%{_mandir}
+cp tools/debugger/gdb/gdb-6.2.1-linux-i386-xen/gdb/gdbserver/gdbserver-xen $RPM_BUILD_ROOT/usr/bin/gdbserver-xen
make -C tools/misc/serial-split install \
DESTDIR=$RPM_BUILD_ROOT MANDIR=%{_mandir}
%ifarch x86_64
@@ -656,6 +677,13 @@
install -d $RPM_BUILD_ROOT/etc/pam.d
install -m644 %SOURCE23 $RPM_BUILD_ROOT/etc/pam.d/xen-api
install -m644 %SOURCE24 $RPM_BUILD_ROOT/etc/xen/
+# sysconfig hook for Xen
+mkdir -p $RPM_BUILD_ROOT/etc/sysconfig/network/scripts
+mkdir -p $RPM_BUILD_ROOT/etc/sysconfig/network/if-up.d
+mkdir -p $RPM_BUILD_ROOT/etc/sysconfig/network/if-down.d
+install -m755 %SOURCE25 $RPM_BUILD_ROOT/etc/sysconfig/network/scripts
+ln -s /etc/sysconfig/network/scripts/xen-updown.sh $RPM_BUILD_ROOT/etc/sysconfig/network/if-up.d/xen
+ln -s /etc/sysconfig/network/scripts/xen-updown.sh $RPM_BUILD_ROOT/etc/sysconfig/network/if-down.d/xen
# logrotate
install -m644 -D %SOURCE7 $RPM_BUILD_ROOT/etc/logrotate.d/xen
# directories
@@ -722,6 +750,7 @@
/usr/bin/pygrub
/usr/bin/qemu-img-xen
/usr/bin/tapdisk-ioemu
+/usr/bin/gdbserver-xen
/usr/sbin/blktapctrl
/usr/sbin/flask-loadpolicy
/usr/sbin/img2qcow
@@ -783,6 +812,9 @@
%dir /etc/udev
%dir /etc/udev/rules.d
/etc/udev/rules.d/40-xen.rules
+/etc/sysconfig/network/scripts/xen-updown.sh
+/etc/sysconfig/network/if-up.d/xen
+/etc/sysconfig/network/if-down.d/xen
%dir %{_defaultdocdir}/xen
%{_defaultdocdir}/xen/COPYING
%{_defaultdocdir}/xen/README.SuSE
@@ -865,6 +897,25 @@
/sbin/ldconfig
%changelog
+* Thu Sep 11 2008 brogers@novell.com
+- Added gdbserver-xen to the set of tools we build.
+ fate#302942
+* Thu Sep 11 2008 jfehlig@novell.com
+- Added ocfs2 to Should-Start in xendomains init script
+* Wed Sep 10 2008 plc@novell.com
+- Added pv cdrom support to blktap
+ fate#300964
+* Wed Sep 10 2008 jfehlig@novell.com
+- Removed invocation of network-bridge script from xend-config.sxp.
+ Networks are now created through yast2-network package.
+- Added sysconfig hook script for Xen to cope with ifup/ifdown
+ events on network devices (e.g. bridges) in use by virtual
+ machines.
+ fate#303386
+* Mon Sep 08 2008 carnold@novell.com
+- Updated to xen version 3.3.1 RC changeset 18390.
+* Wed Sep 03 2008 kwolf@suse.de
+- Snapshots: Fix xend API functions for libvirt usage
* Mon Sep 01 2008 carnold@novell.com
- Fix problems building KMPs against the 2.6.27 kernel.
* Fri Aug 29 2008 plc@novell.com
++++++ 18412-x86-page-type-preemptible.patch ++++++
++++ 1421 lines (skipped)
++++++ 18420-x86-page-type-preemptible-fix.patch ++++++
# HG changeset patch
# User Keir Fraser
# Date 1220450168 -3600
# Node ID c9db93b0660ae644491c862e47744a2349ba630f
# Parent 1e98ea5c860438a227e135701e6439b22826f52f
x86: Fix interpretation of get_l*e_linear_pagetable().
Broken by get_page_type() preemption patch (c/s 18412).
Signed-off-by: Keir Fraser
Index: xen-3.3.0-testing/xen/arch/x86/mm.c
===================================================================
--- xen-3.3.0-testing.orig/xen/arch/x86/mm.c
+++ xen-3.3.0-testing/xen/arch/x86/mm.c
@@ -762,9 +762,8 @@ get_page_from_l2e(
rc = get_page_and_type_from_pagenr(
l2e_get_pfn(l2e), PGT_l1_page_table, d, 0);
- if ( unlikely(rc) && rc != -EAGAIN &&
- get_l2_linear_pagetable(l2e, pfn, d) )
- rc = -EINVAL;
+ if ( unlikely(rc == -EINVAL) && get_l2_linear_pagetable(l2e, pfn, d) )
+ rc = 0;
return rc;
}
@@ -788,9 +787,8 @@ get_page_from_l3e(
rc = get_page_and_type_from_pagenr(
l3e_get_pfn(l3e), PGT_l2_page_table, d, preemptible);
- if ( unlikely(rc) && rc != -EAGAIN && rc != -EINTR &&
- get_l3_linear_pagetable(l3e, pfn, d) )
- rc = -EINVAL;
+ if ( unlikely(rc == -EINVAL) && get_l3_linear_pagetable(l3e, pfn, d) )
+ rc = 0;
return rc;
}
@@ -814,9 +812,8 @@ get_page_from_l4e(
rc = get_page_and_type_from_pagenr(
l4e_get_pfn(l4e), PGT_l3_page_table, d, preemptible);
- if ( unlikely(rc) && rc != -EAGAIN && rc != -EINTR &&
- get_l4_linear_pagetable(l4e, pfn, d) )
- rc = -EINVAL;
+ if ( unlikely(rc == -EINVAL) && get_l4_linear_pagetable(l4e, pfn, d) )
+ rc = 0;
return rc;
}
++++++ 32on64-extra-mem.patch ++++++
--- /var/tmp/diff_new_pack.UX8100/_old 2008-09-12 17:57:25.000000000 +0200
+++ /var/tmp/diff_new_pack.UX8100/_new 2008-09-12 17:57:25.000000000 +0200
@@ -1,8 +1,8 @@
-Index: xen-3.3.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/XendDomainInfo.py
-@@ -2255,7 +2255,7 @@ class XendDomainInfo:
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py
+@@ -2277,7 +2277,7 @@ class XendDomainInfo:
vtd_mem = ((vtd_mem + 1023) / 1024) * 1024
# Make sure there's enough RAM available for the domain
++++++ blktapctrl-default-to-ioemu.patch ++++++
--- /var/tmp/diff_new_pack.UX8100/_old 2008-09-12 17:57:25.000000000 +0200
+++ /var/tmp/diff_new_pack.UX8100/_new 2008-09-12 17:57:25.000000000 +0200
@@ -2,15 +2,36 @@
===================================================================
--- xen-3.3.0-testing.orig/tools/blktap/drivers/blktapctrl.c
+++ xen-3.3.0-testing/tools/blktap/drivers/blktapctrl.c
-@@ -474,6 +474,7 @@ static int launch_tapdisk_provider(char
+@@ -65,6 +65,8 @@
+ #define MAX_RAND_VAL 0xFFFF
+ #define MAX_ATTEMPTS 10
+
++#undef ALWAYS_USE_IOEMU
++
+ int run = 1;
+ int max_timeout = MAX_TIMEOUT;
+ int ctlfd = 0;
+@@ -174,7 +176,10 @@ static int test_path(char *path, char **
+ }
+
+ if (found) {
+- *type = dtypes[i]->idnum;
++ if (dtypes[i]->use_ioemu)
++ *type = DISK_TYPE_IOEMU;
++ else
++ *type = dtypes[i]->idnum;
+
+ if (dtypes[i]->single_handler == 1) {
+ /* Check whether tapdisk process
+@@ -474,6 +479,7 @@ static int launch_tapdisk_provider(char
return child;
}
-+#if 0
++#ifndef ALWAYS_USE_IOEMU
static int launch_tapdisk(char *wrctldev, char *rdctldev)
{
char *argv[] = { "tapdisk", wrctldev, rdctldev, NULL };
-@@ -483,6 +484,7 @@ static int launch_tapdisk(char *wrctldev
+@@ -483,6 +489,7 @@ static int launch_tapdisk(char *wrctldev
return 0;
}
@@ -18,15 +39,15 @@
static int launch_tapdisk_ioemu(void)
{
-@@ -554,6 +556,7 @@ static int connect_qemu(blkif_t *blkif,
+@@ -554,6 +561,7 @@ static int connect_qemu(blkif_t *blkif,
return 0;
}
-+#if 0
++#ifndef ALWAYS_USE_IOEMU
/* Launch tapdisk instance */
static int connect_tapdisk(blkif_t *blkif, int minor)
{
-@@ -597,6 +600,7 @@ fail:
+@@ -597,6 +605,7 @@ fail:
return ret;
}
@@ -34,22 +55,91 @@
static int blktapctrl_new_blkif(blkif_t *blkif)
{
-@@ -621,6 +625,7 @@ static int blktapctrl_new_blkif(blkif_t
+@@ -621,6 +630,10 @@ static int blktapctrl_new_blkif(blkif_t
blkif->cookie = next_cookie++;
if (!exist) {
-+#if 0
++#ifdef ALWAYS_USE_IOEMU
++ if (connect_qemu(blkif, blkif->domid))
++ goto fail;
++#else
if (type == DISK_TYPE_IOEMU) {
if (connect_qemu(blkif, blkif->domid))
goto fail;
-@@ -628,6 +633,10 @@ static int blktapctrl_new_blkif(blkif_t
+@@ -628,6 +641,7 @@ static int blktapctrl_new_blkif(blkif_t
if (connect_tapdisk(blkif, minor))
goto fail;
}
-+#else
-+ if (connect_qemu(blkif, blkif->domid))
-+ goto fail;
+#endif
} else {
DPRINTF("Process exists!\n");
+Index: xen-3.3.0-testing/tools/blktap/drivers/tapdisk.h
+===================================================================
+--- xen-3.3.0-testing.orig/tools/blktap/drivers/tapdisk.h
++++ xen-3.3.0-testing/tools/blktap/drivers/tapdisk.h
+@@ -145,6 +145,8 @@ typedef struct disk_info {
+ char handle[10]; /* xend handle, e.g. 'ram' */
+ int single_handler; /* is there a single controller for all */
+ /* instances of disk type? */
++ int use_ioemu; /* backend provider: 0 = tapdisk; 1 = ioemu */
++
+ #ifdef TAPDISK
+ struct tap_disk *drv;
+ #endif
+@@ -166,6 +168,7 @@ static disk_info_t aio_disk = {
+ "raw image (aio)",
+ "aio",
+ 0,
++ 1,
+ #ifdef TAPDISK
+ &tapdisk_aio,
+ #endif
+@@ -176,6 +179,7 @@ static disk_info_t sync_disk = {
+ "raw image (sync)",
+ "sync",
+ 0,
++ 1,
+ #ifdef TAPDISK
+ &tapdisk_sync,
+ #endif
+@@ -186,6 +190,7 @@ static disk_info_t vmdk_disk = {
+ "vmware image (vmdk)",
+ "vmdk",
+ 1,
++ 1,
+ #ifdef TAPDISK
+ &tapdisk_vmdk,
+ #endif
+@@ -196,6 +201,7 @@ static disk_info_t ram_disk = {
+ "ramdisk image (ram)",
+ "ram",
+ 1,
++ 0,
+ #ifdef TAPDISK
+ &tapdisk_ram,
+ #endif
+@@ -206,6 +212,7 @@ static disk_info_t qcow_disk = {
+ "qcow disk (qcow)",
+ "qcow",
+ 0,
++ 1,
+ #ifdef TAPDISK
+ &tapdisk_qcow,
+ #endif
+@@ -216,6 +223,7 @@ static disk_info_t qcow2_disk = {
+ "qcow2 disk (qcow2)",
+ "qcow2",
+ 0,
++ 1,
+ #ifdef TAPDISK
+ &tapdisk_qcow2,
+ #endif
+@@ -226,6 +234,7 @@ static disk_info_t ioemu_disk = {
+ "ioemu disk",
+ "ioemu",
+ 1,
++ 1,
+ #ifdef TAPDISK
+ NULL
+ #endif
++++++ blktap.patch ++++++
--- /var/tmp/diff_new_pack.UX8100/_old 2008-09-12 17:57:25.000000000 +0200
+++ /var/tmp/diff_new_pack.UX8100/_new 2008-09-12 17:57:25.000000000 +0200
@@ -1,11 +1,11 @@
bug #239173
bug #242953
-Index: xen-3.3.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/XendDomainInfo.py
-@@ -2606,7 +2606,7 @@ class XendDomainInfo:
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py
+@@ -2618,7 +2618,7 @@ class XendDomainInfo:
(fn, BOOTLOADER_LOOPBACK_DEVICE))
vbd = {
@@ -14,10 +14,10 @@
'device': BOOTLOADER_LOOPBACK_DEVICE,
}
-Index: xen-3.3.0-testing/tools/ioemu-remote/xenstore.c
+Index: xen-3.3.1-testing/tools/ioemu-remote/xenstore.c
===================================================================
---- xen-3.3.0-testing.orig/tools/ioemu-remote/xenstore.c
-+++ xen-3.3.0-testing/tools/ioemu-remote/xenstore.c
+--- xen-3.3.1-testing.orig/tools/ioemu-remote/xenstore.c
++++ xen-3.3.1-testing/tools/ioemu-remote/xenstore.c
@@ -151,9 +151,9 @@ void xenstore_parse_domain_config(int hv
{
char **e = NULL;
++++++ blktap-pv-cdrom.patch ++++++
++++ 741 lines (skipped)
++++++ build-tapdisk-ioemu.patch ++++++
--- /var/tmp/diff_new_pack.UX8100/_old 2008-09-12 17:57:26.000000000 +0200
+++ /var/tmp/diff_new_pack.UX8100/_new 2008-09-12 17:57:26.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-3.3.0-testing/tools/ioemu-remote/Makefile
+Index: xen-3.3.1-testing/tools/ioemu-remote/Makefile
===================================================================
---- xen-3.3.0-testing.orig/tools/ioemu-remote/Makefile
-+++ xen-3.3.0-testing/tools/ioemu-remote/Makefile
+--- xen-3.3.1-testing.orig/tools/ioemu-remote/Makefile
++++ xen-3.3.1-testing/tools/ioemu-remote/Makefile
@@ -31,13 +31,6 @@ subdir-%: libqemu_common.a
recurse-all: $(patsubst %,subdir-%, $(TARGET_DIRS))
@@ -16,28 +16,33 @@
#######################################################################
# BLOCK_OBJS is code used by both qemu system emulation and qemu-img
-@@ -46,6 +39,16 @@ BLOCK_OBJS+=block-cow.o block-qcow.o aes
+@@ -46,6 +39,21 @@ BLOCK_OBJS+=block-cow.o block-qcow.o aes
BLOCK_OBJS+=block-dmg.o block-bochs.o block-vpc.o block-vvfat.o
BLOCK_OBJS+=block-qcow2.o block-parallels.o
+#######################################################################
+# tapdisk-ioemu
+
++hw/tapdisk-xen_blktap.o: hw/xen_blktap.c
++ $(CC) $(CFLAGS) $(CPPFLAGS) -DQEMU_IMG -DQEMU_TOOL -c -o $@ $<
++tapdisk-ioemu.o: tapdisk-ioemu.c
++ $(CC) $(CFLAGS) $(CPPFLAGS) -DQEMU_IMG -DQEMU_TOOL -c -o $@ $<
++
+tapdisk-ioemu: CPPFLAGS += -I$(XEN_ROOT)/tools/libxc
+tapdisk-ioemu: CPPFLAGS += -I$(XEN_ROOT)/tools/blktap/lib
+tapdisk-ioemu: CPPFLAGS += -I$(XEN_ROOT)/tools/xenstore
+tapdisk-ioemu: CPPFLAGS += -I$(XEN_ROOT)/tools/include
-+tapdisk-ioemu: tapdisk-ioemu.c $(BLOCK_OBJS) qemu-img-block.o qemu-img-block-raw-posix.o hw/xen_blktap.c
-+ $(CC) -DQEMU_TOOL -DQEMU_IMG $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) $(LDFLAGS) $(BASE_LDFLAGS) -o $@ $^ -lz $(LIBS)
++tapdisk-ioemu: tapdisk-ioemu.o $(BLOCK_OBJS) qemu-img-block.o qemu-img-block-raw-posix.o hw/tapdisk-xen_blktap.o
++ $(CC) $(LDFLAGS) -o $@ $^ -lz $(LIBS)
+
######################################################################
# libqemu_common.a: Target independent part of system emulation. The
# long term path is to suppress *all* target specific code in case of
-Index: xen-3.3.0-testing/tools/ioemu-remote/configure
+Index: xen-3.3.1-testing/tools/ioemu-remote/configure
===================================================================
---- xen-3.3.0-testing.orig/tools/ioemu-remote/configure
-+++ xen-3.3.0-testing/tools/ioemu-remote/configure
-@@ -1150,7 +1150,7 @@ fi
+--- xen-3.3.1-testing.orig/tools/ioemu-remote/configure
++++ xen-3.3.1-testing/tools/ioemu-remote/configure
+@@ -1144,7 +1144,7 @@ fi
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
++++++ dump-exec-state.patch ++++++
Index: xen-3.3.0-testing/xen/arch/ia64/linux-xen/smp.c
===================================================================
--- xen-3.3.0-testing.orig/xen/arch/ia64/linux-xen/smp.c
+++ xen-3.3.0-testing/xen/arch/ia64/linux-xen/smp.c
@@ -175,7 +175,7 @@ handle_IPI (int irq, void *dev_id, struc
* At this point the structure may be gone unless
* wait is true.
*/
- (*func)(info);
+ (*func)(info ?: regs);
/* Notify the sending CPU that the task is done. */
mb();
Index: xen-3.3.0-testing/xen/arch/x86/smp.c
===================================================================
--- xen-3.3.0-testing.orig/xen/arch/x86/smp.c
+++ xen-3.3.0-testing/xen/arch/x86/smp.c
@@ -357,7 +357,7 @@ fastcall void smp_call_function_interrup
if ( call_data->wait )
{
- (*func)(info);
+ (*func)(info ?: regs);
mb();
atomic_inc(&call_data->finished);
}
@@ -365,7 +365,7 @@ fastcall void smp_call_function_interrup
{
mb();
atomic_inc(&call_data->started);
- (*func)(info);
+ (*func)(info ?: regs);
}
irq_exit();
Index: xen-3.3.0-testing/xen/common/keyhandler.c
===================================================================
--- xen-3.3.0-testing.orig/xen/common/keyhandler.c
+++ xen-3.3.0-testing/xen/common/keyhandler.c
@@ -91,14 +91,25 @@ static void show_handlers(unsigned char
key_table[i].desc);
}
-static void __dump_execstate(void *unused)
+static void __dump_execstate(void *_regs)
{
- dump_execution_state();
- printk("*** Dumping CPU%d guest state: ***\n", smp_processor_id());
+ struct cpu_user_regs *regs = _regs;
+ unsigned int cpu = smp_processor_id();
+
+ if ( !guest_mode(regs) )
+ {
+ printk("\n*** Dumping CPU%u host state: ***\n", cpu);
+ show_execution_state(regs);
+ }
if ( is_idle_vcpu(current) )
- printk("No guest context (CPU is idle).\n");
+ printk("No guest context (CPU%u is idle).\n", cpu);
else
+ {
+ printk("*** Dumping CPU%u guest state (d%d:v%d): ***\n",
+ smp_processor_id(), current->domain->domain_id,
+ current->vcpu_id);
show_execution_state(guest_cpu_user_regs());
+ }
}
static void dump_registers(unsigned char key, struct cpu_user_regs *regs)
@@ -111,14 +122,12 @@ static void dump_registers(unsigned char
printk("'%c' pressed -> dumping registers\n", key);
/* Get local execution state out immediately, in case we get stuck. */
- printk("\n*** Dumping CPU%d host state: ***\n", smp_processor_id());
- __dump_execstate(NULL);
+ __dump_execstate(regs);
for_each_online_cpu ( cpu )
{
if ( cpu == smp_processor_id() )
continue;
- printk("\n*** Dumping CPU%d host state: ***\n", cpu);
on_selected_cpus(cpumask_of_cpu(cpu), __dump_execstate, NULL, 1, 1);
}
Index: xen-3.3.0-testing/xen/include/asm-ia64/linux-xen/asm/ptrace.h
===================================================================
--- xen-3.3.0-testing.orig/xen/include/asm-ia64/linux-xen/asm/ptrace.h
+++ xen-3.3.0-testing/xen/include/asm-ia64/linux-xen/asm/ptrace.h
@@ -278,7 +278,7 @@ struct switch_stack {
# define ia64_task_regs(t) (((struct pt_regs *) ((char *) (t) + IA64_STK_OFFSET)) - 1)
# define ia64_psr(regs) ((struct ia64_psr *) &(regs)->cr_ipsr)
#ifdef XEN
-# define guest_mode(regs) (ia64_psr(regs)->cpl != 0)
+# define guest_mode(regs) (ia64_psr(regs)->cpl && !ia64_psr(regs)->vm)
# define guest_kernel_mode(regs) (ia64_psr(regs)->cpl == CONFIG_CPL0_EMUL)
# define vmx_guest_kernel_mode(regs) (ia64_psr(regs)->cpl == 0)
# define regs_increment_iip(regs) \
++++++ hv_tools.patch ++++++
Index: xen-3.3.1-testing/tools/python/xen/lowlevel/xc/xc.c
===================================================================
--- xen-3.3.1-testing.orig/tools/python/xen/lowlevel/xc/xc.c
+++ xen-3.3.1-testing/tools/python/xen/lowlevel/xc/xc.c
@@ -872,14 +872,14 @@ static PyObject *pyxc_hvm_build(XcObject
int i;
#endif
char *image;
- int memsize, vcpus = 1, acpi = 0, apic = 1;
+ int memsize, vcpus = 1, acpi = 0, apic = 1, extid = 0;
static char *kwd_list[] = { "domid",
- "memsize", "image", "vcpus", "acpi",
+ "memsize", "image", "vcpus", "extid", "acpi",
"apic", NULL };
- if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iis|iii", kwd_list,
+ if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iis|iiii", kwd_list,
&dom, &memsize,
- &image, &vcpus, &acpi, &apic) )
+ &image, &vcpus, &extid, &acpi, &apic) )
return NULL;
if ( xc_hvm_build(self->xc_handle, dom, memsize, image) != 0 )
@@ -904,6 +904,7 @@ static PyObject *pyxc_hvm_build(XcObject
va_hvm->checksum = -sum;
munmap(va_map, XC_PAGE_SIZE);
#endif
+ xc_set_hvm_param(self->xc_handle, dom, HVM_PARAM_EXTEND_HYPERVISOR, extid);
return Py_BuildValue("{}");
}
Index: xen-3.3.1-testing/tools/python/xen/xend/XendConfig.py
===================================================================
--- xen-3.3.1-testing.orig/tools/python/xen/xend/XendConfig.py
+++ xen-3.3.1-testing/tools/python/xen/xend/XendConfig.py
@@ -141,6 +141,7 @@ XENAPI_PLATFORM_CFG_TYPES = {
'monitor': int,
'nographic': int,
'pae' : int,
+ 'extid': int,
'rtc_timeoffset': int,
'serial': str,
'sdl': int,
Index: xen-3.3.1-testing/tools/python/xen/xend/image.py
===================================================================
--- xen-3.3.1-testing.orig/tools/python/xen/xend/image.py
+++ xen-3.3.1-testing/tools/python/xen/xend/image.py
@@ -697,6 +697,7 @@ class HVMImageHandler(ImageHandler):
self.apic = int(vmConfig['platform'].get('apic', 0))
self.acpi = int(vmConfig['platform'].get('acpi', 0))
+ self.extid = int(vmConfig['platform'].get('extid', 0))
self.guest_os_type = vmConfig['platform'].get('guest_os_type')
@@ -803,6 +804,7 @@ class HVMImageHandler(ImageHandler):
log.debug("store_evtchn = %d", store_evtchn)
log.debug("memsize = %d", mem_mb)
log.debug("vcpus = %d", self.vm.getVCpuCount())
+ log.debug("extid = %d", self.extid)
log.debug("acpi = %d", self.acpi)
log.debug("apic = %d", self.apic)
@@ -810,6 +812,7 @@ class HVMImageHandler(ImageHandler):
image = self.loader,
memsize = mem_mb,
vcpus = self.vm.getVCpuCount(),
+ extid = self.extid,
acpi = self.acpi,
apic = self.apic)
rc['notes'] = { 'SUSPEND_CANCEL': 1 }
Index: xen-3.3.1-testing/tools/python/xen/xm/create.py
===================================================================
--- xen-3.3.1-testing.orig/tools/python/xen/xm/create.py
+++ xen-3.3.1-testing/tools/python/xen/xm/create.py
@@ -218,6 +218,10 @@ gopts.var('timer_mode', val='TIMER_MODE'
use="""Timer mode (0=delay virtual time when ticks are missed;
1=virtual time is always wallclock time.""")
+gopts.var('extid', val='EXTID',
+ fn=set_int, default=0,
+ use="Specify extention ID for a HVM domain.")
+
gopts.var('acpi', val='ACPI',
fn=set_int, default=1,
use="Disable or enable ACPI of HVM domain.")
@@ -851,7 +855,7 @@ def configure_vifs(config_devs, vals):
def configure_hvm(config_image, vals):
"""Create the config for HVM devices.
"""
- args = [ 'device_model', 'pae', 'vcpus', 'boot', 'fda', 'fdb', 'timer_mode',
+ args = [ 'device_model', 'pae', 'extid', 'vcpus', 'boot', 'fda', 'fdb', 'timer_mode',
'localtime', 'serial', 'stdvga', 'isa', 'nographic', 'soundhw',
'vnc', 'vncdisplay', 'vncunused', 'vncconsole', 'vnclisten',
'sdl', 'display', 'xauthority', 'rtc_timeoffset', 'monitor',
++++++ hv_xen_base.patch ++++++
%patch
Index: xen-3.3.1-testing/xen/include/asm-x86/hvm/domain.h
===================================================================
--- xen-3.3.1-testing.orig/xen/include/asm-x86/hvm/domain.h
+++ xen-3.3.1-testing/xen/include/asm-x86/hvm/domain.h
@@ -82,6 +82,7 @@ struct hvm_domain {
struct vmx_domain vmx;
struct svm_domain svm;
};
+ void *hyperv_handle; /* will be NULL on creation*/
};
#endif /* __ASM_X86_HVM_DOMAIN_H__ */
Index: xen-3.3.1-testing/xen/arch/x86/hvm/Makefile
===================================================================
--- xen-3.3.1-testing.orig/xen/arch/x86/hvm/Makefile
+++ xen-3.3.1-testing/xen/arch/x86/hvm/Makefile
@@ -1,5 +1,6 @@
subdir-y += svm
subdir-y += vmx
+subdir-y += hyperv
obj-y += emulate.o
obj-y += hvm.o
Index: xen-3.3.1-testing/xen/arch/x86/hvm/hvm.c
===================================================================
--- xen-3.3.1-testing.orig/xen/arch/x86/hvm/hvm.c
+++ xen-3.3.1-testing/xen/arch/x86/hvm/hvm.c
@@ -44,6 +44,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -361,6 +362,7 @@ void hvm_domain_relinquish_resources(str
void hvm_domain_destroy(struct domain *d)
{
+ hyperx_intercept_domain_destroy(d);
hvm_funcs.domain_destroy(d);
rtc_deinit(d);
stdvga_deinit(d);
@@ -645,8 +647,14 @@ int hvm_vcpu_initialise(struct vcpu *v)
{
int rc;
+ if ((rc = hyperx_intercept_vcpu_initialize(v)) != 0)
+ goto fail1;
+
if ( (rc = vlapic_init(v)) != 0 )
+ {
+ hyperx_intercept_vcpu_destroy(v);
goto fail1;
+ }
if ( (rc = hvm_funcs.vcpu_initialise(v)) != 0 )
goto fail2;
@@ -693,6 +701,7 @@ int hvm_vcpu_initialise(struct vcpu *v)
hvm_funcs.vcpu_destroy(v);
fail2:
vlapic_destroy(v);
+ hyperx_intercept_vcpu_destroy(v);
fail1:
return rc;
}
@@ -1647,7 +1656,7 @@ void hvm_cpuid(unsigned int input, unsig
struct vcpu *v = current;
if ( cpuid_hypervisor_leaves(input, eax, ebx, ecx, edx) )
- return;
+ goto hvm_cpuid_done;
domain_cpuid(v->domain, input, *ecx, eax, ebx, ecx, edx);
@@ -1659,6 +1668,8 @@ void hvm_cpuid(unsigned int input, unsig
if ( vlapic_hw_disabled(vcpu_vlapic(v)) )
__clear_bit(X86_FEATURE_APIC & 31, edx);
}
+hvm_cpuid_done:
+ hyperx_intercept_do_cpuid(input, eax, ebx, ecx, edx);
}
void hvm_rdtsc_intercept(struct cpu_user_regs *regs)
@@ -1749,6 +1760,8 @@ int hvm_msr_read_intercept(struct cpu_us
break;
default:
+ if (hyperx_intercept_do_msr_read(ecx, regs))
+ return X86EMUL_OKAY;
return hvm_funcs.msr_read_intercept(regs);
}
@@ -1837,6 +1850,8 @@ int hvm_msr_write_intercept(struct cpu_u
break;
default:
+ if (hyperx_intercept_do_msr_write(ecx, regs))
+ return X86EMUL_OKAY;
return hvm_funcs.msr_write_intercept(regs);
}
@@ -1963,6 +1978,10 @@ int hvm_do_hypercall(struct cpu_user_reg
case 0:
break;
}
+ if (hyperx_intercept_do_hypercall(regs))
+ {
+ return HVM_HCALL_completed;
+ }
if ( (eax >= NR_hypercalls) || !hvm_hypercall32_table[eax] )
{
@@ -2476,6 +2495,15 @@ long do_hvm_op(unsigned long op, XEN_GUE
rc = -EINVAL;
break;
+ case HVM_PARAM_EXTEND_HYPERVISOR:
+ if ((a.value == 1) && hyperv_initialize(d))
+ {
+ if (a.value != 1)
+ rc = -EINVAL;
+ else
+ rc = -ENOMEM;
+ goto param_fail;
+ }
}
if ( rc == 0 )
Index: xen-3.3.1-testing/xen/include/public/arch-x86/hvm/save.h
===================================================================
--- xen-3.3.1-testing.orig/xen/include/public/arch-x86/hvm/save.h
+++ xen-3.3.1-testing/xen/include/public/arch-x86/hvm/save.h
@@ -38,7 +38,7 @@ struct hvm_save_header {
uint32_t version; /* File format version */
uint64_t changeset; /* Version of Xen that saved this file */
uint32_t cpuid; /* CPUID[0x01][%eax] on the saving machine */
- uint32_t pad0;
+ uint32_t pad0;
};
DECLARE_HVM_SAVE_TYPE(HEADER, 1, struct hvm_save_header);
@@ -421,9 +421,22 @@ struct hvm_hw_mtrr {
DECLARE_HVM_SAVE_TYPE(MTRR, 14, struct hvm_hw_mtrr);
+struct hvm_hyperv_dom {
+ uint64_t guestid_msr;
+ uint64_t hypercall_msr;
+ uint32_t long_mode;
+ uint32_t ext_id;
+};
+DECLARE_HVM_SAVE_TYPE(HYPERV_DOM, 15, struct hvm_hyperv_dom);
+
+struct hvm_hyperv_cpu {
+ uint64_t control_msr;
+ uint64_t version_msr;
+};
+DECLARE_HVM_SAVE_TYPE(HYPERV_CPU, 16, struct hvm_hyperv_cpu);
/*
* Largest type-code in use
*/
-#define HVM_SAVE_CODE_MAX 14
+#define HVM_SAVE_CODE_MAX 16
#endif /* __XEN_PUBLIC_HVM_SAVE_X86_H__ */
Index: xen-3.3.1-testing/xen/arch/x86/hvm/vlapic.c
===================================================================
--- xen-3.3.1-testing.orig/xen/arch/x86/hvm/vlapic.c
+++ xen-3.3.1-testing/xen/arch/x86/hvm/vlapic.c
@@ -34,6 +34,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -307,6 +308,7 @@ static int vlapic_accept_sipi(struct vcp
hvm_vcpu_reset_state(v, trampoline_vector << 8, 0);
vcpu_unpause(v);
+ hyperx_intercept_vcpu_up(v);
return X86EMUL_OKAY;
}
Index: xen-3.3.1-testing/xen/include/public/hvm/params.h
===================================================================
--- xen-3.3.1-testing.orig/xen/include/public/hvm/params.h
+++ xen-3.3.1-testing/xen/include/public/hvm/params.h
@@ -93,6 +93,8 @@
/* ACPI S state: currently support S0 and S3 on x86. */
#define HVM_PARAM_ACPI_S_STATE 14
-#define HVM_NR_PARAMS 15
+#define HVM_PARAM_EXTEND_HYPERVISOR 15
+
+#define HVM_NR_PARAMS 16
#endif /* __XEN_PUBLIC_HVM_PARAMS_H__ */
++++++ hv_xen_extension.patch ++++++
++++ 1699 lines (skipped)
++++++ init.xendomains ++++++
--- arch/i386/xen/init.xendomains 2008-08-30 05:23:39.000000000 +0200
+++ /mounts/work_src_done/STABLE/xen/init.xendomains 2008-09-12 00:59:59.000000000 +0200
@@ -8,7 +8,7 @@
### BEGIN INIT INFO
# Provides: xendomains
# Required-Start: $syslog $remote_fs xend
-# Should-Start: iscsi
+# Should-Start: iscsi o2cb ocfs2
# Required-Stop: $syslog $remote_fs xend
# Should-Stop: iscsi
# Default-Start: 3 5
++++++ poll-single-port.patch ++++++
Index: xen-3.3.1-testing/xen/common/domain.c
===================================================================
--- xen-3.3.1-testing.orig/xen/common/domain.c
+++ xen-3.3.1-testing/xen/common/domain.c
@@ -209,6 +209,7 @@ struct domain *domain_create(
atomic_set(&d->refcnt, 1);
spin_lock_init(&d->domain_lock);
spin_lock_init(&d->page_alloc_lock);
+ spin_lock_init(&d->poll_lock);
spin_lock_init(&d->shutdown_lock);
spin_lock_init(&d->hypercall_deadlock_mutex);
INIT_LIST_HEAD(&d->page_list);
@@ -653,7 +654,7 @@ void vcpu_reset(struct vcpu *v)
v->fpu_initialised = 0;
v->fpu_dirtied = 0;
- v->is_polling = 0;
+ v->poll_evtchn = 0;
v->is_initialised = 0;
v->nmi_pending = 0;
v->mce_pending = 0;
Index: xen-3.3.1-testing/xen/common/event_channel.c
===================================================================
--- xen-3.3.1-testing.orig/xen/common/event_channel.c
+++ xen-3.3.1-testing/xen/common/event_channel.c
@@ -545,6 +545,7 @@ out:
static int evtchn_set_pending(struct vcpu *v, int port)
{
struct domain *d = v->domain;
+ unsigned long flags;
/*
* The following bit operations must happen in strict order.
@@ -564,19 +565,36 @@ static int evtchn_set_pending(struct vcp
}
/* Check if some VCPU might be polling for this event. */
- if ( unlikely(d->is_polling) )
+ if ( likely(!d->is_polling) )
+ return 0;
+
+ spin_lock_irqsave(&d->poll_lock, flags);
+
+ if ( likely(d->is_polling) )
{
- d->is_polling = 0;
+ bool_t is_polling = 0;
+
+ d->is_polling = -1;
smp_mb(); /* check vcpu poll-flags /after/ clearing domain poll-flag */
for_each_vcpu ( d, v )
{
- if ( !v->is_polling )
+ int poll_evtchn = v->poll_evtchn;
+
+ if ( !poll_evtchn )
+ continue;
+ if ( poll_evtchn > 0 && poll_evtchn != port )
+ {
+ is_polling = 1;
continue;
- v->is_polling = 0;
+ }
+ v->poll_evtchn = 0;
vcpu_unblock(v);
}
+ cmpxchg(&d->is_polling, -1, is_polling);
}
+ spin_unlock_irqrestore(&d->poll_lock, flags);
+
return 0;
}
Index: xen-3.3.1-testing/xen/common/schedule.c
===================================================================
--- xen-3.3.1-testing.orig/xen/common/schedule.c
+++ xen-3.3.1-testing/xen/common/schedule.c
@@ -348,7 +348,7 @@ static long do_poll(struct sched_poll *s
return -EFAULT;
set_bit(_VPF_blocked, &v->pause_flags);
- v->is_polling = 1;
+ v->poll_evtchn = -1;
d->is_polling = 1;
/* Check for events /after/ setting flags: avoids wakeup waiting race. */
@@ -369,6 +369,9 @@ static long do_poll(struct sched_poll *s
goto out;
}
+ if ( i == 1 )
+ v->poll_evtchn = port;
+
if ( sched_poll->timeout != 0 )
set_timer(&v->poll_timer, sched_poll->timeout);
@@ -378,7 +381,7 @@ static long do_poll(struct sched_poll *s
return 0;
out:
- v->is_polling = 0;
+ v->poll_evtchn = 0;
clear_bit(_VPF_blocked, &v->pause_flags);
return rc;
}
@@ -760,10 +763,10 @@ static void poll_timer_fn(void *data)
{
struct vcpu *v = data;
- if ( !v->is_polling )
+ if ( !v->poll_evtchn )
return;
- v->is_polling = 0;
+ v->poll_evtchn = 0;
vcpu_unblock(v);
}
Index: xen-3.3.1-testing/xen/include/xen/sched.h
===================================================================
--- xen-3.3.1-testing.orig/xen/include/xen/sched.h
+++ xen-3.3.1-testing/xen/include/xen/sched.h
@@ -106,8 +106,6 @@ struct vcpu
bool_t fpu_initialised;
/* Has the FPU been used since it was last saved? */
bool_t fpu_dirtied;
- /* Is this VCPU polling any event channels (SCHEDOP_poll)? */
- bool_t is_polling;
/* Initialization completed for this VCPU? */
bool_t is_initialised;
/* Currently running on a CPU? */
@@ -137,6 +135,11 @@ struct vcpu
unsigned long pause_flags;
atomic_t pause_count;
+ /* Is this VCPU polling any event channels (SCHEDOP_poll)?
+ * Positive values indicate a single, negative values multiple channels
+ * being polled. */
+ int poll_evtchn;
+
/* IRQ-safe virq_lock protects against delivering VIRQ to stale evtchn. */
u16 virq_to_evtchn[NR_VIRQS];
spinlock_t virq_lock;
@@ -210,7 +213,7 @@ struct domain
/* Is this guest being debugged by dom0? */
bool_t debugger_attached;
/* Are any VCPUs polling event channels (SCHEDOP_poll)? */
- bool_t is_polling;
+ signed char is_polling;
/* Is this guest dying (i.e., a zombie)? */
enum { DOMDYING_alive, DOMDYING_dying, DOMDYING_dead } is_dying;
/* Domain is paused by controller software? */
@@ -218,6 +221,9 @@ struct domain
/* Domain's VCPUs are pinned 1:1 to physical CPUs? */
bool_t is_pinned;
+ /* Protects is_polling modification in evtchn_set_pending(). */
+ spinlock_t poll_lock;
+
/* Guest has shut down (inc. reason code)? */
spinlock_t shutdown_lock;
bool_t is_shutting_down; /* in process of shutting down? */
++++++ snapshot-xend.patch ++++++
--- /var/tmp/diff_new_pack.UX8100/_old 2008-09-12 17:57:26.000000000 +0200
+++ /var/tmp/diff_new_pack.UX8100/_new 2008-09-12 17:57:26.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-3.3.0-testing/tools/python/xen/xend/image.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/image.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/image.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/image.py
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/image.py
++++ xen-3.3.1-testing/tools/python/xen/xend/image.py
@@ -476,6 +476,10 @@ class ImageHandler:
# but this can easily lead to very rapid restart loops against
# which we currently have no protection
@@ -13,10 +13,10 @@
def recreate(self):
if self.device_model is None:
return
-Index: xen-3.3.0-testing/tools/python/xen/xend/server/blkif.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/server/blkif.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/server/blkif.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/server/blkif.py
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/server/blkif.py
++++ xen-3.3.1-testing/tools/python/xen/xend/server/blkif.py
@@ -78,6 +78,9 @@ class BlkifController(DevController):
if uuid:
back['uuid'] = uuid
@@ -27,11 +27,11 @@
if security.on() == xsconstants.XS_POLICY_ACM:
self.do_access_control(config, uname)
-Index: xen-3.3.0-testing/tools/python/xen/xend/server/SrvDomain.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/server/SrvDomain.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/server/SrvDomain.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/server/SrvDomain.py
-@@ -95,6 +95,34 @@ class SrvDomain(SrvDir):
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/server/SrvDomain.py
++++ xen-3.3.1-testing/tools/python/xen/xend/server/SrvDomain.py
+@@ -95,6 +95,31 @@ class SrvDomain(SrvDir):
def do_save(self, _, req):
return self.xd.domain_save(self.dom.domid, req.args['file'][0])
@@ -40,36 +40,42 @@
+ return req.threadRequest(self.do_snapshot_create, op, req)
+
+ def do_snapshot_create(self, _, req):
-+ return self.xd.domain_snapshot_create(self.dom.domid, req.args)
++ return self.xd.domain_snapshot_create(self.dom.domid, req.args['name'][0])
+
+ def op_snapshot_list(self, op, req):
+ self.acceptCommand(req)
-+ return req.threadRequest(self.do_snapshot_list, op, req)
-+
-+ def do_snapshot_list(self, _, req):
-+ return self.xd.domain_snapshot_list(self.dom.domid)
++ return self.xd.domain_snapshot_list(self.dom.getName())
+
+ def op_snapshot_apply(self, op, req):
+ self.acceptCommand(req)
+ return req.threadRequest(self.do_snapshot_apply, op, req)
+
+ def do_snapshot_apply(self, _, req):
-+ return self.xd.domain_snapshot_apply(self.dom.domid, req.args)
++ return self.xd.domain_snapshot_apply(self.dom.getName(), req.args['name'][0])
+
+ def op_snapshot_delete(self, op, req):
+ self.acceptCommand(req)
+ return req.threadRequest(self.do_snapshot_delete, op, req)
+
+ def do_snapshot_delete(self, _, req):
-+ return self.xd.domain_snapshot_delete(self.dom.domid, req.args)
++ return self.xd.domain_snapshot_delete(self.dom.getName(), req.args['name'][0])
+
def op_dump(self, op, req):
self.acceptCommand(req)
return req.threadRequest(self.do_dump, op, req)
-Index: xen-3.3.0-testing/tools/python/xen/xend/XendCheckpoint.py
+@@ -230,7 +255,7 @@ class SrvDomain(SrvDir):
+ def render_GET(self, req):
+ op = req.args.get('op')
+
+- if op and op[0] in ['vcpuinfo']:
++ if op and op[0] in ['vcpuinfo', 'snapshot_list']:
+ return self.perform(req)
+
+ #
+Index: xen-3.3.1-testing/tools/python/xen/xend/XendCheckpoint.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/XendCheckpoint.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/XendCheckpoint.py
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/XendCheckpoint.py
++++ xen-3.3.1-testing/tools/python/xen/xend/XendCheckpoint.py
@@ -65,10 +65,12 @@ def insert_after(list, pred, value):
return
@@ -279,10 +285,10 @@
if not paused:
dominfo.unpause()
-Index: xen-3.3.0-testing/tools/python/xen/xend/XendConfig.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/XendConfig.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/XendConfig.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/XendConfig.py
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/XendConfig.py
++++ xen-3.3.1-testing/tools/python/xen/xend/XendConfig.py
@@ -208,6 +208,7 @@ XENAPI_CFG_TYPES = {
'cpuid' : dict,
'cpuid_check' : dict,
@@ -291,10 +297,10 @@
}
# List of legacy configuration keys that have no equivalent in the
-Index: xen-3.3.0-testing/tools/python/xen/xend/XendDomain.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomain.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/XendDomain.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/XendDomain.py
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/XendDomain.py
++++ xen-3.3.1-testing/tools/python/xen/xend/XendDomain.py
@@ -52,6 +52,7 @@ from xen.xend.xenstore.xstransact import
from xen.xend.xenstore.xswatch import xswatch
from xen.util import mkdir
@@ -303,7 +309,7 @@
xc = xen.lowlevel.xc.xc()
xoptions = XendOptions.instance()
-@@ -1396,6 +1397,164 @@ class XendDomain:
+@@ -1400,6 +1401,164 @@ class XendDomain:
raise XendError("can't write guest state file %s: %s" %
(dst, ex[1]))
@@ -468,10 +474,10 @@
def domain_pincpu(self, domid, vcpu, cpumap):
"""Set which cpus vcpu can use
-Index: xen-3.3.0-testing/tools/python/xen/xm/main.py
+Index: xen-3.3.1-testing/tools/python/xen/xm/main.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xm/main.py
-+++ xen-3.3.0-testing/tools/python/xen/xm/main.py
+--- xen-3.3.1-testing.orig/tools/python/xen/xm/main.py
++++ xen-3.3.1-testing/tools/python/xen/xm/main.py
@@ -122,6 +122,14 @@ SUBCOMMAND_HELP = {
'Restore a domain from a saved state.'),
'save' : ('[-c] <Domain> <CheckpointFile>',
++++++ svm-lmsl.patch ++++++
--- /var/tmp/diff_new_pack.UX8100/_old 2008-09-12 17:57:26.000000000 +0200
+++ /var/tmp/diff_new_pack.UX8100/_new 2008-09-12 17:57:26.000000000 +0200
@@ -1,8 +1,22 @@
-Index: xen-3.3.0-testing/xen/arch/x86/hvm/hvm.c
+Index: xen-3.3.1-testing/xen/arch/x86/hvm/hvm.c
===================================================================
---- xen-3.3.0-testing.orig/xen/arch/x86/hvm/hvm.c
-+++ xen-3.3.0-testing/xen/arch/x86/hvm/hvm.c
-@@ -789,10 +789,11 @@ int hvm_set_efer(uint64_t value)
+--- xen-3.3.1-testing.orig/xen/arch/x86/hvm/hvm.c
++++ xen-3.3.1-testing/xen/arch/x86/hvm/hvm.c
+@@ -525,11 +525,12 @@ static int hvm_load_cpu_ctxt(struct doma
+ return -EINVAL;
+ }
+
+- if ( (ctxt.msr_efer & ~(EFER_FFXSE | EFER_LME | EFER_LMA |
++ if ( (ctxt.msr_efer & ~(EFER_FFXSE | EFER_LMSLE | EFER_LME | EFER_LMA |
+ EFER_NX | EFER_SCE)) ||
+ ((sizeof(long) != 8) && (ctxt.msr_efer & EFER_LME)) ||
+ (!cpu_has_nx && (ctxt.msr_efer & EFER_NX)) ||
+ (!cpu_has_syscall && (ctxt.msr_efer & EFER_SCE)) ||
++ (!cpu_has_lmsl && (ctxt.msr_efer & EFER_LMSLE)) ||
+ (!cpu_has_ffxsr && (ctxt.msr_efer & EFER_FFXSE)) ||
+ ((ctxt.msr_efer & (EFER_LME|EFER_LMA)) == EFER_LMA) )
+ {
+@@ -790,10 +791,11 @@ int hvm_set_efer(uint64_t value)
value &= ~EFER_LMA;
@@ -15,10 +29,10 @@
(!cpu_has_ffxsr && (value & EFER_FFXSE)) )
{
gdprintk(XENLOG_WARNING, "Trying to set reserved bit in "
-Index: xen-3.3.0-testing/xen/arch/x86/hvm/svm/svm.c
+Index: xen-3.3.1-testing/xen/arch/x86/hvm/svm/svm.c
===================================================================
---- xen-3.3.0-testing.orig/xen/arch/x86/hvm/svm/svm.c
-+++ xen-3.3.0-testing/xen/arch/x86/hvm/svm/svm.c
+--- xen-3.3.1-testing.orig/xen/arch/x86/hvm/svm/svm.c
++++ xen-3.3.1-testing/xen/arch/x86/hvm/svm/svm.c
@@ -53,6 +53,11 @@
u32 svm_feature_flags;
@@ -54,10 +68,10 @@
if ( cpu != 0 )
return 1;
-Index: xen-3.3.0-testing/xen/include/asm-x86/hvm/hvm.h
+Index: xen-3.3.1-testing/xen/include/asm-x86/hvm/hvm.h
===================================================================
---- xen-3.3.0-testing.orig/xen/include/asm-x86/hvm/hvm.h
-+++ xen-3.3.0-testing/xen/include/asm-x86/hvm/hvm.h
+--- xen-3.3.1-testing.orig/xen/include/asm-x86/hvm/hvm.h
++++ xen-3.3.1-testing/xen/include/asm-x86/hvm/hvm.h
@@ -133,6 +133,12 @@ struct hvm_function_table {
extern struct hvm_function_table hvm_funcs;
extern int hvm_enabled;
++++++ tools-gdbserver-build.diff ++++++
diff -r 0eab1869ef66 tools/debugger/gdb/gdb-6.2.1-xen-sparse/gdb/gdbserver/Makefile.in
--- a/tools/debugger/gdb/gdb-6.2.1-xen-sparse/gdb/gdbserver/Makefile.in Thu Sep 04 11:42:38 2008 +0100
+++ b/tools/debugger/gdb/gdb-6.2.1-xen-sparse/gdb/gdbserver/Makefile.in Thu Sep 11 15:45:31 2008 -0600
@@ -90,7 +90,7 @@ GLOBAL_CFLAGS = ${MT_CFLAGS} ${MH_CFLAGS
GLOBAL_CFLAGS = ${MT_CFLAGS} ${MH_CFLAGS}
#PROFILE_CFLAGS = -pg
-WARN_CFLAGS = -Wall
+WARN_CFLAGS = -Wall -Wno-sequence-point
# CFLAGS is specifically reserved for setting from the command line
# when running make. I.E. "make CFLAGS=-Wmissing-prototypes".
@@ -260,7 +260,7 @@ linux-low.o: linux-low.c $(linux_low_h)
$(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $< @USE_THREAD_DB@
linux-xen-low.o: linux-xen-low.c $(linux_low_h) $(server_h)
- $(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $< @USE_THREAD_DB@
+ $(CC) -c $(CPPFLAGS) $(INTERNAL_CFLAGS) -I../../../../../include/ $< @USE_THREAD_DB@
linux-arm-low.o: linux-arm-low.c $(linux_low_h) $(server_h)
linux-i386-low.o: linux-i386-low.c $(linux_low_h) $(server_h)
++++++ x86-microcode.patch ++++++
Index: xen-3.3.0-testing/xen/arch/x86/microcode.c
===================================================================
--- xen-3.3.0-testing.orig/xen/arch/x86/microcode.c
+++ xen-3.3.0-testing/xen/arch/x86/microcode.c
@@ -98,7 +98,7 @@ MODULE_LICENSE("GPL");
static int verbose;
boolean_param("microcode.verbose", verbose);
-#define MICROCODE_VERSION "1.14a"
+#define MICROCODE_VERSION "1.14b"
#define DEFAULT_UCODE_DATASIZE (2000) /* 2000 bytes */
#define MC_HEADER_SIZE (sizeof (microcode_header_t)) /* 48 bytes */
@@ -118,9 +118,6 @@ boolean_param("microcode.verbose", verbo
#define exttable_size(et) ((et)->count * EXT_SIGNATURE_SIZE + EXT_HEADER_SIZE)
-/* serialize access to the physical write to MSR 0x79 */
-static DEFINE_SPINLOCK(microcode_update_lock);
-
/* no concurrent ->write()s are allowed on /dev/cpu/microcode */
static DEFINE_MUTEX(microcode_mutex);
@@ -376,25 +373,10 @@ out:
static void do_update_one (void * unused)
{
- unsigned long flags;
unsigned int val[2];
int cpu_num = smp_processor_id();
struct ucode_cpu_info *uci = ucode_cpu_info + cpu_num;
- if (uci->mc == NULL) {
- if (verbose) {
- if (uci->err == MC_SUCCESS)
- printk(KERN_INFO "microcode: CPU%d already at revision 0x%x\n",
- cpu_num, uci->rev);
- else
- printk(KERN_INFO "microcode: No new microcode data for CPU%d\n", cpu_num);
- }
- return;
- }
-
- /* serialize access to the physical write to MSR 0x79 */
- spin_lock_irqsave(µcode_update_lock, flags);
-
/* write microcode via MSR 0x79 */
wrmsr(MSR_IA32_UCODE_WRITE,
(unsigned long) uci->mc->bits,
@@ -409,7 +391,6 @@ static void do_update_one (void * unused
/* notify the caller of success on this cpu */
uci->err = MC_SUCCESS;
- spin_unlock_irqrestore(µcode_update_lock, flags);
printk(KERN_INFO "microcode: CPU%d updated from revision "
"0x%x to 0x%x, date = %08x \n",
cpu_num, uci->rev, val[1], uci->mc->hdr.date);
@@ -418,40 +399,65 @@ static void do_update_one (void * unused
static int do_microcode_update (void)
{
- int i, error;
+ int i, j, error;
+ cpumask_t cpu_mask = cpu_online_map;
- if (on_each_cpu(collect_cpu_info, NULL, 1, 1) != 0) {
- printk(KERN_ERR "microcode: Error! Could not run on all processors\n");
- error = -EIO;
- goto out;
+ for_each_cpu_mask(i, cpu_mask) {
+ if (on_selected_cpus(cpumask_of_cpu(i), collect_cpu_info, NULL, 1, 1) != 0) {
+ printk(KERN_ERR "microcode: Error! Could not run on all processors\n");
+ return -EIO;
+ }
}
if ((error = find_matching_ucodes())) {
printk(KERN_ERR "microcode: Error in the microcode data\n");
- goto out_free;
+ cpus_clear(cpu_mask);
}
- if (on_each_cpu(do_update_one, NULL, 1, 1) != 0) {
- printk(KERN_ERR "microcode: Error! Could not run on all processors\n");
- error = -EIO;
+ for (; (i = any_online_cpu(cpu_mask)) < NR_CPUS; cpu_clear(i, cpu_mask)) {
+ if (ucode_cpu_info[i].mc == NULL) {
+ if (verbose) {
+ switch (ucode_cpu_info[i].err) {
+ case MC_SUCCESS:
+ printk(KERN_INFO "microcode: CPU%d already at revision 0x%x\n",
+ i, ucode_cpu_info[i].rev);
+ break;
+ case MC_IGNORED:
+ printk(KERN_WARNING "microcode: CPU%d not 'upgrading' to earlier revision"
+ " 0x%x (current=0x%x)\n", i, ucode_cpu_info[i].cksum, ucode_cpu_info[i].rev);
+ break;
+ default:
+ printk(KERN_INFO "microcode: No new microcode data for CPU%d\n", i);
+ break;
+ }
+ }
+ } else if (on_selected_cpus(cpumask_of_cpu(i), do_update_one, NULL, 1, 1) != 0) {
+ printk(KERN_ERR "microcode: Error! Could not run on processor %d\n", i);
+ error = -EIO;
+ } else if (ucode_cpu_info[i].err == MC_SUCCESS) {
+ cpus_andnot(cpu_mask, cpu_mask, cpu_sibling_map[i]);
+ for_each_cpu_mask(j, cpu_sibling_map[i]) {
+ if (j != i) {
+ ucode_cpu_info[j].err = MC_SUCCESS;
+ ASSERT(ucode_cpu_info[j].mc == ucode_cpu_info[i].mc);
+ ucode_cpu_info[j].mc = NULL;
+ }
+ }
+ }
}
-out_free:
- for_each_online_cpu(i) {
+ for (i = 0; i < NR_CPUS; i++) {
if (ucode_cpu_info[i].mc) {
- int j;
void *tmp = ucode_cpu_info[i].mc;
- vfree(tmp);
- for_each_online_cpu(j) {
+
+ for (j = 0; j < NR_CPUS; j++) {
if (ucode_cpu_info[j].mc == tmp)
ucode_cpu_info[j].mc = NULL;
}
+ vfree(tmp);
}
- if (ucode_cpu_info[i].err == MC_IGNORED && verbose)
- printk(KERN_WARNING "microcode: CPU%d not 'upgrading' to earlier revision"
- " 0x%x (current=0x%x)\n", i, ucode_cpu_info[i].cksum, ucode_cpu_info[i].rev);
}
-out:
+
return error;
}
++++++ x86-show-page-walk-early.patch ++++++
--- /var/tmp/diff_new_pack.UX8100/_old 2008-09-12 17:57:26.000000000 +0200
+++ /var/tmp/diff_new_pack.UX8100/_new 2008-09-12 17:57:26.000000000 +0200
@@ -134,7 +134,7 @@
===================================================================
--- xen-3.3.0-testing.orig/xen/include/asm-x86/mm.h
+++ xen-3.3.0-testing/xen/include/asm-x86/mm.h
-@@ -277,6 +277,7 @@ TYPE_SAFE(unsigned long,mfn);
+@@ -307,6 +307,7 @@ TYPE_SAFE(unsigned long,mfn);
#define machine_to_phys_mapping ((unsigned long *)RDWR_MPT_VIRT_START)
#define INVALID_M2P_ENTRY (~0UL)
#define VALID_M2P(_e) (!((_e) & (1UL<<(BITS_PER_LONG-1))))
++++++ xen-3.3.0-testing-src.tar.bz2 -> xen-3.3.1-testing-src.tar.bz2 ++++++
arch/i386/xen/xen-3.3.0-testing-src.tar.bz2 /mounts/work_src_done/STABLE/xen/xen-3.3.1-testing-src.tar.bz2 differ: byte 11, line 1
++++++ xenapi-console-protocol.patch ++++++
--- /var/tmp/diff_new_pack.UX8100/_old 2008-09-12 17:57:27.000000000 +0200
+++ /var/tmp/diff_new_pack.UX8100/_new 2008-09-12 17:57:27.000000000 +0200
@@ -1,8 +1,8 @@
-Index: xen-3.3.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/XendDomainInfo.py
-@@ -3242,6 +3242,14 @@ class XendDomainInfo:
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py
+@@ -3254,6 +3254,14 @@ class XendDomainInfo:
if not config.has_key('backend'):
config['backend'] = "00000000-0000-0000-0000-000000000000"
++++++ xend-config.diff ++++++
--- /var/tmp/diff_new_pack.UX8100/_old 2008-09-12 17:57:27.000000000 +0200
+++ /var/tmp/diff_new_pack.UX8100/_new 2008-09-12 17:57:27.000000000 +0200
@@ -46,7 +46,31 @@
#(xend-relocation-ssl-server no)
#(xend-unix-path /var/lib/xend/xend-socket)
-@@ -181,7 +182,7 @@
+@@ -140,7 +141,8 @@
+ #
+ # (network-script 'network-bridge netdev=eth1')
+ #
+-# The bridge is named xenbr0, by default. To rename the bridge, use
++# The bridge takes on the ethernet device name by default. To rename the
++# bridge, use
+ #
+ # (network-script 'network-bridge bridge=<name>')
+ #
+@@ -149,7 +151,12 @@
+ # two fake interfaces per guest domain. To do things like this, write
+ # yourself a wrapper script, and call network-bridge from it, as appropriate.
+ #
+-(network-script network-bridge)
++# SuSE users note:
++# On openSUSE >= 11.1 and SLES >= 11, networks should be configured using
++# native platform tool - YaST. vif-bridge and qemu-ifup can be used to
++# connect vifs to the YaST-managed networks.
++#(network-script network-bridge)
++(network-script )
+
+ # The script used to control virtual interfaces. This can be overridden on a
+ # per-vif basis when creating a domain or a configuring a new vif. The
+@@ -181,7 +188,7 @@
# dom0-min-mem is the lowest permissible memory level (in MB) for dom0.
# This is a minimum both for auto-ballooning (as enabled by
# enable-dom0-ballooning below) and for xm mem-set when applied to dom0.
++++++ xend-core-dump-loc.diff ++++++
--- /var/tmp/diff_new_pack.UX8100/_old 2008-09-12 17:57:27.000000000 +0200
+++ /var/tmp/diff_new_pack.UX8100/_new 2008-09-12 17:57:27.000000000 +0200
@@ -1,8 +1,8 @@
-Index: xen-3.3.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/XendDomainInfo.py
-@@ -1864,7 +1864,7 @@ class XendDomainInfo:
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py
+@@ -1886,7 +1886,7 @@ class XendDomainInfo:
try:
if not corefile:
this_time = time.strftime("%Y-%m%d-%H%M.%S", time.localtime())
++++++ xend-domain-lock.patch ++++++
--- /var/tmp/diff_new_pack.UX8100/_old 2008-09-12 17:57:27.000000000 +0200
+++ /var/tmp/diff_new_pack.UX8100/_new 2008-09-12 17:57:27.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-3.3.0-testing/tools/examples/domain-lock
+Index: xen-3.3.1-testing/tools/examples/domain-lock
===================================================================
--- /dev/null
-+++ xen-3.3.0-testing/tools/examples/domain-lock
++++ xen-3.3.1-testing/tools/examples/domain-lock
@@ -0,0 +1,86 @@
+#!/bin/bash
+
@@ -89,10 +89,10 @@
+ get_status $vm_path
+ ;;
+esac
-Index: xen-3.3.0-testing/tools/examples/xend-config.sxp
+Index: xen-3.3.1-testing/tools/examples/xend-config.sxp
===================================================================
---- xen-3.3.0-testing.orig/tools/examples/xend-config.sxp
-+++ xen-3.3.0-testing/tools/examples/xend-config.sxp
+--- xen-3.3.1-testing.orig/tools/examples/xend-config.sxp
++++ xen-3.3.1-testing/tools/examples/xend-config.sxp
@@ -250,4 +250,44 @@
# Path where persistent domain configuration is stored.
@@ -138,10 +138,10 @@
+# and <vm-host> (if supplied) to the lock file in that order.
+#
+#(xend-domain-lock-utility domain-lock)
-Index: xen-3.3.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/XendDomainInfo.py
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py
@@ -30,11 +30,13 @@ import threading
import re
import copy
@@ -157,7 +157,7 @@
from xen.util.blkif import parse_uname
import xen.util.xsm.xsm as security
from xen.util import xsconstants
-@@ -421,6 +423,7 @@ class XendDomainInfo:
+@@ -443,6 +445,7 @@ class XendDomainInfo:
if self._stateGet() in (XEN_API_VM_POWER_STATE_HALTED, XEN_API_VM_POWER_STATE_SUSPENDED, XEN_API_VM_POWER_STATE_CRASHED):
try:
@@ -165,7 +165,7 @@
XendTask.log_progress(0, 30, self._constructDomain)
XendTask.log_progress(31, 60, self._initDomain)
-@@ -453,6 +456,7 @@ class XendDomainInfo:
+@@ -475,6 +478,7 @@ class XendDomainInfo:
state = self._stateGet()
if state in (DOM_STATE_SUSPENDED, DOM_STATE_HALTED):
try:
@@ -173,7 +173,7 @@
self._constructDomain()
self._storeVmDetails()
self._createDevices()
-@@ -2317,6 +2321,11 @@ class XendDomainInfo:
+@@ -2339,6 +2343,11 @@ class XendDomainInfo:
self._stateSet(DOM_STATE_HALTED)
self.domid = None # Do not push into _stateSet()!
@@ -185,7 +185,7 @@
finally:
self.refresh_shutdown_lock.release()
-@@ -3555,6 +3564,74 @@ class XendDomainInfo:
+@@ -3567,6 +3576,74 @@ class XendDomainInfo:
def has_device(self, dev_class, dev_uuid):
return (dev_uuid in self.info['%s_refs' % dev_class.lower()])
@@ -260,11 +260,11 @@
def __str__(self):
return '<domain id=%s name=%s memory=%s state=%s>' % \
(str(self.domid), self.info['name_label'],
-Index: xen-3.3.0-testing/tools/python/xen/xend/XendDomain.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomain.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/XendDomain.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/XendDomain.py
-@@ -1295,6 +1295,7 @@ class XendDomain:
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/XendDomain.py
++++ xen-3.3.1-testing/tools/python/xen/xend/XendDomain.py
+@@ -1299,6 +1299,7 @@ class XendDomain:
POWER_STATE_NAMES[DOM_STATE_RUNNING],
POWER_STATE_NAMES[dominfo._stateGet()])
@@ -272,10 +272,10 @@
""" The following call may raise a XendError exception """
dominfo.testMigrateDevices(True, dst)
-Index: xen-3.3.0-testing/tools/python/xen/xend/XendOptions.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/XendOptions.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/XendOptions.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/XendOptions.py
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/XendOptions.py
++++ xen-3.3.1-testing/tools/python/xen/xend/XendOptions.py
@@ -135,6 +135,17 @@ class XendOptions:
"""Default rotation count of qemu-dm log file."""
qemu_dm_logrotate_count = 10
@@ -314,10 +314,10 @@
class XendOptionsFile(XendOptions):
-Index: xen-3.3.0-testing/tools/examples/Makefile
+Index: xen-3.3.1-testing/tools/examples/Makefile
===================================================================
---- xen-3.3.0-testing.orig/tools/examples/Makefile
-+++ xen-3.3.0-testing/tools/examples/Makefile
+--- xen-3.3.1-testing.orig/tools/examples/Makefile
++++ xen-3.3.1-testing/tools/examples/Makefile
@@ -35,6 +35,7 @@ XEN_SCRIPTS += vtpm vtpm-delete
XEN_SCRIPTS += xen-hotplug-cleanup
XEN_SCRIPTS += external-device-migrate
++++++ xen-domUloader.diff ++++++
--- /var/tmp/diff_new_pack.UX8100/_old 2008-09-12 17:57:27.000000000 +0200
+++ /var/tmp/diff_new_pack.UX8100/_new 2008-09-12 17:57:27.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-3.3.0-testing/tools/python/xen/util/blkif.py
+Index: xen-3.3.1-testing/tools/python/xen/util/blkif.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/util/blkif.py
-+++ xen-3.3.0-testing/tools/python/xen/util/blkif.py
+--- xen-3.3.1-testing.orig/tools/python/xen/util/blkif.py
++++ xen-3.3.1-testing/tools/python/xen/util/blkif.py
@@ -71,23 +71,24 @@ def blkdev_segment(name):
'type' : 'Disk' }
return val
@@ -32,11 +32,11 @@
def mount_mode(name):
mode = None
-Index: xen-3.3.0-testing/tools/python/xen/xend/server/DevController.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/server/DevController.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/server/DevController.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/server/DevController.py
-@@ -612,6 +612,31 @@ class DevController:
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/server/DevController.py
++++ xen-3.3.1-testing/tools/python/xen/xend/server/DevController.py
+@@ -604,6 +604,31 @@ class DevController:
return (Missing, None)
@@ -68,10 +68,10 @@
def backendPath(self, backdom, devid):
"""Construct backend path given the backend domain and device id.
-Index: xen-3.3.0-testing/tools/python/xen/xend/XendBootloader.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/XendBootloader.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/XendBootloader.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/XendBootloader.py
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/XendBootloader.py
++++ xen-3.3.1-testing/tools/python/xen/xend/XendBootloader.py
@@ -12,8 +12,9 @@
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
@@ -126,10 +126,10 @@
+ if m:
+ return vdisk == m.group(1) or vdisk == m.group(2)
+ return True
-Index: xen-3.3.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/XendDomainInfo.py
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py
@@ -35,7 +35,7 @@ from types import StringTypes
import xen.lowlevel.xc
@@ -148,7 +148,7 @@
from xen.xend.XendError import XendError, VmError
from xen.xend.XendDevices import XendDevices
from xen.xend.XendTask import XendTask
-@@ -1875,6 +1875,10 @@ class XendDomainInfo:
+@@ -1897,6 +1897,10 @@ class XendDomainInfo:
deviceClass, config = self.info['devices'].get(dev_uuid)
self._waitForDevice(deviceClass, config['devid'])
@@ -159,7 +159,7 @@
def _waitForDevice_destroy(self, deviceClass, devid, backpath):
return self.getDeviceController(deviceClass).waitForDevice_destroy(
devid, backpath)
-@@ -2557,8 +2561,11 @@ class XendDomainInfo:
+@@ -2569,8 +2573,11 @@ class XendDomainInfo:
blexec = osdep.pygrub_path
blcfg = None
@@ -173,7 +173,7 @@
if not disks:
msg = "Had a bootloader specified, but no disks are bootable"
-@@ -2569,13 +2576,10 @@ class XendDomainInfo:
+@@ -2581,13 +2588,10 @@ class XendDomainInfo:
devtype = devinfo[0]
disk = devinfo[1]['uname']
@@ -190,7 +190,7 @@
log.info("Mounting %s on %s." %
(fn, BOOTLOADER_LOOPBACK_DEVICE))
-@@ -2587,7 +2591,9 @@ class XendDomainInfo:
+@@ -2599,7 +2603,9 @@ class XendDomainInfo:
from xen.xend import XendDomain
dom0 = XendDomain.instance().privilegedDomain()
@@ -201,7 +201,7 @@
fn = BOOTLOADER_LOOPBACK_DEVICE
try:
-@@ -2598,7 +2604,7 @@ class XendDomainInfo:
+@@ -2610,7 +2616,7 @@ class XendDomainInfo:
log.info("Unmounting %s from %s." %
(fn, BOOTLOADER_LOOPBACK_DEVICE))
++++++ xen-hvm-default-bridge.diff ++++++
--- /var/tmp/diff_new_pack.UX8100/_old 2008-09-12 17:57:27.000000000 +0200
+++ /var/tmp/diff_new_pack.UX8100/_new 2008-09-12 17:57:27.000000000 +0200
@@ -1,21 +1,7 @@
-Index: xen-3.3.0-testing/tools/examples/xend-config.sxp
+Index: xen-3.3.1-testing/tools/ioemu-remote/vl.c
===================================================================
---- xen-3.3.0-testing.orig/tools/examples/xend-config.sxp
-+++ xen-3.3.0-testing/tools/examples/xend-config.sxp
-@@ -141,7 +141,8 @@
- #
- # (network-script 'network-bridge netdev=eth1')
- #
--# The bridge is named xenbr0, by default. To rename the bridge, use
-+# The bridge is named to match the outgoing interface, by default. For example,
-+# eth1 is on xenbr1. To rename the bridge, use
- #
- # (network-script 'network-bridge bridge=<name>')
- #
-Index: xen-3.3.0-testing/tools/ioemu-remote/vl.c
-===================================================================
---- xen-3.3.0-testing.orig/tools/ioemu-remote/vl.c
-+++ xen-3.3.0-testing/tools/ioemu-remote/vl.c
+--- xen-3.3.1-testing.orig/tools/ioemu-remote/vl.c
++++ xen-3.3.1-testing/tools/ioemu-remote/vl.c
@@ -134,8 +134,8 @@ int inet_aton(const char *cp, struct in_
#include "exec-all.h"
@@ -42,10 +28,10 @@
}
} else
#endif
-Index: xen-3.3.0-testing/tools/python/xen/xend/image.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/image.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/image.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/image.py
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/image.py
++++ xen-3.3.1-testing/tools/python/xen/xend/image.py
@@ -764,14 +764,16 @@ class HVMImageHandler(ImageHandler):
mac = devinfo.get('mac')
if mac is None:
@@ -66,10 +52,10 @@
if nics == 0:
ret.append("-net")
-Index: xen-3.3.0-testing/tools/ioemu-remote/i386-dm/qemu-ifup
+Index: xen-3.3.1-testing/tools/ioemu-remote/i386-dm/qemu-ifup
===================================================================
---- xen-3.3.0-testing.orig/tools/ioemu-remote/i386-dm/qemu-ifup
-+++ xen-3.3.0-testing/tools/ioemu-remote/i386-dm/qemu-ifup
+--- xen-3.3.1-testing.orig/tools/ioemu-remote/i386-dm/qemu-ifup
++++ xen-3.3.1-testing/tools/ioemu-remote/i386-dm/qemu-ifup
@@ -1,11 +1,11 @@
#!/bin/sh
++++++ xen-ioemu-hvm-pv-support.diff ++++++
--- /var/tmp/diff_new_pack.UX8100/_old 2008-09-12 17:57:27.000000000 +0200
+++ /var/tmp/diff_new_pack.UX8100/_new 2008-09-12 17:57:27.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-3.3.0-testing/tools/ioemu-remote/hw/ide.c
+Index: xen-3.3.1-testing/tools/ioemu-remote/hw/ide.c
===================================================================
---- xen-3.3.0-testing.orig/tools/ioemu-remote/hw/ide.c
-+++ xen-3.3.0-testing/tools/ioemu-remote/hw/ide.c
+--- xen-3.3.1-testing.orig/tools/ioemu-remote/hw/ide.c
++++ xen-3.3.1-testing/tools/ioemu-remote/hw/ide.c
@@ -485,6 +485,9 @@ typedef struct PCIIDEState {
} PCIIDEState;
@@ -62,11 +62,11 @@
pci_conf = d->dev.config;
pci_conf[0x00] = 0x86; // Intel
pci_conf[0x01] = 0x80;
-Index: xen-3.3.0-testing/tools/ioemu-remote/hw/pci.c
+Index: xen-3.3.1-testing/tools/ioemu-remote/hw/pci.c
===================================================================
---- xen-3.3.0-testing.orig/tools/ioemu-remote/hw/pci.c
-+++ xen-3.3.0-testing/tools/ioemu-remote/hw/pci.c
-@@ -653,6 +653,28 @@ void pci_nic_init(PCIBus *bus, NICInfo *
+--- xen-3.3.1-testing.orig/tools/ioemu-remote/hw/pci.c
++++ xen-3.3.1-testing/tools/ioemu-remote/hw/pci.c
+@@ -648,6 +648,28 @@ void pci_nic_init(PCIBus *bus, NICInfo *
}
}
@@ -95,10 +95,10 @@
typedef struct {
PCIDevice dev;
PCIBus *bus;
-Index: xen-3.3.0-testing/tools/ioemu-remote/hw/xen_platform.c
+Index: xen-3.3.1-testing/tools/ioemu-remote/hw/xen_platform.c
===================================================================
---- xen-3.3.0-testing.orig/tools/ioemu-remote/hw/xen_platform.c
-+++ xen-3.3.0-testing/tools/ioemu-remote/hw/xen_platform.c
+--- xen-3.3.1-testing.orig/tools/ioemu-remote/hw/xen_platform.c
++++ xen-3.3.1-testing/tools/ioemu-remote/hw/xen_platform.c
@@ -26,6 +26,8 @@
#include "hw.h"
#include "pci.h"
@@ -162,10 +162,10 @@
}
static uint32_t platform_mmio_read(void *opaque, target_phys_addr_t addr)
-Index: xen-3.3.0-testing/tools/ioemu-remote/vl.c
+Index: xen-3.3.1-testing/tools/ioemu-remote/vl.c
===================================================================
---- xen-3.3.0-testing.orig/tools/ioemu-remote/vl.c
-+++ xen-3.3.0-testing/tools/ioemu-remote/vl.c
+--- xen-3.3.1-testing.orig/tools/ioemu-remote/vl.c
++++ xen-3.3.1-testing/tools/ioemu-remote/vl.c
@@ -259,6 +259,20 @@ static int event_pending = 1;
#include "xen-vl-extra.c"
@@ -262,10 +262,10 @@
/* XXX: fd_read_poll should be suppressed, but an API change is
necessary in the character devices to suppress fd_can_read(). */
int qemu_set_fd_handler2(int fd,
-Index: xen-3.3.0-testing/tools/ioemu-remote/sysemu.h
+Index: xen-3.3.1-testing/tools/ioemu-remote/sysemu.h
===================================================================
---- xen-3.3.0-testing.orig/tools/ioemu-remote/sysemu.h
-+++ xen-3.3.0-testing/tools/ioemu-remote/sysemu.h
+--- xen-3.3.1-testing.orig/tools/ioemu-remote/sysemu.h
++++ xen-3.3.1-testing/tools/ioemu-remote/sysemu.h
@@ -49,6 +49,9 @@ void do_loadvm(const char *name);
void do_delvm(const char *name);
void do_info_snapshots(void);
++++++ xen-max-free-mem.diff ++++++
--- /var/tmp/diff_new_pack.UX8100/_old 2008-09-12 17:57:27.000000000 +0200
+++ /var/tmp/diff_new_pack.UX8100/_new 2008-09-12 17:57:27.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xen-3.3.0-testing/tools/python/xen/xend/XendNode.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/XendNode.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/XendNode.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/XendNode.py
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/XendNode.py
++++ xen-3.3.1-testing/tools/python/xen/xend/XendNode.py
@@ -650,11 +650,35 @@ class XendNode:
info['cpu_mhz'] = info['cpu_khz'] / 1000
@@ -53,10 +53,10 @@
'node_to_cpu',
'node_to_memory'
]
-Index: xen-3.3.0-testing/tools/python/xen/xend/balloon.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/balloon.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/balloon.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/balloon.py
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/balloon.py
++++ xen-3.3.1-testing/tools/python/xen/xend/balloon.py
@@ -41,6 +41,8 @@ SLEEP_TIME_GROWTH = 0.1
# label actually shown in the PROC_XEN_BALLOON file.
#labels = { 'current' : 'Current allocation',
@@ -90,11 +90,11 @@
def free(need_mem):
"""Balloon out memory from the privileged domain so that there is the
specified required amount (in KiB) free.
-Index: xen-3.3.0-testing/tools/python/xen/xend/XendDomainInfo.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/XendDomainInfo.py
-@@ -1016,6 +1016,27 @@ class XendDomainInfo:
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-3.3.1-testing/tools/python/xen/xend/XendDomainInfo.py
+@@ -1038,6 +1038,27 @@ class XendDomainInfo:
return None
@@ -122,10 +122,10 @@
def setMemoryTarget(self, target):
"""Set the memory target of this domain.
@param target: In MiB.
-Index: xen-3.3.0-testing/tools/python/xen/xend/server/SrvDomain.py
+Index: xen-3.3.1-testing/tools/python/xen/xend/server/SrvDomain.py
===================================================================
---- xen-3.3.0-testing.orig/tools/python/xen/xend/server/SrvDomain.py
-+++ xen-3.3.0-testing/tools/python/xen/xend/server/SrvDomain.py
+--- xen-3.3.1-testing.orig/tools/python/xen/xend/server/SrvDomain.py
++++ xen-3.3.1-testing/tools/python/xen/xend/server/SrvDomain.py
@@ -171,7 +171,7 @@ class SrvDomain(SrvDir):
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org