From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Subject: Re: Question about hrtimer_restart apic_timer_fn in lapic.c Date: Fri, 19 Dec 2014 12:28:48 +0100 Message-ID: <54940BF0.1020104@redhat.com> References: <549319DD.1020908@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: tglx@linutronix.de, mingo@redhat.com, hpa@zytor.com, x86@kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org To: nick , gleb@kernel.org Return-path: In-Reply-To: <549319DD.1020908@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On 18/12/2014 19:15, nick wrote: > /* > * There is a race window between reading and incrementing, but we do > * not care about potentially losing timer events in the !reinject > * case anyway. Note: KVM_REQ_PENDING_TIMER is implicitly checked > * in vcpu_enter_guest. > */ > if (!atomic_read(&ktimer->pending)) { > atomic_inc(&ktimer->pending); > /* FIXME: this code should not know anything about vcpus */ > kvm_make_request(KVM_REQ_PENDING_TIMER, vcpu); > } > > if (waitqueue_active(q)) > wake_up_interruptible(q); > > if (lapic_is_periodic(apic)) { > hrtimer_add_expires_ns(&ktimer->timer, ktimer->period); > return HRTIMER_RESTART; > } else > return HRTIMER_NORESTART; > } > What is point of the comment, clearly we need access to vcpu in the call as it's a pointer to the apic structure's vcpu > and we need to call on that particular CPU a request of KVM_REQ_PENDING_TIMER? Please let me known if I am missing any > important information. The idea is that there should be a function in x86.c (something like kvm_vcpu_set_pending_timer) that calls kvm_make_request, instead of doing it in lapic.c. Paolo