• Linus Torvalds's avatar
    Merge tag 'printk-for-6.9' of git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux · b0546776
    Linus Torvalds authored
    Pull printk updates from Petr Mladek:
     "Improve the behavior during panic. The issues were found when testing
      the ongoing changes introducing atomic consoles and printk kthreads:
    
       - pr_flush() has to wait for the last reserved record instead of the
         last finalized one. Note that records are finalized in random order
         when generated by more CPUs in parallel.
    
       - Ignore non-finalized records during panic(). Messages printed on
         panic-CPU are always finalized. Messages printed by other CPUs
         might never be finalized when the CPUs get stopped.
    
       - Block new printk() calls on non-panic CPUs completely. Backtraces
         are printed before entering the panic mode. Later messages would
         just mess information printed by the panic CPU.
    
       - Do not take console_lock in console_flush_on_panic() at all. The
         original code did try_lock()/console_unlock(). The unlock part
         might cause a deadlock when panic() happened in a scheduler code.
    
       - Fix conversion of 64-bit sequence number for 32-bit atomic
         operations"
    
    * tag 'printk-for-6.9' of git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux:
      dump_stack: Do not get cpu_sync for panic CPU
      panic: Flush kernel log buffer at the end
      printk: Avoid non-panic CPUs writing to ringbuffer
      printk: Disable passing console lock owner completely during panic()
      printk: ringbuffer: Skip non-finalized records in panic
      printk: Wait for all reserved records with pr_flush()
      printk: ringbuffer: Cleanup reader terminology
      printk: Add this_cpu_in_panic()
      printk: For @suppress_panic_printk check for other CPU in panic
      printk: ringbuffer: Clarify special lpos values
      printk: ringbuffer: Do not skip non-finalized records with prb_next_seq()
      printk: Use prb_first_seq() as base for 32bit seq macros
      printk: Adjust mapping for 32bit seq macros
      printk: nbcon: Relocate 32bit seq macros
    b0546776
printk.c 114 KB