On Fri, 2008-04-25 at 10:10 +0800, Alexey Starikovskiy wrote: > Actually, I too don't know why _disabling_ some GPE could trigger EC > one... > May be Len could try to debug this issue, as he is the only one with > hardware... > One thought is that EC GPE is not present in GPE scope, thus it will > be not configured by the > time 6217' code is executed. So, in theory, 6217 could try to disable > EC GPE. In acpi_install_gpe_handler, Linux always disables the GPE before installing a GPE handler. After 6217 is applied, when installing EC GPE handler, Linux will invoke acpi_hw_write_gpe_enable_reg to try to disable EC GPE which is not done before. Don't know if this is related. thanks, rui > Moore, Robert wrote: > > Yes, this is my question also. > > > > I hope Alexey can help with this. I'm very nervous about any code > that > > works or does not work for reasons unknown. When this happens in the > GPE > > code, I get more than nervous. > > > > Bob > > > > > > -----Original Message----- > > From: Zhang, Rui > > Sent: Thursday, April 24, 2008 6:53 PM > > To: Len Brown > > Cc: Moore, Robert; Alexey Starikovskiy; linux-acpi@xxxxxxxxxxxxxxx > > Subject: Re: [PATCH 70/73] ACPICA: Fix to disable unknown spurious > GPEs > > > > > > On Fri, 2008-04-25 at 09:40 +0800, Len Brown wrote: > >> oh goody, i thought this one rang a bell... > >> > >> I'll apply 6217 on top of 9916 (which was already in the test tree, > >> but not on the acpica branch) > >> > >> the error goes away with both applied. > > > > I still don't see why the error messages pop up if 6217 is applied. > > IMO, 6217 won't enable the EC GPE. :( > > > > thanks, > > rui > > > >> On Wednesday 23 April 2008, Moore, Robert wrote: > >>> Alexey, > >>> > >>> I remember there was some discussion on this, but I'm still not > sure > >> why > >>> the patch for 6217 (Ignore GPE if valid and not enabled) makes the > >> other > >>> problem (too early enabling of GPEs) apparent. Please explain. > >>> > >>> Thanks, > >>> Bob > >>> > >>> > >>>> -----Original Message----- > >>>> From: Alexey Starikovskiy [mailto:astarikovskiy@xxxxxxx] > >>>> Sent: Tuesday, April 22, 2008 10:29 PM > >>>> To: Len Brown > >>>> Cc: linux-acpi@xxxxxxxxxxxxxxx; Moore, Robert; Zhang, Rui > >>>> Subject: Re: [PATCH 70/73] ACPICA: Fix to disable unknown > spurious > >> GPEs > >>>> Len Brown wrote: > >>>>> On Saturday 12 April 2008, Len Brown wrote: > >>>>>> From: Bob Moore <robert.moore@xxxxxxxxx> > >>>>>> > >>>>>> Implemented another change to eliminate/suppress spurious or > >>>>>> stray GPEs. The AcpiEvDisableGpe function will now disable GPEs > >>>>>> that are neither enabled nor disabled -- meaning that the GPE > is > >>>>>> unknown to the system. This will prevent future interrupts from > >>>>>> that GPE. (Zhang Rui) BZ 6217 > >>>>>> > >>>>>> Signed-off-by: Bob Moore <robert.moore@xxxxxxxxx> > >>>>>> Signed-off-by: Alexey Starikovskiy <astarikovskiy@xxxxxxx> > >>>>>> Signed-off-by: Len Brown <len.brown@xxxxxxxxx> > >>>>>> --- > >>>>>> drivers/acpi/events/evgpe.c | 9 ++++++++- > >>>>>> 1 files changed, 8 insertions(+), 1 deletions(-) > >>>>>> > >>>>>> diff --git a/drivers/acpi/events/evgpe.c > >>> b/drivers/acpi/events/evgpe.c > >>>>>> index 897baed..6940f5d 100644 > >>>>>> --- a/drivers/acpi/events/evgpe.c > >>>>>> +++ b/drivers/acpi/events/evgpe.c > >>>>>> @@ -250,7 +250,14 @@ acpi_status acpi_ev_disable_gpe(struct > >>>> acpi_gpe_event_info *gpe_event_info) > >>>>>> ACPI_FUNCTION_TRACE(ev_disable_gpe); > >>>>>> > >>>>>> - if (!(gpe_event_info->flags & ACPI_GPE_ENABLE_MASK)) { > >>>>>> + /* > >>>>>> + * Ignore this if the GPE is valid and not enabled. > >>>>>> + * > >>>>>> + * Flags is only zero if GPE is neither enabled or disabled > -- > >>> it may > >>>>>> + * be a spurious or stray GPE -- disable it in the default > >> case > >>>> below. > >>>>>> + */ > >>>>>> + if (gpe_event_info->flags && > >>>>>> + (!(gpe_event_info->flags & ACPI_GPE_ENABLE_MASK))) { > >>>>>> return_ACPI_STATUS(AE_OK); > >>>>>> } > >>>>>> > >>>>> > >>>>> When applied to 2.6.25, the patch above causes ACPI Error > >> messages > >>> below > >>>> on my T61. > >>>>> Certainly this is a case of the EC getting an interrupt (GPE > x02) > >>> before > >>>> it has initialized. > >>>>> Perhaps it breaks the call of acpi_install_gpe_handler() to > >>>> acpi_ev_disable_gpe()? > >>>> Congratulations, now you too hit this one, patch is already > >> there... > >>>> It is wroong to enable GPE before handler for it is installed... > >>>> http://bugzilla.kernel.org/show_bug.cgi?id=9916 > >>>> > >>>>> -Len > >>>>> > >>>>> > >>>>> PCI: Using MMCONFIG at f0000000 - f3ffffff > >>>>> PCI: Using configuration type 1 > >>>>> evgpeblk-0956 [00] ev_create_gpe_block : GPE 00 to 1F [_GPE] > 4 > >>> regs on > >>>> int 0x9 > >>>>> +ACPI Error (evregion-0316): No handler for Region [ECOR] > >>>> (ffff81007d35dda0) [EmbeddedControl] [20070126] > >>>>> +ACPI Error (exfldio-0289): Region EmbeddedControl(3) has no > >> handler > >>>> [20070126] > >>>>> +ACPI Error (psparse-0537): Method parse/execution failed > >>>> [\_SB_.PCI0.LPC_.EC__.AC__._PSR] (Node ffff81007d364ab0), > >> AE_NOT_EXIST > >>>>> +ACPI Error (psparse-0537): Method parse/execution failed > >>>> [\_SB_.PCI0.LPC_.EC__.HKEY.CKC4] (Node ffff81007d364f48), > >> AE_NOT_EXIST > >>>>> +ACPI Error (psparse-0537): Method parse/execution failed > >>> [\_GPE._L02] > >>>> (Node ffff81007d376420), AE_NOT_EXIST > >>>>> +ACPI Exception (evgpe-0584): AE_NOT_EXIST, while evaluating GPE > >>> method > >>>> [_L02] [20070126] > >>>>> evgpeblk-1052 [00] ev_initialize_gpe_bloc: Found 9 Wake, > Enabled > >> 3 > >>>> Runtime GPEs in this block > >>>>> ACPI: EC: EC description table is found, configuring boot EC > >>>>> -ACPI: EC: non-query interrupt received, switching to interrupt > >> mode > >>>>> -Completing Region/Field/Buffer/Package > >> > initialization:........................................................ > >>> .... > >>>> ............................................................ > >> ....................................................................... > >>> .... > >>> > >> ....................................................................... > >>> .... > >>>> ................ > >>>>> -Initialized 29/33 Regions 138/138 Fields 64/64 Buffers 55/72 > >>> Packages > >>>> (1888 nodes) > >>>>> +Completing Region/Field/Buffer/Package > >> > initialization:........................................................ > >>> .... > >>>> ............................................................ > >> ....................................................................... > >>> .... > >>> > >> ....................................................................... > >>> .... > >>>> ................. > >>>>> +Initialized 30/33 Regions 138/138 Fields 64/64 Buffers 55/72 > >>> Packages > >>>> (1888 nodes) > >>>>> Initializing Device/Processor/Thermal objects by executing _INI > >>>> methods:.<5>ACPI: BIOS _OSI(Linux) query honored via DMI > >>>>> +ACPI: EC: non-query interrupt received, switching to interrupt > >> mode > >>>>> ....... > >>>>> Executed 8 _INI methods requiring 2 _STA executions (examined > 88 > >>>> objects) > >>>>> ACPI: Interpreter enabled > >>> > >> > >> > >> > > > > > -- 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