ACPICA: executer/exsystem: Inform users about ACPI spec violation
authorPaul Menzel <pmenzel@molgen.mpg.de>
Mon, 11 Apr 2022 18:59:00 +0000 (20:59 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 13 Apr 2022 18:24:58 +0000 (20:24 +0200)
ACPICA commit 05ba545ce7859392250b18c10081db25c90ed8d7

Values greater than 100 microseconds violate the ACPI specification, so
warn users about it.

From ACPI Specification version 6.2 Errata A, 19.6.128 *Stall (Stall for
a Short Time)*:

> The implementation of Stall is OS-specific, but must not relinquish
> control of the processor. Because of this, delays longer than 100
> microseconds must use Sleep instead of Stall.

Link: https://github.com/acpica/acpica/commit/05ba545c
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reported-by: kernel test robot <lkp@intel.com>
drivers/acpi/acpica/exsystem.c

index 7d19f2398b51ef221c98c9a0a7eb9342eff1b169..754cf289fc01e9e0be7774d283ded441a4495e42 100644 (file)
@@ -137,6 +137,11 @@ acpi_status acpi_ex_system_do_stall(u32 how_long_us)
                            "Time parameter is too large (%u)", how_long_us));
                status = AE_AML_OPERAND_VALUE;
        } else {
+               if (how_long_US > 100) {
+                       ACPI_WARNING((AE_INFO,
+                                     "Time parameter %u us > 100 us violating ACPI spec, please fix the firmware.",
+                                     how_long_us));
+               }
                acpi_os_stall(how_long_us);
        }