All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/6] KVM: MMU: fix forgot reserved bits check in speculative path
@ 2010-07-16  3:19 Xiao Guangrong
  2010-07-16  3:23 ` [PATCH v2 2/6] KVM: MMU: fix page accessed tracking lost if ept is enabled Xiao Guangrong
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: Xiao Guangrong @ 2010-07-16  3:19 UTC (permalink / raw)
  To: Avi Kivity; +Cc: Marcelo Tosatti, LKML, KVM list

In the speculative path, we should check guest pte's reserved bits just as
the real processor does

Reported-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
---
 arch/x86/kvm/mmu.c         |    9 ++++++++-
 arch/x86/kvm/paging_tmpl.h |    5 +++--
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index d16efbe..1a4b42e 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -2693,6 +2693,9 @@ static void mmu_pte_write_new_pte(struct kvm_vcpu *vcpu,
 		return;
         }
 
+	if (is_rsvd_bits_set(vcpu, *(u64 *)new, PT_PAGE_TABLE_LEVEL))
+		return;
+
 	++vcpu->kvm->stat.mmu_pte_updated;
 	if (!sp->role.cr4_pae)
 		paging32_update_pte(vcpu, sp, spte, new);
@@ -2771,6 +2774,7 @@ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
 		       bool guest_initiated)
 {
 	gfn_t gfn = gpa >> PAGE_SHIFT;
+	union kvm_mmu_page_role mask = { .word = 0 };
 	struct kvm_mmu_page *sp;
 	struct hlist_node *node;
 	LIST_HEAD(invalid_list);
@@ -2845,6 +2849,7 @@ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
 		}
 	}
 
+	mask.cr0_wp = mask.cr4_pae = mask.nxe = 1;
 	for_each_gfn_indirect_valid_sp(vcpu->kvm, sp, gfn, node) {
 		pte_size = sp->role.cr4_pae ? 8 : 4;
 		misaligned = (offset ^ (offset + bytes - 1)) & ~(pte_size - 1);
@@ -2892,7 +2897,9 @@ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
 		while (npte--) {
 			entry = *spte;
 			mmu_pte_write_zap_pte(vcpu, sp, spte);
-			if (gentry)
+			if (gentry &&
+			      !(sp->role.word ^ vcpu->arch.mmu.base_role.word)
+			      & mask.word)
 				mmu_pte_write_new_pte(vcpu, sp, spte, &gentry);
 			if (!remote_flush && need_remote_flush(entry, *spte))
 				remote_flush = true;
diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
index a09e04c..231fce1 100644
--- a/arch/x86/kvm/paging_tmpl.h
+++ b/arch/x86/kvm/paging_tmpl.h
@@ -638,8 +638,9 @@ static int FNAME(sync_page)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp,
 			return -EINVAL;
 
 		gfn = gpte_to_gfn(gpte);
-		if (gfn != sp->gfns[i] ||
-		      !is_present_gpte(gpte) || !(gpte & PT_ACCESSED_MASK)) {
+		if (is_rsvd_bits_set(vcpu, gpte, PT_PAGE_TABLE_LEVEL)
+		      || gfn != sp->gfns[i] || !is_present_gpte(gpte)
+		      || !(gpte & PT_ACCESSED_MASK)) {
 			u64 nonpresent;
 
 			if (is_present_gpte(gpte) || !clear_unsync)
-- 
1.6.1.2


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v2 2/6] KVM: MMU: fix page accessed tracking lost if ept is enabled
  2010-07-16  3:19 [PATCH v2 1/6] KVM: MMU: fix forgot reserved bits check in speculative path Xiao Guangrong
@ 2010-07-16  3:23 ` Xiao Guangrong
  2010-07-16  3:25 ` [PATCH v2 3/6] KVM: MMU: fix page dirty tracking lost while sync page Xiao Guangrong
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 12+ messages in thread
From: Xiao Guangrong @ 2010-07-16  3:23 UTC (permalink / raw)
  To: Avi Kivity; +Cc: Marcelo Tosatti, LKML, KVM list

In current code, if ept is enabled(shadow_accessed_mask = 0), the page
accessed tracking is lost

Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
---
 arch/x86/kvm/mmu.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 1a4b42e..5937054 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -687,7 +687,7 @@ static void drop_spte(struct kvm *kvm, u64 *sptep, u64 new_spte)
 	if (!is_rmap_spte(old_spte))
 		return;
 	pfn = spte_to_pfn(old_spte);
-	if (old_spte & shadow_accessed_mask)
+	if (!shadow_accessed_mask || old_spte & shadow_accessed_mask)
 		kvm_set_pfn_accessed(pfn);
 	if (is_writable_pte(old_spte))
 		kvm_set_pfn_dirty(pfn);
@@ -815,7 +815,8 @@ static int kvm_set_pte_rmapp(struct kvm *kvm, unsigned long *rmapp,
 				kvm_set_pfn_dirty(spte_to_pfn(*spte));
 			old_spte = __xchg_spte(spte, new_spte);
 			if (is_shadow_present_pte(old_spte)
-			    && (old_spte & shadow_accessed_mask))
+			    && (!shadow_accessed_mask ||
+			    old_spte & shadow_accessed_mask))
 				mark_page_accessed(pfn_to_page(spte_to_pfn(old_spte)));
 			spte = rmap_next(kvm, rmapp, spte);
 		}
-- 
1.6.1.2



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v2 3/6] KVM: MMU: fix page dirty tracking lost while sync page
  2010-07-16  3:19 [PATCH v2 1/6] KVM: MMU: fix forgot reserved bits check in speculative path Xiao Guangrong
  2010-07-16  3:23 ` [PATCH v2 2/6] KVM: MMU: fix page accessed tracking lost if ept is enabled Xiao Guangrong
