Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a52315e1 authored by Julian Stecklina's avatar Julian Stecklina Committed by Avi Kivity
Browse files

KVM: Don't mistreat edge-triggered INIT IPI as INIT de-assert. (LAPIC)



If the guest programs an IPI with level=0 (de-assert) and trig_mode=0 (edge),
it is erroneously treated as INIT de-assert and ignored, but to quote the
spec: "For this delivery mode [INIT de-assert], the level flag must be set to
0 and trigger mode flag to 1."

Signed-off-by: default avatarJulian Stecklina <js@alien8.de>
Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
parent b93a3553
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -433,7 +433,7 @@ static int __apic_accept_irq(struct kvm_lapic *apic, int delivery_mode,
		break;
		break;


	case APIC_DM_INIT:
	case APIC_DM_INIT:
		if (level) {
		if (!trig_mode || level) {
			result = 1;
			result = 1;
			vcpu->arch.mp_state = KVM_MP_STATE_INIT_RECEIVED;
			vcpu->arch.mp_state = KVM_MP_STATE_INIT_RECEIVED;
			kvm_make_request(KVM_REQ_EVENT, vcpu);
			kvm_make_request(KVM_REQ_EVENT, vcpu);