lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <mhng-69bcc54d-e1c2-4968-b477-b8fc587db150@palmer-si-x1c4>
Date:   Tue, 11 Jul 2017 09:22:38 -0700 (PDT)
From:   Palmer Dabbelt <palmer@...belt.com>
To:     mpe@...erman.id.au
CC:     yamada.masahiro@...ionext.com, mmarek@...e.com,
        will.deacon@....com, peterz@...radead.org, boqun.feng@...il.com,
        mingo@...hat.com, daniel.lezcano@...aro.org, tglx@...utronix.de,
        jason@...edaemon.net, marc.zyngier@....com,
        gregkh@...uxfoundation.org, jslaby@...e.com, davem@...emloft.net,
        mchehab@...nel.org, sfr@...b.auug.org.au, fweisbec@...il.com,
        viro@...iv.linux.org.uk, mcgrof@...nel.org, dledford@...hat.com,
        bart.vanassche@...disk.com, sstabellini@...nel.org,
        daniel.vetter@...ll.ch, msalter@...hat.com,
        nicolas.dichtel@...nd.com, james.hogan@...tec.com,
        paul.gortmaker@...driver.com, linux@...ck-us.net,
        heiko.carstens@...ibm.com, schwidefsky@...ibm.com,
        linux-kernel@...r.kernel.org, patches@...ups.riscv.org,
        akpm@...ux-foundation.org, albert@...ive.com
Subject:     Re: [PATCH 08/17] tty: New RISC-V SBI console driver

On Mon, 10 Jul 2017 23:21:07 PDT (-0700), mpe@...erman.id.au wrote:
> Palmer Dabbelt <palmer@...belt.com> 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.

That seems like a good idea.  I'm not familiar with how all this works, but
from my understanding of this early_initcall() should be sufficient to make
this work?  The only other driver that sets CON_ANYTIME and supports
EARLY_PRINTK is hvc_xen, but that installs a header to let init code register
the console directly.  The early_initcall mechanism seems cleaner if it does
the right thing.

How does this look?

  diff --git a/drivers/tty/hvc/hvc_sbi.c b/drivers/tty/hvc/hvc_sbi.c
  index 98114cbd85f1..534d6b75a2c6 100644
  --- a/drivers/tty/hvc/hvc_sbi.c
  +++ b/drivers/tty/hvc/hvc_sbi.c
  @@ -87,11 +87,11 @@ static void sbi_console_write(struct console *co, const char *buf,
   static struct console early_console_dev __initdata = {
          .name   = "early",
          .write  = sbi_console_write,
  -       .flags  = CON_PRINTBUFFER | CON_BOOT,
  +       .flags  = CON_PRINTBUFFER | CON_BOOT | CON_ANYTIME,
          .index  = -1
   };

  -static int __init setup_early_printk(char *str)
  +static int __init setup_early_printk(void)
   {
          if (early_console == NULL) {
                  early_console = &early_console_dev;
  @@ -99,5 +99,5 @@ static int __init setup_early_printk(char *str)
          }
          return 0;
   }
  -early_param("earlyprintk", setup_early_printk);
  +early_initcall(setup_early_printk);
   #endif

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