@ 2010-07-16  3:25 ` Xiao Guangrong
  2010-07-16  3:27   ` [PATCH v2 4/6] KVM: MMU: don't atomicly set spte if it's not present Xiao Guangrong
  2010-07-21 18:34   ` [PATCH v2 3/6] KVM: MMU: fix page dirty tracking lost while sync page Avi Kivity
  2010-07-16  3:28 ` [PATCH v2 5/6] KVM: MMU: cleanup spte set and accssed/dirty tracking Xiao Guangrong
  2010-07-21  0:36 ` [PATCH v2 1/6] KVM: MMU: fix forgot reserved bits check in speculative path Xiao Guangrong
  3 siblings, 2 replies; 12+ messages in thread
From: Xiao Guangrong @ 2010-07-16  3:25 UTC (permalink / raw)
  To: Avi Kivity; +Cc: Marcelo Tosatti, LKML, KVM list

In sync-page path, if spte.writable is changed, it will lose page dirty
tracking, for example:

assume spte.writable = 0 in a unsync-page, when it's synced, it map spte
to writable(that is spte.writable = 1), later guest write spte.gfn, it means
spte.gfn is dirty, then guest changed this mapping to read-only, after it's
synced,  spte.writable = 0

So, when host release the spte, it detect spte.writable = 0 and not mark page
dirty

Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
---
 arch/x86/kvm/mmu.c |   10 +++-------
 1 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 5937054..b3896bf 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -1981,6 +1981,8 @@ static int set_spte(struct kvm_vcpu *vcpu, u64 *sptep,
 		mark_page_dirty(vcpu->kvm, gfn);
 
 set_pte:
+	if (is_writable_pte(*sptep) && !is_writable_pte(spte))
+		kvm_set_pfn_dirty(pfn);
 	update_spte(sptep, spte);
 done:
 	return ret;
@@ -1994,7 +1996,6 @@ static void mmu_set_spte(struct kvm_vcpu *vcpu, u64 *sptep,
 			 bool reset_host_protection)
 {
 	int was_rmapped = 0;
-	int was_writable = is_writable_pte(*sptep);
 	int rmap_count;
 
 	pgprintk("%s: spte %llx access %x write_fault %d"
@@ -2044,15 +2045,10 @@ static void mmu_set_spte(struct kvm_vcpu *vcpu, u64 *sptep,
 	page_header_update_slot(vcpu->kvm, sptep, gfn);
 	if (!was_rmapped) {
 		rmap_count = rmap_add(vcpu, sptep, gfn);
-		kvm_release_pfn_clean(pfn);
 		if (rmap_count > RMAP_RECYCLE_THRESHOLD)
 			rmap_recycle(vcpu, sptep, gfn);
-	} else {
-		if (was_writable)
-			kvm_release_pfn_dirty(pfn);
-		else
-			kvm_release_pfn_clean(pfn);
 	}
+	kvm_release_pfn_clean(pfn);
 	if (speculative) {
 		vcpu->arch.last_pte_updated = sptep;
 		vcpu->arch.last_pte_gfn = gfn;
-- 
1.6.1.2




^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v2 4/6] KVM: MMU: don't atomicly set spte if it's not present
  2010-07-16  3:25 ` [PATCH v2 3/6] KVM: MMU: fix page dirty tracking lost while sync page Xiao Guangrong
