From owner-freebsd-acpi@FreeBSD.ORG Fri Dec 4 18:45:23 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1EEFE1065696 for ; Fri, 4 Dec 2009 18:45:23 +0000 (UTC) (envelope-from robert.moore@intel.com) Received: from mga03.intel.com (mga03.intel.com [143.182.124.21]) by mx1.freebsd.org (Postfix) with ESMTP id EA33B8FC26 for ; Fri, 4 Dec 2009 18:45:22 +0000 (UTC) Received: from azsmga001.ch.intel.com ([10.2.17.19]) by azsmga101.ch.intel.com with ESMTP; 04 Dec 2009 10:45:22 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.47,316,1257148800"; d="scan'208";a="218945998" Received: from orsmsx601.amr.corp.intel.com ([10.22.226.213]) by azsmga001.ch.intel.com with ESMTP; 04 Dec 2009 10:45:14 -0800 Received: from orsmsx503.amr.corp.intel.com ([10.22.226.47]) by orsmsx601.amr.corp.intel.com ([10.22.226.213]) with mapi; Fri, 4 Dec 2009 10:45:13 -0800 From: "Moore, Robert" To: Andriy Gapon Date: Fri, 4 Dec 2009 10:45:11 -0800 Thread-Topic: panic in AcpiExReleaseMutex Thread-Index: Acp0ogsptUDjOeZmRHKv65634ATWDwAbiW6w Message-ID: <4911F71203A09E4D9981D27F9D8308583E8F2A1F@orsmsx503.amr.corp.intel.com> References: <4B178387.4050601@icyb.net.ua> <4911F71203A09E4D9981D27F9D8308583E8F26CF@orsmsx503.amr.corp.intel.com> <4B189CD6.30906@icyb.net.ua> In-Reply-To: <4B189CD6.30906@icyb.net.ua> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Cc: "freebsd-acpi@freebsd.org" , Tarick Subject: RE: panic in AcpiExReleaseMutex X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 Dec 2009 18:45:23 -0000 Yes, you are correct. I did not have the code in front of me at the time. When AcpiExReleaseMutex is called, apparently the mutex is in fact held, ot= herwise the function would have aborted immediately. When the mutex is held, the Thread->AcquiredMutexList is expected to hold (= at the minimum) the mutex object being released. Something is very wrong if= this list is NULL when releasing the mutex. Just to make sure: All of this is happening in the same thread? >-----Original Message----- >From: Andriy Gapon [mailto:avg@icyb.net.ua] >Sent: Thursday, December 03, 2009 9:24 PM >To: Moore, Robert >Cc: freebsd-acpi@freebsd.org; Tarick >Subject: Re: panic in AcpiExReleaseMutex > >on 04/12/2009 06:57 Moore, Robert said the following: >>> I am somewhat suspicious of recursive use of \_SB.PCI0.LPC0.EC0.MUT1 >> >> It is OK for AML code to acquire a mutex multiple times, so I don't thin= k >that is the problem. >> >>> PreviousSyncLevel =3D >>> WalkState->Thread->AcquiredMutexList->Mutex.OriginalSyncLevel; >> >> Multiple pointers here, do you know which one is null? >> > >It must be AcquiredMutexList, because WalkState->Thread is checked for NUL= L >a >few lines above. > > >-- >Andriy Gapon