summaryrefslogtreecommitdiff
path: root/source/components/utilities
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2014-02-17 17:10:41 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2014-02-17 17:10:41 +0000
commit526d99544ba42a5a2155021975b3b97da425819e (patch)
treef33eb960cbd87cb5fa516e45153eb6351dc8ea2e /source/components/utilities
parent7bf0bd8c239ae7e6cb5c98382db85377146519d6 (diff)
Notes
Diffstat (limited to 'source/components/utilities')
-rw-r--r--source/components/utilities/utdelete.c16
-rw-r--r--source/components/utilities/utglobal.c38
-rw-r--r--source/components/utilities/utosi.c29
3 files changed, 61 insertions, 22 deletions
diff --git a/source/components/utilities/utdelete.c b/source/components/utilities/utdelete.c
index 480e1f764d9f..9e4c79b95ac3 100644
--- a/source/components/utilities/utdelete.c
+++ b/source/components/utilities/utdelete.c
@@ -86,6 +86,7 @@ AcpiUtDeleteInternalObj (
ACPI_OPERAND_OBJECT *HandlerDesc;
ACPI_OPERAND_OBJECT *SecondDesc;
ACPI_OPERAND_OBJECT *NextDesc;
+ ACPI_OPERAND_OBJECT *StartDesc;
ACPI_OPERAND_OBJECT **LastObjPtr;
@@ -250,9 +251,10 @@ AcpiUtDeleteInternalObj (
if (HandlerDesc)
{
NextDesc = HandlerDesc->AddressSpace.RegionList;
+ StartDesc = NextDesc;
LastObjPtr = &HandlerDesc->AddressSpace.RegionList;
- /* Remove the region object from the handler's list */
+ /* Remove the region object from the handler list */
while (NextDesc)
{
@@ -262,10 +264,20 @@ AcpiUtDeleteInternalObj (
break;
}
- /* Walk the linked list of handler */
+ /* Walk the linked list of handlers */
LastObjPtr = &NextDesc->Region.Next;
NextDesc = NextDesc->Region.Next;
+
+ /* Prevent infinite loop if list is corrupted */
+
+ if (NextDesc == StartDesc)
+ {
+ ACPI_ERROR ((AE_INFO,
+ "Circular region list in address handler object %p",
+ HandlerDesc));
+ return_VOID;
+ }
}
if (HandlerDesc->AddressSpace.HandlerFlags &
diff --git a/source/components/utilities/utglobal.c b/source/components/utilities/utglobal.c
index 046f3bba602a..0b029c8825a1 100644
--- a/source/components/utilities/utglobal.c
+++ b/source/components/utilities/utglobal.c
@@ -58,12 +58,7 @@
*
******************************************************************************/
-/*
- * We want the debug switches statically initialized so they
- * are already set when the debugger is entered.
- */
-
-/* Debug switch - level and trace mask */
+/* Debug output control masks */
#ifdef ACPI_DEBUG_OUTPUT
UINT32 AcpiDbgLevel = ACPI_DEBUG_DEFAULT;
@@ -71,24 +66,24 @@ UINT32 AcpiDbgLevel = ACPI_DEBUG_DEFAULT;
UINT32 AcpiDbgLevel = ACPI_NORMAL_DEFAULT;
#endif
-/* Debug switch - layer (component) mask */
-
UINT32 AcpiDbgLayer = ACPI_COMPONENT_DEFAULT;
-UINT32 AcpiGbl_NestingLevel = 0;
-
-/* Debugger globals */
-
-BOOLEAN AcpiGbl_DbTerminateThreads = FALSE;
-BOOLEAN AcpiGbl_AbortMethod = FALSE;
-BOOLEAN AcpiGbl_MethodExecuting = FALSE;
-/* System flags */
+/* AcpiGbl_FADT is a local copy of the FADT, converted to a common format. */
-UINT32 AcpiGbl_StartupFlags = 0;
+ACPI_TABLE_FADT AcpiGbl_FADT;
+UINT32 AcpiGbl_TraceFlags;
+ACPI_NAME AcpiGbl_TraceMethodName;
+BOOLEAN AcpiGbl_SystemAwakeAndRunning;
+UINT32 AcpiCurrentGpeCount;
-/* System starts uninitialized */
+/*
+ * ACPI 5.0 introduces the concept of a "reduced hardware platform", meaning
+ * that the ACPI hardware is no longer required. A flag in the FADT indicates
+ * a reduced HW machine, and that flag is duplicated here for convenience.
+ */
+BOOLEAN AcpiGbl_ReducedHardware;
-BOOLEAN AcpiGbl_Shutdown = TRUE;
+/* Various state name strings */
const char *AcpiGbl_SleepStateNames[ACPI_S_STATE_COUNT] =
{
@@ -309,7 +304,6 @@ AcpiUtInitGlobals (
AcpiGbl_DSDT = NULL;
AcpiGbl_CmSingleStep = FALSE;
- AcpiGbl_DbTerminateThreads = FALSE;
AcpiGbl_Shutdown = FALSE;
AcpiGbl_NsLookupCount = 0;
AcpiGbl_PsFindCount = 0;
@@ -357,6 +351,10 @@ AcpiUtInitGlobals (
AcpiGbl_DisableMemTracking = FALSE;
#endif
+#ifdef ACPI_DEBUGGER
+ AcpiGbl_DbTerminateThreads = FALSE;
+#endif
+
return_ACPI_STATUS (AE_OK);
}
diff --git a/source/components/utilities/utosi.c b/source/components/utilities/utosi.c
index c19ba4166427..286fe67a6e31 100644
--- a/source/components/utilities/utosi.c
+++ b/source/components/utilities/utosi.c
@@ -50,6 +50,34 @@
#define _COMPONENT ACPI_UTILITIES
ACPI_MODULE_NAME ("utosi")
+
+/******************************************************************************
+ *
+ * ACPICA policy for new _OSI strings:
+ *
+ * It is the stated policy of ACPICA that new _OSI strings will be integrated
+ * into this module as soon as possible after they are defined. It is strongly
+ * recommended that all ACPICA hosts mirror this policy and integrate any
+ * changes to this module as soon as possible. There are several historical
+ * reasons behind this policy:
+ *
+ * 1) New BIOSs tend to test only the case where the host responds TRUE to
+ * the latest version of Windows, which would respond to the latest/newest
+ * _OSI string. Not responding TRUE to the latest version of Windows will
+ * risk executing untested code paths throughout the DSDT and SSDTs.
+ *
+ * 2) If a new _OSI string is recognized only after a significant delay, this
+ * has the potential to cause problems on existing working machines because
+ * of the possibility that a new and different path through the ASL code
+ * will be executed.
+ *
+ * 3) New _OSI strings are tending to come out about once per year. A delay
+ * in recognizing a new string for a significant amount of time risks the
+ * release of another string which only compounds the initial problem.
+ *
+ *****************************************************************************/
+
+
/*
* Strings supported by the _OSI predefined control method (which is
* implemented internally within this module.)
@@ -78,6 +106,7 @@ static ACPI_INTERFACE_INFO AcpiDefaultSupportedInterfaces[] =
{"Windows 2006 SP2", NULL, 0, ACPI_OSI_WIN_VISTA_SP2}, /* Windows Vista SP2 - Added 09/2010 */
{"Windows 2009", NULL, 0, ACPI_OSI_WIN_7}, /* Windows 7 and Server 2008 R2 - Added 09/2009 */
{"Windows 2012", NULL, 0, ACPI_OSI_WIN_8}, /* Windows 8 and Server 2012 - Added 08/2012 */
+ {"Windows 2013", NULL, 0, ACPI_OSI_WIN_8}, /* Windows 8.1 and Server 2012 R2 - Added 01/2014 */
/* Feature Group Strings */