diff --git a/21089-x86-startup-irq-from-setup-gsi.patch b/21089-x86-startup-irq-from-setup-gsi.patch deleted file mode 100644 index 4cf20f0..0000000 --- a/21089-x86-startup-irq-from-setup-gsi.patch +++ /dev/null @@ -1,106 +0,0 @@ -# HG changeset patch -# User Keir Fraser -# 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 - -# HG changeset patch -# User Keir Fraser -# Date 1271090214 -3600 -# Node ID 7eeb131880b20a33e7675cc1726ae312a489be2d -# Parent b65a41dc6c6a2e2341ae778d8386a08d502bbfa4 -Fix bug in 21089:4f796e29987c - -Signed-off-by: Jan Beulich - -# HG changeset patch -# User Keir Fraser -# 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 - ---- 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 diff --git a/21109-x86-cpu-hotplug.patch b/21109-x86-cpu-hotplug.patch deleted file mode 100644 index 747a683..0000000 --- a/21109-x86-cpu-hotplug.patch +++ /dev/null @@ -1,154 +0,0 @@ -# HG changeset patch -# User Keir Fraser -# 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 - -# HG changeset patch -# User Keir Fraser -# 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 - -# HG changeset patch -# User Keir Fraser -# 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 - ---- 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) diff --git a/21128-domain-save-flush.patch b/21128-domain-save-flush.patch deleted file mode 100644 index 98ae883..0000000 --- a/21128-domain-save-flush.patch +++ /dev/null @@ -1,31 +0,0 @@ -# HG changeset patch -# User Keir Fraser -# 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 - -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; - diff --git a/21150-shadow-race.patch b/21150-shadow-race.patch deleted file mode 100644 index 75d6b62..0000000 --- a/21150-shadow-race.patch +++ /dev/null @@ -1,68 +0,0 @@ -# HG changeset patch -# User Keir Fraser -# 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 - ---- 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 */ diff --git a/21160-sysctl-debug-keys.patch b/21160-sysctl-debug-keys.patch deleted file mode 100644 index 6839cdb..0000000 --- a/21160-sysctl-debug-keys.patch +++ /dev/null @@ -1,27 +0,0 @@ -# HG changeset patch -# User Keir Fraser -# Date 1271162458 -3600 -# Node ID 859a372efa66e6bcba8e1fd968e521cb16da12ea -# Parent da90dd1a09b93ae41ab451d223ff87dca04356f5 -sysctl: Fix XEN_SYSCTL_debug_keys error path. - -Signed-off-by: Keir Fraser - ---- 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; - diff --git a/blktap-script.patch b/blktap-script.patch deleted file mode 100644 index c7368cc..0000000 --- a/blktap-script.patch +++ /dev/null @@ -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 diff --git a/cpupools-core-fixup.patch b/cpupools-core-fixup.patch index 5cc48e1..165f135 100644 --- a/cpupools-core-fixup.patch +++ b/cpupools-core-fixup.patch @@ -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; diff --git a/cpupools-core.patch b/cpupools-core.patch index 8ee7b80..4374bb9 100644 --- a/cpupools-core.patch +++ b/cpupools-core.patch @@ -1,7 +1,9 @@ From: Juergen Gross ---- 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 } 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 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 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 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 #include @@ -177,8 +183,10 @@ From: Juergen Gross /* 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 + 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 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 #include @@ -295,8 +307,10 @@ From: Juergen Gross 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 #include @@ -329,8 +343,10 @@ From: Juergen Gross 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 #include @@ -356,8 +372,8 @@ From: Juergen Gross */ 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 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 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 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 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 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 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 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 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 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 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 + * 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 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 #include @@ -1192,8 +1220,10 @@ From: Juergen Gross 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 * 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 .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 .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 .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 .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 } #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 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 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 #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 #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 @@ -3122,9 +3166,11 @@ From: Juergen Gross +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 #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 } diff --git a/dom-print.patch b/dom-print.patch index 73e7cc7..dfc3b02 100644 --- a/dom-print.patch +++ b/dom-print.patch @@ -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 ) + { diff --git a/init.xendomains b/init.xendomains index 144e8dc..836149e 100644 --- a/init.xendomains +++ b/init.xendomains @@ -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 diff --git a/ioemu-subtype.patch b/ioemu-subtype.patch deleted file mode 100644 index 71f2b30..0000000 --- a/ioemu-subtype.patch +++ /dev/null @@ -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') diff --git a/xen-4.0.0-testing-src.tar.bz2 b/xen-4.0.0-testing-src.tar.bz2 index 2736a64..a963c6b 100644 --- a/xen-4.0.0-testing-src.tar.bz2 +++ b/xen-4.0.0-testing-src.tar.bz2 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dae429f07e7c09ed55f941d3ad7cbfe39f9e29d93da70df13594acaa2ee9f34b -size 23205463 +oid sha256:8696f3d4de6d66bce133e78e990c409053ba057fe13c708e763d32b3b4deb2cc +size 23204532 diff --git a/xen-config.diff b/xen-config.diff index 9616a4c..987d887 100644 --- a/xen-config.diff +++ b/xen-config.diff @@ -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 diff --git a/xen-domUloader.diff b/xen-domUloader.diff index b72419c..e7922d4 100644 --- a/xen-domUloader.diff +++ b/xen-domUloader.diff @@ -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)) diff --git a/xen.changes b/xen.changes index 4f94c79..9670eea 100644 --- a/xen.changes +++ b/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 diff --git a/xen.spec b/xen.spec index 581397a..18f4d79 100644 --- a/xen.spec +++ b/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 diff --git a/xend-domain-lock.patch b/xend-domain-lock.patch index 609d8a3..e1aae2e 100644 --- a/xend-domain-lock.patch +++ b/xend-domain-lock.patch @@ -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 //. -+# 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"