- bnc#636231 - XEN: Unable to disconnect/remove CDROM drive from VM
xend-devid-or-name.patch - Upstream patches from Jan 22019-x86-cpuidle-online-check.patch 22051-x86-forced-EOI.patch 22067-x86-irq-domain.patch 22068-vtd-irte-RH-bit.patch 22071-ept-get-entry-lock.patch 22084-x86-xsave-off.patch - bnc#638465 - hypervisor panic in memory handling heaplock.patch - Update to Xen 4.0.1. This is a bug fix release. OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=73
This commit is contained in:
committed by
Git OBS Bridge
parent
54d3fda8bf
commit
eeeeaf88a6
@@ -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.1-testing/xen/arch/x86/acpi/power.c
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/arch/x86/acpi/power.c
|
||||
+++ xen-4.0.1-testing/xen/arch/x86/acpi/power.c
|
||||
@@ -234,7 +234,7 @@ static int enter_state(u32 state)
|
||||
return error;
|
||||
}
|
||||
@@ -20,9 +22,11 @@ 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
|
||||
@@ -1518,42 +1518,52 @@ void sync_vcpu_execstate(struct vcpu *v)
|
||||
Index: xen-4.0.1-testing/xen/arch/x86/domain.c
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/arch/x86/domain.c
|
||||
+++ xen-4.0.1-testing/xen/arch/x86/domain.c
|
||||
@@ -1522,42 +1522,52 @@ void sync_vcpu_execstate(struct vcpu *v)
|
||||
}
|
||||
|
||||
struct migrate_info {
|
||||
@@ -92,7 +96,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
|
||||
info = v->arch.continue_info;
|
||||
if ( info == NULL )
|
||||
@@ -1562,16 +1572,12 @@ int continue_hypercall_on_cpu(int cpu, l
|
||||
@@ -1566,16 +1576,12 @@ int continue_hypercall_on_cpu(int cpu, l
|
||||
if ( info == NULL )
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -113,7 +117,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
|
||||
v->arch.schedule_tail = continue_hypercall_on_cpu_helper;
|
||||
v->arch.continue_info = info;
|
||||
@@ -1579,17 +1585,17 @@ int continue_hypercall_on_cpu(int cpu, l
|
||||
@@ -1583,17 +1589,17 @@ int continue_hypercall_on_cpu(int cpu, l
|
||||
else
|
||||
{
|
||||
BUG_ON(info->nest != 0);
|
||||
@@ -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.1-testing/xen/arch/x86/domain_build.c
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/arch/x86/domain_build.c
|
||||
+++ xen-4.0.1-testing/xen/arch/x86/domain_build.c
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <xen/lib.h>
|
||||
#include <xen/ctype.h>
|
||||
@@ -177,8 +183,10 @@ 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
|
||||
Index: xen-4.0.1-testing/xen/arch/x86/microcode.c
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/arch/x86/microcode.c
|
||||
+++ xen-4.0.1-testing/xen/arch/x86/microcode.c
|
||||
@@ -114,7 +114,7 @@ static int microcode_update_cpu(const vo
|
||||
return err;
|
||||
}
|
||||
@@ -206,9 +214,11 @@ 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
|
||||
@@ -242,7 +242,7 @@ void __init arch_init_memory(void)
|
||||
Index: xen-4.0.1-testing/xen/arch/x86/mm.c
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/arch/x86/mm.c
|
||||
+++ xen-4.0.1-testing/xen/arch/x86/mm.c
|
||||
@@ -243,7 +243,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.
|
||||
*/
|
||||
@@ -217,7 +227,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
BUG_ON(dom_xen == NULL);
|
||||
|
||||
/*
|
||||
@@ -250,14 +250,14 @@ void __init arch_init_memory(void)
|
||||
@@ -251,14 +251,14 @@ void __init arch_init_memory(void)
|
||||
* This domain owns I/O pages that are within the range of the page_info
|
||||
* array. Mappings occur at the priv of the caller.
|
||||
*/
|
||||
@@ -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.1-testing/xen/arch/x86/platform_hypercall.c
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/arch/x86/platform_hypercall.c
|
||||
+++ xen-4.0.1-testing/xen/arch/x86/platform_hypercall.c
|
||||
@@ -19,6 +19,7 @@
|
||||
#include <xen/iocap.h>
|
||||
#include <xen/guest_access.h>
|
||||
@@ -268,7 +280,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
cpu_frequency_change_helper,
|
||||
NULL);
|
||||
break;
|
||||
@@ -403,7 +404,7 @@ ret_t do_platform_op(XEN_GUEST_HANDLE(xe
|
||||
@@ -406,7 +407,7 @@ ret_t do_platform_op(XEN_GUEST_HANDLE(xe
|
||||
g_info = &op->u.pcpu_info;
|
||||
|
||||
/* spin_trylock() avoids deadlock with stop_machine_run(). */
|
||||
@@ -277,7 +289,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
{
|
||||
ret = -EBUSY;
|
||||
break;
|
||||
@@ -426,7 +427,7 @@ ret_t do_platform_op(XEN_GUEST_HANDLE(xe
|
||||
@@ -429,7 +430,7 @@ ret_t do_platform_op(XEN_GUEST_HANDLE(xe
|
||||
|
||||
g_info->max_present = last_cpu(cpu_present_map);
|
||||
|
||||
@@ -286,7 +298,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
|
||||
ret = copy_to_guest(u_xenpf_op, op, 1) ? -EFAULT : 0;
|
||||
}
|
||||
@@ -467,7 +468,7 @@ ret_t do_platform_op(XEN_GUEST_HANDLE(xe
|
||||
@@ -470,7 +471,7 @@ ret_t do_platform_op(XEN_GUEST_HANDLE(xe
|
||||
break;
|
||||
}
|
||||
ret = continue_hypercall_on_cpu(
|
||||
@@ -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.1-testing/xen/arch/x86/setup.c
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/arch/x86/setup.c
|
||||
+++ xen-4.0.1-testing/xen/arch/x86/setup.c
|
||||
@@ -2,6 +2,7 @@
|
||||
#include <xen/init.h>
|
||||
#include <xen/lib.h>
|
||||
@@ -314,7 +328,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
if ( idle_domain == NULL )
|
||||
BUG();
|
||||
idle_domain->vcpu = idle_vcpu;
|
||||
@@ -1097,8 +1098,13 @@ void __init __start_xen(unsigned long mb
|
||||
@@ -1122,8 +1123,13 @@ void __init __start_xen(unsigned long mb
|
||||
if ( !tboot_protect_mem_regions() )
|
||||
panic("Could not protect TXT memory regions\n");
|
||||
|
||||
@@ -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.1-testing/xen/arch/x86/smpboot.c
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/arch/x86/smpboot.c
|
||||
+++ xen-4.0.1-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.1-testing/xen/arch/x86/sysctl.c
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/arch/x86/sysctl.c
|
||||
+++ xen-4.0.1-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.1-testing/xen/common/Makefile
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/common/Makefile
|
||||
+++ xen-4.0.1-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.1-testing/xen/common/cpupool.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ b/xen/common/cpupool.c
|
||||
+++ xen-4.0.1-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.1-testing/xen/common/domain.c
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/common/domain.c
|
||||
+++ xen-4.0.1-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);
|
||||
|
||||
@@ -1080,7 +1104,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
{
|
||||
struct domain *d, **pd;
|
||||
enum { INIT_xsm = 1u<<0, INIT_rangeset = 1u<<1, INIT_evtchn = 1u<<2,
|
||||
@@ -290,6 +290,9 @@ struct domain *domain_create(
|
||||
@@ -292,6 +292,9 @@ struct domain *domain_create(
|
||||
goto fail;
|
||||
init_status |= INIT_arch;
|
||||
|
||||
@@ -1090,7 +1114,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
if ( sched_init_domain(d) != 0 )
|
||||
goto fail;
|
||||
|
||||
@@ -597,6 +600,8 @@ static void complete_domain_destroy(stru
|
||||
@@ -603,6 +606,8 @@ static void complete_domain_destroy(stru
|
||||
|
||||
rangeset_domain_destroy(d);
|
||||
|
||||
@@ -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.1-testing/xen/common/domctl.c
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/common/domctl.c
|
||||
+++ xen-4.0.1-testing/xen/common/domctl.c
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <xen/lib.h>
|
||||
#include <xen/mm.h>
|
||||
@@ -1109,7 +1135,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
#include <xen/domain.h>
|
||||
#include <xen/event.h>
|
||||
#include <xen/domain_page.h>
|
||||
@@ -140,10 +141,12 @@ void getdomaininfo(struct domain *d, str
|
||||
@@ -141,10 +142,12 @@ void getdomaininfo(struct domain *d, str
|
||||
info->shared_info_frame = mfn_to_gmfn(d, __pa(d->shared_info)>>PAGE_SHIFT);
|
||||
BUG_ON(SHARED_M2P(info->shared_info_frame));
|
||||
|
||||
@@ -1123,7 +1149,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
{
|
||||
struct domain *d;
|
||||
struct vcpu *v;
|
||||
@@ -173,7 +176,7 @@ static unsigned int default_vcpu0_locati
|
||||
@@ -174,7 +177,7 @@ static unsigned int default_vcpu0_locati
|
||||
if ( cpus_weight(per_cpu(cpu_sibling_map, 0)) > 1 )
|
||||
cpu = next_cpu(cpu, per_cpu(cpu_sibling_map, 0));
|
||||
cpu_exclude_map = per_cpu(cpu_sibling_map, 0);
|
||||
@@ -1132,7 +1158,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
{
|
||||
if ( cpu_isset(i, cpu_exclude_map) )
|
||||
continue;
|
||||
@@ -388,6 +391,7 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc
|
||||
@@ -389,6 +392,7 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc
|
||||
domid_t dom;
|
||||
static domid_t rover = 0;
|
||||
unsigned int domcr_flags;
|
||||
@@ -1140,7 +1166,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
|
||||
ret = -EINVAL;
|
||||
if ( supervisor_mode_kernel ||
|
||||
@@ -431,7 +435,7 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc
|
||||
@@ -432,7 +436,7 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc
|
||||
domcr_flags |= DOMCRF_oos_off;
|
||||
|
||||
ret = -ENOMEM;
|
||||
@@ -1149,7 +1175,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
if ( d == NULL )
|
||||
break;
|
||||
|
||||
@@ -450,6 +454,7 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc
|
||||
@@ -451,6 +455,7 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc
|
||||
{
|
||||
struct domain *d;
|
||||
unsigned int i, max = op->u.max_vcpus.max, cpu;
|
||||
@@ -1157,7 +1183,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
|
||||
ret = -ESRCH;
|
||||
if ( (d = rcu_lock_domain_by_id(op->domain)) == NULL )
|
||||
@@ -498,6 +503,7 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc
|
||||
@@ -499,6 +504,7 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc
|
||||
goto maxvcpu_out;
|
||||
|
||||
ret = -ENOMEM;
|
||||
@@ -1165,7 +1191,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
if ( max > d->max_vcpus )
|
||||
{
|
||||
struct vcpu **vcpus;
|
||||
@@ -521,8 +527,8 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc
|
||||
@@ -522,8 +528,8 @@ long do_domctl(XEN_GUEST_HANDLE(xen_domc
|
||||
continue;
|
||||
|
||||
cpu = (i == 0) ?
|
||||
@@ -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/kexec.c
|
||||
+++ b/xen/common/kexec.c
|
||||
Index: xen-4.0.1-testing/xen/common/kexec.c
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/common/kexec.c
|
||||
+++ xen-4.0.1-testing/xen/common/kexec.c
|
||||
@@ -235,7 +235,7 @@ void kexec_crash(void)
|
||||
BUG();
|
||||
}
|
||||
@@ -1196,8 +1224,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
break;
|
||||
case KEXEC_TYPE_CRASH:
|
||||
kexec_crash(); /* Does not return */
|
||||
--- a/xen/common/sched_credit.c
|
||||
+++ b/xen/common/sched_credit.c
|
||||
Index: xen-4.0.1-testing/xen/common/sched_credit.c
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/common/sched_credit.c
|
||||
+++ xen-4.0.1-testing/xen/common/sched_credit.c
|
||||
@@ -70,11 +70,15 @@
|
||||
/*
|
||||
* Useful macros
|
||||
@@ -2086,7 +2116,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,
|
||||
@@ -2100,8 +2130,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.1-testing/xen/common/sched_sedf.c
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/common/sched_sedf.c
|
||||
+++ xen-4.0.1-testing/xen/common/sched_sedf.c
|
||||
@@ -21,6 +21,9 @@
|
||||
printk(_a ); \
|
||||
} while ( 0 )
|
||||
@@ -2367,7 +2399,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,
|
||||
|
||||
@@ -2384,8 +2416,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.1-testing/xen/common/schedule.c
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/common/schedule.c
|
||||
+++ xen-4.0.1-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 */
|
||||
@@ -2696,7 +2730,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
/* Block the currently-executing domain until a pertinent event occurs. */
|
||||
static long do_block(void)
|
||||
{
|
||||
@@ -762,7 +840,7 @@ long sched_adjust(struct domain *d, stru
|
||||
@@ -783,7 +861,7 @@ long sched_adjust(struct domain *d, stru
|
||||
struct vcpu *v;
|
||||
long ret;
|
||||
|
||||
@@ -2705,7 +2739,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
((op->cmd != XEN_DOMCTL_SCHEDOP_putinfo) &&
|
||||
(op->cmd != XEN_DOMCTL_SCHEDOP_getinfo)) )
|
||||
return -EINVAL;
|
||||
@@ -789,7 +867,7 @@ long sched_adjust(struct domain *d, stru
|
||||
@@ -810,7 +888,7 @@ long sched_adjust(struct domain *d, stru
|
||||
if ( d == current->domain )
|
||||
vcpu_schedule_lock_irq(current);
|
||||
|
||||
@@ -2714,7 +2748,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
TRACE_1D(TRC_SCHED_ADJDOM, d->domain_id);
|
||||
|
||||
if ( d == current->domain )
|
||||
@@ -836,6 +914,7 @@ static void schedule(void)
|
||||
@@ -857,6 +935,7 @@ static void schedule(void)
|
||||
{
|
||||
struct vcpu *prev = current, *next = NULL;
|
||||
s_time_t now = NOW();
|
||||
@@ -2722,7 +2756,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
struct schedule_data *sd;
|
||||
struct task_slice next_slice;
|
||||
|
||||
@@ -851,7 +930,7 @@ static void schedule(void)
|
||||
@@ -872,7 +951,7 @@ static void schedule(void)
|
||||
stop_timer(&sd->s_timer);
|
||||
|
||||
/* get policy-specific decision on scheduling... */
|
||||
@@ -2731,7 +2765,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
|
||||
next = next_slice.task;
|
||||
|
||||
@@ -951,6 +1030,19 @@ static void poll_timer_fn(void *data)
|
||||
@@ -978,6 +1057,19 @@ static void poll_timer_fn(void *data)
|
||||
vcpu_unblock(v);
|
||||
}
|
||||
|
||||
@@ -2751,7 +2785,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
/* Initialise the data structures. */
|
||||
void __init scheduler_init(void)
|
||||
{
|
||||
@@ -958,12 +1050,6 @@ void __init scheduler_init(void)
|
||||
@@ -985,12 +1077,6 @@ void __init scheduler_init(void)
|
||||
|
||||
open_softirq(SCHEDULE_SOFTIRQ, schedule);
|
||||
|
||||
@@ -2764,7 +2798,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
for ( i = 0; schedulers[i] != NULL; i++ )
|
||||
{
|
||||
ops = *schedulers[i];
|
||||
@@ -977,43 +1063,123 @@ void __init scheduler_init(void)
|
||||
@@ -1004,43 +1090,123 @@ void __init scheduler_init(void)
|
||||
ops = *schedulers[0];
|
||||
}
|
||||
|
||||
@@ -2904,8 +2938,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.1-testing/xen/common/softirq.c
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/common/softirq.c
|
||||
+++ xen-4.0.1-testing/xen/common/softirq.c
|
||||
@@ -88,9 +88,11 @@ void raise_softirq(unsigned int nr)
|
||||
}
|
||||
|
||||
@@ -2999,8 +3035,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.1-testing/xen/common/sysctl.c
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/common/sysctl.c
|
||||
+++ xen-4.0.1-testing/xen/common/sysctl.c
|
||||
@@ -314,6 +314,14 @@ long do_sysctl(XEN_GUEST_HANDLE(xen_sysc
|
||||
}
|
||||
break;
|
||||
@@ -3016,9 +3054,11 @@ 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
|
||||
@@ -451,7 +451,8 @@ struct arch_vcpu
|
||||
Index: xen-4.0.1-testing/xen/include/asm-x86/domain.h
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/include/asm-x86/domain.h
|
||||
+++ xen-4.0.1-testing/xen/include/asm-x86/domain.h
|
||||
@@ -458,7 +458,8 @@ struct arch_vcpu
|
||||
#define hvm_svm hvm_vcpu.u.svm
|
||||
|
||||
/* Continue the current hypercall via func(data) on specified cpu. */
|
||||
@@ -3028,8 +3068,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.1-testing/xen/include/asm-x86/smp.h
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/include/asm-x86/smp.h
|
||||
+++ xen-4.0.1-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 */
|
||||
@@ -3038,8 +3080,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.1-testing/xen/include/public/domctl.h
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/include/public/domctl.h
|
||||
+++ xen-4.0.1-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
|
||||
@@ -3068,8 +3112,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.1-testing/xen/include/public/sysctl.h
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/include/public/sysctl.h
|
||||
+++ xen-4.0.1-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);
|
||||
@@ -3107,8 +3153,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.1-testing/xen/include/xen/sched-if.h
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/include/xen/sched-if.h
|
||||
+++ xen-4.0.1-testing/xen/include/xen/sched-if.h
|
||||
@@ -10,16 +10,29 @@
|
||||
|
||||
#include <xen/percpu.h>
|
||||
@@ -3203,8 +3251,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.1-testing/xen/include/xen/sched.h
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/include/xen/sched.h
|
||||
+++ xen-4.0.1-testing/xen/include/xen/sched.h
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <xen/shared.h>
|
||||
#include <public/xen.h>
|
||||
@@ -3213,7 +3263,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;
|
||||
@@ -3222,7 +3272,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
|
||||
/*
|
||||
* > 0: a single port is being polled;
|
||||
@@ -211,6 +210,7 @@ struct domain
|
||||
@@ -209,6 +208,7 @@ struct domain
|
||||
|
||||
/* Scheduling. */
|
||||
void *sched_priv; /* scheduler-specific data */
|
||||
@@ -3230,7 +3280,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
|
||||
struct domain *next_in_list;
|
||||
struct domain *next_in_hashbucket;
|
||||
@@ -383,7 +383,7 @@ static inline struct domain *get_current
|
||||
@@ -381,7 +381,7 @@ static inline struct domain *get_current
|
||||
}
|
||||
|
||||
struct domain *domain_create(
|
||||
@@ -3239,7 +3289,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
/* DOMCRF_hvm: Create an HVM domain, as opposed to a PV domain. */
|
||||
#define _DOMCRF_hvm 0
|
||||
#define DOMCRF_hvm (1U<<_DOMCRF_hvm)
|
||||
@@ -471,6 +471,7 @@ int sched_init_vcpu(struct vcpu *v, uns
|
||||
@@ -469,6 +469,7 @@ int sched_init_vcpu(struct vcpu *v, uns
|
||||
void sched_destroy_vcpu(struct vcpu *v);
|
||||
int sched_init_domain(struct domain *d);
|
||||
void sched_destroy_domain(struct domain *d);
|
||||
@@ -3247,7 +3297,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
long sched_adjust(struct domain *, struct xen_domctl_scheduler_op *);
|
||||
int sched_id(void);
|
||||
void sched_tick_suspend(void);
|
||||
@@ -578,12 +579,14 @@ void domain_pause_by_systemcontroller(st
|
||||
@@ -576,12 +577,14 @@ void domain_pause_by_systemcontroller(st
|
||||
void domain_unpause_by_systemcontroller(struct domain *d);
|
||||
void cpu_init(void);
|
||||
|
||||
@@ -3266,7 +3316,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
|
||||
void vcpu_runstate_get(struct vcpu *v, struct vcpu_runstate_info *runstate);
|
||||
uint64_t get_cpu_idle_time(unsigned int cpu);
|
||||
@@ -606,6 +609,18 @@ extern enum cpufreq_controller {
|
||||
@@ -604,6 +607,18 @@ extern enum cpufreq_controller {
|
||||
FREQCTL_none, FREQCTL_dom0_kernel, FREQCTL_xen
|
||||
} cpufreq_controller;
|
||||
|
||||
@@ -3285,8 +3335,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.1-testing/xen/include/xen/softirq.h
|
||||
===================================================================
|
||||
--- xen-4.0.1-testing.orig/xen/include/xen/softirq.h
|
||||
+++ xen-4.0.1-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 }
|
||||
|
||||
|
Reference in New Issue
Block a user