From: Paolo Bonzini <pbonzini@redhat.com>
To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org
Cc: Takuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp>,
Xiao Guangrong <guangrong.xiao@linux.intel.com>
Subject: [PATCH 9/9] KVM: MMU: micro-optimize gpte_access
Date: Mon, 7 Mar 2016 15:15:55 +0100 [thread overview]
Message-ID: <1457360155-9610-11-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1457360155-9610-1-git-send-email-pbonzini@redhat.com>
Avoid AND-NOT, most x86 processor lack an instruction for it.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
arch/x86/kvm/paging_tmpl.h | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
index a1f5459edcec..6013f3685ef4 100644
--- a/arch/x86/kvm/paging_tmpl.h
+++ b/arch/x86/kvm/paging_tmpl.h
@@ -189,8 +189,11 @@ static inline unsigned FNAME(gpte_access)(struct kvm_vcpu *vcpu, u64 gpte)
((gpte & VMX_EPT_EXECUTABLE_MASK) ? ACC_EXEC_MASK : 0) |
ACC_USER_MASK;
#else
- access = (gpte & (PT_WRITABLE_MASK | PT_USER_MASK)) | ACC_EXEC_MASK;
- access &= ~(gpte >> PT64_NX_SHIFT);
+ BUILD_BUG_ON(ACC_EXEC_MASK != PT_PRESENT_MASK);
+ BUILD_BUG_ON(ACC_EXEC_MASK != 1);
+ access = gpte & (PT_WRITABLE_MASK | PT_USER_MASK | PT_PRESENT_MASK);
+ /* Combine NX with P (which is set here) to get ACC_EXEC_MASK. */
+ access ^= (gpte >> PT64_NX_SHIFT);
#endif
return access;
--
1.8.3.1
next prev parent reply other threads:[~2016-03-07 14:17 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-07 14:15 [PATCH v2 0/9] cleanup around kvm_sync_page, and a few micro-optimizations Paolo Bonzini
2016-03-07 14:15 ` Paolo Bonzini
2016-03-08 8:00 ` Takuya Yoshikawa
2016-03-08 8:30 ` Paolo Bonzini
2016-03-08 8:33 ` Takuya Yoshikawa
2016-03-07 14:15 ` [PATCH 1/9] KVM: MMU: introduce kvm_mmu_flush_or_zap Paolo Bonzini
2016-03-07 14:15 ` [PATCH 2/9] KVM: MMU: move TLB flush out of __kvm_sync_page Paolo Bonzini
2016-03-07 14:15 ` [PATCH 3/9] KVM: MMU: use kvm_sync_page in kvm_sync_pages Paolo Bonzini
2016-03-07 14:15 ` [PATCH 4/9] KVM: MMU: cleanup __kvm_sync_page and its callers Paolo Bonzini
2016-03-07 14:15 ` [PATCH 5/9] KVM: MMU: invert return value of mmu.sync_page and *kvm_sync_page* Paolo Bonzini
2016-03-07 14:15 ` [PATCH 6/9] KVM: MMU: move zap/flush to kvm_mmu_get_page Paolo Bonzini
2016-03-07 14:15 ` [PATCH 7/9] KVM: MMU: coalesce more page zapping in mmu_sync_children Paolo Bonzini
2016-03-07 14:15 ` [PATCH 8/9] KVM: MMU: simplify is_last_gpte Paolo Bonzini
2016-03-07 14:15 ` Paolo Bonzini [this message]
2016-03-09 7:12 ` [PATCH v2 0/9] cleanup around kvm_sync_page, and a few micro-optimizations Xiao Guangrong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1457360155-9610-11-git-send-email-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=guangrong.xiao@linux.intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=yoshikawa_takuya_b1@lab.ntt.co.jp \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®