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 A8194C433F5 for ; Tue, 25 Jan 2022 15:53:42 +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=cXg9HhvXJ5v3RDRiE2bVn8XcRbk82fITBqxVxlvZyCM=; b=PA2OIUGa+9NYeP +COr6ZDZR6hJty27n+D+AJLISJ/bJKgtrYjfNvsrmao1lo+ijnaNx4dbV08nAN7/ZVjv3c62fe3Wv Q2gtWEtSamj33TyKHGhwMMsQHpzZ4v44cYkDv1IUF3vnUYKDCOiO2Gvyprnb1SnQPGBWbLtkEh3c+ XK1DxB4Bwu3SVhETxwseg4nHsTINkRKfdnIzl0XTX1aG6xTTQXT85MKavmvK5M2QZbCUSHTA5OKve 5w/aRkrhHCW3Bnc0muMKLSPcBHrGXmM6+/lu+nByXbRVmm7NeTCDxjw7Dvek/b5ujw5EL2sWBRV2E lKJev1QF0xGEg1qWtbgw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nCO7D-008UAQ-K4; Tue, 25 Jan 2022 15:52:16 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nCNsr-008Q8Y-LT for linux-arm-kernel@lists.infradead.org; Tue, 25 Jan 2022 15:37:27 +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 D6186616F0; Tue, 25 Jan 2022 15:37:24 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E1DA6C340E8; Tue, 25 Jan 2022 15:37:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1643125044; bh=dB8HZlcV/RInlPoWTNEJ2q3KWJ6u0AfIeAk2rtNvzU4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HY9O/++6vraVrbzvqiVxcYkIMwJjBX4p8Ocgc6SC3v3scF6t9pbEkm35u3m6m1mhA /JhsGhBMqexI5LJo035YKwDSoPHyXS/veOAgxIiQtvYqHvqzzYuHZipbEQS+pIQSo5 Z1EIKfWvQaelHLlpmbVGXctJPgk3+aax6Aq3MzL+gZxUZKw0g5+6ffH80Q3QclDLAb mwq+ltiOeLK2PeCe6hywGRHHxiVkDIluuThpzJ37TWSxZw3nGGIwwOz+wBzMLyqgb7 ViRJt1eLcm2ADKrYBdSyMAIGfAf+sfodbiL9jonDLjHTrKQaNGlNrg3OoWWPJY3NXZ Y+NIauAB/BGQA== From: Ard Biesheuvel To: linux@armlinux.org.uk, linux-arm-kernel@lists.infradead.org Cc: Ard Biesheuvel , Arnd Bergmann , Linus Walleij , Nick Desaulniers Subject: [PATCH 6/8] ARM: ftrace: enable HAVE_FUNCTION_GRAPH_FP_TEST Date: Tue, 25 Jan 2022 16:36:54 +0100 Message-Id: <20220125153656.1802079-7-ardb@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220125153656.1802079-1-ardb@kernel.org> References: <20220125153656.1802079-1-ardb@kernel.org> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2027; h=from:subject; bh=dB8HZlcV/RInlPoWTNEJ2q3KWJ6u0AfIeAk2rtNvzU4=; b=owEB7QES/pANAwAKAcNPIjmS2Y8kAcsmYgBh8BkU4yuQsiJEQq0itP8yb521uzHcHUiKhgRh2psn 4YUjFtmJAbMEAAEKAB0WIQT72WJ8QGnJQhU3VynDTyI5ktmPJAUCYfAZFAAKCRDDTyI5ktmPJFbDC/ 9i0hvTJsqyS+6R21dEm1UfbSrQAp6WdnLl3GOXjBihQmngtpUmY3V9idWN9SSSCCUXfEFsoYgGy5MO RsfZkJ2RlQ7/1ceI7RNqCKVW1P7rkpRqDolTbgoBCY0J3F5VJ9KpAPogD6/o3+IAn+bg5VBfBKPpKM 3dami2oznygh3xryL9/vMXavgQRpFJaqaqdK0jU614qP6ZbFNeJMcF/b4iLTAzH56/5MHmX0Lcm3Kh SogzKvJqjxUiJHylN1OdR71IODqpDfcpnoldJLX1au+/ErdYerCfvLKgaqWmpHnRyUr9XKWUmgRsuQ 06zJimoqinfSJYQDK5Iohu+M+Q2UlbpT3YdUESgbkKBKqOlmH/+Xw+570rlQI2S8DwFk7S+1FvDTry GnKpXOODrp/MAYwpwTfdxscFYHJyyXZh9Ow4DUv3Ng9vsgL5W8WiTIzYOv1zpIIt6pyIYtPJ0CHEep Uda+4WZzURHNh9H1KvqVdydOjg8X1B2x/CsPhP9f0n6MQ= 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-20220125_073725_826175_CEFBE27E X-CRM114-Status: GOOD ( 15.59 ) 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 d2326794fd09..988525b274e3 100644 --- a/arch/arm/kernel/ftrace.c +++ b/arch/arm/kernel/ftrace.c @@ -220,6 +220,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