BTW, this kind of change begs for a comment, how about: default: /* * Even if we don't know the GPE type, make sure that we always * disable it. This can prevent a certain type of GPE flood, where * the GPE has no _Lxx/_Exx method, and it cannot be determined * whether the GPE is wake, run, or wake/run. */ Status = AcpiHwWriteGpeEnableReg (GpeEventInfo); break; >-----Original Message----- >From: Len Brown [mailto:lenb@xxxxxxxxxx] >Sent: Tuesday, November 20, 2007 10:43 AM >To: Moore, Robert >Cc: linux-acpi@xxxxxxxxxxxxxxx; Zhang, Rui; Alexey Starikovskiy >Subject: ACPI: disable stray GPE, prevent ACPI interrupt storm > >Bob, >Rui's Linux patch below modifies an ACPICA file. > >thanks, >-Len > >commit a7f9b1f24974da287771e2d70b30d9ca7bd66684 >Author: Zhang Rui <rui.zhang@xxxxxxxxx> >Date: Tue Nov 20 13:38:59 2007 -0500 > > ACPI: disable stray GPE, prevent ACPI interrupt storm > > GPEs are disabled depending on their type -- > WAKE, WAKE_RUN, and RUNTIME. An error is returned > if we are asked to disable a GPE that has no type. > > But at least one system exists that enables a GPE from AML > that is not the EC GPE, and has no _Lxx/_Exx AML handler, > and is thus never initialized. > > In this case, when an external CRT is plugged in, > the GPE fires, we attempt to disable the GPE, > but instead just return an error. > So the GPE stays asserted and an ACPI interrupt storm follows. > > The fix is to disable a firing GPE, > even if it comes from outer space. > > http://bugzilla.kernel.org/show_bug.cgi?id=6217 > > Signed-off-by: Zhang Rui <rui.zhang@xxxxxxxxx> > Acked-by: Alexey Starikovskiy <astarikovskiy@xxxxxxx> > Signed-off-by: Len Brown <len.brown@xxxxxxxxx> > >diff --git a/drivers/acpi/events/evgpe.c b/drivers/acpi/events/evgpe.c >index e22f4a9..056b788 100644 >--- a/drivers/acpi/events/evgpe.c >+++ b/drivers/acpi/events/evgpe.c >@@ -270,18 +270,18 @@ acpi_status acpi_ev_disable_gpe(struct >acpi_gpe_event_info *gpe_event_info) > case ACPI_GPE_TYPE_WAKE_RUN: > ACPI_CLEAR_BIT(gpe_event_info->flags, ACPI_GPE_WAKE_ENABLED); > >- /*lint -fallthrough */ >+ /* fallthrough */ > > case ACPI_GPE_TYPE_RUNTIME: > > /* Disable the requested runtime GPE */ > > ACPI_CLEAR_BIT(gpe_event_info->flags, ACPI_GPE_RUN_ENABLED); >- status = acpi_hw_write_gpe_enable_reg(gpe_event_info); >- break; >+ >+ /* fallthrough */ > > default: >- return_ACPI_STATUS(AE_BAD_PARAMETER); >+ acpi_hw_write_gpe_enable_reg(gpe_event_info); > } > > return_ACPI_STATUS(AE_OK); - 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