From: Paolo Bonzini <pbonzini@redhat.com>
To: Xiao Guangrong <guangrong.xiao@linux.intel.com>
Cc: gleb@kernel.org, mtosatti@redhat.com, kvm@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/4] KVM: MMU: reduce the size of mmu_page_path
Date: Fri, 25 Mar 2016 14:56:39 +0100 [thread overview]
Message-ID: <56F54397.9050809@redhat.com> (raw)
In-Reply-To: <56F541C5.6090904@linux.intel.com>
On 25/03/2016 14:48, Xiao Guangrong wrote:
>>>
>>
>> This patch and the previous one are basically redoing commit
>> 0a47cd85833e ("KVM: MMU: Fix ubsan warnings", 2016-03-04). While you
>> find your version easier to understand, I of course find mine easier.
>>
>> Rather than getting stuck in a ko fight, the solution is to stick with
>> the code in KVM and add comments. I'll give it a try...
>
> If you do not like this one, we can just make the .index is
> [PT64_ROOT_LEVEL - 1] and keep the sentinel in .parents[], that little
> change and nice code shape.
I suppose you'd have something like this then:
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 70e95d097ef1..15e1735a2e3a 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -1980,7 +1980,7 @@ static bool kvm_sync_pages(struct kvm_vcpu *vcpu, gfn_t gfn,
struct mmu_page_path {
struct kvm_mmu_page *parent[PT64_ROOT_LEVEL];
- unsigned int idx[PT64_ROOT_LEVEL];
+ unsigned int idx[PT64_ROOT_LEVEL-1];
};
#define for_each_sp(pvec, sp, parents, i) \
@@ -2037,13 +2037,14 @@ static void mmu_pages_clear_parents(struct mmu_page_path *parents)
{
struct kvm_mmu_page *sp;
unsigned int level = 0;
+ unsigned int idx;
do {
- unsigned int idx = parents->idx[level];
sp = parents->parent[level];
- if (!sp)
+ if (!sp || WARN_ON(level == PT64_ROOT_LEVEL-1))
return;
+ idx = parents->idx[level];
WARN_ON(idx == INVALID_INDEX);
clear_unsync_child_bit(sp, idx);
level++;
By making the arrays the same size, the effect of the sentinel seems
clearer to me. It doesn't seem worth 4 bytes (and strictly speaking
those 4 bytes would be there anyway due to padding)...
Paolo
next prev parent reply other threads:[~2016-03-25 13:56 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-25 13:19 [PATCH 1/4] KVM: MMU: fix permission_fault() Xiao Guangrong
2016-03-25 13:19 ` [PATCH 2/4] KVM: MMU: simplify the logic of __mmu_unsync_walk() Xiao Guangrong
2016-03-25 13:19 ` [PATCH 3/4] KVM: MMU: reduce the size of mmu_page_path Xiao Guangrong
2016-03-25 13:45 ` Paolo Bonzini
2016-03-25 13:48 ` Xiao Guangrong
2016-03-25 13:56 ` Paolo Bonzini [this message]
2016-03-25 14:07 ` Xiao Guangrong
2016-03-25 14:22 ` Paolo Bonzini
2016-03-25 13:19 ` [PATCH 4/4] KVM: MMU: skip obsolete sp in for_each_gfn_*() Xiao Guangrong
2016-03-29 9:44 ` Paolo Bonzini
2016-03-25 13:35 ` [PATCH 1/4] KVM: MMU: fix permission_fault() Paolo Bonzini
2016-03-25 13:41 ` Xiao Guangrong
2016-03-25 13:50 ` Paolo Bonzini
2016-03-25 14:21 ` Paolo Bonzini
2016-03-29 17:43 ` Xiao Guangrong
2016-03-29 20:09 ` Paolo Bonzini
2016-03-30 1:56 ` Xiao Guangrong
2016-03-30 6:36 ` Paolo Bonzini
2016-03-30 6:39 ` Xiao Guangrong
2016-04-06 3:27 ` Xiao Guangrong
2016-04-06 8:17 ` Paolo Bonzini
2016-04-06 8:56 ` Paolo Bonzini
2016-04-06 15:09 ` Xiao Guangrong
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=56F54397.9050809@redhat.com \
--to=pbonzini@redhat.com \
--cc=gleb@kernel.org \
--cc=guangrong.xiao@linux.intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mtosatti@redhat.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.