On Mon, Nov 26, 2018 at 04:47:31PM +0100, Vitaly Kuznetsov wrote: > @@ -379,6 +398,14 @@ void kvm_hv_synic_send_eoi(struct kvm_vcpu *vcpu, int vector) > for (i = 0; i < ARRAY_SIZE(synic->sint); i++) > if (synic_get_sint_vector(synic_read_sint(synic, i)) == vector) > kvm_hv_notify_acked_sint(vcpu, i); > + > + for (i = 0; i < ARRAY_SIZE(hv_vcpu->stimer); i++) { > + stimer = &hv_vcpu->stimer[i]; > + if (stimer->msg_pending && stimer->config.enable && > + stimer->config.direct_mode && > + stimer->config.apic_vector == vector) > + stimer_mark_pending(stimer, false); > + } > } While debugging another issue with synic timers, it just occurred to me that with direct timers no extra processing is necessary on EOI: unlike traditional synic timers which may have failed to deliver a message and want to be notified when they can retry, direct timers just set the irq directly in the apic. So this hunk shouldn't be needed, should it? Roman.