All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wanpeng Li <kernellwp@gmail.com>
To: "Radim Krčmář" <rkrcmar@redhat.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	kvm <kvm@vger.kernel.org>, Paolo Bonzini <pbonzini@redhat.com>,
	Wanpeng Li <wanpeng.li@hotmail.com>
Subject: Re: [PATCH v6 2/3] KVM: LAPIC: Keep timer running when switching between one-shot and periodic mode
Date: Sat, 7 Oct 2017 08:50:55 +0800	[thread overview]
Message-ID: <CANRm+CxdurfKbBp0wCHu78d+9vdhSshdosu=n-jBpt-OymSSKw@mail.gmail.com> (raw)
In-Reply-To: <20171006150433.GF16466@flask>

2017-10-06 23:04 GMT+08:00 Radim Krčmář <rkrcmar@redhat.com>:
> 2017-10-06 15:17+0200, Radim Krčmář:
>> 2017-10-05 18:54-0700, Wanpeng Li:
>> > From: Wanpeng Li <wanpeng.li@hotmail.com>
>> >
>> > If we take TSC-deadline mode timer out of the picture, the Intel SDM
>> > does not say that the timer is disable when the timer mode is change,
>> > either from one-shot to periodic or vice versa.
>> >
>> > After this patch, the timer is no longer disarmed on change of mode, so
>> > the counter (TMCCT) keeps counting down.
>> >
>> > So what does a write to LVTT changes ? On baremetal, the change of mode
>> > is probably taken into account only when the counter reach 0. When this
>> > happen, LVTT is use to figure out if the counter should restard counting
>> > down from TMICT (so periodic mode) or stop counting (if one-shot mode).
>> >
>> > This patch is based on observation of the behavior of the APIC timer on
>> > baremetal as well as check that they does not go against the description
>> > written in the Intel SDM.
>> >
>> > Cc: Paolo Bonzini <pbonzini@redhat.com>
>> > Cc: Radim Krčmář <rkrcmar@redhat.com>
>> > Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
>> > ---
>> >  arch/x86/kvm/lapic.c | 8 ++++++--
>> >  1 file changed, 6 insertions(+), 2 deletions(-)
>>
>> Queued the first two patches, thanks.
>>
>> > diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
>> > index 8841bb5..14f63b3 100644
>> > --- a/arch/x86/kvm/lapic.c
>> > +++ b/arch/x86/kvm/lapic.c
>> > @@ -1329,10 +1329,14 @@ static void apic_update_lvtt(struct kvm_lapic *apic)
>> >
>> >     if (apic->lapic_timer.timer_mode != timer_mode) {
>> >             if (apic_lvtt_tscdeadline(apic) != (timer_mode ==
>> > -                           APIC_LVT_TIMER_TSCDEADLINE))
>> > +                           APIC_LVT_TIMER_TSCDEADLINE)) {
>> >                     kvm_lapic_set_reg(apic, APIC_TMICT, 0);
>> > +                   hrtimer_cancel(&apic->lapic_timer.timer);
>> > +           }
>> > +           if (apic_lvtt_oneshot(apic) && (timer_mode ==
>> > +                           APIC_LVT_TIMER_PERIODIC))
>> > +                   limit_periodic_timer_frequency(apic);
>
> I noticed a problem here that required slight changes (the current code
> never actually did the rate limiting), please see kvm/queue.

I see, thanks for the change.

Regards,
Wanpeng Li

>
>> >             apic->lapic_timer.timer_mode = timer_mode;
>> > -           hrtimer_cancel(&apic->lapic_timer.timer);
>> >     }
>> >  }
>> >
>> > --
>> > 2.7.4
>> >

  reply	other threads:[~2017-10-07  0:50 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-06  1:54 [PATCH v6 0/3] KVM: LAPIC: Rework lapic timer to behave more like real-hardware Wanpeng Li
2017-10-06  1:54 ` [PATCH v6 1/3] KVM: LAPIC: Introduce limit_periodic_timer_frequency Wanpeng Li
2017-10-06  1:54 ` [PATCH v6 2/3] KVM: LAPIC: Keep timer running when switching between one-shot and periodic mode Wanpeng Li
2017-10-06 13:17   ` Radim Krčmář
2017-10-06 15:04     ` Radim Krčmář
2017-10-07  0:50       ` Wanpeng Li [this message]
2017-10-06  1:54 ` [PATCH v6 3/3] KVM: LAPIC: Apply change to TDCR right away to the timer Wanpeng Li
2017-10-06 13:14   ` Radim Krčmář
2017-10-06 13:59     ` Wanpeng Li
2017-10-06 14:14       ` Radim Krčmář

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+CxdurfKbBp0wCHu78d+9vdhSshdosu=n-jBpt-OymSSKw@mail.gmail.com' \
    --to=kernellwp@gmail.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=rkrcmar@redhat.com \
    --cc=wanpeng.li@hotmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.