[PATCH] netconsole: various improvements

Simon Glass sjg at chromium.org
Sun Mar 19 20:30:23 CET 2023


Hi Tony,

On Sun, 19 Mar 2023 at 10:46, Tony Dinh <mibodhi at gmail.com> wrote:
>
> - When Netconsole is running, stdin/stdout/stderr are set to nc. Reset
> stdin/stdout/stderr to serial (a sane deffault) before booting kernel.

spelling

> - Enable net_timeout when netconsole starts will give a better user
> experience if netconsole server is not running.
>
> Signed-off-by: Tony Dinh <mibodhi at gmail.com>
> ---
>
>  boot/bootm.c             | 16 +++++++++++++++-
>  drivers/net/netconsole.c |  2 +-
>  2 files changed, 16 insertions(+), 2 deletions(-)
>
> diff --git a/boot/bootm.c b/boot/bootm.c
> index 2eec60ec7b..c4a3aaf1bd 100644
> --- a/boot/bootm.c
> +++ b/boot/bootm.c
> @@ -473,7 +473,21 @@ ulong bootm_disable_interrupts(void)
>          */
>         iflag = disable_interrupts();
>  #ifdef CONFIG_NETCONSOLE

Can you convert this to 'if IS_ENABLED(...)' at the same time?

> -       /* Stop the ethernet stack if NetConsole could have left it up */
> +       /*
> +        * Make sure that the starting kernel message printed out.
> +        * Reset stdin/out/err back to serial and stop the ethernet
> +        * stack if NetConsole could have left it up
> +        */
> +       char *s;
> +       int ret;
> +
> +       s = env_get("stdout");
> +       if (strcmp(s, "nc") == 0) {
> +               printf("\n\nStarting kernel ...\n");
> +               ret = env_set("stdin", "serial");
> +               ret = env_set("stdout", "serial");
> +               ret = env_set("stderr", "serial");
> +       }
>         eth_halt();
>  #endif
>
> diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c
> index 151bc55e07..2091014918 100644
> --- a/drivers/net/netconsole.c
> +++ b/drivers/net/netconsole.c
> @@ -20,7 +20,7 @@ static int input_size; /* char count in input buffer */
>  static int input_offset; /* offset to valid chars in input buffer */
>  static int input_recursion;
>  static int output_recursion;
> -static int net_timeout;
> +static int net_timeout = 1;

What is this change?

>  static uchar nc_ether[6]; /* server enet address */
>  static struct in_addr nc_ip; /* server ip */
>  static short nc_out_port; /* target output port */
> --
> 2.30.2
>

Could you take a look at converting netconsole to driver model? It
should be a child of the eth device probably. I think this patch is OK
for, but it would be better if the driver could deregister itself from
stdio in its remove() method, perhaps installing serial at that point.

Regards,
SImon


More information about the U-Boot mailing list