On Wednesday 06 January 2010 17:19:15 Marcelo Tosatti wrote: > On Tue, Jan 05, 2010 at 07:02:29PM +0800, Sheng Yang wrote: > > Signed-off-by: Sheng Yang <sheng@xxxxxxxxxxxxxxx> > > --- > > arch/x86/include/asm/vmx.h | 1 + > > arch/x86/kvm/mmu.c | 8 +++++--- > > arch/x86/kvm/vmx.c | 11 ++++++++++- > > 3 files changed, 16 insertions(+), 4 deletions(-) > > > > diff --git a/arch/x86/include/asm/vmx.h b/arch/x86/include/asm/vmx.h > > index 713ed9a..43f1e9b 100644 > > --- a/arch/x86/include/asm/vmx.h > > +++ b/arch/x86/include/asm/vmx.h > > @@ -364,6 +364,7 @@ enum vmcs_field { > > #define VMX_EPTP_UC_BIT (1ull << 8) > > #define VMX_EPTP_WB_BIT (1ull << 14) > > #define VMX_EPT_2MB_PAGE_BIT (1ull << 16) > > +#define VMX_EPT_1GB_PAGE_BIT (1ull << 17) > > #define VMX_EPT_EXTENT_INDIVIDUAL_BIT (1ull << 24) > > #define VMX_EPT_EXTENT_CONTEXT_BIT (1ull << 25) > > #define VMX_EPT_EXTENT_GLOBAL_BIT (1ull << 26) > > diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c > > index 43cf2ea..9012541 100644 > > --- a/arch/x86/kvm/mmu.c > > +++ b/arch/x86/kvm/mmu.c > > @@ -499,8 +499,7 @@ out: > > static int mapping_level(struct kvm_vcpu *vcpu, gfn_t large_gfn) > > { > > struct kvm_memory_slot *slot; > > - int host_level; > > - int level = PT_PAGE_TABLE_LEVEL; > > + int host_level, level, max_level; > > > > slot = gfn_to_memslot(vcpu->kvm, large_gfn); > > if (slot && slot->dirty_bitmap) > > @@ -511,7 +510,10 @@ static int mapping_level(struct kvm_vcpu *vcpu, > > gfn_t large_gfn) if (host_level == PT_PAGE_TABLE_LEVEL) > > return host_level; > > > > - for (level = PT_DIRECTORY_LEVEL; level <= host_level; ++level) > > + max_level = kvm_x86_ops->get_lpage_level() < host_level ? > > + kvm_x86_ops->get_lpage_level() : host_level; > > + > > BUG_ON(kvm_x86_ops->get_lpage_level() < host_level) instead? See > the if (host_level == PT_PAGE_TABLE_LEVEL) above. Sorry, I don't understand... Here, EPT can support either 2MB or 1GB page at most, So we represent the value through get_lpage_level(). Now 1GB page backed host memory can still using by 2MB page backed EPT if 1GB page EPT is not supported in the processor. -- regards Yang, Sheng -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html