From 12bd2215f3a0a39be551cc065cae97539379af6eecd33e5d62b28d4978b372fb Mon Sep 17 00:00:00 2001 From: OBS User autobuild Date: Mon, 17 Aug 2009 12:57:35 +0000 Subject: [PATCH] Accepting request 17919 from Virtualization Copy from Virtualization/xen based on submit request 17919 from user charlesa OBS-URL: https://build.opensuse.org/request/show/17919 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xen?expand=0&rev=77 --- 20013-xend-memleak.patch | 38 +++++++++++++++++++++++++++++++++++ hv_win7_eoi_bug.patch | 29 ++++++++++++++++++++++++++ xen-3.4.1-testing-src.tar.bz2 | 4 ++-- xen-hvm-default-bridge.diff | 2 +- xen-hvm-default-pae.diff | 2 +- xen.changes | 21 +++++++++++++++++++ xen.spec | 14 ++++++++----- 7 files changed, 101 insertions(+), 9 deletions(-) create mode 100644 20013-xend-memleak.patch create mode 100644 hv_win7_eoi_bug.patch diff --git a/20013-xend-memleak.patch b/20013-xend-memleak.patch new file mode 100644 index 0000000..8555113 --- /dev/null +++ b/20013-xend-memleak.patch @@ -0,0 +1,38 @@ +# HG changeset patch +# User Keir Fraser +# Date 1249470279 -3600 +# Node ID e41d42ef4cd2968cd480063a3c82d91c38cb8c7d +# Parent 3242351f9c6766fe4fbc27d969b1b84a9926cbda +xend: fix memory leak resulting in long garbage collector runs + +In the method xen.xend.XendStateStore.XendStateStore.load_state and +xen.xend.XendStateStore.XendStateStore.save_state the minidom objects +used to load/save the current state of a device type, can't be freed +by the python garbage collector after all references to the top node +are cleared, because of cyclic references between the DOM nodes. So +memory usage of xend increases after calling these methods. To solve +this problem, the unlink() method must be called for a minidom object +before the last reference to the top node is cleared (see python +docs). This breaks the cyclic references, so the garbage collector can +free these objects. + +Signed-off-by: juergen.gross@ts.fujitsu.com + +diff -r 3242351f9c67 -r e41d42ef4cd2 tools/python/xen/xend/XendStateStore.py +--- a/tools/python/xen/xend/XendStateStore.py Wed Aug 05 12:03:53 2009 +0100 ++++ b/tools/python/xen/xend/XendStateStore.py Wed Aug 05 12:04:39 2009 +0100 +@@ -147,6 +147,7 @@ + cls_dict[val_name] = bool(int(val_text)) + state[uuid] = cls_dict + ++ dom.unlink() + return state + + def save_state(self, cls, state): +@@ -226,5 +227,5 @@ + node.appendChild(val_node) + + open(xml_path, 'w').write(doc.toprettyxml()) +- ++ doc.unlink() + diff --git a/hv_win7_eoi_bug.patch b/hv_win7_eoi_bug.patch new file mode 100644 index 0000000..cbf151f --- /dev/null +++ b/hv_win7_eoi_bug.patch @@ -0,0 +1,29 @@ +Index: xen-3.4.1-testing/xen/arch/x86/hvm/hyperv/hv_intercept.c +=================================================================== +--- xen-3.4.1-testing.orig/xen/arch/x86/hvm/hyperv/hv_intercept.c 2009-08-10 14:01:45.000000000 -0600 ++++ xen-3.4.1-testing/xen/arch/x86/hvm/hyperv/hv_intercept.c 2009-08-10 14:07:15.000000000 -0600 +@@ -33,6 +33,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -987,8 +988,15 @@ + break; + case HV_MSR_APIC_ASSIST_PAGE: + /* +- * For now ignore this. ++ * We don't support the APIC assist page; windows7 appears to ++ * use this; set it up so that os uses the APIC MSR to indicate EOI. + */ ++ if (msr_content & 0x1) { ++ uint32_t data = 0; ++ paddr_t assist_page = msr_content & ~1UL; ++ (void)hvm_copy_to_guest_phys(assist_page, &data, sizeof(data)); ++ } ++ + break; + + default: diff --git a/xen-3.4.1-testing-src.tar.bz2 b/xen-3.4.1-testing-src.tar.bz2 index 85f61b7..d0d013b 100644 --- a/xen-3.4.1-testing-src.tar.bz2 +++ b/xen-3.4.1-testing-src.tar.bz2 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:390932ccf7df33b05ab3bb693a9b2392f377fa58d5f888bf1589f4e8bd300b46 -size 22570595 +oid sha256:cfe5b96404bdcaa218a6b1beb21e59cf203fa3a5b3d96c46ec5406e4ca0853e0 +size 22567950 diff --git a/xen-hvm-default-bridge.diff b/xen-hvm-default-bridge.diff index b986720..fee063e 100644 --- a/xen-hvm-default-bridge.diff +++ b/xen-hvm-default-bridge.diff @@ -34,7 +34,7 @@ Index: xen-3.4.1-testing/tools/python/xen/xend/image.py =================================================================== --- xen-3.4.1-testing.orig/tools/python/xen/xend/image.py +++ xen-3.4.1-testing/tools/python/xen/xend/image.py -@@ -832,14 +832,16 @@ class HVMImageHandler(ImageHandler): +@@ -830,14 +830,16 @@ class HVMImageHandler(ImageHandler): mac = devinfo.get('mac') if mac is None: raise VmError("MAC address not specified or generated.") diff --git a/xen-hvm-default-pae.diff b/xen-hvm-default-pae.diff index ae3cc6b..057d4ad 100644 --- a/xen-hvm-default-pae.diff +++ b/xen-hvm-default-pae.diff @@ -4,7 +4,7 @@ Index: xen-3.4.1-testing/tools/python/xen/xend/image.py =================================================================== --- xen-3.4.1-testing.orig/tools/python/xen/xend/image.py +++ xen-3.4.1-testing/tools/python/xen/xend/image.py -@@ -943,7 +943,7 @@ class X86_HVM_ImageHandler(HVMImageHandl +@@ -941,7 +941,7 @@ class X86_HVM_ImageHandler(HVMImageHandl def configure(self, vmConfig): HVMImageHandler.configure(self, vmConfig) diff --git a/xen.changes b/xen.changes index 5d12ad4..ce0ba63 100644 --- a/xen.changes +++ b/xen.changes @@ -1,3 +1,24 @@ +------------------------------------------------------------------- +Mon Aug 10 16:21:00 EDT 2009 - ksrinivasan@novell.com + +- bnc#524071 - implemented workaround for a windows7 bug. +------------------------------------------------------------------- +Fri Aug 7 10:43:32 MDT 2009 - jfehlig@novell.com + +- bnc#524180 - xend memory leak resulting in long garbage collector + runs. Bug applies to xen 3.4.1 as well. + 20013-xend-memleak.patch + +------------------------------------------------------------------- +Thu Aug 6 10:10:43 MDT 2009 - carnold@novell.com + +- Update to Xen 3.4.1 FCS c/s 19718. + +------------------------------------------------------------------- +Tue Aug 4 15:48:59 MDT 2009 - carnold@novell.com + +- Rename xen_loop to xen_loop.conf to conform with naming rules. + ------------------------------------------------------------------- Tue Jul 28 14:07:42 MDT 2009 - carnold@novell.com diff --git a/xen.spec b/xen.spec index bcaed39..89662b0 100644 --- a/xen.spec +++ b/xen.spec @@ -1,5 +1,5 @@ # -# spec file for package xen (Version 3.4.1_19711_01) +# spec file for package xen (Version 3.4.1_19718_01) # # Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany. # @@ -22,7 +22,7 @@ Name: xen ExclusiveArch: %ix86 x86_64 %define xvers 3.4 %define xvermaj 3 -%define changeset 19711 +%define changeset 19718 %define xen_build_dir xen-3.4.1-testing %define with_kmp 0 BuildRequires: LibVNCServer-devel SDL-devel automake bin86 curl-devel dev86 graphviz latex2html libjpeg-devel libxml2-devel ncurses-devel openssl openssl-devel pciutils-devel python-devel texinfo transfig @@ -37,7 +37,7 @@ BuildRequires: glibc-32bit glibc-devel-32bit %if %{?with_kmp}0 BuildRequires: kernel-source kernel-syms module-init-tools xorg-x11 %endif -Version: 3.4.1_19711_01 +Version: 3.4.1_19718_01 Release: 1 License: GPL v2 only Group: System/Kernel @@ -70,6 +70,7 @@ Source24: xenapiusers # sysconfig hook script for Xen Source25: xen-updown.sh # Upstream patches +Patch0: 20013-xend-memleak.patch # Our patches Patch100: xen-config.diff Patch101: xend-config.diff @@ -166,6 +167,7 @@ Patch450: disable_emulated_device.diff Patch500: hv_tools.patch Patch501: hv_xen_base.patch Patch502: hv_xen_extension.patch +Patch503: hv_win7_eoi_bug.patch Patch999: tmp_build.patch Url: http://www.cl.cam.ac.uk/Research/SRG/netos/xen/ BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -498,6 +500,7 @@ Authors: %prep %setup -q -n %xen_build_dir +%patch0 -p1 %patch100 -p1 %patch101 -p1 %patch102 -p1 @@ -585,6 +588,7 @@ Authors: %patch500 -p1 %patch501 -p1 %patch502 -p1 +%patch503 -p1 %endif %patch999 -p1 @@ -700,7 +704,7 @@ ln -s /etc/init.d/xend $RPM_BUILD_ROOT/usr/sbin/rcxend install %SOURCE6 $RPM_BUILD_ROOT/etc/init.d/xendomains ln -s /etc/init.d/xendomains $RPM_BUILD_ROOT/usr/sbin/rcxendomains mkdir -p $RPM_BUILD_ROOT/etc/modprobe.d -install -m644 %SOURCE18 $RPM_BUILD_ROOT/etc/modprobe.d/xen_loop +install -m644 %SOURCE18 $RPM_BUILD_ROOT/etc/modprobe.d/xen_loop.conf # example config mkdir -p $RPM_BUILD_ROOT/etc/xen/{vm,examples,scripts} mv $RPM_BUILD_ROOT/etc/xen/xmexample* $RPM_BUILD_ROOT/etc/xen/examples @@ -844,7 +848,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug %config /etc/xen/*.xml %config(noreplace) /etc/xen/xenapiusers %config /etc/pam.d/xen-api -%config /etc/modprobe.d/xen_loop +%config /etc/modprobe.d/xen_loop.conf %dir /etc/modprobe.d %dir /etc/udev %dir /etc/udev/rules.d