From patchwork Thu Sep 1 13:23:25 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [Oneiric] Temporary Xen HVM work-around From: Stefan Bader X-Patchwork-Id: 112909 Message-Id: <1314883405-6394-1-git-send-email-stefan.bader@canonical.com> To: kernel-team@lists.ubuntu.com Date: Thu, 1 Sep 2011 15:23:25 +0200 I would like to propose the following SAUCE patch for Oneiric. Without this the Oneiric kernel fails to boot in HVM mode from a Xen 4.1.1 or newer hypervisor (which we ship in Oneiric). It should be only temporary, but I am not sure we find a proper solution within the time before final freeze and I rather would see the released kernel at least booting. Changes only affect code paths used when booting in HVM mode under Xen, so there should be no other impact. -Stefan >From 6b33140cf331421e4dbac53b6eb155e4ac3be159 Mon Sep 17 00:00:00 2001 From: Stefan Bader Date: Thu, 1 Sep 2011 13:24:27 +0200 Subject: [PATCH] UBUNTU: SAUCE: xen: Do not use pv spinlocks on HVM BugLink: http://bugs.launchpad.net/bugs/838026 This is broken at the moment and causes our 3.0 kernel to hang on boot when started as a HVM guest of a 4.1.1 or newer hypervisor. It should be reverted or dropped as soon as we find a proper solution. Signed-off-by: Stefan Bader --- arch/x86/xen/enlighten.c | 2 ++ arch/x86/xen/smp.c | 2 ++ 2 files changed, 4 insertions(+), 0 deletions(-) diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index 14dc31f..57727c5 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c @@ -1360,8 +1360,10 @@ static int __cpuinit xen_hvm_cpu_notify(struct notifier_block *self, switch (action) { case CPU_UP_PREPARE: per_cpu(xen_vcpu, cpu) = &HYPERVISOR_shared_info->vcpu_info[cpu]; + /* FIXME: Disable until a final solution is found (lp#838026) if (xen_have_vector_callback) xen_init_lock_cpu(cpu); + */ break; default: break; diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c index e79dbb9..abd69a6 100644 --- a/arch/x86/xen/smp.c +++ b/arch/x86/xen/smp.c @@ -521,8 +521,10 @@ static void __init xen_hvm_smp_prepare_cpus(unsigned int max_cpus) native_smp_prepare_cpus(max_cpus); WARN_ON(xen_smp_intr_init(0)); + /* FIXME: Disable until final solution is found (lp#838026) xen_init_lock_cpu(0); xen_init_spinlocks(); + */ } static int __cpuinit xen_hvm_cpu_up(unsigned int cpu)