From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751775AbdJNJVd (ORCPT ); Sat, 14 Oct 2017 05:21:33 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:56014 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751337AbdJNJVb (ORCPT ); Sat, 14 Oct 2017 05:21:31 -0400 X-Google-Smtp-Source: ABhQp+QvBkK7xQNKYxs61wTEVbn6wpXl8tluK36eVA3TyGiwcehz6G3KHmjYMtxWmbXM2opfOj/rEw== Date: Sat, 14 Oct 2017 18:21:29 +0900 From: Sergey Senozhatsky To: Steven Rostedt Cc: LKML , Petr Mladek , Peter Zijlstra , Andrew Morton , Sergey Senozhatsky Subject: Re: [PATCH] printk: Remove superfluous memory barriers from printk_safe Message-ID: <20171014092129.GD2973@tigerII.localdomain> References: <20171011124647.7781f98f@gandalf.local.home> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20171011124647.7781f98f@gandalf.local.home> User-Agent: Mutt/1.9.1 (2017-09-22) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On (10/11/17 12:46), Steven Rostedt wrote: > From: Steven Rostedt (VMware) > > The variable printk_safe_irq_ready is set and never cleared at system > boot up, when there's only one CPU active. It is set before other > CPUs come on line. Also, it is extremely unlikely that an NMI would > trigger this early in boot up (which I wonder why we even have this > variable at all). it's not only NMI related, printk() recursion can happen at any stages, including... um... wait a second. ... including the "before we set up per-CPU areas" stage? hmm... smells like a bug? do we need to move per-CPU printk_safe buffers out of per-CPU and turn it into a global static buffer? like logbuf, and just give every CPU a starting offset of its printk_safe_logbuf part. IOW, char printk_safe_logbuf[number of cpus * sizeof printk safe buffer]; cpu0 offset 0, up to sizeof printk safe buffer cpu1 offset sizeof printk safe buffer, up to 2 * sizeof printk safe buffer etc. or... at least. avoid stoing to per-CPU printk-safe/printk-nmi buffers unless we've got per-CPU areas set up? or am I hallucinating? -ss