Hi,
> But the info I'm using to set up the legacy interrupts comes from acpi
> tables, I think, so perhaps its misprogramming the legacy interrupts,
> whereas before they just happened to work in their default config (???).
Well, if there is no info in the acpi tables, you'll ignore the IRQ
altogether ...
cheers,
Gerd
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;
/*
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|