From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from newverein.lst.de (verein.lst.de [213.95.11.211]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 7F4BF1A03B0 for ; Thu, 11 Feb 2016 04:42:27 +1100 (AEDT) From: Torsten Duwe Date: Wed, 10 Feb 2016 18:29:57 +0100 Subject: [PATCH v8 0/8] ftrace with regs + live patching for ppc64 LE (ABI v2) To: Michael Ellerman Cc: Jiri Kosina , Miroslav Benes , Petr Mladek , Jessica Yu , Steven Rostedt , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, live-patching@vger.kernel.org Message-Id: <20160210174221.EBBEC692C8@newverein.lst.de> List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Changes since V7: * drop "notrace" attribute for MMU-aiding functions and their callees. * merge "-mprofile-kernel"-stripping patches into one. Changes since v6: * include Petr's patch, on popular demand ;) * move #ifdefs out of functions for readability; introduce static helper functions instead. * No more literal binary instructions in hex, at least not added by this patch set. * add compile time checker to detect the presence of known-good -mprofile-kernel support. * limit Kconfig / compile to the configurations really supported: + (static) FTRACE with -pg + DYNAMIC_FTRACE with -pg with or without -mprofile-kernel (depending on the compiler) + DYNAMIC_FTRACE_WITH_REGS only with -mprofile-kernel (will error out if the compiler is broken) Changes since v5: * extra "std r0,LRSAVE(r1)" for gcc-6 This makes the code compiler-agnostic. * Follow Petr Mladek's suggestion to avoid redefinition of HAVE_LIVEPATCH Changes since v4: * change comment style in entry_64.S to C89 (nobody is using assembler syntax comments there). * the bool function restore_r2 shouldn't return 2, that's a little confusing. * Test whether the compiler supports -mprofile-kernel and only then define CC_USING_MPROFILE_KERNEL * also make the return value of klp_check_compiler_support depend on that. Major changes since v3: * the graph tracer works now. It turned out the stack frame it tried to manipulate does not exist at that point. * changes only needed in order to support -mprofile-kernel are now in a separate patch, prepended. * Kconfig cleanup so this is only selectable on ppc64le. Petr Mladek (1): livepatch: Detect offset for the ftrace location during build Torsten Duwe (7): ppc64 (le): prepare for -mprofile-kernel ppc64le FTRACE_WITH_REGS implementation ppc use ftrace_modify_all_code default ppc64 ftrace_with_regs configuration variables ppc64 ftrace_with_regs: disable profiling for some files Implement kernel live patching for ppc64le (ABIv2) Enable LIVEPATCH to be configured on ppc64le and add livepatch.o if it is selected arch/powerpc/Kconfig | 6 + arch/powerpc/Makefile | 17 +++ arch/powerpc/gcc-mprofile-kernel-notrace.sh | 33 ++++++ arch/powerpc/include/asm/code-patching.h | 24 ++++ arch/powerpc/include/asm/ftrace.h | 5 + arch/powerpc/include/asm/livepatch.h | 45 ++++++++ arch/powerpc/kernel/Makefile | 13 ++- arch/powerpc/kernel/entry_64.S | 169 +++++++++++++++++++++++++++- arch/powerpc/kernel/ftrace.c | 129 ++++++++++++++++----- arch/powerpc/kernel/livepatch.c | 38 +++++++ arch/powerpc/kernel/module_64.c | 56 ++++++++- arch/powerpc/lib/Makefile | 4 +- arch/s390/Kconfig | 1 + kernel/livepatch/Makefile | 13 +++ kernel/livepatch/core.c | 12 +- kernel/livepatch/ftrace-test.c | 6 + kernel/trace/Kconfig | 5 + scripts/recordmcount.c | 6 +- scripts/recordmcount.h | 17 ++- 19 files changed, 552 insertions(+), 47 deletions(-) create mode 100755 arch/powerpc/gcc-mprofile-kernel-notrace.sh create mode 100644 arch/powerpc/include/asm/livepatch.h create mode 100644 arch/powerpc/kernel/livepatch.c create mode 100644 kernel/livepatch/ftrace-test.c -- 1.8.5.6