From: Avi Kivity <avi@redhat.com>
To: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>,
LKML <linux-kernel@vger.kernel.org>,
KVM list <kvm@vger.kernel.org>
Subject: Re: [PATCH 2/2] KVM: MMU: fix relaxing permission
Date: Thu, 27 May 2010 14:18:16 +0300 [thread overview]
Message-ID: <4BFE54F8.7030309@redhat.com> (raw)
In-Reply-To: <4BFE50E2.60203@cn.fujitsu.com>
On 05/27/2010 02:00 PM, Xiao Guangrong wrote:
>
>> The host always sets cr0.wp (in shadow mode) so we can write protect
>> page tables. So when the guest clears cr0.wp, we emulate a gpte with
>> gpte.w=0 and gpte.u=1 in two ways:
>>
>> - spte.w=1, spte.u=0: this will allow the guest kernel to write but trap
>> on guest user access
>> - spte.w=0, spte.u=1: allows guest user access but traps on guest kernel
>> writes
>>
>> If the guest attempts an access that is currently disallowed, we switch
>> to the other spte encoding.
>>
> Avi,
>
> Thanks for your explanation, but i not see where to implement what you say,
> could you please point it out for me? :-(
>
b70ccb0b3fd removed it accidentally:
> - } else
> - /*
> - * Kernel mode access. Fail if it's a read-only page and
> - * supervisor write protection is enabled.
> - */
> - if (!writable_shadow) {
> - if (is_write_protection(vcpu))
> - return 0;
> - *shadow_ent &= ~PT_USER_MASK;
> - }
:(
> And, i think use 'spte.w=1, spte.u=0' to emulate 'guest cr0.wp=0 and gpte.w=0'
> is not a good way since it can completely stop user process access, but in this
> case, user process is usually read and kernel lazily to write, just like vdso,
> it will generate a lots of #PF
>
As soon as the guest kernel stops writing we switch back to
gpte.w=gpte.u=1 and the guest can access it completely. For the case
where both the kernel and userspace use interleaved access, you are
right, but I don't see a better way, do you?
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2010-05-27 11:18 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-26 2:44 [PATCH 1/2] KVM: SVM: fix compiling warning Xiao Guangrong
2010-05-26 2:46 ` [PATCH 2/2] KVM: MMU: fix relaxing permission Xiao Guangrong
2010-05-27 10:10 ` Avi Kivity
2010-05-27 11:00 ` Xiao Guangrong
2010-05-27 11:18 ` Avi Kivity [this message]
2010-05-27 11:54 ` Avi Kivity
2010-05-27 10:13 ` [PATCH 1/2] KVM: SVM: fix compiling warning Avi Kivity
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=4BFE54F8.7030309@redhat.com \
--to=avi@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=xiaoguangrong@cn.fujitsu.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).