@ 2010-07-16  3:27   ` Xiao Guangrong
  2010-07-21 18:34   ` [PATCH v2 3/6] KVM: MMU: fix page dirty tracking lost while sync page Avi Kivity
  1 sibling, 0 replies; 12+ messages in thread
From: Xiao Guangrong @ 2010-07-16  3:27 UTC (permalink / raw)
  To: Avi Kivity; +Cc: Marcelo Tosatti, LKML, KVM list

If the old mapping is not present, the spte.a is not lost, so no need
atomic operation to set it

Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
---
 arch/x86/kvm/mmu.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index b3896bf..4123e8e 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -307,9 +307,10 @@ static void update_spte(u64 *sptep, u64 new_spte)
 {
 	u64 old_spte;
 
-	if (!shadow_accessed_mask || (new_spte & shadow_accessed_mask)) {
+	if (!shadow_accessed_mask || (new_spte & shadow_accessed_mask) ||
+	      !is_rmap_spte(*sptep))
 		__set_spte(sptep, new_spte);
-	} else {
+	else {
 		old_spte = __xchg_spte(sptep, new_spte);
 		if (old_spte & shadow_accessed_mask)
 			mark_page_accessed(pfn_to_page(spte_to_pfn(old_spte)));
-- 
1.6.1.2



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v2 5/6] KVM: MMU: cleanup spte set and accssed/dirty tracking
  2010-07-16  3:19 [PATCH v2 1/6] KVM: MMU: fix forgot reserved bits check in speculative path Xiao Guangrong
  2010-07-16  3:23 ` [PATCH v2 2/6] KVM: MMU: fix page accessed tracking lost if ept is enabled Xiao Guangrong
  2010-07-16  3:25 ` [PATCH v2 3/6] KVM: MMU: fix page dirty tracking lost while sync page Xiao Guangrong
@ 2010-07-16  3:28 ` Xiao Guangrong
  2010-07-16  3:30   ` [PATCH v2 6/6] KVM: MMU: using __xchg_spte more smarter Xiao Guangrong
  2010-07-21  0:36 ` [PATCH v2 1/6] KVM: MMU: fix forgot reserved bits check in speculative path Xiao Guangrong
  3 siblings, 1 reply; 12+ messages in thread
From: Xiao Guangrong @ 2010-07-16  3:28 UTC (permalink / raw)
  To: Avi Kivity; +Cc: Marcelo Tosatti, LKML, KVM list

Introduce set_spte_track_bits() to cleanup current code

Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
---
 arch/x86/kvm/mmu.c |   17 ++++++++---------
 1 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 4123e8e..fb3ae54 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -679,7 +679,7 @@ static void rmap_remove(struct kvm *kvm, u64 *spte)
 	}
 }
 
-static void drop_spte(struct kvm *kvm, u64 *sptep, u64 new_spte)
+static void set_spte_track_bits(u64 *sptep, u64 new_spte)
 {
 	pfn_t pfn;
 	u64 old_spte;
@@ -692,6 +692,11 @@ static void drop_spte(struct kvm *kvm, u64 *sptep, u64 new_spte)
 		kvm_set_pfn_accessed(pfn);
 	if (is_writable_pte(old_spte))
 		kvm_set_pfn_dirty(pfn);
+}
+
+static void drop_spte(struct kvm *kvm, u64 *sptep, u64 new_spte)
+{
+	set_spte_track_bits(sptep, new_spte);
 	rmap_remove(kvm, sptep);
 }
 
@@ -791,7 +796,7 @@ static int kvm_set_pte_rmapp(struct kvm *kvm, unsigned long *rmapp,
 			     unsigned long data)
 {
 	int need_flush = 0;
-	u64 *spte, new_spte, old_spte;
+	u64 *spte, new_spte;
 	pte_t *ptep = (pte_t *)data;
 	pfn_t new_pfn;
 
@@ -812,13 +817,7 @@ static int kvm_set_pte_rmapp(struct kvm *kvm, unsigned long *rmapp,
 			new_spte &= ~PT_WRITABLE_MASK;
 			new_spte &= ~SPTE_HOST_WRITEABLE;
 			new_spte &= ~shadow_accessed_mask;
-			if (is_writable_pte(*spte))
-				kvm_set_pfn_dirty(spte_to_pfn(*spte));
-			old_spte = __xchg_spte(spte, new_spte);
-			if (is_shadow_present_pte(old_spte)
-			    && (!shadow_accessed_mask ||
-			    old_spte & shadow_accessed_mask))
-				mark_page_accessed(pfn_to_page(spte_to_pfn(old_spte)));
+			set_spte_track_bits(spte, new_spte);
 			spte = rmap_next(kvm, rmapp, spte);
 		}
 	}
-- 
1.6.1.2



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v2 6/6] KVM: MMU: using __xchg_spte more smarter
  2010-07-16  3:28 ` [PATCH v2 5/6] KVM: MMU: cleanup spte set and accssed/dirty tracking Xiao Guangrong
@ 2010-07-16  3:30   ` Xiao Guangrong
  0 siblings, 0 replies; 12+ messages in thread
From: Xiao Guangrong @ 2010-07-16  3:30 UTC (permalink / raw)
  To: Avi Kivity; +Cc: Marcelo Tosatti, LKML, KVM list

Sometimes, atomically set spte is not needed, this patch call __xchg_spte()
more smartly

Note: if the old mapping's access bit is already set, we no need atomic operation
since the access bit is not lost

Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
---
 arch/x86/kvm/mmu.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index fb3ae54..71e9268 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -682,9 +682,14 @@ static void rmap_remove(struct kvm *kvm, u64 *spte)
 static void set_spte_track_bits(u64 *sptep, u64 new_spte)
 {
 	pfn_t pfn;
-	u64 old_spte;
+	u64 old_spte = *sptep;
+
+	if (!shadow_accessed_mask || !is_shadow_present_pte(old_spte) ||
+	      old_spte & shadow_accessed_mask) {
+		__set_spte(sptep, new_spte);
+	} else
+		old_spte = __xchg_spte(sptep, new_spte);
 
-	old_spte = __xchg_spte(sptep, new_spte);
 	if (!is_rmap_spte(old_spte))
 		return;
 	pfn = spte_to_pfn(old_spte);
-- 
1.6.1.2



^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/6] KVM: MMU: fix forgot reserved bits check in speculative path
  2010-07-16  3:19 [PATCH v2 1/6] KVM: MMU: fix forgot reserved bits check in speculative path Xiao Guangrong
                   ` (2 preceding siblings ...)
  2010-07-16  3:28 ` [PATCH v2 5/6] KVM: MMU: cleanup spte set and accssed/dirty tracking Xiao Guangrong
@ 2010-07-21  0:36 ` Xiao Guangrong
  2010-07-21 18:39   ` Avi Kivity
  3 siblings, 1 reply; 12+ messages in thread
From: Xiao Guangrong @ 2010-07-21  0:36 UTC (permalink / raw)
  To: Avi Kivity; +Cc: Marcelo Tosatti, LKML, KVM list



Xiao Guangrong wrote:
> In the speculative path, we should check guest pte's reserved bits just as
> the real processor does
> 

Ping......?

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 3/6] KVM: MMU: fix page dirty tracking lost while sync page
  2010-07-16  3:25 ` [PATCH v2 3/6] KVM: MMU: fix page dirty tracking lost while sync page Xiao Guangrong
  2010-07-16  3:27   ` [PATCH v2 4/6] KVM: MMU: don't atomicly set spte if it's not present Xiao Guangrong
@ 2010-07-21 18:34   ` Avi Kivity
  2010-07-22  1:17     ` Xiao Guangrong
  1 sibling, 1 reply; 12+ messages in thread
From: Avi Kivity @ 2010-07-21 18:34 UTC (permalink / raw)
  To: Xiao Guangrong; +Cc: Marcelo Tosatti, LKML, KVM list

On 07/16/2010 06:25 AM, Xiao Guangrong wrote:
> In sync-page path, if spte.writable is changed, it will lose page dirty
> tracking, for example:
>
> assume spte.writable = 0 in a unsync-page, when it's synced, it map spte
> to writable(that is spte.writable = 1), later guest write spte.gfn, it means
> spte.gfn is dirty, then guest changed this mapping to read-only, after it's
> synced,  spte.writable = 0
>
> So, when host release the spte, it detect spte.writable = 0 and not mark page
> dirty
>
>    

Subtle, good catch.

>   set_pte:
> +	if (is_writable_pte(*sptep)&&  !is_writable_pte(spte))
> +		kvm_set_pfn_dirty(pfn);
>   	update_spte(sptep, spte);
>    

I think this has to be done after the tlb flush, otherwise we have

   set_pfn_dirty
   (some other cpu) write out page, mark as clean
   (some other vcpu writes through stale tlb entry)
   update_spte
   tlb flush

but perhaps mmu notifiers protect us here, if the cleaner wants to write 
out the page it has to clear the dirty bit in sptes as well, and that 
will block on mmu_lock.

Later on we can use the dirty bit instead of writeable bit, except on 
EPT.  But let's start with your fix.

-- 
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/6] KVM: MMU: fix forgot reserved bits check in speculative path
  2010-07-21  0:36 ` [PATCH v2 1/6] KVM: MMU: fix forgot reserved bits check in speculative path Xiao Guangrong
@ 2010-07-21 18:39   ` Avi Kivity
  2010-07-22  1:18     ` Xiao Guangrong
  0 siblings, 1 reply; 12+ messages in thread
From: Avi Kivity @ 2010-07-21 18:39 UTC (permalink / raw)
  To: Xiao Guangrong; +Cc: Marcelo Tosatti, LKML, KVM list

On 07/21/2010 03:36 AM, Xiao Guangrong wrote:
>
> Xiao Guangrong wrote:
>    
>> In the speculative path, we should check guest pte's reserved bits just as
>> the real processor does
>>
>>      
> Ping......?
>    

Sorry.  All looks good.  I think no change is needed to patch 3, if we 
agree on this I'll apply it as is.

-- 
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 3/6] KVM: MMU: fix page dirty tracking lost while sync page
  2010-07-21 18:34   ` [PATCH v2 3/6] KVM: MMU: fix page dirty tracking lost while sync page Avi Kivity
@ 2010-07-22  1:17     ` Xiao Guangrong
  0 siblings, 0 replies; 12+ messages in thread
From: Xiao Guangrong @ 2010-07-22  1:17 UTC (permalink / raw)
  To: Avi Kivity; +Cc: Marcelo Tosatti, LKML, KVM list



Avi Kivity wrote:

> Later on we can use the dirty bit instead of writeable bit, except on
> EPT.  But let's start with your fix.
> 

I'm doing it, will post it... :-)

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/6] KVM: MMU: fix forgot reserved bits check in speculative path
  2010-07-21 18:39   ` Avi Kivity
@ 2010-07-22  1:18     ` Xiao Guangrong
  2010-07-25  8:46       ` Avi Kivity
  0 siblings, 1 reply; 12+ messages in thread
From: Xiao Guangrong @ 2010-07-22  1:18 UTC (permalink / raw)
  To: Avi Kivity; +Cc: Marcelo Tosatti, LKML, KVM list



Avi Kivity wrote:
> On 07/21/2010 03:36 AM, Xiao Guangrong wrote:
>>
>> Xiao Guangrong wrote:
>>   
>>> In the speculative path, we should check guest pte's reserved bits
>>> just as
>>> the real processor does
>>>
>>>      
>> Ping......?
>>    
> 
> Sorry.  All looks good.  I think no change is needed to patch 3, if we
> agree on this I'll apply it as is.

Yeah, i agree, thanks, Avi.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/6] KVM: MMU: fix forgot reserved bits check in speculative path
  2010-07-22  1:18     ` Xiao Guangrong
