Re: [patch 2/5] KVM: MMU: make for_each_shadow_entry aware of largepages

2009-06-11 Thread Marcelo Tosatti
On Wed, Jun 10, 2009 at 12:21:05PM +0300, Avi Kivity wrote:
 Avi Kivity wrote:
 Marcelo Tosatti wrote:
 This way there is no need to add explicit checks in every
 for_each_shadow_entry user.

 Signed-off-by: Marcelo Tosatti mtosa...@redhat.com

 Index: kvm/arch/x86/kvm/mmu.c
 ===
 --- kvm.orig/arch/x86/kvm/mmu.c
 +++ kvm/arch/x86/kvm/mmu.c
 @@ -1273,6 +1273,11 @@ static bool shadow_walk_okay(struct kvm_
  {
  if (iterator-level  PT_PAGE_TABLE_LEVEL)
  return false;
 +
 +if (iterator-level == PT_PAGE_TABLE_LEVEL)
 +if (is_large_pte(*iterator-sptep))
 +return false;

   
 s/==//?


 Ah, it's actually fine.  But changing == to = will make it 1GBpage-ready.

Humpf, better check level explicitly before interpreting bit 7, so lets 
skip this for 1GB pages.

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[patch 2/5] KVM: MMU: make for_each_shadow_entry aware of largepages

2009-06-11 Thread Marcelo Tosatti
This way there is no need to add explicit checks in every
for_each_shadow_entry user.

Signed-off-by: Marcelo Tosatti mtosa...@redhat.com

Index: kvm/arch/x86/kvm/mmu.c
===
--- kvm.orig/arch/x86/kvm/mmu.c
+++ kvm/arch/x86/kvm/mmu.c
@@ -1273,6 +1273,11 @@ static bool shadow_walk_okay(struct kvm_
 {
if (iterator-level  PT_PAGE_TABLE_LEVEL)
return false;
+
+   if (iterator-level == PT_PAGE_TABLE_LEVEL)
+   if (is_large_pte(*iterator-sptep))
+   return false;
+
iterator-index = SHADOW_PT_INDEX(iterator-addr, iterator-level);
iterator-sptep = ((u64 *)__va(iterator-shadow_addr)) + 
iterator-index;
return true;

-- 

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[patch 2/5] KVM: MMU: make for_each_shadow_entry aware of largepages

2009-06-11 Thread Marcelo Tosatti
This way there is no need to add explicit checks in every
for_each_shadow_entry user.

Signed-off-by: Marcelo Tosatti mtosa...@redhat.com

Index: kvm/arch/x86/kvm/mmu.c
===
--- kvm.orig/arch/x86/kvm/mmu.c
+++ kvm/arch/x86/kvm/mmu.c
@@ -1273,6 +1273,11 @@ static bool shadow_walk_okay(struct kvm_
 {
if (iterator-level  PT_PAGE_TABLE_LEVEL)
return false;
+
+   if (iterator-level == PT_PAGE_TABLE_LEVEL)
+   if (is_large_pte(*iterator-sptep))
+   return false;
+
iterator-index = SHADOW_PT_INDEX(iterator-addr, iterator-level);
iterator-sptep = ((u64 *)__va(iterator-shadow_addr)) + 
iterator-index;
return true;

-- 

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [patch 2/5] KVM: MMU: make for_each_shadow_entry aware of largepages

2009-06-10 Thread Avi Kivity

Marcelo Tosatti wrote:

This way there is no need to add explicit checks in every
for_each_shadow_entry user.

Signed-off-by: Marcelo Tosatti mtosa...@redhat.com

Index: kvm/arch/x86/kvm/mmu.c
===
--- kvm.orig/arch/x86/kvm/mmu.c
+++ kvm/arch/x86/kvm/mmu.c
@@ -1273,6 +1273,11 @@ static bool shadow_walk_okay(struct kvm_
 {
if (iterator-level  PT_PAGE_TABLE_LEVEL)
return false;
+
+   if (iterator-level == PT_PAGE_TABLE_LEVEL)
+   if (is_large_pte(*iterator-sptep))
+   return false;

  

s/==//?

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

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [patch 2/5] KVM: MMU: make for_each_shadow_entry aware of largepages

2009-06-10 Thread Avi Kivity

Avi Kivity wrote:

Marcelo Tosatti wrote:

This way there is no need to add explicit checks in every
for_each_shadow_entry user.

Signed-off-by: Marcelo Tosatti mtosa...@redhat.com

Index: kvm/arch/x86/kvm/mmu.c
===
--- kvm.orig/arch/x86/kvm/mmu.c
+++ kvm/arch/x86/kvm/mmu.c
@@ -1273,6 +1273,11 @@ static bool shadow_walk_okay(struct kvm_
 {
 if (iterator-level  PT_PAGE_TABLE_LEVEL)
 return false;
+
+if (iterator-level == PT_PAGE_TABLE_LEVEL)
+if (is_large_pte(*iterator-sptep))
+return false;

  

s/==//?



Ah, it's actually fine.  But changing == to = will make it 1GBpage-ready.

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

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[patch 2/5] KVM: MMU: make for_each_shadow_entry aware of largepages

2009-06-09 Thread Marcelo Tosatti
This way there is no need to add explicit checks in every
for_each_shadow_entry user.

Signed-off-by: Marcelo Tosatti mtosa...@redhat.com

Index: kvm/arch/x86/kvm/mmu.c
===
--- kvm.orig/arch/x86/kvm/mmu.c
+++ kvm/arch/x86/kvm/mmu.c
@@ -1273,6 +1273,11 @@ static bool shadow_walk_okay(struct kvm_
 {
if (iterator-level  PT_PAGE_TABLE_LEVEL)
return false;
+
+   if (iterator-level == PT_PAGE_TABLE_LEVEL)
+   if (is_large_pte(*iterator-sptep))
+   return false;
+
iterator-index = SHADOW_PT_INDEX(iterator-addr, iterator-level);
iterator-sptep = ((u64 *)__va(iterator-shadow_addr)) + 
iterator-index;
return true;


--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html