From patchwork Wed Feb 8 01:56:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 54135 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp3196697wrn; Tue, 7 Feb 2023 18:00:19 -0800 (PST) X-Google-Smtp-Source: AK7set80cDdzHov9anwQG39O9hFFxAHCMTf2BK6S9WShk+VkpJFlbYXjneIMpgt5NnW1dyAas/vu X-Received: by 2002:a17:907:2cc9:b0:88d:ba89:1839 with SMTP id hg9-20020a1709072cc900b0088dba891839mr1173338ejc.10.1675821619794; Tue, 07 Feb 2023 18:00:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675821619; cv=none; d=google.com; s=arc-20160816; b=eFLiEMVDMCXodblgCR8wwZUF2DGqXp15ZgB2gF7usZyDaNqOBT4Wigfch1Znj3b8uP xpjz9xbn9cPDds2P2Llg3W+lw8giYiCdnpn7JAguQMDVnDWFj1/376WkR3l4n9Ew13Ib CPcpmMmJlHLF0pDwbPqVpokz+E6+FxlARdcjqI7YLB+W4Vwz73Gj1K8RSjk0ahLg9CL0 j7Bcg92l7LJOSUo41bPEICX1v9Os9iKscTnU0+Roq8mnCwODC6jLyXOnkHq5FGNNz27t 44lj3isnS6wkA94KQn08MQZZKkru4N5O0peqH2gzYp09qvFo+CYSiDOABoPk+L59mbjm i8jQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=stpMNfvn3QZpcxB29DFY4QHFTTiwvKUfq3w14zyHSJA=; b=g8KYYFcV7vtk745VwMZwAW6S4qdNqWg8UaHZ1u1WocSlrk5wJiXibRV1lHv0htyrmR xtoCW3pVJ1qOTCL1mB3QPq/uespp5yKl/OOzWH+UCX1agvNlwg6B12dSF++xXqpeAjoV y5DCwLOwDqzz6McttOmtnysWejJ0KYKvqjPSdOIEzrDIKd2jO6mVNV6d54jF0643mRVV SUXbKg9fDny1pzhY/xLvNgfCFlJQm7ixEnMzT6Lgt5ah8oV1lcNU0PUAepJIBoZ4GSnP y+b/ft/cao0NqlPvqqGEkff5TpSdHbjd5qN3TtSwhm8IHtaGw1dYIGha4BROSANxmYlH sL+w== ARC-Authentication-Results: i=1; mx.google.com; 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 Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id vz14-20020a17090704ce00b008838fdcfbbesi16569730ejb.22.2023.02.07.17.59.56; Tue, 07 Feb 2023 18:00:19 -0800 (PST) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230168AbjBHB5x (ORCPT + 99 others); Tue, 7 Feb 2023 20:57:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56918 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229796AbjBHB5f (ORCPT ); Tue, 7 Feb 2023 20:57:35 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3FCF13EFE5 for ; Tue, 7 Feb 2023 17:57:34 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 96BDD61460 for ; Wed, 8 Feb 2023 01:57:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 105C7C433AC; Wed, 8 Feb 2023 01:57:33 +0000 (UTC) Received: from rostedt by gandalf.local.home with local (Exim 4.96) (envelope-from ) id 1pPZiG-006dQO-0D; Tue, 07 Feb 2023 20:57:32 -0500 Message-ID: <20230208015731.877487562@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 07 Feb 2023 20:56:41 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Andrew Morton , Randy Dunlap , Ross Zwisler Subject: [for-next][PATCH 08/11] tracing: Add creation of instances at boot command line References: <20230208015633.791198913@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-6.7 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_HI,SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1757226330846271323?= X-GMAIL-MSGID: =?utf-8?q?1757226330846271323?= From: "Steven Rostedt (Google)" Add kernel command line to add tracing instances. This only creates instances at boot but still does not enable any events to them. Later changes will extend this command line to add enabling of events, filters, and triggers. As well as possibly redirecting trace_printk()! Link: https://lkml.kernel.org/r/20230207173026.186210158@goodmis.org Cc: Randy Dunlap Cc: Masami Hiramatsu Cc: Andrew Morton Reviewed-by: Ross Zwisler Signed-off-by: Steven Rostedt (Google) --- .../admin-guide/kernel-parameters.txt | 6 +++ kernel/trace/trace.c | 50 +++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index 6cfa6e3996cf..9545da5ed849 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -6272,6 +6272,12 @@ comma-separated list of trace events to enable. See also Documentation/trace/events.rst + trace_instance=[instance-info] + [FTRACE] Create a ring buffer instance early in boot up. + This will be listed in: + + /sys/kernel/tracing/instances + trace_options=[option-list] [FTRACE] Enable or disable tracer options at boot. The option-list is a comma delimited list of options diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index b90eecd27dfc..863716fcca49 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -49,6 +49,8 @@ #include #include +#include /* COMMAND_LINE_SIZE */ + #include "trace.h" #include "trace_output.h" @@ -186,6 +188,9 @@ static char *default_bootup_tracer; static bool allocate_snapshot; static bool snapshot_at_boot; +static char boot_instance_info[COMMAND_LINE_SIZE] __initdata; +static int boot_instance_index; + static int __init set_cmdline_ftrace(char *str) { strlcpy(bootup_tracer_buf, str, MAX_TRACER_SIZE); @@ -239,6 +244,23 @@ static int __init boot_snapshot(char *str) __setup("ftrace_boot_snapshot", boot_snapshot); +static int __init boot_instance(char *str) +{ + char *slot = boot_instance_info + boot_instance_index; + int left = sizeof(boot_instance_info) - boot_instance_index; + int ret; + + if (strlen(str) >= left) + return -1; + + ret = snprintf(slot, left, "%s\t", str); + boot_instance_index += ret; + + return 1; +} +__setup("trace_instance=", boot_instance); + + static char trace_boot_options_buf[MAX_TRACER_SIZE] __initdata; static int __init set_trace_boot_options(char *str) @@ -10144,6 +10166,31 @@ ssize_t trace_parse_run_command(struct file *file, const char __user *buffer, return ret; } +__init static void enable_instances(void) +{ + struct trace_array *tr; + char *curr_str; + char *str; + char *tok; + + /* A tab is always appended */ + boot_instance_info[boot_instance_index - 1] = '\0'; + str = boot_instance_info; + + while ((curr_str = strsep(&str, "\t"))) { + + tok = strsep(&curr_str, ","); + + tr = trace_array_get_by_name(tok); + if (!tr) { + pr_warn("Failed to create instance buffer %s\n", curr_str); + continue; + } + /* Allow user space to delete it */ + trace_array_put(tr); + } +} + __init static int tracer_alloc_buffers(void) { int ring_buf_size; @@ -10302,6 +10349,9 @@ void __init early_trace_init(void) void __init trace_init(void) { trace_event_init(); + + if (boot_instance_index) + enable_instances(); } __init static void clear_boot_tracer(void)