@ 2010-07-25  8:46       ` Avi Kivity
  0 siblings, 0 replies; 12+ messages in thread
From: Avi Kivity @ 2010-07-25  8:46 UTC (permalink / raw)
  To: Xiao Guangrong; +Cc: Marcelo Tosatti, LKML, KVM list

  On 07/22/2010 04:18 AM, Xiao Guangrong wrote:
>
> Avi Kivity wrote:
>> On 07/21/2010 03:36 AM, Xiao Guangrong wrote:
>>> Xiao Guangrong wrote:
>>>
>>>> In the speculative path, we should check guest pte's reserved bits
>>>> just as
>>>> the real processor does
>>>>
>>>>
>>> Ping......?
>>>
>> Sorry.  All looks good.  I think no change is needed to patch 3, if we
>> agree on this I'll apply it as is.
> Yeah, i agree, thanks, Avi.

Now applied.

-- 
error compiling committee.c: too many arguments to function


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2010-07-25  8:47 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-07-16  3:19 [PATCH v2 1/6] KVM: MMU: fix forgot reserved bits check in speculative path Xiao Guangrong
2010-07-16  3:23 ` [PATCH v2 2/6] KVM: MMU: fix page accessed tracking lost if ept is enabled Xiao Guangrong
2010-07-16  3:25 ` [PATCH v2 3/6] KVM: MMU: fix page dirty tracking lost while sync page Xiao Guangrong
2010-07-16  3:27   ` [PATCH v2 4/6] KVM: MMU: don't atomicly set spte if it's not present Xiao Guangrong
2010-07-21 18:34   ` [PATCH v2 3/6] KVM: MMU: fix page dirty tracking lost while sync page Avi Kivity
2010-07-22  1:17     ` Xiao Guangrong
2010-07-16  3:28 ` [PATCH v2 5/6] KVM: MMU: cleanup spte set and accssed/dirty tracking Xiao Guangrong
2010-07-16  3:30   ` [PATCH v2 6/6] KVM: MMU: using __xchg_spte more smarter Xiao Guangrong
2010-07-21  0:36 ` [PATCH v2 1/6] KVM: MMU: fix forgot reserved bits check in speculative path Xiao Guangrong
2010-07-21 18:39   ` Avi Kivity
2010-07-22  1:18     ` Xiao Guangrong
2010-07-25  8:46       ` Avi Kivity

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.