Skip to contentSkip to conversation

Question about hrtimer_restart apic_timer_fn in lapic.c

DISCUSSION Paolo Bonzini 1 participant 3 messages Dec 19, 2014 3 messages not in the archive KVM

lore
Share & tools
lore

Paolo Bonzini

author maintainer
#1 lore raw
In reply to a message not in the archive
Quoted 21 lines · nick
      /*
       * 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;
}
Quoted 3 lines

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

author maintainer
#3 lore raw
In reply to a message not in the archive
Quoted 4 lines · nick

Paolo,
If that is the case why don't I just move this function over if we don't need it in this file into x86.c. This seems to be the easiest solution from my understanding.
Regards,

Only that line would have to be moved to x86.c. You can send a patch for that.

Paolo

author maintainer
#5 lore raw
In reply to a message not in the archive
Quoted 3 lines · nick

Sorry Paolo,
I am confused of where you would want me to move it as I looked around and there seems to be no real place to put it.

To a new function called kvm_vcpu_set_pending_timer.

Paolo