On Thu 2018-09-06 16:29:40, Sergey Senozhatsky wrote: > On (09/05/18 13:02), Petr Mladek wrote: > > Note that the first registered console prints all messages > > even without this flag. > > Hmm, OK, interesting point. > > I assumed that the first console usually has CON_PRINTBUFFER bit set. > Or even a CON_PRINTBUFFER | CON_ANYTIME combo. E.g. 8250. It sort of > makes sense to have CON_PRINTBUFFER for the first console. Any later > consoles [e.g. fbcon, netcon] don't necessarily have CON_PRINTBUFFER. > > And the first console has CON_PRINTBUFFER bit set. Well, just because > it sounds reasonable. Those were the main assumptions behind my code > snippet. Was any of those assumptions wrong?
This assumption makes sense. In fact, I was wrong. I thought that console_seq/console_idx were not updated until the first console was registered. But it is not the case. It means that the hack with exclusive_console might be usable. But I would prefer to do it a cleaner way. > > I played with another solution, see the patch below. It defines > > which messages have a valid NOCONS flag according to the msg_seq > > number. IMHO, it is a bit more straightforward but it is still > > a hack. I am not super happy about it. > > I just skimmed through it, and probably missed some parts. But I sort > of expected to see some console_valid_nocons_seq manipulations in > register_console(), when we register a new CON_PRINTBUFFER console > on already running system. I do not see any reason for this. If quiet/debug/loglevel kernel parameters are proceed before register_console() call then console_valid_nocons_seq is already set to the right sequence number. Otherwise console_loglevel should be still the default value and there is no reason to re-calculate nocons flag. But it is rather complicated, still hacky, ... > > Hmm, I seriously think about reverting the commit 375899cddcbb > > ("printk: make sure to print log on console.") and solving it > > another way. > > I can agree, definitely. That's one of the options. I prefer the revert for now. Best Regards, Petr