From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf0-f196.google.com ([209.85.192.196]:38159 "EHLO mail-pf0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753609AbeEWCBM (ORCPT ); Tue, 22 May 2018 22:01:12 -0400 Date: Wed, 23 May 2018 11:01:07 +0900 From: Sergey Senozhatsky To: Steven Rostedt Cc: Petr Mladek , Sergey Senozhatsky , Peter Zijlstra , Tetsuo Handa , Sergey Senozhatsky , linux-kernel@vger.kernel.org, "4 . 13+" Subject: Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces Message-ID: <20180523020107.GA8465@jagdpanzerIV> References: <20180517143903.19339-1-pmladek@suse.com> <20180517143903.19339-1-pmladek@suse.com> <20180522174320.10ced885@gandalf.local.home> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180522174320.10ced885@gandalf.local.home> Sender: stable-owner@vger.kernel.org List-ID: On (05/22/18 17:43), Steven Rostedt wrote: > > CPU0 CPU1 CPU2 > > > > printk() > > vprintk_emit() > > spin_lock(&logbuf_lock) > > > > trigger_all_cpu_backtrace() > > raise() > > > > nmi_enter() > > printk_nmi_enter() > > if (this_cpu_read(printk_context) > > & PRINTK_SAFE_CONTEXT_MASK) > > // false > > else > > // looks safe to use printk_deferred() > > this_cpu_or(printk_context, > > PRINTK_NMI_DEFERRED_CONTEXT_MASK); > > > > nmi_cpu_backtrace() > > arch_spin_lock(&lock); > > What branch is this based on, because I can't find the > "arch_spin_lock()" you are talking about here. This arch_spin_lock() is in lib/nmi_backtrace.c https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/lib/nmi_backtrace.c?h=v4.17-rc6#n94 -ss