Anthony Liguori wrote:
> Why don't we just introduce a vm-ioctl interface for a one-shot 
> programmable timer?  It could be programmed in userspace, and when it 
> fires, we can drop down to userspace with a special exit code.  We could 
> then introduce an interrupt queuing mechanism in the kernel specifically 
> for timer interrupts as you mention.
>
> That lets us remove the in-kernel PIT, and makes all of our timer 
> mechanisms more accurate.  If userspace has a better time mechanism, 
> like hrtimer, then it can just use that.  If hrtimer is good enough in 
> userspace, then we can contain these new ioctls to the compat-code only.
>   

The problems with timers are:

- on a loaded machine, several timer ticks may be coalesced together on 
the host side; we need a way to detect overruns
- with one-shot processing, there is inevitable drift.  so we need to 
use periodic timers or to compensate for the drift
- when we have accumulated missed interrupts, we need to inject them
- we may need to coordinate tsc and timer values (like Xen)

the first two problems seem to be resolvable via posix timers 
(timer_create() & friends).  The third issue can be resolved by adding 
an ioctl to queue a bunch of injections (raising and lowering a specific 
line after the ack).  The fourth is probably impossible from userspace 
(and very difficult in the kernel).

-- 
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to