u64 fault_address, char *insn, int insn_len)
 {
        int r = 1;
+       u32 flags = vcpu->arch.apf.host_apf_flags;
 
 #ifndef CONFIG_X86_64
        /* A 64-bit CR2 should be impossible on 32-bit KVM. */
 #endif
 
        vcpu->arch.l1tf_flush_l1d = true;
-       switch (vcpu->arch.apf.host_apf_flags) {
-       default:
+       if (!flags) {
                trace_kvm_page_fault(fault_address, error_code);
 
                if (kvm_event_needs_reinjection(vcpu))
                        kvm_mmu_unprotect_page_virt(vcpu, fault_address);
                r = kvm_mmu_page_fault(vcpu, fault_address, error_code, insn,
                                insn_len);
-               break;
-       case KVM_PV_REASON_PAGE_NOT_PRESENT:
+       } else if (flags & KVM_PV_REASON_PAGE_NOT_PRESENT) {
                vcpu->arch.apf.host_apf_flags = 0;
                local_irq_disable();
                kvm_async_pf_task_wait_schedule(fault_address);
                local_irq_enable();
-               break;
-       case KVM_PV_REASON_PAGE_READY:
-               vcpu->arch.apf.host_apf_flags = 0;
-               local_irq_disable();
-               kvm_async_pf_task_wake(fault_address);
-               local_irq_enable();
-               break;
+       } else {
+               WARN_ONCE(1, "Unexpected host async PF flags: %x\n", flags);
        }
+
        return r;
 }
 EXPORT_SYMBOL_GPL(kvm_handle_page_fault);