Re: [PATCH v5 3/3] KVM: LAPIC: Apply change to TDCR right away to the timer

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

 



2017-10-06 07:14+0800, Wanpeng Li:
> 2017-10-06 2:14 GMT+08:00 Radim Krčmář <rkrcmar@xxxxxxxxxx>:
> > 2017-10-05 07:35-0700, Wanpeng Li:
> >> From: Wanpeng Li <wanpeng.li@xxxxxxxxxxx>
> >> +             remaining = ktime_sub(apic->lapic_timer.target_expiration, now);
> >> +             if (ktime_to_ns(remaining) < 0)
> >> +                     remaining = 0;
> >> +             delta = mod_64(ktime_to_ns(remaining), apic->lapic_timer.period);
> >> +
> >> +             if (!delta)
> >> +                     return false;
> >> +
> >> +             apic->lapic_timer.period = (u64)kvm_lapic_get_reg(apic, APIC_TMICT)
> >> +                     * APIC_BUS_CYCLE_NS * apic->divide_count;
> >
> > I'd prefer to apply the rate limiting (done earlier in this function) to
> > the period.  This version allows the guest to configure 128 times more
> > frequent interrupts in the host.
> > (And thinking about it, the version of [2/3] I proposed has similar
> >  problem when switching from one-shot to periodic, only there it is
> >  unpredictably limited by the speed of KVM.)
> 
> We didn't stop and restart the timer, why the rate will influence us for [2/3]?

It is because of the rate limiting -- the guest could setup a one-shot
timer with a short expiration and switch to periodic

It is mostly theoretical as the expiration would have to be long enough
so that the timer doesn't fire before KVM emulates the next instruction
that switches the timer to periodic mode, but shorter than rate limit.

I see you handled that in v6, thanks!



[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