Accepting request 38078 from Virtualization
checked in (request 38078) OBS-URL: https://build.opensuse.org/request/show/38078 OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=41
This commit is contained in:
parent
f46075e596
commit
ce2ee9452b
@ -1,106 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Keir Fraser <keir.fraser@citrix.com>
|
||||
# Date 1270026749 -3600
|
||||
# Node ID 4f796e29987c0db1579787fe0b7d3d5af00963ea
|
||||
# Parent 589d075ba2953123c1b39ecdbc190689ac6f443c
|
||||
x86: start PCI IRQs Xen uses from Dom0-invoked io_apic_set_pci_routing()
|
||||
|
||||
When using a serial port from an add-in PCI card, and that IRQ is (as
|
||||
usual) outside of the legacy range (0...15), Xen would never really
|
||||
enable the IRQ, as at the time setup_irq() runs the handler for the
|
||||
IRQ still is &no_irq_type. Consequently, once the trigger mode and
|
||||
polarity of the interrupt become known to Xen, it should start such
|
||||
IRQ(s) it uses for itself.
|
||||
|
||||
The question is whether the same should also be done in
|
||||
ioapic_guest_write(): Legacy kernels don't use PHYSDEVOP_setup_gsi
|
||||
(and hence don't trigger the code path modified).
|
||||
|
||||
Note however that even when a kernel is using PHYSDEVOP_setup_gsi in
|
||||
the way the pv-ops kernel currently does, there's still no guarantee
|
||||
that the call would ever be issued for IRQs Xen may be using, since
|
||||
this happens only when devices get enabled. For Xen's purposes, this
|
||||
function should be called for *all* device IRQs, regardless of
|
||||
whether those would actually be (attempted to be) used by the kernel,
|
||||
i.e. in a subsys_initcall() from drivers/acpi/pci_irq.c iterating
|
||||
over all PCI devices and doing mostly what acpi_pci_irq_enable() does
|
||||
except for calling this function in place of acpi_register_gsi(). The
|
||||
downside of this approach is that without extra filtering in Xen
|
||||
(based on a hint from Dom0), vectors will then get up even for IRQs
|
||||
that are unused by both hypervisor and kernel.
|
||||
|
||||
Signed-off-by: Jan Beulich <jbeulich@novell.com>
|
||||
|
||||
# HG changeset patch
|
||||
# User Keir Fraser <keir.fraser@citrix.com>
|
||||
# Date 1271090214 -3600
|
||||
# Node ID 7eeb131880b20a33e7675cc1726ae312a489be2d
|
||||
# Parent b65a41dc6c6a2e2341ae778d8386a08d502bbfa4
|
||||
Fix bug in 21089:4f796e29987c
|
||||
|
||||
Signed-off-by: Jan Beulich <jbeulich@novell.com>
|
||||
|
||||
# HG changeset patch
|
||||
# User Keir Fraser <keir.fraser@citrix.com>
|
||||
# Date 1271169507 -3600
|
||||
# Node ID 0bebb5fa4f051df9b4fed4d11a723fae91bc7523
|
||||
# Parent 859a372efa66e6bcba8e1fd968e521cb16da12ea
|
||||
Make c/s 21089 work again with c/s 21092
|
||||
|
||||
Unfortunately the latter c/s' change to mpparse.c yielded the former
|
||||
patch non-functional - Xen's serial port IRQ is not in IQR_DISABLED
|
||||
state, yet must be allowed to get its trigger mode and polarity set
|
||||
up in order for it to be usable.
|
||||
|
||||
Signed-off-by: Jan Beulich <jbeulich@novell.com>
|
||||
|
||||
--- a/xen/arch/x86/io_apic.c
|
||||
+++ b/xen/arch/x86/io_apic.c
|
||||
@@ -2111,6 +2111,7 @@ int __init io_apic_get_redir_entries (in
|
||||
|
||||
int io_apic_set_pci_routing (int ioapic, int pin, int irq, int edge_level, int active_high_low)
|
||||
{
|
||||
+ struct irq_desc *desc = irq_to_desc(irq);
|
||||
struct IO_APIC_route_entry entry;
|
||||
unsigned long flags;
|
||||
int vector;
|
||||
@@ -2162,7 +2163,12 @@ int io_apic_set_pci_routing (int ioapic,
|
||||
io_apic_write(ioapic, 0x11+2*pin, *(((int *)&entry)+1));
|
||||
io_apic_write(ioapic, 0x10+2*pin, *(((int *)&entry)+0));
|
||||
set_native_irq_info(irq, TARGET_CPUS);
|
||||
- spin_unlock_irqrestore(&ioapic_lock, flags);
|
||||
+ spin_unlock(&ioapic_lock);
|
||||
+
|
||||
+ spin_lock(&desc->lock);
|
||||
+ if (!(desc->status & (IRQ_DISABLED | IRQ_GUEST)))
|
||||
+ desc->handler->startup(irq);
|
||||
+ spin_unlock_irqrestore(&desc->lock, flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
--- a/xen/arch/x86/mpparse.c
|
||||
+++ b/xen/arch/x86/mpparse.c
|
||||
@@ -1103,6 +1103,8 @@ int mp_register_gsi (u32 gsi, int trigge
|
||||
int ioapic = -1;
|
||||
int ioapic_pin = 0;
|
||||
int idx, bit = 0;
|
||||
+ struct irq_desc * desc;
|
||||
+ unsigned long flags;
|
||||
|
||||
/*
|
||||
* Mapping between Global System Interrups, which
|
||||
@@ -1127,8 +1129,13 @@ int mp_register_gsi (u32 gsi, int trigge
|
||||
if (ioapic_renumber_irq)
|
||||
gsi = ioapic_renumber_irq(ioapic, gsi);
|
||||
|
||||
- if (!(irq_to_desc(gsi)->status & IRQ_DISABLED))
|
||||
+ desc = irq_to_desc(gsi);
|
||||
+ spin_lock_irqsave(&desc->lock, flags);
|
||||
+ if (!(desc->status & IRQ_DISABLED) && desc->handler != &no_irq_type) {
|
||||
+ spin_unlock_irqrestore(&desc->lock, flags);
|
||||
return -EEXIST;
|
||||
+ }
|
||||
+ spin_unlock_irqrestore(&desc->lock, flags);
|
||||
|
||||
/*
|
||||
* Avoid pin reprogramming. PRTs typically include entries
|
@ -1,154 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Keir Fraser <keir.fraser@citrix.com>
|
||||
# Date 1270624140 -3600
|
||||
# Node ID 7794f61c61f3b0c90e367a87b287850b31645742
|
||||
# Parent adce8bc43fcccf8730b1da962be60c457c51fa1b
|
||||
x86, cpu hotplug: Synchronise vcpu state earlier during cpu offline.
|
||||
|
||||
Needs to happen before non-idle VCPU is fully descheduled after CPU is
|
||||
removed from cpu_online_map. Else sync_vcpu_execstate() doesn't work
|
||||
properly.
|
||||
|
||||
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
|
||||
|
||||
# HG changeset patch
|
||||
# User Keir Fraser <keir.fraser@citrix.com>
|
||||
# Date 1270737112 -3600
|
||||
# Node ID c9e8369e49be7396eca444cfce27e6782e4aa248
|
||||
# Parent a33909be109cefb0aef251c7c7e48168ed05512a
|
||||
Fix two issues for CPU online/offline.
|
||||
|
||||
Firstly, we should return if we fail to get spin lock in cpu_down.
|
||||
Secondly, in credit scheduler, the idlers need be limited only to
|
||||
online map.
|
||||
|
||||
Signed-off-by: Jiang, Yunhong <yunhong.jiang@intel.com>
|
||||
|
||||
# HG changeset patch
|
||||
# User Keir Fraser <keir.fraser@citrix.com>
|
||||
# Date 1271090027 -3600
|
||||
# Node ID 5d4038d41fd894f9fc71e64043d559d7c465bd15
|
||||
# Parent 1d3bec66528900b1b442b6d36f24cd35ca076506
|
||||
cpufreq: fix racing issue for cpu hotplug
|
||||
|
||||
To eliminate racing between dbs timer handler and cpufreq_del_cpu,
|
||||
using kill_timer instead of stop_timer to make sure timer handler
|
||||
execution finished before other stuff in cpufreq_del_cpu.
|
||||
|
||||
BTW, fix a lost point of cpufreq_statistic_lock taking sequence.
|
||||
|
||||
Signed-off-by: Wei Gang <gang.wei@intel.com>
|
||||
|
||||
--- a/xen/arch/x86/domain.c
|
||||
+++ b/xen/arch/x86/domain.c
|
||||
@@ -1442,7 +1442,8 @@ void context_switch(struct vcpu *prev, s
|
||||
|
||||
set_current(next);
|
||||
|
||||
- if ( (per_cpu(curr_vcpu, cpu) == next) || is_idle_vcpu(next) )
|
||||
+ if ( (per_cpu(curr_vcpu, cpu) == next) ||
|
||||
+ (is_idle_vcpu(next) && cpu_online(cpu)) )
|
||||
{
|
||||
local_irq_enable();
|
||||
}
|
||||
--- a/xen/arch/x86/smpboot.c
|
||||
+++ b/xen/arch/x86/smpboot.c
|
||||
@@ -997,17 +997,13 @@ static int __devinit do_boot_cpu(int api
|
||||
return boot_error;
|
||||
}
|
||||
|
||||
-static void idle_task_exit(void)
|
||||
-{
|
||||
- /* Give up lazy state borrowed by this idle vcpu */
|
||||
- __sync_lazy_execstate();
|
||||
-}
|
||||
-
|
||||
void cpu_exit_clear(void)
|
||||
{
|
||||
int cpu = raw_smp_processor_id();
|
||||
|
||||
- idle_task_exit();
|
||||
+ /* Previous non-idle state should be synchronised already. */
|
||||
+ if (__sync_lazy_execstate())
|
||||
+ BUG();
|
||||
|
||||
cpucount --;
|
||||
cpu_uninit();
|
||||
@@ -1302,6 +1298,13 @@ int __cpu_disable(void)
|
||||
|
||||
remove_siblinginfo(cpu);
|
||||
|
||||
+ /*
|
||||
+ * If we are running the idle vcpu, sync last non-idle vcpu's state
|
||||
+ * before changing cpu_online_map. If we are running non-idle vcpu,
|
||||
+ * we will synchronously sync the state in context_switch() later.
|
||||
+ */
|
||||
+ __sync_lazy_execstate();
|
||||
+
|
||||
/* It's now safe to remove this processor from the online map */
|
||||
cpu_clear(cpu, cpu_online_map);
|
||||
fixup_irqs();
|
||||
@@ -1340,10 +1343,8 @@ int cpu_down(unsigned int cpu)
|
||||
int err = 0;
|
||||
|
||||
/* spin_trylock() avoids deadlock with stop_machine_run(). */
|
||||
- if (!spin_trylock(&cpu_add_remove_lock)) {
|
||||
- err = -EBUSY;
|
||||
- goto out;
|
||||
- }
|
||||
+ if (!spin_trylock(&cpu_add_remove_lock))
|
||||
+ return -EBUSY;
|
||||
|
||||
if (num_online_cpus() == 1) {
|
||||
err = -EBUSY;
|
||||
--- a/xen/common/sched_credit.c
|
||||
+++ b/xen/common/sched_credit.c
|
||||
@@ -410,7 +410,7 @@ _csched_cpu_pick(struct vcpu *vc, bool_t
|
||||
* like run two VCPUs on co-hyperthreads while there are idle cores
|
||||
* or sockets.
|
||||
*/
|
||||
- idlers = csched_priv.idlers;
|
||||
+ cpus_and(idlers, cpu_online_map, csched_priv.idlers);
|
||||
cpu_set(cpu, idlers);
|
||||
cpus_and(cpus, cpus, idlers);
|
||||
cpu_clear(cpu, cpus);
|
||||
--- a/xen/drivers/acpi/pmstat.c
|
||||
+++ b/xen/drivers/acpi/pmstat.c
|
||||
@@ -86,12 +86,13 @@ int do_get_pm_info(struct xen_sysctl_get
|
||||
case PMSTAT_get_pxstat:
|
||||
{
|
||||
uint32_t ct;
|
||||
- struct pm_px *pxpt = cpufreq_statistic_data[op->cpuid];
|
||||
+ struct pm_px *pxpt;
|
||||
spinlock_t *cpufreq_statistic_lock =
|
||||
&per_cpu(cpufreq_statistic_lock, op->cpuid);
|
||||
|
||||
spin_lock(cpufreq_statistic_lock);
|
||||
|
||||
+ pxpt = cpufreq_statistic_data[op->cpuid];
|
||||
if ( !pxpt || !pxpt->u.pt || !pxpt->u.trans_pt )
|
||||
{
|
||||
spin_unlock(cpufreq_statistic_lock);
|
||||
--- a/xen/drivers/cpufreq/cpufreq_ondemand.c
|
||||
+++ b/xen/drivers/cpufreq/cpufreq_ondemand.c
|
||||
@@ -196,9 +196,8 @@ static void dbs_timer_init(struct cpu_db
|
||||
{
|
||||
dbs_info->enable = 1;
|
||||
|
||||
- if ( !dbs_timer[dbs_info->cpu].function )
|
||||
- init_timer(&dbs_timer[dbs_info->cpu], do_dbs_timer,
|
||||
- (void *)dbs_info, dbs_info->cpu);
|
||||
+ init_timer(&dbs_timer[dbs_info->cpu], do_dbs_timer,
|
||||
+ (void *)dbs_info, dbs_info->cpu);
|
||||
|
||||
set_timer(&dbs_timer[dbs_info->cpu], NOW()+dbs_tuners_ins.sampling_rate);
|
||||
|
||||
@@ -213,7 +212,7 @@ static void dbs_timer_exit(struct cpu_db
|
||||
{
|
||||
dbs_info->enable = 0;
|
||||
dbs_info->stoppable = 0;
|
||||
- stop_timer(&dbs_timer[dbs_info->cpu]);
|
||||
+ kill_timer(&dbs_timer[dbs_info->cpu]);
|
||||
}
|
||||
|
||||
int cpufreq_governor_dbs(struct cpufreq_policy *policy, unsigned int event)
|
@ -1,31 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Keir Fraser <keir.fraser@citrix.com>
|
||||
# Date 1271053336 -3600
|
||||
# Node ID b5f9c6274d917db5bbe6cb9cc0d59910cc07a8a6
|
||||
# Parent 5bc70100b514d98bd3938cdeca1e182726c26df2
|
||||
libxc: Flush I/O before xc_domain_save completion
|
||||
|
||||
The final, flushing call to discard_file_cache also discards any
|
||||
errors from fsync. Call fsync explicitly before leaving, to check if
|
||||
all VM memory actually made it to the disk.
|
||||
|
||||
Signed-off-by: Daniel Stodden <daniel.stodden@citrix.com>
|
||||
|
||||
Index: xen-4.0.0-testing/tools/libxc/xc_domain_save.c
|
||||
===================================================================
|
||||
--- xen-4.0.0-testing.orig/tools/libxc/xc_domain_save.c
|
||||
+++ xen-4.0.0-testing/tools/libxc/xc_domain_save.c
|
||||
@@ -1764,6 +1764,13 @@ int xc_domain_save(int xc_handle, int io
|
||||
goto out;
|
||||
}
|
||||
|
||||
+ /* Flush last write and check for errors. */
|
||||
+ if ( fsync(io_fd) && errno != EINVAL )
|
||||
+ {
|
||||
+ PERROR("Error when flushing state file");
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
/* Success! */
|
||||
rc = 0;
|
||||
|
@ -1,68 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Keir Fraser <keir.fraser@citrix.com>
|
||||
# Date 1271091116 -3600
|
||||
# Node ID 78488a63bbc200095413824cc146134b54635da9
|
||||
# Parent b010b792c0f814de725f669d8a6bee738df68963
|
||||
x86, shadow: Fix read-to-use race condition
|
||||
|
||||
If OOS mode is enabled, after last possible resync, read the guest l1e
|
||||
one last time. If it's different than the original read, start over
|
||||
again.
|
||||
|
||||
This fixes a race which can result in inconsistent in-sync shadow
|
||||
tables, leading to corruption:
|
||||
|
||||
v1: take page fault, read gl1e from an out-of-sync PT.
|
||||
v2: modify gl1e, lowering permissions
|
||||
[v1,v3]: resync l1 which was just read.
|
||||
v1: propagate change to l1 shadow using stale gl1e
|
||||
|
||||
Now we have an in-sync shadow with more permissions than the guest.
|
||||
|
||||
The resync can happen either as a result of a 3rd vcpu doing a cr3
|
||||
update, or under certain conditions by v1 itself.
|
||||
|
||||
Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
|
||||
|
||||
--- a/xen/arch/x86/mm/shadow/multi.c
|
||||
+++ b/xen/arch/x86/mm/shadow/multi.c
|
||||
@@ -240,6 +240,23 @@ shadow_check_gwalk(struct vcpu *v, unsig
|
||||
return !mismatch;
|
||||
}
|
||||
|
||||
+static int
|
||||
+shadow_check_gl1e(struct vcpu *v, walk_t *gw)
|
||||
+{
|
||||
+ guest_l1e_t *l1p, nl1e;
|
||||
+
|
||||
+ if ( !mfn_valid(gw->l1mfn) )
|
||||
+ return 0;
|
||||
+
|
||||
+ /* Can't just pull-through because mfn may have changed */
|
||||
+ l1p = map_domain_page(mfn_x(gw->l1mfn));
|
||||
+ nl1e.l1 = l1p[guest_l1_table_offset(gw->va)].l1;
|
||||
+ unmap_domain_page(l1p);
|
||||
+
|
||||
+ return gw->l1e.l1 != nl1e.l1;
|
||||
+}
|
||||
+
|
||||
+
|
||||
/* Remove write access permissions from a gwalk_t in a batch, and
|
||||
* return OR-ed result for TLB flush hint and need to rewalk the guest
|
||||
* pages.
|
||||
@@ -3235,6 +3252,15 @@ static int sh_page_fault(struct vcpu *v,
|
||||
shadow_unlock(d);
|
||||
return 0;
|
||||
}
|
||||
+
|
||||
+ /* Final check: if someone has synced a page, it's possible that
|
||||
+ * our l1e is stale. Compare the entries, and rewalk if necessary. */
|
||||
+ if ( shadow_check_gl1e(v, &gw) )
|
||||
+ {
|
||||
+ perfc_incr(shadow_inconsistent_gwalk);
|
||||
+ shadow_unlock(d);
|
||||
+ goto rewalk;
|
||||
+ }
|
||||
#endif /* OOS */
|
||||
|
||||
/* Calculate the shadow entry and write it */
|
@ -1,27 +0,0 @@
|
||||
# HG changeset patch
|
||||
# User Keir Fraser <keir.fraser@citrix.com>
|
||||
# Date 1271162458 -3600
|
||||
# Node ID 859a372efa66e6bcba8e1fd968e521cb16da12ea
|
||||
# Parent da90dd1a09b93ae41ab451d223ff87dca04356f5
|
||||
sysctl: Fix XEN_SYSCTL_debug_keys error path.
|
||||
|
||||
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
|
||||
|
||||
--- a/xen/common/sysctl.c
|
||||
+++ b/xen/common/sysctl.c
|
||||
@@ -169,12 +169,14 @@ long do_sysctl(XEN_GUEST_HANDLE(xen_sysc
|
||||
if ( ret )
|
||||
break;
|
||||
|
||||
+ ret = -EFAULT;
|
||||
for ( i = 0; i < op->u.debug_keys.nr_keys; i++ )
|
||||
{
|
||||
if ( copy_from_guest_offset(&c, op->u.debug_keys.keys, i, 1) )
|
||||
- return -EFAULT;
|
||||
+ goto out;
|
||||
handle_keypress(c, guest_cpu_user_regs());
|
||||
}
|
||||
+ ret = 0;
|
||||
}
|
||||
break;
|
||||
|
@ -1,16 +0,0 @@
|
||||
diff -r c02cc832cb2d tools/hotplug/Linux/blktap
|
||||
--- a/tools/hotplug/Linux/blktap Tue Apr 13 18:19:33 2010 +0100
|
||||
+++ b/tools/hotplug/Linux/blktap Fri Apr 16 14:48:00 2010 -0600
|
||||
@@ -59,10 +59,10 @@
|
||||
if [ -n "$t" ]
|
||||
then
|
||||
p=$(xenstore_read "$XENBUS_PATH/params")
|
||||
- # if we have a ':', chew from head including :
|
||||
+ # if we have a ':', remove everything up to leading '/'
|
||||
if echo $p | grep -q \:
|
||||
then
|
||||
- p=${p#*:}
|
||||
+ p="/${p#*/}"
|
||||
fi
|
||||
fi
|
||||
# some versions of readlink cannot be passed a regular file
|
@ -8,9 +8,11 @@
|
||||
missing adjustments get detected at build time)
|
||||
- remove boot time per-CPU pool assignment messages (bnc#572146)
|
||||
|
||||
--- a/xen/arch/x86/domain.c
|
||||
+++ b/xen/arch/x86/domain.c
|
||||
@@ -1581,6 +1581,7 @@ int continue_hypercall_on_cpu(int cpu, v
|
||||
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
|
||||
@@ -1580,6 +1580,7 @@ int continue_hypercall_on_cpu(int cpu, v
|
||||
|
||||
v->arch.schedule_tail = continue_hypercall_on_cpu_helper;
|
||||
v->arch.continue_info = info;
|
||||
@ -18,7 +20,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1591,7 +1592,6 @@ int continue_hypercall_on_cpu(int cpu, v
|
||||
@@ -1590,7 +1591,6 @@ int continue_hypercall_on_cpu(int cpu, v
|
||||
info->func = func;
|
||||
info->data = data;
|
||||
|
||||
@ -26,8 +28,10 @@
|
||||
tasklet_schedule_cpu(&info->tasklet, cpu);
|
||||
raise_softirq(SCHEDULE_SOFTIRQ);
|
||||
|
||||
--- 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
|
||||
@@ -176,7 +176,6 @@ struct csched_private {
|
||||
/*
|
||||
* Global variables
|
||||
@ -51,8 +55,10 @@
|
||||
|
||||
.init_domain = csched_dom_init,
|
||||
.destroy_domain = csched_dom_destroy,
|
||||
--- 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
|
||||
@@ -104,12 +104,15 @@ static void tasklet_schedule_list(struct
|
||||
{
|
||||
BUG_ON(!list_empty(&t->list));
|
||||
@ -87,8 +93,10 @@
|
||||
}
|
||||
|
||||
/*
|
||||
--- 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
|
||||
@@ -35,7 +35,7 @@
|
||||
#include "xen.h"
|
||||
#include "grant_table.h"
|
||||
@ -98,8 +106,10 @@
|
||||
|
||||
struct xenctl_cpumap {
|
||||
XEN_GUEST_HANDLE_64(uint8) bitmap;
|
||||
--- 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
|
||||
@@ -50,12 +50,14 @@ struct tasklet
|
||||
bool_t is_scheduled;
|
||||
bool_t is_running;
|
||||
|
@ -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,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.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
|
||||
@@ -1517,42 +1517,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
|
||||
@@ -1561,16 +1571,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
|
||||
@@ -1578,17 +1584,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.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,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.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
|
||||
@@ -116,7 +116,7 @@ static int microcode_update_cpu(const vo
|
||||
return err;
|
||||
}
|
||||
@ -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>
|
||||
@ -356,8 +372,8 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
*/
|
||||
int alloc_cpu_id(void)
|
||||
{
|
||||
@@ -1306,10 +1306,11 @@ int __cpu_disable(void)
|
||||
__sync_lazy_execstate();
|
||||
@@ -1303,10 +1303,11 @@ int __cpu_disable(void)
|
||||
remove_siblinginfo(cpu);
|
||||
|
||||
/* It's now safe to remove this processor from the online map */
|
||||
+ cpu_clear(cpu, cpupool0->cpu_valid);
|
||||
@ -369,20 +385,22 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1343,10 +1344,10 @@ int cpu_down(unsigned int cpu)
|
||||
@@ -1340,12 +1341,12 @@ int cpu_down(unsigned int cpu)
|
||||
int err = 0;
|
||||
|
||||
/* spin_trylock() avoids deadlock with stop_machine_run(). */
|
||||
- if (!spin_trylock(&cpu_add_remove_lock))
|
||||
+ if (!spin_trylock(&cpupool_lock))
|
||||
return -EBUSY;
|
||||
- if (!spin_trylock(&cpu_add_remove_lock)) {
|
||||
+ if (!spin_trylock(&cpupool_lock)) {
|
||||
err = -EBUSY;
|
||||
goto out;
|
||||
}
|
||||
|
||||
- if (num_online_cpus() == 1) {
|
||||
+ if ((!cpu_isset(cpu, cpupool0->cpu_valid)) || (cpus_weight(cpupool0->cpu_valid) == 1)) {
|
||||
err = -EBUSY;
|
||||
goto out;
|
||||
}
|
||||
@@ -1379,7 +1380,7 @@ int cpu_down(unsigned int cpu)
|
||||
@@ -1378,7 +1379,7 @@ int cpu_down(unsigned int cpu)
|
||||
out:
|
||||
if (!err)
|
||||
send_guest_global_virq(dom0, VIRQ_PCPU_STATE);
|
||||
@ -391,7 +409,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -1388,7 +1389,7 @@ int cpu_up(unsigned int cpu)
|
||||
@@ -1387,7 +1388,7 @@ int cpu_up(unsigned int cpu)
|
||||
int err = 0;
|
||||
|
||||
/* spin_trylock() avoids deadlock with stop_machine_run(). */
|
||||
@ -400,7 +418,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
return -EBUSY;
|
||||
|
||||
if (cpu_online(cpu)) {
|
||||
@@ -1406,7 +1407,7 @@ int cpu_up(unsigned int cpu)
|
||||
@@ -1405,7 +1406,7 @@ int cpu_up(unsigned int cpu)
|
||||
out:
|
||||
if (!err)
|
||||
send_guest_global_virq(dom0, VIRQ_PCPU_STATE);
|
||||
@ -409,7 +427,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -1492,14 +1493,14 @@ int cpu_add(uint32_t apic_id, uint32_t a
|
||||
@@ -1491,14 +1492,14 @@ int cpu_add(uint32_t apic_id, uint32_t a
|
||||
return -EEXIST;
|
||||
|
||||
/* spin_trylock() avoids deadlock with stop_machine_run(). */
|
||||
@ -426,7 +444,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
return cpu;
|
||||
}
|
||||
|
||||
@@ -1516,7 +1517,7 @@ int cpu_add(uint32_t apic_id, uint32_t a
|
||||
@@ -1515,7 +1516,7 @@ int cpu_add(uint32_t apic_id, uint32_t a
|
||||
"Setup node failed for pxm %x\n", pxm);
|
||||
x86_acpiid_to_apicid[acpi_id] = 0xff;
|
||||
mp_unregister_lapic(apic_id, cpu);
|
||||
@ -435,7 +453,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
return node;
|
||||
}
|
||||
apicid_to_node[apic_id] = node;
|
||||
@@ -1524,7 +1525,7 @@ int cpu_add(uint32_t apic_id, uint32_t a
|
||||
@@ -1523,7 +1524,7 @@ int cpu_add(uint32_t apic_id, uint32_t a
|
||||
|
||||
srat_detect_node(cpu);
|
||||
numa_add_cpu(cpu);
|
||||
@ -444,7 +462,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
dprintk(XENLOG_INFO, "Add CPU %x with index %x\n", apic_id, cpu);
|
||||
return cpu;
|
||||
}
|
||||
@@ -1568,6 +1569,7 @@ int __devinit __cpu_up(unsigned int cpu)
|
||||
@@ -1567,6 +1568,7 @@ int __devinit __cpu_up(unsigned int cpu)
|
||||
process_pending_softirqs();
|
||||
}
|
||||
|
||||
@ -452,8 +470,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 +492,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 +503,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,570 @@
|
||||
+/******************************************************************************
|
||||
+ * cpupool.c
|
||||
@ -1054,8 +1078,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);
|
||||
|
||||
@ -1084,8 +1110,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>
|
||||
@ -1192,8 +1220,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
default:
|
||||
ret = arch_do_domctl(op, u_domctl);
|
||||
break;
|
||||
--- 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
|
||||
@ -1380,8 +1410,8 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
* like run two VCPUs on co-hyperthreads while there are idle cores
|
||||
* or sockets.
|
||||
*/
|
||||
- cpus_and(idlers, cpu_online_map, csched_priv.idlers);
|
||||
+ cpus_and(idlers, cpu_online_map, CSCHED_PRIV(ops)->idlers);
|
||||
- idlers = csched_priv.idlers;
|
||||
+ idlers = CSCHED_PRIV(ops)->idlers;
|
||||
cpu_set(cpu, idlers);
|
||||
cpus_and(cpus, cpus, idlers);
|
||||
cpu_clear(cpu, cpus);
|
||||
@ -2060,7 +2090,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
.destroy_vcpu = csched_vcpu_destroy,
|
||||
|
||||
.sleep = csched_vcpu_sleep,
|
||||
@@ -1411,6 +1547,11 @@ const struct scheduler sched_credit_def
|
||||
@@ -1411,6 +1547,11 @@ const struct scheduler sched_credit_def
|
||||
.dump_cpu_state = csched_dump_pcpu,
|
||||
.dump_settings = csched_dump,
|
||||
.init = csched_init,
|
||||
@ -2072,8 +2102,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 )
|
||||
@ -2315,7 +2347,7 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
.name = "Simple EDF Scheduler",
|
||||
.opt_name = "sedf",
|
||||
.sched_id = XEN_SCHEDULER_SEDF,
|
||||
@@ -1464,9 +1492,13 @@ const struct scheduler sched_sedf_def =
|
||||
@@ -1464,9 +1492,13 @@ const struct scheduler sched_sedf_def =
|
||||
.init_domain = sedf_init_domain,
|
||||
.destroy_domain = sedf_destroy_domain,
|
||||
|
||||
@ -2330,8 +2362,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 */
|
||||
@ -2838,8 +2872,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)
|
||||
}
|
||||
|
||||
@ -2933,8 +2969,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
open_softirq(TASKLET_SOFTIRQ, tasklet_action);
|
||||
}
|
||||
|
||||
--- 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
|
||||
|
||||
@ -2945,8 +2983,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 */
|
||||
@ -2955,8 +2995,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,14 @@ struct xen_domctl_createdomain {
|
||||
/* Should domain memory integrity be verifed by tboot during Sx? */
|
||||
#define _XEN_DOMCTL_CDF_s3_integrity 2
|
||||
@ -3028,8 +3070,10 @@ From: Juergen Gross <juergen.gross@ts.fujitsu.com>
|
||||
#if defined(__i386__) || defined(__x86_64__)
|
||||
struct xen_domctl_cpuid cpuid;
|
||||
#endif
|
||||
--- 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>
|
||||
@ -3122,9 +3166,11 @@ 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
|
||||
@@ -132,8 +132,6 @@ struct vcpu
|
||||
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
|
||||
@@ -132,8 +132,6 @@ struct vcpu
|
||||
bool_t defer_shutdown;
|
||||
/* VCPU is paused following shutdown request (d->is_shutting_down)? */
|
||||
bool_t paused_for_shutdown;
|
||||
@ -3196,8 +3242,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 }
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
--- a/xen/arch/x86/domain.c
|
||||
+++ b/xen/arch/x86/domain.c
|
||||
@@ -144,14 +144,29 @@ void dump_pageframe_info(struct domain *
|
||||
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
|
||||
@@ -144,7 +144,7 @@ void dump_pageframe_info(struct domain *
|
||||
|
||||
printk("Memory pages belonging to domain %u:\n", d->domain_id);
|
||||
|
||||
@ -9,17 +11,11 @@
|
||||
{
|
||||
printk(" DomPage list too long to display\n");
|
||||
}
|
||||
else
|
||||
@@ -152,6 +152,15 @@ void dump_pageframe_info(struct domain *
|
||||
{
|
||||
+ unsigned long total[PGT_type_mask
|
||||
+ / (PGT_type_mask & -PGT_type_mask) + 1] = {};
|
||||
+
|
||||
page_list_for_each ( page, &d->page_list )
|
||||
{
|
||||
+ unsigned int index = (page->u.inuse.type_info & PGT_type_mask)
|
||||
+ / (PGT_type_mask & -PGT_type_mask);
|
||||
+
|
||||
+ if ( ++total[index] > 16 )
|
||||
+ if ( d->tot_pages > 16 )
|
||||
+ {
|
||||
+ switch ( page->u.inuse.type_info & PGT_type_mask )
|
||||
+ {
|
||||
|
@ -8,7 +8,7 @@
|
||||
### BEGIN INIT INFO
|
||||
# Provides: xendomains
|
||||
# Required-Start: $syslog $remote_fs xend
|
||||
# Should-Start: iscsi o2cb ocfs2 openais
|
||||
# Should-Start: iscsi o2cb ocfs2
|
||||
# Required-Stop: $syslog $remote_fs xend
|
||||
# Should-Stop: iscsi
|
||||
# Default-Start: 3 5
|
||||
@ -89,11 +89,7 @@ dir_contains_something()
|
||||
|
||||
get_name_from_cfg()
|
||||
{
|
||||
if grep -q "^name" "$1";then
|
||||
NM=`grep '^name[ ]*=' "$1" | sed -e 's/^name[ ]*=[ ]*['\''"]\([^'\''"]*\)['\''"].*$/\1/'`
|
||||
elif grep -q "(name " "$1";then
|
||||
NM=`grep '(name ' "$1" | sed -e 's/^ *//' | cut -d " " -f 2 | sed -e 's/)//'`
|
||||
fi
|
||||
NM=`grep '^name[ ]*=' "$1" | sed -e 's/^name[ ]*=[ ]*['\''"]\([^'\''"]*\)['\''"].*$/\1/'`
|
||||
}
|
||||
|
||||
running_auto_names()
|
||||
@ -183,16 +179,12 @@ start()
|
||||
if is_cfg_running "$dom"; then
|
||||
rc_status -s
|
||||
else
|
||||
if grep -q "^name" "$dom";then
|
||||
xm create --quiet --defconfig "$dom"
|
||||
elif grep -q "(name .*" "$dom";then
|
||||
xm create --quiet --config "$dom"
|
||||
fi
|
||||
xm create --quiet --defconfig "$dom"
|
||||
if [ $? -ne 0 ]; then
|
||||
rc_failed
|
||||
rc_failed
|
||||
else
|
||||
usleep $XENDOMAINS_CREATE_USLEEP
|
||||
rc_reset
|
||||
usleep $XENDOMAINS_CREATE_USLEEP
|
||||
rc_reset
|
||||
fi
|
||||
rc_status -v
|
||||
fi
|
||||
|
@ -1,12 +0,0 @@
|
||||
diff -r c02cc832cb2d tools/python/xen/xend/server/BlktapController.py
|
||||
--- a/tools/python/xen/xend/server/BlktapController.py Tue Apr 13 18:19:33 2010 +0100
|
||||
+++ b/tools/python/xen/xend/server/BlktapController.py Fri Apr 16 12:05:39 2010 -0600
|
||||
@@ -189,7 +189,7 @@
|
||||
blktap2_installed=1;
|
||||
|
||||
if typ in ('tap'):
|
||||
- if subtyp in ('tapdisk'):
|
||||
+ if subtyp in ('tapdisk', 'ioemu'):
|
||||
if params not in blktap2_disk_types or not blktap2_installed:
|
||||
# pass this device off to BlktapController
|
||||
log.warn('WARNING: using deprecated blktap module')
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:dae429f07e7c09ed55f941d3ad7cbfe39f9e29d93da70df13594acaa2ee9f34b
|
||||
size 23205463
|
||||
oid sha256:8696f3d4de6d66bce133e78e990c409053ba057fe13c708e763d32b3b4deb2cc
|
||||
size 23204532
|
||||
|
@ -7,9 +7,9 @@ Index: xen-4.0.0-testing/Config.mk
|
||||
# Mercurial in-tree version, or a local directory, or a git URL.
|
||||
# CONFIG_QEMU ?= ../qemu-xen.git
|
||||
-CONFIG_QEMU ?= $(QEMU_REMOTE)
|
||||
+CONFIG_QEMU ?= ioemu-remote
|
||||
+CONFIG_QEMU ?= ioemu-remote
|
||||
|
||||
QEMU_TAG := xen-4.0.0
|
||||
QEMU_TAG := xen-4.0.0-rc9
|
||||
#QEMU_TAG ?= f1d909f0f854194f5a40d850886d1413fb8b63c2
|
||||
@@ -167,9 +167,9 @@ CONFIG_OCAML_XENSTORED ?= n
|
||||
# Optional components
|
||||
|
@ -13,13 +13,11 @@ Index: xen-4.0.0-testing/tools/python/xen/util/blkif.py
|
||||
if uname.find(":") != -1:
|
||||
(typ, fn) = uname.split(":", 1)
|
||||
|
||||
@@ -88,15 +88,18 @@ def _parse_uname(uname):
|
||||
@@ -88,15 +88,16 @@ def _parse_uname(uname):
|
||||
|
||||
if typ == "tap":
|
||||
(taptype, fn) = fn.split(":", 1)
|
||||
- return (fn, taptype)
|
||||
+ if taptype in ("tapdisk", "ioemu"):
|
||||
+ (taptype, fn) = fn.split(":", 1)
|
||||
+ return (fn, (typ, taptype))
|
||||
+ return (fn, (typ,taptype))
|
||||
|
||||
|
29
xen.changes
29
xen.changes
@ -1,32 +1,3 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Apr 16 15:00:52 MDT 2010 - jfehlig@novell.com
|
||||
|
||||
- bnc#569194 - Tools-side fixes for tapdisk protocol specification
|
||||
blktap-script.patch
|
||||
ioemu-subtype.patch
|
||||
Modified xen-domUloader.diff
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Apr 14 08:14:31 MDT 2010 - carnold@novell.com
|
||||
|
||||
- Upstream bug fixes from Jan
|
||||
21089-x86-startup-irq-from-setup-gsi.patch
|
||||
21109-x86-cpu-hotplug.patch
|
||||
21150-shadow-race.patch
|
||||
21160-sysctl-debug-keys.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Apr 9 12:38:47 MDT 2010 - jfehlig@novell.com
|
||||
|
||||
- Updated to Xen 4.0.0 FCS, changeset 21091
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 6 18:18:36 MDT 2010 - jfehlig@novell.com
|
||||
|
||||
- Change default lock dir (when domain locking is enabled) to
|
||||
/var/lib/xen/images/vm_locks
|
||||
- Support SXP config files in xendomains script
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Mar 31 08:09:49 MDT 2010 - carnold@novell.com
|
||||
|
||||
|
22
xen.spec
22
xen.spec
@ -1,5 +1,5 @@
|
||||
#
|
||||
# spec file for package xen (Version 4.0.0_21091_01)
|
||||
# spec file for package xen (Version 4.0.0_21087_01)
|
||||
#
|
||||
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
#
|
||||
@ -22,9 +22,9 @@ Name: xen
|
||||
ExclusiveArch: %ix86 x86_64
|
||||
%define xvers 4.0
|
||||
%define xvermaj 4
|
||||
%define changeset 21091
|
||||
%define changeset 21087
|
||||
%define xen_build_dir xen-4.0.0-testing
|
||||
%define with_kmp 1
|
||||
%define with_kmp 0
|
||||
BuildRequires: LibVNCServer-devel SDL-devel acpica automake bin86 curl-devel dev86 graphviz latex2html libjpeg-devel libxml2-devel ncurses-devel openssl openssl-devel pciutils-devel python-devel texinfo transfig
|
||||
%if %suse_version >= 1030
|
||||
BuildRequires: texlive texlive-latex
|
||||
@ -42,7 +42,7 @@ BuildRequires: glibc-32bit glibc-devel-32bit
|
||||
%if %{?with_kmp}0
|
||||
BuildRequires: kernel-source kernel-syms module-init-tools xorg-x11
|
||||
%endif
|
||||
Version: 4.0.0_21091_01
|
||||
Version: 4.0.0_21087_01
|
||||
Release: 1
|
||||
License: GPLv2
|
||||
Group: System/Kernel
|
||||
@ -78,13 +78,6 @@ Source24: xenapiusers
|
||||
# sysconfig hook script for Xen
|
||||
Source25: xen-updown.sh
|
||||
# Upstream patches
|
||||
Patch0: 21089-x86-startup-irq-from-setup-gsi.patch
|
||||
Patch1: 21109-x86-cpu-hotplug.patch
|
||||
Patch2: 21128-domain-save-flush.patch
|
||||
Patch3: 21150-shadow-race.patch
|
||||
Patch4: 21160-sysctl-debug-keys.patch
|
||||
Patch5: blktap-script.patch
|
||||
Patch6: ioemu-subtype.patch
|
||||
# Our patches
|
||||
Patch300: xen-config.diff
|
||||
Patch301: xend-config.diff
|
||||
@ -527,13 +520,6 @@ Authors:
|
||||
|
||||
%prep
|
||||
%setup -q -n %xen_build_dir
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch300 -p1
|
||||
%patch301 -p1
|
||||
%patch302 -p1
|
||||
|
@ -21,7 +21,7 @@ Index: xen-4.0.0-testing/tools/examples/xend-config.sxp
|
||||
+# Note: This path must be accessible to all VM Servers participating
|
||||
+# in domain locking, e.g. by specifying a shared mount point.
|
||||
+# Lock is placed in /<xend-domain-lock-path>/<domain-uuid>.
|
||||
+# Default is /var/lib/xen/images/vm_locks/
|
||||
+# Default is /var/lib/xend/domains/
|
||||
+#
|
||||
+#(xend-domain-lock-path /var/lib/xend/domains)
|
||||
+
|
||||
@ -191,7 +191,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendOptions.py
|
||||
+ xend_domain_lock = 'no'
|
||||
+
|
||||
+ """Default domain lock storage path."""
|
||||
+ xend_domain_lock_path_default = '/var/lib/xen/images/vm_locks'
|
||||
+ xend_domain_lock_path_default = '/var/lib/xend/domains'
|
||||
+
|
||||
+ """Default script to acquire/release domain lock"""
|
||||
+ xend_domain_lock_utility = auxbin.scripts_dir() + "/domain-lock"
|
||||
|
Loading…
Reference in New Issue
Block a user