From owner-freebsd-acpi@FreeBSD.ORG Mon Jun 28 20:44:47 2004 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2612916A4CE for ; Mon, 28 Jun 2004 20:44:47 +0000 (GMT) Received: from root.org (root.org [67.118.192.226]) by mx1.FreeBSD.org (Postfix) with SMTP id CF69D43D1F for ; Mon, 28 Jun 2004 20:44:46 +0000 (GMT) (envelope-from nate@root.org) Received: (qmail 27699 invoked by uid 1000); 28 Jun 2004 20:44:47 -0000 Date: Mon, 28 Jun 2004 13:44:47 -0700 (PDT) From: Nate Lawson To: Andrew Thompson In-Reply-To: <20040628004724.GA4071@fire.masaclaw.co.nz> Message-ID: <20040628124854.X27408@root.org> References: <20040628004724.GA4071@fire.masaclaw.co.nz> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: freebsd-acpi@freebsd.org Subject: Re: AE_NO_HARDWARE_RESPONSE problems X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 Jun 2004 20:44:47 -0000 On Mon, 28 Jun 2004, Andrew Thompson wrote: > On my HP Omnibook 6000 I get the following right after boot > > acpi_ec0: EcRead: Failed waiting for EC to send data. > ACPI-0502: *** Error: Handler for [EmbeddedControl] returned AE_NO_HARDWARE_RESPONSE > ACPI-1303: *** Error: Method execution failed [\\_SB_.PCI0.ISA0.EC0_._Q20] (Node 0xc1350220), AE_NO_HARDWARE_RESPONSE > acpi_ec0: evaluation of GPE query method _Q20 failed - AE_NO_HARDWARE_RESPONSE > > etc... I changed the loop on line 829 of acpi_ec.c from 1000 to 10000 and > everything seems to be working fine. Is this a valid fix or will it cause > problems elsewhere? One issue I can see is holding Giant for this length of > time. > > --- /sys/dev/acpica/acpi_ec.c Mon Jun 14 10:52:30 2004 > +++ /sys/dev/acpica/acpi_ec.c Wed Jun 23 13:00:12 2004 > @@ -826,7 +826,7 @@ > * command. First, wait up to 1 ms in chunks of sc->ec_polldelay > * microseconds. > */ > - for (i = 0; i < 1000 / sc->ec_polldelay; i++) { > + for (i = 0; i < 10000 / sc->ec_polldelay; i++) { > EcStatus = EC_GET_CSR(sc); > if (EVENT_READY(Event, EcStatus)) { > Status = AE_OK; Try the code I just committed instead. -Nate