On Wed, Aug 17, 2022, Sean Christopherson wrote: > Side topic, usage of kvm_apic_accept_events() appears to be broken (though nothing > can trigger the bug). If kvm_apic_accept_events() were to return an -errno, then > kvm_arch_vcpu_ioctl_run() would return '0' to userspace without updating > vcpu->run->exit_reason. I think an easy fix is to drop the return value entirely > and then WARN if kvm_check_nested_events() returns something other than -EBUSY. > > if (is_guest_mode(vcpu)) { > r = kvm_check_nested_events(vcpu); > if (r < 0) { > WARN_ON_ONCE(r != -EBUSY); > return; > } For posterity, I was wrong. Way down the stack, vmx_complete_nested_posted_interrupt() can return -ENXIO after filling vcpu->run->exit_reason via kvm_handle_memory_failure(). That's the entire reason why negative values from kvm_check_nested_events() and kvm_apic_accept_events() are morphed to '0', i.e. to "exit to userspace".