From: Takuya Yoshikawa Date: Fri, 18 Dec 2015 09:54:49 +0000 (+0900) Subject: KVM: x86: MMU: Use clear_page() instead of init_shadow_page_table() X-Git-Tag: v4.5-rc1~138^2~18 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=774926641d1968a4839da3a6ac79d914742aac2f;p=karo-tx-linux.git KVM: x86: MMU: Use clear_page() instead of init_shadow_page_table() Not just in order to clean up the code, but to make it faster by using enhanced instructions: the initialization became 20-30% faster on our testing machine. Signed-off-by: Takuya Yoshikawa Signed-off-by: Paolo Bonzini --- diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index a1a3d1907fdc..7f5a82bb61e9 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c @@ -2041,14 +2041,6 @@ static void mmu_sync_children(struct kvm_vcpu *vcpu, } } -static void init_shadow_page_table(struct kvm_mmu_page *sp) -{ - int i; - - for (i = 0; i < PT64_ENT_PER_PAGE; ++i) - sp->spt[i] = 0ull; -} - static void __clear_sp_write_flooding_count(struct kvm_mmu_page *sp) { sp->write_flooding_count = 0; @@ -2128,7 +2120,7 @@ static struct kvm_mmu_page *kvm_mmu_get_page(struct kvm_vcpu *vcpu, account_shadowed(vcpu->kvm, sp); } sp->mmu_valid_gen = vcpu->kvm->arch.mmu_valid_gen; - init_shadow_page_table(sp); + clear_page(sp->spt); trace_kvm_mmu_get_page(sp, true); return sp; }