aboutsummaryrefslogtreecommitdiff
path: root/drivers/acpi/acpica/evxfregn.c
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2011-04-13 13:22:04 +0800
committerLen Brown <len.brown@intel.com>2011-05-09 22:16:12 -0400
commite2066ca1b211ff08325c98be9fb8ad95affbaba8 (patch)
tree9e56ece55f633e9330579ec0f3ddf6e1b1995de6 /drivers/acpi/acpica/evxfregn.c
parent07aa99e9df2184e78068f7d5414e29e4a5a1b452 (diff)
ACPICA: Execute an orphan _REG method under the EC device
This change will force the execution of a _REG method underneath the EC device even if there is no corresponding operation region of type EmbeddedControl. Fixes a problem seen on some machines and apparently is compatible with Windows behavior. http://www.acpica.org/bugzilla/show_bug.cgi?id=875 Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/acpica/evxfregn.c')
-rw-r--r--drivers/acpi/acpica/evxfregn.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/acpi/acpica/evxfregn.c b/drivers/acpi/acpica/evxfregn.c
index c85c8c45599d..00cd95692a91 100644
--- a/drivers/acpi/acpica/evxfregn.c
+++ b/drivers/acpi/acpica/evxfregn.c
@@ -130,20 +130,21 @@ acpi_install_address_space_handler(acpi_handle device,
case ACPI_ADR_SPACE_PCI_CONFIG:
case ACPI_ADR_SPACE_DATA_TABLE:
- if (acpi_gbl_reg_methods_executed) {
+ if (!acpi_gbl_reg_methods_executed) {
- /* Run all _REG methods for this address space */
-
- status = acpi_ev_execute_reg_methods(node, space_id);
+ /* We will defer execution of the _REG methods for this space */
+ goto unlock_and_exit;
}
break;
default:
-
- status = acpi_ev_execute_reg_methods(node, space_id);
break;
}
+ /* Run all _REG methods for this address space */
+
+ status = acpi_ev_execute_reg_methods(node, space_id);
+
unlock_and_exit:
(void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
return_ACPI_STATUS(status);