SHA256
1
0
forked from pool/xen

- 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:
Charles Arnold 2010-06-03 16:21:26 +00:00 committed by Git OBS Bridge
parent 986d3927c4
commit ea834665b1
6 changed files with 330 additions and 58 deletions

View File

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

View File

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

View File

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

View File

@ -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 }

View File

@ -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

View File

@ -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