From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932839AbcI3LfR (ORCPT ); Fri, 30 Sep 2016 07:35:17 -0400 Received: from mx2.suse.de ([195.135.220.15]:47391 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932303AbcI3LfK (ORCPT ); Fri, 30 Sep 2016 07:35:10 -0400 Date: Fri, 30 Sep 2016 13:35:08 +0200 From: Petr Mladek To: Sergey Senozhatsky Cc: Sergey Senozhatsky , Jan Kara , Andrew Morton , Tejun Heo , Calvin Owens , linux-kernel@vger.kernel.org Subject: Re: [RFC][PATCH 3/7] printk: introduce per-cpu alt_print seq buffer Message-ID: <20160930113508.GK26796@pathway.suse.cz> References: <20160927142237.5539-1-sergey.senozhatsky@gmail.com> <20160927142237.5539-4-sergey.senozhatsky@gmail.com> <20160929122639.GD26796@pathway.suse.cz> <20160930010528.GB547@swordfish> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160930010528.GB547@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 Fri 2016-09-30 10:05:28, Sergey Senozhatsky wrote: > On (09/29/16 14:26), Petr Mladek wrote: > [..] > > > printk() > > > local_irq_save() > > > alt_printk_enter() > > > > We need to make sure that exit() is called on the same CPU. > > Therefore we need to disable preemption as well. > > local_irq_save() does this for us, we can't get sched tick or > re-sched IPI, and even more - we eliminate race conditions on > this CPU. only one path can touch alt_printk related stuff, > NMI works with its own buffer. > > [..] > > What do you think about my approach with the printk_context per-CPU > > value from the WARN_DEFERRED() patchset? The main idea is that > > the entry()/exit() functions manipulate preempt_count-like per-CPU > > variable. The printk() function selects the safe implementation > > according to the current state. > > I'll take a look. > > I'll revisit it. Just a side note. If you make it less generic then please use some more meaning-full name for the alternative printk stuff. The following comes to my mind: printk_safe_enter(); printk_safe_exit(); vprintk_safe(); IMHO, the "_safe" suffix often means a variant that prevents a possible deadlock. I wonder where this patches would end but it looks promising. Best Regards, Petr