From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 38150C352BE for ; Sat, 18 Apr 2020 20:20:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0FD3F2223D for ; Sat, 18 Apr 2020 20:20:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=arista.com header.i=@arista.com header.b="VTYuaj8D" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728610AbgDRUUi (ORCPT ); Sat, 18 Apr 2020 16:20:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56552 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1728590AbgDRUUg (ORCPT ); Sat, 18 Apr 2020 16:20:36 -0400 Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 66B50C061A0C for ; Sat, 18 Apr 2020 13:20:35 -0700 (PDT) Received: by mail-wm1-x341.google.com with SMTP id v4so1391433wme.1 for ; Sat, 18 Apr 2020 13:20:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arista.com; s=googlenew; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=LcoZoY+566ZuItEznOv7gQpyH1CF6rKNXLWS0JKZOFQ=; b=VTYuaj8Dx2y14E4sA5nnckUhZZpcb9YJne0E/JZ1sPuFowZrkrjfi05zZs9NFOKkuk Qc9nrxbA7nAqpihx+/BPGSJ+i6GeojCveh1kyoWMQJbfxusOkcg1LudmQiM+eWGobCXT Kj6q42dTJAsDYMO3Sg8OR7yLhfouUohnoT1n8qymriWe460HoGUm45GDPEdEn5YPTmuH T90a1C/bNK8gNP/1cDEQyOW3//jTMyzVwl7v6/Cxzi2OJIHjYNhDZhtk2NZi0NrYafy8 s4K2gCfy6MXw5CCOeYKiIdP+sLbSEa/lSBMLjYpHD9iks8Z9DBXnkdJtjDb1VwAZxv4F cCcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LcoZoY+566ZuItEznOv7gQpyH1CF6rKNXLWS0JKZOFQ=; b=SRa1wxxoaeDqzPSAA5p0Jo8q1NyO7Wc7Yqlm80mKdXMy8mftwLZuVciaEPaTtkALIo L/gOOPU15XMM6yAhRLOu28QHeAyxDAoi++g91jvGyah0mraGZGp5MRT+RLd0ZHlVuN7O 0Ffs4IP8ug5OK3vJwplFfjhH72jghddzaO4oTk1LLDIaQscPsryK4iasdbsbk2X2rjaW bFjiunkY6rOAbiPf5JEWTRcNJv2VcEzAOAMFVPslLMpKPzBeyJmaII9BO4CStEZsbVVl 0bpTSRpyCHPeIYQLWZmLvmdiFRiib7axSB5i+cIYI1MykdW9uPXkYUAEly1fwc7p6WnX HGBA== X-Gm-Message-State: AGi0PuZYXSszZoCExYvL4j3CQl3FQS9cfVhziZ+XwWrmszEQWH+iGMp7 E/DaDPEjDdL/tUeQVRwNF63R3sEmSQQ= X-Google-Smtp-Source: APiQypLOrtiHeskPBcAJn2a1NOGH95CKgYTAcjHADXwnkneh+OMdFWq8yIS82xgT/1caanc+29GOTQ== X-Received: by 2002:a05:600c:210b:: with SMTP id u11mr3514110wml.133.1587241233846; Sat, 18 Apr 2020 13:20:33 -0700 (PDT) Received: from localhost.localdomain ([2a02:8084:e84:2480:228:f8ff:fe6f:83a8]) by smtp.gmail.com with ESMTPSA id m1sm31735255wro.64.2020.04.18.13.20.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Apr 2020 13:20:33 -0700 (PDT) From: Dmitry Safonov To: linux-kernel@vger.kernel.org Cc: Dmitry Safonov <0x7f454c46@gmail.com>, Dmitry Safonov , Andrew Morton , Greg Kroah-Hartman , Ingo Molnar , Jiri Slaby , Petr Mladek , Sergey Senozhatsky , Steven Rostedt , Tetsuo Handa , Rich Felker , linux-sh@vger.kernel.org Subject: [PATCHv3 32/50] sh: Add loglvl to show_trace() Date: Sat, 18 Apr 2020 21:19:26 +0100 Message-Id: <20200418201944.482088-33-dima@arista.com> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200418201944.482088-1-dima@arista.com> References: <20200418201944.482088-1-dima@arista.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently, the log-level of show_stack() depends on a platform realization. It creates situations where the headers are printed with lower log level or higher than the stacktrace (depending on a platform or user). Furthermore, it forces the logic decision from user to an architecture side. In result, some users as sysrq/kdb/etc are doing tricks with temporary rising console_loglevel while printing their messages. And in result it not only may print unwanted messages from other CPUs, but also omit printing at all in the unlucky case where the printk() was deferred. Introducing log-level parameter and KERN_UNSUPPRESSED [1] seems an easier approach than introducing more printk buffers. Also, it will consolidate printings with headers. Add log level parameter to show_trace() as a preparation to introduce show_stack_loglvl(). Cc: Rich Felker Cc: linux-sh@vger.kernel.org [1]: https://lore.kernel.org/lkml/20190528002412.1625-1-dima@arista.com/T/#u Signed-off-by: Dmitry Safonov --- arch/sh/include/asm/processor_32.h | 2 +- arch/sh/kernel/dumpstack.c | 10 +++++----- arch/sh/kernel/process_32.c | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/arch/sh/include/asm/processor_32.h b/arch/sh/include/asm/processor_32.h index 0e0ecc0132e3..d44409413418 100644 --- a/arch/sh/include/asm/processor_32.h +++ b/arch/sh/include/asm/processor_32.h @@ -171,7 +171,7 @@ static __inline__ void enable_fpu(void) #define thread_saved_pc(tsk) (tsk->thread.pc) void show_trace(struct task_struct *tsk, unsigned long *sp, - struct pt_regs *regs); + struct pt_regs *regs, const char *loglvl); #ifdef CONFIG_DUMP_CODE void show_code(struct pt_regs *regs); diff --git a/arch/sh/kernel/dumpstack.c b/arch/sh/kernel/dumpstack.c index 959064b90055..d488a47a1f0f 100644 --- a/arch/sh/kernel/dumpstack.c +++ b/arch/sh/kernel/dumpstack.c @@ -127,16 +127,16 @@ static const struct stacktrace_ops print_trace_ops = { }; void show_trace(struct task_struct *tsk, unsigned long *sp, - struct pt_regs *regs) + struct pt_regs *regs, const char *loglvl) { if (regs && user_mode(regs)) return; - printk("\nCall trace:\n"); + printk("%s\nCall trace:\n", loglvl); - unwind_stack(tsk, regs, sp, &print_trace_ops, ""); + unwind_stack(tsk, regs, sp, &print_trace_ops, (void *)loglvl); - printk("\n"); + printk("%s\n", loglvl); if (!tsk) tsk = current; @@ -158,5 +158,5 @@ void show_stack(struct task_struct *tsk, unsigned long *sp) stack = (unsigned long)sp; dump_mem("Stack: ", KERN_DEFAULT, stack, THREAD_SIZE + (unsigned long)task_stack_page(tsk)); - show_trace(tsk, sp, NULL); + show_trace(tsk, sp, NULL, KERN_DEFAULT); } diff --git a/arch/sh/kernel/process_32.c b/arch/sh/kernel/process_32.c index a094633874c3..456cc8d171f7 100644 --- a/arch/sh/kernel/process_32.c +++ b/arch/sh/kernel/process_32.c @@ -59,7 +59,7 @@ void show_regs(struct pt_regs * regs) printk("MACH: %08lx MACL: %08lx GBR : %08lx PR : %08lx\n", regs->mach, regs->macl, regs->gbr, regs->pr); - show_trace(NULL, (unsigned long *)regs->regs[15], regs); + show_trace(NULL, (unsigned long *)regs->regs[15], regs, KERN_DEFAULT); show_code(regs); } -- 2.26.0