vserver 1.9.5.x5
[linux-2.6.git] / drivers / acpi / dispatcher / dswload.c
index 9c0d99e..06d7586 100644 (file)
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2004, R. Byron Moore
+ * Copyright (C) 2000 - 2005, R. Byron Moore
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -182,18 +182,20 @@ acpi_ds_load1_begin_op (
                 */
                status = acpi_ns_lookup (walk_state->scope_info, path, object_type,
                                  ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, walk_state, &(node));
-               if (ACPI_FAILURE (status)) {
 #ifdef _ACPI_ASL_COMPILER
-                       if (status == AE_NOT_FOUND) {
-                               acpi_dm_add_to_external_list (path);
-                               status = AE_OK;
-                       }
-                       else {
-                               ACPI_REPORT_NSERROR (path, status);
-                       }
-#else
-                       ACPI_REPORT_NSERROR (path, status);
+               if (status == AE_NOT_FOUND) {
+                       /*
+                        * Table disassembly:
+                        * Target of Scope() not found.  Generate an External for it, and
+                        * insert the name into the namespace.
+                        */
+                       acpi_dm_add_to_external_list (path);
+                       status = acpi_ns_lookup (walk_state->scope_info, path, object_type,
+                                          ACPI_IMODE_LOAD_PASS1, ACPI_NS_SEARCH_PARENT, walk_state, &(node));
+               }
 #endif
+               if (ACPI_FAILURE (status)) {
+                       ACPI_REPORT_NSERROR (path, status);
                        return (status);
                }