From: Jes Sorensen There is a bug in the ACPI code found in 2.6.1-mm3 where if it can't find the interrupt source for the ACPI System Control Interrupt Handler, it end up trying to free irq 0. --- 25-akpm/drivers/acpi/osl.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff -puN drivers/acpi/osl.c~acpi-frees-irq0 drivers/acpi/osl.c --- 25/drivers/acpi/osl.c~acpi-frees-irq0 Thu Jan 15 14:43:12 2004 +++ 25-akpm/drivers/acpi/osl.c Thu Jan 15 14:43:43 2004 @@ -257,13 +257,13 @@ acpi_os_install_interrupt_handler(u32 ir return AE_OK; } #endif - acpi_irq_irq = irq; acpi_irq_handler = handler; acpi_irq_context = context; if (request_irq(irq, acpi_irq, SA_SHIRQ, "acpi", acpi_irq)) { printk(KERN_ERR PREFIX "SCI (IRQ%d) allocation failed\n", irq); return AE_NOT_ACQUIRED; } + acpi_irq_irq = irq; return AE_OK; } @@ -271,12 +271,13 @@ acpi_os_install_interrupt_handler(u32 ir acpi_status acpi_os_remove_interrupt_handler(u32 irq, OSD_HANDLER handler) { - if (acpi_irq_handler) { + if (irq) { #ifdef CONFIG_IA64 irq = acpi_irq_to_vector(irq); #endif free_irq(irq, acpi_irq); acpi_irq_handler = NULL; + acpi_irq_irq = 0; } return AE_OK; _