Commit 951f9fd7 authored by Paolo Bonzini's avatar Paolo Bonzini

KVM: x86: manually unroll bad_mt_xwr loop

The loop is computing one of two constants, it can be simpler to write
everything inline.
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 089d7b6e
...@@ -3706,7 +3706,7 @@ static void ...@@ -3706,7 +3706,7 @@ static void
__reset_rsvds_bits_mask_ept(struct rsvd_bits_validate *rsvd_check, __reset_rsvds_bits_mask_ept(struct rsvd_bits_validate *rsvd_check,
int maxphyaddr, bool execonly) int maxphyaddr, bool execonly)
{ {
int pte; u64 bad_mt_xwr;
rsvd_check->rsvd_bits_mask[0][3] = rsvd_check->rsvd_bits_mask[0][3] =
rsvd_bits(maxphyaddr, 51) | rsvd_bits(3, 7); rsvd_bits(maxphyaddr, 51) | rsvd_bits(3, 7);
...@@ -3724,14 +3724,16 @@ __reset_rsvds_bits_mask_ept(struct rsvd_bits_validate *rsvd_check, ...@@ -3724,14 +3724,16 @@ __reset_rsvds_bits_mask_ept(struct rsvd_bits_validate *rsvd_check,
rsvd_bits(maxphyaddr, 51) | rsvd_bits(12, 20); rsvd_bits(maxphyaddr, 51) | rsvd_bits(12, 20);
rsvd_check->rsvd_bits_mask[1][0] = rsvd_check->rsvd_bits_mask[0][0]; rsvd_check->rsvd_bits_mask[1][0] = rsvd_check->rsvd_bits_mask[0][0];
for (pte = 0; pte < 64; pte++) { bad_mt_xwr = 0xFFull << (2 * 8); /* bits 3..5 must not be 2 */
int rwx_bits = pte & 7; bad_mt_xwr |= 0xFFull << (3 * 8); /* bits 3..5 must not be 3 */
int mt = pte >> 3; bad_mt_xwr |= 0xFFull << (7 * 8); /* bits 3..5 must not be 7 */
if (mt == 0x2 || mt == 0x3 || mt == 0x7 || bad_mt_xwr |= REPEAT_BYTE(1ull << 2); /* bits 0..2 must not be 010 */
rwx_bits == 0x2 || rwx_bits == 0x6 || bad_mt_xwr |= REPEAT_BYTE(1ull << 6); /* bits 0..2 must not be 110 */
(rwx_bits == 0x4 && !execonly)) if (!execonly) {
rsvd_check->bad_mt_xwr |= (1ull << pte); /* bits 0..2 must not be 100 unless VMX capabilities allow it */
bad_mt_xwr |= REPEAT_BYTE(1ull << 4);
} }
rsvd_check->bad_mt_xwr = bad_mt_xwr;
} }
static void reset_rsvds_bits_mask_ept(struct kvm_vcpu *vcpu, static void reset_rsvds_bits_mask_ept(struct kvm_vcpu *vcpu,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment