lkml.org 
[lkml]   [2006]   [Nov]   [16]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
DateThu, 16 Nov 2006 18:41:10 +0300
FromAlexey Starikovskiy <>
SubjectRe: 2.6.19-rc5 nasty ACPI regression, AE_TIME errors
Looks like either EC GPE or whole ACPI irq got disabled... Could you 
check that ACPI interrupts still arrive after
you notice AE_TIME?
Also, may be attached patch will help?

Regards,
    Alex.

David Brownell wrote:
> On Wednesday 15 November 2006 1:56 pm, David Brownell wrote:
> 
>> On Wednesday 15 November 2006 6:48 am, Alexey Starikovskiy wrote:
>> 
>>> ec1.patch
>>>
>>>
>>> Always enable GPE after return from notify handler.
>>>
>>> From:  Alexey Starikovskiy <alexey.y.starikovskiy@linux.intel.com>
>>>
>>>
>>> ---
>>> 
>> Yes, this seems to resolve the regression as well as Len's ec_intr=0 boot param.
>> 
>
> Whoops, I spoke too soon.  It does get rid of SOME of the AE_TIME errors.  But
> the system is still confused about whether or not the AC is connected, and
> whether the battery is charging or not; and the CPU is still relatively hot.
> Even with this patch I later got:
>
> ACPI Exception (evregion-0424): AE_TIME, Returned by Handler for [EmbeddedControl] [20060707]
> ACPI Exception (dswexec-0458): AE_TIME, While resolving operands for [OpcodeName unavailable] [2006070
> 7]
> ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.THRM._TMP] (Node ffff810002032d10), AE
> _TIME
>
> In short, better but evidently not yet good enough...
>
> - Dave
>
>
>
> 
>> IMO this should get merged into 2.6.19 ASAP ...
>>
>>
>> 
>>>  drivers/acpi/ec.c |    2 --
>>>  1 files changed, 0 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
>>> index e6d4b08..937eafc 100644
>>> --- a/drivers/acpi/ec.c
>>> +++ b/drivers/acpi/ec.c
>>> @@ -465,8 +465,6 @@ static u32 acpi_ec_gpe_handler(void *dat
>>> 
>>>         if (value & ACPI_EC_FLAG_SCI) {
>>>                 status = acpi_os_execute(OSL_EC_BURST_HANDLER, acpi_ec_gpe_query, ec);
>>> -               return status == AE_OK ?
>>> -                   ACPI_INTERRUPT_HANDLED : ACPI_INTERRUPT_NOT_HANDLED;
>>>         }
>>>         acpi_enable_gpe(NULL, ec->gpe_bit, ACPI_ISR);
>>>         return status == AE_OK ?
>>> 

Always confirm handled interrupt, even if we failed.

From:  Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>


---
 drivers/acpi/ec.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index 937eafc..6fb5ee0 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -467,8 +467,8 @@ static u32 acpi_ec_gpe_handler(void *dat
 		status = acpi_os_execute(OSL_EC_BURST_HANDLER, acpi_ec_gpe_query, ec);
 	}
 	acpi_enable_gpe(NULL, ec->gpe_bit, ACPI_ISR);
-	return status == AE_OK ?
-	    ACPI_INTERRUPT_HANDLED : ACPI_INTERRUPT_NOT_HANDLED;
+	WARN_ON(ACPI_FAILURE(status));
+	return ACPI_INTERRUPT_HANDLED;
 }
 
 /* --------------------------------------------------------------------------
\
 
 \ /
  Last update: 2006-11-16 16:43    [from the cache]
©2003-2008