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 0CDABC433EF for ; Thu, 3 Feb 2022 08:25: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=xBjziPG3R7XKHU3IYZlx5y0WjSzdFXWnAg7a6loE0AE=; b=iJIr6x4xdmqapR ev4Nf5/ALiWYv8sJpRhOmZj/sZWzMegILJ0ySDaAbSyD15HD2PwuIW7H5OcDEXpO4mvT4Z6FqRixu EXvIIinAL5ANCj1Qaj+FQrbz3dp9GrUl/b50M1kAzqar7h9NCmDpu9FyRPNamNpM/9DcoP4De/RdD bBDEZl09bvKVL2/zTi+G4z/mlYNtMqAauj99J28Tqo/65/+ZlY9tf77BoLHWWSbnZZ97n1vVG7XNw UlT65S7rihVUDG56SU6ksR+SeIyS/yS59Vnph+ab+/yxFaLSYyqA8Hk38UpHOy/j4LYYiUSGMzltq rY5BqBldrVf5yguF83fA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nFXPl-000K7t-SC; Thu, 03 Feb 2022 08:24:26 +0000 Received: from ams.source.kernel.org ([2604:1380:4601:e00::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nFXNw-000JJf-MI for linux-arm-kernel@lists.infradead.org; Thu, 03 Feb 2022 08:22:35 +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 ams.source.kernel.org (Postfix) with ESMTPS id 5D46DB83365; Thu, 3 Feb 2022 08:22:31 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C54D8C340ED; Thu, 3 Feb 2022 08:22:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1643876550; bh=zpf3yzB895peEXflV3dO5gmwRHE0p5gmr0vLgsm9Y7g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=i5I7O9Wpw1GOcpyUwgJ40BZxPVfGgP6JHwPnt2Jq5kbjpfM0RLXBYOPPajEPQohf7 DVKNiO5FFvZR+SynHC1WhITIRRDJHTriQPrjuL9fAPFquad31Cn8sfUZDFgo1ISdF2 YhEDvOCTzVYiS/syODDa9Pp9juJKDSkDbGeuaK+ocJIOBY6TkUUcYu8Dz2D6Ls+lfA Kn9J4LVnuXIsAKYxp2Q0zPra450XYOo4q5iUGQT7OGvHHvpNDSdGqLVDqk/cLWctGU eYZBT1BUujH3lnDxcy/jqTUmRXRHdk3EHkvpFGVjZl3cFsHnA/egVgUidxPTTyNfJc 60UIwq7xrcuMQ== 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 v3 06/13] ARM: ftrace: enable HAVE_FUNCTION_GRAPH_FP_TEST Date: Thu, 3 Feb 2022 09:21:57 +0100 Message-Id: <20220203082204.1176734-7-ardb@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220203082204.1176734-1-ardb@kernel.org> References: <20220203082204.1176734-1-ardb@kernel.org> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2087; h=from:subject; bh=zpf3yzB895peEXflV3dO5gmwRHE0p5gmr0vLgsm9Y7g=; b=owEB7QES/pANAwAKAcNPIjmS2Y8kAcsmYgBh+5CdqCKQFvlOPEGMZ9Eo1WuEObGGASF850luQ6qG R8uVKY+JAbMEAAEKAB0WIQT72WJ8QGnJQhU3VynDTyI5ktmPJAUCYfuQnQAKCRDDTyI5ktmPJKFLC/ 9Y4i1eRwpzOgj2w5IZhEtuvnl3e0ay0H9Q9Iznm1dxL386578qVtLCRkHzA9w01nxvzdKTnBfeVUfg sjCQwYTR2y+q47C0e9P28QehClnpKomEuGY0CjSw2Szn7GwNbiSd5o+5lVuu4mHY2N7HHYLaXmx+87 D4XSqrE9lDVZ8wFk8moSBpAsOkeebsOqY0O9TUouawwPR3Jb0Jmamyd1UBthKQifg3TdGOGoQzkVil pDD3A+JeIjk4tbfG+T/c81/akLHEiP69O6ahvzwELYHkx82VQtf6v7gggFh4XevqJ5LLPZgS4ZJflr SUukstFmr6KxsWXWaJF480YG5oD1SK7j+wTSMj4yegWeGoejuIyGj3OqgXnP/6+5kgSmUZd0fcVb9b 3XBHVKFknWLtg49GLnmbgmoJGmlBCW3jLn8zqpXTsroQNEePI3Gbo7JfqmabeVUQIss2BfT0lEkCIT LxhwXNfpERIWnB+qFKpeMfJWKToA78l2lWuVsPX1hpqTg= 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-20220203_002233_066619_5A659630 X-CRM114-Status: GOOD ( 15.38 ) 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 Reviewed-by: Steven Rostedt (Google) --- 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 74d3913f5590..ea2396900c7d 100644 --- a/arch/arm/kernel/ftrace.c +++ b/arch/arm/kernel/ftrace.c @@ -233,6 +233,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