From patchwork Tue Jan 24 20:22: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: 47886 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2357890wrn; Tue, 24 Jan 2023 12:27:29 -0800 (PST) X-Google-Smtp-Source: AMrXdXsswOpMq10PO/dloj0m3lhgg7NSKiPz9ITFAkeVq4ohbkOV92JoZI3iZjNbArPXaRDptLI/ X-Received: by 2002:a17:907:d401:b0:7c0:c220:a33d with SMTP id vi1-20020a170907d40100b007c0c220a33dmr34400582ejc.9.1674592049113; Tue, 24 Jan 2023 12:27:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674592049; cv=none; d=google.com; s=arc-20160816; b=EYXm3t85xfv0TjnHS230ZndJ9MKxZ/XdU8E4IKHpPKDcU7VcGQClsdPzWz2p/2NsJp JjtWgb9aDfc0hV9UEWI4l1p5go6ZkfRznHiOZJoAaBE/yx6mXQ+0JYsATYVLC2BInNNr Ae8gPnoRnEDJ8P3203lZOyGllvrMptJPnwm8vt5U95+5H8S/brkHgtG1+MQu7H5K4MO2 i73PhL16ljHKGKTTe4gMFgG+uaWM1JbRFIofp49T+uhrB39yCJSoO81Pxy7stBWkfoIk 3DE9OtltpNmI3PUYlaUcbx/E6Ck3uGSNSGyqLy8dlgrtvk1qKIUp9tAw4HbIzWA2rdOk 0oLg== 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=NcKQPpIigo72dpZfc2Bp7RGaIMX/ItEdRHPQW9epmK0=; b=cj5ZBu4HJNYZ9i8qNCmioMjBPcn11PKy42FoZf1RigGijxpmXY51XjksAxMGGiJXqB lMqyhktK/uaQUbislNBxlHP4B0Bh0ZSR2qiTg0grQ9OJ4acDGUmRATD4YXP6z80OKq9Z zHfhH5GvxBXmfsxd2Gq5lzf6Yhv3AAiDouc0sRJUSWdKY+Lrnn9/VH3wbUqhJzLv0t/Z Jeq8uadRclm8o3ezY7JvTJmjYPiTvbToEUvtyyoSixlFECLqcoKjmkmxL0SiP6LqaMtr LaN5gaGa9GfLS0cecsBNN48DWj9CUW3H/PFwYPdIeuuHvrZ5FEOBJWZ1piwxBrsL8264 45tg== 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 fd17-20020a1709072a1100b0084d34979424si3176361ejc.334.2023.01.24.12.27.04; Tue, 24 Jan 2023 12:27:29 -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 S233542AbjAXUZ1 (ORCPT + 99 others); Tue, 24 Jan 2023 15:25:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39320 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233101AbjAXUZV (ORCPT ); Tue, 24 Jan 2023 15:25:21 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A7FEE113FF; Tue, 24 Jan 2023 12:25:19 -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 497B3B816B7; Tue, 24 Jan 2023 20:25:18 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7B5BC433D2; Tue, 24 Jan 2023 20:25:16 +0000 (UTC) Received: from rostedt by gandalf.local.home with local (Exim 4.96) (envelope-from ) id 1pKPr1-003dzZ-2k; Tue, 24 Jan 2023 15:25:15 -0500 Message-ID: <20230124202515.716458410@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 24 Jan 2023 15:22:39 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org Cc: Masami Hiramatsu , Andrew Morton , Linyu Yuan , Peter Zijlstra , Alexei Starovoitov , Daniel Borkmann , bpf@vger.kernel.org, Frederic Weisbecker , Arnaldo Carvalho de Melo , Peter Zijlstra , Ingo Molnar Subject: [PATCH 1/2] perf/tracing: Use stage6 of tracing to not duplicate macros References: <20230124202238.563854686@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?1755937032428823298?= X-GMAIL-MSGID: =?utf-8?q?1755937032428823298?= From: "Steven Rostedt (Google)" The perf events are created by the same macro magic as tracefs trace events are. But to hook into perf, it has its own code. It duplicates many of the same macros as the tracefs macros and this is an issue because it misses bug fixes as well as any new enhancements that come with the other trace macros. As the trace macros have been put into their own staging files, have perf take advantage of this and use the tracefs stage 6 macros that the "fast assign" portion of the trace event macro uses. Link: https://lore.kernel.org/lkml/1671181385-5719-1-git-send-email-quic_linyyuan@quicinc.com/ Cc: Frederic Weisbecker Cc: Arnaldo Carvalho de Melo Cc: Peter Zijlstra Cc: Ingo Molnar Reported-by: Linyu Yuan Signed-off-by: Steven Rostedt (Google) Acked-by: Peter Zijlstra (Intel) --- include/trace/perf.h | 46 +------------------- include/trace/stages/stage6_event_callback.h | 3 ++ 2 files changed, 4 insertions(+), 45 deletions(-) diff --git a/include/trace/perf.h b/include/trace/perf.h index 8f3bf1e17707..2c11181c82e0 100644 --- a/include/trace/perf.h +++ b/include/trace/perf.h @@ -4,51 +4,7 @@ #ifdef CONFIG_PERF_EVENTS -#undef __entry -#define __entry entry - -#undef __get_dynamic_array -#define __get_dynamic_array(field) \ - ((void *)__entry + (__entry->__data_loc_##field & 0xffff)) - -#undef __get_dynamic_array_len -#define __get_dynamic_array_len(field) \ - ((__entry->__data_loc_##field >> 16) & 0xffff) - -#undef __get_str -#define __get_str(field) ((char *)__get_dynamic_array(field)) - -#undef __get_bitmask -#define __get_bitmask(field) (char *)__get_dynamic_array(field) - -#undef __get_cpumask -#define __get_cpumask(field) (char *)__get_dynamic_array(field) - -#undef __get_sockaddr -#define __get_sockaddr(field) ((struct sockaddr *)__get_dynamic_array(field)) - -#undef __get_rel_dynamic_array -#define __get_rel_dynamic_array(field) \ - ((void *)__entry + \ - offsetof(typeof(*__entry), __rel_loc_##field) + \ - sizeof(__entry->__rel_loc_##field) + \ - (__entry->__rel_loc_##field & 0xffff)) - -#undef __get_rel_dynamic_array_len -#define __get_rel_dynamic_array_len(field) \ - ((__entry->__rel_loc_##field >> 16) & 0xffff) - -#undef __get_rel_str -#define __get_rel_str(field) ((char *)__get_rel_dynamic_array(field)) - -#undef __get_rel_bitmask -#define __get_rel_bitmask(field) (char *)__get_rel_dynamic_array(field) - -#undef __get_rel_cpumask -#define __get_rel_cpumask(field) (char *)__get_rel_dynamic_array(field) - -#undef __get_rel_sockaddr -#define __get_rel_sockaddr(field) ((struct sockaddr *)__get_rel_dynamic_array(field)) +#include "stages/stage6_event_callback.h" #undef __perf_count #define __perf_count(c) (__count = (c)) diff --git a/include/trace/stages/stage6_event_callback.h b/include/trace/stages/stage6_event_callback.h index 49c32394b53f..919b1a4da980 100644 --- a/include/trace/stages/stage6_event_callback.h +++ b/include/trace/stages/stage6_event_callback.h @@ -2,6 +2,9 @@ /* Stage 6 definitions for creating trace events */ +/* Reuse some of the stage 3 macros */ +#include "stage3_trace_output.h" + #undef __entry #define __entry entry From patchwork Tue Jan 24 20:22: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: 47885 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2357873wrn; Tue, 24 Jan 2023 12:27:26 -0800 (PST) X-Google-Smtp-Source: AMrXdXuXpkIjHZiigg6Hbc9eG1YC3Z6RCvJs7ZZAG/j0GPSJIKZGSYjc5SQBpryG1IfF0WYSA7d3 X-Received: by 2002:a17:906:16c6:b0:877:6141:9b16 with SMTP id t6-20020a17090616c600b0087761419b16mr6194966ejd.54.1674592046194; Tue, 24 Jan 2023 12:27:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674592046; cv=none; d=google.com; s=arc-20160816; b=NLGdVKLN4gOMtHSVGgAKy6CjRJMBhHmvbUeceNM6BTTqU8a6qx/Njq2JEy2unw2GbT RqQIdl4Qyz40H1V8GilzKHG1qiFtAthxh/ciDF7BPb3O1mxqAU/VOS4dG42JQiFBs+n8 8ByEsL7HX2pCX5CF8ZnRPNhlmIwmq5/Ikv77+ketmiIfcJ1OpUZmQ2aodhRlOgMIiISx OpGlJAQD+KJ25xZSgfP3lSicjeCpFL2SZAUgv3Yv9pGuvcRHunI+3CjTZ+VrPxFtcUMi M53me/cLSkWusrX61dZq0w1ie0l+7fs6cC09QfC3b1u2Ub7z061FsQqNyFFnz+OwnWHp ORrA== 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=4dzRrDoQgwraLjAlmPKg1yXIXY0JS7hC++fv2VXKpTw=; b=vf0cUUPWgqLKrCMj63oUDyBjtG1MxgXAqzWDMGQY8okVr2BJxBgLbq7qBX77Y9EsGA tlX7ZLzqX/sl2ZBssKMqJQXAWBDKpwe1BrbGZV7PnurZhak+LypAZK0CFktdq4TSSe0K q32p5CNQAfK3gBG6iO+fbIiZPKtVfWu1l1TrgQjjjQid3ZlM9PtXtbZgrqWdVgo323W2 wrGX+jTbl5xKnKgCCUziiiuQbbSzxnyjO0QjdThMhY9w8rKfuBxs/Tjuz3FtlLvoBO6v O4pBnXoxviyughKIiWuqccBA/YqLVaxTrrupwqLNkeHY0rKeMya/StKRbRqmZRd9nV3s DBJA== 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 wi6-20020a170906fd4600b007c08bfea548si3188653ejb.382.2023.01.24.12.27.01; Tue, 24 Jan 2023 12:27:26 -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 S233370AbjAXUZY (ORCPT + 99 others); Tue, 24 Jan 2023 15:25:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39320 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229932AbjAXUZU (ORCPT ); Tue, 24 Jan 2023 15:25:20 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A7E5E868B; Tue, 24 Jan 2023 12:25:19 -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 4F262B816CE; Tue, 24 Jan 2023 20:25:18 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0A2F3C433A1; Tue, 24 Jan 2023 20:25:17 +0000 (UTC) Received: from rostedt by gandalf.local.home with local (Exim 4.96) (envelope-from ) id 1pKPr2-003e04-02; Tue, 24 Jan 2023 15:25:16 -0500 Message-ID: <20230124202515.873075730@goodmis.org> User-Agent: quilt/0.66 Date: Tue, 24 Jan 2023 15:22:40 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org Cc: Masami Hiramatsu , Andrew Morton , Linyu Yuan , Peter Zijlstra , Alexei Starovoitov , Daniel Borkmann , bpf@vger.kernel.org Subject: [PATCH 2/2] bpf/tracing: Use stage6 of tracing to not duplicate macros References: <20230124202238.563854686@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?1755937029531826188?= X-GMAIL-MSGID: =?utf-8?q?1755937029531826188?= From: "Steven Rostedt (Google)" The bpf events are created by the same macro magic as tracefs trace events are. But to hook into bpf, it has its own code. It duplicates many of the same macros as the tracefs macros and this is an issue because it misses bug fixes as well as any new enhancements that come with the other trace macros. As the trace macros have been put into their own staging files, have bpf take advantage of this and use the tracefs stage 6 macros that the "fast ssign" portion of the trace event macro uses. Link: https://lore.kernel.org/lkml/1671181385-5719-1-git-send-email-quic_linyyuan@quicinc.com/ Cc: bpf@vger.kernel.org Cc: Alexei Starovoitov Cc: Daniel Borkmann Reported-by: Linyu Yuan Signed-off-by: Steven Rostedt (Google) Acked-by: Alexei Starovoitov --- include/trace/bpf_probe.h | 45 +-------------------------------------- 1 file changed, 1 insertion(+), 44 deletions(-) diff --git a/include/trace/bpf_probe.h b/include/trace/bpf_probe.h index 155c495b89ea..1f7fc1fc590c 100644 --- a/include/trace/bpf_probe.h +++ b/include/trace/bpf_probe.h @@ -4,50 +4,7 @@ #ifdef CONFIG_BPF_EVENTS -#undef __entry -#define __entry entry - -#undef __get_dynamic_array -#define __get_dynamic_array(field) \ - ((void *)__entry + (__entry->__data_loc_##field & 0xffff)) - -#undef __get_dynamic_array_len -#define __get_dynamic_array_len(field) \ - ((__entry->__data_loc_##field >> 16) & 0xffff) - -#undef __get_str -#define __get_str(field) ((char *)__get_dynamic_array(field)) - -#undef __get_bitmask -#define __get_bitmask(field) (char *)__get_dynamic_array(field) - -#undef __get_cpumask -#define __get_cpumask(field) (char *)__get_dynamic_array(field) - -#undef __get_sockaddr -#define __get_sockaddr(field) ((struct sockaddr *)__get_dynamic_array(field)) - -#undef __get_rel_dynamic_array -#define __get_rel_dynamic_array(field) \ - ((void *)(&__entry->__rel_loc_##field) + \ - sizeof(__entry->__rel_loc_##field) + \ - (__entry->__rel_loc_##field & 0xffff)) - -#undef __get_rel_dynamic_array_len -#define __get_rel_dynamic_array_len(field) \ - ((__entry->__rel_loc_##field >> 16) & 0xffff) - -#undef __get_rel_str -#define __get_rel_str(field) ((char *)__get_rel_dynamic_array(field)) - -#undef __get_rel_bitmask -#define __get_rel_bitmask(field) (char *)__get_rel_dynamic_array(field) - -#undef __get_rel_cpumask -#define __get_rel_cpumask(field) (char *)__get_rel_dynamic_array(field) - -#undef __get_rel_sockaddr -#define __get_rel_sockaddr(field) ((struct sockaddr *)__get_rel_dynamic_array(field)) +#include "stages/stage6_event_callback.h" #undef __perf_count #define __perf_count(c) (c)