On (01/17/18 12:12), Steven Rostedt wrote:
[..]
>  /*
>   * Can we actually use the console at this time on this cpu?
> @@ -2333,6 +2390,7 @@ void console_unlock(void)
>  
>       for (;;) {
>               struct printk_log *msg;
> +             bool offload;
>               size_t ext_len = 0;
>               size_t len;
>  
> @@ -2393,15 +2451,20 @@ void console_unlock(void)
>                * waiter waiting to take over.
>                */
>               console_lock_spinning_enable();
> +             offload = recursion_check_start();
>  
>               stop_critical_timings();        /* don't trace print latency */
>               call_console_drivers(ext_text, ext_len, text, len);
>               start_critical_timings();
>  
> +             recursion_check_finish(offload);
> +
>               if (console_lock_spinning_disable_and_check()) {
>                       printk_safe_exit_irqrestore(flags);
>                       return;
>               }
> +             if (offload)
> +                     kick_offload_thread();
>  
>               printk_safe_exit_irqrestore(flags);
                ^^^^^^^^^^^^^^^^

but we call console drivers in printk_safe.
printk -> console_drivers -> printk will be
redirected to this-CPU printk_safe buffer.

        -ss

Reply via email to