From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932404AbdDGIQ0 (ORCPT ); Fri, 7 Apr 2017 04:16:26 -0400 Received: from mail-pg0-f65.google.com ([74.125.83.65]:36309 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754884AbdDGIPq (ORCPT ); Fri, 7 Apr 2017 04:15:46 -0400 Date: Fri, 7 Apr 2017 17:15:46 +0900 From: Sergey Senozhatsky To: Pavel Machek Cc: Sergey Senozhatsky , Sergey Senozhatsky , Steven Rostedt , Petr Mladek , Jan Kara , Andrew Morton , Linus Torvalds , Peter Zijlstra , "Rafael J . Wysocki" , Eric Biederman , Greg Kroah-Hartman , Jiri Slaby , Len Brown , linux-kernel@vger.kernel.org Subject: Re: [RFC][PATCHv2 2/8] printk: introduce printing kernel thread Message-ID: <20170407081546.GD1091@jagdpanzerIV.localdomain> References: <20170329092511.3958-1-sergey.senozhatsky@gmail.com> <20170329092511.3958-3-sergey.senozhatsky@gmail.com> <20170406171430.GB10363@amd> <20170407051244.GB487@jagdpanzerIV.localdomain> <20170407072143.GB11792@amd> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170407072143.GB11792@amd> User-Agent: Mutt/1.8.0 (2017-02-23) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello, On (04/07/17 09:21), Pavel Machek wrote: > > spin_dump() and trigger_all_cpu_backtrace() result in a bunch of > > additional printk()-s so CPU0 has even more job to do in console_unlock(), > > while it still holds the contended spin_lock. and so on; there are > > many other examples. > > > > so should we declare a "we can spend only 2 seconds in direct printk() > > and then must offload printing" rule? I don't think it's much better > > than a simpler "we always offload, as long as we think it's safe". > > I believe we should do the 2 seconds rule. It allows us to print "some > messages delayed" message, so at least whoever is trying to debug the > crash will have the hints that he needs to look at the printk system. do you mean panic()? in panic() we call console_flush_on_panic(), which immediately outputs all pending logbuf messages. printk() offloading does not happen there. > "we always offload, as long as we think it's safe" rule does not > really work, as printk() can not detect if it is safe or not. but "2 seconds" rule has that "as long as we think it's safe" string attached as well. just because we do offloading. which is sometimes un-safe. so regardless the timeout value (0 seconds or 2 seconds) we still need some sort of a hint from the path that issues printk() because that path (panic, kexec, sysrq, etc.) knows for sure when things are abnormal. printk() is pretty clueless in this regard. /* well, I still think that EMERG loglevel thing is not completely broken. */ -ss