From patchwork Mon Jun 19 09:47:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Naveen N Rao X-Patchwork-Id: 1796448 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20201202 header.b=p7B1KB7A; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Ql4n34V0Lz20XZ for ; Mon, 19 Jun 2023 19:52:23 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20201202 header.b=p7B1KB7A; dkim-atps=neutral Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4Ql4n24Nz8z30dn for ; Mon, 19 Jun 2023 19:52:22 +1000 (AEST) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20201202 header.b=p7B1KB7A; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=kernel.org (client-ip=2604:1380:4641:c500::1; helo=dfw.source.kernel.org; envelope-from=naveen@kernel.org; receiver=lists.ozlabs.org) Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4Ql4mf659wz2yTN for ; Mon, 19 Jun 2023 19:52:02 +1000 (AEST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id B3F72608CC; Mon, 19 Jun 2023 09:52:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9079FC433C8; Mon, 19 Jun 2023 09:51:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1687168320; bh=p9NZtEjGoaSI9Ibz25ldZpy+zzccLXH1kD9SV5qjCgs=; h=From:To:Cc:Subject:Date:From; b=p7B1KB7Az0eiifDcmm3kKck7avpEgUSpF7W7+s7Fq0iTK/aZ8nfrR1St/cnRi4lyW BNpnXzZ0a9ylLpqvjx7YpJUPqGlDxsNdfzC7rrzDj3hVQT5mIUQYiC03f9gG22oHJy cCRuwLuj1WZGolevzhsg39McaKfIVN1x/knp3aQbMnjfflMxdtijIdNf08uMaC13EG 6gFElhqELOxlYpdRDAhuueHRhZg7qrwFdEFqIU2VCoyPxG4OAJpbBEbEYHoQtGIOHv RD01OIa7hTvQiqJTxdeVK31CdrnSOyExo5MY04R67aF7gHJ7ExnTioj7D+1KmCspXP +2geu+/+QNQxw== From: Naveen N Rao To: Subject: [PATCH 00/17] powerpc/ftrace: refactor and add support for -fpatchable-function-entry Date: Mon, 19 Jun 2023 15:17:18 +0530 Message-Id: X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Steven Rostedt Errors-To: linuxppc-dev-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" Since RFC (*): - Patches 1 and 17 have been included in this series due to dependencies. Both had been posted out separately. - Patch 10 has a small change to not throw errors when checking instruction sequence generated by older toolchains. This has had more testing since and this looks good to me. Christophe mentioned that this results in a slowdown with ftrace [de-]activation on ppc32, but that isn't performance critical and we can address that separately. (*) http://lore.kernel.org/cover.1686151854.git.naveen@kernel.org - Naveen Naveen N Rao (17): powerpc/ftrace: Fix dropping weak symbols with older toolchains powerpc/module: Remove unused .ftrace.tramp section powerpc64/ftrace: Move ELFv1 and -pg support code into a separate file powerpc/ftrace: Simplify function_graph support in ftrace.c powerpc/ftrace: Use FTRACE_REGS_ADDR to identify the correct ftrace trampoline powerpc/ftrace: Extend ftrace support for large kernels to ppc32 powerpc/ftrace: Consolidate ftrace support into fewer files powerpc/ftrace: Refactor ftrace_modify_code() powerpc/ftrace: Stop re-purposing linker generated long branches for ftrace powerpc/ftrace: Add separate ftrace_init_nop() with additional validation powerpc/ftrace: Simplify ftrace_make_nop() powerpc/ftrace: Simplify ftrace_make_call() powerpc/ftrace: Simplify ftrace_modify_call() powerpc/ftrace: Replace use of ftrace_call_replace() with ftrace_create_branch_inst() powerpc/ftrace: Implement ftrace_replace_code() powerpc/ftrace: Add support for -fpatchable-function-entry powerpc/ftrace: Create a dummy stackframe to fix stack unwind arch/powerpc/Kconfig | 14 +- arch/powerpc/Makefile | 5 + arch/powerpc/include/asm/ftrace.h | 24 +- arch/powerpc/include/asm/module.h | 4 - arch/powerpc/include/asm/sections.h | 2 + arch/powerpc/include/asm/vermagic.h | 4 +- arch/powerpc/kernel/module_64.c | 2 +- arch/powerpc/kernel/trace/Makefile | 12 +- arch/powerpc/kernel/trace/ftrace.c | 910 +++++------------- arch/powerpc/kernel/trace/ftrace_64_pg.S | 67 -- arch/powerpc/kernel/trace/ftrace_64_pg.c | 846 ++++++++++++++++ .../{ftrace_low.S => ftrace_64_pg_entry.S} | 64 +- .../{ftrace_mprofile.S => ftrace_entry.S} | 78 +- arch/powerpc/kernel/vmlinux.lds.S | 4 - .../gcc-check-fpatchable-function-entry.sh | 26 + 15 files changed, 1288 insertions(+), 774 deletions(-) delete mode 100644 arch/powerpc/kernel/trace/ftrace_64_pg.S create mode 100644 arch/powerpc/kernel/trace/ftrace_64_pg.c rename arch/powerpc/kernel/trace/{ftrace_low.S => ftrace_64_pg_entry.S} (54%) rename arch/powerpc/kernel/trace/{ftrace_mprofile.S => ftrace_entry.S} (79%) create mode 100755 arch/powerpc/tools/gcc-check-fpatchable-function-entry.sh base-commit: 12ffddc6444780aec83fa5086673ec005c0bace4