[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Legacy PCI interrupt {de}assertion count



Hello,

I have a question related to how Xen accounts the legacy PCI interrupt
assertions when binding interrupts to HVM guests. It's probably just me not
properly understand this code (or missing bits of it).

As I understand it, for level triggered legacy PCI interrupts Xen sets up a
timer in order to perform the EOI if the guest takes too long in deasserting
the line. This is done in pt_irq_time_out. What I don't understand is why this
function also does a deassertion of the guest view of the PCI interrupt, ie:
why it calls hvm_pci_intx_deassert. This AFAICT will clear the pending assert
in the guest, and thus the guest will end up loosing one interrupt.  IMHO it
should be:

diff --git a/xen/drivers/passthrough/io.c b/xen/drivers/passthrough/io.c
index 080183ea31..e0b19ee8c9 100644
--- a/xen/drivers/passthrough/io.c
+++ b/xen/drivers/passthrough/io.c
@@ -182,7 +182,6 @@ static void pt_irq_time_out(void *data)
 
             pirq_dpci(pirq)->flags |= HVM_IRQ_DPCI_EOI_LATCH;
         }
-        hvm_pci_intx_deassert(irq_map->dom, digl->device, digl->intx);
     }
 
     pt_pirq_iterate(irq_map->dom, pt_irq_guest_eoi, NULL);

Again, it might well just be that I'm missing something obvious, so I would
appreciate some clarification here.

Thanks, Roger.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.