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:
parent
22b22b6988
commit
342f5f836c
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue