For DomU-s registering PIRQ-s must be done separately, as they don't
use the IO-APIC code.
Additionally make sure the IRQ chip doesn't get set twice (and the
event channel information overwritten) for an IRQ possibly in use by
more than one device.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
#include <linux/init.h>
#include <linux/pci.h>
#include <asm/acpi.h>
+#include <xen/evtchn.h>
#include "pci.h"
static int pcifront_enable_irq(struct pci_dev *dev)
{
u8 irq;
pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
+ evtchn_register_pirq(irq);
dev->irq = irq;
return 0;
void evtchn_register_pirq(int irq)
{
BUG_ON(irq < PIRQ_BASE || irq - PIRQ_BASE > NR_PIRQS);
- if (identity_mapped_irq(irq))
+ if (identity_mapped_irq(irq) || type_from_irq(irq) != IRQT_UNBOUND)
return;
irq_info[irq] = mk_irq_info(IRQT_PIRQ, irq, 0);
irq_desc[irq].chip = &pirq_type;