aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/namespace
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2006-05-12 17:12:00 -0400
committerLen Brown <len.brown@intel.com>2006-06-14 02:34:48 -0400
commit958dd242b691f64ab4632b4903dbb1e16fee8269 (patch)
treeddf4932fb4e3023dd0d1914571f17f2e3b03978d /drivers/acpi/namespace
parentb229cf92eee616c7cb5ad8cdb35a19b119f00bc8 (diff)
ACPI: ACPICA 20060512
Replaced the acpi_os_queue_for_execution() with a new interface named acpi_os_execute(). The major difference is that the new interface does not have a Priority parameter, this appeared to be useless and has been replaced by a Type parameter. The Type tells the OS what type of execution is being requested, such as global lock handler, notify handler, GPE handler, etc. This allows the host to queue and execute the request as appropriate for the request type, possibly using different work queues and different priorities for the various request types. This enables fixes for multithreading deadlock problems such as http://bugzilla.kernel.org/show_bug.cgi?id=5534 (Alexey Starikovskiy and Bob Moore) Fixed a possible memory leak associated with the support for the so-called "implicit return" ACPI extension. Reported by FreeBSD (Fiodor Suietov) http://bugzilla.kernel.org/show_bug.cgi?id=6514 Fixed a problem with the Load() operator where a table load from an operation region could overwrite an internal table buffer by up to 7 bytes and cause alignment faults on IPF systems. (With assistance from Luming Yu) Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/namespace')
-rw-r--r--drivers/acpi/namespace/nsaccess.c8
-rw-r--r--drivers/acpi/namespace/nssearch.c7
2 files changed, 10 insertions, 5 deletions
diff --git a/drivers/acpi/namespace/nsaccess.c b/drivers/acpi/namespace/nsaccess.c
index 5e3f63a90fb4..ba8ad569188f 100644
--- a/drivers/acpi/namespace/nsaccess.c
+++ b/drivers/acpi/namespace/nsaccess.c
@@ -157,7 +157,7 @@ acpi_status acpi_ns_root_initialize(void)
157 157
158#if defined (ACPI_ASL_COMPILER) 158#if defined (ACPI_ASL_COMPILER)
159 159
160 /* save the parameter count for the i_aSL compiler */ 160 /* Save the parameter count for the i_aSL compiler */
161 161
162 new_node->value = obj_desc->method.param_count; 162 new_node->value = obj_desc->method.param_count;
163#else 163#else
@@ -311,8 +311,7 @@ acpi_ns_lookup(union acpi_generic_state *scope_info,
311 acpi_object_type type_to_check_for; 311 acpi_object_type type_to_check_for;
312 acpi_object_type this_search_type; 312 acpi_object_type this_search_type;
313 u32 search_parent_flag = ACPI_NS_SEARCH_PARENT; 313 u32 search_parent_flag = ACPI_NS_SEARCH_PARENT;
314 u32 local_flags = flags & ~(ACPI_NS_ERROR_IF_FOUND | 314 u32 local_flags;
315 ACPI_NS_SEARCH_PARENT);
316 315
317 ACPI_FUNCTION_TRACE(ns_lookup); 316 ACPI_FUNCTION_TRACE(ns_lookup);
318 317
@@ -320,8 +319,9 @@ acpi_ns_lookup(union acpi_generic_state *scope_info,
320 return_ACPI_STATUS(AE_BAD_PARAMETER); 319 return_ACPI_STATUS(AE_BAD_PARAMETER);
321 } 320 }
322 321
323 acpi_gbl_ns_lookup_count++; 322 local_flags = flags & ~(ACPI_NS_ERROR_IF_FOUND | ACPI_NS_SEARCH_PARENT);
324 *return_node = ACPI_ENTRY_NOT_FOUND; 323 *return_node = ACPI_ENTRY_NOT_FOUND;
324 acpi_gbl_ns_lookup_count++;
325 325
326 if (!acpi_gbl_root_node) { 326 if (!acpi_gbl_root_node) {
327 return_ACPI_STATUS(AE_NO_NAMESPACE); 327 return_ACPI_STATUS(AE_NO_NAMESPACE);
diff --git a/drivers/acpi/namespace/nssearch.c b/drivers/acpi/namespace/nssearch.c
index 34ac512a2d5e..d2473476afa5 100644
--- a/drivers/acpi/namespace/nssearch.c
+++ b/drivers/acpi/namespace/nssearch.c
@@ -299,7 +299,7 @@ acpi_ns_search_and_enter(u32 target_name,
299 299
300 if (!node || !target_name || !return_node) { 300 if (!node || !target_name || !return_node) {
301 ACPI_ERROR((AE_INFO, 301 ACPI_ERROR((AE_INFO,
302 "Null param: Node %p Name %X ReturnNode %p", 302 "Null parameter: Node %p Name %X ReturnNode %p",
303 node, target_name, return_node)); 303 node, target_name, return_node));
304 return_ACPI_STATUS(AE_BAD_PARAMETER); 304 return_ACPI_STATUS(AE_BAD_PARAMETER);
305 } 305 }
@@ -385,6 +385,11 @@ acpi_ns_search_and_enter(u32 target_name,
385 if (!new_node) { 385 if (!new_node) {
386 return_ACPI_STATUS(AE_NO_MEMORY); 386 return_ACPI_STATUS(AE_NO_MEMORY);
387 } 387 }
388#ifdef ACPI_ASL_COMPILER
389 if (flags & ACPI_NS_EXTERNAL) {
390 new_node->flags |= ANOBJ_IS_EXTERNAL;
391 }
392#endif
388 393
389 /* Install the new object into the parent's list of children */ 394 /* Install the new object into the parent's list of children */
390 395