Re: add back pending timer irqs for kernel APIC timer

Dong, Eddie
2007-08-11T01:05:25Z

Avi Kivity wrote:
> Dong, Eddie wrote:
>> Add back pending irqs for apic timer to get precise guest
>> APIC timer interrupt.
>>
>
> Can you explain the problem and the solution in more detail?

Today guest sleep 10 seconds only get about 5-6 seconds in host time.
A design philosiphy in various VMM is that guest wall clock should catch
up host wall clock.

The reason (partly) is that A VM may be descheduled, while the host time
is still going. For periodic timer like APIC timer, guest expect to see
certain amount of interrupt that stands for the time passed (host time).
In previous
APIC timer virtualization policy, we inject an IRQ to APIC when a period
of host time is passed, but the guest may not take it if it is
descheduled.
In that way the previous irq in APIC will be overwritten by next
injection from fire of
host hrtimer. In that way guest get less amount of APIC timer IRQ.

This patch keep track of the pending irqs and inject them back to guest
eventually
even the guest may be descheduled. This is also what we did in Xen.
BTW, This policy will also be applied to future kernel PIT, I just do it
step by step.

Thx,eddie