On Wed 2018-11-07 11:01:05, David Laight wrote: > From: Tetsuo Handa > > Sent: 07 November 2018 10:53 > A though: > > Why not make the printf lock slightly 'sticky'? > - If the output line is incomplete save the cpuid. > - If there is a saved cpuid that doesn't match the current cpu then spin for a bit. > > Any callers of printk() have to assume they will spin on the buffer for the > longest printk formatting (and symbol lookup might take a while) so a short > additional delay won't matter. Disabling preemption for a single printk() is questionable. We have spent many years trying to find an acceptable solution to avoid softlockups and we did not fully succeeded. And this patchset is about continuous lines. Therefore we would need to disable preemption for all code intermixed with the related printks. This does not have much chances to get accepted. > Then two calls to printk() for the same line won't (usually) get split and > none of the callers need any changes. It would require changes to disable the preemption around the related calls. We could not do this without a better API and inspecting all users. Note that we could not detect this by "\n" because it is too error-prone. Best Regards, Petr