Messages in this thread Patch in this message | | | From | Jeremy Fitzhardinge <> | Subject | [PATCH 10/10] xen/apic: program the apic triggering and polarity properly | Date | Fri, 27 Feb 2009 18:14:08 -0800 |
| |
From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
We were passing the ACPI triggering and polarity levels directly into the apic - but they have reversed values. The result was that all the level-triggered interrupts were edge, and vice-versa. It's surprising that anything worked at all, but now AHCI works for me.
Thanks for Gerd Hoffmann for noticing this.
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> --- arch/x86/xen/pci.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/arch/x86/xen/pci.c b/arch/x86/xen/pci.c index d661c74..fb408ce 100644 --- a/arch/x86/xen/pci.c +++ b/arch/x86/xen/pci.c @@ -53,7 +53,9 @@ int xen_register_gsi(u32 gsi, int triggering, int polarity) printk(KERN_DEBUG "xen: --> irq=%d\n", irq); if (irq > 0) - xen_set_io_apic_routing(irq, triggering, polarity); + xen_set_io_apic_routing(irq, + triggering == ACPI_EDGE_SENSITIVE ? 0 : 1, + polarity == ACPI_ACTIVE_HIGH ? 0 : 1); return irq; } -- 1.6.0.6
| |