aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/namespace
diff options
context:
space:
mode:
authorRobert Moore <robert.moore@intel.com>2005-05-26 00:00:00 -0400
committerLen Brown <len.brown@intel.com>2005-07-13 16:46:34 -0400
commit88ac00f5a841dcfc5c682000f4a6add0add8caac (patch)
tree80dcff8323c6c79e8706f42eb4b7c3884bc03152 /drivers/acpi/namespace
parent6f42ccf2fc50ecee8ea170040627f268430c1648 (diff)
ACPICA 20050526 from Bob Moore <robert.moore@intel.com>
Implemented support to execute Type 1 and Type 2 AML opcodes appearing at the module level (not within a control method.) These opcodes are executed exactly once at the time the table is loaded. This type of code was legal up until the release of ACPI 2.0B (2002) and is now supported within ACPI CA in order to provide backwards compatibility with earlier BIOS implementations. This eliminates the "Encountered executable code at module level" warning that was previously generated upon detection of such code. Fixed a problem in the interpreter where an AE_NOT_FOUND exception could inadvertently be generated during the lookup of namespace objects in the second pass parse of ACPI tables and control methods. It appears that this problem could occur during the resolution of forward references to namespace objects. Added the ACPI_MUTEX_DEBUG #ifdef to the acpi_ut_release_mutex function, corresponding to the same the deadlock detection debug code to be compiled out in the normal case, improving mutex performance (and overall subsystem performance) considerably. As suggested by Alexey Starikovskiy. Implemented a handful of miscellaneous fixes for possible memory leaks on error conditions and error handling control paths. These fixes were suggested by FreeBSD and the Coverity Prevent source code analysis tool. Added a check for a null RSDT pointer in acpi_get_firmware_table (tbxfroot.c) to prevent a fault in this error case. Signed-off-by Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/namespace')
-rw-r--r--drivers/acpi/namespace/nsparse.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/acpi/namespace/nsparse.c b/drivers/acpi/namespace/nsparse.c
index a0e13e8d3764..f81b836e77f1 100644
--- a/drivers/acpi/namespace/nsparse.c
+++ b/drivers/acpi/namespace/nsparse.c
@@ -146,6 +146,7 @@ acpi_ns_parse_table (
146 * to service the entire parse. The second pass of the parse then 146 * to service the entire parse. The second pass of the parse then
147 * performs another complete parse of the AML.. 147 * performs another complete parse of the AML..
148 */ 148 */
149 ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 1\n"));
149 status = acpi_ns_one_complete_parse (1, table_desc); 150 status = acpi_ns_one_complete_parse (1, table_desc);
150 if (ACPI_FAILURE (status)) { 151 if (ACPI_FAILURE (status)) {
151 return_ACPI_STATUS (status); 152 return_ACPI_STATUS (status);
@@ -160,6 +161,7 @@ acpi_ns_parse_table (
160 * overhead of this is compensated for by the fact that the 161 * overhead of this is compensated for by the fact that the
161 * parse objects are all cached. 162 * parse objects are all cached.
162 */ 163 */
164 ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 2\n"));
163 status = acpi_ns_one_complete_parse (2, table_desc); 165 status = acpi_ns_one_complete_parse (2, table_desc);
164 if (ACPI_FAILURE (status)) { 166 if (ACPI_FAILURE (status)) {
165 return_ACPI_STATUS (status); 167 return_ACPI_STATUS (status);