[coreboot-gerrit] Change in coreboot[master]: libpayload/libc/console: Flush input driver buffer on init

Furquan Shaikh (Code Review) gerrit at coreboot.org
Wed Apr 19 19:19:58 CEST 2017


Furquan Shaikh has submitted this change and it was merged. ( https://review.coreboot.org/19345 )

Change subject: libpayload/libc/console: Flush input driver buffer on init
......................................................................


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 at chromium.org>
Reviewed-on: https://review.coreboot.org/19345
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin at chromium.org>
---
M payloads/libpayload/drivers/keyboard.c
M payloads/libpayload/drivers/serial/8250.c
M payloads/libpayload/libc/console.c
3 files changed, 4 insertions(+), 4 deletions(-)

Approvals:
  Aaron Durbin: Looks good to me, approved
  build bot (Jenkins): Verified



diff --git a/payloads/libpayload/drivers/keyboard.c b/payloads/libpayload/drivers/keyboard.c
index 23c8780..056aa24 100644
--- a/payloads/libpayload/drivers/keyboard.c
+++ b/payloads/libpayload/drivers/keyboard.c
@@ -310,9 +310,6 @@
 	if (inb(0x64) == 0xFF)
 		return;
 
-	/* Empty keyboard buffer */
-	while (keyboard_havechar()) keyboard_getchar();
-
 	console_add_input_driver(&cons);
 }
 
diff --git a/payloads/libpayload/drivers/serial/8250.c b/payloads/libpayload/drivers/serial/8250.c
index 1fcf36d..9327304 100644
--- a/payloads/libpayload/drivers/serial/8250.c
+++ b/payloads/libpayload/drivers/serial/8250.c
@@ -137,10 +137,10 @@
 		return;
 
 	serial_init();
+	serial_hardware_is_present = 1;
 
 	console_add_input_driver(&consin);
 	console_add_output_driver(&consout);
-	serial_hardware_is_present = 1;
 }
 
 void serial_putchar(unsigned int c)
diff --git a/payloads/libpayload/libc/console.c b/payloads/libpayload/libc/console.c
index caeb582..b57fc47 100644
--- a/payloads/libpayload/libc/console.c
+++ b/payloads/libpayload/libc/console.c
@@ -76,6 +76,9 @@
 	/* Check if this driver was already added to the console list */
 	if (input_driver_exists(in))
 		return;
+	/* Flush out the driver input buffer. */
+	while (in->havekey())
+		in->getchar();
 	in->next = console_in;
 	console_in = in;
 }

-- 
To view, visit https://review.coreboot.org/19345
To unsubscribe, visit https://review.coreboot.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I46f1b6715ccf6418f5b2c741bf90db2ece26a60d
Gerrit-PatchSet: 4
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Owner: Furquan Shaikh <furquan at google.com>
Gerrit-Reviewer: Aaron Durbin <adurbin at chromium.org>
Gerrit-Reviewer: Duncan Laurie <dlaurie at chromium.org>
Gerrit-Reviewer: Furquan Shaikh <furquan at google.com>
Gerrit-Reviewer: Paul Menzel <paulepanter at users.sourceforge.net>
Gerrit-Reviewer: Sumeet R Pawnikar <sumeet.r.pawnikar at intel.com>
Gerrit-Reviewer: build bot (Jenkins)



More information about the coreboot-gerrit mailing list