linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Wanpeng Li <kernellwp@gmail.com>
To: "Radim Krčmář" <rkrcmar@redhat.com>
Cc: LKML <linux-kernel@vger.kernel.org>, kvm <kvm@vger.kernel.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Marcelo Tosatti <mtosatti@redhat.com>
Subject: Re: [PATCH v4 5/5] KVM: LAPIC: add advance timer support to pi_inject_timer
Date: Tue, 18 Jun 2019 08:57:15 +0800	[thread overview]
Message-ID: <CANRm+CwBY3xku7uE5fHRNBoHEctc1k-AS0DSny8jKKDsOUZs=g@mail.gmail.com> (raw)
In-Reply-To: <CANRm+Cxrn51mJUvjH7df+U-HpPPLJJzsRf+BMebxDogSabex3g@mail.gmail.com>

On Tue, 18 Jun 2019 at 08:44, Wanpeng Li <kernellwp@gmail.com> wrote:
>
> On Tue, 18 Jun 2019 at 05:32, Radim Krčmář <rkrcmar@redhat.com> wrote:
> >
> > 2019-06-17 19:24+0800, Wanpeng Li:
> > > From: Wanpeng Li <wanpengli@tencent.com>
> > >
> > > Wait before calling posted-interrupt deliver function directly to add
> > > advance timer support to pi_inject_timer.
> > >
> > > Cc: Paolo Bonzini <pbonzini@redhat.com>
> > > Cc: Radim Krčmář <rkrcmar@redhat.com>
> > > Cc: Marcelo Tosatti <mtosatti@redhat.com>
> > > Signed-off-by: Wanpeng Li <wanpengli@tencent.com>
> > > ---
> >
> > Please merge this patch with [2/5], so bisection doesn't break.
>
> Agreed.
>
> >
> > >  arch/x86/kvm/lapic.c   | 6 ++++--
> > >  arch/x86/kvm/lapic.h   | 2 +-
> > >  arch/x86/kvm/svm.c     | 2 +-
> > >  arch/x86/kvm/vmx/vmx.c | 2 +-
> > >  4 files changed, 7 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
> > > index 1a31389..1a31ba5 100644
> > > --- a/arch/x86/kvm/lapic.c
> > > +++ b/arch/x86/kvm/lapic.c
> > > @@ -1462,6 +1462,8 @@ static void apic_timer_expired(struct kvm_lapic *apic, bool can_pi_inject)
> > >               return;
> > >
> > >       if (can_pi_inject && posted_interrupt_inject_timer(apic->vcpu)) {
> > > +             if (apic->lapic_timer.timer_advance_ns)
> > > +                     kvm_wait_lapic_expire(vcpu, true);
> >
> > From where does kvm_wait_lapic_expire() take
> > apic->lapic_timer.expired_tscdeadline?
>
> Sorry, I failed to understand this.
> https://git.kernel.org/pub/scm/virt/kvm/kvm.git/tree/arch/x86/kvm/lapic.c?h=queue#n1541
> We can get apic->lapic_timer.expired_tscdeadline in
> kvm_wait_lapic_expire() directly.

Oh, miss the latest expired_tscdeadline, how about something like below?

diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
index 1a31ba5..7cd95ea 100644
--- a/arch/x86/kvm/lapic.c
+++ b/arch/x86/kvm/lapic.c
@@ -1461,6 +1461,9 @@ static void apic_timer_expired(struct kvm_lapic
*apic, bool can_pi_inject)
     if (atomic_read(&apic->lapic_timer.pending))
         return;

+    if (apic_lvtt_tscdeadline(apic) || ktimer->hv_timer_in_use)
+        ktimer->expired_tscdeadline = ktimer->tscdeadline;
+
     if (can_pi_inject && posted_interrupt_inject_timer(apic->vcpu)) {
         if (apic->lapic_timer.timer_advance_ns)
             kvm_wait_lapic_expire(vcpu, true);
@@ -1477,9 +1480,6 @@ static void apic_timer_expired(struct kvm_lapic
*apic, bool can_pi_inject)
      */
     if (swait_active(q))
         swake_up_one(q);
-
-    if (apic_lvtt_tscdeadline(apic) || ktimer->hv_timer_in_use)
-        ktimer->expired_tscdeadline = ktimer->tscdeadline;
 }

 /*

      reply	other threads:[~2019-06-18  0:56 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-17 11:24 [PATCH v4 0/5] KVM: LAPIC: Implement Exitless Timer Wanpeng Li
2019-06-17 11:24 ` [PATCH v4 1/5] KVM: LAPIC: Make lapic timer unpinned Wanpeng Li
2019-06-17 11:48   ` Peter Xu
2019-06-18  0:38     ` Wanpeng Li
2019-06-17 11:24 ` [PATCH v4 2/5] KVM: LAPIC: inject lapic timer interrupt by posted interrupt Wanpeng Li
2019-06-18 13:35   ` Marcelo Tosatti
2019-06-19  0:36     ` Wanpeng Li
2019-06-19 21:03       ` Marcelo Tosatti
2019-06-20  0:52         ` Wanpeng Li
2019-06-21  1:42         ` Wanpeng Li
2019-06-21 21:42           ` Marcelo Tosatti
2019-06-24  8:53             ` Wanpeng Li
2019-06-25 19:00               ` Marcelo Tosatti
2019-06-26 11:02                 ` Wanpeng Li
2019-06-26 16:44                   ` Marcelo Tosatti
2019-06-28  8:26                     ` Wanpeng Li
2019-06-25 17:02             ` Paolo Bonzini
2019-06-17 11:24 ` [PATCH v4 3/5] KVM: LAPIC: Ignore timer migration when lapic timer is injected by pi Wanpeng Li
2019-06-17 11:24 ` [PATCH v4 4/5] KVM: LAPIC: Don't posted inject already-expired timer Wanpeng Li
2019-06-17 11:24 ` [PATCH v4 5/5] KVM: LAPIC: add advance timer support to pi_inject_timer Wanpeng Li
2019-06-17 21:32   ` Radim Krčmář
2019-06-18  0:44     ` Wanpeng Li
2019-06-18  0:57       ` Wanpeng Li [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CANRm+CwBY3xku7uE5fHRNBoHEctc1k-AS0DSny8jKKDsOUZs=g@mail.gmail.com' \
    --to=kernellwp@gmail.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=rkrcmar@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).