KVM: MMU: Don't treat a global pte as such if cr4.pge is cleared
The pte.g bit is meaningless if global pages are disabled; deferring mmu page synchronization on these ptes will lead to the guest using stale shadow ptes. Fixes Vista x86 smp bootloader failure. Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
fe634fd46f
commit
25e2343246
@ -1669,6 +1669,8 @@ static int set_spte(struct kvm_vcpu *vcpu, u64 *shadow_pte,
|
|||||||
u64 mt_mask = shadow_mt_mask;
|
u64 mt_mask = shadow_mt_mask;
|
||||||
struct kvm_mmu_page *sp = page_header(__pa(shadow_pte));
|
struct kvm_mmu_page *sp = page_header(__pa(shadow_pte));
|
||||||
|
|
||||||
|
if (!(vcpu->arch.cr4 & X86_CR4_PGE))
|
||||||
|
global = 0;
|
||||||
if (!global && sp->global) {
|
if (!global && sp->global) {
|
||||||
sp->global = 0;
|
sp->global = 0;
|
||||||
if (sp->unsync) {
|
if (sp->unsync) {
|
||||||
|
Loading…
Reference in New Issue
Block a user