diff -ru linux-2.6.17-rc6-mm2.a/drivers/acpi/ec.c linux-2.6.17-rc6-mm2.b/drivers/acpi/ec.c --- linux-2.6.17-rc6-mm2.a/drivers/acpi/ec.c 2006-06-21 03:02:26.000000000 +0400 +++ linux-2.6.17-rc6-mm2.b/drivers/acpi/ec.c 2006-06-21 02:58:05.000000000 +0400 @@ -212,7 +212,7 @@ switch (event) { case ACPI_EC_EVENT_IBE: - if (~acpi_ec_read_status(ec) & event) { + if (~acpi_ec_read_status(ec) & ACPI_EC_FLAG_IBF) { ec->intr.expect_event = 0; return 0; } @@ -771,12 +771,15 @@ case ACPI_EC_EVENT_OBF: if (!(value & ACPI_EC_FLAG_OBF)) break; + ec->intr.expect_event = 0; + wake_up(&ec->intr.wait); + break; case ACPI_EC_EVENT_IBE: if ((value & ACPI_EC_FLAG_IBF)) break; ec->intr.expect_event = 0; wake_up(&ec->intr.wait); - return ACPI_INTERRUPT_HANDLED; + break; default: break; }