diff options
Diffstat (limited to 'drivers/acpi/namespace')
-rw-r--r-- | drivers/acpi/namespace/nsaccess.c | 101 | ||||
-rw-r--r-- | drivers/acpi/namespace/nsalloc.c | 2 | ||||
-rw-r--r-- | drivers/acpi/namespace/nsdump.c | 11 | ||||
-rw-r--r-- | drivers/acpi/namespace/nsdumpdv.c | 2 | ||||
-rw-r--r-- | drivers/acpi/namespace/nseval.c | 2 | ||||
-rw-r--r-- | drivers/acpi/namespace/nsinit.c | 12 | ||||
-rw-r--r-- | drivers/acpi/namespace/nsload.c | 6 | ||||
-rw-r--r-- | drivers/acpi/namespace/nsnames.c | 8 | ||||
-rw-r--r-- | drivers/acpi/namespace/nsobject.c | 2 | ||||
-rw-r--r-- | drivers/acpi/namespace/nsparse.c | 33 | ||||
-rw-r--r-- | drivers/acpi/namespace/nssearch.c | 2 | ||||
-rw-r--r-- | drivers/acpi/namespace/nsutils.c | 2 | ||||
-rw-r--r-- | drivers/acpi/namespace/nswalk.c | 6 | ||||
-rw-r--r-- | drivers/acpi/namespace/nsxfeval.c | 15 | ||||
-rw-r--r-- | drivers/acpi/namespace/nsxfname.c | 2 | ||||
-rw-r--r-- | drivers/acpi/namespace/nsxfobj.c | 2 |
16 files changed, 133 insertions, 75 deletions
diff --git a/drivers/acpi/namespace/nsaccess.c b/drivers/acpi/namespace/nsaccess.c index 57faf598bad8..c39a7f68b889 100644 --- a/drivers/acpi/namespace/nsaccess.c +++ b/drivers/acpi/namespace/nsaccess.c | |||
@@ -5,7 +5,7 @@ | |||
5 | ******************************************************************************/ | 5 | ******************************************************************************/ |
6 | 6 | ||
7 | /* | 7 | /* |
8 | * Copyright (C) 2000 - 2007, R. Byron Moore | 8 | * Copyright (C) 2000 - 2008, Intel Corp. |
9 | * All rights reserved. | 9 | * All rights reserved. |
10 | * | 10 | * |
11 | * Redistribution and use in source and binary forms, with or without | 11 | * Redistribution and use in source and binary forms, with or without |
@@ -208,8 +208,7 @@ acpi_status acpi_ns_root_initialize(void) | |||
208 | /* Special case for ACPI Global Lock */ | 208 | /* Special case for ACPI Global Lock */ |
209 | 209 | ||
210 | if (ACPI_STRCMP(init_val->name, "_GL_") == 0) { | 210 | if (ACPI_STRCMP(init_val->name, "_GL_") == 0) { |
211 | acpi_gbl_global_lock_mutex = | 211 | acpi_gbl_global_lock_mutex = obj_desc; |
212 | obj_desc->mutex.os_mutex; | ||
213 | 212 | ||
214 | /* Create additional counting semaphore for global lock */ | 213 | /* Create additional counting semaphore for global lock */ |
215 | 214 | ||
@@ -582,44 +581,68 @@ acpi_ns_lookup(union acpi_generic_state *scope_info, | |||
582 | return_ACPI_STATUS(status); | 581 | return_ACPI_STATUS(status); |
583 | } | 582 | } |
584 | 583 | ||
585 | /* | 584 | /* More segments to follow? */ |
586 | * Sanity typecheck of the target object: | 585 | |
587 | * | 586 | if (num_segments > 0) { |
588 | * If 1) This is the last segment (num_segments == 0) | 587 | /* |
589 | * 2) And we are looking for a specific type | 588 | * If we have an alias to an object that opens a scope (such as a |
590 | * (Not checking for TYPE_ANY) | 589 | * device or processor), we need to dereference the alias here so that |
591 | * 3) Which is not an alias | 590 | * we can access any children of the original node (via the remaining |
592 | * 4) Which is not a local type (TYPE_SCOPE) | 591 | * segments). |
593 | * 5) And the type of target object is known (not TYPE_ANY) | 592 | */ |
594 | * 6) And target object does not match what we are looking for | 593 | if (this_node->type == ACPI_TYPE_LOCAL_ALIAS) { |
595 | * | 594 | if (acpi_ns_opens_scope |
596 | * Then we have a type mismatch. Just warn and ignore it. | 595 | (((struct acpi_namespace_node *)this_node-> |
597 | */ | 596 | object)->type)) { |
598 | if ((num_segments == 0) && | 597 | this_node = |
599 | (type_to_check_for != ACPI_TYPE_ANY) && | 598 | (struct acpi_namespace_node *) |
600 | (type_to_check_for != ACPI_TYPE_LOCAL_ALIAS) && | 599 | this_node->object; |
601 | (type_to_check_for != ACPI_TYPE_LOCAL_METHOD_ALIAS) && | 600 | } |
602 | (type_to_check_for != ACPI_TYPE_LOCAL_SCOPE) && | 601 | } |
603 | (this_node->type != ACPI_TYPE_ANY) && | ||
604 | (this_node->type != type_to_check_for)) { | ||
605 | |||
606 | /* Complain about a type mismatch */ | ||
607 | |||
608 | ACPI_WARNING((AE_INFO, | ||
609 | "NsLookup: Type mismatch on %4.4s (%s), searching for (%s)", | ||
610 | ACPI_CAST_PTR(char, &simple_name), | ||
611 | acpi_ut_get_type_name(this_node->type), | ||
612 | acpi_ut_get_type_name | ||
613 | (type_to_check_for))); | ||
614 | } | 602 | } |
615 | 603 | ||
616 | /* | 604 | /* Special handling for the last segment (num_segments == 0) */ |
617 | * If this is the last name segment and we are not looking for a | 605 | |
618 | * specific type, but the type of found object is known, use that type | 606 | else { |
619 | * to see if it opens a scope. | 607 | /* |
620 | */ | 608 | * Sanity typecheck of the target object: |
621 | if ((num_segments == 0) && (type == ACPI_TYPE_ANY)) { | 609 | * |
622 | type = this_node->type; | 610 | * If 1) This is the last segment (num_segments == 0) |
611 | * 2) And we are looking for a specific type | ||
612 | * (Not checking for TYPE_ANY) | ||
613 | * 3) Which is not an alias | ||
614 | * 4) Which is not a local type (TYPE_SCOPE) | ||
615 | * 5) And the type of target object is known (not TYPE_ANY) | ||
616 | * 6) And target object does not match what we are looking for | ||
617 | * | ||
618 | * Then we have a type mismatch. Just warn and ignore it. | ||
619 | */ | ||
620 | if ((type_to_check_for != ACPI_TYPE_ANY) && | ||
621 | (type_to_check_for != ACPI_TYPE_LOCAL_ALIAS) && | ||
622 | (type_to_check_for != ACPI_TYPE_LOCAL_METHOD_ALIAS) | ||
623 | && (type_to_check_for != ACPI_TYPE_LOCAL_SCOPE) | ||
624 | && (this_node->type != ACPI_TYPE_ANY) | ||
625 | && (this_node->type != type_to_check_for)) { | ||
626 | |||
627 | /* Complain about a type mismatch */ | ||
628 | |||
629 | ACPI_WARNING((AE_INFO, | ||
630 | "NsLookup: Type mismatch on %4.4s (%s), searching for (%s)", | ||
631 | ACPI_CAST_PTR(char, &simple_name), | ||
632 | acpi_ut_get_type_name(this_node-> | ||
633 | type), | ||
634 | acpi_ut_get_type_name | ||
635 | (type_to_check_for))); | ||
636 | } | ||
637 | |||
638 | /* | ||
639 | * If this is the last name segment and we are not looking for a | ||
640 | * specific type, but the type of found object is known, use that type | ||
641 | * to (later) see if it opens a scope. | ||
642 | */ | ||
643 | if (type == ACPI_TYPE_ANY) { | ||
644 | type = this_node->type; | ||
645 | } | ||
623 | } | 646 | } |
624 | 647 | ||
625 | /* Point to next name segment and make this node current */ | 648 | /* Point to next name segment and make this node current */ |
diff --git a/drivers/acpi/namespace/nsalloc.c b/drivers/acpi/namespace/nsalloc.c index 1d693d8ad2d8..3a1740ac2edc 100644 --- a/drivers/acpi/namespace/nsalloc.c +++ b/drivers/acpi/namespace/nsalloc.c | |||
@@ -5,7 +5,7 @@ | |||
5 | ******************************************************************************/ | 5 | ******************************************************************************/ |
6 | 6 | ||
7 | /* | 7 | /* |
8 | * Copyright (C) 2000 - 2007, R. Byron Moore | 8 | * Copyright (C) 2000 - 2008, Intel Corp. |
9 | * All rights reserved. | 9 | * All rights reserved. |
10 | * | 10 | * |
11 | * Redistribution and use in source and binary forms, with or without | 11 | * Redistribution and use in source and binary forms, with or without |
diff --git a/drivers/acpi/namespace/nsdump.c b/drivers/acpi/namespace/nsdump.c index 1fc4f86676e1..5445751b8a3e 100644 --- a/drivers/acpi/namespace/nsdump.c +++ b/drivers/acpi/namespace/nsdump.c | |||
@@ -5,7 +5,7 @@ | |||
5 | *****************************************************************************/ | 5 | *****************************************************************************/ |
6 | 6 | ||
7 | /* | 7 | /* |
8 | * Copyright (C) 2000 - 2007, R. Byron Moore | 8 | * Copyright (C) 2000 - 2008, Intel Corp. |
9 | * All rights reserved. | 9 | * All rights reserved. |
10 | * | 10 | * |
11 | * Redistribution and use in source and binary forms, with or without | 11 | * Redistribution and use in source and binary forms, with or without |
@@ -249,7 +249,9 @@ acpi_ns_dump_one_object(acpi_handle obj_handle, | |||
249 | acpi_os_printf("ID %X Len %.4X Addr %p\n", | 249 | acpi_os_printf("ID %X Len %.4X Addr %p\n", |
250 | obj_desc->processor.proc_id, | 250 | obj_desc->processor.proc_id, |
251 | obj_desc->processor.length, | 251 | obj_desc->processor.length, |
252 | (char *)obj_desc->processor.address); | 252 | ACPI_CAST_PTR(void, |
253 | obj_desc->processor. | ||
254 | address)); | ||
253 | break; | 255 | break; |
254 | 256 | ||
255 | case ACPI_TYPE_DEVICE: | 257 | case ACPI_TYPE_DEVICE: |
@@ -320,9 +322,8 @@ acpi_ns_dump_one_object(acpi_handle obj_handle, | |||
320 | space_id)); | 322 | space_id)); |
321 | if (obj_desc->region.flags & AOPOBJ_DATA_VALID) { | 323 | if (obj_desc->region.flags & AOPOBJ_DATA_VALID) { |
322 | acpi_os_printf(" Addr %8.8X%8.8X Len %.4X\n", | 324 | acpi_os_printf(" Addr %8.8X%8.8X Len %.4X\n", |
323 | ACPI_FORMAT_UINT64(obj_desc-> | 325 | ACPI_FORMAT_NATIVE_UINT |
324 | region. | 326 | (obj_desc->region.address), |
325 | address), | ||
326 | obj_desc->region.length); | 327 | obj_desc->region.length); |
327 | } else { | 328 | } else { |
328 | acpi_os_printf | 329 | acpi_os_printf |
diff --git a/drivers/acpi/namespace/nsdumpdv.c b/drivers/acpi/namespace/nsdumpdv.c index 5097e167939e..428f50fde11a 100644 --- a/drivers/acpi/namespace/nsdumpdv.c +++ b/drivers/acpi/namespace/nsdumpdv.c | |||
@@ -5,7 +5,7 @@ | |||
5 | *****************************************************************************/ | 5 | *****************************************************************************/ |
6 | 6 | ||
7 | /* | 7 | /* |
8 | * Copyright (C) 2000 - 2007, R. Byron Moore | 8 | * Copyright (C) 2000 - 2008, Intel Corp. |
9 | * All rights reserved. | 9 | * All rights reserved. |
10 | * | 10 | * |
11 | * Redistribution and use in source and binary forms, with or without | 11 | * Redistribution and use in source and binary forms, with or without |
diff --git a/drivers/acpi/namespace/nseval.c b/drivers/acpi/namespace/nseval.c index 97b2ac57c16b..14bdfa92bea0 100644 --- a/drivers/acpi/namespace/nseval.c +++ b/drivers/acpi/namespace/nseval.c | |||
@@ -5,7 +5,7 @@ | |||
5 | ******************************************************************************/ | 5 | ******************************************************************************/ |
6 | 6 | ||
7 | /* | 7 | /* |
8 | * Copyright (C) 2000 - 2007, R. Byron Moore | 8 | * Copyright (C) 2000 - 2008, Intel Corp. |
9 | * All rights reserved. | 9 | * All rights reserved. |
10 | * | 10 | * |
11 | * Redistribution and use in source and binary forms, with or without | 11 | * Redistribution and use in source and binary forms, with or without |
diff --git a/drivers/acpi/namespace/nsinit.c b/drivers/acpi/namespace/nsinit.c index 33db2241044e..6d6d930c8e18 100644 --- a/drivers/acpi/namespace/nsinit.c +++ b/drivers/acpi/namespace/nsinit.c | |||
@@ -5,7 +5,7 @@ | |||
5 | *****************************************************************************/ | 5 | *****************************************************************************/ |
6 | 6 | ||
7 | /* | 7 | /* |
8 | * Copyright (C) 2000 - 2007, R. Byron Moore | 8 | * Copyright (C) 2000 - 2008, Intel Corp. |
9 | * All rights reserved. | 9 | * All rights reserved. |
10 | * | 10 | * |
11 | * Redistribution and use in source and binary forms, with or without | 11 | * Redistribution and use in source and binary forms, with or without |
@@ -244,6 +244,10 @@ acpi_ns_init_one_object(acpi_handle obj_handle, | |||
244 | info->field_count++; | 244 | info->field_count++; |
245 | break; | 245 | break; |
246 | 246 | ||
247 | case ACPI_TYPE_LOCAL_BANK_FIELD: | ||
248 | info->field_count++; | ||
249 | break; | ||
250 | |||
247 | case ACPI_TYPE_BUFFER: | 251 | case ACPI_TYPE_BUFFER: |
248 | info->buffer_count++; | 252 | info->buffer_count++; |
249 | break; | 253 | break; |
@@ -287,6 +291,12 @@ acpi_ns_init_one_object(acpi_handle obj_handle, | |||
287 | status = acpi_ds_get_buffer_field_arguments(obj_desc); | 291 | status = acpi_ds_get_buffer_field_arguments(obj_desc); |
288 | break; | 292 | break; |
289 | 293 | ||
294 | case ACPI_TYPE_LOCAL_BANK_FIELD: | ||
295 | |||
296 | info->field_init++; | ||
297 | status = acpi_ds_get_bank_field_arguments(obj_desc); | ||
298 | break; | ||
299 | |||
290 | case ACPI_TYPE_BUFFER: | 300 | case ACPI_TYPE_BUFFER: |
291 | 301 | ||
292 | info->buffer_init++; | 302 | info->buffer_init++; |
diff --git a/drivers/acpi/namespace/nsload.c b/drivers/acpi/namespace/nsload.c index d4f9654fd20f..2c92f6cf5ce1 100644 --- a/drivers/acpi/namespace/nsload.c +++ b/drivers/acpi/namespace/nsload.c | |||
@@ -5,7 +5,7 @@ | |||
5 | *****************************************************************************/ | 5 | *****************************************************************************/ |
6 | 6 | ||
7 | /* | 7 | /* |
8 | * Copyright (C) 2000 - 2007, R. Byron Moore | 8 | * Copyright (C) 2000 - 2008, Intel Corp. |
9 | * All rights reserved. | 9 | * All rights reserved. |
10 | * | 10 | * |
11 | * Redistribution and use in source and binary forms, with or without | 11 | * Redistribution and use in source and binary forms, with or without |
@@ -107,11 +107,11 @@ acpi_ns_load_table(acpi_native_uint table_index, | |||
107 | goto unlock; | 107 | goto unlock; |
108 | } | 108 | } |
109 | 109 | ||
110 | status = acpi_ns_parse_table(table_index, node->child); | 110 | status = acpi_ns_parse_table(table_index, node); |
111 | if (ACPI_SUCCESS(status)) { | 111 | if (ACPI_SUCCESS(status)) { |
112 | acpi_tb_set_table_loaded_flag(table_index, TRUE); | 112 | acpi_tb_set_table_loaded_flag(table_index, TRUE); |
113 | } else { | 113 | } else { |
114 | acpi_tb_release_owner_id(table_index); | 114 | (void)acpi_tb_release_owner_id(table_index); |
115 | } | 115 | } |
116 | 116 | ||
117 | unlock: | 117 | unlock: |
diff --git a/drivers/acpi/namespace/nsnames.c b/drivers/acpi/namespace/nsnames.c index cbd94af08cc5..cffef1bcbdbc 100644 --- a/drivers/acpi/namespace/nsnames.c +++ b/drivers/acpi/namespace/nsnames.c | |||
@@ -5,7 +5,7 @@ | |||
5 | ******************************************************************************/ | 5 | ******************************************************************************/ |
6 | 6 | ||
7 | /* | 7 | /* |
8 | * Copyright (C) 2000 - 2007, R. Byron Moore | 8 | * Copyright (C) 2000 - 2008, Intel Corp. |
9 | * All rights reserved. | 9 | * All rights reserved. |
10 | * | 10 | * |
11 | * Redistribution and use in source and binary forms, with or without | 11 | * Redistribution and use in source and binary forms, with or without |
@@ -180,6 +180,12 @@ acpi_size acpi_ns_get_pathname_length(struct acpi_namespace_node *node) | |||
180 | next_node = node; | 180 | next_node = node; |
181 | 181 | ||
182 | while (next_node && (next_node != acpi_gbl_root_node)) { | 182 | while (next_node && (next_node != acpi_gbl_root_node)) { |
183 | if (ACPI_GET_DESCRIPTOR_TYPE(next_node) != ACPI_DESC_TYPE_NAMED) { | ||
184 | ACPI_ERROR((AE_INFO, | ||
185 | "Invalid NS Node (%p) while traversing path", | ||
186 | next_node)); | ||
187 | return 0; | ||
188 | } | ||
183 | size += ACPI_PATH_SEGMENT_LENGTH; | 189 | size += ACPI_PATH_SEGMENT_LENGTH; |
184 | next_node = acpi_ns_get_parent_node(next_node); | 190 | next_node = acpi_ns_get_parent_node(next_node); |
185 | } | 191 | } |
diff --git a/drivers/acpi/namespace/nsobject.c b/drivers/acpi/namespace/nsobject.c index d9d7377bc6e6..15fe09e24f71 100644 --- a/drivers/acpi/namespace/nsobject.c +++ b/drivers/acpi/namespace/nsobject.c | |||
@@ -6,7 +6,7 @@ | |||
6 | ******************************************************************************/ | 6 | ******************************************************************************/ |
7 | 7 | ||
8 | /* | 8 | /* |
9 | * Copyright (C) 2000 - 2007, R. Byron Moore | 9 | * Copyright (C) 2000 - 2008, Intel Corp. |
10 | * All rights reserved. | 10 | * All rights reserved. |
11 | * | 11 | * |
12 | * Redistribution and use in source and binary forms, with or without | 12 | * Redistribution and use in source and binary forms, with or without |
diff --git a/drivers/acpi/namespace/nsparse.c b/drivers/acpi/namespace/nsparse.c index e696aa847990..46a79b0103b6 100644 --- a/drivers/acpi/namespace/nsparse.c +++ b/drivers/acpi/namespace/nsparse.c | |||
@@ -5,7 +5,7 @@ | |||
5 | *****************************************************************************/ | 5 | *****************************************************************************/ |
6 | 6 | ||
7 | /* | 7 | /* |
8 | * Copyright (C) 2000 - 2007, R. Byron Moore | 8 | * Copyright (C) 2000 - 2008, Intel Corp. |
9 | * All rights reserved. | 9 | * All rights reserved. |
10 | * | 10 | * |
11 | * Redistribution and use in source and binary forms, with or without | 11 | * Redistribution and use in source and binary forms, with or without |
@@ -64,7 +64,8 @@ ACPI_MODULE_NAME("nsparse") | |||
64 | ******************************************************************************/ | 64 | ******************************************************************************/ |
65 | acpi_status | 65 | acpi_status |
66 | acpi_ns_one_complete_parse(acpi_native_uint pass_number, | 66 | acpi_ns_one_complete_parse(acpi_native_uint pass_number, |
67 | acpi_native_uint table_index) | 67 | acpi_native_uint table_index, |
68 | struct acpi_namespace_node * start_node) | ||
68 | { | 69 | { |
69 | union acpi_parse_object *parse_root; | 70 | union acpi_parse_object *parse_root; |
70 | acpi_status status; | 71 | acpi_status status; |
@@ -111,14 +112,25 @@ acpi_ns_one_complete_parse(acpi_native_uint pass_number, | |||
111 | aml_start = (u8 *) table + sizeof(struct acpi_table_header); | 112 | aml_start = (u8 *) table + sizeof(struct acpi_table_header); |
112 | aml_length = table->length - sizeof(struct acpi_table_header); | 113 | aml_length = table->length - sizeof(struct acpi_table_header); |
113 | status = acpi_ds_init_aml_walk(walk_state, parse_root, NULL, | 114 | status = acpi_ds_init_aml_walk(walk_state, parse_root, NULL, |
114 | aml_start, aml_length, NULL, | 115 | aml_start, (u32) aml_length, |
115 | (u8) pass_number); | 116 | NULL, (u8) pass_number); |
116 | } | 117 | } |
117 | 118 | ||
118 | if (ACPI_FAILURE(status)) { | 119 | if (ACPI_FAILURE(status)) { |
119 | acpi_ds_delete_walk_state(walk_state); | 120 | acpi_ds_delete_walk_state(walk_state); |
120 | acpi_ps_delete_parse_tree(parse_root); | 121 | goto cleanup; |
121 | return_ACPI_STATUS(status); | 122 | } |
123 | |||
124 | /* start_node is the default location to load the table */ | ||
125 | |||
126 | if (start_node && start_node != acpi_gbl_root_node) { | ||
127 | status = | ||
128 | acpi_ds_scope_stack_push(start_node, ACPI_TYPE_METHOD, | ||
129 | walk_state); | ||
130 | if (ACPI_FAILURE(status)) { | ||
131 | acpi_ds_delete_walk_state(walk_state); | ||
132 | goto cleanup; | ||
133 | } | ||
122 | } | 134 | } |
123 | 135 | ||
124 | /* Parse the AML */ | 136 | /* Parse the AML */ |
@@ -127,6 +139,7 @@ acpi_ns_one_complete_parse(acpi_native_uint pass_number, | |||
127 | (unsigned)pass_number)); | 139 | (unsigned)pass_number)); |
128 | status = acpi_ps_parse_aml(walk_state); | 140 | status = acpi_ps_parse_aml(walk_state); |
129 | 141 | ||
142 | cleanup: | ||
130 | acpi_ps_delete_parse_tree(parse_root); | 143 | acpi_ps_delete_parse_tree(parse_root); |
131 | return_ACPI_STATUS(status); | 144 | return_ACPI_STATUS(status); |
132 | } | 145 | } |
@@ -163,7 +176,9 @@ acpi_ns_parse_table(acpi_native_uint table_index, | |||
163 | * performs another complete parse of the AML. | 176 | * performs another complete parse of the AML. |
164 | */ | 177 | */ |
165 | ACPI_DEBUG_PRINT((ACPI_DB_PARSE, "**** Start pass 1\n")); | 178 | ACPI_DEBUG_PRINT((ACPI_DB_PARSE, "**** Start pass 1\n")); |
166 | status = acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS1, table_index); | 179 | status = |
180 | acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS1, table_index, | ||
181 | start_node); | ||
167 | if (ACPI_FAILURE(status)) { | 182 | if (ACPI_FAILURE(status)) { |
168 | return_ACPI_STATUS(status); | 183 | return_ACPI_STATUS(status); |
169 | } | 184 | } |
@@ -178,7 +193,9 @@ acpi_ns_parse_table(acpi_native_uint table_index, | |||
178 | * parse objects are all cached. | 193 | * parse objects are all cached. |
179 | */ | 194 | */ |
180 | ACPI_DEBUG_PRINT((ACPI_DB_PARSE, "**** Start pass 2\n")); | 195 | ACPI_DEBUG_PRINT((ACPI_DB_PARSE, "**** Start pass 2\n")); |
181 | status = acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS2, table_index); | 196 | status = |
197 | acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS2, table_index, | ||
198 | start_node); | ||
182 | if (ACPI_FAILURE(status)) { | 199 | if (ACPI_FAILURE(status)) { |
183 | return_ACPI_STATUS(status); | 200 | return_ACPI_STATUS(status); |
184 | } | 201 | } |
diff --git a/drivers/acpi/namespace/nssearch.c b/drivers/acpi/namespace/nssearch.c index e863be665ce8..8399276cba1e 100644 --- a/drivers/acpi/namespace/nssearch.c +++ b/drivers/acpi/namespace/nssearch.c | |||
@@ -5,7 +5,7 @@ | |||
5 | ******************************************************************************/ | 5 | ******************************************************************************/ |
6 | 6 | ||
7 | /* | 7 | /* |
8 | * Copyright (C) 2000 - 2007, R. Byron Moore | 8 | * Copyright (C) 2000 - 2008, Intel Corp. |
9 | * All rights reserved. | 9 | * All rights reserved. |
10 | * | 10 | * |
11 | * Redistribution and use in source and binary forms, with or without | 11 | * Redistribution and use in source and binary forms, with or without |
diff --git a/drivers/acpi/namespace/nsutils.c b/drivers/acpi/namespace/nsutils.c index 90fd059615ff..64c039843ed2 100644 --- a/drivers/acpi/namespace/nsutils.c +++ b/drivers/acpi/namespace/nsutils.c | |||
@@ -6,7 +6,7 @@ | |||
6 | *****************************************************************************/ | 6 | *****************************************************************************/ |
7 | 7 | ||
8 | /* | 8 | /* |
9 | * Copyright (C) 2000 - 2007, R. Byron Moore | 9 | * Copyright (C) 2000 - 2008, Intel Corp. |
10 | * All rights reserved. | 10 | * All rights reserved. |
11 | * | 11 | * |
12 | * Redistribution and use in source and binary forms, with or without | 12 | * Redistribution and use in source and binary forms, with or without |
diff --git a/drivers/acpi/namespace/nswalk.c b/drivers/acpi/namespace/nswalk.c index 280b8357c46c..3c905ce26d7d 100644 --- a/drivers/acpi/namespace/nswalk.c +++ b/drivers/acpi/namespace/nswalk.c | |||
@@ -5,7 +5,7 @@ | |||
5 | *****************************************************************************/ | 5 | *****************************************************************************/ |
6 | 6 | ||
7 | /* | 7 | /* |
8 | * Copyright (C) 2000 - 2007, R. Byron Moore | 8 | * Copyright (C) 2000 - 2008, Intel Corp. |
9 | * All rights reserved. | 9 | * All rights reserved. |
10 | * | 10 | * |
11 | * Redistribution and use in source and binary forms, with or without | 11 | * Redistribution and use in source and binary forms, with or without |
@@ -77,9 +77,7 @@ struct acpi_namespace_node *acpi_ns_get_next_node(acpi_object_type type, struct | |||
77 | 77 | ||
78 | /* It's really the parent's _scope_ that we want */ | 78 | /* It's really the parent's _scope_ that we want */ |
79 | 79 | ||
80 | if (parent_node->child) { | 80 | next_node = parent_node->child; |
81 | next_node = parent_node->child; | ||
82 | } | ||
83 | } | 81 | } |
84 | 82 | ||
85 | else { | 83 | else { |
diff --git a/drivers/acpi/namespace/nsxfeval.c b/drivers/acpi/namespace/nsxfeval.c index b92133faf5b7..a8d549187c84 100644 --- a/drivers/acpi/namespace/nsxfeval.c +++ b/drivers/acpi/namespace/nsxfeval.c | |||
@@ -6,7 +6,7 @@ | |||
6 | ******************************************************************************/ | 6 | ******************************************************************************/ |
7 | 7 | ||
8 | /* | 8 | /* |
9 | * Copyright (C) 2000 - 2007, R. Byron Moore | 9 | * Copyright (C) 2000 - 2008, Intel Corp. |
10 | * All rights reserved. | 10 | * All rights reserved. |
11 | * | 11 | * |
12 | * Redistribution and use in source and binary forms, with or without | 12 | * Redistribution and use in source and binary forms, with or without |
@@ -467,10 +467,13 @@ acpi_ns_get_device_callback(acpi_handle obj_handle, | |||
467 | return (AE_CTRL_DEPTH); | 467 | return (AE_CTRL_DEPTH); |
468 | } | 468 | } |
469 | 469 | ||
470 | if (!(flags & ACPI_STA_DEVICE_PRESENT)) { | 470 | if (!(flags & ACPI_STA_DEVICE_PRESENT) && |
471 | 471 | !(flags & ACPI_STA_DEVICE_FUNCTIONING)) { | |
472 | /* Don't examine children of the device if not present */ | 472 | /* |
473 | 473 | * Don't examine the children of the device only when the | |
474 | * device is neither present nor functional. See ACPI spec, | ||
475 | * description of _STA for more information. | ||
476 | */ | ||
474 | return (AE_CTRL_DEPTH); | 477 | return (AE_CTRL_DEPTH); |
475 | } | 478 | } |
476 | 479 | ||
@@ -539,7 +542,7 @@ acpi_ns_get_device_callback(acpi_handle obj_handle, | |||
539 | * value is returned to the caller. | 542 | * value is returned to the caller. |
540 | * | 543 | * |
541 | * This is a wrapper for walk_namespace, but the callback performs | 544 | * This is a wrapper for walk_namespace, but the callback performs |
542 | * additional filtering. Please see acpi_get_device_callback. | 545 | * additional filtering. Please see acpi_ns_get_device_callback. |
543 | * | 546 | * |
544 | ******************************************************************************/ | 547 | ******************************************************************************/ |
545 | 548 | ||
diff --git a/drivers/acpi/namespace/nsxfname.c b/drivers/acpi/namespace/nsxfname.c index b489781b22a8..a287ed550f54 100644 --- a/drivers/acpi/namespace/nsxfname.c +++ b/drivers/acpi/namespace/nsxfname.c | |||
@@ -6,7 +6,7 @@ | |||
6 | *****************************************************************************/ | 6 | *****************************************************************************/ |
7 | 7 | ||
8 | /* | 8 | /* |
9 | * Copyright (C) 2000 - 2007, R. Byron Moore | 9 | * Copyright (C) 2000 - 2008, Intel Corp. |
10 | * All rights reserved. | 10 | * All rights reserved. |
11 | * | 11 | * |
12 | * Redistribution and use in source and binary forms, with or without | 12 | * Redistribution and use in source and binary forms, with or without |
diff --git a/drivers/acpi/namespace/nsxfobj.c b/drivers/acpi/namespace/nsxfobj.c index faa375887201..2b375ee80cef 100644 --- a/drivers/acpi/namespace/nsxfobj.c +++ b/drivers/acpi/namespace/nsxfobj.c | |||
@@ -6,7 +6,7 @@ | |||
6 | ******************************************************************************/ | 6 | ******************************************************************************/ |
7 | 7 | ||
8 | /* | 8 | /* |
9 | * Copyright (C) 2000 - 2007, R. Byron Moore | 9 | * Copyright (C) 2000 - 2008, Intel Corp. |
10 | * All rights reserved. | 10 | * All rights reserved. |
11 | * | 11 | * |
12 | * Redistribution and use in source and binary forms, with or without | 12 | * Redistribution and use in source and binary forms, with or without |