From patchwork Wed Feb 8 01:56:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 54130 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp3196081wrn; Tue, 7 Feb 2023 17:58:36 -0800 (PST) X-Google-Smtp-Source: AK7set+3f4XWIup4MPPpEyXL+UNyAxvJABT7jcxxwGSWaYvOc549rDdmW3AhsbyAVcJw8iddwr8V X-Received: by 2002:a17:907:8b8b:b0:8aa:f2f2:7543 with SMTP id tb11-20020a1709078b8b00b008aaf2f27543mr1069743ejc.29.1675821516644; Tue, 07 Feb 2023 17:58:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675821516; cv=none; d=google.com; s=arc-20160816; b=o8k3RKnn56gmw5sHE/w3/Ufhij56xidrXCoGtVv+6VTPEneblaUZXTYRLSJIWeeIW6 odLi2hEgQQgX2a6jt/1bKYonuI9zxt/Ithuqh7FMzcxEbo2qQQEK8pJf1N7NKsJRdYMj Fa83LIq5p6brx19HWw/rvvklgvpbpsI5tOO8WCtJvsM0emuelXD4oZcpHtk3E0KmFOAH 2di3clfSyS+bqONsa8TbmxEXcwlnqLT4v65huTKnZMhhbSRVs2YMp0OwLSlix9OCSoZD WQLXxpu96F6+6cBjFTiKPkClCrfDSoLhwDgTVtF5PI8kk8hxPVTFi8i64/LUI0RrVW/z 1Nxw== 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=9TlW7sSfv2szy4mLUqN5DF1xnt1u6BvBNupsDCRRgwI=; b=VX11IXqJIFP3Widv95vBpahbJD0Lyh1zMLMvMkLoWASZ7K1K6o3nJk4dfGCyW09qpx Gd1CcMCATOHA9PdN84edMOYyWEyJhabWFNiUfRIV9rqdIHRleSQtTlGKJ+K8V9bTWSwj RD1ZBYczVVRxGjqlNizk0E9K3jPUfVHYYfH/H+rLKjzYQO7ynTIPn/BT9+Au4yyH2cEl /vlvbEQ7rxZXXSiOUlLDGLcw4NCm1CTbCM/8MIlvjDbU86dQExQ/XzeiaLtXjwpCSqrY QdXmQydcf5O3I0jHg8yeakZIuuocvvj8XNNMruZiVcnho4e5PPTs+OJTsC/mpQAGLAly Z6iA== 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 gk21-20020a17090790d500b0087bd3f33c31si274516ejb.8.2023.02.07.17.58.14; Tue, 07 Feb 2023 17:58:36 -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 S229807AbjBHB5g (ORCPT + 99 others); Tue, 7 Feb 2023 20:57:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56892 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229670AbjBHB5d (ORCPT ); Tue, 7 Feb 2023 20:57:33 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E4A983D901 for ; Tue, 7 Feb 2023 17:57:32 -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 414776147D for ; Wed, 8 Feb 2023 01:57:32 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9E4E2C4339B; Wed, 8 Feb 2023 01:57:31 +0000 (UTC) Received: from rostedt by gandalf.local.home with local (Exim 4.96) (envelope-from ) id 1pPZiE-006dMV-20; Tue, 07 Feb 2023 20:57:30 -0500 Message-ID: <20230208015730.437670637@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 07 Feb 2023 20:56:34 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Andrew Morton , Davidlohr Bueso , Daniel Bristot de Oliveira Subject: [for-next][PATCH 01/11] tracing/osnoise: No need for schedule_hrtimeout range References: <20230208015633.791198913@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_MED,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?1757226222325504799?= X-GMAIL-MSGID: =?utf-8?q?1757226222325504799?= From: Davidlohr Bueso No slack time is being passed, just use schedule_hrtimeout(). Link: https://lore.kernel.org/linux-trace-kernel/20230123234649.17968-1-dave@stgolabs.net Signed-off-by: Davidlohr Bueso Acked-by: Daniel Bristot de Oliveira Signed-off-by: Steven Rostedt (Google) --- kernel/trace/trace_osnoise.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/trace/trace_osnoise.c b/kernel/trace/trace_osnoise.c index 210e1f168392..04f0fdae19a1 100644 --- a/kernel/trace/trace_osnoise.c +++ b/kernel/trace/trace_osnoise.c @@ -1539,7 +1539,7 @@ static void osnoise_sleep(void) wake_time = ktime_add_us(ktime_get(), interval); __set_current_state(TASK_INTERRUPTIBLE); - while (schedule_hrtimeout_range(&wake_time, 0, HRTIMER_MODE_ABS)) { + while (schedule_hrtimeout(&wake_time, HRTIMER_MODE_ABS)) { if (kthread_should_stop()) break; } From patchwork Wed Feb 8 01:56:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 54133 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp3196582wrn; Tue, 7 Feb 2023 18:00:03 -0800 (PST) X-Google-Smtp-Source: AK7set/1H6348vUbTl+CN21vQv86rmDl8KBox7GFLXVPJuEYASLNCChvRsgN78RTvHNlRa+hN+Jq X-Received: by 2002:a17:907:7e94:b0:85d:dd20:60a4 with SMTP id qb20-20020a1709077e9400b0085ddd2060a4mr7556748ejc.40.1675821603035; Tue, 07 Feb 2023 18:00:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675821603; cv=none; d=google.com; s=arc-20160816; b=OB7m4K8knhI+yU/CW1R/AJOWxsurCa+Woo7fLxwyvutYKerdQZGHkYvZLUy2ZmgX82 0wosfVgB4A3Nk0qiKP0MQVHPSHzGdZAD1t1lnJVYoDJ50J/6rC40mv8aPrvNePE/JRG8 qPsOttNX6xE4hoIpc+312YHxK0PQNlJ5hyEvQo42RG/+W6Go2oEf16AUW7mid3UpZZd2 GwW+LR9MOxEZm/e8r+YwCkUbvIeaky5esdvaOZ8SzqreY3Wi0niQu3oPw4yM9VmpJi6P 5elZkswWyQyoDJpjlqU4fjdkB/gI5/2Q7bk0f403HaXruvXbspotySXjLK3e2KEn5P14 12oQ== 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=RrgF6mmtRD7coP16fctOcr6w3BX4889eCaOpZdD7vuY=; b=taDugVKF96RCUIv4/GZ0fvCDHRiyowa5uxot/1i2lj2cXBafcRu7A6mKR9lldRBM/2 QeFwt1bJs56MO/dVg+W8afC/5CmkvAO84+OYNy/ad8Ldqt+iJcnV/ecA76iikxcamPV4 HDvZd71fTsXksx5VbfonRjePoir49Eh7+ta0xJWBRGJgD/FFxYC5QfJTWihgdGwmv3Xk AZt9JqksVMhRzzGgMKgn4ADPzJA65ivaLcScfHcxr59rYhMPCKiHIbczWKTWCDObEBIT DZEaeVAys1+RzxA/FyHO+a1etifV1Vr+Xe+gr7hj3uZ3smW4zDW6BGk2o8LydV//9Q7o CMXg== 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 25-20020a17090601d900b008aa82cc7660si202497ejj.325.2023.02.07.17.59.40; Tue, 07 Feb 2023 18:00:03 -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 S229994AbjBHB5l (ORCPT + 99 others); Tue, 7 Feb 2023 20:57:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56892 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229740AbjBHB5e (ORCPT ); Tue, 7 Feb 2023 20:57:34 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E6DCF1968F for ; Tue, 7 Feb 2023 17:57:32 -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 7F49B61485 for ; Wed, 8 Feb 2023 01:57:32 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D167EC433A4; Wed, 8 Feb 2023 01:57:31 +0000 (UTC) Received: from rostedt by gandalf.local.home with local (Exim 4.96) (envelope-from ) id 1pPZiE-006dN4-2f; Tue, 07 Feb 2023 20:57:30 -0500 Message-ID: <20230208015730.639442891@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 07 Feb 2023 20:56:35 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Andrew Morton , Jonathan Corbet , kernel test robot , Bagas Sanjaya Subject: [for-next][PATCH 02/11] tracing/histogram: Wrap remaining shell snippets in code blocks References: <20230208015633.791198913@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_MED,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?1757226313111002342?= X-GMAIL-MSGID: =?utf-8?q?1757226313111002342?= From: Bagas Sanjaya Most shell command snippets (echo/cat) and their output are already in literal code blocks. However a few still isn't wrapped, in which the htmldocs output is ugly. Wrap the remaining unwrapped snippets, while also fix recent kernel test robot warnings. Link: https://lore.kernel.org/linux-trace-kernel/20230129031402.47420-1-bagasdotme@gmail.com Cc: Masami Hiramatsu Cc: Jonathan Corbet Link: https://lore.kernel.org/linux-doc/202301290253.LU5yIxcJ-lkp@intel.com/ Fixes: 88238513bb2671 ("tracing/histogram: Document variable stacktrace") Reported-by: kernel test robot Signed-off-by: Bagas Sanjaya Signed-off-by: Steven Rostedt (Google) --- Documentation/trace/histogram.rst | 93 ++++++++++++++++--------------- 1 file changed, 47 insertions(+), 46 deletions(-) diff --git a/Documentation/trace/histogram.rst b/Documentation/trace/histogram.rst index 5c391328b9bb..8e95295e39b6 100644 --- a/Documentation/trace/histogram.rst +++ b/Documentation/trace/histogram.rst @@ -1864,7 +1864,7 @@ A histogram can now be defined for the new synthetic event:: The above shows the latency "lat" in a power of 2 grouping. Like any other event, once a histogram is enabled for the event, the -output can be displayed by reading the event's 'hist' file. +output can be displayed by reading the event's 'hist' file:: # cat /sys/kernel/debug/tracing/events/synthetic/wakeup_latency/hist @@ -1911,7 +1911,7 @@ output can be displayed by reading the event's 'hist' file. The latency values can also be grouped linearly by a given size with -the ".buckets" modifier and specify a size (in this case groups of 10). +the ".buckets" modifier and specify a size (in this case groups of 10):: # echo 'hist:keys=pid,prio,lat.buckets=10:sort=lat' >> \ /sys/kernel/debug/tracing/events/synthetic/wakeup_latency/trigger @@ -1945,7 +1945,7 @@ the ".buckets" modifier and specify a size (in this case groups of 10). To save stacktraces, create a synthetic event with a field of type "unsigned long[]" or even just "long[]". For example, to see how long a task is blocked in an -uninterruptible state: +uninterruptible state:: # cd /sys/kernel/tracing # echo 's:block_lat pid_t pid; u64 delta; unsigned long[] stack;' > dynamic_events @@ -1990,7 +1990,8 @@ uninterruptible state: => kthread+0xe9/0x110 => ret_from_fork+0x2c/0x50 -A synthetic event that has a stacktrace field may use it as a key in histogram: +A synthetic event that has a stacktrace field may use it as a key in +histogram:: # echo 'hist:delta.buckets=100,stack.stacktrace:sort=delta' > events/synthetic/block_lat/trigger # cat events/synthetic/block_lat/hist @@ -2183,11 +2184,11 @@ The following commonly-used handler.action pairs are available: wakeup_new_test($testpid) if comm=="cyclictest"' >> \ /sys/kernel/debug/tracing/events/sched/sched_wakeup_new/trigger - Or, equivalently, using the 'trace' keyword syntax: + Or, equivalently, using the 'trace' keyword syntax:: - # echo 'hist:keys=$testpid:testpid=pid:onmatch(sched.sched_wakeup_new).\ - trace(wakeup_new_test,$testpid) if comm=="cyclictest"' >> \ - /sys/kernel/debug/tracing/events/sched/sched_wakeup_new/trigger + # echo 'hist:keys=$testpid:testpid=pid:onmatch(sched.sched_wakeup_new).\ + trace(wakeup_new_test,$testpid) if comm=="cyclictest"' >> \ + /sys/kernel/debug/tracing/events/sched/sched_wakeup_new/trigger Creating and displaying a histogram based on those events is now just a matter of using the fields and new synthetic event in the @@ -2320,48 +2321,48 @@ The following commonly-used handler.action pairs are available: resulting latency, stored in wakeup_lat, exceeds the current maximum latency, a snapshot is taken. As part of the setup, all the scheduler events are also enabled, which are the events that - will show up in the snapshot when it is taken at some point: + will show up in the snapshot when it is taken at some point:: - # echo 1 > /sys/kernel/debug/tracing/events/sched/enable + # echo 1 > /sys/kernel/debug/tracing/events/sched/enable - # echo 'hist:keys=pid:ts0=common_timestamp.usecs \ - if comm=="cyclictest"' >> \ - /sys/kernel/debug/tracing/events/sched/sched_waking/trigger + # echo 'hist:keys=pid:ts0=common_timestamp.usecs \ + if comm=="cyclictest"' >> \ + /sys/kernel/debug/tracing/events/sched/sched_waking/trigger - # echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0: \ - onmax($wakeup_lat).save(next_prio,next_comm,prev_pid,prev_prio, \ - prev_comm):onmax($wakeup_lat).snapshot() \ - if next_comm=="cyclictest"' >> \ - /sys/kernel/debug/tracing/events/sched/sched_switch/trigger + # echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0: \ + onmax($wakeup_lat).save(next_prio,next_comm,prev_pid,prev_prio, \ + prev_comm):onmax($wakeup_lat).snapshot() \ + if next_comm=="cyclictest"' >> \ + /sys/kernel/debug/tracing/events/sched/sched_switch/trigger When the histogram is displayed, for each bucket the max value and the saved values corresponding to the max are displayed following the rest of the fields. If a snapshot was taken, there is also a message indicating that, - along with the value and event that triggered the global maximum: + along with the value and event that triggered the global maximum:: - # cat /sys/kernel/debug/tracing/events/sched/sched_switch/hist - { next_pid: 2101 } hitcount: 200 - max: 52 next_prio: 120 next_comm: cyclictest \ - prev_pid: 0 prev_prio: 120 prev_comm: swapper/6 + # cat /sys/kernel/debug/tracing/events/sched/sched_switch/hist + { next_pid: 2101 } hitcount: 200 + max: 52 next_prio: 120 next_comm: cyclictest \ + prev_pid: 0 prev_prio: 120 prev_comm: swapper/6 - { next_pid: 2103 } hitcount: 1326 - max: 572 next_prio: 19 next_comm: cyclictest \ - prev_pid: 0 prev_prio: 120 prev_comm: swapper/1 + { next_pid: 2103 } hitcount: 1326 + max: 572 next_prio: 19 next_comm: cyclictest \ + prev_pid: 0 prev_prio: 120 prev_comm: swapper/1 - { next_pid: 2102 } hitcount: 1982 \ - max: 74 next_prio: 19 next_comm: cyclictest \ - prev_pid: 0 prev_prio: 120 prev_comm: swapper/5 + { next_pid: 2102 } hitcount: 1982 \ + max: 74 next_prio: 19 next_comm: cyclictest \ + prev_pid: 0 prev_prio: 120 prev_comm: swapper/5 - Snapshot taken (see tracing/snapshot). Details: - triggering value { onmax($wakeup_lat) }: 572 \ - triggered by event with key: { next_pid: 2103 } + Snapshot taken (see tracing/snapshot). Details: + triggering value { onmax($wakeup_lat) }: 572 \ + triggered by event with key: { next_pid: 2103 } - Totals: - Hits: 3508 - Entries: 3 - Dropped: 0 + Totals: + Hits: 3508 + Entries: 3 + Dropped: 0 In the above case, the event that triggered the global maximum has the key with next_pid == 2103. If you look at the bucket that has @@ -2439,15 +2440,15 @@ The following commonly-used handler.action pairs are available: $cwnd variable. If the value has changed, a snapshot is taken. As part of the setup, all the scheduler and tcp events are also enabled, which are the events that will show up in the snapshot - when it is taken at some point: + when it is taken at some point:: - # echo 1 > /sys/kernel/debug/tracing/events/sched/enable - # echo 1 > /sys/kernel/debug/tracing/events/tcp/enable + # echo 1 > /sys/kernel/debug/tracing/events/sched/enable + # echo 1 > /sys/kernel/debug/tracing/events/tcp/enable - # echo 'hist:keys=dport:cwnd=snd_cwnd: \ - onchange($cwnd).save(snd_wnd,srtt,rcv_wnd): \ - onchange($cwnd).snapshot()' >> \ - /sys/kernel/debug/tracing/events/tcp/tcp_probe/trigger + # echo 'hist:keys=dport:cwnd=snd_cwnd: \ + onchange($cwnd).save(snd_wnd,srtt,rcv_wnd): \ + onchange($cwnd).snapshot()' >> \ + /sys/kernel/debug/tracing/events/tcp/tcp_probe/trigger When the histogram is displayed, for each bucket the tracked value and the saved values corresponding to that value are displayed @@ -2470,10 +2471,10 @@ The following commonly-used handler.action pairs are available: { dport: 443 } hitcount: 211 changed: 10 snd_wnd: 26960 srtt: 17379 rcv_wnd: 28800 - Snapshot taken (see tracing/snapshot). Details:: + Snapshot taken (see tracing/snapshot). Details: - triggering value { onchange($cwnd) }: 10 - triggered by event with key: { dport: 80 } + triggering value { onchange($cwnd) }: 10 + triggered by event with key: { dport: 80 } Totals: Hits: 414 From patchwork Wed Feb 8 01:56:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 54132 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp3196562wrn; Tue, 7 Feb 2023 18:00:00 -0800 (PST) X-Google-Smtp-Source: AK7set9lYM6pOyV8QJq1ymHVENPRVWiQAj5G18lcPTlafzRWcZHPSskwcDHgzWO28IL7pPtBHRBb X-Received: by 2002:a50:bb44:0:b0:4aa:d8d2:23fe with SMTP id y62-20020a50bb44000000b004aad8d223femr3275169ede.9.1675821600787; Tue, 07 Feb 2023 18:00:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675821600; cv=none; d=google.com; s=arc-20160816; b=f3GzELHLEmbjv2J+S0G0pBdtH6DN52306hACqeZs1lROGAqdBFDII+E5QsHvnfXzy6 PFr1KQFcyH/e+Twdk1GHztBRWB7trMBBeJu37crVvm4oQX4DsHgLgmcFJbwnrXG0uUO9 KG24jlfv8f04ZJ4N4DFaVfCJ5tI2sdavd51ui2yOb/zxEgJLvdCI2V94Nk9txZ70tEbM lJPd7HxfUosPWiDkI96PJ3P9sr2NhKvqniRJH3g1R34YnUcKyfDWsvnS79f9rVw9BVMK qSfkmoXbZTAypNdcRoHEDgwszlznX+gLttAZpwB1N2FDKcdJP8jafXi0CCE4SPfI3HMd rWWQ== 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=gOAIF6Gl2r9P49TEMfF9BS9xaAEB9OEkkZAJ7eB2Nq4=; b=dPdxYaoFtemyLhjOZpRV8EDNVFHa+n3SEMNFOb9JdL5zFoAw57yjmilfhK2G43kYIa xV/LHpYJn0ZQRjAPW37lpaJ+PmgLZx6W/D7wA651IkwKkhRJzNsTnnQHAl3MFRX6eJW7 YFJrAopMmj97pyQM/qxH/uIJKcBAMuT7pEERwj8MH9Rmel24cTZ8MfsDnV6GL03uUGp3 cl0N5v8BkM57kJSlqwfG+DY4N5TVhKQ9d2ekAsk0wtg+Bu8KRseFrZ2HtI4Ovwc5qad2 BEoNG1r/Z18VSl1+2Asm+5Juq1q5WUjMkrf2xyQK6FQhCLH0cN5fY/CII412tEXRIa6E bO+A== 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 ef15-20020a05640228cf00b0048463ca2e6fsi17469287edb.319.2023.02.07.17.59.36; Tue, 07 Feb 2023 18:00:00 -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 S230178AbjBHB5z (ORCPT + 99 others); Tue, 7 Feb 2023 20:57:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56890 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229817AbjBHB5g (ORCPT ); Tue, 7 Feb 2023 20:57:36 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9AFCF23675 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 ams.source.kernel.org (Postfix) with ESMTPS id 4F807B81B9E for ; Wed, 8 Feb 2023 01:57:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 05A5AC433A7; Wed, 8 Feb 2023 01:57:32 +0000 (UTC) Received: from rostedt by gandalf.local.home with local (Exim 4.96) (envelope-from ) id 1pPZiF-006dNc-07; Tue, 07 Feb 2023 20:57:31 -0500 Message-ID: <20230208015730.847877889@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 07 Feb 2023 20:56:36 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Andrew Morton , Linyu Yuan Subject: [for-next][PATCH 03/11] tracing: Acquire buffer from temparary trace sequence 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?1757226310567414795?= X-GMAIL-MSGID: =?utf-8?q?1757226310567414795?= From: Linyu Yuan there is one dwc3 trace event declare as below, DECLARE_EVENT_CLASS(dwc3_log_event, TP_PROTO(u32 event, struct dwc3 *dwc), TP_ARGS(event, dwc), TP_STRUCT__entry( __field(u32, event) __field(u32, ep0state) __dynamic_array(char, str, DWC3_MSG_MAX) ), TP_fast_assign( __entry->event = event; __entry->ep0state = dwc->ep0state; ), TP_printk("event (%08x): %s", __entry->event, dwc3_decode_event(__get_str(str), DWC3_MSG_MAX, __entry->event, __entry->ep0state)) ); the problem is when trace function called, it will allocate up to DWC3_MSG_MAX bytes from trace event buffer, but never fill the buffer during fast assignment, it only fill the buffer when output function are called, so this means if output function are not called, the buffer will never used. add __get_buf(len) which acquiree buffer from iter->tmp_seq when trace output function called, it allow user write string to acquired buffer. the mentioned dwc3 trace event will changed as below, DECLARE_EVENT_CLASS(dwc3_log_event, TP_PROTO(u32 event, struct dwc3 *dwc), TP_ARGS(event, dwc), TP_STRUCT__entry( __field(u32, event) __field(u32, ep0state) ), TP_fast_assign( __entry->event = event; __entry->ep0state = dwc->ep0state; ), TP_printk("event (%08x): %s", __entry->event, dwc3_decode_event(__get_buf(DWC3_MSG_MAX), DWC3_MSG_MAX, __entry->event, __entry->ep0state)) );. Link: https://lore.kernel.org/linux-trace-kernel/1675065249-23368-1-git-send-email-quic_linyyuan@quicinc.com Cc: Masami Hiramatsu Signed-off-by: Linyu Yuan Signed-off-by: Steven Rostedt (Google) --- include/linux/trace_seq.h | 5 +++++ include/trace/stages/stage3_trace_output.h | 3 +++ include/trace/stages/stage7_class_define.h | 1 + kernel/trace/trace_seq.c | 23 ++++++++++++++++++++++ 4 files changed, 32 insertions(+) diff --git a/include/linux/trace_seq.h b/include/linux/trace_seq.h index 0c4c7587d6c3..6be92bf559fe 100644 --- a/include/linux/trace_seq.h +++ b/include/linux/trace_seq.h @@ -95,6 +95,7 @@ extern void trace_seq_bitmask(struct trace_seq *s, const unsigned long *maskp, extern int trace_seq_hex_dump(struct trace_seq *s, const char *prefix_str, int prefix_type, int rowsize, int groupsize, const void *buf, size_t len, bool ascii); +char *trace_seq_acquire(struct trace_seq *s, unsigned int len); #else /* CONFIG_TRACING */ static inline __printf(2, 3) @@ -139,6 +140,10 @@ static inline int trace_seq_path(struct trace_seq *s, const struct path *path) { return 0; } +static inline char *trace_seq_acquire(struct trace_seq *s, unsigned int len) +{ + return NULL; +} #endif /* CONFIG_TRACING */ #endif /* _LINUX_TRACE_SEQ_H */ diff --git a/include/trace/stages/stage3_trace_output.h b/include/trace/stages/stage3_trace_output.h index 66374df61ed3..c1fb1355d309 100644 --- a/include/trace/stages/stage3_trace_output.h +++ b/include/trace/stages/stage3_trace_output.h @@ -139,3 +139,6 @@ u64 ____val = (u64)(value); \ (u32) do_div(____val, NSEC_PER_SEC); \ }) + +#undef __get_buf +#define __get_buf(len) trace_seq_acquire(p, (len)) diff --git a/include/trace/stages/stage7_class_define.h b/include/trace/stages/stage7_class_define.h index 8795429f388b..bcb960d16fc0 100644 --- a/include/trace/stages/stage7_class_define.h +++ b/include/trace/stages/stage7_class_define.h @@ -23,6 +23,7 @@ #undef __get_rel_sockaddr #undef __print_array #undef __print_hex_dump +#undef __get_buf /* * The below is not executed in the kernel. It is only what is diff --git a/kernel/trace/trace_seq.c b/kernel/trace/trace_seq.c index 9c90b3a7dce2..e5e299260d0c 100644 --- a/kernel/trace/trace_seq.c +++ b/kernel/trace/trace_seq.c @@ -403,3 +403,26 @@ int trace_seq_hex_dump(struct trace_seq *s, const char *prefix_str, return 1; } EXPORT_SYMBOL(trace_seq_hex_dump); + +/* + * trace_seq_acquire - acquire seq buffer with size len + * @s: trace sequence descriptor + * @len: size of buffer to be acquired + * + * acquire buffer with size of @len from trace_seq for output usage, + * user can fill string into that buffer. + * + * Returns start address of acquired buffer. + * + * it allow multiple usage in one trace output function call. + */ +char *trace_seq_acquire(struct trace_seq *s, unsigned int len) +{ + char *ret = trace_seq_buffer_ptr(s); + + if (!WARN_ON_ONCE(seq_buf_buffer_left(&s->seq) < len)) + seq_buf_commit(&s->seq, len); + + return ret; +} +EXPORT_SYMBOL(trace_seq_acquire); From patchwork Wed Feb 8 01:56:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 54137 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp3197466wrn; Tue, 7 Feb 2023 18:02:02 -0800 (PST) X-Google-Smtp-Source: AK7set+ziOWe+QUOkjAJamXsUBjdP4yLPrGSy7S9B5q5DsccvX61rIgJoSq9FboNY2Fn21axE7uS X-Received: by 2002:a17:906:c0c5:b0:88d:619:15fc with SMTP id bn5-20020a170906c0c500b0088d061915fcmr5528931ejb.21.1675821722087; Tue, 07 Feb 2023 18:02:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675821722; cv=none; d=google.com; s=arc-20160816; b=awEdHKXEA/p/IOhx8EcIrKZHTKEaFkI+dibKKr7KAxuKVmJA8dWZpYWsxYICcc1E9Q t8vMAtXD4nNUYJSUpzjchvnmNG1dZTB3TsdjG+fOkFjXqotyajkfiuT4FbCPeZqJ56mf ZE5VQPNKclWkGzqisHE+r8++G/ezluwmajVl5lp+4MTnQkh+9qpsP47eRNmlAWlOFY/u XUnlnDdXBpMch18Pk04tTdBgoe8xEBUSfIRJyjZ8++X3/3s+k+gQGi0ELdXuvY+MvFIc ndJQvUqSsjJXwK25QWc7JraZBydSmQwcYO5SO7UUUmd05Wln+oSUsXzzBrN1haQiqNAm 87zQ== 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=I4uuBpjzxvMsNpsbKJMcHR80deztXz5ZPmFvyE7KBn8=; b=oL9vKXKKqKe4bzAwSslO0o8wCCl3Hnlf3dbvWGyHpa409FC1ffAUO63dR+s9r3qCHC oVPh5jhTJR7G0BokmEiqjDm6CAuhgkWvbQycsjiyjQaIGWBr+Ar90COUWGc/X06gvcIl +hKpnIPvocHR1SxuQtkolHLWMPsQ7mdIZ0xGbir8Davq+n32NQ3p8/6W+YD0iexEyhym lzuZkZ1II8pM03s/mpYUmDoY4g3Gu1OrqUdjkrJBnmjTDug1fd2H+PYpj32VeoRI9a4y RxyFkufv3fbeD9eEkWkA+wgoJFF5URdazG9J44dwnFs+s4B7hmSVr0PiflcJRcIbiY3j //uA== 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 f29-20020a1709063f5d00b0078d20d71475si602308ejj.413.2023.02.07.18.01.39; Tue, 07 Feb 2023 18:02:02 -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 S230217AbjBHB6A (ORCPT + 99 others); Tue, 7 Feb 2023 20:58:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56892 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229830AbjBHB5g (ORCPT ); Tue, 7 Feb 2023 20:57:36 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C7F4E3EFF7 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 ams.source.kernel.org (Postfix) with ESMTPS id 78A57B81BA0 for ; Wed, 8 Feb 2023 01:57:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 34269C433A8; Wed, 8 Feb 2023 01:57:32 +0000 (UTC) Received: from rostedt by gandalf.local.home with local (Exim 4.96) (envelope-from ) id 1pPZiF-006dOA-0l; Tue, 07 Feb 2023 20:57:31 -0500 Message-ID: <20230208015731.055452222@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 07 Feb 2023 20:56:37 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Andrew Morton , Song Shuai Subject: [for-next][PATCH 04/11] samples: ftrace: Include the nospec-branch.h only for x86 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?1757226437842046266?= X-GMAIL-MSGID: =?utf-8?q?1757226437842046266?= From: Song Shuai When other architectures without the nospec functionality write their direct-call functions of samples/ftrace/*.c, the including of asm/nospec-branch.h must be taken care to fix the no header file found error in building process. This commit (ee3e2469b346 "x86/ftrace: Make it call depth tracking aware") file-globally includes asm/nospec-branch.h providing CALL_DEPTH_ACCOUNT for only x86 direct-call functions. It seems better to move the including to `#ifdef CONFIG_X86_64`. Link: https://lore.kernel.org/linux-trace-kernel/20230130085954.647845-1-suagrfillet@gmail.com Signed-off-by: Song Shuai Reviewed-by: Masami Hiramatsu (Google) Signed-off-by: Steven Rostedt (Google) --- samples/ftrace/ftrace-direct-modify.c | 2 +- samples/ftrace/ftrace-direct-multi-modify.c | 2 +- samples/ftrace/ftrace-direct-multi.c | 2 +- samples/ftrace/ftrace-direct-too.c | 2 +- samples/ftrace/ftrace-direct.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/samples/ftrace/ftrace-direct-modify.c b/samples/ftrace/ftrace-direct-modify.c index de5a0f67f320..d93abbcb1f4c 100644 --- a/samples/ftrace/ftrace-direct-modify.c +++ b/samples/ftrace/ftrace-direct-modify.c @@ -3,7 +3,6 @@ #include #include #include -#include extern void my_direct_func1(void); extern void my_direct_func2(void); @@ -26,6 +25,7 @@ static unsigned long my_ip = (unsigned long)schedule; #ifdef CONFIG_X86_64 #include +#include asm ( " .pushsection .text, \"ax\", @progbits\n" diff --git a/samples/ftrace/ftrace-direct-multi-modify.c b/samples/ftrace/ftrace-direct-multi-modify.c index a825dbd2c9cf..b58c594efb51 100644 --- a/samples/ftrace/ftrace-direct-multi-modify.c +++ b/samples/ftrace/ftrace-direct-multi-modify.c @@ -3,7 +3,6 @@ #include #include #include -#include extern void my_direct_func1(unsigned long ip); extern void my_direct_func2(unsigned long ip); @@ -24,6 +23,7 @@ extern void my_tramp2(void *); #ifdef CONFIG_X86_64 #include +#include asm ( " .pushsection .text, \"ax\", @progbits\n" diff --git a/samples/ftrace/ftrace-direct-multi.c b/samples/ftrace/ftrace-direct-multi.c index d955a2650605..c27cf130c319 100644 --- a/samples/ftrace/ftrace-direct-multi.c +++ b/samples/ftrace/ftrace-direct-multi.c @@ -5,7 +5,6 @@ #include #include #include -#include extern void my_direct_func(unsigned long ip); @@ -19,6 +18,7 @@ extern void my_tramp(void *); #ifdef CONFIG_X86_64 #include +#include asm ( " .pushsection .text, \"ax\", @progbits\n" diff --git a/samples/ftrace/ftrace-direct-too.c b/samples/ftrace/ftrace-direct-too.c index e13fb59a2b47..8139dce2a31c 100644 --- a/samples/ftrace/ftrace-direct-too.c +++ b/samples/ftrace/ftrace-direct-too.c @@ -4,7 +4,6 @@ #include /* for handle_mm_fault() */ #include #include -#include extern void my_direct_func(struct vm_area_struct *vma, unsigned long address, unsigned int flags); @@ -21,6 +20,7 @@ extern void my_tramp(void *); #ifdef CONFIG_X86_64 #include +#include asm ( " .pushsection .text, \"ax\", @progbits\n" diff --git a/samples/ftrace/ftrace-direct.c b/samples/ftrace/ftrace-direct.c index 1f769d0db20f..1d3d307ca33d 100644 --- a/samples/ftrace/ftrace-direct.c +++ b/samples/ftrace/ftrace-direct.c @@ -4,7 +4,6 @@ #include /* for wake_up_process() */ #include #include -#include extern void my_direct_func(struct task_struct *p); @@ -18,6 +17,7 @@ extern void my_tramp(void *); #ifdef CONFIG_X86_64 #include +#include asm ( " .pushsection .text, \"ax\", @progbits\n" From patchwork Wed Feb 8 01:56:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 54140 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp3198267wrn; Tue, 7 Feb 2023 18:03:38 -0800 (PST) X-Google-Smtp-Source: AK7set9MMLa5pq96PtNbZ5XKj1paR1DtwFy9FMvtkrrOp4yvWSYGvcP2KxkedSeoqylVlojXxe7O X-Received: by 2002:a50:a41d:0:b0:48e:c0c3:7974 with SMTP id u29-20020a50a41d000000b0048ec0c37974mr5767180edb.12.1675821818307; Tue, 07 Feb 2023 18:03:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675821818; cv=none; d=google.com; s=arc-20160816; b=Ya+eVkIlYBF+B/c92i8SX8oixK00k/Rj4yt3l/vUNYXWjuO3is6e7T1KO1DQWnvZjf ukf2DwT/ZUAZW9r7PTVaxtNibLe+ZtQwk9N8NkolkamGWcp/b5QjGfK09yVie+um3TYR UliYpxPUHEgsCVVAU+VkHUByzRANBfqlMHi39gb4+OWTTa44EOIA7VyIwsW2XsyZVc4i /+MAA4zrMK/TVvhDwDlcRmfMeQEYN4bx4YuqrNYFKNw2Qs6kEuOH2udderGbidwtk9iw n1GBRvjpe6KtzG8rxF/0oNcUrn+uutiWRKrTuLQA0jPR9bohOj6PtEljcgJ9kOu56d5f cjbg== 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=+LyZ5knzlCy3CwSjJfWQnlmebrDthUqxKUUhuwXLIxQ=; b=NMQAUKJOvCeW0EKrPA+UDaQPVp9KdDI/X84+N4Ocr+JkbeKZ+YiTyqgoFZUOLTBZIj 8XeAfbMZYMvQ+/se9K1xwuj39/P58TU71TQ7SV/9RH+kY2l5x68Aqp5N267N1DTZYNzA d4rCbNIaaPwjxhRbTeUPCXSz/IY91Lht3N0RRAzEEJ2gm4lgHHuDWOqSbO80gd5juXEN Nari99vSyAEqw59fXwxHVSDiLlM6I/kBgH3ZCAEdakZcjSW12R7QO/Om7om85lG7EK2j efEi+9z+t3sIfRidl5tIAWQUcBnZsnkvm59vPsTzm19KJ65JaKxsEBSvTZ++miXROwpB Xrxw== 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 et8-20020a056402378800b004a25229c40asi16453377edb.222.2023.02.07.18.03.15; Tue, 07 Feb 2023 18:03:38 -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 S230103AbjBHB6I (ORCPT + 99 others); Tue, 7 Feb 2023 20:58:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56936 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229831AbjBHB5g (ORCPT ); Tue, 7 Feb 2023 20:57:36 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0FAC93F283 for ; Tue, 7 Feb 2023 17:57:35 -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 ams.source.kernel.org (Postfix) with ESMTPS id B47DCB81B9C for ; Wed, 8 Feb 2023 01:57:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6DE81C4339E; Wed, 8 Feb 2023 01:57:32 +0000 (UTC) Received: from rostedt by gandalf.local.home with local (Exim 4.96) (envelope-from ) id 1pPZiF-006dOi-1P; Tue, 07 Feb 2023 20:57:31 -0500 Message-ID: <20230208015731.258171441@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 07 Feb 2023 20:56:38 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Andrew Morton , Arnd Bergmann , Mark Rutland Subject: [for-next][PATCH 05/11] ftrace: sample: avoid open-coded 64-bit division 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?1757226538869946101?= X-GMAIL-MSGID: =?utf-8?q?1757226538869946101?= From: Arnd Bergmann Calculating the average period requires a 64-bit division that leads to a link failure on 32-bit architectures: x86_64-linux-ld: samples/ftrace/ftrace-ops.o: in function `ftrace_ops_sample_init': ftrace-ops.c:(.init.text+0x23b): undefined reference to `__udivdi3' Use the div_u64() helper to do this instead. Since this is an init function that is not called frequently, the runtime overhead is going to be acceptable. Link: https://lore.kernel.org/linux-trace-kernel/20230130130246.247537-1-arnd@kernel.org Cc: Masami Hiramatsu Fixes: b56c68f705ca ("ftrace: Add sample with custom ops") Signed-off-by: Arnd Bergmann Acked-by: Mark Rutland Signed-off-by: Steven Rostedt (Google) --- samples/ftrace/ftrace-ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/ftrace/ftrace-ops.c b/samples/ftrace/ftrace-ops.c index 24deb51c7261..0c8da87ff5c3 100644 --- a/samples/ftrace/ftrace-ops.c +++ b/samples/ftrace/ftrace-ops.c @@ -223,7 +223,7 @@ static int __init ftrace_ops_sample_init(void) pr_info("Attempted %u calls to %ps in %lluns (%lluns / call)\n", nr_function_calls, tracee_relevant, - period, period / nr_function_calls); + period, div_u64(period, nr_function_calls)); if (persist) return 0; From patchwork Wed Feb 8 01:56:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 54131 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp3196561wrn; Tue, 7 Feb 2023 18:00:00 -0800 (PST) X-Google-Smtp-Source: AK7set8UUB2vCpfHtG82WE6Rh8Vq8nP2gwwZ3AwuwINOl9+FLCNo0u1midTKRO1aj6jPXB6+FNND X-Received: by 2002:a50:99c1:0:b0:49e:1f0e:e209 with SMTP id n1-20020a5099c1000000b0049e1f0ee209mr1096217edb.10.1675821600711; Tue, 07 Feb 2023 18:00:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675821600; cv=none; d=google.com; s=arc-20160816; b=H3cfnwNWERGaLs11D8U0IWSwlBqnmOAKDMgURV6++jwYlNYYQAenFrBna60+lfWOu+ SpZaMM5jBDMaNGpZqiW/63HC2UrMY7IIQbaIc8jfZ5jZ3WoTQUBPrNGEBaqaaixyND89 PEFMAC6N3MdjqmEK3/xTsG21sIHlXN+oqtkgP2VxuYMF6YC/W4Lk+Df6LeLfnZmlENZQ oY7zoUzrOLgOJkvqKp3MMi2d6xsy5TAW0uVo5lDY1FjpjusG1UPHj9WeT+53RQ96LqBb jOmf3Mfqdr80u8ZcQTAGqWMTcyBeOH7DPeHnb1uOF/53uSdFvLHMsZnJIl8v5RGR91b/ UbZQ== 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=Ih8B/f1F/LBHMpnBkyFV7B9QbzUd1oxwrv45qO83hZw=; b=DJDT+o5WFCmS02QxFyReL01m/FGEs06Bs4cKOgEpGPuC0wI2k1Pw9LLdaoWP/zcIVh gUaaV8tvMb7W4Bj9L492uDBDxMAz7ECvw9/aUwre9ML53bTCevaLCbG8801yRjcy6oQf fwW801S/TLlJDBma8U/IJ8hG9dVEAZLGRTJRhxtCP6ikgarBX9Ps6qTPtTzHUY9C9qsX U7pjeBvtR+chpgxDLx/UwgwCEkHo4a+TdOZgVik0pVwrNLMHfo0ij7OjNpqiSGnL+dwm JdKUl0VGf3hWfe/KXckhHTB6btSTLXwLqGO3XCkDcVWHHB9j2T1xcxhsjvR6PdGbPhhL 0UOQ== 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 l4-20020a056402124400b004aada67b0ebsi104490edw.510.2023.02.07.17.59.37; Tue, 07 Feb 2023 18:00:00 -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 S229910AbjBHB5j (ORCPT + 99 others); Tue, 7 Feb 2023 20:57:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56890 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229731AbjBHB5e (ORCPT ); Tue, 7 Feb 2023 20:57:34 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 91D5B3E601 for ; Tue, 7 Feb 2023 17:57:33 -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 2D02B6147F for ; Wed, 8 Feb 2023 01:57:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9B27DC433D2; Wed, 8 Feb 2023 01:57:32 +0000 (UTC) Received: from rostedt by gandalf.local.home with local (Exim 4.96) (envelope-from ) id 1pPZiF-006dPG-25; Tue, 07 Feb 2023 20:57:31 -0500 Message-ID: <20230208015731.460057881@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 07 Feb 2023 20:56:39 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Andrew Morton , Tom Rix , Mark Rutland Subject: [for-next][PATCH 06/11] samples: ftrace: Make some global variables static 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?1757226310585447519?= X-GMAIL-MSGID: =?utf-8?q?1757226310585447519?= From: Tom Rix smatch reports this representative issue samples/ftrace/ftrace-ops.c:15:14: warning: symbol 'nr_function_calls' was not declared. Should it be static? The nr_functions_calls and several other global variables are only used in ftrace-ops.c, so they should be static. Remove the instances of initializing static int to 0. Link: https://lore.kernel.org/linux-trace-kernel/20230130193708.1378108-1-trix@redhat.com Signed-off-by: Tom Rix Acked-by: Mark Rutland Signed-off-by: Steven Rostedt (Google) --- samples/ftrace/ftrace-ops.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/samples/ftrace/ftrace-ops.c b/samples/ftrace/ftrace-ops.c index 0c8da87ff5c3..68d6685c80bd 100644 --- a/samples/ftrace/ftrace-ops.c +++ b/samples/ftrace/ftrace-ops.c @@ -12,7 +12,7 @@ * Arbitrary large value chosen to be sufficiently large to minimize noise but * sufficiently small to complete quickly. */ -unsigned int nr_function_calls = 100000; +static unsigned int nr_function_calls = 100000; module_param(nr_function_calls, uint, 0); MODULE_PARM_DESC(nr_function_calls, "How many times to call the relevant tracee"); @@ -21,7 +21,7 @@ MODULE_PARM_DESC(nr_function_calls, "How many times to call the relevant tracee" * be called directly or whether it's necessary to go via the list func, which * can be significantly more expensive. */ -unsigned int nr_ops_relevant = 1; +static unsigned int nr_ops_relevant = 1; module_param(nr_ops_relevant, uint, 0); MODULE_PARM_DESC(nr_ops_relevant, "How many ftrace_ops to associate with the relevant tracee"); @@ -30,7 +30,7 @@ MODULE_PARM_DESC(nr_ops_relevant, "How many ftrace_ops to associate with the rel * tracers enabled for distinct functions can force the use of the list func * and incur overhead for all call sites. */ -unsigned int nr_ops_irrelevant = 0; +static unsigned int nr_ops_irrelevant; module_param(nr_ops_irrelevant, uint, 0); MODULE_PARM_DESC(nr_ops_irrelevant, "How many ftrace_ops to associate with the irrelevant tracee"); @@ -38,15 +38,15 @@ MODULE_PARM_DESC(nr_ops_irrelevant, "How many ftrace_ops to associate with the i * On architectures with DYNAMIC_FTRACE_WITH_REGS, saving the full pt_regs can * be more expensive than only saving the minimal necessary regs. */ -bool save_regs = false; +static bool save_regs; module_param(save_regs, bool, 0); MODULE_PARM_DESC(save_regs, "Register ops with FTRACE_OPS_FL_SAVE_REGS (save all registers in the trampoline)"); -bool assist_recursion = false; +static bool assist_recursion; module_param(assist_recursion, bool, 0); MODULE_PARM_DESC(assist_reursion, "Register ops with FTRACE_OPS_FL_RECURSION"); -bool assist_rcu = false; +static bool assist_rcu; module_param(assist_rcu, bool, 0); MODULE_PARM_DESC(assist_reursion, "Register ops with FTRACE_OPS_FL_RCU"); @@ -55,7 +55,7 @@ MODULE_PARM_DESC(assist_reursion, "Register ops with FTRACE_OPS_FL_RCU"); * overhead. Sometimes a consistency check using a more expensive tracer is * desireable. */ -bool check_count = false; +static bool check_count; module_param(check_count, bool, 0); MODULE_PARM_DESC(check_count, "Check that tracers are called the expected number of times\n"); @@ -64,7 +64,7 @@ MODULE_PARM_DESC(check_count, "Check that tracers are called the expected number * runs, but sometimes it can be useful to leave them registered so that they * can be inspected through the tracefs 'enabled_functions' file. */ -bool persist = false; +static bool persist; module_param(persist, bool, 0); MODULE_PARM_DESC(persist, "Successfully load module and leave ftrace ops registered after test completes\n"); @@ -114,8 +114,8 @@ static void ops_func_count(unsigned long ip, unsigned long parent_ip, self->count++; } -struct sample_ops *ops_relevant; -struct sample_ops *ops_irrelevant; +static struct sample_ops *ops_relevant; +static struct sample_ops *ops_irrelevant; static struct sample_ops *ops_alloc_init(void *tracee, ftrace_func_t func, unsigned long flags, int nr) @@ -163,8 +163,8 @@ static void ops_check(struct sample_ops *ops, int nr, } } -ftrace_func_t tracer_relevant = ops_func_nop; -ftrace_func_t tracer_irrelevant = ops_func_nop; +static ftrace_func_t tracer_relevant = ops_func_nop; +static ftrace_func_t tracer_irrelevant = ops_func_nop; static int __init ftrace_ops_sample_init(void) { From patchwork Wed Feb 8 01:56:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 54138 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp3197564wrn; Tue, 7 Feb 2023 18:02:12 -0800 (PST) X-Google-Smtp-Source: AK7set9Yfnuli1Vvghm5G4bdLJlCtvySSxGmTw1Z1JB/f5H7x6sEmFAH7/dAGrPdo2pZn6dfnjGp X-Received: by 2002:a17:906:478e:b0:8aa:9abe:8edd with SMTP id cw14-20020a170906478e00b008aa9abe8eddmr4618209ejc.66.1675821731884; Tue, 07 Feb 2023 18:02:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675821731; cv=none; d=google.com; s=arc-20160816; b=rm/6/OTzZSD0vZJvFICSVa504y4moCCEvbAGUh2rynR4LbJlqljtfxz7YhF2WLcWTl 3tnjFd42kM/zGXijKbpeN6It2PnsDj/H5rWXJSAwJbIPm/Be6FioDgW/aLanMvni72WB +Z/x0RrCpIKo/l9EO829IsxzNdLA4NtPztuFLZgqLZ39m1Dktg4eytMdIYW8s1lwdhOo OX2HmtGP8Qf/miGPHH4LgU6Q7vHXuolx4+5vFUeBPvx+G+OmH3QkE0teBhkDwh9kEIye h5NGKo89L9x+hQDqm8CA7drAmn4XqrK4Dl9LlD2MPZU2XWYckzbggaonFQ2aliSWw5Gb GGGw== 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=1IZinmJlHLEwqObhQLjtxL7Zip3ft2j1X0M20L6TTOk=; b=Mz0VmMI0CrXjBhy/s0gd5U+bFcYHzG/PUz40eL5umsFwzIa/UZUuhky5qlCstgn2Zb jAvE3CMl4fsiwu3eVjqoLlpNbyHlrrUmdkq+h7QDnH8wWars8XEZQJPN0R3y6jxp6mtO NT0w3JdQd0xtTuHyhiQ1MVRrBrun+yoewU36flk5loQVRpbce2GyerCo+ep13UwArq0M tDQqUkWsjxoH+D6O+OT172Y2y0FKJpC3CuE4azeFrMxAKLsA0JBIOcKg36ld7KQcdHlK Il5DG/N02WuSJIe+u877tLiFTxyJhf1IcnT9baboB+necpne1WIEyji4li9AOcWgvwGh 09lw== 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 y6-20020a170906518600b008aabf1910bdsi2678757ejk.226.2023.02.07.18.01.49; Tue, 07 Feb 2023 18:02:11 -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 S230243AbjBHB6G (ORCPT + 99 others); Tue, 7 Feb 2023 20:58:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56914 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229851AbjBHB5h (ORCPT ); Tue, 7 Feb 2023 20:57:37 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7C2A33F28C for ; Tue, 7 Feb 2023 17:57:35 -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 ams.source.kernel.org (Postfix) with ESMTPS id 24BCEB81B9B for ; Wed, 8 Feb 2023 01:57:34 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DF49CC433A0; Wed, 8 Feb 2023 01:57:32 +0000 (UTC) Received: from rostedt by gandalf.local.home with local (Exim 4.96) (envelope-from ) id 1pPZiF-006dPq-2l; Tue, 07 Feb 2023 20:57:31 -0500 Message-ID: <20230208015731.669243610@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 07 Feb 2023 20:56:40 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Andrew Morton , Tom Zanussi , kernel test robot Subject: [for-next][PATCH 07/11] tracing: Fix trace_event_raw_event_synth() if else statement 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?1757226448289930832?= X-GMAIL-MSGID: =?utf-8?q?1757226448289930832?= From: "Steven Rostedt (Google)" The test to check if the field is a stack is to be done if it is not a string. But the code had: } if (event->fields[i]->is_stack) { and not } else if (event->fields[i]->is_stack) { which would cause it to always be tested. Worse yet, this also included an "else" statement that was only to be called if the field was not a string and a stack, but this code allows it to be called if it was a string (and not a stack). Also fixed some whitespace issues. Link: https://lore.kernel.org/all/202301302110.mEtNwkBD-lkp@intel.com/ Link: https://lore.kernel.org/linux-trace-kernel/20230131095237.63e3ca8d@gandalf.local.home Cc: Tom Zanussi Fixes: 00cf3d672a9d ("tracing: Allow synthetic events to pass around stacktraces") Reported-by: kernel test robot Signed-off-by: Steven Rostedt (Google) Acked-by: Masami Hiramatsu (Google) --- kernel/trace/trace_events_synth.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/trace/trace_events_synth.c b/kernel/trace/trace_events_synth.c index adb630633f31..306c89e0ce55 100644 --- a/kernel/trace/trace_events_synth.c +++ b/kernel/trace/trace_events_synth.c @@ -564,8 +564,8 @@ static notrace void trace_event_raw_event_synth(void *__data, event->fields[i]->is_dynamic, data_size, &n_u64); data_size += len; /* only dynamic string increments */ - } if (event->fields[i]->is_stack) { - long *stack = (long *)(long)var_ref_vals[val_idx]; + } else if (event->fields[i]->is_stack) { + long *stack = (long *)(long)var_ref_vals[val_idx]; len = trace_stack(entry, event, stack, data_size, &n_u64); 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) From patchwork Wed Feb 8 01:56:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 54136 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp3196737wrn; Tue, 7 Feb 2023 18:00:25 -0800 (PST) X-Google-Smtp-Source: AK7set8FhGb/eScEptlvRbPdZ/mdLQ8CE2gANCO/12umNIAKAqOAgIAtHCBfGVwc509izRJFqhKD X-Received: by 2002:a17:907:8a03:b0:7c1:458b:a946 with SMTP id sc3-20020a1709078a0300b007c1458ba946mr7927291ejc.0.1675821625117; Tue, 07 Feb 2023 18:00:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675821625; cv=none; d=google.com; s=arc-20160816; b=TcjZta0G3VW8gGfg4X6w0J2fM3uAjfj2RJ3qOshmrLSIO8whz3q65HI9ydYlTWX80f 03fVUAjhf+oCLjMS7f0/lYXfH1Dv5x/IJPG4FfV/LsBPgzvIy0CwWjdsglcE1gWWdB26 HAUDkabBB804ciwLWkWe9+DRHKXT/Gu48fK3YDos1/aaJgeez8C3+QGzC9UXB4Cl6IdN EKAfcCHWbMlUjf/vC4LDoEFYorakSy0ynrWIDp/WoaZ1b4Zcdm6B2mxGRmN1CNYAmEPq qbyV5ETfSfKeETBHhO+tEq6MZa1GihLB0PL3dJm2ITLWtDfmCkAH/fUTYQMVFHjMeSnM 1PKw== 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=qn4v48g6vZ9kGdNbBxyYrkQHz/tjVRQGPsNR+ilEiCE=; b=hk0Lrhjb69aOhYTpKIADHVFQi4Jiso9AR0/ekCe1VVHBkmghcecxMhoMII91OLcVcf Bjxwuhp6S8HdUiGEPTptwpxkt5CmoV+KCVRws737EL3w/ZANGUI5njb0bdO8sV3TeSXJ 5Z+S7hU+VNk98YNtQJPg7urGoRNteoqTAszpt7wN+Nai4RVbESUquR3Wt4zEL7MFb2S6 zAzJ4y084dilC9l7b+zZgMIgfrIItO5LLXwUnJqlcFBXjJOSsj+WBnSMXy66fn3/1myk gPUzzW18LfHsPSyVi9eaLzE3VlINDVZPwNSWJLmCiReipDkE+grgJkvzaMnq4yZw4I2w phWg== 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 10-20020a170906208a00b008aa4e05c718si1721290ejq.419.2023.02.07.18.00.02; Tue, 07 Feb 2023 18:00:25 -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 S230165AbjBHB5t (ORCPT + 99 others); Tue, 7 Feb 2023 20:57:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56914 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229774AbjBHB5f (ORCPT ); Tue, 7 Feb 2023 20:57:35 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E6F263E606 for ; Tue, 7 Feb 2023 17:57:33 -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 63DE66148D for ; Wed, 8 Feb 2023 01:57:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3EB8BC433EF; 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-006dQy-0s; Tue, 07 Feb 2023 20:57:32 -0500 Message-ID: <20230208015732.087113146@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 07 Feb 2023 20:56:42 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Andrew Morton , Ross Zwisler Subject: [for-next][PATCH 09/11] tracing: Add enabling of events to boot instances References: <20230208015633.791198913@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_MED,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?1757226336197259421?= X-GMAIL-MSGID: =?utf-8?q?1757226336197259421?= From: "Steven Rostedt (Google)" Add the format of: trace_instance=foo,sched:sched_switch,irq_handler_entry,initcall That will create the "foo" instance and enable the sched_switch event (here were the "sched" system is explicitly specified), the irq_handler_entry event, and all events under the system initcall. Link: https://lkml.kernel.org/r/20230207173026.386114535@goodmis.org Cc: Masami Hiramatsu Cc: Andrew Morton Reviewed-by: Ross Zwisler Signed-off-by: Steven Rostedt (Google) --- Documentation/admin-guide/kernel-parameters.txt | 14 ++++++++++++++ kernel/trace/trace.c | 4 ++++ kernel/trace/trace.h | 2 ++ kernel/trace/trace_events.c | 9 ++++----- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index 9545da5ed849..40304dc3d319 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -6278,6 +6278,20 @@ /sys/kernel/tracing/instances + Events can be enabled at the time the instance is created + via: + + trace_instance=,:,: + + Note, the ":" portion is optional if the event is + unique. + + trace_instance=foo,sched:sched_switch,irq_handler_entry,initcall + + will enable the "sched_switch" event (note, the "sched:" is optional, and + the same thing would happen if it was left off). The irq_handler_entry + event, and all events under the "initcall" system. + 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 863716fcca49..5b16af9e7d30 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -10188,6 +10188,10 @@ __init static void enable_instances(void) } /* Allow user space to delete it */ trace_array_put(tr); + + while ((tok = strsep(&curr_str, ","))) { + early_enable_events(tr, tok, true); + } } } diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index d16929dd0f08..f10bf804dd2b 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -1334,6 +1334,8 @@ DECLARE_PER_CPU(int, trace_buffered_event_cnt); void trace_buffered_event_disable(void); void trace_buffered_event_enable(void); +void early_enable_events(struct trace_array *tr, char *buf, bool disable_first); + static inline void __trace_event_discard_commit(struct trace_buffer *buffer, struct ring_buffer_event *event) diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index b07931ad97de..cf3fd74fa675 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -3750,10 +3750,9 @@ static __init int event_trace_memsetup(void) return 0; } -static __init void -early_enable_events(struct trace_array *tr, bool disable_first) +__init void +early_enable_events(struct trace_array *tr, char *buf, bool disable_first) { - char *buf = bootup_event_buf; char *token; int ret; @@ -3806,7 +3805,7 @@ static __init int event_trace_enable(void) */ __trace_early_add_events(tr); - early_enable_events(tr, false); + early_enable_events(tr, bootup_event_buf, false); trace_printk_start_comm(); @@ -3834,7 +3833,7 @@ static __init int event_trace_enable_again(void) if (!tr) return -ENODEV; - early_enable_events(tr, true); + early_enable_events(tr, bootup_event_buf, true); return 0; } From patchwork Wed Feb 8 01:56:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 54139 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp3197659wrn; Tue, 7 Feb 2023 18:02:22 -0800 (PST) X-Google-Smtp-Source: AK7set+67AAeVNWGJH5T4saZuGR77nMtJ9lm1I+MzlocJ24kX+V+v8xeRRANU81CU25x5AzR5r1f X-Received: by 2002:a50:d6de:0:b0:4aa:bae3:f4bd with SMTP id l30-20020a50d6de000000b004aabae3f4bdmr5456925edj.25.1675821742685; Tue, 07 Feb 2023 18:02:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675821742; cv=none; d=google.com; s=arc-20160816; b=xY+pjQwwVmXSP87U1ziUObX6XEWCLAcPQ2BAHC1T7GadzBs+OSx27/4iOTWWLwjuYZ RYhFmFvaDFt3bZy675bxIphDpvASCUS4VSYQ08kZZMDjLJ5PcwQrTy1KVwXFV4ZnM3x/ 8QW5ocDJK63EmfBDcnA2GOwsbgTRQVE3jPcDcMjajUhsBns1PufI3Jwy2qVhVxiKwVUb 1f5H7HgN0imUkkjyo0We1B5MF0iarzHN/TeTI2tStqBC7qsFQDvfdtB/S1ybA6a+Ft47 UqH5xC+Pa50XjxqZkCjWFkk/U+IndrRdHUvABXZyqUwagaHG0EoQIX32WYZH+lRncfsC OlCQ== 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=85snBGah9UWBr59sHwuQ10+6mnZ3qY/FOHPbWh5oqfg=; b=YWbMoFnpI7iDgxKtGcgP6Abbgtdut7R1x+7mXqsNjRV1WvubwTqXDRY91OUg2nhM4h XphCGjzO5U+nv5d24EWWQUcG/kJBDgzn4MvGXbmbGoboEuoiYQtXkDXhLchQA6adQB9s mYPIsnSC74SE2nREJNTKmfHwOmJcfNeszSIOhIl2KVEyvGvDFSQ6gFbCNeIp9iCcETKD rUlMZM5LfDPxWfYXydAHy1nVN4ksRq5KJlcphqvGxVNpkXuvA+9Qe3a6ptLLOPX8sMy0 nNqUBe2tOYhh3MLU8y42BUUwXruV+ZIjKBy289e00IZXsOHT8riAOAvuzA+q/lnKBlO2 HRVw== 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 c23-20020a056402121700b004aab13261d7si10209044edw.16.2023.02.07.18.01.59; Tue, 07 Feb 2023 18:02:22 -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 S230020AbjBHB6N (ORCPT + 99 others); Tue, 7 Feb 2023 20:58:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56916 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229865AbjBHB5h (ORCPT ); Tue, 7 Feb 2023 20:57:37 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 04E433E601 for ; Tue, 7 Feb 2023 17:57:36 -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 ams.source.kernel.org (Postfix) with ESMTPS id A00ECB81BA2 for ; Wed, 8 Feb 2023 01:57:34 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 54AE9C433D2; 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-006dRX-1X; Tue, 07 Feb 2023 20:57:32 -0500 Message-ID: <20230208015732.290763896@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 07 Feb 2023 20:56:43 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Andrew Morton , Ross Zwisler Subject: [for-next][PATCH 10/11] tracing: Add trace_array_puts() to write into instance 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?1757226459583218576?= X-GMAIL-MSGID: =?utf-8?q?1757226459583218576?= From: "Steven Rostedt (Google)" Add a generic trace_array_puts() that can be used to "trace_puts()" into an allocated trace_array instance. This is just another variant of trace_array_printk(). Link: https://lkml.kernel.org/r/20230207173026.584717290@goodmis.org Cc: Masami Hiramatsu Cc: Andrew Morton Reviewed-by: Ross Zwisler Signed-off-by: Steven Rostedt (Google) --- include/linux/trace.h | 12 ++++++++++++ kernel/trace/trace.c | 27 +++++++++++++++++---------- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/include/linux/trace.h b/include/linux/trace.h index 80ffda871749..2a70a447184c 100644 --- a/include/linux/trace.h +++ b/include/linux/trace.h @@ -33,6 +33,18 @@ struct trace_array; int register_ftrace_export(struct trace_export *export); int unregister_ftrace_export(struct trace_export *export); +/** + * trace_array_puts - write a constant string into the trace buffer. + * @tr: The trace array to write to + * @str: The constant string to write + */ +#define trace_array_puts(tr, str) \ + ({ \ + str ? __trace_array_puts(tr, _THIS_IP_, str, strlen(str)) : -1; \ + }) +int __trace_array_puts(struct trace_array *tr, unsigned long ip, + const char *str, int size); + void trace_printk_init_buffers(void); __printf(3, 4) int trace_array_printk(struct trace_array *tr, unsigned long ip, diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 5b16af9e7d30..9918bf7441ed 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -1023,13 +1023,8 @@ __buffer_unlock_commit(struct trace_buffer *buffer, struct ring_buffer_event *ev ring_buffer_unlock_commit(buffer); } -/** - * __trace_puts - write a constant string into the trace buffer. - * @ip: The address of the caller - * @str: The constant string to write - * @size: The size of the string. - */ -int __trace_puts(unsigned long ip, const char *str, int size) +int __trace_array_puts(struct trace_array *tr, unsigned long ip, + const char *str, int size) { struct ring_buffer_event *event; struct trace_buffer *buffer; @@ -1037,7 +1032,7 @@ int __trace_puts(unsigned long ip, const char *str, int size) unsigned int trace_ctx; int alloc; - if (!(global_trace.trace_flags & TRACE_ITER_PRINTK)) + if (!(tr->trace_flags & TRACE_ITER_PRINTK)) return 0; if (unlikely(tracing_selftest_running || tracing_disabled)) @@ -1046,7 +1041,7 @@ int __trace_puts(unsigned long ip, const char *str, int size) alloc = sizeof(*entry) + size + 2; /* possible \n added */ trace_ctx = tracing_gen_ctx(); - buffer = global_trace.array_buffer.buffer; + buffer = tr->array_buffer.buffer; ring_buffer_nest_start(buffer); event = __trace_buffer_lock_reserve(buffer, TRACE_PRINT, alloc, trace_ctx); @@ -1068,11 +1063,23 @@ int __trace_puts(unsigned long ip, const char *str, int size) entry->buf[size] = '\0'; __buffer_unlock_commit(buffer, event); - ftrace_trace_stack(&global_trace, buffer, trace_ctx, 4, NULL); + ftrace_trace_stack(tr, buffer, trace_ctx, 4, NULL); out: ring_buffer_nest_end(buffer); return size; } +EXPORT_SYMBOL_GPL(__trace_array_puts); + +/** + * __trace_puts - write a constant string into the trace buffer. + * @ip: The address of the caller + * @str: The constant string to write + * @size: The size of the string. + */ +int __trace_puts(unsigned long ip, const char *str, int size) +{ + return __trace_array_puts(&global_trace, ip, str, size); +} EXPORT_SYMBOL_GPL(__trace_puts); /** From patchwork Wed Feb 8 01:56:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 54134 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp3196610wrn; Tue, 7 Feb 2023 18:00:07 -0800 (PST) X-Google-Smtp-Source: AK7set+nys1b9l027cbhw+rVG/BEtuJyG86hOlM63NNc/fcLWBwwr7YWd/wAXMgifPvrbGOb917V X-Received: by 2002:a17:906:478e:b0:8aa:9abe:8edd with SMTP id cw14-20020a170906478e00b008aa9abe8eddmr4610956ejc.66.1675821607256; Tue, 07 Feb 2023 18:00:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675821607; cv=none; d=google.com; s=arc-20160816; b=uXgJkbgIrCCF0nlFHZGX/l1QeP2wU+VFA9aDjAJVms4h4tRL4Z6ADzQsE+AVtOb2Q8 66yEIMkAyMmJ3jnNx//0yj9ZYyUz6689VHf2xuNclOV4Sb5h9/+bHY9xFrxO0akmf51E TuyUmdILalN8qW/ZGBB3vvzMUiRquQmY+KGRl0E97A/9betYx+ybDx3Ilvyx0AuijyZU /SOSf/hShfcHl/RghS2kIPGoi8u2oT2jx64BmCtwLX+W4167iGmV7ftb1AANj9oZySSc JYdiQMXg2PJwPswTd7yCmmxdDiWBNI55V1owcskulimDPtbW39vQ1thxr10cxv+XZChx IIjg== 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=mltzGamCfTLQ258VeSnjI3/kBYf0O2z93wMh1zder3c=; b=1G1zlco+5Tc6oPJjCuWU/yaMuFehnRibVZxLajy6etMjRQ8k7vj38K9g+pcMjOLo+y ug54SL2m7m1+GD9Bft2yLF626a7C4f5sVUwUUIJX+S8CNPeQs8IAgyJ0QY33NPzV519M QZ9L1/auljLLF5xegLhwG4KN5+sI+ixl5jwfo2q+6U+RFyFZE9vm3CfKdWjcJ7yJxOGP oqfFmqSl3I4Xz6KOczpa8MqfyjW/qfQz3MwmfQfNlRO94mohwiICeAWvNsWhRuyPDJts 5gBZe45Ytbs3zgtB2CEiiIETpUf+5YQOgaUZbv270SrWsLiBHF7Cv43mXbPLE0Y5gIxv gEVQ== 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 kb1-20020a170907924100b0087039b036ffsi19423358ejb.487.2023.02.07.17.59.44; Tue, 07 Feb 2023 18:00:07 -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 S230131AbjBHB5q (ORCPT + 99 others); Tue, 7 Feb 2023 20:57:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56916 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229781AbjBHB5f (ORCPT ); Tue, 7 Feb 2023 20:57:35 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3F1DF3D901 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 C052F60DD1 for ; Wed, 8 Feb 2023 01:57:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A0139C433EF; 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-006dS6-2C; Tue, 07 Feb 2023 20:57:32 -0500 Message-ID: <20230208015732.497961665@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 07 Feb 2023 20:56:44 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Andrew Morton , Ross Zwisler Subject: [for-next][PATCH 11/11] tracing: Allow boot instances to have snapshot buffers References: <20230208015633.791198913@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_MED,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?1757226317510088760?= X-GMAIL-MSGID: =?utf-8?q?1757226317510088760?= From: "Steven Rostedt (Google)" Add to ftrace_boot_snapshot, "=" name, where the instance will get a snapshot buffer, and will take a snapshot at the end of boot (which will save the boot traces). Link: https://lkml.kernel.org/r/20230207173026.792774721@goodmis.org Cc: Masami Hiramatsu Cc: Andrew Morton Reviewed-by: Ross Zwisler Signed-off-by: Steven Rostedt (Google) --- .../admin-guide/kernel-parameters.txt | 9 +++ kernel/trace/trace.c | 79 +++++++++++++++++-- 2 files changed, 81 insertions(+), 7 deletions(-) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index 40304dc3d319..7fa1ee4ba910 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -1532,6 +1532,15 @@ boot up that is likely to be overridden by user space start up functionality. + Optionally, the snapshot can also be defined for a tracing + instance that was created by the trace_instance= command + line parameter. + + trace_instance=foo,sched_switch ftrace_boot_snapshot=foo + + The above will cause the "foo" tracing instance to trigger + a snapshot at the end of boot up. + ftrace_dump_on_oops[=orig_cpu] [FTRACE] will dump the trace buffers on oops. If no parameter is passed, ftrace will dump diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 9918bf7441ed..97c88711f270 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -191,6 +191,9 @@ static bool snapshot_at_boot; static char boot_instance_info[COMMAND_LINE_SIZE] __initdata; static int boot_instance_index; +static char boot_snapshot_info[COMMAND_LINE_SIZE] __initdata; +static int boot_snapshot_index; + static int __init set_cmdline_ftrace(char *str) { strlcpy(bootup_tracer_buf, str, MAX_TRACER_SIZE); @@ -227,9 +230,22 @@ __setup("traceoff_on_warning", stop_trace_on_warning); static int __init boot_alloc_snapshot(char *str) { - allocate_snapshot = true; - /* We also need the main ring buffer expanded */ - ring_buffer_expanded = true; + char *slot = boot_snapshot_info + boot_snapshot_index; + int left = sizeof(boot_snapshot_info) - boot_snapshot_index; + int ret; + + if (str[0] == '=') { + str++; + if (strlen(str) >= left) + return -1; + + ret = snprintf(slot, left, "%s\t", str); + boot_snapshot_index += ret; + } else { + allocate_snapshot = true; + /* We also need the main ring buffer expanded */ + ring_buffer_expanded = true; + } return 1; } __setup("alloc_snapshot", boot_alloc_snapshot); @@ -9254,10 +9270,6 @@ static int allocate_trace_buffers(struct trace_array *tr, int size) } tr->allocated_snapshot = allocate_snapshot; - /* - * Only the top level trace array gets its snapshot allocated - * from the kernel command line. - */ allocate_snapshot = false; #endif @@ -10173,6 +10185,47 @@ ssize_t trace_parse_run_command(struct file *file, const char __user *buffer, return ret; } +#ifdef CONFIG_TRACER_MAX_TRACE +__init static bool tr_needs_alloc_snapshot(const char *name) +{ + char *test; + int len = strlen(name); + bool ret; + + if (!boot_snapshot_index) + return false; + + if (strncmp(name, boot_snapshot_info, len) == 0 && + boot_snapshot_info[len] == '\t') + return true; + + test = kmalloc(strlen(name) + 3, GFP_KERNEL); + if (!test) + return false; + + sprintf(test, "\t%s\t", name); + ret = strstr(boot_snapshot_info, test) == NULL; + kfree(test); + return ret; +} + +__init static void do_allocate_snapshot(const char *name) +{ + if (!tr_needs_alloc_snapshot(name)) + return; + + /* + * When allocate_snapshot is set, the next call to + * allocate_trace_buffers() (called by trace_array_get_by_name()) + * will allocate the snapshot buffer. That will alse clear + * this flag. + */ + allocate_snapshot = true; +} +#else +static inline void do_allocate_snapshot(const char *name) { } +#endif + __init static void enable_instances(void) { struct trace_array *tr; @@ -10188,6 +10241,9 @@ __init static void enable_instances(void) tok = strsep(&curr_str, ","); + if (IS_ENABLED(CONFIG_TRACER_MAX_TRACE)) + do_allocate_snapshot(tok); + tr = trace_array_get_by_name(tok); if (!tr) { pr_warn("Failed to create instance buffer %s\n", curr_str); @@ -10335,10 +10391,19 @@ __init static int tracer_alloc_buffers(void) void __init ftrace_boot_snapshot(void) { + struct trace_array *tr; + if (snapshot_at_boot) { tracing_snapshot(); internal_trace_puts("** Boot snapshot taken **\n"); } + + list_for_each_entry(tr, &ftrace_trace_arrays, list) { + if (tr == &global_trace) + continue; + trace_array_puts(tr, "** Boot snapshot taken **\n"); + tracing_snapshot_instance(tr); + } } void __init early_trace_init(void)