1 From: http://xenbits.xensource.com/linux-2.6.18-xen.hg?rev/4f998fd102e2
2 # HG changeset 791 patch
3 # User Keir Fraser <keir.fraser@citrix.com>
5 # Node ID 4f998fd102e24daa471482730d1a3ff68faa1ad6
6 # Parent 77e3b255381e02021d460d535e44b1040a180773
7 Subject: linux: fix IRQ handling for PV passthrough
9 Patch-mainline: obsolete
11 For DomU-s registering PIRQ-s must be done separately, as they don't
14 Additionally make sure the IRQ chip doesn't get set twice (and the
15 event channel information overwritten) for an IRQ possibly in use by
18 Signed-off-by: Jan Beulich <jbeulich@novell.com>
20 --- sle11-2009-02-05.orig/arch/x86/pci/pcifront.c 2009-02-05 10:01:48.000000000 +0100
21 +++ sle11-2009-02-05/arch/x86/pci/pcifront.c 2009-02-05 10:20:20.000000000 +0100
23 #include <linux/init.h>
24 #include <linux/pci.h>
26 +#include <xen/evtchn.h>
29 static int pcifront_enable_irq(struct pci_dev *dev)
32 pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
33 + evtchn_register_pirq(irq);
37 --- sle11-2009-02-05.orig/drivers/xen/core/evtchn.c 2009-02-05 10:20:03.000000000 +0100
38 +++ sle11-2009-02-05/drivers/xen/core/evtchn.c 2009-02-05 10:20:20.000000000 +0100
39 @@ -1078,7 +1078,7 @@ void irq_resume(void)
40 void evtchn_register_pirq(int irq)
42 BUG_ON(irq < PIRQ_BASE || irq - PIRQ_BASE > NR_PIRQS);
43 - if (identity_mapped_irq(irq))
44 + if (identity_mapped_irq(irq) || type_from_irq(irq) != IRQT_UNBOUND)
46 irq_info[irq] = mk_irq_info(IRQT_PIRQ, irq, 0);
47 irq_desc[irq].chip = &pirq_type;