]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Revert "ACPI: EC: Evaluate orphan _REG under EC device"
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Sun, 12 Apr 2026 01:02:28 +0000 (21:02 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 18 Apr 2026 08:35:57 +0000 (10:35 +0200)
[ Upstream commit 779bac9994452f6a894524f70c00cfb0cd4b6364 ]

This reverts commit 0e6b6dedf168 ("Revert "ACPI: EC: Evaluate orphan
_REG under EC device") because the problem addressed by it will be
addressed differently in what follows.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Cc: All applicable <stable@vger.kernel.org>
Link: https://patch.msgid.link/3236716.5fSG56mABF@rjwysocki.net
Stable-dep-of: 71bf41b8e913 ("ACPI: EC: Evaluate _REG outside the EC scope more carefully")
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/acpi/acpica/acevents.h
drivers/acpi/acpica/evregion.c
drivers/acpi/acpica/evxfregn.c
drivers/acpi/ec.c
include/acpi/acpixf.h

index e4d4a4e744a4fec838b47ee0a71e9b0fbcdd8546..922f559a3e5902f380099307c742ca30f63a723e 100644 (file)
@@ -191,10 +191,6 @@ void
 acpi_ev_execute_reg_methods(struct acpi_namespace_node *node,
                            acpi_adr_space_type space_id, u32 function);
 
-void
-acpi_ev_execute_orphan_reg_method(struct acpi_namespace_node *node,
-                                 acpi_adr_space_type space_id);
-
 acpi_status
 acpi_ev_execute_reg_method(union acpi_operand_object *region_obj, u32 function);
 
index 3c9e4a6f24aa3448d7ac46975e7aaf18985c8f45..fd6471e764f1a1f8481ef066300129d0faa6aebe 100644 (file)
@@ -20,6 +20,10 @@ extern u8 acpi_gbl_default_address_spaces[];
 
 /* Local prototypes */
 
+static void
+acpi_ev_execute_orphan_reg_method(struct acpi_namespace_node *device_node,
+                                 acpi_adr_space_type space_id);
+
 static acpi_status
 acpi_ev_reg_run(acpi_handle obj_handle,
                u32 level, void *context, void **return_value);
@@ -807,7 +811,7 @@ acpi_ev_reg_run(acpi_handle obj_handle,
  *
  ******************************************************************************/
 
-void
+static void
 acpi_ev_execute_orphan_reg_method(struct acpi_namespace_node *device_node,
                                  acpi_adr_space_type space_id)
 {
index a56d4dd51835edaa406ab7cc4afbdf05272313af..e94e6631502c101dd4facb6d5c59237ffa06d77a 100644 (file)
@@ -304,57 +304,3 @@ acpi_execute_reg_methods(acpi_handle device, acpi_adr_space_type space_id)
 }
 
 ACPI_EXPORT_SYMBOL(acpi_execute_reg_methods)
-
-/*******************************************************************************
- *
- * FUNCTION:    acpi_execute_orphan_reg_method
- *
- * PARAMETERS:  device          - Handle for the device
- *              space_id        - The address space ID
- *
- * RETURN:      Status
- *
- * DESCRIPTION: Execute an "orphan" _REG method that appears under an ACPI
- *              device. This is a _REG method that has no corresponding region
- *              within the device's scope.
- *
- ******************************************************************************/
-acpi_status
-acpi_execute_orphan_reg_method(acpi_handle device, acpi_adr_space_type space_id)
-{
-       struct acpi_namespace_node *node;
-       acpi_status status;
-
-       ACPI_FUNCTION_TRACE(acpi_execute_orphan_reg_method);
-
-       /* Parameter validation */
-
-       if (!device) {
-               return_ACPI_STATUS(AE_BAD_PARAMETER);
-       }
-
-       status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
-       if (ACPI_FAILURE(status)) {
-               return_ACPI_STATUS(status);
-       }
-
-       /* Convert and validate the device handle */
-
-       node = acpi_ns_validate_handle(device);
-       if (node) {
-
-               /*
-                * If an "orphan" _REG method is present in the device's scope
-                * for the given address space ID, run it.
-                */
-
-               acpi_ev_execute_orphan_reg_method(node, space_id);
-       } else {
-               status = AE_BAD_PARAMETER;
-       }
-
-       (void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
-       return_ACPI_STATUS(status);
-}
-
-ACPI_EXPORT_SYMBOL(acpi_execute_orphan_reg_method)
index 0c8920161bec0c90ef0af79067a3904c73dafd7a..230fe6463cc1f5fbdfe41bcbe2a3f6e0eba2bebf 100644 (file)
@@ -1532,9 +1532,6 @@ static int ec_install_handlers(struct acpi_ec *ec, struct acpi_device *device,
 
        if (call_reg && !test_bit(EC_FLAGS_EC_REG_CALLED, &ec->flags)) {
                acpi_execute_reg_methods(scope_handle, ACPI_ADR_SPACE_EC);
-               if (scope_handle != ec->handle)
-                       acpi_execute_orphan_reg_method(ec->handle, ACPI_ADR_SPACE_EC);
-
                set_bit(EC_FLAGS_EC_REG_CALLED, &ec->flags);
        }
 
index 42fba1d0d6335805ecfd4950d5d4721b1cccf607..754efb4e633071ffea6188dc481d7f86ddd8a9a1 100644 (file)
@@ -668,10 +668,6 @@ ACPI_EXTERNAL_RETURN_STATUS(acpi_status
                            acpi_execute_reg_methods(acpi_handle device,
                                                     acpi_adr_space_type
                                                     space_id))
-ACPI_EXTERNAL_RETURN_STATUS(acpi_status
-                           acpi_execute_orphan_reg_method(acpi_handle device,
-                                                          acpi_adr_space_type
-                                                          space_id))
 ACPI_EXTERNAL_RETURN_STATUS(acpi_status
                            acpi_remove_address_space_handler(acpi_handle
                                                              device,