On 2019-09-18, Sergey Senozhatsky <sergey.senozhatsky.w...@gmail.com> wrote:
>> For instance, tty/sysrq must be able to switch printk emergency
>> on/off.
>
> How did we come up to that _sync() printk() emergency mode (when we
> make sure that there is no active printing kthread)? We had a number
> of cases (complaints) of lost kernel messages. There are scenarios in
> which we cannot offload to async preemptible printing kthread, because
> current control path is, for instance, going to reboot the kernel. In
> sync printk() mode we have some sort (!) of guarantees that when we do
>
>               pr_emerg("Restarting system\n");
>               kmsg_dump(KMSG_DUMP_RESTART);
>               machine_restart(cmd);
>
> pr_emerg("Restarting system\n") is going to flush logbuf before the
> system will machine_restart().

Yes, this was why I asked Daniel how the bsod stuff will be
implemented. We don't want a bsod just because we are
restarting. Perhaps write_atomic() should also have a "reason" argument
like kmsg_dump does. I will keep in touch with Daniel to make sure we
are sync on this.

> It's going to be a bit harder when we have per-console kthread.

Each console has its own iterator. This iterators will need to advance,
regardless if the message was printed via write() or write_atomic().

John Ogness

Reply via email to