Hi Gregor,
On 4/1/26 12:46 PM, Gregor Herburger wrote:
[You don't often get email from [email protected]. Learn why this
is important at https://aka.ms/LearnAboutSenderIdentification ]
Currently there is no possibility to flush stdin after autocommands are
executed. If in the bootcmd the stdin is changed, e.g. from nulldev to
serial, it could happen that junk characters sit in the fifo and appear
on the cli.
Add a option to clear stdin before starting the CLI.
Why does this need an option? I don't know enough (anything really) about
the cli in general but the wording seems to indicate this fixes an issue or
even a bug. Is there a case in which we wouldn't want to flush?
In our case the problem was in efi_console where query_console_serial
sent the escape sequence to stdout and stdin was set to nulldev and
therefore never received. In the bootcmd stdin was set to serial and the
response was seen on the cli. Thats how it was in our case. My first
approach was to check in efi_console to not send if stdin is nulldev.
But after more thoughts I implemented the current approach which flushes
stdin before starting cli. After all efi_console did exactly what was
configured in the environment.
I can think of two cases where stdin shouldn't be flushed:
* User typing commands before cli is reached.
I see we have flush_stdin() in common/autoboot.c already, with the same
implementation. Guarded by CONFIG_AUTOBOOT_FLUSH_STDIN. So I guess if we
have a knob for that, another knob for the cli_loop() part will at least
be consistent so fine by me. I kinda fail to see why we would not want
to flush, but /me shrugs.
Cheers,
Quentin