trace_kvm_avic_incomplete_ipi(vcpu->vcpu_id, icrh, icrl, id, index);
 
        switch (id) {
+       case AVIC_IPI_FAILURE_INVALID_TARGET:
        case AVIC_IPI_FAILURE_INVALID_INT_TYPE:
                /*
                 * Emulate IPIs that are not handled by AVIC hardware, which
-                * only virtualizes Fixed, Edge-Triggered INTRs.  The exit is
-                * a trap, e.g. ICR holds the correct value and RIP has been
-                * advanced, KVM is responsible only for emulating the IPI.
-                * Sadly, hardware may sometimes leave the BUSY flag set, in
-                * which case KVM needs to emulate the ICR write as well in
+                * only virtualizes Fixed, Edge-Triggered INTRs, and falls over
+                * if _any_ targets are invalid, e.g. if the logical mode mask
+                * is a superset of running vCPUs.
+                *
+                * The exit is a trap, e.g. ICR holds the correct value and RIP
+                * has been advanced, KVM is responsible only for emulating the
+                * IPI.  Sadly, hardware may sometimes leave the BUSY flag set,
+                * in which case KVM needs to emulate the ICR write as well in
                 * order to clear the BUSY flag.
                 */
                if (icrl & APIC_ICR_BUSY)
                 */
                avic_kick_target_vcpus(vcpu->kvm, apic, icrl, icrh, index);
                break;
-       case AVIC_IPI_FAILURE_INVALID_TARGET:
-               break;
        case AVIC_IPI_FAILURE_INVALID_BACKING_PAGE:
                WARN_ONCE(1, "Invalid backing page\n");
                break;