On Wed, 2007-03-07 at 13:02 -0800, Dan Hecht wrote:On 03/07/2007 12:57 PM, Thomas Gleixner wrote:On Wed, 2007-03-07 at 12:11 -0800, Jeremy Fitzhardinge wrote:Are you saying you would prefer we create our own irq handler something like this rather than using the standard i386 handlers?Dan Hecht wrote:Jeremy, I saw you sent out the Xen version earlier, thanks. Here'sSo the interrupt side of the clockevent comes through the virtual apic? Where does evt->handle_event get called?
ours for reference (please excuse any formating issues); it's also
lean. We'll send out a proper patch later after some more testing:
/* We use normal irq0 handler on cpu0. */That's exactly the thing I ranted about before. We keep the historic
time_init_hook();
view of emulated hardware and just wrap it into enough glue code instead
of doing an abstract design, which just gets rid of those hardware
assumptions at all. That's the big advantage of paravirtualization, but
the current way on paravirt ops is just ignoring this.
irqreturn_t vmi_timer_interrupt(int irq, void *dev_id)
{
local_event->event_handler(local_event);
return IRQ_HANDLED;
}
?? That's fine with me.
I prefer _ONE_ generic abstract implementation of a clock event, which
can be used by all hypervisors. Please keep all your wiring and ideas of
how to best emulate a i386 system away from the kernel as far as you
can.
Please sit down with the other hypervisor folks and define the five
functions you need to interact between clockevents and the particular
hypervisor and implement it once.
Then you can change and evolve your idea of how handle them best in your
hypervisor code, where it belongs.