KVM: MMU: clear apfs if page state is changed
If CR0.PG is changed, the page fault cann't be avoid when the prefault address is accessed later And it also fix a bug: it can retry a page enabled #PF in page disabled context if mmu is shadow page This idear is from Gleb Natapov Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
5054c0de66
commit
e5f3f02796
|
@ -520,6 +520,9 @@ int kvm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)
|
||||||
|
|
||||||
kvm_x86_ops->set_cr0(vcpu, cr0);
|
kvm_x86_ops->set_cr0(vcpu, cr0);
|
||||||
|
|
||||||
|
if ((cr0 ^ old_cr0) & X86_CR0_PG)
|
||||||
|
kvm_clear_async_pf_completion_queue(vcpu);
|
||||||
|
|
||||||
if ((cr0 ^ old_cr0) & update_bits)
|
if ((cr0 ^ old_cr0) & update_bits)
|
||||||
kvm_mmu_reset_context(vcpu);
|
kvm_mmu_reset_context(vcpu);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue