diff --git a/cmd/Kconfig b/cmd/Kconfig index 9b8a13c3446..3fd791f3e4b 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -47,6 +47,14 @@ config HUSH_SELECTABLE default y if HUSH_OLD_PARSER && HUSH_MODERN_PARSER endmenu +config CMDLINE_FLUSH_STDIN + bool "Enable flushing input before starting cli" + help + When this option is enabled the stdin buffer will be flushed before + starting the CLI. This is useful when stdin is changed during boot + (e.g. from nulldev to serial) and junk characters may be pending + in the buffer. + config CMDLINE_EDITING bool "Enable command line editing" default y diff --git a/common/cli.c b/common/cli.c index 4694a35cd0e..bcc7264d51a 100644 --- a/common/cli.c +++ b/common/cli.c @@ -295,6 +295,10 @@ err: void cli_loop(void) { bootstage_mark(BOOTSTAGE_ID_ENTER_CLI_LOOP); + + if (IS_ENABLED(CONFIG_CMDLINE_FLUSH_STDIN)) + console_flush_stdin(); + #if CONFIG_IS_ENABLED(HUSH_PARSER) if (gd->flags & GD_FLG_HUSH_MODERN_PARSER) parse_and_run_file();