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 257ABC433EF for ; Mon, 31 Jan 2022 17:21:28 +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=IGL3qt2GJGpH7Dd0V1rCua4GnbTlxu3pfgHvTlzNr3k=; b=mFeLxbrAvqaGGz OYiXc21HEeF7IJowm0lxt/c6bIoT3zKi49YLZVN/14OrS7n1FbMquISOQeeRt7CsLVj9gOMJrya5g eMA6PIdyYOHTK3x+yTQYtTVae+ila9GGXW4BeZVh/pVJgsfm5MhjUqg36d6/m4UTeDfIvLNyPpRq1 BUb7SIRL12hudUHSsVrQ/qIBYYzWL10I92pHjXC7ZxJSMCXuHnct3dB8Hy7FlW5ui3zuiyormEnIs tDSGvmWteMx1al84nU/93BmjY1WCOOrqdg8FySjGsWtnw8YrPfIUZq5t3gX4FcHATZTLfCWWYPhEK 2DiqbxWYTv4n7NPQQNdQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nEaLK-00A43W-VA; Mon, 31 Jan 2022 17:19:55 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nEa68-009zI0-0V for linux-arm-kernel@lists.infradead.org; Mon, 31 Jan 2022 17:04:13 +0000 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 6EE8360D29; Mon, 31 Jan 2022 17:04:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8FF86C340E8; Mon, 31 Jan 2022 17:04:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1643648650; bh=FUOPGdS20n5aueUIyP+Lfz79tKXJa3gXrU/x8kfmGho=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KQ+fBvHDBEwBXdOFDScgGKQ84lLz3nrNPF25yjVMTGLH0uNKTeOA4ofTL0MHv4+PV 64IpHgKIBksdCDeFR4wHoDNHS7+YKnfviq0GdH+yIfiOaacm+r4BpihFM/WAhy/VXS afHKXAJZmBs/vOefLoaKk8JjsZ+6LYorlNyAaA092poNV75+KOzDBCLiQxZ2sFWhMj P/LczBBrVPLs7lCJWQ15D8FeWn1btxqmUQS60lcz1B/Yc3y5k+XNIMbttFc1UJByIU Lpw1V+jh/F5Bt+s9DibWkN9jxeJKul2PugH1QInqfKqhgt1FVUFDVY0ZBegjp8P49B epXIlq/S8Xy+A== From: Ard Biesheuvel To: linux@armlinux.org.uk Cc: linux-arm-kernel@lists.infradead.org, Ard Biesheuvel , Steven Rostedt , Sudeep Holla , Cristian Marussi , Nathan Chancellor , Nick Desaulniers , Arnd Bergmann , Linus Walleij , Masami Hiramatsu Subject: [PATCH v2 06/12] ARM: ftrace: enable HAVE_FUNCTION_GRAPH_FP_TEST Date: Mon, 31 Jan 2022 18:03:41 +0100 Message-Id: <20220131170347.381551-7-ardb@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220131170347.381551-1-ardb@kernel.org> References: <20220131170347.381551-1-ardb@kernel.org> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2027; h=from:subject; bh=FUOPGdS20n5aueUIyP+Lfz79tKXJa3gXrU/x8kfmGho=; b=owEB7QES/pANAwAKAcNPIjmS2Y8kAcsmYgBh+BZm79YJC6264n7T9575JuJvUWIcfEBbFK0k5Z/I 5U+/YlKJAbMEAAEKAB0WIQT72WJ8QGnJQhU3VynDTyI5ktmPJAUCYfgWZgAKCRDDTyI5ktmPJPr8C/ wNoHly1vfR/yw6c5FvKRUxQtKzyeIaroXn6wmg+/WhVz5pSw+yEAYA1llneXtjsxgXi3hA4w2augvG laXFzpgHQ5LBtIHj8T/5ZYKT7o5BFzt72l0YqLuthHJ6Ran/tn1KLs701miwKvNbXyyAp3prjghV9M d/PEDN0e17JQw02Eh2uSre7AWFcmc9bpxw06YnaNaqOUz6T2hA0JSu/M3ldbzIRCTxCm1QG43j0LGU +CFQ7PY6GtNmqrIFw4D1vrSGdhHHZTCNAQjamflbeZFmbD8kO97XvAOHnYJs3j/wVkujR6gqcy0YmO G4FaaE/Or2MY3/nKUBVoRttcTt47wjlEeqiaf1zn0Cu9o60for8KFHJ4M3AItDwrVY2xzl2EZs/NAe c9qjHFpoiJcLrw11PfRmGoMaV36cJ6zRe7dweFufB5MuKKAMoxov8bOUhyZyuy8PLLGkFskfIh2rgf oFu62HGCU9oZLwHBuaKIZvfeCCmlAwTVacuJby/wTAolA= X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220131_090412_177503_268FA448 X-CRM114-Status: GOOD ( 15.76 ) 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 Fix the frame pointer handling in the function graph tracer entry and exit code so we can enable HAVE_FUNCTION_GRAPH_FP_TEST. Instead of using FP directly (which will have different values between the entry and exit pieces of the function graph tracer), use the value of SP at entry and exit, as we can derive the former value from the frame pointer. Signed-off-by: Ard Biesheuvel --- arch/arm/include/asm/ftrace.h | 2 ++ arch/arm/kernel/entry-ftrace.S | 2 +- arch/arm/kernel/ftrace.c | 5 +++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/arch/arm/include/asm/ftrace.h b/arch/arm/include/asm/ftrace.h index a4dbac07e4ef..b4f5fab6b04e 100644 --- a/arch/arm/include/asm/ftrace.h +++ b/arch/arm/include/asm/ftrace.h @@ -2,6 +2,8 @@ #ifndef _ASM_ARM_FTRACE #define _ASM_ARM_FTRACE +#define HAVE_FUNCTION_GRAPH_FP_TEST + #ifdef CONFIG_DYNAMIC_FTRACE_WITH_REGS #define ARCH_SUPPORTS_FTRACE_OPS 1 #endif diff --git a/arch/arm/kernel/entry-ftrace.S b/arch/arm/kernel/entry-ftrace.S index 99720064a4c5..bbfa0954c385 100644 --- a/arch/arm/kernel/entry-ftrace.S +++ b/arch/arm/kernel/entry-ftrace.S @@ -247,7 +247,7 @@ ENDPROC(ftrace_graph_regs_caller) .globl return_to_handler return_to_handler: stmdb sp!, {r0-r3} - mov r0, fp @ frame pointer + add r0, sp, #16 @ sp at exit of instrumented routine bl ftrace_return_to_handler mov lr, r0 @ r0 has real ret addr ldmia sp!, {r0-r3} diff --git a/arch/arm/kernel/ftrace.c b/arch/arm/kernel/ftrace.c index cb9eb8a463c5..1885c3fec15a 100644 --- a/arch/arm/kernel/ftrace.c +++ b/arch/arm/kernel/ftrace.c @@ -222,6 +222,11 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr, if (unlikely(atomic_read(¤t->tracing_graph_pause))) return; + if (IS_ENABLED(CONFIG_UNWINDER_FRAME_POINTER)) { + /* FP points one word below parent's top of stack */ + frame_pointer += 4; + } + old = *parent; *parent = return_hooker; -- 2.30.2 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel