Received: by 2002:a05:6358:489b:b0:bb:da1:e618 with SMTP id x27csp3603295rwn; Sat, 10 Sep 2022 15:59:37 -0700 (PDT) X-Google-Smtp-Source: AA6agR6Cm5RqH5QC3OREMDV3iDyZM7ZXuFz47SWHfDl2MV8w/kahkjjBdYGGg7D1CjYGnlKSDYMF X-Received: by 2002:a17:907:743:b0:740:ef93:2ffc with SMTP id xc3-20020a170907074300b00740ef932ffcmr14611499ejb.514.1662850777502; Sat, 10 Sep 2022 15:59:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662850777; cv=none; d=google.com; s=arc-20160816; b=U6l60A4j4XK+77slV7YS6p9PbZMwOFDjAjTbhrx1rLZ4bxoZSjbmIkdNOiUmbsn5Yz ivWtouBcBr9Jcs911rjgOn4g1uK2ZW3L0unnr3VHqe7zy1qAZRU0fp5fRadHB0MEEIu2 p9fokaEpR4jcERj4nRUl0r4IPmtIEHUVCsxDdfa261oWL64OcK9rVkzVYcUQ7G4g0Uka mVGmO19k6ZTND6yez8bMX1z4/ggJuqApS51coouf0dtMvuGa9eAwmkCLJx/YV/n7IdnV +BEN/Mrc8kNPwy5EPXHzvFNVkIK+tj6rnmnVkTvOEHlpioCSg6AoXAVy5ml4TNIowTf0 nVxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:date:mime-version:references:subject:cc:to:from :dkim-signature:dkim-signature:message-id; bh=PfOqpESp8tLtZDC+o8o6mnQEU5nU5UN8jXbbOmj7yS4=; b=JdMmT8hW36l90aDtRIPyfrgc9PciOn2sLiyciWpgiRXNdHpLJEd6oZSjBke2pFukqr d/Lk/8WcAtAWp9DXKMKGTrflJJ72AUcSYbQYw9o0gDtILB+QSn8Gy3/2ekCupLZQNUD3 vWgYyYBkLZPfrg2/Qz4sOhDwiZlkEfmRf5WwraM7Rkv0GA/z9zgwtLqGnpn1KS29wJAi D172vJHvDjAijpupboH1+WetXLA7eIOf/rOQ1fH7iU5ztwDNAmw88YFzWMXbyZYmN+9U ZVev72y38jegPlq0ug2o4+HP9Mkn43LAN7rWjJRUv9LfO21OOklufip2B6gsCT2ft8rL OtFQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=m6Abpy6h; dkim=neutral (no key) header.i=@linutronix.de; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id fj4-20020a1709069c8400b007799e328e10si4099747ejc.999.2022.09.10.15.59.13; Sat, 10 Sep 2022 15:59:37 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=m6Abpy6h; dkim=neutral (no key) header.i=@linutronix.de; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230503AbiIJWa4 (ORCPT + 99 others); Sat, 10 Sep 2022 18:30:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45978 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230385AbiIJW3k (ORCPT ); Sat, 10 Sep 2022 18:29:40 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5C61145F6B for ; Sat, 10 Sep 2022 15:28:19 -0700 (PDT) Message-ID: <20220910222302.052398226@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1662848897; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=PfOqpESp8tLtZDC+o8o6mnQEU5nU5UN8jXbbOmj7yS4=; b=m6Abpy6h1kF4rVeB+tpgtOq5St2HvOoeyZmg3+oUoEtc765WcnPNdjjdDskblrqvvh5HNk KiRC42PRB7VaAGyui0U3PPmaJ2HA4GU41PDgVaIDtcov1VV3AfkKdlLog5LOMIinhHX0jQ QzXs+yLhpaAHDcVD7saCgOBVUKYcjwAgW9Jt3p/yX2MuRk2oM7hRX4+sDJsxzVP1Og4wFG LGm+QnND9C0++XeX14/sd8bJqLKt1FbOmKPMGoqBXo3ZpqRWoPrRf/FTmo4N1so5lSKl8E yvQQq1ppEUsHjPnfshWShiM/PP40N03NHcxpGJW/C3jDOtofdbkHIzVEvj+CfA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1662848897; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=PfOqpESp8tLtZDC+o8o6mnQEU5nU5UN8jXbbOmj7yS4=; b=XSgI0HWlYJEj+zBs/+PztE9DWGK8iwwPJ6EA+zl/UFDLvCDcC9P9LSHOe29UE+vTNZxvAz 2L3mmKMAyxEIB+CA== From: Thomas Gleixner To: LKML Cc: John Ogness , Petr Mladek , Sergey Senozhatsky , Steven Rostedt , Linus Torvalds , Peter Zijlstra , "Paul E. McKenney" , Daniel Vetter , Greg Kroah-Hartman , Helge Deller , Jason Wessel , Daniel Thompson , John Ogness Subject: [patch RFC 29/29] printk: Add atomic write enforcement to warn/panic... References: <20220910221947.171557773@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Date: Sun, 11 Sep 2022 00:28:17 +0200 (CEST) X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Signed-off-by: John Ogness Invoke the atomic write enforcement functions for warn/panic to ensure that the information gets out to the consoles. This is not yet a final solution as this still unlocks consoles and depends on the "reliablity" of legacy consoles which are invoked during printk(). Once the legacy is converted over this can be changed to lock consoles on entry, print undisturbed and release them on exit. Signed-off-by: John Ogness Signed-off-by: Thomas Gleixner --- kernel/panic.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) --- a/kernel/panic.c +++ b/kernel/panic.c @@ -256,6 +256,12 @@ void panic(const char *fmt, ...) if (old_cpu != PANIC_CPU_INVALID && old_cpu != this_cpu) panic_smp_self_stop(); + /* + * No point in saving the previous printk severity level + * here. Panic won't come back + */ + cons_atomic_enter(CONS_PRIO_PANIC); + console_verbose(); bust_spinlocks(1); va_start(args, fmt); @@ -602,6 +608,10 @@ struct warn_args { void __warn(const char *file, int line, void *caller, unsigned taint, struct pt_regs *regs, struct warn_args *args) { + enum cons_prio prev_prio; + + prev_prio = cons_atomic_enter(CONS_PRIO_EMERGENCY); + disable_trace_on_warning(); if (file) @@ -633,6 +643,8 @@ void __warn(const char *file, int line, /* Just a warning, don't kill lockdep. */ add_taint(taint, LOCKDEP_STILL_OK); + + cons_atomic_exit(CONS_PRIO_EMERGENCY, prev_prio); } #ifndef __WARN_FLAGS