On 2019-02-22, Petr Mladek <[email protected]> wrote:
>> diff --git a/lib/nmi_backtrace.c b/lib/nmi_backtrace.c
>> index 15ca78e1c7d4..77bf84987cda 100644
>> --- a/lib/nmi_backtrace.c
>> +++ b/lib/nmi_backtrace.c
>> @@ -75,12 +75,6 @@ void nmi_trigger_cpumask_backtrace(const cpumask_t *mask,
>>              touch_softlockup_watchdog();
>>      }
>>  
>> -    /*
>> -     * Force flush any remote buffers that might be stuck in IRQ context
>> -     * and therefore could not run their irq_work.
>> -     */
>> -    printk_safe_flush();
>> -
>>      clear_bit_unlock(0, &backtrace_flag);
>>      put_cpu();
>>  }
>
> This reminds me that we need to add back the locking that was
> removed in the commit 03fc7f9c99c1e7ae2925d45 ("printk/nmi:
> Prevent deadlock when accessing the main log buffer in NMI").

No, that commit is needed. You cannot have NMIs waiting on other CPUs.

> Otherwise, backtraces from different CPUs would get mixed.

A later patch (#17) adds CPU IDs to the printk messages so that this
isn't a problem. (That patch is actually obsolete now because Sergey has
already merged work for linux-next that includes this information.)

John Ogness

Reply via email to