[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Xen-devel] Re: IRQs delivery.
On Friday 10 March 2006 04:07, Tristan Gingold wrote:
> How xen/ppc delivers interrupts ?
Ignoring hypervisors for a moment, the PPC model for external interrupts is
this: the hardware resets the PC to a fixed entry point (0x500) and changes
the MSR to put the processor into real (untranslated) mode. (The old PC and
MSR are saved into a pair of supervisor-only registers, SRR0 and SRR1.) The
exception handler is then responsible for querying the interrupt
controller(s) to get the interrupt vector, and then call the appropriate
The IBM Research hypervisor (rhype) virtualized the PIC, so that instead of
querying hardware, the kernel makes an hcall to find the incoming vector. If
the interrupt is not in fact for this domain, the hypervisor queues the
interrupt for later and tells the current domain "nothing was pending after
all". Note that in this model, interrupts are delivered by the hardware
directly to the current domain without hypervisor involvement.
With Xen, the hypervisor simulates hardware delivering an interrupt (jumping
to 0x500), and then the kernel looks at the event channel structures (instead
of making an hcall) to figure out what happened.
Important note: in our current implementation, interrupts are always delivered
by hardware to the hypervisor, and then we simulate the interrupt delivery to
the domain. Because of the increased latency, it's possible that in the
future we'll want to adopt a more rhypish model. However, since the
hypervisor itself takes interrupts, we need to be able to simulate domain
interrupt delivery anyways.
> on xen-ia64-devel, we are currently discussing on IRQ delivery.
> Xen/x86 delivers IRQs using the event channel.
> Xen/ia64 currently delivers IRQs using the virtualized hardware way.
> Is there major drawbacks about not using event channel (from a XEN POV) ?
I'm not sure what "the virtualized hardware way" is. You probably need to
virtualize the PIC *somehow*, and the Xen event channels are as good a way as
any to do that. If IA64 already has an unrelated way of virtualizing the PIC
(as PPC did with the rhype model), then you get to choose. If that's the
case, I would recommend adopting the event channels to share more Xen code
IBM Linux Technology Center
Xen-devel mailing list