diff options
author | Ravi Chandra Sadineni <ravisadineni@chromium.org> | 2019-07-24 17:19:22 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-08-21 05:45:00 +0000 |
commit | 74f268374972bdc8bd6c2a5c412d31edafa812b1 (patch) | |
tree | 088ed9b33e3e538e872b2b8721ebe9357592a90d /power | |
parent | ac780ae08f9cc880b8606937e03e4d8193e1022a (diff) | |
download | chrome-ec-74f268374972bdc8bd6c2a5c412d31edafa812b1.tar.gz |
EC: Do not drop SCI events responsible for wake.
EC currently clears all events(main copy of hostevents) on every resume.
This seems to be added to clear events that are only part of wake mask
and not part of SCI mask as they can stick and cause premature wake on
next suspend.
This patch stops clearing events that are part of SCI mask from the main
copy as ACPI subsystem will query and clear them on resume anyway. This
helps kernel to identify the reason for wake if it caused by events
that are part of SCI mask.
Previously coreboot used to depend on main copy to log wake reason.
i.e on every resume coreboot used to query and log and clear the wake
reason by reading all events from the main copy. Since this also comes
in way of kernel in identifying the wake reason, this change also sets up
events_copy_b for coreboot by clearing it on every suspend entery.
More details can be found at http://go/hostevent-refactor.
BUG=b:133262012, b:65976859
BRANCH=None
TEST=Tested suspend/resume with wakeup count on hatch and grunt.
Change-Id: I0fac250d4dac49af960b29e8b0e28841af2ef509
Signed-off-by: Ravi Chandra Sadineni <ravisadineni@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1717498
Reviewed-by: Furquan Shaikh <furquan@chromium.org>
Diffstat (limited to 'power')
-rw-r--r-- | power/intel_x86.c | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/power/intel_x86.c b/power/intel_x86.c index df1b4ee6f7..1574041ae4 100644 --- a/power/intel_x86.c +++ b/power/intel_x86.c @@ -671,9 +671,6 @@ power_chipset_handle_host_sleep_event(enum host_sleep_event state, */ s0ix_notify = S0IX_NOTIFY_RESUME; task_wake(TASK_ID_CHIPSET); - /* clear host events */ - while (lpc_get_next_host_event() != 0) - ; lpc_s0ix_resume_restore_masks(); power_signal_disable_interrupt(sleep_sig[SYS_SLEEP_S0IX]); s0ix_complete_resume(ctx); |