Messages in this thread | | | Subject | Re: [PATCH RFC 1/6] Revert "KVM: async_pf: Fix #DF due to inject "Page not Present" and "Page Ready" exceptions simultaneously" | From | Gavin Shan <> | Date | Tue, 5 May 2020 11:22:13 +1000 |
| |
On 4/29/20 7:36 PM, Vitaly Kuznetsov wrote: > Commit 9a6e7c39810e (""KVM: async_pf: Fix #DF due to inject "Page not > Present" and "Page Ready" exceptions simultaneously") added a protection > against 'page ready' notification coming before 'page not ready' is > delivered. This situation seems to be impossible since commit 2a266f23550b > ("KVM MMU: check pending exception before injecting APF) which added > 'vcpu->arch.exception.pending' check to kvm_can_do_async_pf. > > On x86, kvm_arch_async_page_present() has only one call site: > kvm_check_async_pf_completion() loop and we only enter the loop when > kvm_arch_can_inject_async_page_present(vcpu) which when async pf msr > is enabled, translates into kvm_can_do_async_pf(). > > There is also one problem with the cancellation mechanism. We don't seem > to check that the 'page not ready' notification we're cancelling matches > the 'page ready' notification so in theory, we may erroneously drop two > valid events. > > Revert the commit. apf_get_user() stays as we will need it for the new > 'page ready notifications via interrupt' mechanism. > > Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> > --- > arch/x86/kvm/x86.c | 16 +--------------- > 1 file changed, 1 insertion(+), 15 deletions(-) >
Reviewed-by: Gavin Shan <gshan@redhat.com>
| |