diff options
author | Nicolas Boichat <drinkcat@chromium.org> | 2018-11-02 14:12:37 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-11-07 11:40:56 -0800 |
commit | 92e90175cd4c314099099957c296d26fea548e32 (patch) | |
tree | 086c5cfef365119f898d7e040726447b2ad550d8 /common/mkbp_event.c | |
parent | fada7a654ed7f6e548830daa781e3557231d494e (diff) | |
download | chrome-ec-92e90175cd4c314099099957c296d26fea548e32.tar.gz |
mkbp_event: deassert host irq when if the current event cannot be fetched
On boot, it is possible to encounter a case where a host event bit
is set, but the FIFO is actually empty (e.g. if an event was sent
when the AP is sleeping).
In this case, we should still deassert interrupt to AP, if there
are no other events pending.
BRANCH=none
BUG=b:117406392
TEST=Boot kukui, no "HC 0x67 err 9"
Change-Id: I5c23b3a37c16fce673478f863b6b7660aba59ee9
Signed-off-by: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1314308
Reviewed-by: Enrico Granata <egranata@chromium.org>
Diffstat (limited to 'common/mkbp_event.c')
-rw-r--r-- | common/mkbp_event.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/common/mkbp_event.c b/common/mkbp_event.c index 9d643d6f46..44cec336b5 100644 --- a/common/mkbp_event.c +++ b/common/mkbp_event.c @@ -162,13 +162,13 @@ static int mkbp_get_next_event(struct host_cmd_handler_args *args) set_event(evt); } while (data_size == -EC_ERROR_BUSY); + if (!events) + set_host_interrupt(0); + if (data_size < 0) return EC_RES_ERROR; args->response_size = 1 + data_size; - if (!events) - set_host_interrupt(0); - return EC_RES_SUCCESS; } DECLARE_HOST_COMMAND(EC_CMD_GET_NEXT_EVENT, |