Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Jan 2013 19:54:57 -0500
From:      Jung-uk Kim <jkim@FreeBSD.org>
To:        Pawel Jakub Dawidek <pjd@FreeBSD.org>
Cc:        current@FreeBSD.org
Subject:   Re: ACPI panic on unplugging the power cord.
Message-ID:  <51008661.4060006@FreeBSD.org>
In-Reply-To: <20130122175629.GA1714@garage.freebsd.pl>
References:  <20130122175629.GA1714@garage.freebsd.pl>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------080405050404060205050101
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 2013-01-22 12:56:29 -0500, Pawel Jakub Dawidek wrote:
> I just upgraded to HEAD today and was wondering what will explode. 
> Now I know.
> 
> When I unplug power cord from my laptop, ACPI panics. Pictures
> here:
> 
> http://people.freebsd.org/~pjd/misc/acpi_panic_0.jpg 
> http://people.freebsd.org/~pjd/misc/acpi_panic_1.jpg
> 
> Let me know if you need more info.

Can you please try the attached patch?  It is also available from here:

http://people.freebsd.org/~jkim/utcache.diff

Please note the patch may or may not fix the problem but I think I
found an ancient bug. :-(

Thanks,

Jung-uk Kim
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)

iQEcBAEBAgAGBQJRAIZhAAoJECXpabHZMqHOWl8H/3pUGshUkzCNbEOQHoZOYXMW
TtLaUqdV3/zYGEYDYl5Tbxv2JUz4tWDU5KlWhnZk+MjNnR1+g0fgzQu3mK056NU+
rpZucEnoaEeKriLpd+Hsw3Y28eXiY8/9T8/SnFMUW7AS6HZk8G7itdu9cx9A+IY6
A2tQBIpDXes4a5BLNZzyP/2dSMrcKVeS28+fZlxGdWWakFs5/FWYguK5kR2PIkCS
3yh8vEv7XH8WJz+sK/v/jcpcxt+heCG+j8XIwJieqk1CDXaCtH6g+4mlKQogsZY1
1YSYaGE+/szNvnR9UjW1+x/mhA5atFa9ysCq96zvVOs/Ih7X9Id4fZ6laetSDIs=
=rUXs
-----END PGP SIGNATURE-----

--------------080405050404060205050101
Content-Type: text/x-patch;
 name="utcache.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="utcache.diff"

Index: sys/contrib/dev/acpica/components/utilities/utcache.c
===================================================================
--- sys/contrib/dev/acpica/components/utilities/utcache.c	(revision 245848)
+++ sys/contrib/dev/acpica/components/utilities/utcache.c	(working copy)
@@ -95,7 +95,6 @@ AcpiOsCreateCache (
     /* Populate the cache object and return it */
 
     ACPI_MEMSET (Cache, 0, sizeof (ACPI_MEMORY_LIST));
-    Cache->LinkOffset = 8;
     Cache->ListName   = CacheName;
     Cache->ObjectSize = ObjectSize;
     Cache->MaxDepth   = MaxDepth;
@@ -121,7 +120,7 @@ ACPI_STATUS
 AcpiOsPurgeCache (
     ACPI_MEMORY_LIST        *Cache)
 {
-    char                    *Next;
+    void                    *Next;
     ACPI_STATUS             Status;
 
 
@@ -145,8 +144,7 @@ AcpiOsPurgeCache (
     {
         /* Delete and unlink one cached state object */
 
-        Next = *(ACPI_CAST_INDIRECT_PTR (char,
-                    &(((char *) Cache->ListHead)[Cache->LinkOffset])));
+        Next = ((ACPI_OBJECT_COMMON *) Cache->ListHead)->NextObject;
         ACPI_FREE (Cache->ListHead);
 
         Cache->ListHead = Next;
@@ -251,8 +249,7 @@ AcpiOsReleaseObject (
 
         /* Put the object at the head of the cache list */
 
-        * (ACPI_CAST_INDIRECT_PTR (char,
-            &(((char *) Object)[Cache->LinkOffset]))) = Cache->ListHead;
+        ((ACPI_OBJECT_COMMON *) Object)->NextObject = Cache->ListHead;
         Cache->ListHead = Object;
         Cache->CurrentDepth++;
 
@@ -307,8 +304,7 @@ AcpiOsAcquireObject (
         /* There is an object available, use it */
 
         Object = Cache->ListHead;
-        Cache->ListHead = *(ACPI_CAST_INDIRECT_PTR (char,
-                                &(((char *) Object)[Cache->LinkOffset])));
+        Cache->ListHead = ((ACPI_OBJECT_COMMON *) Object)->NextObject;
 
         Cache->CurrentDepth--;
 
Index: sys/contrib/dev/acpica/include/actypes.h
===================================================================
--- sys/contrib/dev/acpica/include/actypes.h	(revision 245848)
+++ sys/contrib/dev/acpica/include/actypes.h	(working copy)
@@ -1226,7 +1226,6 @@ typedef struct acpi_memory_list
     UINT16                          ObjectSize;
     UINT16                          MaxDepth;
     UINT16                          CurrentDepth;
-    UINT16                          LinkOffset;
 
 #ifdef ACPI_DBG_TRACK_ALLOCATIONS
 

--------------080405050404060205050101--



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