Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3b4dc3a0 authored by Marcelo Tosatti's avatar Marcelo Tosatti Committed by Avi Kivity
Browse files

KVM: move postcommit flush to x86, as mmio sptes are x86 specific



Other arches do not need this.

Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>

v2: fix incorrect deletion of mmio sptes on gpa move (noticed by Takuya)
Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
parent 12d6e753
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -6445,6 +6445,14 @@ void kvm_arch_commit_memory_region(struct kvm *kvm,
		kvm_mmu_change_mmu_pages(kvm, nr_mmu_pages);
		kvm_mmu_change_mmu_pages(kvm, nr_mmu_pages);
	kvm_mmu_slot_remove_write_access(kvm, mem->slot);
	kvm_mmu_slot_remove_write_access(kvm, mem->slot);
	spin_unlock(&kvm->mmu_lock);
	spin_unlock(&kvm->mmu_lock);
	/*
	 * If memory slot is created, or moved, we need to clear all
	 * mmio sptes.
	 */
	if (npages && old.base_gfn != mem->guest_phys_addr >> PAGE_SHIFT) {
		kvm_mmu_zap_all(kvm);
		kvm_reload_remote_mmus(kvm);
	}
}
}


void kvm_arch_flush_shadow_all(struct kvm *kvm)
void kvm_arch_flush_shadow_all(struct kvm *kvm)
+0 −7
Original line number Original line Diff line number Diff line
@@ -849,13 +849,6 @@ int __kvm_set_memory_region(struct kvm *kvm,


	kvm_arch_commit_memory_region(kvm, mem, old, user_alloc);
	kvm_arch_commit_memory_region(kvm, mem, old, user_alloc);


	/*
	 * If the new memory slot is created, we need to clear all
	 * mmio sptes.
	 */
	if (npages && old.base_gfn != mem->guest_phys_addr >> PAGE_SHIFT)
		kvm_arch_flush_shadow_all(kvm);

	kvm_free_physmem_slot(&old, &new);
	kvm_free_physmem_slot(&old, &new);
	kfree(old_memslots);
	kfree(old_memslots);