|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] [PATCH 0/6] MSI-INTx interrupt translation for HVM
On Thu, 8 Jan 2009 22:52:00 +0800
Qing He <qing.he@xxxxxxxxx> wrote:
> On Thu, 2009-01-08 at 18:44 +0800, Shohei Fujiwara wrote:
> > I have one question.
> >
> > MSI interrupt is edge-triggered, and INTx interrupt is level-triggered.
> > Guest OS handles translated interrupt as level-triggered, though physical
> > interrupt is edge-triggered. When two interrupts are raised during short
> > period, Guest OS might lose 2nd interrupt, I think.
>
> This problem is handled by a different EOI timing. As soon as the
> hypervisor receives an MSI, it issues the EOI ASAP, and the duration of
> the injected level-triggered IRQ and guest EOI are all handled by the
> virtual APICs. If a 2nd interrupt comes up at this time, the hypervisor
> can receive the EOI and this results in a pending IRQ in virtual APICs
> instead of lost.
I found hypervisor doesn't issue EOI before injecting the
interrupt to guest domain, if MSI isn't maskable.
The 2nd interrupt may be lost. What do you think about this?
xen/arch/x86/irq.c:
asmlinkage void do_IRQ(struct cpu_user_regs *regs)
{
unsigned int vector = regs->entry_vector;
irq_desc_t *desc = &irq_desc[vector];
struct irqaction *action;
perfc_incr(irqs);
spin_lock(&desc->lock);
desc->handler->ack(vector);
xen/arch/x86/io_apic.c:
static void ack_msi_vector(unsigned int vector)
{
if ( msi_maskable_irq(irq_desc[vector].msi_desc) )
ack_APIC_irq(); /* ACKTYPE_NONE */
}
Thanks,
--
Shohei Fujiwara
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- Re: [Xen-devel] [PATCH 0/6] MSI-INTx interrupt translation for HVM,
Shohei Fujiwara <=
|
|
|
|
|