Patchwork [Oneiric] Temporary Xen HVM work-around

login
register
mail settings
Submitter Stefan Bader
Date Sept. 1, 2011, 1:23 p.m.
Message ID <1314883405-6394-1-git-send-email-stefan.bader@canonical.com>
Download mbox | patch
Permalink /patch/112909/
State New
Headers show

Comments

Stefan Bader - Sept. 1, 2011, 1:23 p.m.
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@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@canonical.com>
---
 arch/x86/xen/enlighten.c |    2 ++
 arch/x86/xen/smp.c       |    2 ++
 2 files changed, 4 insertions(+), 0 deletions(-)
Tim Gardner - Sept. 1, 2011, 1:39 p.m.
On 09/01/2011 07:23 AM, Stefan Bader wrote:
> 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
>

Can you think of any possible impact this might have for an LTS backport 
? We're not doing anything for -ec2 backports, right ?

rtg
Stefan Bader - Sept. 1, 2011, 1:54 p.m.
On 01.09.2011 15:39, Tim Gardner wrote:
> On 09/01/2011 07:23 AM, Stefan Bader wrote:
>> 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
>>
> 
> Can you think of any possible impact this might have for an LTS backport ? We're
> not doing anything for -ec2 backports, right ?
> 
> rtg

We do not have an LTS backport for EC2. Of course people can an do run the
normal (generic-pae for i386, amd64 should be ok with any flavour) LTS backport
kernel in Lucid installations. If the hyperviser is older that 4.1.1 this has no
impact at all. And for the other ones it would cause the same issue.

-Stefan
Stefan Bader - Sept. 1, 2011, 1:56 p.m.
On 01.09.2011 15:54, Stefan Bader wrote:
> On 01.09.2011 15:39, Tim Gardner wrote:
>> On 09/01/2011 07:23 AM, Stefan Bader wrote:
>>> 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
>>>
>>
>> Can you think of any possible impact this might have for an LTS backport ? We're
>> not doing anything for -ec2 backports, right ?
>>
>> rtg
> 
> We do not have an LTS backport for EC2. Of course people can an do run the
> normal (generic-pae for i386, amd64 should be ok with any flavour) LTS backport
> kernel in Lucid installations. If the hyperviser is older that 4.1.1 this has no
> impact at all. And for the other ones it would cause the same issue.
> 
> -Stefan
> 
Of course I meant "under Xen" somewhere above...
Tim Gardner - Sept. 1, 2011, 2:12 p.m.
On 09/01/2011 07:56 AM, Stefan Bader wrote:
> On 01.09.2011 15:54, Stefan Bader wrote:
>> On 01.09.2011 15:39, Tim Gardner wrote:
>>> On 09/01/2011 07:23 AM, Stefan Bader wrote:
>>>> 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
>>>>
>>>
>>> Can you think of any possible impact this might have for an LTS backport ? We're
>>> not doing anything for -ec2 backports, right ?
>>>
>>> rtg
>>
>> We do not have an LTS backport for EC2. Of course people can an do run the
>> normal (generic-pae for i386, amd64 should be ok with any flavour) LTS backport
>> kernel in Lucid installations. If the hyperviser is older that 4.1.1 this has no
>> impact at all. And for the other ones it would cause the same issue.
>>
>> -Stefan
>>
> Of course I meant "under Xen" somewhere above...
>

So if someone was running Lucid user space as a Xen domU guest on a 
hypervisor older then 4.1.1, then installing the Oneiric LTS backport 
would normally work, right? Will this patch impact that ?

rtg
Stefan Bader - Sept. 1, 2011, 2:17 p.m.
On 01.09.2011 16:12, Tim Gardner wrote:
> On 09/01/2011 07:56 AM, Stefan Bader wrote:
>> On 01.09.2011 15:54, Stefan Bader wrote:
>>> On 01.09.2011 15:39, Tim Gardner wrote:
>>>> On 09/01/2011 07:23 AM, Stefan Bader wrote:
>>>>> 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
>>>>>
>>>>
>>>> Can you think of any possible impact this might have for an LTS backport ?
>>>> We're
>>>> not doing anything for -ec2 backports, right ?
>>>>
>>>> rtg
>>>
>>> We do not have an LTS backport for EC2. Of course people can an do run the
>>> normal (generic-pae for i386, amd64 should be ok with any flavour) LTS backport
>>> kernel in Lucid installations. If the hyperviser is older that 4.1.1 this has no
>>> impact at all. And for the other ones it would cause the same issue.
>>>
>>> -Stefan
>>>
>> Of course I meant "under Xen" somewhere above...
>>
> 
> So if someone was running Lucid user space as a Xen domU guest on a hypervisor
> older then 4.1.1, then installing the Oneiric LTS backport would normally work,
> right? Will this patch impact that ?
> 
> rtg

No, hypervisors older than 4.1.1 will not offer the vector callback feature,
which in turn prevents pv spinlocks (as well as pv IPIs) from being tried to
enable by a 3.0 kernel.
So those work as before.

-Stefan
Tim Gardner - Sept. 1, 2011, 2:25 p.m.
On 09/01/2011 08:17 AM, Stefan Bader wrote:
> On 01.09.2011 16:12, Tim Gardner wrote:
>> On 09/01/2011 07:56 AM, Stefan Bader wrote:
>>> On 01.09.2011 15:54, Stefan Bader wrote:
>>>> On 01.09.2011 15:39, Tim Gardner wrote:
>>>>> On 09/01/2011 07:23 AM, Stefan Bader wrote:
>>>>>> 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
>>>>>>
>>>>>
>>>>> Can you think of any possible impact this might have for an LTS backport ?
>>>>> We're
>>>>> not doing anything for -ec2 backports, right ?
>>>>>
>>>>> rtg
>>>>
>>>> We do not have an LTS backport for EC2. Of course people can an do run the
>>>> normal (generic-pae for i386, amd64 should be ok with any flavour) LTS backport
>>>> kernel in Lucid installations. If the hyperviser is older that 4.1.1 this has no
>>>> impact at all. And for the other ones it would cause the same issue.
>>>>
>>>> -Stefan
>>>>
>>> Of course I meant "under Xen" somewhere above...
>>>
>>
>> So if someone was running Lucid user space as a Xen domU guest on a hypervisor
>> older then 4.1.1, then installing the Oneiric LTS backport would normally work,
>> right? Will this patch impact that ?
>>
>> rtg
>
> No, hypervisors older than 4.1.1 will not offer the vector callback feature,
> which in turn prevents pv spinlocks (as well as pv IPIs) from being tried to
> enable by a 3.0 kernel.
> So those work as before.
>
> -Stefan

Uh, I think what you just said is that Oneiric will work fine on 
hypervisors prior to 4.1.1 regardless of whether this patch is applied.

rtg
Stefan Bader - Sept. 1, 2011, 2:37 p.m.
On 01.09.2011 16:25, Tim Gardner wrote:
> On 09/01/2011 08:17 AM, Stefan Bader wrote:
>> On 01.09.2011 16:12, Tim Gardner wrote:
>>> On 09/01/2011 07:56 AM, Stefan Bader wrote:
>>>> On 01.09.2011 15:54, Stefan Bader wrote:
>>>>> On 01.09.2011 15:39, Tim Gardner wrote:
>>>>>> On 09/01/2011 07:23 AM, Stefan Bader wrote:
>>>>>>> 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
>>>>>>>
>>>>>>
>>>>>> Can you think of any possible impact this might have for an LTS backport ?
>>>>>> We're
>>>>>> not doing anything for -ec2 backports, right ?
>>>>>>
>>>>>> rtg
>>>>>
>>>>> We do not have an LTS backport for EC2. Of course people can an do run the
>>>>> normal (generic-pae for i386, amd64 should be ok with any flavour) LTS
>>>>> backport
>>>>> kernel in Lucid installations. If the hyperviser is older that 4.1.1 this
>>>>> has no
>>>>> impact at all. And for the other ones it would cause the same issue.
>>>>>
>>>>> -Stefan
>>>>>
>>>> Of course I meant "under Xen" somewhere above...
>>>>
>>>
>>> So if someone was running Lucid user space as a Xen domU guest on a hypervisor
>>> older then 4.1.1, then installing the Oneiric LTS backport would normally work,
>>> right? Will this patch impact that ?
>>>
>>> rtg
>>
>> No, hypervisors older than 4.1.1 will not offer the vector callback feature,
>> which in turn prevents pv spinlocks (as well as pv IPIs) from being tried to
>> enable by a 3.0 kernel.
>> So those work as before.
>>
>> -Stefan
> 
> Uh, I think what you just said is that Oneiric will work fine on hypervisors
> prior to 4.1.1 regardless of whether this patch is applied.
> 
> rtg

Yes.

-Stefan
Tim Gardner - Sept. 1, 2011, 2:56 p.m.
On 09/01/2011 08:37 AM, Stefan Bader wrote:
> On 01.09.2011 16:25, Tim Gardner wrote:
>> On 09/01/2011 08:17 AM, Stefan Bader wrote:
>>> On 01.09.2011 16:12, Tim Gardner wrote:
>>>> On 09/01/2011 07:56 AM, Stefan Bader wrote:
>>>>> On 01.09.2011 15:54, Stefan Bader wrote:
>>>>>> On 01.09.2011 15:39, Tim Gardner wrote:
>>>>>>> On 09/01/2011 07:23 AM, Stefan Bader wrote:
>>>>>>>> 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
>>>>>>>>
>>>>>>>
>>>>>>> Can you think of any possible impact this might have for an LTS backport ?
>>>>>>> We're
>>>>>>> not doing anything for -ec2 backports, right ?
>>>>>>>
>>>>>>> rtg
>>>>>>
>>>>>> We do not have an LTS backport for EC2. Of course people can an do run the
>>>>>> normal (generic-pae for i386, amd64 should be ok with any flavour) LTS
>>>>>> backport
>>>>>> kernel in Lucid installations. If the hyperviser is older that 4.1.1 this
>>>>>> has no
>>>>>> impact at all. And for the other ones it would cause the same issue.
>>>>>>
>>>>>> -Stefan
>>>>>>
>>>>> Of course I meant "under Xen" somewhere above...
>>>>>
>>>>
>>>> So if someone was running Lucid user space as a Xen domU guest on a hypervisor
>>>> older then 4.1.1, then installing the Oneiric LTS backport would normally work,
>>>> right? Will this patch impact that ?
>>>>
>>>> rtg
>>>
>>> No, hypervisors older than 4.1.1 will not offer the vector callback feature,
>>> which in turn prevents pv spinlocks (as well as pv IPIs) from being tried to
>>> enable by a 3.0 kernel.
>>> So those work as before.
>>>
>>> -Stefan
>>
>> Uh, I think what you just said is that Oneiric will work fine on hypervisors
>> prior to 4.1.1 regardless of whether this patch is applied.
>>
>> rtg
>
> Yes.
>
> -Stefan

Patch

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)