diff mbox

[v3,0/8] ftrace with regs + live patching for ppc64 LE (ABI v2)

Message ID 20151026175745.GD29592@lst.de (mailing list archive)
State Superseded
Headers show

Commit Message

Torsten Duwe Oct. 26, 2015, 5:57 p.m. UTC
* Makefile:
    - globally use -mprofile-kernel in case it's configured.
  * arch/powerpc/Kconfig / kernel/trace/Kconfig:
    - declare that ppc64 HAVE_MPROFILE_KERNEL and
      HAVE_DYNAMIC_FTRACE_WITH_REGS, and use it.

Signed-off-by: Torsten Duwe <duwe@suse.de>
---
 arch/powerpc/Kconfig  | 2 ++
 arch/powerpc/Makefile | 7 +++++++
 kernel/trace/Kconfig  | 5 +++++
 3 files changed, 14 insertions(+)

Comments

kernel test robot Oct. 27, 2015, 6:20 a.m. UTC | #1
Hi Torsten,

[auto build test ERROR on powerpc/next -- if it's inappropriate base, please suggest rules for selecting the more suitable base]

url:    https://github.com/0day-ci/linux/commits/Torsten-Duwe/Re-PATCH-v3-0-8-ftrace-with-regs-live-patching-for-ppc64-LE-ABI-v2/20151027-020058
config: powerpc-ppc6xx_defconfig (attached as .config)
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=powerpc 

All errors (new ones prefixed by >>):

   kernel/built-in.o: In function `ftrace_get_addr_curr':
>> kernel/trace/ftrace.c:2286: undefined reference to `ftrace_regs_caller'
>> kernel/trace/ftrace.c:2286: undefined reference to `ftrace_regs_caller'
   kernel/built-in.o: In function `ftrace_get_addr_new':
   kernel/trace/ftrace.c:2254: undefined reference to `ftrace_regs_caller'
   kernel/trace/ftrace.c:2254: undefined reference to `ftrace_regs_caller'
   kernel/built-in.o: In function `__ftrace_replace_code':
>> kernel/trace/ftrace.c:2316: undefined reference to `ftrace_modify_call'
   kernel/built-in.o: In function `ftrace_get_addr_curr':
>> kernel/trace/ftrace.c:2286: undefined reference to `ftrace_regs_caller'
>> kernel/trace/ftrace.c:2286: undefined reference to `ftrace_regs_caller'
   kernel/built-in.o: In function `ftrace_get_addr_new':
   kernel/trace/ftrace.c:2254: undefined reference to `ftrace_regs_caller'
   kernel/trace/ftrace.c:2254: undefined reference to `ftrace_regs_caller'
   kernel/built-in.o: In function `ftrace_get_addr_curr':
>> kernel/trace/ftrace.c:2286: undefined reference to `ftrace_regs_caller'
   kernel/built-in.o:kernel/trace/ftrace.c:2286: more undefined references to `ftrace_regs_caller' follow

vim +2286 kernel/trace/ftrace.c

79922b80 Steven Rostedt (Red Hat  2014-05-06  2280) 			return (unsigned long)FTRACE_ADDR;
79922b80 Steven Rostedt (Red Hat  2014-05-06  2281) 		}
79922b80 Steven Rostedt (Red Hat  2014-05-06  2282) 		return ops->trampoline;
79922b80 Steven Rostedt (Red Hat  2014-05-06  2283) 	}
79922b80 Steven Rostedt (Red Hat  2014-05-06  2284) 
7413af1f Steven Rostedt (Red Hat  2014-05-06  2285) 	if (rec->flags & FTRACE_FL_REGS_EN)
7413af1f Steven Rostedt (Red Hat  2014-05-06 @2286) 		return (unsigned long)FTRACE_REGS_ADDR;
7413af1f Steven Rostedt (Red Hat  2014-05-06  2287) 	else
7413af1f Steven Rostedt (Red Hat  2014-05-06  2288) 		return (unsigned long)FTRACE_ADDR;
7413af1f Steven Rostedt (Red Hat  2014-05-06  2289) }
7413af1f Steven Rostedt (Red Hat  2014-05-06  2290) 
c88fd863 Steven Rostedt           2011-08-16  2291  static int
c88fd863 Steven Rostedt           2011-08-16  2292  __ftrace_replace_code(struct dyn_ftrace *rec, int enable)
c88fd863 Steven Rostedt           2011-08-16  2293  {
08f6fba5 Steven Rostedt           2012-04-30  2294  	unsigned long ftrace_old_addr;
c88fd863 Steven Rostedt           2011-08-16  2295  	unsigned long ftrace_addr;
c88fd863 Steven Rostedt           2011-08-16  2296  	int ret;
c88fd863 Steven Rostedt           2011-08-16  2297  
7c0868e0 Steven Rostedt (Red Hat  2014-05-08  2298) 	ftrace_addr = ftrace_get_addr_new(rec);
c88fd863 Steven Rostedt           2011-08-16  2299  
7c0868e0 Steven Rostedt (Red Hat  2014-05-08  2300) 	/* This needs to be done before we call ftrace_update_record */
7c0868e0 Steven Rostedt (Red Hat  2014-05-08  2301) 	ftrace_old_addr = ftrace_get_addr_curr(rec);
7c0868e0 Steven Rostedt (Red Hat  2014-05-08  2302) 
7c0868e0 Steven Rostedt (Red Hat  2014-05-08  2303) 	ret = ftrace_update_record(rec, enable);
08f6fba5 Steven Rostedt           2012-04-30  2304  
c88fd863 Steven Rostedt           2011-08-16  2305  	switch (ret) {
c88fd863 Steven Rostedt           2011-08-16  2306  	case FTRACE_UPDATE_IGNORE:
c88fd863 Steven Rostedt           2011-08-16  2307  		return 0;
c88fd863 Steven Rostedt           2011-08-16  2308  
c88fd863 Steven Rostedt           2011-08-16  2309  	case FTRACE_UPDATE_MAKE_CALL:
c88fd863 Steven Rostedt           2011-08-16  2310  		return ftrace_make_call(rec, ftrace_addr);
c88fd863 Steven Rostedt           2011-08-16  2311  
c88fd863 Steven Rostedt           2011-08-16  2312  	case FTRACE_UPDATE_MAKE_NOP:
39b5552c Steven Rostedt (Red Hat  2014-08-17  2313) 		return ftrace_make_nop(NULL, rec, ftrace_old_addr);
08f6fba5 Steven Rostedt           2012-04-30  2314  
08f6fba5 Steven Rostedt           2012-04-30  2315  	case FTRACE_UPDATE_MODIFY_CALL:
08f6fba5 Steven Rostedt           2012-04-30 @2316  		return ftrace_modify_call(rec, ftrace_old_addr, ftrace_addr);
5072c59f Steven Rostedt           2008-05-12  2317  	}
5072c59f Steven Rostedt           2008-05-12  2318  
c88fd863 Steven Rostedt           2011-08-16  2319  	return -1; /* unknow ftrace bug */

:::::: The code at line 2286 was first introduced by commit
:::::: 7413af1fb70e7efa6dbc7f27663e7a5126b3aa33 ftrace: Make get_ftrace_addr() and get_ftrace_addr_old() global

:::::: TO: Steven Rostedt (Red Hat) <rostedt@goodmis.org>
:::::: CC: Steven Rostedt <rostedt@goodmis.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
diff mbox

Patch

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 9a7057e..0e6011c 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -97,8 +97,10 @@  config PPC
 	select OF_RESERVED_MEM
 	select HAVE_FTRACE_MCOUNT_RECORD
 	select HAVE_DYNAMIC_FTRACE
+	select HAVE_DYNAMIC_FTRACE_WITH_REGS
 	select HAVE_FUNCTION_TRACER
 	select HAVE_FUNCTION_GRAPH_TRACER
+	select HAVE_MPROFILE_KERNEL
 	select SYSCTL_EXCEPTION_TRACE
 	select ARCH_WANT_OPTIONAL_GPIOLIB
 	select VIRT_TO_BUS if !PPC64
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index b9b4af2..25d0034 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -133,6 +133,13 @@  else
 CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64
 endif
 
+ifeq ($(CONFIG_PPC64),y)
+ifdef CONFIG_HAVE_MPROFILE_KERNEL
+CC_FLAGS_FTRACE	:= -pg $(call cc-option,-mprofile-kernel)
+KBUILD_CPPFLAGS	+= -DCC_USING_MPROFILE_KERNEL
+endif
+endif
+
 CFLAGS-$(CONFIG_CELL_CPU) += $(call cc-option,-mcpu=cell)
 CFLAGS-$(CONFIG_POWER4_CPU) += $(call cc-option,-mcpu=power4)
 CFLAGS-$(CONFIG_POWER5_CPU) += $(call cc-option,-mcpu=power5)
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
index 1153c43..dbcb635 100644
--- a/kernel/trace/Kconfig
+++ b/kernel/trace/Kconfig
@@ -52,6 +52,11 @@  config HAVE_FENTRY
 	help
 	  Arch supports the gcc options -pg with -mfentry
 
+config HAVE_MPROFILE_KERNEL
+	bool
+	help
+	  Arch supports the gcc options -pg with -mprofile-kernel
+
 config HAVE_C_RECORDMCOUNT
 	bool
 	help