From 793208499f7367246c311cf9835ff1f5f4c28d6ce095a5f38024e554274bdca5 Mon Sep 17 00:00:00 2001 From: OBS User unknown Date: Tue, 25 Nov 2008 14:57:48 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xen?expand=0&rev=64 --- 18764-cpu-affinity.patch | 150 +++++++++++++++++++++++++++++++++++++++ 18780-cpu-affinity.patch | 21 ++++++ 18799-cpu-affinity.patch | 20 ++++++ hv_xen_extension.patch | 64 +++++++++++------ tmp_build.patch | 26 +++++++ xen.changes | 15 ++++ xen.spec | 21 +++++- 7 files changed, 295 insertions(+), 22 deletions(-) create mode 100644 18764-cpu-affinity.patch create mode 100644 18780-cpu-affinity.patch create mode 100644 18799-cpu-affinity.patch create mode 100644 tmp_build.patch diff --git a/18764-cpu-affinity.patch b/18764-cpu-affinity.patch new file mode 100644 index 0000000..3a0919a --- /dev/null +++ b/18764-cpu-affinity.patch @@ -0,0 +1,150 @@ +# HG changeset patch +# User Keir Fraser +# Date 1226401587 0 +# Node ID 76e90ac5067ef71f60b68ea0515f7f0466be5dca +# Parent beade55d67fc2c81adaaa552804e0b66dc25becb +xend: Restore CPU affinity on domain resume. + +Move affinity-setting logic into its own function and call from +relevant places. + +From: Jiri Denemark +Signed-off-by: Keir Fraser + +Index: xen-3.3.1-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 +@@ -476,6 +476,7 @@ class XendDomainInfo: + if state in (DOM_STATE_SUSPENDED, DOM_STATE_HALTED): + try: + self._constructDomain() ++ self._setCPUAffinity() + self._storeVmDetails() + self._createChannels() + self._createDevices() +@@ -2123,6 +2124,64 @@ class XendDomainInfo: + raise XendError(str(exn)) + + ++ def _setCPUAffinity(self): ++ """ Repin domain vcpus if a restricted cpus list is provided ++ """ ++ ++ def has_cpus(): ++ if self.info['cpus'] is not None: ++ for c in self.info['cpus']: ++ if c: ++ return True ++ return False ++ ++ if has_cpus(): ++ for v in range(0, self.info['VCPUs_max']): ++ if self.info['cpus'][v]: ++ xc.vcpu_setaffinity(self.domid, v, self.info['cpus'][v]) ++ else: ++ def find_relaxed_node(node_list): ++ import sys ++ nr_nodes = info['nr_nodes'] ++ if node_list is None: ++ node_list = range(0, nr_nodes) ++ nodeload = [0] ++ nodeload = nodeload * nr_nodes ++ from xen.xend import XendDomain ++ doms = XendDomain.instance().list('all') ++ for dom in filter (lambda d: d.domid != self.domid, doms): ++ cpuinfo = dom.getVCPUInfo() ++ for vcpu in sxp.children(cpuinfo, 'vcpu'): ++ if sxp.child_value(vcpu, 'online') == 0: continue ++ cpumap = list(sxp.child_value(vcpu,'cpumap')) ++ for i in range(0, nr_nodes): ++ node_cpumask = info['node_to_cpu'][i] ++ for j in node_cpumask: ++ if j in cpumap: ++ nodeload[i] += 1 ++ break ++ for i in range(0, nr_nodes): ++ if len(info['node_to_cpu'][i]) > 0 and i in node_list: ++ nodeload[i] = int(nodeload[i] * 16 / len(info['node_to_cpu'][i])) ++ else: ++ nodeload[i] = sys.maxint ++ index = nodeload.index( min(nodeload) ) ++ return index ++ ++ info = xc.physinfo() ++ if info['nr_nodes'] > 1: ++ node_memory_list = info['node_to_memory'] ++ needmem = self.image.getRequiredAvailableMemory(self.info['memory_dynamic_max']) / 1024 ++ candidate_node_list = [] ++ for i in range(0, info['nr_nodes']): ++ if node_memory_list[i] >= needmem and len(info['node_to_cpu'][i]) > 0: ++ candidate_node_list.append(i) ++ index = find_relaxed_node(candidate_node_list) ++ cpumask = info['node_to_cpu'][index] ++ for v in range(0, self.info['VCPUs_max']): ++ xc.vcpu_setaffinity(self.domid, v, cpumask) ++ ++ + def _initDomain(self): + log.debug('XendDomainInfo.initDomain: %s %s', + self.domid, +@@ -2142,58 +2201,7 @@ class XendDomainInfo: + # repin domain vcpus if a restricted cpus list is provided + # this is done prior to memory allocation to aide in memory + # distribution for NUMA systems. +- def has_cpus(): +- if self.info['cpus'] is not None: +- for c in self.info['cpus']: +- if c: +- return True +- return False +- +- if has_cpus(): +- for v in range(0, self.info['VCPUs_max']): +- if self.info['cpus'][v]: +- xc.vcpu_setaffinity(self.domid, v, self.info['cpus'][v]) +- else: +- def find_relaxed_node(node_list): +- import sys +- nr_nodes = info['nr_nodes'] +- if node_list is None: +- node_list = range(0, nr_nodes) +- nodeload = [0] +- nodeload = nodeload * nr_nodes +- from xen.xend import XendDomain +- doms = XendDomain.instance().list('all') +- for dom in filter (lambda d: d.domid != self.domid, doms): +- cpuinfo = dom.getVCPUInfo() +- for vcpu in sxp.children(cpuinfo, 'vcpu'): +- if sxp.child_value(vcpu, 'online') == 0: continue +- cpumap = list(sxp.child_value(vcpu,'cpumap')) +- for i in range(0, nr_nodes): +- node_cpumask = info['node_to_cpu'][i] +- for j in node_cpumask: +- if j in cpumap: +- nodeload[i] += 1 +- break +- for i in range(0, nr_nodes): +- if len(info['node_to_cpu'][i]) > 0 and i in node_list: +- nodeload[i] = int(nodeload[i] * 16 / len(info['node_to_cpu'][i])) +- else: +- nodeload[i] = sys.maxint +- index = nodeload.index( min(nodeload) ) +- return index +- +- info = xc.physinfo() +- if info['nr_nodes'] > 1: +- node_memory_list = info['node_to_memory'] +- needmem = self.image.getRequiredAvailableMemory(self.info['memory_dynamic_max']) / 1024 +- candidate_node_list = [] +- for i in range(0, info['nr_nodes']): +- if node_memory_list[i] >= needmem and len(info['node_to_cpu'][i]) > 0: +- candidate_node_list.append(i) +- index = find_relaxed_node(candidate_node_list) +- cpumask = info['node_to_cpu'][index] +- for v in range(0, self.info['VCPUs_max']): +- xc.vcpu_setaffinity(self.domid, v, cpumask) ++ self._setCPUAffinity() + + # Use architecture- and image-specific calculations to determine + # the various headrooms necessary, given the raw configured diff --git a/18780-cpu-affinity.patch b/18780-cpu-affinity.patch new file mode 100644 index 0000000..e2ab651 --- /dev/null +++ b/18780-cpu-affinity.patch @@ -0,0 +1,21 @@ +# HG changeset patch +# User Keir Fraser +# Date 1226672871 0 +# Node ID 85198c4d4da516000d002f66fded65f11ef64ab6 +# Parent 3ba83def85a234d49ac426f46100dc2a6bcda761 +Fix to save CPU affinity for xm save/restore +Signed-off-by: Masaki Kanno + +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 +@@ -1026,8 +1026,6 @@ class XendConfig(dict): + sxpr.append([name, s]) + + for xenapi, legacy in XENAPI_CFG_TO_LEGACY_CFG.items(): +- if legacy in ('cpus'): # skip this +- continue + if self.has_key(xenapi) and self[xenapi] not in (None, []): + if type(self[xenapi]) == bool: + # convert booleans to ints before making an sxp item diff --git a/18799-cpu-affinity.patch b/18799-cpu-affinity.patch new file mode 100644 index 0000000..6880e49 --- /dev/null +++ b/18799-cpu-affinity.patch @@ -0,0 +1,20 @@ +Index: xen-3.3.1-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 +@@ -476,7 +476,14 @@ class XendDomainInfo: + if state in (DOM_STATE_SUSPENDED, DOM_STATE_HALTED): + try: + self._constructDomain() +- self._setCPUAffinity() ++ ++ try: ++ self._setCPUAffinity() ++ except: ++ # usually a CPU we want to set affinity to does not exist ++ # we just ignore it so that the domain can still be restored ++ log.warn("Cannot restore CPU affinity") ++ + self._storeVmDetails() + self._createChannels() + self._createDevices() diff --git a/hv_xen_extension.patch b/hv_xen_extension.patch index aaf7865..e7dc677 100644 --- a/hv_xen_extension.patch +++ b/hv_xen_extension.patch @@ -2,7 +2,7 @@ Index: xen-3.3.1-testing/xen/include/asm-x86/hvm/hvm_extensions.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ xen-3.3.1-testing/xen/include/asm-x86/hvm/hvm_extensions.h 2008-10-07 20:55:01.000000000 -0600 ++++ xen-3.3.1-testing/xen/include/asm-x86/hvm/hvm_extensions.h 2008-11-21 10:02:05.000000000 -0700 @@ -0,0 +1,165 @@ +/**************************************************************************** + | @@ -172,14 +172,14 @@ Index: xen-3.3.1-testing/xen/include/asm-x86/hvm/hvm_extensions.h Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/Makefile =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/Makefile 2008-10-07 20:55:01.000000000 -0600 ++++ xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/Makefile 2008-11-21 10:02:05.000000000 -0700 @@ -0,0 +1,2 @@ +obj-y += hv_intercept.o +obj-y += hv_hypercall.o Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_errno.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_errno.h 2008-10-07 20:55:01.000000000 -0600 ++++ xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_errno.h 2008-11-21 10:02:05.000000000 -0700 @@ -0,0 +1,62 @@ +/**************************************************************************** + | @@ -246,8 +246,8 @@ Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_errno.h Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_hypercall.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_hypercall.c 2008-10-07 20:55:01.000000000 -0600 -@@ -0,0 +1,125 @@ ++++ xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_hypercall.c 2008-11-21 10:04:22.000000000 -0700 +@@ -0,0 +1,135 @@ +/**************************************************************************** + | + | Copyright (c) [2007, 2008] Novell, Inc. @@ -284,6 +284,8 @@ Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_hypercall.c +#include +#include +#include ++#include ++#include + +#include +#include "hv_shim.h" @@ -299,6 +301,7 @@ Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_hypercall.c + printk("Printing stats for vcpu ID: %d\n", i); + + printk("Number of context switches: %lu\n", v->stats.num_switches); ++ printk("Number of long spin waits: %lu\n", v->stats.num_long_spinwaits); + printk("Number of TPR reads: %lu\n", v->stats.num_tpr_reads); + printk("Number of ICR reads: %lu\n", v->stats.num_icr_reads); + printk("Number of Eoi writes: %lu\n", v->stats.num_eoi_writes); @@ -308,10 +311,8 @@ Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_hypercall.c +} + +static int -+hv_switch_va(paddr_t input) ++hv_switch_va(hv_vcpu_t *vcpup, paddr_t input) +{ -+ hv_partition_t *curp = hv_get_current_partition(); -+ hv_vcpu_t *vcpup = &curp->vcpu_state[hv_get_current_vcpu_index()]; + + /* + * XXXKYS: the spec sys the asID is passed via memory at offset 0 of @@ -335,6 +336,7 @@ Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_hypercall.c + unsigned short rep_count; + unsigned short start_index; + hv_partition_t *curp = hv_get_current_partition(); ++ hv_vcpu_t *vcpup = &curp->vcpu_state[hv_get_current_vcpu_index()]; + u64 partition_id; + + @@ -363,7 +365,15 @@ Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_hypercall.c + *ret_val = hv_build_hcall_retval(HV_STATUS_SUCCESS, 0); + return; + case HV_SWITCH_VA: -+ *ret_val = hv_build_hcall_retval(hv_switch_va(input), 0); ++ *ret_val = hv_build_hcall_retval(hv_switch_va(vcpup, input), 0); ++ return; ++ ++ case HV_NOTIFY_LONG_SPIN_WAIT: ++#ifdef HV_STATS ++ vcpup->stats.num_long_spinwaits++; ++#endif ++ do_sched_op_compat(SCHEDOP_yield, 0); ++ *ret_val = hv_build_hcall_retval(HV_STATUS_SUCCESS, 0); + return; + + default: @@ -376,8 +386,8 @@ Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_hypercall.c Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_hypercall.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_hypercall.h 2008-10-07 20:55:01.000000000 -0600 -@@ -0,0 +1,45 @@ ++++ xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_hypercall.h 2008-11-21 10:02:05.000000000 -0700 +@@ -0,0 +1,46 @@ +/**************************************************************************** + | + | Copyright (c) [2007, 2008] Novell, Inc. @@ -415,19 +425,20 @@ Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_hypercall.h + * Hypercall verbs. + */ + -+#define HV_GET_PARTITION_PROPERTY 0x0017 -+#define HV_SET_PARTITION_PROPERTY 0x0018 -+#define HV_GET_PARTITION_ID 0x0015 ++#define HV_GET_PARTITION_PROPERTY 0x0044 ++#define HV_SET_PARTITION_PROPERTY 0x0045 ++#define HV_GET_PARTITION_ID 0x0046 +#define HV_SWITCH_VA 0x0001 +#define HV_FLUSH_VA 0x0002 +#define HV_FLUSH_VA_LIST 0x0003 ++#define HV_NOTIFY_LONG_SPIN_WAIT 0x0008 + +#endif /* HV_HYPERCALL_H */ Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_intercept.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_intercept.c 2008-10-07 21:19:25.000000000 -0600 -@@ -0,0 +1,980 @@ ++++ xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_intercept.c 2008-11-21 10:06:15.000000000 -0700 +@@ -0,0 +1,990 @@ +/**************************************************************************** + | + | Copyright (c) [2007, 2008] Novell, Inc. @@ -661,12 +672,12 @@ Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_intercept.c + * If HAP is enabled; the guest should not use TLB flush + * related enlightenments. + */ -+ return (USE_CSWITCH_HCALL | USE_APIC_MSRS | USE_RESET_MSR); ++ return (USE_CSWITCH_HCALL | USE_APIC_MSRS | USE_RESET_MSR | USE_RELAXED_TIMING); + else + /* + * For now disable TLB flush enlightenments. + */ -+ return (USE_CSWITCH_HCALL | USE_APIC_MSRS | USE_RESET_MSR); ++ return (USE_CSWITCH_HCALL | USE_APIC_MSRS | USE_RESET_MSR | USE_RELAXED_TIMING); +} + +static inline u32 @@ -1156,6 +1167,7 @@ Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_intercept.c + * 0x40000004: Imlementation recommendations. + */ + *eax = hv_get_recommendations(); ++ *ebx = 2047; + *ebx = 0; /* Reserved */ + *ecx = 0; /* Reserved */ + *edx = 0; /* Reserved */ @@ -1171,6 +1183,15 @@ Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_intercept.c + *ecx = 0; /* Reserved */ + *edx = 0; /* Reserved */ + break; ++ case 6: ++ /* ++ * Implementation hardware features; for now set them all to zero. ++ */ ++ *eax = 0; ++ *ebx = 0; /* Reserved */ ++ *ecx = 0; /* Reserved */ ++ *edx = 0; /* Reserved */ ++ break; + + default: + /* @@ -1411,8 +1432,8 @@ Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_intercept.c Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_shim.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_shim.h 2008-10-07 20:55:01.000000000 -0600 -@@ -0,0 +1,281 @@ ++++ xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_shim.h 2008-11-21 10:02:05.000000000 -0700 +@@ -0,0 +1,284 @@ +/**************************************************************************** + | + | Copyright (c) [2007, 2008] Novell, Inc. @@ -1536,6 +1557,8 @@ Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_shim.h +#define USE_APIC_MSRS (1U<<_USE_APIC_MSRS) +#define _USE_RESET_MSR 4 +#define USE_RESET_MSR (1U<<_USE_RESET_MSR) ++#define _USE_RELAXED_TIMING 5 ++#define USE_RELAXED_TIMING (1U<<_USE_RELAXED_TIMING) + +/* + * Supported Synthetic MSRs. 0.83 HyperV spec, section 3.4 @@ -1584,6 +1607,7 @@ Index: xen-3.3.1-testing/xen/arch/x86/hvm/hyperv/hv_shim.h + +typedef struct { + u64 num_switches; ++ u64 num_long_spinwaits; + u64 num_tpr_reads; + u64 num_icr_reads; + u64 num_eoi_writes; diff --git a/tmp_build.patch b/tmp_build.patch new file mode 100644 index 0000000..3e8ed97 --- /dev/null +++ b/tmp_build.patch @@ -0,0 +1,26 @@ +Index: xen-3.3.1-testing/tools/xenstore/Makefile +=================================================================== +--- xen-3.3.1-testing.orig/tools/xenstore/Makefile ++++ xen-3.3.1-testing/tools/xenstore/Makefile +@@ -60,6 +60,7 @@ $(CLIENTS_DOMU): xenstore + + xenstore: xenstore_client.o $(LIBXENSTORE) + $(CC) $(CFLAGS) $(LDFLAGS) $< -L. -lxenstore $(SOCKET_LIBS) -o $@ ++ $(CC) $(CFLAGS) $(LDFLAGS) -Wl,--build-id=uuid $< -L. -lxenstore $(SOCKET_LIBS) -o domu-$@ + + xenstore-control: xenstore_control.o $(LIBXENSTORE) + $(CC) $(CFLAGS) $(LDFLAGS) $< -L. -lxenstore $(SOCKET_LIBS) -o $@ +@@ -108,10 +109,11 @@ install: all + $(INSTALL_PROG) xenstore-control $(DESTDIR)$(BINDIR) + $(INSTALL_PROG) xenstore $(DESTDIR)/usr/bin + set -e ; for c in $(CLIENTS) ; do \ +- ln -f $(DESTDIR)/usr/bin/xenstore $(DESTDIR)/usr/bin/$${c} ; \ ++ ln -fs /usr/bin/xenstore $(DESTDIR)/usr/bin/$${c} ; \ + done ++ $(INSTALL_PROG) domu-xenstore $(DESTDIR)/bin + for client in $(CLIENTS_DOMU); do \ +- $(INSTALL_PROG) $$client $(DESTDIR)/bin/$${client/domu-}; \ ++ ln -fs /bin/domu-xenstore $(DESTDIR)/bin/$${client/domu-}; \ + done + $(INSTALL_DIR) $(DESTDIR)$(LIBDIR) + $(INSTALL_PROG) libxenstore.so.$(MAJOR).$(MINOR) $(DESTDIR)$(LIBDIR) diff --git a/xen.changes b/xen.changes index d8a2d0d..3f04b84 100644 --- a/xen.changes +++ b/xen.changes @@ -1,3 +1,18 @@ +------------------------------------------------------------------- +Tue Nov 25 15:09:12 CET 2008 - kwolf@suse.de + +- Fix the build. Build system seems to be unhappy about having two + copies of the xenstore binary (this is not a proper fix in fact + as the build error says the two files are not identical - they + are hardlinks, so this seems unlikely to be the real cause). + + tmp_build.patch + +------------------------------------------------------------------- +Mon Nov 24 14:24:06 MST 2008 - jfehlig@novell.com + +- bnc#448364 - Fix cpu affinity on save/restore/migrate + ------------------------------------------------------------------- Thu Nov 20 19:57:19 CET 2008 - kwolf@suse.de diff --git a/xen.spec b/xen.spec index e157ae5..c8b6b27 100644 --- a/xen.spec +++ b/xen.spec @@ -1,5 +1,5 @@ # -# spec file for package xen (Version 3.3.1_18494_02) +# spec file for package xen (Version 3.3.1_18494_03) # # Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. # @@ -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.3.1_18494_02 +Version: 3.3.1_18494_03 Release: 1 License: GPL v2 only Group: System/Kernel @@ -111,6 +111,9 @@ Patch41: 18745-xend-ioport-irq.patch Patch42: 18747-x86-partial-page-ref.patch Patch43: 18771-reduce-GDT-switching.patch Patch44: 18778-msi-irq-fix.patch +Patch45: 18764-cpu-affinity.patch +Patch46: 18780-cpu-affinity.patch +Patch47: 18799-cpu-affinity.patch # Will be fixed in 3.3-testing soon Patch90: xen-x86-emulate-movnti.patch # Our patches @@ -197,6 +200,7 @@ Patch355: dom-print.patch Patch400: hv_tools.patch Patch401: hv_xen_base.patch Patch402: hv_xen_extension.patch +Patch999: tmp_build.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()") @@ -573,6 +577,9 @@ Authors: %patch42 -p1 %patch43 -p1 %patch44 -p1 +%patch45 -p1 +%patch46 -p1 +%patch47 -p1 %patch90 -p1 %patch100 -p1 %patch101 -p1 @@ -654,6 +661,7 @@ Authors: %patch401 -p1 %patch402 -p1 %endif +%patch999 -p1 %build XEN_EXTRAVERSION=%version-%release @@ -947,6 +955,7 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug %files tools-domU %defattr(-,root,root) /usr/bin/xen-detect +/bin/domu-xenstore /bin/xenstore-* %files devel @@ -997,6 +1006,14 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/xen/bin/qemu-dm.debug /sbin/ldconfig %changelog +* Tue Nov 25 2008 kwolf@suse.de +- Fix the build. Build system seems to be unhappy about having two + copies of the xenstore binary (this is not a proper fix in fact + as the build error says the two files are not identical - they + are hardlinks, so this seems unlikely to be the real cause). + tmp_build.patch +* Mon Nov 24 2008 jfehlig@novell.com +- bnc#448364 - Fix cpu affinity on save/restore/migrate * Thu Nov 20 2008 kwolf@suse.de - bnc#444731 - Fix data corruption bug (caused by broken x86 emulation for movnti instruction)