[Oneiric] Temporary Xen HVM work-around

Stefan Bader stefan.bader at canonical.com
Thu Sep 1 13:23:25 UTC 2011


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 <stefan.bader at canonical.com>
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 <stefan.bader at canonical.com>
---
 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)
-- 
1.7.4.1





More information about the kernel-team mailing list