On 2024-07-19, Andrew Halaney <ahalaney@xxxxxxxxxx> wrote: >> Your thinking is not naive. It is correct (for PREEMPT_RT). printk() >> stores messages locklessly into its ringbuffer and must work in all >> cases (including NMI and scheduler). And AFAIK it does. >> >> However, printk() is also responsible for reliably triggering or >> performing console printing. This separate responsibility is tricky. For >> PREEMPT_RT the problem is supposed to be solved. Obviously it still has >> some issues, so thank you for the report. >> >> For PREEMPT_RT, if you can put a printk() anywhere after the Linux >> banner and cause a problem, the printk-folks need to know about it. > > Just to be sure I'm following correctly, when you say PREEMPT_RT above, > are you meaning "the printk/nbcon/console solution in PREEMPT (independent of > the current CONFIG_PREEMPT* setting)"? Or do you mean that + CONFIG_PREEMPT_RT? First, the _complete_ printk/nbcon/console solution must be present in the kernel (most likely by simply applying the PREEMPT_RT patchset). Then, either 1. Enabling CONFIG_PREEMPT_RT or 2. Enabling some other preemption model but only using nbcon consoles (which currently is only the 8250 uart driver) For !CONFIG_PREEMPT_RT using legacy consoles the non-interference/reliability properties of the console printing is not changed from current mainline. This is on purpose. John