
In modern Chromebooks, the embedded controller has a mechanism where it will watch a hardware-controlled line that toggles in suspend, and wake the system up if an expected sleep transition didn't occur. This can be very useful for detecting power management issues where the system appears to suspend, but doesn't actually reach its lowest expected power states. Sometimes it's useful in debug and test scenarios to be able to control the duration of that timeout, or even disable the EC timeout mechanism altogether. Add a debugfs control to set the timeout to values other than the EC-defined default, for more convenient debug and development iteration. Signed-off-by: Evan Green <evgreen@chromium.org> Reviewed-by: Prashant Malani <pmalani@chromium.org> Reviewed-by: Stephen Boyd <swboyd@chromium.org> Reviewed-by: Guenter Roeck <groeck@chromium.org> Link: https://lore.kernel.org/r/20220822144026.v3.1.Idd188ff3f9caddebc17ac357a13005f93333c21f@changeid [tzungbi: fix one nit in Documentation/ABI/testing/debugfs-cros-ec.] Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
3.1 KiB
What: /sys/kernel/debug//console_log Date: September 2017 KernelVersion: 4.13 Description: If the EC supports the CONSOLE_READ command type, this file can be used to grab the EC logs. The kernel polls for the log and keeps its own buffer but userspace should grab this and write it out to some logs.
What: /sys/kernel/debug//panicinfo Date: September 2017 KernelVersion: 4.13 Description: This file dumps the EC panic information from the previous reboot. This file will only exist if the PANIC_INFO command type is supported by the EC.
What: /sys/kernel/debug//pdinfo Date: June 2018 KernelVersion: 4.17 Description: This file provides the port role, muxes and power debug information for all the USB PD/type-C ports available. If the are no ports available, this file will be just an empty file.
What: /sys/kernel/debug//uptime Date: June 2019 KernelVersion: 5.3 Description: A u32 providing the time since EC booted in ms. This is is used for synchronizing the AP host time with the EC log. An error is returned if the command is not supported by the EC or there is a communication problem.
What: /sys/kernel/debug//last_resume_result Date: June 2019 KernelVersion: 5.3 Description: Some ECs have a feature where they will track transitions to the (Intel) processor's SLP_S0 line, in order to detect cases where a system failed to go into S0ix. When the system resumes, an EC with this feature will return a summary of SLP_S0 transitions that occurred. The last_resume_result file returns the most recent response from the AP's resume message to the EC.
The bottom 31 bits contain a count of the number of SLP_S0
transitions that occurred since the suspend message was
received. Bit 31 is set if the EC attempted to wake the
system due to a timeout when watching for SLP_S0 transitions.
Callers can use this to detect a wake from the EC due to
S0ix timeouts. The result will be zero if no suspend
transitions have been attempted, or the EC does not support
this feature.
Output will be in the format: "0x%08x\n".
What: /sys/kernel/debug//suspend_timeout_ms Date: August 2022 KernelVersion: 6.1 Description: Some ECs have a feature where they will track transitions of a hardware-controlled sleep line, such as Intel's SLP_S0 line, in order to detect cases where a system failed to go into deep sleep states. The suspend_timeout_ms file controls the amount of time in milliseconds the EC will wait before declaring a sleep timeout event and attempting to wake the system.
Supply 0 to use the default value coded into EC firmware. Supply
65535 (EC_HOST_SLEEP_TIMEOUT_INFINITE) to disable the EC sleep
failure detection mechanism. Values in between 0 and 65535
indicate the number of milliseconds the EC should wait after a
sleep transition before declaring a timeout. This includes both
the duration after a sleep command was received but before the
hardware line changed, as well as the duration between when the
hardware line changed and the kernel sent an EC resume command.
Output will be in the format: "%u\n".