Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp6500470yba; Wed, 1 May 2019 13:39:03 -0700 (PDT) X-Google-Smtp-Source: APXvYqy3vBC1Pa3d/saNIJkyjJTUBWDUSsNkrbOGle3RkwhuMAC7OR9uPn+lcls2qdlpR8/xHqoN X-Received: by 2002:aa7:800e:: with SMTP id j14mr79110842pfi.157.1556743143452; Wed, 01 May 2019 13:39:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556743143; cv=none; d=google.com; s=arc-20160816; b=KDhOwiS43DhhAOsDIKGdkGhZ1hijpkqTIdG6dTk1tE7v4IgejCCT6Nb554EJjTMdam kyUcRCsD3AlgLJ6OW/laDEpeBxeEDbljt079ZGDmrs2b+TX0ev6mawxseQ5sV5WCMs4T by9+/X/k31Sw0qaxNg5k1sV19+P2qHJApjmKotLd/UNJ+yu7wptBFN1BfSjHXB6YaJjD /bu5H1rTM6pxY4RlUaWHzdooR/WUYWUmspxfXCNcYXVZPeFyJP/Ue4p7gOLKAiEe8HAR 08T705g3Pkmqc6Nv6c4W2e3kTf70OrFlOqqNmFQ/3PG9+zwa6WBk0hsmRvLeSbkxCgJ3 NwfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=lJmQqngy1kQ8htwLJJdrVCRzBO7USlbxqkr4yKsGTHE=; b=p0JnDSYNTqxTmWW9Ys0IgWn/qvvDwURn4CvKEn1za5SOGPO08jmhQtEbooZ0r1Saz9 UPwPAtirTXVun658hSXvzxCZAQvQFK/S2LHGe6qPiR7Nsvp9zby+2LBielvv1OCURzjX qJ0n+Jnof/fs+lE/fvXDdHuQoF0q4yU2UqeexENPZFDDLF6xS3rMbWkZPrzTBuVHsMXb v1Gn7UYbMftFNFmhln9ZL7nHOnVq8WkLrya3MwuFVJsocY5BDWVKTnZCgvLswAl1nhFQ 3/cXec8VyyYcW2Ei1amBr+DLQ5y5ysAtfHq5ggXY+IqDVufQVU3QhoRkjoSS3zdLKzvz Cheg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=c8FDvEIl; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j37si43968807plb.219.2019.05.01.13.38.48; Wed, 01 May 2019 13:39:03 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=c8FDvEIl; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726303AbfEAUhJ (ORCPT + 99 others); Wed, 1 May 2019 16:37:09 -0400 Received: from mail-it1-f196.google.com ([209.85.166.196]:54968 "EHLO mail-it1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726173AbfEAUhH (ORCPT ); Wed, 1 May 2019 16:37:07 -0400 Received: by mail-it1-f196.google.com with SMTP id a190so617043ite.4 for ; Wed, 01 May 2019 13:37:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=lJmQqngy1kQ8htwLJJdrVCRzBO7USlbxqkr4yKsGTHE=; b=c8FDvEIlshjmRi2UFmd+Txl5np8+zlT32h28+ynagC44DbXiW8Op7/h1cMDTjVdg0X X74uIhFCv6P4rNkU7r6YD0HvnyoHFUiZtHtstq7MCWkHX9St+hw6PTyJAE8FSTHdoR5H XbvyR92o+d5q5FqFOcUdW/wE5YD0GjBqOYeZxdfZzceWfpqwgAn4lUJxGN3KByUg61Yd Blp/sGxM9JYTlhO4+HOo9ljrf+6D5+JZ3QE4FH1XigQDKstc/zTri7qtCzAHtc+KPKB7 jlmBLKtHB3c4KA+QWIbPDOu0gxXKNSxaO7TDf4L4EBVfE9oC/mKK9TgAIhzXjF7sMfxk 88dw== 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; bh=lJmQqngy1kQ8htwLJJdrVCRzBO7USlbxqkr4yKsGTHE=; b=lIXcvAfkaycRkyXvzj24MtHujSbRaKoNwKFtzKesyoIobUmZU3uZ+tmYWvpRzjXv4K TKbUHUl2w5sOSeCxnPVnsjAbRpytYLZQ6BD7sO5kp661rhkInP1P+p81K7Fz9epmU5t6 4D4LedhWYZrrOLMF/EZ2PzfV0bgeYAj3a+xB6vVo0Io6DgYzR+/Ex1x4yKVfWUKUP9K8 f4DznVlFTAMJRvQIEEwr49nCn8VVU329LSLqZVTpd4yhl23NhghNTm3U+sUWLj+OjnMh jAvOJ10Du0qTnvUwbnoAwvqaiq3qs8LBkRSeOSf1zsvoU079EkgpWDTSVG+1tDsEY7VB bXBQ== X-Gm-Message-State: APjAAAWejdkkf1nQNOBNoIHyRenYa49CbZFmC2KguE+A0UsgMt3vRS8t NVGPzX0F6veb8ZmwB/5s/A== X-Received: by 2002:a24:3613:: with SMTP id l19mr9515881itl.75.1556743026431; Wed, 01 May 2019 13:37:06 -0700 (PDT) Received: from localhost.localdomain ([92.117.183.162]) by smtp.gmail.com with ESMTPSA id u16sm9323998iol.66.2019.05.01.13.37.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 01 May 2019 13:37:05 -0700 (PDT) From: Viktor Rosendahl To: Steven Rostedt , Ingo Molnar , linux-kernel@vger.kernel.org Cc: Joel Fernandes , Viktor Rosendahl Subject: [PATCH v2 4/4] ftrace: Add an option for tracing console latencies Date: Wed, 1 May 2019 22:36:50 +0200 Message-Id: <20190501203650.29548-5-viktor.rosendahl@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190501203650.29548-1-viktor.rosendahl@gmail.com> References: <20190501203650.29548-1-viktor.rosendahl@gmail.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This new option CONFIG_TRACE_CONSOLE_LATENCY will enable the latency tracers to trace the console latencies. Previously this has always been implicitely disabled. I guess this is because they are considered to be well known and unavoidable. However, for some organizations it may nevertheless be desirable to trace them. Basically, we want to be able to tell that there are latencies in the system under test because someone has incorrectly enabled the serial console. Signed-off-by: Viktor Rosendahl --- include/linux/irqflags.h | 13 +++++++++++++ kernel/printk/printk.c | 5 +++-- kernel/trace/Kconfig | 11 +++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h index 21619c92c377..791bee718448 100644 --- a/include/linux/irqflags.h +++ b/include/linux/irqflags.h @@ -73,6 +73,19 @@ do { \ # define start_critical_timings() do { } while (0) #endif +#ifdef CONFIG_TRACE_CONSOLE_LATENCY + +#define console_stop_critical_timings() do {} while (0) +#define console_start_critical_timings() do {} while (0) + +#else /* !CONFIG_TRACE_CONSOLE_LATENCY */ + +/* don't trace print latency */ +#define console_stop_critical_timings() stop_critical_timings() +#define console_start_critical_timings() start_critical_timings() + +#endif /* !CONFIG_TRACE_CONSOLE_LATENCY */ + /* * Wrap the arch provided IRQ routines to provide appropriate checks. */ diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 02ca827b8fac..710e87f61158 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -2448,9 +2448,10 @@ void console_unlock(void) */ console_lock_spinning_enable(); - stop_critical_timings(); /* don't trace print latency */ + /* don't trace print latency if it's disabled */ + console_stop_critical_timings(); call_console_drivers(ext_text, ext_len, text, len); - start_critical_timings(); + console_start_critical_timings(); if (console_lock_spinning_disable_and_check()) { printk_safe_exit_irqrestore(flags); diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig index e5e8f2a0199e..f168d100d4fb 100644 --- a/kernel/trace/Kconfig +++ b/kernel/trace/Kconfig @@ -244,6 +244,17 @@ config PREEMPT_TRACER modification of /sys/kernel/debug/tracing/trace through the inotify interface. + config TRACE_CONSOLE_LATENCY + bool "Do not turn off latency tracing for the console" + default n + depends on IRQSOFF_TRACER || PREEMPT_TRACER + help + Some of the console drivers will cause long unavoidable + latencies because they are slow and need to print immediately + in a serialized manner. Because of this their latencies are not + traced by default. This option will change behavior so that + they are traced. + config SCHED_TRACER bool "Scheduling Latency Tracer" select GENERIC_TRACER -- 2.17.1