From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 39422C433EF for ; Thu, 24 Feb 2022 09:33:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229746AbiBXJeP (ORCPT ); Thu, 24 Feb 2022 04:34:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49300 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232798AbiBXJdx (ORCPT ); Thu, 24 Feb 2022 04:33:53 -0500 Received: from mail-pj1-x1036.google.com (mail-pj1-x1036.google.com [IPv6:2607:f8b0:4864:20::1036]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1C04726A39E for ; Thu, 24 Feb 2022 01:33:23 -0800 (PST) Received: by mail-pj1-x1036.google.com with SMTP id iq13-20020a17090afb4d00b001bc4437df2cso1546076pjb.2 for ; Thu, 24 Feb 2022 01:33:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Um2hOoO992A8z0y3YtWZVlugWm1fUhrmcXQ/7RYGwh8=; b=dmY9TiLAQ/Sks9iO7V4G62Iq0F4qlBMW21+hDyL33W+fC59uEKCeH1kQPz7H/qXr4X SvVBePgkVfp2+ZdtGoFrz4RZA/MnbhKe1Y+gZUU8kHjNRYAdc+x2DtDHGt3jwK9Cb00C TkG5V3K39mgV+oebLPqYz8Hv/fUqlOzTKV7wyjPfam74HRRaVwDI7B29oSg2sxF4/xTS np6kqdrSTbTA3AohcQZa4LYTE0N5FePEQb0d0FnaZdZkN0Kn0Sn2o1Ce6tFhYruXHP2Q 8nmbW3JYmXV0GJJDCQj3unSGk3/Cwdu+a9DjeDZp2/Fy96EP0/UCgyNTa256oPuvM3oB Vgkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Um2hOoO992A8z0y3YtWZVlugWm1fUhrmcXQ/7RYGwh8=; b=h1lUJsGUAHfF28f63cqi4NXMb5056811/rHYkhfe331SZnyatMIF2JBZR2/hapxS7a M3BiWterxHcCBbysHHEB89sWOHeIEUllfaKM/akGm/9GUs6YU4GeNQeaWXG2Dslq0ewa fogfn3hdSWUagB35k219fahxSlxJMtfHnXxEHt45weO5UWvtni1tChxxC4ww3KtBiAaE yAk+0XAcru8YsXwHDsWtH9qney1MGGh9leO2GAHSebPpzctNUTRpHT3zeofhG1Ql/MBX JoOnBr2J1pWAfhpbP62DepTp+vG3E7gnM5HCvv62IWjqzIvTJ3JPAxY5lqdiKn2R5gYE 9n9A== X-Gm-Message-State: AOAM53176vKfcjPKADi9auTmiNenDc52nyDbIJEWGPm/jukOlfxxIMIH wbVOYtz8duLVPYzj/gTCIwc9zQ== X-Google-Smtp-Source: ABdhPJxLfTLxRibEEIi3LQRH2mR/4H/gW2oqwevUc7iY2J2LFlnQXH9WaCZ0SWn98k92VCGYf8fjjQ== X-Received: by 2002:a17:90a:4891:b0:1b9:81c:8774 with SMTP id b17-20020a17090a489100b001b9081c8774mr1930738pjh.8.1645695202689; Thu, 24 Feb 2022 01:33:22 -0800 (PST) Received: from C02CV1DAMD6P.bytedance.net ([139.177.225.251]) by smtp.gmail.com with ESMTPSA id 13sm2530988pfx.122.2022.02.24.01.33.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 01:33:22 -0800 (PST) From: Chengming Zhou To: rostedt@goodmis.org, mark.rutland@arm.com, mingo@redhat.com, tglx@linutronix.de, catalin.marinas@arm.com, will@kernel.org, dave.hansen@linux.intel.com, broonie@kernel.org Cc: x86@kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, songmuchun@bytedance.com, qirui.001@bytedance.com, Chengming Zhou Subject: [PATCH v3 2/3] x86/ftrace: cleanup graph tracer Date: Thu, 24 Feb 2022 17:32:50 +0800 Message-Id: <20220224093251.49971-2-zhouchengming@bytedance.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220224093251.49971-1-zhouchengming@bytedance.com> References: <20220224093251.49971-1-zhouchengming@bytedance.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Put CONFIG_DYNAMIC_FTRACE related code after prepare_ftrace_return(), in which we define ftrace_graph_func() for graph_ops in DYNAMIC_FTRACE_WITH_ARGS case, then define ftrace_graph_caller enable and disable functions in the #else case to override. Since ftrace_graph_caller enable and disable functions have weak versions in Ftrace core code, we don't need to override them in the DYNAMIC_FTRACE_WITH_ARGS case. This patch is just a cleanup, doesn't have functional changes actually. Signed-off-by: Chengming Zhou --- arch/x86/kernel/ftrace.c | 78 +++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 46 deletions(-) diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c index 7cc540e6de0c..e49c9d3e986b 100644 --- a/arch/x86/kernel/ftrace.c +++ b/arch/x86/kernel/ftrace.c @@ -583,51 +583,6 @@ void arch_ftrace_trampoline_free(struct ftrace_ops *ops) #endif /* CONFIG_DYNAMIC_FTRACE */ #ifdef CONFIG_FUNCTION_GRAPH_TRACER - -#ifdef CONFIG_DYNAMIC_FTRACE - -#ifndef CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS -extern void ftrace_graph_call(void); -static const char *ftrace_jmp_replace(unsigned long ip, unsigned long addr) -{ - return text_gen_insn(JMP32_INSN_OPCODE, (void *)ip, (void *)addr); -} - -static int ftrace_mod_jmp(unsigned long ip, void *func) -{ - const char *new; - - new = ftrace_jmp_replace(ip, (unsigned long)func); - text_poke_bp((void *)ip, new, MCOUNT_INSN_SIZE, NULL); - return 0; -} - -int ftrace_enable_ftrace_graph_caller(void) -{ - unsigned long ip = (unsigned long)(&ftrace_graph_call); - - return ftrace_mod_jmp(ip, &ftrace_graph_caller); -} - -int ftrace_disable_ftrace_graph_caller(void) -{ - unsigned long ip = (unsigned long)(&ftrace_graph_call); - - return ftrace_mod_jmp(ip, &ftrace_stub); -} -#else /* !CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS */ -int ftrace_enable_ftrace_graph_caller(void) -{ - return 0; -} - -int ftrace_disable_ftrace_graph_caller(void) -{ - return 0; -} -#endif /* CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS */ -#endif /* !CONFIG_DYNAMIC_FTRACE */ - /* * Hook the return address and push it in the stack of return addrs * in current thread info. @@ -666,6 +621,8 @@ void prepare_ftrace_return(unsigned long ip, unsigned long *parent, ftrace_test_recursion_unlock(bit); } +#ifdef CONFIG_DYNAMIC_FTRACE + #ifdef CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS void ftrace_graph_func(unsigned long ip, unsigned long parent_ip, struct ftrace_ops *op, struct ftrace_regs *fregs) @@ -675,6 +632,35 @@ void ftrace_graph_func(unsigned long ip, unsigned long parent_ip, prepare_ftrace_return(ip, (unsigned long *)stack, 0); } -#endif +#else +extern void ftrace_graph_call(void); +static const char *ftrace_jmp_replace(unsigned long ip, unsigned long addr) +{ + return text_gen_insn(JMP32_INSN_OPCODE, (void *)ip, (void *)addr); +} +static int ftrace_mod_jmp(unsigned long ip, void *func) +{ + const char *new; + + new = ftrace_jmp_replace(ip, (unsigned long)func); + text_poke_bp((void *)ip, new, MCOUNT_INSN_SIZE, NULL); + return 0; +} + +int ftrace_enable_ftrace_graph_caller(void) +{ + unsigned long ip = (unsigned long)(&ftrace_graph_call); + + return ftrace_mod_jmp(ip, &ftrace_graph_caller); +} + +int ftrace_disable_ftrace_graph_caller(void) +{ + unsigned long ip = (unsigned long)(&ftrace_graph_call); + + return ftrace_mod_jmp(ip, &ftrace_stub); +} +#endif /* CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS */ +#endif /* CONFIG_DYNAMIC_FTRACE */ #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ -- 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3D913C433F5 for ; Thu, 24 Feb 2022 09:35:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ZUdQsbfrvVYqqPf2BOP6UBpM4W82MQzonkJ0XEVf1mU=; b=UwCdw7MXEbuvgg dmPICLwLlqDvEFxFWBnFiooJZPnKUnUcQ0oOQ4oWSrol7uCaROQOSbL5h+JjI9OuiAAdH4ivt4APF RTD4EJHRjrzOv3xgPX/1Uh3FdmuvcD8cIf4p6hDLaVj2e3Xvx38ijkxYNR94KFjux02xQ4zDudkSF iKgPMBVOBKm1zF2Bza3mx8OJLLXnYiv/rhdZE9wl0VBEMsDzMuNAPYCiqg6NCoODdZ47NdMVRsfpg DA66NJFcRujRjtxWA1uLjjf7DE8Sv66Up16Z8S00Z2o9CFsGSgGGy40YeRmUoqXu7BHGwuFHjnuw4 81Od3YUQTx29I3Y0n6Rg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nNAVu-0006uk-Qd; Thu, 24 Feb 2022 09:34:19 +0000 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nNAV1-0006ZG-QC for linux-arm-kernel@lists.infradead.org; Thu, 24 Feb 2022 09:33:25 +0000 Received: by mail-pl1-x629.google.com with SMTP id bd1so1158868plb.13 for ; Thu, 24 Feb 2022 01:33:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Um2hOoO992A8z0y3YtWZVlugWm1fUhrmcXQ/7RYGwh8=; b=dmY9TiLAQ/Sks9iO7V4G62Iq0F4qlBMW21+hDyL33W+fC59uEKCeH1kQPz7H/qXr4X SvVBePgkVfp2+ZdtGoFrz4RZA/MnbhKe1Y+gZUU8kHjNRYAdc+x2DtDHGt3jwK9Cb00C TkG5V3K39mgV+oebLPqYz8Hv/fUqlOzTKV7wyjPfam74HRRaVwDI7B29oSg2sxF4/xTS np6kqdrSTbTA3AohcQZa4LYTE0N5FePEQb0d0FnaZdZkN0Kn0Sn2o1Ce6tFhYruXHP2Q 8nmbW3JYmXV0GJJDCQj3unSGk3/Cwdu+a9DjeDZp2/Fy96EP0/UCgyNTa256oPuvM3oB Vgkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Um2hOoO992A8z0y3YtWZVlugWm1fUhrmcXQ/7RYGwh8=; b=axe1U22CLD10Bt0VaJZdneaShz7PMMIH3tlyDz2WaTTIWBAtLkYHixcMyNx9WprYGF 6e/d3g7LPydsvPgdD1CnSOtZ8RPUcVdwjOoTcpfGjDfeQaTQ8mfRmBmbizRtVLfFDxAG 4cmbdNssJpYeAIuVt7pdNhT82qCe7oCz/SnhkLoTyv5l0ud/rnOqym2U2NYA/vp2QFUW j+iCneE7brgKAILRfKmZmTSG137hyb44oHLJQl3vqMeBNPICGA35b2WCctciB66UBJX6 fADpXOBP9c5yj/91OJnpM+NQ6y7T4fZgkgrKTmiMOIFuA/IbZ48crWobrClKMjrEDhCu C81g== X-Gm-Message-State: AOAM530bdpTZ99N374d0rXBTKXiv1l4p6BWj/qT9tCqoFSuWuJU9ky2P pH6QH7BvcTSPiyWLCPGdB+4RiQ== X-Google-Smtp-Source: ABdhPJxLfTLxRibEEIi3LQRH2mR/4H/gW2oqwevUc7iY2J2LFlnQXH9WaCZ0SWn98k92VCGYf8fjjQ== X-Received: by 2002:a17:90a:4891:b0:1b9:81c:8774 with SMTP id b17-20020a17090a489100b001b9081c8774mr1930738pjh.8.1645695202689; Thu, 24 Feb 2022 01:33:22 -0800 (PST) Received: from C02CV1DAMD6P.bytedance.net ([139.177.225.251]) by smtp.gmail.com with ESMTPSA id 13sm2530988pfx.122.2022.02.24.01.33.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Feb 2022 01:33:22 -0800 (PST) From: Chengming Zhou To: rostedt@goodmis.org, mark.rutland@arm.com, mingo@redhat.com, tglx@linutronix.de, catalin.marinas@arm.com, will@kernel.org, dave.hansen@linux.intel.com, broonie@kernel.org Cc: x86@kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, songmuchun@bytedance.com, qirui.001@bytedance.com, Chengming Zhou Subject: [PATCH v3 2/3] x86/ftrace: cleanup graph tracer Date: Thu, 24 Feb 2022 17:32:50 +0800 Message-Id: <20220224093251.49971-2-zhouchengming@bytedance.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220224093251.49971-1-zhouchengming@bytedance.com> References: <20220224093251.49971-1-zhouchengming@bytedance.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220224_013323_895771_C6181176 X-CRM114-Status: GOOD ( 12.69 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Put CONFIG_DYNAMIC_FTRACE related code after prepare_ftrace_return(), in which we define ftrace_graph_func() for graph_ops in DYNAMIC_FTRACE_WITH_ARGS case, then define ftrace_graph_caller enable and disable functions in the #else case to override. Since ftrace_graph_caller enable and disable functions have weak versions in Ftrace core code, we don't need to override them in the DYNAMIC_FTRACE_WITH_ARGS case. This patch is just a cleanup, doesn't have functional changes actually. Signed-off-by: Chengming Zhou --- arch/x86/kernel/ftrace.c | 78 +++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 46 deletions(-) diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c index 7cc540e6de0c..e49c9d3e986b 100644 --- a/arch/x86/kernel/ftrace.c +++ b/arch/x86/kernel/ftrace.c @@ -583,51 +583,6 @@ void arch_ftrace_trampoline_free(struct ftrace_ops *ops) #endif /* CONFIG_DYNAMIC_FTRACE */ #ifdef CONFIG_FUNCTION_GRAPH_TRACER - -#ifdef CONFIG_DYNAMIC_FTRACE - -#ifndef CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS -extern void ftrace_graph_call(void); -static const char *ftrace_jmp_replace(unsigned long ip, unsigned long addr) -{ - return text_gen_insn(JMP32_INSN_OPCODE, (void *)ip, (void *)addr); -} - -static int ftrace_mod_jmp(unsigned long ip, void *func) -{ - const char *new; - - new = ftrace_jmp_replace(ip, (unsigned long)func); - text_poke_bp((void *)ip, new, MCOUNT_INSN_SIZE, NULL); - return 0; -} - -int ftrace_enable_ftrace_graph_caller(void) -{ - unsigned long ip = (unsigned long)(&ftrace_graph_call); - - return ftrace_mod_jmp(ip, &ftrace_graph_caller); -} - -int ftrace_disable_ftrace_graph_caller(void) -{ - unsigned long ip = (unsigned long)(&ftrace_graph_call); - - return ftrace_mod_jmp(ip, &ftrace_stub); -} -#else /* !CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS */ -int ftrace_enable_ftrace_graph_caller(void) -{ - return 0; -} - -int ftrace_disable_ftrace_graph_caller(void) -{ - return 0; -} -#endif /* CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS */ -#endif /* !CONFIG_DYNAMIC_FTRACE */ - /* * Hook the return address and push it in the stack of return addrs * in current thread info. @@ -666,6 +621,8 @@ void prepare_ftrace_return(unsigned long ip, unsigned long *parent, ftrace_test_recursion_unlock(bit); } +#ifdef CONFIG_DYNAMIC_FTRACE + #ifdef CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS void ftrace_graph_func(unsigned long ip, unsigned long parent_ip, struct ftrace_ops *op, struct ftrace_regs *fregs) @@ -675,6 +632,35 @@ void ftrace_graph_func(unsigned long ip, unsigned long parent_ip, prepare_ftrace_return(ip, (unsigned long *)stack, 0); } -#endif +#else +extern void ftrace_graph_call(void); +static const char *ftrace_jmp_replace(unsigned long ip, unsigned long addr) +{ + return text_gen_insn(JMP32_INSN_OPCODE, (void *)ip, (void *)addr); +} +static int ftrace_mod_jmp(unsigned long ip, void *func) +{ + const char *new; + + new = ftrace_jmp_replace(ip, (unsigned long)func); + text_poke_bp((void *)ip, new, MCOUNT_INSN_SIZE, NULL); + return 0; +} + +int ftrace_enable_ftrace_graph_caller(void) +{ + unsigned long ip = (unsigned long)(&ftrace_graph_call); + + return ftrace_mod_jmp(ip, &ftrace_graph_caller); +} + +int ftrace_disable_ftrace_graph_caller(void) +{ + unsigned long ip = (unsigned long)(&ftrace_graph_call); + + return ftrace_mod_jmp(ip, &ftrace_stub); +} +#endif /* CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS */ +#endif /* CONFIG_DYNAMIC_FTRACE */ #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ -- 2.20.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel