diff --git a/arch/x86/xen/pci.c b/arch/x86/xen/pci.c index 502ff5f..4041b6b 100644 --- a/arch/x86/xen/pci.c +++ b/arch/x86/xen/pci.c @@ -68,11 +68,15 @@ void __init xen_setup_pirqs(void) for (irq=0; irq < NR_IRQS_LEGACY; irq++) { int trigger, polarity; - if (acpi_get_override_irq(irq, &trigger, &polarity) == -1) - continue; + if (acpi_get_override_irq(irq, &trigger, &polarity) == 0) { + xen_register_gsi(irq, + trigger ? ACPI_LEVEL_SENSITIVE : ACPI_EDGE_SENSITIVE, + polarity ? ACPI_ACTIVE_LOW : ACPI_ACTIVE_HIGH); + } else { + printk(KERN_DEBUG "%s: no acpi override for irq %d\n", + __FUNCTION__, irq); + xen_allocate_pirq(irq); + } - xen_register_gsi(irq, - trigger ? ACPI_LEVEL_SENSITIVE : ACPI_EDGE_SENSITIVE, - polarity ? ACPI_ACTIVE_LOW : ACPI_ACTIVE_HIGH); } } diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index d58da94..4c0329d 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -400,6 +400,9 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) if (!desc) return -EINVAL; + printk("%s: desc [<%p>] %pS, name %s, chip [<%p>] %pS\n", __FUNCTION__, + desc, desc, desc->name, + desc->chip, desc->chip); if (desc->chip == &no_irq_chip) return -ENOSYS; /*