From patchwork Tue Apr 27 00:00:05 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Northup X-Patchwork-Id: 95245 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o3R00PD1032707 for ; Tue, 27 Apr 2010 00:00:26 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753284Ab0D0AAW (ORCPT ); Mon, 26 Apr 2010 20:00:22 -0400 Received: from smtp-out.google.com ([74.125.121.35]:62928 "EHLO smtp-out.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752841Ab0D0AAV (ORCPT ); Mon, 26 Apr 2010 20:00:21 -0400 Received: from hpaq12.eem.corp.google.com (hpaq12.eem.corp.google.com [10.3.21.12]) by smtp-out.google.com with ESMTP id o3R00JN0010752 for ; Tue, 27 Apr 2010 02:00:19 +0200 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=google.com; s=beta; t=1272326419; bh=UKfe2/DUUfzKXoeVkJYSH51SfGY=; h=MIME-Version:In-Reply-To:References:Date:Message-ID:Subject:From: To:Cc:Content-Type; b=Hmslt6vsuNDgPJn5CZxDMnYq3NnHjvNFGGtPxAmiU7LMmtgGpxfm0T5kV7LMx0XDz B/fDjCMadQuM4KOXOmhTw== DomainKey-Signature: a=rsa-sha1; s=beta; d=google.com; c=nofws; q=dns; h=mime-version:in-reply-to:references:date:message-id:subject:from:to: cc:content-type:x-system-of-record; b=Oij9xjrQm/XvNfWi5vY1elNNxVXlMlzQjUznMlQHF/Dlo17N9IAnxdBaYYkSXrRUZ OcSDCT/O7sQUO8Q9EI3Gg== Received: from pwj7 (pwj7.prod.google.com [10.241.219.71]) by hpaq12.eem.corp.google.com with ESMTP id o3R0067w001678 for ; Tue, 27 Apr 2010 02:00:07 +0200 Received: by pwj7 with SMTP id 7so12895061pwj.2 for ; Mon, 26 Apr 2010 17:00:06 -0700 (PDT) MIME-Version: 1.0 Received: by 10.143.21.14 with SMTP id y14mr2548050wfi.43.1272326405947; Mon, 26 Apr 2010 17:00:05 -0700 (PDT) Received: by 10.142.195.15 with HTTP; Mon, 26 Apr 2010 17:00:05 -0700 (PDT) In-Reply-To: <20100426214620.GA27460@amt.cnet> References: <20100426213000.GK21425@amt.cnet> <20100426214620.GA27460@amt.cnet> Date: Mon, 26 Apr 2010 17:00:05 -0700 Message-ID: Subject: Re: [PATCH RFC] KVM MMU: fix hashing for TDP and non-paging modes From: Eric Northup To: Marcelo Tosatti Cc: kvm@vger.kernel.org X-System-Of-Record: true Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Tue, 27 Apr 2010 00:00:26 +0000 (UTC) diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index ddfa865..9696d65 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c @@ -2059,10 +2059,12 @@ static int mmu_alloc_roots(struct kvm_vcpu *vcpu) hpa_t root = vcpu->arch.mmu.root_hpa; ASSERT(!VALID_PAGE(root)); - if (tdp_enabled) - direct = 1; if (mmu_check_root(vcpu, root_gfn)) return 1; + if (tdp_enabled) { + direct = 1; + root_gfn = 0; + } sp = kvm_mmu_get_page(vcpu, root_gfn, 0, PT64_ROOT_LEVEL, direct, ACC_ALL, NULL); @@ -2072,8 +2074,6 @@ static int mmu_alloc_roots(struct kvm_vcpu *vcpu) return 0; } direct = !is_paging(vcpu); - if (tdp_enabled) - direct = 1; for (i = 0; i < 4; ++i) { hpa_t root = vcpu->arch.mmu.pae_root[i]; @@ -2089,6 +2089,10 @@ static int mmu_alloc_roots(struct kvm_vcpu *vcpu) root_gfn = 0; if (mmu_check_root(vcpu, root_gfn)) return 1; + if (tdp_enabled) { + direct = 1; + root_gfn = i << 30; + } sp = kvm_mmu_get_page(vcpu, root_gfn, i << 30, PT32_ROOT_LEVEL, direct, ACC_ALL, NULL);