Jelajahi Sumber

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>
Avi Kivity 16 tahun lalu
induk
melakukan
25e2343246
1 mengubah file dengan 2 tambahan dan 0 penghapusan
  1. 2 0
      arch/x86/kvm/mmu.c

+ 2 - 0
arch/x86/kvm/mmu.c

@@ -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) {