Hi Sid,
Can you try the attached patch, please? I reproduced the problem on
my Proliant DL360, and this patch fixes it for me.
The problem was that drivers/serial/8250_acpi.c found COM1 in the
ACPI namespace and called acpi_register_gsi() to set up its IRQ.
ACPI tells us that the COM1 IRQ is edge triggered, active high,
but acpi_register_gsi() was ignoring the edge_level argument,
so it blindly set the COM1 IRQ to be level-triggered.
This is against 2.6.7-rc3-mm1.
diff -u -Nur linux-2.6.7-rc3-mm1.orig/arch/i386/kernel/acpi/boot.c linux-2.6.7-rc3-mm1/arch/i386/kernel/acpi/boot.c
--- linux-2.6.7-rc3-mm1.orig/arch/i386/kernel/acpi/boot.c 2004-06-10 16:26:55.000000000 -0600
+++ linux-2.6.7-rc3-mm1/arch/i386/kernel/acpi/boot.c 2004-06-10 16:30:22.000000000 -0600
@@ -451,10 +451,12 @@
static u16 irq_mask;
extern void eisa_set_level_irq(unsigned int irq);
- if ((gsi < 16) && !((1 << gsi) & irq_mask)) {
- Dprintk(KERN_DEBUG PREFIX "Setting GSI %u as level-triggered\n", gsi);
- irq_mask |= (1 << gsi);
- eisa_set_level_irq(gsi);
+ if (edge_level == ACPI_LEVEL_SENSITIVE) {
+ if ((gsi < 16) && !((1 << gsi) & irq_mask)) {
+ Dprintk(KERN_DEBUG PREFIX "Setting GSI %u as level-triggered\n", gsi);
+ irq_mask |= (1 << gsi);
+ eisa_set_level_irq(gsi);
+ }
}
}
#endif