- 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 OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=54
This commit is contained in:
parent
986d3927c4
commit
ea834665b1
25
21406-x86-microcode-quiet.patch
Normal file
25
21406-x86-microcode-quiet.patch
Normal 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;
|
||||
|
138
21421-vts-ats-enabling.patch
Normal file
138
21421-vts-ats-enabling.patch
Normal 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;
|
45
21435-vmx-retain-global-controls.patch
Normal file
45
21435-vmx-retain-global-controls.patch
Normal 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 )
|
||||
{
|
@ -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
|
||||
@ -2066,7 +2094,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
.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 <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 )
|
||||
@ -2347,7 +2377,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
.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 <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>
|
||||
@ -3193,7 +3241,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
#include <public/vcpu.h>
|
||||
#include <public/xsm/acm.h>
|
||||
#include <xen/time.h>
|
||||
@@ -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 <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 }
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
12
xen.spec
12
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user