From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takuya Yoshikawa Subject: [PATCH 3/4] KVM: MMU: Update walker->pt/pte_access directly Date: Thu, 9 Jun 2011 23:03:52 +0900 Message-ID: <20110609230352.4cc6fcea.takuya.yoshikawa@gmail.com> References: <20110609225949.91cce4a0.takuya.yoshikawa@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, yoshikawa.takuya@oss.ntt.co.jp, mingo@elte.hu To: avi@redhat.com, mtosatti@redhat.com Return-path: Received: from mail-px0-f179.google.com ([209.85.212.179]:59077 "EHLO mail-px0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757965Ab1FIOD4 (ORCPT ); Thu, 9 Jun 2011 10:03:56 -0400 Received: by pxi2 with SMTP id 2so1064709pxi.10 for ; Thu, 09 Jun 2011 07:03:56 -0700 (PDT) In-Reply-To: <20110609225949.91cce4a0.takuya.yoshikawa@gmail.com> Sender: kvm-owner@vger.kernel.org List-ID: From: Takuya Yoshikawa This will help us split out the big body of the walk loop later. The only functional change is when we return from walk_addr_generic() with with an error. The original code did not change these but the new one may change. But this should be safe unless callers use these on that case. Signed-off-by: Takuya Yoshikawa --- arch/x86/kvm/paging_tmpl.h | 12 +++++------- 1 files changed, 5 insertions(+), 7 deletions(-) diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h index 3270789..711336b 100644 --- a/arch/x86/kvm/paging_tmpl.h +++ b/arch/x86/kvm/paging_tmpl.h @@ -122,7 +122,6 @@ static int FNAME(walk_addr_generic)(struct guest_walker *walker, { pt_element_t pte; pt_element_t __user *ptep_user; - unsigned pt_access, uninitialized_var(pte_access); bool eperm; const int write_fault = access & PFERR_WRITE_MASK; const int user_fault = access & PFERR_USER_MASK; @@ -150,7 +149,7 @@ walk: ASSERT((!is_long_mode(vcpu) && is_pae(vcpu)) || (mmu->get_cr3(vcpu) & CR3_NONPAE_RESERVED_BITS) == 0); - pt_access = ACC_ALL; + walker->pt_access = ACC_ALL; for (;;) { gfn_t real_gfn; @@ -224,7 +223,8 @@ walk: pte |= PT_ACCESSED_MASK; } - pte_access = pt_access & FNAME(gpte_access)(vcpu, pte); + walker->pte_access = walker->pt_access & + FNAME(gpte_access)(vcpu, pte); walker->ptes[walker->level - 1] = pte; @@ -260,7 +260,7 @@ walk: break; } - pt_access = pte_access; + walker->pt_access = walker->pte_access; --walker->level; } @@ -286,10 +286,8 @@ walk: walker->ptes[walker->level - 1] = pte; } - walker->pt_access = pt_access; - walker->pte_access = pte_access; pgprintk("%s: pte %llx pte_access %x pt_access %x\n", - __func__, (u64)pte, pte_access, pt_access); + __func__, (u64)pte, walker->pte_access, walker->pt_access); return 1; error: -- 1.7.4.1