Re: [PATCH 4/4] KVM: VMX: Enable EPT 1GB page support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux