From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vitaly Kuznetsov Subject: Re: [PATCH v2 3/4] x86/kvm/hyper-v: direct mode for synthetic timers Date: Tue, 04 Dec 2018 13:36:15 +0100 Message-ID: <87muplwjsw.fsf@vitty.brq.redhat.com> References: <20181126154732.23025-1-vkuznets@redhat.com> <20181126154732.23025-4-vkuznets@redhat.com> <20181203171220.GA2886@rkaganb.sw.ru> Mime-Version: 1.0 Content-Type: text/plain Cc: "kvm\@vger.kernel.org" , Paolo Bonzini , Radim =?utf-8?B?S3LEjW3DocWZ?= , "linux-kernel\@vger.kernel.org" , "K. Y. Srinivasan" , Haiyang Zhang , Stephen Hemminger , "x86\@kernel.org" , "Michael Kelley \(EOSG\)" To: Roman Kagan Return-path: In-Reply-To: <20181203171220.GA2886@rkaganb.sw.ru> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org Roman Kagan writes: > 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? Hm, you're probably right: kvm_apic_set_irq() fails only when apic is disabled (see APIC_DM_FIXED case in __apic_accept_irq()) and I'm not convinced we should re-try in this synthetic case. Let me test the hypothesis with Hyper-V on KVM, I'll come back with either a patch removing this over-engineered part or a reson for it to stay. Will do later this week. Thanks! -- Vitaly