From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1947047AbcHRK4i (ORCPT ); Thu, 18 Aug 2016 06:56:38 -0400 Received: from mx2.suse.de ([195.135.220.15]:39992 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1946841AbcHRK4f (ORCPT ); Thu, 18 Aug 2016 06:56:35 -0400 Date: Thu, 18 Aug 2016 12:56:29 +0200 From: Petr Mladek To: Sergey Senozhatsky Cc: Viresh Kumar , Jan Kara , Andrew Morton , Sergey Senozhatsky , Jan Kara , Tejun Heo , Tetsuo Handa , "linux-kernel@vger.kernel.org" , Byungchul Park , vlevenetz@mm-sol.com, Greg Kroah-Hartman Subject: Re: [PATCH v10 1/2] printk: Make printk() completely async Message-ID: <20160818105629.GE26194@pathway.suse.cz> References: <1459789048-1337-1-git-send-email-sergey.senozhatsky@gmail.com> <1459789048-1337-2-git-send-email-sergey.senozhatsky@gmail.com> <20160404155149.a3e3307def2d1315e2099c63@linux-foundation.org> <20160406082758.GA3554@quack.suse.cz> <20160812094447.GD7339@pathway.suse.cz> <20160818022712.GB500@swordfish> <20160818093329.GL13300@pathway.suse.cz> <20160818095144.GA425@swordfish> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160818095144.GA425@swordfish> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu 2016-08-18 18:51:44, Sergey Senozhatsky wrote: > On (08/18/16 11:33), Petr Mladek wrote: > [..] > > > > 2. Force synchronous printk inside WARN()/BUG() macros. > > > > > > will it help? semaphore up() calls wake_up_process() regardless the context. > > > not to mention that we still may have spin_dump() enabled. > > > > Good point. That changes my preferences :-) > > > > > > > > > 3. Force printk_deferred() inside WARN()/BUG() macros via the per-CPU > > > > printk_func. > > > > > > > > It might be elegant. But we do not want this outside the scheduler > > > > code. Therefore we would need special variants of WARN_*_SCHED() > > > > BUG_*_SCHED() macros. > > > > Also we need to make sure that everything will be done on a single CPU > > as the printk_func is per-CPU variable. > > lib/dump_stack.c dump_stack() disables local IRQs, so we will stay > on the same CPU. It is less important to stay of the same CPU if you use printk_deferred() directly. But it us must to have if you use it via the printk_func per-CPU variable. The advantage of the printk_func trick is that it is transparent. You do not need to modify any existing functions used by WARN()/BUG() macros. Best Regards, Petr