Messages in this thread Patch in this message | | | Date | Thu, 16 Nov 2006 18:41:10 +0300 | From | Alexey Starikovskiy <> | Subject | Re: 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; } /* -------------------------------------------------------------------------- | |