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/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/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 72b9b37..5196e59 100644 --- a/xen.changes +++ b/xen.changes @@ -29,6 +29,14 @@ 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 diff --git a/xen.spec b/xen.spec index 3996d7f..18bef47 100644 --- a/xen.spec +++ b/xen.spec @@ -102,9 +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: 21408-amd-erratum-383.patch -Patch29: 21459-block-script.patch -Patch30: 21460-xend-timeoffset.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 @@ -578,6 +581,9 @@ Authors: %patch28 -p1 %patch29 -p1 %patch30 -p1 +%patch31 -p1 +%patch32 -p1 +%patch33 -p1 %patch300 -p1 %patch301 -p1 %patch302 -p1