Re: [PATCH 08/17] tty: New RISC-V SBI console driver

From: Michael Ellerman
Date: Tue Jul 11 2017 - 02:21:27 EST


Palmer Dabbelt <palmer@xxxxxxxxxxx> writes:
>
...
> +#ifdef CONFIG_EARLY_PRINTK
> +static void sbi_console_write(struct console *co, const char *buf,
> + unsigned int n)
> +{
> + int i;
> +
> + for (i = 0; i < n; ++i) {
> + if (buf[i] == '\n')
> + sbi_console_putchar('\r');
> + sbi_console_putchar(buf[i]);
> + }
> +}
> +
> +static struct console early_console_dev __initdata = {
> + .name = "early",
> + .write = sbi_console_write,
> + .flags = CON_PRINTBUFFER | CON_BOOT,

AFAICS you could add CON_ANYTIME here, which would mean this console
would print output before the CPU is online.

I think it doesn't currently matter because you call parse_early_param()
from setup_arch(), at which point the boot CPU has been marked online.

But if this console can actually work earlier then you might be better
off just registering it unconditionally very early.

cheers

> +static int __init setup_early_printk(char *str)
> +{
> + if (early_console == NULL) {
> + early_console = &early_console_dev;
> + register_console(early_console);
> + }
> + return 0;
> +}
> +early_param("earlyprintk", setup_early_printk);
> +#endif
> --
> 2.13.0