ACPI: EC: Drop AE_NOT_FOUND special case from ec_install_handlers()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 27 Feb 2020 21:56:28 +0000 (22:56 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 27 Feb 2020 21:56:28 +0000 (22:56 +0100)
If the status value returned by acpi_install_address_space_handler()
in ec_install_handlers() is AE_NOT_FOUND, it is treated in a special
way, apparently because it might mean a _REG method evaluation
failure (at least that is the case according to the comment in
there), but acpi_install_address_space_handler() does not take
_REG evaluation errors into account at all, so the AE_NOT_FOUND
special handling is confusing at best.

For this reason, change ec_install_handlers() to stop the EC and
return -ENODEV on all acpi_install_address_space_handler() errors.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/ec.c

index 3153e76..6f501d5 100644 (file)
@@ -1489,19 +1489,8 @@ static int ec_install_handlers(struct acpi_ec *ec, struct acpi_device *device)
                                                            &acpi_ec_space_handler,
                                                            NULL, ec);
                if (ACPI_FAILURE(status)) {
-                       if (status == AE_NOT_FOUND) {
-                               /*
-                                * Maybe OS fails in evaluating the _REG
-                                * object. The AE_NOT_FOUND error will be
-                                * ignored and OS * continue to initialize
-                                * EC.
-                                */
-                               pr_err("Fail in evaluating the _REG object"
-                                       " of EC device. Broken bios is suspected.\n");
-                       } else {
-                               acpi_ec_stop(ec, false);
-                               return -ENODEV;
-                       }
+                       acpi_ec_stop(ec, false);
+                       return -ENODEV;
                }
                set_bit(EC_FLAGS_EC_HANDLER_INSTALLED, &ec->flags);
        }