Updating link to change in openSUSE:Factory/xen revision 92.0

OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=55b9cda496deba4d219bfb38823f905d
This commit is contained in:
OBS User buildservice-autocommit 2010-06-04 13:05:01 +00:00 committed by Git OBS Bridge
parent da1a7c6568
commit 60fee70571
11 changed files with 621 additions and 58 deletions

View File

@ -0,0 +1,25 @@
# HG changeset patch
# User Keir Fraser <keir.fraser@citrix.com>
# Date 1274118689 -3600
# Node ID 2a16128f17d884b87124eb159d4c4a0c34339d4e
# Parent 89a2f9ad02f23c24a06274a1217991181f19930b
x86: Quieten microcode.c during CPU hotplug
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
--- a/xen/arch/x86/microcode.c
+++ b/xen/arch/x86/microcode.c
@@ -66,12 +66,10 @@ static void microcode_fini_cpu(int cpu)
int microcode_resume_cpu(int cpu)
{
- int err = 0;
+ int err;
struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu);
struct cpu_signature nsig;
- gdprintk(XENLOG_INFO, "microcode: CPU%d resumed\n", cpu);
-
if ( !uci->mc.mc_valid )
return -EIO;

141
21408-amd-erratum-383.patch Normal file
View File

@ -0,0 +1,141 @@
# HG changeset patch
# User Keir Fraser <keir.fraser@citrix.com>
# Date 1274178085 -3600
# Node ID f40acba36be886e4b4e87afeacf39688f316dfe4
# Parent e4028345ad48c442eb55b7bc08afdf1aede0aa2e
svm: Fix for AMD erratum 383 on Family 10h CPUs
This patches implements the workaround of AMD erratum 383 on family
10h CPUs. It destroys the guest VM when a MC error with a special
pattern is detected. Without this patch, a guest VM failure can
potentially crash Xen hypervisor and the whole system. The erratum
will be published in next version of guide.
Signed-off-by: Wei Huang <wei.huang2@amd.com>
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Christoph Egger <christoph.egger@amd.com>
Index: xen-4.0.0-testing/xen/arch/x86/hvm/svm/svm.c
===================================================================
--- xen-4.0.0-testing.orig/xen/arch/x86/hvm/svm/svm.c
+++ xen-4.0.0-testing/xen/arch/x86/hvm/svm/svm.c
@@ -72,6 +72,8 @@ static void *hsa[NR_CPUS] __read_mostly;
/* vmcb used for extended host state */
static void *root_vmcb[NR_CPUS] __read_mostly;
+static bool_t amd_erratum383_found __read_mostly;
+
static void inline __update_guest_eip(
struct cpu_user_regs *regs, unsigned int inst_len)
{
@@ -822,6 +824,20 @@ static int svm_cpu_prepare(unsigned int
return 0;
}
+static void svm_init_erratum_383(struct cpuinfo_x86 *c)
+{
+ uint64_t msr_content;
+
+ /* only family 10h is affected */
+ if ( c->x86 != 0x10 )
+ return;
+
+ rdmsrl(MSR_AMD64_DC_CFG, msr_content);
+ wrmsrl(MSR_AMD64_DC_CFG, msr_content | (1ULL << 47));
+
+ amd_erratum383_found = 1;
+}
+
static int svm_cpu_up(struct cpuinfo_x86 *c)
{
u32 eax, edx, phys_hsa_lo, phys_hsa_hi;
@@ -847,6 +863,9 @@ static int svm_cpu_up(struct cpuinfo_x86
phys_hsa_hi = (u32)(phys_hsa >> 32);
wrmsr(MSR_K8_VM_HSAVE_PA, phys_hsa_lo, phys_hsa_hi);
+ /* check for erratum 383 */
+ svm_init_erratum_383(c);
+
/* Initialize core's ASID handling. */
svm_asid_init(c);
@@ -1244,6 +1263,47 @@ static void svm_vmexit_ud_intercept(stru
}
}
+extern unsigned int nr_mce_banks; /* from mce.h */
+
+static int svm_is_erratum_383(struct cpu_user_regs *regs)
+{
+ uint64_t msr_content;
+ uint32_t i;
+ struct vcpu *v = current;
+
+ if ( !amd_erratum383_found )
+ return 0;
+
+ rdmsrl(MSR_IA32_MC0_STATUS, msr_content);
+ /* Bit 62 may or may not be set for this mce */
+ msr_content &= ~(1ULL << 62);
+
+ if ( msr_content != 0xb600000000010015ULL )
+ return 0;
+
+ /* Clear MCi_STATUS registers */
+ for (i = 0; i < nr_mce_banks; i++)
+ wrmsrl(MSR_IA32_MCx_STATUS(i), 0ULL);
+
+ rdmsrl(MSR_IA32_MCG_STATUS, msr_content);
+ wrmsrl(MSR_IA32_MCG_STATUS, msr_content & ~(1ULL << 2));
+
+ /* flush TLB */
+ flush_tlb_mask(&v->domain->domain_dirty_cpumask);
+
+ return 1;
+}
+
+static void svm_vmexit_mce_intercept(
+ struct vcpu *v, struct cpu_user_regs *regs)
+{
+ if ( svm_is_erratum_383(regs) )
+ {
+ gdprintk(XENLOG_ERR, "SVM hits AMD erratum 383\n");
+ domain_crash(v->domain);
+ }
+}
+
static void wbinvd_ipi(void *info)
{
wbinvd();
@@ -1432,6 +1492,7 @@ asmlinkage void svm_vmexit_handler(struc
/* Asynchronous event, handled when we STGI'd after the VMEXIT. */
case VMEXIT_EXCEPTION_MC:
HVMTRACE_0D(MCE);
+ svm_vmexit_mce_intercept(v, regs);
break;
case VMEXIT_VINTR:
Index: xen-4.0.0-testing/xen/include/asm-x86/msr-index.h
===================================================================
--- xen-4.0.0-testing.orig/xen/include/asm-x86/msr-index.h
+++ xen-4.0.0-testing/xen/include/asm-x86/msr-index.h
@@ -146,6 +146,11 @@
#define MSR_IA32_MC8_ADDR 0x00000422
#define MSR_IA32_MC8_MISC 0x00000423
+#define MSR_IA32_MCx_CTL(x) (MSR_IA32_MC0_CTL + 4*(x))
+#define MSR_IA32_MCx_STATUS(x) (MSR_IA32_MC0_STATUS + 4*(x))
+#define MSR_IA32_MCx_ADDR(x) (MSR_IA32_MC0_ADDR + 4*(x))
+#define MSR_IA32_MCx_MISC(x) (MSR_IA32_MC0_MISC + 4*(x))
+
#define MSR_P6_PERFCTR0 0x000000c1
#define MSR_P6_PERFCTR1 0x000000c2
#define MSR_P6_EVNTSEL0 0x00000186
@@ -224,6 +229,7 @@
/* AMD64 MSRs */
#define MSR_AMD64_NB_CFG 0xc001001f
+#define MSR_AMD64_DC_CFG 0xc0011022
#define AMD64_NB_CFG_CF8_EXT_ENABLE_BIT 46
/* AMD Family10h machine check MSRs */

View File

@ -0,0 +1,138 @@
References: bnc#573413
# HG changeset patch
# User Keir Fraser <keir.fraser@citrix.com>
# Date 1274253726 -3600
# Node ID f67ae6f9d4107f091d062fc1501a96f873671d10
# Parent eb4ecc037b7a53647f0ac89c7067d11ea622ab00
VT-d: Fix ATS enabling for device assignment
Currently, Xen only enables ATS in Xen booting. When an ATS capable
device is assigned to guest, ATS is actually not enabled because FLR
before assignment causes it to be disabled. Thus ATS cannot be used in
guest. This patch enables ATS in domain_context_mapping. This ensures
ATS is enabled in assignment because FLR is earlier than
domain_context_mapping call. Therefore ATS can be used in guest. This
patch also implements disable_ats_device to disable ATS when the
device is deassigned from a domain.
Signed-off-by: Weidong Han <weidong.han@intel.com>
--- a/xen/drivers/passthrough/vtd/ia64/ats.c
+++ b/xen/drivers/passthrough/vtd/ia64/ats.c
@@ -47,6 +47,11 @@ int enable_ats_device(int seg, int bus,
return 0;
}
+int disable_ats_device(int seg, int bus, int devfn)
+{
+ return 0;
+}
+
int dev_invalidate_iotlb(struct iommu *iommu, u16 did,
u64 addr, unsigned int size_order, u64 type)
{
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -1324,6 +1324,9 @@ static int domain_context_mapping(struct
dprintk(VTDPREFIX, "d%d:PCIe: map bdf = %x:%x.%x\n",
domain->domain_id, bus, PCI_SLOT(devfn), PCI_FUNC(devfn));
ret = domain_context_mapping_one(domain, drhd->iommu, bus, devfn);
+ if ( !ret && ats_device(0, bus, devfn) )
+ enable_ats_device(0, bus, devfn);
+
break;
case DEV_TYPE_PCI:
@@ -1453,6 +1456,9 @@ static int domain_context_unmap(struct d
dprintk(VTDPREFIX, "d%d:PCIe: unmap bdf = %x:%x.%x\n",
domain->domain_id, bus, PCI_SLOT(devfn), PCI_FUNC(devfn));
ret = domain_context_unmap_one(domain, iommu, bus, devfn);
+ if ( !ret && ats_device(0, bus, devfn) )
+ disable_ats_device(0, bus, devfn);
+
break;
case DEV_TYPE_PCI:
@@ -1771,8 +1777,6 @@ static void setup_dom0_devices(struct do
list_add(&pdev->domain_list, &d->arch.pdev_list);
domain_context_mapping(d, pdev->bus, pdev->devfn);
pci_enable_acs(pdev);
- if ( ats_device(0, pdev->bus, pdev->devfn) )
- enable_ats_device(0, pdev->bus, pdev->devfn);
}
}
spin_unlock(&pcidevs_lock);
--- a/xen/drivers/passthrough/vtd/x86/ats.c
+++ b/xen/drivers/passthrough/vtd/x86/ats.c
@@ -92,6 +92,9 @@ int ats_device(int seg, int bus, int dev
pdev = pci_get_pdev(bus, devfn);
drhd = acpi_find_matched_drhd_unit(pdev);
+ if ( !drhd )
+ return 0;
+
if ( !ecap_queued_inval(drhd->iommu->ecap) ||
!ecap_dev_iotlb(drhd->iommu->ecap) )
return 0;
@@ -144,6 +147,9 @@ int enable_ats_device(int seg, int bus,
value = pci_conf_read16(bus, PCI_SLOT(devfn),
PCI_FUNC(devfn), pos + ATS_REG_CTL);
+ if ( value & ATS_ENABLE )
+ return 0;
+
value |= ATS_ENABLE;
pci_conf_write16(bus, PCI_SLOT(devfn), PCI_FUNC(devfn),
pos + ATS_REG_CTL, value);
@@ -153,10 +159,50 @@ int enable_ats_device(int seg, int bus,
pdev->devfn = devfn;
pdev->ats_queue_depth = queue_depth;
list_add(&(pdev->list), &ats_devices);
+ if ( iommu_verbose )
+ dprintk(XENLOG_INFO VTDPREFIX, "%x:%x.%x: ATS is enabled\n",
+ bus, PCI_SLOT(devfn), PCI_FUNC(devfn));
return pos;
}
+int disable_ats_device(int seg, int bus, int devfn)
+{
+ struct list_head *pdev_list, *tmp;
+ struct pci_ats_dev *pdev;
+ u32 value;
+ int pos;
+
+ pos = pci_find_ext_capability(seg, bus, devfn, PCI_EXT_CAP_ID_ATS);
+ if ( !pos )
+ return 0;
+
+ /* BUGBUG: add back seg when multi-seg platform support is enabled */
+ value = pci_conf_read16(bus, PCI_SLOT(devfn),
+ PCI_FUNC(devfn), pos + ATS_REG_CTL);
+ value &= ~ATS_ENABLE;
+ pci_conf_write16(bus, PCI_SLOT(devfn), PCI_FUNC(devfn),
+ pos + ATS_REG_CTL, value);
+
+ list_for_each_safe( pdev_list, tmp, &ats_devices )
+ {
+ pdev = list_entry(pdev_list, struct pci_ats_dev, list);
+ if ( pdev->bus == bus && pdev->devfn == devfn )
+ {
+ list_del(&pdev->list);
+ xfree(pdev);
+ break;
+ }
+ }
+
+ if ( iommu_verbose )
+ dprintk(XENLOG_INFO VTDPREFIX, "%x:%x.%x: ATS is disabled\n",
+ bus, PCI_SLOT(devfn), PCI_FUNC(devfn));
+
+ return 0;
+}
+
+
static int device_in_domain(struct iommu *iommu, struct pci_ats_dev *pdev, u16 did)
{
struct root_entry *root_entry = NULL;

View File

@ -0,0 +1,45 @@
# HG changeset patch
# User Keir Fraser <keir.fraser@citrix.com>
# Date 1274298365 -3600
# Node ID c414129c8e129422d03898ec5822f56b2d2da4f8
# Parent fe18437da295d0fdad2d852a603144eec62d29cd
vmx: Do not modify global vmx_vm{entry,exit}_control fields in init_vmcs_config()
The function shoudl only have single-domain effect.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
--- a/xen/arch/x86/hvm/vmx/vmcs.c
+++ b/xen/arch/x86/hvm/vmx/vmcs.c
@@ -558,6 +558,8 @@ static int construct_vmcs(struct vcpu *v
struct domain *d = v->domain;
uint16_t sysenter_cs;
unsigned long sysenter_eip;
+ u32 vmexit_ctl = vmx_vmexit_control;
+ u32 vmentry_ctl = vmx_vmentry_control;
vmx_vmcs_enter(v);
@@ -584,17 +586,17 @@ static int construct_vmcs(struct vcpu *v
v->arch.hvm_vmx.secondary_exec_control &=
~(SECONDARY_EXEC_ENABLE_EPT |
SECONDARY_EXEC_UNRESTRICTED_GUEST);
- vmx_vmexit_control &= ~(VM_EXIT_SAVE_GUEST_PAT |
- VM_EXIT_LOAD_HOST_PAT);
- vmx_vmentry_control &= ~VM_ENTRY_LOAD_GUEST_PAT;
+ vmexit_ctl &= ~(VM_EXIT_SAVE_GUEST_PAT |
+ VM_EXIT_LOAD_HOST_PAT);
+ vmentry_ctl &= ~VM_ENTRY_LOAD_GUEST_PAT;
}
/* Do not enable Monitor Trap Flag unless start single step debug */
v->arch.hvm_vmx.exec_control &= ~CPU_BASED_MONITOR_TRAP_FLAG;
__vmwrite(CPU_BASED_VM_EXEC_CONTROL, v->arch.hvm_vmx.exec_control);
- __vmwrite(VM_EXIT_CONTROLS, vmx_vmexit_control);
- __vmwrite(VM_ENTRY_CONTROLS, vmx_vmentry_control);
+ __vmwrite(VM_EXIT_CONTROLS, vmexit_ctl);
+ __vmwrite(VM_ENTRY_CONTROLS, vmentry_ctl);
if ( cpu_has_vmx_ple )
{

27
21459-block-script.patch Normal file
View File

@ -0,0 +1,27 @@
# HG changeset patch
# User Jim Fehlig <jfehlig@novell.com>
# Date 1274807602 21600
# Node ID 14d040342c6618365750b2c3b96ca01ff4a5e5dd
# Parent 93410e5e4ad8799932ad31820d0d82c74d1f63a2
Allow space in vbd path name
c/s 20393 breaks existing domain configuration that contains
spaces in the vbd path name. Fixed by this trivial patch which
provides missing quotes.
Signed-off-by: Jim Fehlig <jfehlig@novell.com>
diff -r 93410e5e4ad8 -r 14d040342c66 tools/hotplug/Linux/block
--- a/tools/hotplug/Linux/block Sat May 22 06:36:41 2010 +0100
+++ b/tools/hotplug/Linux/block Tue May 25 11:13:22 2010 -0600
@@ -272,8 +272,8 @@
if [ "x$mode" != 'x!' ]
then
- inode=$(stat -c '%i' $file)
- dev=$(stat -c '%D' $file)
+ inode=$(stat -c '%i' "$file")
+ dev=$(stat -c '%D' "$file")
if [ -z "$inode" ] || [ -z "$dev" ]
then
fatal "Unable to lookup $file: dev: $dev inode: $inode"

View File

@ -0,0 +1,25 @@
# HG changeset patch
# User Jim Fehlig <jfehlig@novell.com>
# Date 1274822804 21600
# Node ID a83e97657ba0f3ea232fe0dfb9edccf8e28aa982
# Parent 14d040342c6618365750b2c3b96ca01ff4a5e5dd
tools: Fix time offset when localtime=0
localtime can be stored in vm config as a string, resulting in
incorrect calculation of rtc_timeoffset. Cast localtime to int
to ensure rtc_timeoffset is calculated properly.
Signed-off-by: Jim Fehlig <jfehlig@novell.com>
diff -r 14d040342c66 -r a83e97657ba0 tools/python/xen/xend/image.py
--- a/tools/python/xen/xend/image.py Tue May 25 11:13:22 2010 -0600
+++ b/tools/python/xen/xend/image.py Tue May 25 15:26:44 2010 -0600
@@ -129,7 +129,7 @@
self.dmargs = self.parseDeviceModelArgs(vmConfig)
self.pid = None
rtc_timeoffset = int(vmConfig['platform'].get('rtc_timeoffset', 0))
- if vmConfig['platform'].get('localtime', 0):
+ if int(vmConfig['platform'].get('localtime', 0)):
if time.localtime(time.time())[8]:
rtc_timeoffset -= time.altzone
else:

15
capslock_enable.patch Normal file
View File

@ -0,0 +1,15 @@
diff -r c2f19aa8a584 tools/ioemu-remote/vnc.c
--- a/tools/ioemu-remote/vnc.c Wed Apr 07 11:13:49 2010 +0800
+++ b/tools/ioemu-remote/vnc.c Mon May 24 13:56:22 2010 +0800
@@ -1326,6 +1326,11 @@
}
break;
case 0x3a: /* CapsLock */
+ if(!down){
+ vs->modifiers_state[keycode] ^= 1;
+ kbd_put_keycode(keycode | 0x80);
+ }
+ return;
case 0x45: /* NumLock */
if (down) {
kbd_put_keycode(keycode & 0x7f);

View File

@ -1,7 +1,9 @@
From: Juergen Gross <juergen.gross@ts.fujitsu.com>
--- a/xen/arch/x86/acpi/power.c
+++ b/xen/arch/x86/acpi/power.c
Index: xen-4.0.0-testing/xen/arch/x86/acpi/power.c
===================================================================
--- xen-4.0.0-testing.orig/xen/arch/x86/acpi/power.c
+++ xen-4.0.0-testing/xen/arch/x86/acpi/power.c
@@ -234,7 +234,7 @@ static int enter_state(u32 state)
return error;
}
@ -20,8 +22,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
}
static int acpi_get_wake_status(void)
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
Index: xen-4.0.0-testing/xen/arch/x86/domain.c
===================================================================
--- xen-4.0.0-testing.orig/xen/arch/x86/domain.c
+++ xen-4.0.0-testing/xen/arch/x86/domain.c
@@ -1518,42 +1518,52 @@ void sync_vcpu_execstate(struct vcpu *v)
}
@ -135,8 +139,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
return 0;
}
--- a/xen/arch/x86/domain_build.c
+++ b/xen/arch/x86/domain_build.c
Index: xen-4.0.0-testing/xen/arch/x86/domain_build.c
===================================================================
--- xen-4.0.0-testing.orig/xen/arch/x86/domain_build.c
+++ xen-4.0.0-testing/xen/arch/x86/domain_build.c
@@ -9,6 +9,7 @@
#include <xen/lib.h>
#include <xen/ctype.h>
@ -177,9 +183,11 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
/* Set up CR3 value for write_ptbase */
if ( paging_mode_enabled(d) )
--- a/xen/arch/x86/microcode.c
+++ b/xen/arch/x86/microcode.c
@@ -116,7 +116,7 @@ static int microcode_update_cpu(const vo
Index: xen-4.0.0-testing/xen/arch/x86/microcode.c
===================================================================
--- xen-4.0.0-testing.orig/xen/arch/x86/microcode.c
+++ xen-4.0.0-testing/xen/arch/x86/microcode.c
@@ -114,7 +114,7 @@ static int microcode_update_cpu(const vo
return err;
}
@ -188,7 +196,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
{
struct microcode_info *info = _info;
int error;
@@ -129,7 +129,8 @@ static long do_microcode_update(void *_i
@@ -127,7 +127,8 @@ static long do_microcode_update(void *_i
info->cpu = next_cpu(info->cpu, cpu_online_map);
if ( info->cpu < NR_CPUS )
@ -198,7 +206,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
error = info->error;
xfree(info);
@@ -162,5 +163,6 @@ int microcode_update(XEN_GUEST_HANDLE(co
@@ -160,5 +161,6 @@ int microcode_update(XEN_GUEST_HANDLE(co
info->error = 0;
info->cpu = first_cpu(cpu_online_map);
@ -206,8 +214,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
+ return continue_hypercall_on_cpu(info->cpu, NULL,
+ do_microcode_update, info);
}
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
Index: xen-4.0.0-testing/xen/arch/x86/mm.c
===================================================================
--- xen-4.0.0-testing.orig/xen/arch/x86/mm.c
+++ xen-4.0.0-testing/xen/arch/x86/mm.c
@@ -242,7 +242,7 @@ void __init arch_init_memory(void)
* Any Xen-heap pages that we will allow to be mapped will have
* their domain field set to dom_xen.
@ -234,8 +244,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
BUG_ON(dom_cow == NULL);
/* First 1MB of RAM is historically marked as I/O. */
--- a/xen/arch/x86/platform_hypercall.c
+++ b/xen/arch/x86/platform_hypercall.c
Index: xen-4.0.0-testing/xen/arch/x86/platform_hypercall.c
===================================================================
--- xen-4.0.0-testing.orig/xen/arch/x86/platform_hypercall.c
+++ xen-4.0.0-testing/xen/arch/x86/platform_hypercall.c
@@ -19,6 +19,7 @@
#include <xen/iocap.h>
#include <xen/guest_access.h>
@ -295,8 +307,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
break;
}
break;
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
Index: xen-4.0.0-testing/xen/arch/x86/setup.c
===================================================================
--- xen-4.0.0-testing.orig/xen/arch/x86/setup.c
+++ xen-4.0.0-testing/xen/arch/x86/setup.c
@@ -2,6 +2,7 @@
#include <xen/init.h>
#include <xen/lib.h>
@ -329,8 +343,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
if ( (dom0 == NULL) || (alloc_dom0_vcpu0() == NULL) )
panic("Error creating domain 0\n");
--- a/xen/arch/x86/smpboot.c
+++ b/xen/arch/x86/smpboot.c
Index: xen-4.0.0-testing/xen/arch/x86/smpboot.c
===================================================================
--- xen-4.0.0-testing.orig/xen/arch/x86/smpboot.c
+++ xen-4.0.0-testing/xen/arch/x86/smpboot.c
@@ -39,6 +39,7 @@
#include <xen/mm.h>
#include <xen/domain.h>
@ -452,8 +468,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
cpufreq_add_cpu(cpu);
return 0;
}
--- a/xen/arch/x86/sysctl.c
+++ b/xen/arch/x86/sysctl.c
Index: xen-4.0.0-testing/xen/arch/x86/sysctl.c
===================================================================
--- xen-4.0.0-testing.orig/xen/arch/x86/sysctl.c
+++ xen-4.0.0-testing/xen/arch/x86/sysctl.c
@@ -29,7 +29,7 @@
#define get_xen_guest_handle(val, hnd) do { val = (hnd).p; } while (0)
@ -472,8 +490,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
break;
case XEN_SYSCTL_CPU_HOTPLUG_STATUS:
ret = 0;
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
Index: xen-4.0.0-testing/xen/common/Makefile
===================================================================
--- xen-4.0.0-testing.orig/xen/common/Makefile
+++ xen-4.0.0-testing/xen/common/Makefile
@@ -1,5 +1,6 @@
obj-y += bitmap.o
obj-y += cpu.o
@ -481,8 +501,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
obj-y += domctl.o
obj-y += domain.o
obj-y += event_channel.o
Index: xen-4.0.0-testing/xen/common/cpupool.c
===================================================================
--- /dev/null
+++ b/xen/common/cpupool.c
+++ xen-4.0.0-testing/xen/common/cpupool.c
@@ -0,0 +1,585 @@
+/******************************************************************************
+ * cpupool.c
@ -1069,8 +1091,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
+ * indent-tabs-mode: nil
+ * End:
+ */
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
Index: xen-4.0.0-testing/xen/common/domain.c
===================================================================
--- xen-4.0.0-testing.orig/xen/common/domain.c
+++ xen-4.0.0-testing/xen/common/domain.c
@@ -209,7 +209,7 @@ static void __init parse_extra_guest_irq
custom_param("extra_guest_irqs", parse_extra_guest_irqs);
@ -1099,8 +1123,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
sched_destroy_domain(d);
/* Free page used by xen oprofile buffer. */
--- a/xen/common/domctl.c
+++ b/xen/common/domctl.c
Index: xen-4.0.0-testing/xen/common/domctl.c
===================================================================
--- xen-4.0.0-testing.orig/xen/common/domctl.c
+++ xen-4.0.0-testing/xen/common/domctl.c
@@ -11,6 +11,7 @@
#include <xen/lib.h>
#include <xen/mm.h>
@ -1176,8 +1202,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
if ( alloc_vcpu(d, i, cpu) == NULL )
goto maxvcpu_out;
--- a/xen/common/sched_credit.c
+++ b/xen/common/sched_credit.c
Index: xen-4.0.0-testing/xen/common/sched_credit.c
===================================================================
--- xen-4.0.0-testing.orig/xen/common/sched_credit.c
+++ xen-4.0.0-testing/xen/common/sched_credit.c
@@ -70,11 +70,15 @@
/*
* Useful macros
@ -2080,8 +2108,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
.tick_suspend = csched_tick_suspend,
.tick_resume = csched_tick_resume,
--- a/xen/common/sched_sedf.c
+++ b/xen/common/sched_sedf.c
Index: xen-4.0.0-testing/xen/common/sched_sedf.c
===================================================================
--- xen-4.0.0-testing.orig/xen/common/sched_sedf.c
+++ xen-4.0.0-testing/xen/common/sched_sedf.c
@@ -21,6 +21,9 @@
printk(_a ); \
} while ( 0 )
@ -2364,8 +2394,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
.do_schedule = sedf_do_schedule,
.pick_cpu = sedf_pick_cpu,
.dump_cpu_state = sedf_dump_cpu_state,
--- a/xen/common/schedule.c
+++ b/xen/common/schedule.c
Index: xen-4.0.0-testing/xen/common/schedule.c
===================================================================
--- xen-4.0.0-testing.orig/xen/common/schedule.c
+++ xen-4.0.0-testing/xen/common/schedule.c
@@ -53,10 +53,11 @@ static void poll_timer_fn(void *data);
/* This is global for now so that private implementations can reach it */
@ -2884,8 +2916,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
}
#ifdef CONFIG_COMPAT
--- a/xen/common/softirq.c
+++ b/xen/common/softirq.c
Index: xen-4.0.0-testing/xen/common/softirq.c
===================================================================
--- xen-4.0.0-testing.orig/xen/common/softirq.c
+++ xen-4.0.0-testing/xen/common/softirq.c
@@ -88,9 +88,11 @@ void raise_softirq(unsigned int nr)
}
@ -2979,8 +3013,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
open_softirq(TASKLET_SOFTIRQ, tasklet_action);
}
--- a/xen/common/sysctl.c
+++ b/xen/common/sysctl.c
Index: xen-4.0.0-testing/xen/common/sysctl.c
===================================================================
--- xen-4.0.0-testing.orig/xen/common/sysctl.c
+++ xen-4.0.0-testing/xen/common/sysctl.c
@@ -314,6 +314,14 @@ long do_sysctl(XEN_GUEST_HANDLE(xen_sysc
}
break;
@ -2996,8 +3032,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
default:
ret = arch_do_sysctl(op, u_sysctl);
break;
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
Index: xen-4.0.0-testing/xen/include/asm-x86/domain.h
===================================================================
--- xen-4.0.0-testing.orig/xen/include/asm-x86/domain.h
+++ xen-4.0.0-testing/xen/include/asm-x86/domain.h
@@ -451,7 +451,8 @@ struct arch_vcpu
#define hvm_svm hvm_vcpu.u.svm
@ -3008,8 +3046,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
void vcpu_show_execution_state(struct vcpu *);
void vcpu_show_registers(const struct vcpu *);
--- a/xen/include/asm-x86/smp.h
+++ b/xen/include/asm-x86/smp.h
Index: xen-4.0.0-testing/xen/include/asm-x86/smp.h
===================================================================
--- xen-4.0.0-testing.orig/xen/include/asm-x86/smp.h
+++ xen-4.0.0-testing/xen/include/asm-x86/smp.h
@@ -56,7 +56,6 @@ extern u32 cpu_2_logical_apicid[];
#define CPU_ONLINE 0x0002 /* CPU is up */
#define CPU_DEAD 0x0004 /* CPU is dead */
@ -3018,8 +3058,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
#define cpu_is_offline(cpu) unlikely(!cpu_online(cpu))
extern int cpu_down(unsigned int cpu);
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
Index: xen-4.0.0-testing/xen/include/public/domctl.h
===================================================================
--- xen-4.0.0-testing.orig/xen/include/public/domctl.h
+++ xen-4.0.0-testing/xen/include/public/domctl.h
@@ -60,10 +60,10 @@ struct xen_domctl_createdomain {
/* Should domain memory integrity be verifed by tboot during Sx? */
#define _XEN_DOMCTL_CDF_s3_integrity 2
@ -3048,8 +3090,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
struct xen_domctl {
uint32_t cmd;
#define XEN_DOMCTL_createdomain 1
--- a/xen/include/public/sysctl.h
+++ b/xen/include/public/sysctl.h
Index: xen-4.0.0-testing/xen/include/public/sysctl.h
===================================================================
--- xen-4.0.0-testing.orig/xen/include/public/sysctl.h
+++ xen-4.0.0-testing/xen/include/public/sysctl.h
@@ -491,6 +491,28 @@ struct xen_sysctl_lockprof_op {
typedef struct xen_sysctl_lockprof_op xen_sysctl_lockprof_op_t;
DEFINE_XEN_GUEST_HANDLE(xen_sysctl_lockprof_op_t);
@ -3087,8 +3131,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
uint8_t pad[128];
} u;
};
--- a/xen/include/xen/sched-if.h
+++ b/xen/include/xen/sched-if.h
Index: xen-4.0.0-testing/xen/include/xen/sched-if.h
===================================================================
--- xen-4.0.0-testing.orig/xen/include/xen/sched-if.h
+++ xen-4.0.0-testing/xen/include/xen/sched-if.h
@@ -10,16 +10,29 @@
#include <xen/percpu.h>
@ -3183,8 +3229,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
+struct scheduler *scheduler_get_by_id(unsigned int id);
+
#endif /* __XEN_SCHED_IF_H__ */
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
Index: xen-4.0.0-testing/xen/include/xen/sched.h
===================================================================
--- xen-4.0.0-testing.orig/xen/include/xen/sched.h
+++ xen-4.0.0-testing/xen/include/xen/sched.h
@@ -9,6 +9,7 @@
#include <xen/shared.h>
#include <public/xen.h>
@ -3265,8 +3313,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
#endif /* __SCHED_H__ */
/*
--- a/xen/include/xen/softirq.h
+++ b/xen/include/xen/softirq.h
Index: xen-4.0.0-testing/xen/include/xen/softirq.h
===================================================================
--- xen-4.0.0-testing.orig/xen/include/xen/softirq.h
+++ xen-4.0.0-testing/xen/include/xen/softirq.h
@@ -58,6 +58,7 @@ struct tasklet
struct tasklet name = { LIST_HEAD_INIT(name.list), 0, 0, 0, func, data }

View File

@ -1,3 +1,48 @@
-------------------------------------------------------------------
Tue May 25 15:17:38 MDT 2010 - carnold@novell.com
- bnc#608191 - /var/adm/fillup-templates/sysconfig.xend from
package xen-tools is no valid sysconfig file
xend-sysconfig.patch
-------------------------------------------------------------------
Tue May 25 14:32:57 MDT 2010 - carnold@novell.com
- bnc#608194 - /etc/xen/* config files are not packaged with
noreplace
-------------------------------------------------------------------
Tue May 25 13:19:17 MDT 2010 - carnold@novell.com
- bnc#569744 - SLE HVM guest clock/timezone is incorrect after
reboot
21460-xend-timeoffset.patch
-------------------------------------------------------------------
Tue May 25 11:20:30 MDT 2010 - jfehlig@novell.com
- bnc#606882 - Allow spaces in vbd path names
21459-block-script.patch
-------------------------------------------------------------------
Mon May 24 15:10:12 CST 2010 - jsong@novell.com
- bnc#591799 - The status of Caps Lock is incorrect in domU
capslock_enable.patch
-------------------------------------------------------------------
Thu May 20 09:56:07 MDT 2010 - carnold@novell.com
- Upstream fixes from Jan including a fix for Intel's ATS issue
21435-vmx-retain-global-controls.patch
21406-x86-microcode-quiet.patch
21421-vts-ats-enabling.patch
-------------------------------------------------------------------
Wed May 19 13:23:36 MDT 2010 - carnold@novell.com
- bnc#607219 - AMD Erratum 383 workaround for Xen
21408-amd-erratum-383.patch
-------------------------------------------------------------------
Wed May 19 08:09:41 MDT 2010 - carnold@novell.com

View File

@ -39,7 +39,7 @@ BuildRequires: glibc-32bit glibc-devel-32bit
BuildRequires: kernel-source kernel-syms module-init-tools xorg-x11
%endif
Version: 4.0.0_21091_05
Release: 2
Release: 3
License: GPLv2+
Group: System/Kernel
AutoReqProv: on
@ -102,6 +102,12 @@ Patch24: 21349-x86-memcpy.patch
Patch25: 21360-x86-mce-polling-diabled-init.patch
Patch26: 21372-x86-cross-cpu-wait.patch
Patch27: 21373-dummy-domain-io-caps.patch
Patch28: 21406-x86-microcode-quiet.patch
Patch29: 21408-amd-erratum-383.patch
Patch30: 21421-vts-ats-enabling.patch
Patch31: 21435-vmx-retain-global-controls.patch
Patch32: 21459-block-script.patch
Patch33: 21460-xend-timeoffset.patch
# Our patches
Patch300: xen-config.diff
Patch301: xend-config.diff
@ -162,6 +168,7 @@ Patch366: cpu-pools-python.patch
Patch367: cpu-pools-libxen.patch
Patch368: cpu-pools-xmtest.patch
Patch369: cpu-pools-docs.patch
Patch370: xend-sysconfig.patch
# Patches for snapshot support
Patch400: snapshot-ioemu-save.patch
Patch401: snapshot-ioemu-restore.patch
@ -185,6 +192,7 @@ Patch427: xen-ioemu-hvm-pv-support.diff
Patch428: qemu-dm-segfault.patch
Patch429: hibernate.patch
Patch430: del_usb_xend_entry.patch
Patch431: capslock_enable.patch
# Jim's domain lock patch
Patch450: xend-domain-lock.patch
# Hypervisor and PV driver Patches
@ -570,6 +578,12 @@ Authors:
%patch25 -p1
%patch26 -p1
%patch27 -p1
%patch28 -p1
%patch29 -p1
%patch30 -p1
%patch31 -p1
%patch32 -p1
%patch33 -p1
%patch300 -p1
%patch301 -p1
%patch302 -p1
@ -628,6 +642,7 @@ Authors:
%patch367 -p1
%patch368 -p1
%patch369 -p1
%patch370 -p1
%patch400 -p1
%patch401 -p1
%patch402 -p1
@ -648,6 +663,7 @@ Authors:
%patch428 -p1
%patch429 -p1
%patch430 -p1
%patch431 -p1
%patch450 -p1
%patch500 -p1
%patch501 -p1
@ -936,8 +952,8 @@ rm -rf $RPM_BUILD_ROOT/%{_libdir}/python%{pyver}/site-packages/xen/remus
#/etc/xen/scripts/qemu-ifup
/etc/xen/README*
%config /etc/xen/vm
%config /etc/xen/*.sxp
%config /etc/xen/*.xml
%config(noreplace) /etc/xen/*.sxp
%config(noreplace) /etc/xen/*.xml
%config(noreplace) /etc/xen/xenapiusers
%config /etc/pam.d/xen-api
%config /etc/modprobe.d/xen_loop.conf

36
xend-sysconfig.patch Normal file
View File

@ -0,0 +1,36 @@
Index: xen-4.0.0-testing/tools/hotplug/Linux/init.d/sysconfig.xend
===================================================================
--- xen-4.0.0-testing.orig/tools/hotplug/Linux/init.d/sysconfig.xend
+++ xen-4.0.0-testing/tools/hotplug/Linux/init.d/sysconfig.xend
@@ -1,11 +1,27 @@
+## Path: System/Virtualization
+## Type: string(none,guest,hv,all)
+## Default: ""
+#
# Log xenconsoled messages (cf xm dmesg)
-#XENCONSOLED_TRACE=[none|guest|hv|all]
+XENCONSOLED_TRACE=""
+## Path: System/Virtualization
+## Type: string(yes,on,1)
+## Default: ""
+#
# Log xenstored messages
-#XENSTORED_TRACE=[yes|on|1]
+XENSTORED_TRACE=""
+## Path: System/Virtualization
+## Type: string("/var/lib/xenstored")
+## Default: ""
+#
# Running xenstored on XENSTORED_ROOTDIR
-#XENSTORED_ROOTDIR=/var/lib/xenstored
+XENSTORED_ROOTDIR=""
+## Path: System/Virtualization
+## Type: string(yes,on,1)
+## Default: ""
+#
# Running xenbackendd in debug mode
-#XENBACKENDD_DEBUG=[yes|on|1]
+XENBACKENDD_DEBUG=""