From: William Morrow <william.morrow@xxxxxxx> On some BIOSen, the GPE bit will remain set even if it is disabled, resulting in a interrupt storm. This patch clears the bit before disabling it. Signed-off-by: William Morrow <william.morrow@xxxxxxx> Signed-off-by: Jordan Crouse <jordan.crouse@xxxxxxx> Cc: "Yu, Luming" <luming.yu@xxxxxxxxx> Cc: "Brown, Len" <len.brown@xxxxxxxxx> Cc: "Moore, Robert" <robert.moore@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- drivers/acpi/events/evgpe.c | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 deletion(-) diff -puN drivers/acpi/events/evgpe.c~acpi-clear-gpe-before-disabling-it drivers/acpi/events/evgpe.c --- a/drivers/acpi/events/evgpe.c~acpi-clear-gpe-before-disabling-it +++ a/drivers/acpi/events/evgpe.c @@ -677,10 +677,22 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_eve case ACPI_GPE_DISPATCH_METHOD: /* - * Disable GPE, so it doesn't keep firing before the method has a + * Clear GPE, so it doesn't keep firing before the method has a * chance to run. */ + status = acpi_hw_clear_gpe(gpe_event_info); + if (ACPI_FAILURE(status)) { + ACPI_EXCEPTION((AE_INFO, status, + "Unable to clear GPE[%2X]", + gpe_number)); + return_UINT32(ACPI_INTERRUPT_NOT_HANDLED); + } + /* + * Disable GPE, so it doesn't keep happen again. + */ + status = acpi_ev_disable_gpe(gpe_event_info); + if (ACPI_FAILURE(status)) { ACPI_EXCEPTION((AE_INFO, status, "Unable to disable GPE[%2X]", _ - To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html