* [PATCH] KVM: Discard reserved bits checking on PDE bit 7-8
@ 2009-04-02 2:28 Sheng Yang
2009-04-02 8:58 ` Avi Kivity
0 siblings, 1 reply; 2+ messages in thread
From: Sheng Yang @ 2009-04-02 2:28 UTC (permalink / raw)
To: Avi Kivity; +Cc: Eddie Dong, kvm, Sheng Yang
1. It's related to a Linux kernel bug which fixed by Ingo on
07a66d7c53a538e1a9759954a82bb6c07365eff9. 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>
---
arch/x86/kvm/mmu.c | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index e0f63b6..a0b130d 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -2196,7 +2196,7 @@ static void reset_rsvds_bits_mask(struct kvm_vcpu *vcpu, int level)
break;
case PT32E_ROOT_LEVEL:
context->rsvd_bits_mask[0][1] = exb_bit_rsvd |
- rsvd_bits(maxphyaddr, 62); /* PDE */
+ rsvd_bits(maxphyaddr, 62); /* PDE */
context->rsvd_bits_mask[0][0] = exb_bit_rsvd |
rsvd_bits(maxphyaddr, 62); /* PTE */
context->rsvd_bits_mask[1][1] = exb_bit_rsvd |
@@ -2210,13 +2210,14 @@ static void reset_rsvds_bits_mask(struct kvm_vcpu *vcpu, int level)
context->rsvd_bits_mask[0][2] = exb_bit_rsvd |
rsvd_bits(maxphyaddr, 51) | rsvd_bits(7, 8);
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 |
rsvd_bits(maxphyaddr, 51);
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][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;
break;
}
--
1.5.4.5
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] KVM: Discard reserved bits checking on PDE bit 7-8
2009-04-02 2:28 [PATCH] KVM: Discard reserved bits checking on PDE bit 7-8 Sheng Yang
@ 2009-04-02 8:58 ` Avi Kivity
0 siblings, 0 replies; 2+ messages in thread
From: Avi Kivity @ 2009-04-02 8:58 UTC (permalink / raw)
To: Sheng Yang; +Cc: Eddie Dong, kvm
Sheng Yang wrote:
> 1. It's related to a Linux kernel bug which fixed by Ingo on
> 07a66d7c53a538e1a9759954a82bb6c07365eff9. 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...
>
Applied, thanks.
--
error compiling committee.c: too many arguments to function
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-04-02 8:58 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-04-02 2:28 [PATCH] KVM: Discard reserved bits checking on PDE bit 7-8 Sheng Yang
2009-04-02 8:58 ` Avi Kivity
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).