Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 25 Nov 2012 18:17:37 +0200
From:      Andriy Gapon <avg@FreeBSD.org>
To:        Stefan Farfeleder <stefanf@FreeBSD.org>
Cc:        freebsd-acpi@FreeBSD.org
Subject:   Re: ACPI panic
Message-ID:  <50B244A1.1040800@FreeBSD.org>
In-Reply-To: <20121125140008.GA1497@mole.fafoe.narf.at>
References:  <20121120103522.GB2012@mole.fafoe.narf.at> <50AC0A68.8070906@FreeBSD.org> <20121121104840.GA1468@mole.fafoe.narf.at> <20121122081831.GA1483@mole.fafoe.narf.at> <50ADFD75.10709@FreeBSD.org> <50ADFFB2.1000108@FreeBSD.org> <50AE057D.8060808@FreeBSD.org> <20121125140008.GA1497@mole.fafoe.narf.at>

next in thread | previous in thread | raw e-mail | index | archive | help
on 25/11/2012 16:00 Stefan Farfeleder said the following:
> Hi Andriy,
> 
> with your patch my notebook has a ~50% chance of stalling during boot.
> This always happens after the "Entropy harvesting" line and I can only
> power it down then.
> I guess somehow cycles are introduced into the acpi objects list? The
> panic was never triggered.

Hmm, I didn't think that the cycles were possible...
Could you please try the following patch on top of the previous ones?
Also, if you don't have DDB in your kernel yet, please add it and try to break
into the debugger if one of those hangs happens again without any panic.

diff --git a/sys/contrib/dev/acpica/components/utilities/utcache.c
b/sys/contrib/dev/acpica/components/utilities/utcache.c
index edd9e4f..5eee934 100644
--- a/sys/contrib/dev/acpica/components/utilities/utcache.c
+++ b/sys/contrib/dev/acpica/components/utilities/utcache.c
@@ -229,6 +229,8 @@ AcpiOsReleaseObject (
     (void) AcpiUtAcquireMutex (ACPI_MTX_CACHES);
     char                    *Curr;
     char                    *Next;
+    int                     Depth;
+    Depth = Cache->CurrentDepth;
     Next = Cache->ListHead;
     while (Next)
     {
@@ -238,6 +240,10 @@ AcpiOsReleaseObject (
         if (Object == Curr) {
             panic("freeing a free object %p", Object);
         }
+        Depth--;
+        if (Depth < 0) {
+            panic("cycle in a cache list");
+        }
     }
     (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES);



-- 
Andriy Gapon



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?50B244A1.1040800>