Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750960AbdIKG1D (ORCPT ); Mon, 11 Sep 2017 02:27:03 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40996 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750807AbdIKG1C (ORCPT ); Mon, 11 Sep 2017 02:27:02 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 29D8E2F054F Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=zsun@redhat.com From: "Ziqian SUN (Zamir)" To: rostedt@goodmis.org, linux-kernel@vger.kernel.org Cc: mingo@redhat.com, karolherbst@gmail.com, ppaalanen@gmail.com, akpm@linux-foundation.org, zsun@redhat.com Subject: [PATCH v3] tracing: Ignore mmiotrace from kernel commandline Date: Mon, 11 Sep 2017 14:26:35 +0800 Message-Id: <1505111195-31942-1-git-send-email-zsun@redhat.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Mon, 11 Sep 2017 06:27:02 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1980 Lines: 62 From: "Ziqian SUN (Zamir)" The mmiotrace tracer cannot be enabled with ftrace=mmiotrace in kernel commandline. With this patch, noboot is added to the tracer struct, and when system boot with a tracer that has noboot=true, it will print out a warning message and continue booting. Signed-off-by: Ziqian SUN (Zamir) -- v1 -> v2 : remove unessential comment v2 -> v3 : Use tracer struct instead of a separate list to store noboot --- kernel/trace/trace.c | 7 +++++++ kernel/trace/trace.h | 2 ++ kernel/trace/trace_mmiotrace.c | 1 + 3 files changed, 10 insertions(+) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 5360b7a..48c474f 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -5358,6 +5358,13 @@ static int tracing_set_tracer(struct trace_array *tr, const char *buf) if (t == tr->current_trace) goto out; + /* Some tracers won't work on kernel command line */ + if (system_state < SYSTEM_RUNNING && t->noboot) { + pr_warn("Tracer '%s' is not allowed on command line, ignored\n", + t->name); + goto out; + } + /* Some tracers are only allowed for the top level buffer */ if (!trace_ok_for_array(t, tr)) { ret = -EINVAL; diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index fb5d54d..652c682 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -444,6 +444,8 @@ struct tracer { #ifdef CONFIG_TRACER_MAX_TRACE bool use_max_tr; #endif + /* True if tracer cannot be enabled in kernel param */ + bool noboot; }; diff --git a/kernel/trace/trace_mmiotrace.c b/kernel/trace/trace_mmiotrace.c index cd7480d..dca78fc 100644 --- a/kernel/trace/trace_mmiotrace.c +++ b/kernel/trace/trace_mmiotrace.c @@ -282,6 +282,7 @@ static enum print_line_t mmio_print_line(struct trace_iterator *iter) .close = mmio_close, .read = mmio_read, .print_line = mmio_print_line, + .noboot = true, }; __init static int init_mmio_trace(void) -- 1.8.3.1