From 60fee705710bf302014eca2f8d6c899b71cfad6059fa4a6429dd5b33f986a436 Mon Sep 17 00:00:00 2001 From: OBS User buildservice-autocommit Date: Fri, 4 Jun 2010 13:05:01 +0000 Subject: [PATCH] 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 --- 21406-x86-microcode-quiet.patch | 25 ++++ 21408-amd-erratum-383.patch | 141 ++++++++++++++++++++++ 21421-vts-ats-enabling.patch | 138 +++++++++++++++++++++ 21435-vmx-retain-global-controls.patch | 45 +++++++ 21459-block-script.patch | 27 +++++ 21460-xend-timeoffset.patch | 25 ++++ capslock_enable.patch | 15 +++ cpupools-core.patch | 160 ++++++++++++++++--------- xen.changes | 45 +++++++ xen.spec | 22 +++- xend-sysconfig.patch | 36 ++++++ 11 files changed, 621 insertions(+), 58 deletions(-) create mode 100644 21406-x86-microcode-quiet.patch create mode 100644 21408-amd-erratum-383.patch create mode 100644 21421-vts-ats-enabling.patch create mode 100644 21435-vmx-retain-global-controls.patch create mode 100644 21459-block-script.patch create mode 100644 21460-xend-timeoffset.patch create mode 100644 capslock_enable.patch create mode 100644 xend-sysconfig.patch diff --git a/21406-x86-microcode-quiet.patch b/21406-x86-microcode-quiet.patch new file mode 100644 index 0000000..78a22b2 --- /dev/null +++ b/21406-x86-microcode-quiet.patch @@ -0,0 +1,25 @@ +# HG changeset patch +# User Keir Fraser +# Date 1274118689 -3600 +# Node ID 2a16128f17d884b87124eb159d4c4a0c34339d4e +# Parent 89a2f9ad02f23c24a06274a1217991181f19930b +x86: Quieten microcode.c during CPU hotplug + +Signed-off-by: Keir Fraser + +--- 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; + diff --git a/21408-amd-erratum-383.patch b/21408-amd-erratum-383.patch new file mode 100644 index 0000000..90cc985 --- /dev/null +++ b/21408-amd-erratum-383.patch @@ -0,0 +1,141 @@ +# HG changeset patch +# User Keir Fraser +# 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 +Signed-off-by: Joerg Roedel +Signed-off-by: Christoph Egger + +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 */ diff --git a/21421-vts-ats-enabling.patch b/21421-vts-ats-enabling.patch new file mode 100644 index 0000000..0d51bf0 --- /dev/null +++ b/21421-vts-ats-enabling.patch @@ -0,0 +1,138 @@ +References: bnc#573413 + +# HG changeset patch +# User Keir Fraser +# 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 + +--- 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; diff --git a/21435-vmx-retain-global-controls.patch b/21435-vmx-retain-global-controls.patch new file mode 100644 index 0000000..49329c6 --- /dev/null +++ b/21435-vmx-retain-global-controls.patch @@ -0,0 +1,45 @@ +# HG changeset patch +# User Keir Fraser +# 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 + +--- 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 ) + { diff --git a/21459-block-script.patch b/21459-block-script.patch new file mode 100644 index 0000000..b40a8dc --- /dev/null +++ b/21459-block-script.patch @@ -0,0 +1,27 @@ +# HG changeset patch +# User Jim Fehlig +# 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 + +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" diff --git a/21460-xend-timeoffset.patch b/21460-xend-timeoffset.patch new file mode 100644 index 0000000..db16ac0 --- /dev/null +++ b/21460-xend-timeoffset.patch @@ -0,0 +1,25 @@ +# HG changeset patch +# User Jim Fehlig +# 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 + +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: diff --git a/capslock_enable.patch b/capslock_enable.patch new file mode 100644 index 0000000..cdcd18e --- /dev/null +++ b/capslock_enable.patch @@ -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); diff --git a/cpupools-core.patch b/cpupools-core.patch index 0a36554..09fbf44 100644 --- a/cpupools-core.patch +++ b/cpupools-core.patch @@ -1,7 +1,9 @@ From: Juergen Gross ---- 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 } 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 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 #include @@ -177,9 +183,11 @@ From: Juergen Gross /* 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 { 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 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 + 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 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 #include @@ -295,8 +307,10 @@ From: Juergen Gross 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 #include @@ -329,8 +343,10 @@ From: Juergen Gross 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 #include @@ -452,8 +468,10 @@ From: Juergen Gross 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 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 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 + * 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 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 #include @@ -1176,8 +1202,10 @@ From: Juergen Gross 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 @@ -2066,7 +2094,7 @@ From: Juergen Gross .destroy_vcpu = csched_vcpu_destroy, .sleep = csched_vcpu_sleep, -@@ -1411,6 +1540,13 @@ const struct scheduler sched_credit_def +@@ -1411,6 +1540,13 @@ const struct scheduler sched_credit_def .dump_cpu_state = csched_dump_pcpu, .dump_settings = csched_dump, .init = csched_init, @@ -2080,8 +2108,10 @@ From: Juergen Gross .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 ) @@ -2347,7 +2377,7 @@ From: Juergen Gross .name = "Simple EDF Scheduler", .opt_name = "sedf", .sched_id = XEN_SCHEDULER_SEDF, -@@ -1464,9 +1509,15 @@ const struct scheduler sched_sedf_def = +@@ -1464,9 +1509,15 @@ const struct scheduler sched_sedf_def = .init_domain = sedf_init_domain, .destroy_domain = sedf_destroy_domain, @@ -2364,8 +2394,10 @@ From: Juergen Gross .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 } #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 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 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 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 #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 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 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 @@ -3183,8 +3229,10 @@ From: Juergen Gross +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 #include @@ -3193,7 +3241,7 @@ From: Juergen Gross #include #include #include -@@ -132,8 +133,6 @@ struct vcpu +@@ -132,8 +133,6 @@ struct vcpu bool_t defer_shutdown; /* VCPU is paused following shutdown request (d->is_shutting_down)? */ bool_t paused_for_shutdown; @@ -3265,8 +3313,10 @@ From: Juergen Gross #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 } diff --git a/xen.changes b/xen.changes index 3dddf32..5196e59 100644 --- a/xen.changes +++ b/xen.changes @@ -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 diff --git a/xen.spec b/xen.spec index e3fe7a5..1a669e5 100644 --- a/xen.spec +++ b/xen.spec @@ -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 diff --git a/xend-sysconfig.patch b/xend-sysconfig.patch new file mode 100644 index 0000000..3a433c8 --- /dev/null +++ b/xend-sysconfig.patch @@ -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=""