diff options
-rw-r--r-- | drivers/acpi/dispatcher/dswload.c | 4 | ||||
-rw-r--r-- | drivers/acpi/namespace/nsdump.c | 9 | ||||
-rw-r--r-- | drivers/acpi/namespace/nssearch.c | 4 | ||||
-rw-r--r-- | drivers/acpi/namespace/nswalk.c | 13 | ||||
-rw-r--r-- | include/acpi/aclocal.h | 2 | ||||
-rw-r--r-- | include/acpi/acnamesp.h | 10 |
6 files changed, 30 insertions, 12 deletions
diff --git a/drivers/acpi/dispatcher/dswload.c b/drivers/acpi/dispatcher/dswload.c index 565d4557d0e0..4ed08680ae7c 100644 --- a/drivers/acpi/dispatcher/dswload.c +++ b/drivers/acpi/dispatcher/dswload.c | |||
@@ -756,9 +756,9 @@ acpi_ds_load2_begin_op(struct acpi_walk_state *walk_state, | |||
756 | flags = ACPI_NS_NO_UPSEARCH; | 756 | flags = ACPI_NS_NO_UPSEARCH; |
757 | if (walk_state->pass_number == 3) { | 757 | if (walk_state->pass_number == 3) { |
758 | 758 | ||
759 | /* Execution mode, node cannot already exist */ | 759 | /* Execution mode, node cannot already exist, node is temporary */ |
760 | 760 | ||
761 | flags |= ACPI_NS_ERROR_IF_FOUND; | 761 | flags |= (ACPI_NS_ERROR_IF_FOUND | ACPI_NS_TEMPORARY); |
762 | } | 762 | } |
763 | 763 | ||
764 | /* Add new entry or lookup existing entry */ | 764 | /* Add new entry or lookup existing entry */ |
diff --git a/drivers/acpi/namespace/nsdump.c b/drivers/acpi/namespace/nsdump.c index da88834f55e7..ec5ce59acb98 100644 --- a/drivers/acpi/namespace/nsdump.c +++ b/drivers/acpi/namespace/nsdump.c | |||
@@ -226,6 +226,12 @@ acpi_ns_dump_one_object(acpi_handle obj_handle, | |||
226 | obj_desc = acpi_ns_get_attached_object(this_node); | 226 | obj_desc = acpi_ns_get_attached_object(this_node); |
227 | acpi_dbg_level = dbg_level; | 227 | acpi_dbg_level = dbg_level; |
228 | 228 | ||
229 | /* Temp nodes are those nodes created by a control method */ | ||
230 | |||
231 | if (this_node->flags & ANOBJ_TEMPORARY) { | ||
232 | acpi_os_printf("(T) "); | ||
233 | } | ||
234 | |||
229 | switch (info->display_type & ACPI_DISPLAY_MASK) { | 235 | switch (info->display_type & ACPI_DISPLAY_MASK) { |
230 | case ACPI_DISPLAY_SUMMARY: | 236 | case ACPI_DISPLAY_SUMMARY: |
231 | 237 | ||
@@ -623,7 +629,8 @@ acpi_ns_dump_objects(acpi_object_type type, | |||
623 | info.display_type = display_type; | 629 | info.display_type = display_type; |
624 | 630 | ||
625 | (void)acpi_ns_walk_namespace(type, start_handle, max_depth, | 631 | (void)acpi_ns_walk_namespace(type, start_handle, max_depth, |
626 | ACPI_NS_WALK_NO_UNLOCK, | 632 | ACPI_NS_WALK_NO_UNLOCK | |
633 | ACPI_NS_WALK_TEMP_NODES, | ||
627 | acpi_ns_dump_one_object, (void *)&info, | 634 | acpi_ns_dump_one_object, (void *)&info, |
628 | NULL); | 635 | NULL); |
629 | } | 636 | } |
diff --git a/drivers/acpi/namespace/nssearch.c b/drivers/acpi/namespace/nssearch.c index 566f0a4aff93..d261c9bcd450 100644 --- a/drivers/acpi/namespace/nssearch.c +++ b/drivers/acpi/namespace/nssearch.c | |||
@@ -402,6 +402,10 @@ acpi_ns_search_and_enter(u32 target_name, | |||
402 | } | 402 | } |
403 | #endif | 403 | #endif |
404 | 404 | ||
405 | if (flags & ACPI_NS_TEMPORARY) { | ||
406 | new_node->flags |= ANOBJ_TEMPORARY; | ||
407 | } | ||
408 | |||
405 | /* Install the new object into the parent's list of children */ | 409 | /* Install the new object into the parent's list of children */ |
406 | 410 | ||
407 | acpi_ns_install_node(walk_state, node, new_node, type); | 411 | acpi_ns_install_node(walk_state, node, new_node, type); |
diff --git a/drivers/acpi/namespace/nswalk.c b/drivers/acpi/namespace/nswalk.c index c8f6bef16ed0..a138fcb832a3 100644 --- a/drivers/acpi/namespace/nswalk.c +++ b/drivers/acpi/namespace/nswalk.c | |||
@@ -126,7 +126,7 @@ struct acpi_namespace_node *acpi_ns_get_next_node(acpi_object_type type, | |||
126 | * PARAMETERS: Type - acpi_object_type to search for | 126 | * PARAMETERS: Type - acpi_object_type to search for |
127 | * start_node - Handle in namespace where search begins | 127 | * start_node - Handle in namespace where search begins |
128 | * max_depth - Depth to which search is to reach | 128 | * max_depth - Depth to which search is to reach |
129 | * unlock_before_callback- Whether to unlock the NS before invoking | 129 | * Flags - Whether to unlock the NS before invoking |
130 | * the callback routine | 130 | * the callback routine |
131 | * user_function - Called when an object of "Type" is found | 131 | * user_function - Called when an object of "Type" is found |
132 | * Context - Passed to user function | 132 | * Context - Passed to user function |
@@ -153,7 +153,7 @@ acpi_status | |||
153 | acpi_ns_walk_namespace(acpi_object_type type, | 153 | acpi_ns_walk_namespace(acpi_object_type type, |
154 | acpi_handle start_node, | 154 | acpi_handle start_node, |
155 | u32 max_depth, | 155 | u32 max_depth, |
156 | u8 unlock_before_callback, | 156 | u32 flags, |
157 | acpi_walk_callback user_function, | 157 | acpi_walk_callback user_function, |
158 | void *context, void **return_value) | 158 | void *context, void **return_value) |
159 | { | 159 | { |
@@ -201,12 +201,15 @@ acpi_ns_walk_namespace(acpi_object_type type, | |||
201 | child_type = child_node->type; | 201 | child_type = child_node->type; |
202 | } | 202 | } |
203 | 203 | ||
204 | if (child_type == type) { | 204 | if ((child_type == type) && |
205 | (!(child_node->flags & ANOBJ_TEMPORARY) || | ||
206 | (child_node->flags & ANOBJ_TEMPORARY) | ||
207 | && (flags & ACPI_NS_WALK_TEMP_NODES))) { | ||
205 | /* | 208 | /* |
206 | * Found a matching node, invoke the user | 209 | * Found a matching node, invoke the user |
207 | * callback function | 210 | * callback function |
208 | */ | 211 | */ |
209 | if (unlock_before_callback) { | 212 | if (flags & ACPI_NS_WALK_UNLOCK) { |
210 | mutex_status = | 213 | mutex_status = |
211 | acpi_ut_release_mutex | 214 | acpi_ut_release_mutex |
212 | (ACPI_MTX_NAMESPACE); | 215 | (ACPI_MTX_NAMESPACE); |
@@ -219,7 +222,7 @@ acpi_ns_walk_namespace(acpi_object_type type, | |||
219 | status = user_function(child_node, level, | 222 | status = user_function(child_node, level, |
220 | context, return_value); | 223 | context, return_value); |
221 | 224 | ||
222 | if (unlock_before_callback) { | 225 | if (flags & ACPI_NS_WALK_UNLOCK) { |
223 | mutex_status = | 226 | mutex_status = |
224 | acpi_ut_acquire_mutex | 227 | acpi_ut_acquire_mutex |
225 | (ACPI_MTX_NAMESPACE); | 228 | (ACPI_MTX_NAMESPACE); |
diff --git a/include/acpi/aclocal.h b/include/acpi/aclocal.h index 553763d7312a..287da6fe256c 100644 --- a/include/acpi/aclocal.h +++ b/include/acpi/aclocal.h | |||
@@ -204,7 +204,7 @@ struct acpi_namespace_node { | |||
204 | /* Namespace Node flags */ | 204 | /* Namespace Node flags */ |
205 | 205 | ||
206 | #define ANOBJ_END_OF_PEER_LIST 0x01 /* End-of-list, Peer field points to parent */ | 206 | #define ANOBJ_END_OF_PEER_LIST 0x01 /* End-of-list, Peer field points to parent */ |
207 | #define ANOBJ_RESERVED 0x02 /* Available for future use */ | 207 | #define ANOBJ_TEMPORARY 0x02 /* Node is create by a method and is temporary */ |
208 | #define ANOBJ_METHOD_ARG 0x04 /* Node is a method argument */ | 208 | #define ANOBJ_METHOD_ARG 0x04 /* Node is a method argument */ |
209 | #define ANOBJ_METHOD_LOCAL 0x08 /* Node is a method local */ | 209 | #define ANOBJ_METHOD_LOCAL 0x08 /* Node is a method local */ |
210 | #define ANOBJ_SUBTREE_HAS_INI 0x10 /* Used to optimize device initialization */ | 210 | #define ANOBJ_SUBTREE_HAS_INI 0x10 /* Used to optimize device initialization */ |
diff --git a/include/acpi/acnamesp.h b/include/acpi/acnamesp.h index b3b9f0ec79c3..19a61292af60 100644 --- a/include/acpi/acnamesp.h +++ b/include/acpi/acnamesp.h | |||
@@ -65,9 +65,13 @@ | |||
65 | #define ACPI_NS_ERROR_IF_FOUND 0x08 | 65 | #define ACPI_NS_ERROR_IF_FOUND 0x08 |
66 | #define ACPI_NS_PREFIX_IS_SCOPE 0x10 | 66 | #define ACPI_NS_PREFIX_IS_SCOPE 0x10 |
67 | #define ACPI_NS_EXTERNAL 0x20 | 67 | #define ACPI_NS_EXTERNAL 0x20 |
68 | #define ACPI_NS_TEMPORARY 0x40 | ||
68 | 69 | ||
69 | #define ACPI_NS_WALK_UNLOCK TRUE | 70 | /* Flags for acpi_ns_walk_namespace */ |
70 | #define ACPI_NS_WALK_NO_UNLOCK FALSE | 71 | |
72 | #define ACPI_NS_WALK_NO_UNLOCK 0 | ||
73 | #define ACPI_NS_WALK_UNLOCK 0x01 | ||
74 | #define ACPI_NS_WALK_TEMP_NODES 0x02 | ||
71 | 75 | ||
72 | /* | 76 | /* |
73 | * nsinit - Namespace initialization | 77 | * nsinit - Namespace initialization |
@@ -92,7 +96,7 @@ acpi_status | |||
92 | acpi_ns_walk_namespace(acpi_object_type type, | 96 | acpi_ns_walk_namespace(acpi_object_type type, |
93 | acpi_handle start_object, | 97 | acpi_handle start_object, |
94 | u32 max_depth, | 98 | u32 max_depth, |
95 | u8 unlock_before_callback, | 99 | u32 flags, |
96 | acpi_walk_callback user_function, | 100 | acpi_walk_callback user_function, |
97 | void *context, void **return_value); | 101 | void *context, void **return_value); |
98 | 102 | ||