diff options
author | Jung-uk Kim <jkim@FreeBSD.org> | 2014-02-17 17:10:41 +0000 |
---|---|---|
committer | Jung-uk Kim <jkim@FreeBSD.org> | 2014-02-17 17:10:41 +0000 |
commit | 526d99544ba42a5a2155021975b3b97da425819e (patch) | |
tree | f33eb960cbd87cb5fa516e45153eb6351dc8ea2e /source/components/utilities | |
parent | 7bf0bd8c239ae7e6cb5c98382db85377146519d6 (diff) |
Notes
Diffstat (limited to 'source/components/utilities')
-rw-r--r-- | source/components/utilities/utdelete.c | 16 | ||||
-rw-r--r-- | source/components/utilities/utglobal.c | 38 | ||||
-rw-r--r-- | source/components/utilities/utosi.c | 29 |
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 */ |