This commit is contained in:
parent
1c73c9b461
commit
793208499f
150
18764-cpu-affinity.patch
Normal file
150
18764-cpu-affinity.patch
Normal file
@ -0,0 +1,150 @@
|
||||
# HG changeset patch
|
||||
# User Keir Fraser <keir.fraser@citrix.com>
|
||||
# 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 <jdenemar@redhat.com>
|
||||
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
|
||||
|
||||
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
|
21
18780-cpu-affinity.patch
Normal file
21
18780-cpu-affinity.patch
Normal file
@ -0,0 +1,21 @@
|
||||
# HG changeset patch
|
||||
# User Keir Fraser <keir.fraser@citrix.com>
|
||||
# Date 1226672871 0
|
||||
# Node ID 85198c4d4da516000d002f66fded65f11ef64ab6
|
||||
# Parent 3ba83def85a234d49ac426f46100dc2a6bcda761
|
||||
Fix to save CPU affinity for xm save/restore
|
||||
Signed-off-by: Masaki Kanno <kanno.masaki@jp.fujitsu.com>
|
||||
|
||||
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
|
20
18799-cpu-affinity.patch
Normal file
20
18799-cpu-affinity.patch
Normal file
@ -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()
|
@ -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 <xen/cpumask.h>
|
||||
+#include <xen/event.h>
|
||||
+#include <xen/domain.h>
|
||||
+#include <xen/hypercall.h>
|
||||
+#include <public/sched.h>
|
||||
+
|
||||
+#include <asm/hvm/hvm_extensions.h>
|
||||
+#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;
|
||||
|
26
tmp_build.patch
Normal file
26
tmp_build.patch
Normal file
@ -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)
|
15
xen.changes
15
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
|
||||
|
||||
|
21
xen.spec
21
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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user