History

KVM: MMU: micro-optimize gpte_access

Avoid AND-NOT, most x86 processor lack an instruction for it.

Paolo Bonzini committed 10 years ago

Commit bb9eadf1 parent 6bb69c91 file · +5 −2Browse files

Unified · Split

arch/x86/kvm/paging_tmpl.h+5−2
@@ -189,8 +189,11 @@ static inline unsigned FNAME(gpte_access)(struct kvm_vcpu *vcpu, u64 gpte) · 188 unmodified lines
189189 ((gpte & VMX_EPT_EXECUTABLE_MASK) ? ACC_EXEC_MASK : 0) |
190190 ACC_USER_MASK;
191191 #else
192− access = (gpte & (PT_WRITABLE_MASK | PT_USER_MASK)) | ACC_EXEC_MASK;
193− access &= ~(gpte >> PT64_NX_SHIFT);
192+ BUILD_BUG_ON(ACC_EXEC_MASK != PT_PRESENT_MASK);
193+ BUILD_BUG_ON(ACC_EXEC_MASK != 1);
194+ access = gpte & (PT_WRITABLE_MASK | PT_USER_MASK | PT_PRESENT_MASK);
195+ /* Combine NX with P (which is set here) to get ACC_EXEC_MASK. */
196+ access ^= (gpte >> PT64_NX_SHIFT);
194197 #endif
195198
196199 return access;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t