KVM: MMU: Discard reserved bits checking on PDE bit 7-8
1. It's related to a Linux kernel bug which fixed by Ingo on
07a66d7c53
. The original code exists for quite a
long time, and it would convert a PDE for large page into a normal PDE. But it
fail to fit normal PDE well. With the code before Ingo's fix, the kernel would
fall reserved bit checking with bit 8 - the remaining global bit of PTE. So the
kernel would receive a double-fault.
2. After discussion, we decide to discard PDE bit 7-8 reserved checking for now.
For this marked as reserved in SDM, but didn't checked by the processor in
fact...
Signed-off-by: Sheng Yang <sheng@linux.intel.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
Родитель
64a7ec0668
Коммит
4c26b4cd6f
|
@ -2208,13 +2208,14 @@ static void reset_rsvds_bits_mask(struct kvm_vcpu *vcpu, int level)
|
||||||
context->rsvd_bits_mask[0][2] = exb_bit_rsvd |
|
context->rsvd_bits_mask[0][2] = exb_bit_rsvd |
|
||||||
rsvd_bits(maxphyaddr, 51) | rsvd_bits(7, 8);
|
rsvd_bits(maxphyaddr, 51) | rsvd_bits(7, 8);
|
||||||
context->rsvd_bits_mask[0][1] = exb_bit_rsvd |
|
context->rsvd_bits_mask[0][1] = exb_bit_rsvd |
|
||||||
rsvd_bits(maxphyaddr, 51) | rsvd_bits(7, 8);
|
rsvd_bits(maxphyaddr, 51);
|
||||||
context->rsvd_bits_mask[0][0] = exb_bit_rsvd |
|
context->rsvd_bits_mask[0][0] = exb_bit_rsvd |
|
||||||
rsvd_bits(maxphyaddr, 51);
|
rsvd_bits(maxphyaddr, 51);
|
||||||
context->rsvd_bits_mask[1][3] = context->rsvd_bits_mask[0][3];
|
context->rsvd_bits_mask[1][3] = context->rsvd_bits_mask[0][3];
|
||||||
context->rsvd_bits_mask[1][2] = context->rsvd_bits_mask[0][2];
|
context->rsvd_bits_mask[1][2] = context->rsvd_bits_mask[0][2];
|
||||||
context->rsvd_bits_mask[1][1] = exb_bit_rsvd |
|
context->rsvd_bits_mask[1][1] = exb_bit_rsvd |
|
||||||
rsvd_bits(maxphyaddr, 51) | rsvd_bits(13, 20);
|
rsvd_bits(maxphyaddr, 51) |
|
||||||
|
rsvd_bits(13, 20); /* large page */
|
||||||
context->rsvd_bits_mask[1][0] = ~0ull;
|
context->rsvd_bits_mask[1][0] = ~0ull;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче