From: Paolo Bonzini <pbonzini@redhat.com>
To: Stefan Bader <stefan.bader@canonical.com>, kvm@vger.kernel.org
Cc: Anthoine Bourgeois <bourgeois@bertin.fr>
Subject: Re: nVMX regression v3.13+, bisected
Date: Thu, 27 Feb 2014 11:51:08 +0100 [thread overview]
Message-ID: <530F189C.5000200@redhat.com> (raw)
In-Reply-To: <530E4E25.4050508@canonical.com>
Il 26/02/2014 21:27, Stefan Bader ha scritto:
> On 26.02.2014 21:25, Paolo Bonzini wrote:
>> Il 26/02/2014 20:43, Stefan Bader ha scritto:
>>> Hi,
>>>
>>> I was looking at a bug report[1] about a regression on nested VMX that started
>>> with kernel v3.13 (same issue still existed with v3.14-rc4). The problem shows
>>> up when running a v3.13 kernel in L0 and then trying to launch a L2 (L1 was
>>> either a v3.2 kernel or v3.13, so seemed to have no immediate influence). L2 is
>>> trying to boot a iso image and hangs before the isolinux boot loader displays
>>> anything. A preinstalled hd image fails to boot, too.
>>>
>>> I bisected this and ended up on the following commit which, when reverted made
>>> the launch work again:
>>>
>>> Author: Anthoine Bourgeois <bourgeois@bertin.fr>
>>> Date: Wed Nov 13 11:45:37 2013 +0100
>>>
>>> kvm, vmx: Fix lazy FPU on nested guest
>>>
>>> If a nested guest does a NM fault but its CR0 doesn't contain the TS
>>> flag (because it was already cleared by the guest with L1 aid) then we
>>> have to activate FPU ourselves in L0 and then continue to L2. If TS flag
>>> is set then we fallback on the previous behavior, forward the fault to
>>> L1 if it asked for.
>>>
>>> Signed-off-by: Anthoine Bourgeois <bourgeois@bertin.fr>
>>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>>>
>>> The condition to exit to L0 seems to be according to what the description says.
>>> Could it be that the handling in L0 is doing something wrong?
>>
>> Thanks, I'll look at it tomorrow or Friday.
>>
>> Paolo
>>
> Great thanks. And maybe it helps if I actually add the link to the bug report as
> I had intended... :-P
I don't have my usual test machine available, but here is a possible guess.
nested_read_cr0 is the CR0 as read by L2, but here we want to look at the
CR0 value reflecting L1's setup. This would suggest the following untested
patch:
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index a06f101ef64b..0d90601a2681 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -6688,7 +6688,7 @@ static bool nested_vmx_exit_handled(struct kvm_vcpu *vcpu)
else if (is_page_fault(intr_info))
return enable_ept;
else if (is_no_device(intr_info) &&
- !(nested_read_cr0(vmcs12) & X86_CR0_TS))
+ !(vmcs12->guest_cr0 & X86_CR0_TS))
return 0;
return vmcs12->exception_bitmap &
(1u << (intr_info & INTR_INFO_VECTOR_MASK));
Paolo
next prev parent reply other threads:[~2014-02-27 10:51 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-26 19:43 nVMX regression v3.13+, bisected Stefan Bader
2014-02-26 20:25 ` Paolo Bonzini
2014-02-26 20:27 ` Stefan Bader
2014-02-26 20:44 ` Kashyap Chamarthy
2014-02-27 12:10 ` Kashyap Chamarthy
2014-02-27 15:55 ` Kashyap Chamarthy
2014-02-27 10:51 ` Paolo Bonzini [this message]
2014-02-27 13:41 ` anthoine.bourgeois
2014-02-27 17:01 ` anthoine.bourgeois
2014-02-27 16:58 ` Paolo Bonzini
2014-02-27 21:34 ` Kashyap Chamarthy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=530F189C.5000200@redhat.com \
--to=pbonzini@redhat.com \
--cc=bourgeois@bertin.fr \
--cc=kvm@vger.kernel.org \
--cc=stefan.bader@canonical.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).