libpayload/libc/console: Flush input driver buffer on init

When console input driver registers itself, perform flush of input
buffer to avoid interpreting any stale key presses before libpayload
is run.

keyboard.c: Remove the redundant buffer flush.
8250.c: Ensure that serial_hardware_is_present is set before call to
add input driver.

BUG=b:37273808
TEST=Verified that any key presses in serial console before payload is
up do not have any effect after the payload starts running.

Change-Id: I46f1b6715ccf6418f5b2c741bf90db2ece26a60d
Signed-off-by: Furquan Shaikh <furquan@chromium.org>
Reviewed-on: https://review.coreboot.org/19345
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
Furquan Shaikh 2017-04-17 15:41:18 -07:00 committed by Furquan Shaikh
parent 22b22b6988
commit 342f5f836c
3 changed files with 4 additions and 4 deletions

View File

@ -310,9 +310,6 @@ void keyboard_init(void)
if (inb(0x64) == 0xFF) if (inb(0x64) == 0xFF)
return; return;
/* Empty keyboard buffer */
while (keyboard_havechar()) keyboard_getchar();
console_add_input_driver(&cons); console_add_input_driver(&cons);
} }

View File

@ -137,10 +137,10 @@ void serial_console_init(void)
return; return;
serial_init(); serial_init();
serial_hardware_is_present = 1;
console_add_input_driver(&consin); console_add_input_driver(&consin);
console_add_output_driver(&consout); console_add_output_driver(&consout);
serial_hardware_is_present = 1;
} }
void serial_putchar(unsigned int c) void serial_putchar(unsigned int c)

View File

@ -76,6 +76,9 @@ void console_add_input_driver(struct console_input_driver *in)
/* Check if this driver was already added to the console list */ /* Check if this driver was already added to the console list */
if (input_driver_exists(in)) if (input_driver_exists(in))
return; return;
/* Flush out the driver input buffer. */
while (in->havekey())
in->getchar();
in->next = console_in; in->next = console_in;
console_in = in; console_in = in;
} }