From: Avi Kivity <avi@redhat.com>
To: Sheng Yang <sheng@linux.intel.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>, kvm@vger.kernel.org
Subject: Re: [PATCH 4/4] VMX: x86: Only reset MMU when necessary
Date: Wed, 12 May 2010 11:11:47 +0300 [thread overview]
Message-ID: <4BEA62C3.3090505@redhat.com> (raw)
In-Reply-To: <201005121531.21541.sheng@linux.intel.com>
On 05/12/2010 10:31 AM, Sheng Yang wrote:
>
>>> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
>>> index b59fc67..971a295 100644
>>> --- a/arch/x86/kvm/x86.c
>>> +++ b/arch/x86/kvm/x86.c
>>>
>>> @@ -416,6 +416,10 @@ out:
>>> static int __kvm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)
>>> {
>>>
>>> + unsigned long old_cr0 = kvm_read_cr0(vcpu);
>>> + unsigned long update_bits = X86_CR0_PG | X86_CR0_PE |
>>> + X86_CR0_CD | X86_CR0_NW;
>>>
>> PE doesn't affect paging, CD, NW don't either?
>>
> Yes, PE can't affect alone.
>
> Marcelo has commented on CD/NW, because we need to reload pdptrs if they changed,
> then we need to reload MMU.
>
Ah, correct.
>> What about WP?
>>
> How WP would affect?
>
If cr0.wp=0 then we can have a pte with gpte.rw=0 but spte.rw=1 (since
the guest always runs with cr0.wp=1). So we need to reload the mmu to
switch page tables.
This won't work now, I'll post a patch adding cr0.wp to sp->role. But
please add cr0.wp to the set of bits requiring reload so we won't have a
regression.
>>> @@ -722,6 +730,9 @@ static int set_efer(struct kvm_vcpu *vcpu, u64 efer)
>>>
>>> vcpu->arch.mmu.base_role.nxe = (efer& EFER_NX)&& !tdp_enabled;
>>>
>>> + if ((efer ^ old_efer)& EFER_NX)
>>> + update_rsvd_bits_mask(vcpu);
>>> +
>>>
>>> return 0;
>>>
>>> }
>>>
>> I think it's fine to reset the entire mmu context here, most guests
>> won't toggle nx all the time. But it needs to be in patch 3, otherwise
>> we have a regression between 3 and 4.
>>
> OK. Would drop patch 3 and keep mmu reset if you like...
>
Yes please.
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
prev parent reply other threads:[~2010-05-12 8:11 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-11 5:30 [PATCH 1/4] KVM: x86: Check LMA bit before set_efer Sheng Yang
2010-05-11 5:30 ` [PATCH 2/4] KVM: Clean up duplicate assignment Sheng Yang
2010-05-11 5:30 ` [PATCH 3/4] KVM: x86: Remove kvm_mmu_reset_context() in kvm_set_efer() Sheng Yang
2010-05-11 19:33 ` Marcelo Tosatti
2010-05-11 5:30 ` [PATCH 4/4] VMX: x86: Only reset MMU when necessary Sheng Yang
2010-05-11 19:36 ` Marcelo Tosatti
2010-05-12 1:53 ` Sheng Yang
2010-05-12 2:09 ` Sheng Yang
2010-05-12 6:31 ` Avi Kivity
2010-05-12 6:33 ` [PATCH 1/4] KVM: x86: Check LMA bit before set_efer Sheng Yang
2010-05-12 6:33 ` [PATCH 2/4] KVM: Clean up duplicate assignment Sheng Yang
2010-05-12 6:33 ` [PATCH 3/4] KVM: x86: Remove kvm_mmu_reset_context() in kvm_set_efer() Sheng Yang
2010-05-12 6:33 ` [PATCH 4/4] VMX: x86: Only reset MMU when necessary Sheng Yang
2010-05-12 6:59 ` Avi Kivity
2010-05-12 7:31 ` Sheng Yang
2010-05-12 8:11 ` Avi Kivity [this message]
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=4BEA62C3.3090505@redhat.com \
--to=avi@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=sheng@linux.intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.