RE: [PATCH][RFC] KVM: x86: Don't reset deadline to period when timer is in one shot mode

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Sean Christopherson <seanjc@xxxxxxxxxx>
> Sent: Wednesday, October 19, 2022 11:54 PM
> To: Li,Rongqing <lirongqing@xxxxxxxxx>
> Cc: kvm@xxxxxxxxxxxxxxx; Peter Shier <pshier@xxxxxxxxxx>; Jim Mattson
> <jmattson@xxxxxxxxxx>; Wanpeng Li <wanpengli@xxxxxxxxxxx>
> Subject: Re: [PATCH][RFC] KVM: x86: Don't reset deadline to period when timer
> is in one shot mode
> 
> On Mon, Oct 17, 2022, Li,Rongqing wrote:
> > > +Jim, Peter, and Wanpeng
> > >
> > > On Wed, Oct 12, 2022, Li RongQing wrote:
> > > > In one-shot mode, the APIC timer stops counting when the timer
> > > > reaches zero, so don't reset deadline to period for one shot mode
> > > >
> > > > Signed-off-by: Li RongQing <lirongqing@xxxxxxxxx>
> > > > ---
> > > >  arch/x86/kvm/lapic.c | 8 ++++++--
> > > >  1 file changed, 6 insertions(+), 2 deletions(-)
> > > >
> > > > diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index
> > > > 9dda989..bf39027 100644
> > > > --- a/arch/x86/kvm/lapic.c
> > > > +++ b/arch/x86/kvm/lapic.c
> > > > @@ -1840,8 +1840,12 @@ static bool set_target_expiration(struct
> > > > kvm_lapic
> > > *apic, u32 count_reg)
> > > >  		if (unlikely(count_reg != APIC_TMICT)) {
> > > >  			deadline = tmict_to_ns(apic,
> > > >  				     kvm_lapic_get_reg(apic, count_reg));
> > > > -			if (unlikely(deadline <= 0))
> > > > -				deadline = apic->lapic_timer.period;
> > > > +			if (unlikely(deadline <= 0)) {
> > > > +				if (apic_lvtt_period(apic))
> > > > +					deadline = apic->lapic_timer.period;
> > > > +				else
> > > > +					deadline = 0;
> > > > +			}
> > >
> > > This is not the standard "count has reached zero" path, it's the
> > > "vCPU is migrated and the timer needs to be resumed on the destination"
> path.
> > > Zeroing the deadline here will not squash the timer, IIUC it will
> > > cause the timer to immediately fire.
> > >
> > > That said, I think the patch is actually correct
> >
> > Should we set deadline to 0 when it is expired whether the timer is
> > one shot mode or period mode ?
> 
> I'm not sure I follow the question.  Are you asking if this path should set the
> deadline to '0' even if the timer is in periodic mode?

Yes

-Li




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux