Hello Felix Singer, Matt Delco, Patrick Georgi, Furquan Shaikh, Julius Werner, Angel Pons, Patrick Rudolph, EricR Lai,
I'd like you to do a code review. Please visit
https://review.coreboot.org/c/coreboot/+/47085
to review the following change.
Change subject: libpayload/keyboard: Avoid races around input draining ......................................................................
libpayload/keyboard: Avoid races around input draining
Draining the keyboard's buffer is only possible when the keyboard port is enabled. We should also disable input scanning before, as the buffer could be filled again with new keystrokes otherwise.
Change-Id: Ibac9c0d04880ff4a3efda5ac53da2f9731f6602c Signed-off-by: Nico Huber nico.h@gmx.de --- M payloads/libpayload/drivers/i8042/keyboard.c 1 file changed, 5 insertions(+), 4 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/85/47085/1
diff --git a/payloads/libpayload/drivers/i8042/keyboard.c b/payloads/libpayload/drivers/i8042/keyboard.c index f8b68ab..efe6bcd 100644 --- a/payloads/libpayload/drivers/i8042/keyboard.c +++ b/payloads/libpayload/drivers/i8042/keyboard.c @@ -385,11 +385,13 @@ if (!i8042_probe() || !i8042_has_ps2()) return;
- keyboard_drain_input(); - /* Enable first PS/2 port */ i8042_cmd(I8042_CMD_EN_KB);
+ /* Disable scanning */ + keyboard_cmd(I8042_KBCMD_DEFAULT_DIS); + keyboard_drain_input(); + /* * We only support scancode set 1. The controller translation * would translate from set 2 to 1 for us, so we try to configure @@ -417,10 +419,9 @@ if (!i8042_has_ps2()) return;
- keyboard_drain_input(); - /* Disable scanning */ keyboard_cmd(I8042_KBCMD_DEFAULT_DIS); + keyboard_drain_input();
/* Send keyboard disconnect command */ i8042_cmd(I8042_CMD_DIS_KB);