ACPI_EXTERN u8 acpi_gbl_last_owner_id_index;
 ACPI_EXTERN u8 acpi_gbl_next_owner_id_offset;
 
+/* Initialization sequencing */
+
+ACPI_EXTERN u8 acpi_gbl_reg_methods_executed;
+
 /* Misc */
 
 ACPI_EXTERN u32 acpi_gbl_original_mode;
 
                goto unlock_and_exit;
        }
 
-       /* Run all _REG methods for this address space */
+       /*
+        * For the default space_iDs, (the IDs for which there are default region handlers
+        * installed) Only execute the _REG methods if the global initialization _REG
+        * methods have already been run (via acpi_initialize_objects). In other words,
+        * we will defer the execution of the _REG methods for these space_iDs until
+        * execution of acpi_initialize_objects. This is done because we need the handlers
+        * for the default spaces (mem/io/pci/table) to be installed before we can run
+        * any control methods (or _REG methods). There is known BIOS code that depends
+        * on this.
+        *
+        * For all other space_iDs, we can safely execute the _REG methods immediately.
+        * This means that for IDs like embedded_controller, this function should be called
+        * only after acpi_enable_subsystem has been called.
+        */
+       switch (space_id) {
+       case ACPI_ADR_SPACE_SYSTEM_MEMORY:
+       case ACPI_ADR_SPACE_SYSTEM_IO:
+       case ACPI_ADR_SPACE_PCI_CONFIG:
+       case ACPI_ADR_SPACE_DATA_TABLE:
+
+               if (acpi_gbl_reg_methods_executed) {
+
+                       /* Run all _REG methods for this address space */
+
+                       status = acpi_ev_execute_reg_methods(node, space_id);
+               }
+               break;
+
+       default:
 
-       status = acpi_ev_execute_reg_methods(node, space_id);
+               status = acpi_ev_execute_reg_methods(node, space_id);
+               break;
+       }
 
       unlock_and_exit:
        (void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);