From owner-freebsd-stable@FreeBSD.ORG Mon Jan 14 19:38:31 2008 Return-Path: Delivered-To: stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B488916A417 for ; Mon, 14 Jan 2008 19:38:31 +0000 (UTC) (envelope-from nate@root.org) Received: from root.org (root.org [67.118.192.226]) by mx1.freebsd.org (Postfix) with ESMTP id 8D0D013C45A for ; Mon, 14 Jan 2008 19:38:31 +0000 (UTC) (envelope-from nate@root.org) Received: (qmail 65005 invoked from network); 14 Jan 2008 19:11:52 -0000 Received: from ppp-71-139-9-226.dsl.snfc21.pacbell.net (HELO ?10.0.5.18?) (nate-mail@71.139.9.226) by root.org with ESMTPA; 14 Jan 2008 19:11:52 -0000 Message-ID: <478BB3F4.7050600@root.org> Date: Mon, 14 Jan 2008 11:11:48 -0800 From: Nate Lawson User-Agent: Thunderbird 2.0.0.9 (X11/20071122) MIME-Version: 1.0 To: stable@freebsd.org References: <47893F8B.7010805@root.org> <4789756B.8060203@vwsoft.com> <4789B267.1000505@root.org> In-Reply-To: <4789B267.1000505@root.org> X-Enigmail-Version: 0.95.5 Content-Type: multipart/mixed; boundary="------------070609030008030803090405" Cc: current@FreeBSD.org Subject: Re: Fix for GPE livelock on HPs X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jan 2008 19:38:31 -0000 This is a multi-part message in MIME format. --------------070609030008030803090405 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Nate Lawson wrote: > Volker wrote: >> On 12/23/-58 20:59, Nate Lawson wrote: >>> I've committed the below patch and want to MFC it to 7.0. To do this, I >>> need people to test this quickly. It probably has no effect in 6.x and >>> probably doesn't apply cleanly there. >>> >>> Please try this patch if you have a laptop and 7.x. If you have >>> -current, just cvsup. I'd like to make sure there is no regression. >>> I'm already aware that it fixes things for some HP users. >> Nate, >> >> can you be a bit specific for a) what GPE is, b) what the problem is, >> c) what to look for (any test procedures?) and d) which HP laptop >> models might be affected? >> >> I do have an Omnibook vt6200 (P-IV 1.8G) running 6-STABLE and a new HP >> 6715b (Tur-X2 TL-60) running 7-RC1 (currently installing on this, OS >> is not yet fully set up). >> >> If I knew what to look for, I might test your patches (at least on the >> 7-RC1 version). > > A GPE is an interrupt of sorts. I'm looking for any bad behavior the > patch might cause. I'm certain it fixes lockups some HPs had during > thermal zone events (i.e. fan switching on when it gets hot). Pretty > much anyone with a laptop that locks up and you suspect acpi should test > it. And anyone who is willing to test it on another brand laptop to be > sure the patch doesn't break anything more would be welcome. > > You should be able to do "sysctl hw.acpi" and see the temperature and > "apm" to see battery status without any new problems after applying the > patch. I've added a patch for 6-stable also (attached). Please test if you have a laptop and 6.x. See -current for the 7.x patch if that's relevant to you. -Nate --------------070609030008030803090405 Content-Type: text/x-patch; name="defer_gpe_6x.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="defer_gpe_6x.diff" Index: sys/dev/acpica/Osd/OsdSchedule.c =================================================================== RCS file: /home/ncvs/src/sys/dev/acpica/Osd/OsdSchedule.c,v retrieving revision 1.32.2.6 diff -u -r1.32.2.6 OsdSchedule.c --- sys/dev/acpica/Osd/OsdSchedule.c 6 Jul 2006 08:32:49 -0000 1.32.2.6 +++ sys/dev/acpica/Osd/OsdSchedule.c 14 Jan 2008 19:06:27 -0000 @@ -106,10 +106,8 @@ at->at_context = Context; switch (Priority) { case OSD_PRIORITY_GPE: - pri = 4; - break; case OSD_PRIORITY_HIGH: - pri = 3; + pri = 4; break; case OSD_PRIORITY_MED: pri = 2; Index: sys/contrib/dev/acpica/evgpe.c =================================================================== RCS file: /home/ncvs/src/sys/contrib/dev/acpica/evgpe.c,v retrieving revision 1.1.1.9.2.1 diff -u -r1.1.1.9.2.1 evgpe.c --- sys/contrib/dev/acpica/evgpe.c 7 Nov 2005 09:55:48 -0000 1.1.1.9.2.1 +++ sys/contrib/dev/acpica/evgpe.c 14 Jan 2008 19:02:15 -0000 @@ -587,6 +587,10 @@ * ******************************************************************************/ +static void +AcpiEvAsynchEnableGpe ( + void *Context); + static void ACPI_SYSTEM_XFACE AcpiEvAsynchExecuteGpeMethod ( void *Context) @@ -656,13 +660,26 @@ } } - if ((LocalGpeEventInfo.Flags & ACPI_GPE_XRUPT_TYPE_MASK) == ACPI_GPE_LEVEL_TRIGGERED) + /* Defer enabling of GPE until all notify handlers are done */ + AcpiOsExecute(OSL_NOTIFY_HANDLER, AcpiEvAsynchEnableGpe, GpeEventInfo); + return_VOID; +} + +static void +AcpiEvAsynchEnableGpe ( + void *Context) +{ + ACPI_GPE_EVENT_INFO *GpeEventInfo = (void *) Context; + ACPI_STATUS Status; + + if ((GpeEventInfo->Flags & ACPI_GPE_XRUPT_TYPE_MASK) == + ACPI_GPE_LEVEL_TRIGGERED) { /* * GPE is level-triggered, we clear the GPE status bit after * handling the event. */ - Status = AcpiHwClearGpe (&LocalGpeEventInfo); + Status = AcpiHwClearGpe (GpeEventInfo); if (ACPI_FAILURE (Status)) { return_VOID; @@ -671,7 +688,7 @@ /* Enable this GPE */ - (void) AcpiHwWriteGpeEnableReg (&LocalGpeEventInfo); + (void) AcpiHwWriteGpeEnableReg (GpeEventInfo); return_VOID; } --------------070609030008030803090405--