diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 4558f0d..97a874a 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c @@ -408,6 +408,9 @@ acpi_parse_int_src_ovr(struct acpi_subtable_header * header, acpi_table_print_madt_entry(header); + printk(KERN_INFO "source_irq is %d, global is %d and FADT is %d\n", + intsrc->source_irq, intsrc->global_irq, acpi_gbl_FADT.sci_interrupt); + if (intsrc->source_irq == acpi_gbl_FADT.sci_interrupt) { acpi_sci_ioapic_setup(intsrc->source_irq, intsrc->inti_flags & ACPI_MADT_POLARITY_MASK, diff --git a/arch/x86/pci/xen.c b/arch/x86/pci/xen.c index 8214724..10fa094 100644 --- a/arch/x86/pci/xen.c +++ b/arch/x86/pci/xen.c @@ -353,7 +353,7 @@ static int xen_register_pirq(u32 gsi, int triggering) if (irq < 0) goto out; - printk(KERN_DEBUG "xen: --> pirq=%d -> irq=%d\n", pirq, irq); + printk(KERN_DEBUG "xen: --> pirq=%d -> irq=%d (%s)\n", pirq, irq, name); map_irq.domid = DOMID_SELF; map_irq.type = MAP_PIRQ_TYPE_GSI; @@ -404,8 +404,8 @@ static __init void xen_setup_acpi_sci(void) int trigger, polarity; int gsi = acpi_sci_override_gsi; - if (!gsi) - return; + /* Can ACPI SCI be zero!? */ + WARN_ON(!gsi); rc = acpi_get_override_irq(gsi, &trigger, &polarity); if (rc) { @@ -413,6 +413,9 @@ static __init void xen_setup_acpi_sci(void) " sci, rc=%d\n", rc); return; } + printk(KERN_INFO "xen: sci %d before sanitize %d %d\n", gsi, + trigger, polarity); + trigger = trigger ? ACPI_LEVEL_SENSITIVE : ACPI_EDGE_SENSITIVE; polarity = polarity ? ACPI_ACTIVE_LOW : ACPI_ACTIVE_HIGH; @@ -457,15 +460,18 @@ void __init xen_setup_pirqs(void) break; irq = xen_bind_pirq_gsi_to_irq(irq, pirq, 0, "xt-pic"); } - return; } /* Pre-allocate legacy irqs */ for (irq = 0; irq < NR_IRQS_LEGACY; irq++) { int trigger, polarity; - if (acpi_get_override_irq(irq, &trigger, &polarity) == -1) + if (acpi_get_override_irq(irq, &trigger, &polarity) == -1) { + printk(KERN_INFO "IRQ %s - unknown.\n", irq); continue; + } + printk(KERN_INFO "IRQ %d is %s %s\n", irq, polarity == ACPI_ACTIVE_LOW ? "low" :"high", + trigger == ACPI_LEVEL_SENSITIVE ?"level" :"edge"); xen_register_pirq(irq, trigger ? ACPI_LEVEL_SENSITIVE : ACPI_EDGE_SENSITIVE);