- 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>
|
From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||||
|
|
||||||
--- a/xen/arch/x86/acpi/power.c
|
Index: xen-4.0.0-testing/xen/arch/x86/acpi/power.c
|
||||||
+++ b/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)
|
@@ -234,7 +234,7 @@ static int enter_state(u32 state)
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
@ -20,8 +22,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int acpi_get_wake_status(void)
|
static int acpi_get_wake_status(void)
|
||||||
--- a/xen/arch/x86/domain.c
|
Index: xen-4.0.0-testing/xen/arch/x86/domain.c
|
||||||
+++ b/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)
|
@@ -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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
--- a/xen/arch/x86/domain_build.c
|
Index: xen-4.0.0-testing/xen/arch/x86/domain_build.c
|
||||||
+++ b/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 @@
|
@@ -9,6 +9,7 @@
|
||||||
#include <xen/lib.h>
|
#include <xen/lib.h>
|
||||||
#include <xen/ctype.h>
|
#include <xen/ctype.h>
|
||||||
@ -177,9 +183,11 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
|
|
||||||
/* Set up CR3 value for write_ptbase */
|
/* Set up CR3 value for write_ptbase */
|
||||||
if ( paging_mode_enabled(d) )
|
if ( paging_mode_enabled(d) )
|
||||||
--- a/xen/arch/x86/microcode.c
|
Index: xen-4.0.0-testing/xen/arch/x86/microcode.c
|
||||||
+++ b/xen/arch/x86/microcode.c
|
===================================================================
|
||||||
@@ -116,7 +116,7 @@ static int microcode_update_cpu(const vo
|
--- 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;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,7 +196,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
{
|
{
|
||||||
struct microcode_info *info = _info;
|
struct microcode_info *info = _info;
|
||||||
int error;
|
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);
|
info->cpu = next_cpu(info->cpu, cpu_online_map);
|
||||||
if ( info->cpu < NR_CPUS )
|
if ( info->cpu < NR_CPUS )
|
||||||
@ -198,7 +206,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
|
|
||||||
error = info->error;
|
error = info->error;
|
||||||
xfree(info);
|
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->error = 0;
|
||||||
info->cpu = first_cpu(cpu_online_map);
|
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,
|
+ return continue_hypercall_on_cpu(info->cpu, NULL,
|
||||||
+ do_microcode_update, info);
|
+ do_microcode_update, info);
|
||||||
}
|
}
|
||||||
--- a/xen/arch/x86/mm.c
|
Index: xen-4.0.0-testing/xen/arch/x86/mm.c
|
||||||
+++ b/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)
|
@@ -242,7 +242,7 @@ void __init arch_init_memory(void)
|
||||||
* Any Xen-heap pages that we will allow to be mapped will have
|
* Any Xen-heap pages that we will allow to be mapped will have
|
||||||
* their domain field set to dom_xen.
|
* their domain field set to dom_xen.
|
||||||
@ -234,8 +244,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
BUG_ON(dom_cow == NULL);
|
BUG_ON(dom_cow == NULL);
|
||||||
|
|
||||||
/* First 1MB of RAM is historically marked as I/O. */
|
/* First 1MB of RAM is historically marked as I/O. */
|
||||||
--- a/xen/arch/x86/platform_hypercall.c
|
Index: xen-4.0.0-testing/xen/arch/x86/platform_hypercall.c
|
||||||
+++ b/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 @@
|
@@ -19,6 +19,7 @@
|
||||||
#include <xen/iocap.h>
|
#include <xen/iocap.h>
|
||||||
#include <xen/guest_access.h>
|
#include <xen/guest_access.h>
|
||||||
@ -295,8 +307,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
--- a/xen/arch/x86/setup.c
|
Index: xen-4.0.0-testing/xen/arch/x86/setup.c
|
||||||
+++ b/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 @@
|
@@ -2,6 +2,7 @@
|
||||||
#include <xen/init.h>
|
#include <xen/init.h>
|
||||||
#include <xen/lib.h>
|
#include <xen/lib.h>
|
||||||
@ -329,8 +343,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
if ( (dom0 == NULL) || (alloc_dom0_vcpu0() == NULL) )
|
if ( (dom0 == NULL) || (alloc_dom0_vcpu0() == NULL) )
|
||||||
panic("Error creating domain 0\n");
|
panic("Error creating domain 0\n");
|
||||||
|
|
||||||
--- a/xen/arch/x86/smpboot.c
|
Index: xen-4.0.0-testing/xen/arch/x86/smpboot.c
|
||||||
+++ b/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 @@
|
@@ -39,6 +39,7 @@
|
||||||
#include <xen/mm.h>
|
#include <xen/mm.h>
|
||||||
#include <xen/domain.h>
|
#include <xen/domain.h>
|
||||||
@ -452,8 +468,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
cpufreq_add_cpu(cpu);
|
cpufreq_add_cpu(cpu);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
--- a/xen/arch/x86/sysctl.c
|
Index: xen-4.0.0-testing/xen/arch/x86/sysctl.c
|
||||||
+++ b/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 @@
|
@@ -29,7 +29,7 @@
|
||||||
|
|
||||||
#define get_xen_guest_handle(val, hnd) do { val = (hnd).p; } while (0)
|
#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;
|
break;
|
||||||
case XEN_SYSCTL_CPU_HOTPLUG_STATUS:
|
case XEN_SYSCTL_CPU_HOTPLUG_STATUS:
|
||||||
ret = 0;
|
ret = 0;
|
||||||
--- a/xen/common/Makefile
|
Index: xen-4.0.0-testing/xen/common/Makefile
|
||||||
+++ b/xen/common/Makefile
|
===================================================================
|
||||||
|
--- xen-4.0.0-testing.orig/xen/common/Makefile
|
||||||
|
+++ xen-4.0.0-testing/xen/common/Makefile
|
||||||
@@ -1,5 +1,6 @@
|
@@ -1,5 +1,6 @@
|
||||||
obj-y += bitmap.o
|
obj-y += bitmap.o
|
||||||
obj-y += cpu.o
|
obj-y += cpu.o
|
||||||
@ -481,8 +501,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
obj-y += domctl.o
|
obj-y += domctl.o
|
||||||
obj-y += domain.o
|
obj-y += domain.o
|
||||||
obj-y += event_channel.o
|
obj-y += event_channel.o
|
||||||
|
Index: xen-4.0.0-testing/xen/common/cpupool.c
|
||||||
|
===================================================================
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/xen/common/cpupool.c
|
+++ xen-4.0.0-testing/xen/common/cpupool.c
|
||||||
@@ -0,0 +1,585 @@
|
@@ -0,0 +1,585 @@
|
||||||
+/******************************************************************************
|
+/******************************************************************************
|
||||||
+ * cpupool.c
|
+ * cpupool.c
|
||||||
@ -1069,8 +1091,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
+ * indent-tabs-mode: nil
|
+ * indent-tabs-mode: nil
|
||||||
+ * End:
|
+ * End:
|
||||||
+ */
|
+ */
|
||||||
--- a/xen/common/domain.c
|
Index: xen-4.0.0-testing/xen/common/domain.c
|
||||||
+++ b/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
|
@@ -209,7 +209,7 @@ static void __init parse_extra_guest_irq
|
||||||
custom_param("extra_guest_irqs", parse_extra_guest_irqs);
|
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);
|
sched_destroy_domain(d);
|
||||||
|
|
||||||
/* Free page used by xen oprofile buffer. */
|
/* Free page used by xen oprofile buffer. */
|
||||||
--- a/xen/common/domctl.c
|
Index: xen-4.0.0-testing/xen/common/domctl.c
|
||||||
+++ b/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 @@
|
@@ -11,6 +11,7 @@
|
||||||
#include <xen/lib.h>
|
#include <xen/lib.h>
|
||||||
#include <xen/mm.h>
|
#include <xen/mm.h>
|
||||||
@ -1176,8 +1202,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
|
|
||||||
if ( alloc_vcpu(d, i, cpu) == NULL )
|
if ( alloc_vcpu(d, i, cpu) == NULL )
|
||||||
goto maxvcpu_out;
|
goto maxvcpu_out;
|
||||||
--- a/xen/common/sched_credit.c
|
Index: xen-4.0.0-testing/xen/common/sched_credit.c
|
||||||
+++ b/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 @@
|
@@ -70,11 +70,15 @@
|
||||||
/*
|
/*
|
||||||
* Useful macros
|
* Useful macros
|
||||||
@ -2066,7 +2094,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
.destroy_vcpu = csched_vcpu_destroy,
|
.destroy_vcpu = csched_vcpu_destroy,
|
||||||
|
|
||||||
.sleep = csched_vcpu_sleep,
|
.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_cpu_state = csched_dump_pcpu,
|
||||||
.dump_settings = csched_dump,
|
.dump_settings = csched_dump,
|
||||||
.init = csched_init,
|
.init = csched_init,
|
||||||
@ -2080,8 +2108,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
|
|
||||||
.tick_suspend = csched_tick_suspend,
|
.tick_suspend = csched_tick_suspend,
|
||||||
.tick_resume = csched_tick_resume,
|
.tick_resume = csched_tick_resume,
|
||||||
--- a/xen/common/sched_sedf.c
|
Index: xen-4.0.0-testing/xen/common/sched_sedf.c
|
||||||
+++ b/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 @@
|
@@ -21,6 +21,9 @@
|
||||||
printk(_a ); \
|
printk(_a ); \
|
||||||
} while ( 0 )
|
} while ( 0 )
|
||||||
@ -2347,7 +2377,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
.name = "Simple EDF Scheduler",
|
.name = "Simple EDF Scheduler",
|
||||||
.opt_name = "sedf",
|
.opt_name = "sedf",
|
||||||
.sched_id = XEN_SCHEDULER_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,
|
.init_domain = sedf_init_domain,
|
||||||
.destroy_domain = sedf_destroy_domain,
|
.destroy_domain = sedf_destroy_domain,
|
||||||
|
|
||||||
@ -2364,8 +2394,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
.do_schedule = sedf_do_schedule,
|
.do_schedule = sedf_do_schedule,
|
||||||
.pick_cpu = sedf_pick_cpu,
|
.pick_cpu = sedf_pick_cpu,
|
||||||
.dump_cpu_state = sedf_dump_cpu_state,
|
.dump_cpu_state = sedf_dump_cpu_state,
|
||||||
--- a/xen/common/schedule.c
|
Index: xen-4.0.0-testing/xen/common/schedule.c
|
||||||
+++ b/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);
|
@@ -53,10 +53,11 @@ static void poll_timer_fn(void *data);
|
||||||
|
|
||||||
/* This is global for now so that private implementations can reach it */
|
/* 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
|
#ifdef CONFIG_COMPAT
|
||||||
--- a/xen/common/softirq.c
|
Index: xen-4.0.0-testing/xen/common/softirq.c
|
||||||
+++ b/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)
|
@@ -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);
|
open_softirq(TASKLET_SOFTIRQ, tasklet_action);
|
||||||
}
|
}
|
||||||
|
|
||||||
--- a/xen/common/sysctl.c
|
Index: xen-4.0.0-testing/xen/common/sysctl.c
|
||||||
+++ b/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
|
@@ -314,6 +314,14 @@ long do_sysctl(XEN_GUEST_HANDLE(xen_sysc
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -2996,8 +3032,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
default:
|
default:
|
||||||
ret = arch_do_sysctl(op, u_sysctl);
|
ret = arch_do_sysctl(op, u_sysctl);
|
||||||
break;
|
break;
|
||||||
--- a/xen/include/asm-x86/domain.h
|
Index: xen-4.0.0-testing/xen/include/asm-x86/domain.h
|
||||||
+++ b/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
|
@@ -451,7 +451,8 @@ struct arch_vcpu
|
||||||
#define hvm_svm hvm_vcpu.u.svm
|
#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_execution_state(struct vcpu *);
|
||||||
void vcpu_show_registers(const struct vcpu *);
|
void vcpu_show_registers(const struct vcpu *);
|
||||||
--- a/xen/include/asm-x86/smp.h
|
Index: xen-4.0.0-testing/xen/include/asm-x86/smp.h
|
||||||
+++ b/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[];
|
@@ -56,7 +56,6 @@ extern u32 cpu_2_logical_apicid[];
|
||||||
#define CPU_ONLINE 0x0002 /* CPU is up */
|
#define CPU_ONLINE 0x0002 /* CPU is up */
|
||||||
#define CPU_DEAD 0x0004 /* CPU is dead */
|
#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))
|
#define cpu_is_offline(cpu) unlikely(!cpu_online(cpu))
|
||||||
extern int cpu_down(unsigned int cpu);
|
extern int cpu_down(unsigned int cpu);
|
||||||
--- a/xen/include/public/domctl.h
|
Index: xen-4.0.0-testing/xen/include/public/domctl.h
|
||||||
+++ b/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 {
|
@@ -60,10 +60,10 @@ struct xen_domctl_createdomain {
|
||||||
/* Should domain memory integrity be verifed by tboot during Sx? */
|
/* Should domain memory integrity be verifed by tboot during Sx? */
|
||||||
#define _XEN_DOMCTL_CDF_s3_integrity 2
|
#define _XEN_DOMCTL_CDF_s3_integrity 2
|
||||||
@ -3048,8 +3090,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
struct xen_domctl {
|
struct xen_domctl {
|
||||||
uint32_t cmd;
|
uint32_t cmd;
|
||||||
#define XEN_DOMCTL_createdomain 1
|
#define XEN_DOMCTL_createdomain 1
|
||||||
--- a/xen/include/public/sysctl.h
|
Index: xen-4.0.0-testing/xen/include/public/sysctl.h
|
||||||
+++ b/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 {
|
@@ -491,6 +491,28 @@ struct xen_sysctl_lockprof_op {
|
||||||
typedef struct xen_sysctl_lockprof_op xen_sysctl_lockprof_op_t;
|
typedef struct xen_sysctl_lockprof_op xen_sysctl_lockprof_op_t;
|
||||||
DEFINE_XEN_GUEST_HANDLE(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];
|
uint8_t pad[128];
|
||||||
} u;
|
} u;
|
||||||
};
|
};
|
||||||
--- a/xen/include/xen/sched-if.h
|
Index: xen-4.0.0-testing/xen/include/xen/sched-if.h
|
||||||
+++ b/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 @@
|
@@ -10,16 +10,29 @@
|
||||||
|
|
||||||
#include <xen/percpu.h>
|
#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);
|
+struct scheduler *scheduler_get_by_id(unsigned int id);
|
||||||
+
|
+
|
||||||
#endif /* __XEN_SCHED_IF_H__ */
|
#endif /* __XEN_SCHED_IF_H__ */
|
||||||
--- a/xen/include/xen/sched.h
|
Index: xen-4.0.0-testing/xen/include/xen/sched.h
|
||||||
+++ b/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 @@
|
@@ -9,6 +9,7 @@
|
||||||
#include <xen/shared.h>
|
#include <xen/shared.h>
|
||||||
#include <public/xen.h>
|
#include <public/xen.h>
|
||||||
@ -3193,7 +3241,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
#include <public/vcpu.h>
|
#include <public/vcpu.h>
|
||||||
#include <public/xsm/acm.h>
|
#include <public/xsm/acm.h>
|
||||||
#include <xen/time.h>
|
#include <xen/time.h>
|
||||||
@@ -132,8 +133,6 @@ struct vcpu
|
@@ -132,8 +133,6 @@ struct vcpu
|
||||||
bool_t defer_shutdown;
|
bool_t defer_shutdown;
|
||||||
/* VCPU is paused following shutdown request (d->is_shutting_down)? */
|
/* VCPU is paused following shutdown request (d->is_shutting_down)? */
|
||||||
bool_t paused_for_shutdown;
|
bool_t paused_for_shutdown;
|
||||||
@ -3265,8 +3313,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
|||||||
#endif /* __SCHED_H__ */
|
#endif /* __SCHED_H__ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
--- a/xen/include/xen/softirq.h
|
Index: xen-4.0.0-testing/xen/include/xen/softirq.h
|
||||||
+++ b/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
|
@@ -58,6 +58,7 @@ struct tasklet
|
||||||
struct tasklet name = { LIST_HEAD_INIT(name.list), 0, 0, 0, func, data }
|
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
|
- bnc#591799 - The status of Caps Lock is incorrect in domU
|
||||||
capslock_enable.patch
|
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
|
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
|
Patch25: 21360-x86-mce-polling-diabled-init.patch
|
||||||
Patch26: 21372-x86-cross-cpu-wait.patch
|
Patch26: 21372-x86-cross-cpu-wait.patch
|
||||||
Patch27: 21373-dummy-domain-io-caps.patch
|
Patch27: 21373-dummy-domain-io-caps.patch
|
||||||
Patch28: 21408-amd-erratum-383.patch
|
Patch28: 21406-x86-microcode-quiet.patch
|
||||||
Patch29: 21459-block-script.patch
|
Patch29: 21408-amd-erratum-383.patch
|
||||||
Patch30: 21460-xend-timeoffset.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
|
# Our patches
|
||||||
Patch300: xen-config.diff
|
Patch300: xen-config.diff
|
||||||
Patch301: xend-config.diff
|
Patch301: xend-config.diff
|
||||||
@ -578,6 +581,9 @@ Authors:
|
|||||||
%patch28 -p1
|
%patch28 -p1
|
||||||
%patch29 -p1
|
%patch29 -p1
|
||||||
%patch30 -p1
|
%patch30 -p1
|
||||||
|
%patch31 -p1
|
||||||
|
%patch32 -p1
|
||||||
|
%patch33 -p1
|
||||||
%patch300 -p1
|
%patch300 -p1
|
||||||
%patch301 -p1
|
%patch301 -p1
|
||||||
%patch302 -p1
|
%patch302 -p1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user