Tony Jones reported that the ftrace self tests on s390 do not work: <6>Testing dynamic ftrace ops #1: (0 0 0 0 0) FAILED! <6>Testing tracer irqsoff: <3>failed to start irqsoff tracer <4>.. no entries found ..FAILED! <6>Testing tracer wakeup: <3>failed to start wakeup tracer <4>.. no entries found ..FAILED! <6>Testing tracer function_graph: <4>Failed to init function_graph tracer, init returned -19 <4>FAILED! This happens because we forgot to adjust the instruction pointer that gets passed to the ftrace trace function by MCOUNT_INSN_SIZE. In addition change MCOUNT_INSN_SIZE to the correct value on 31 bit. It only worked so far because the to be patched instruction was identical. Reported-by: Tony Jones <tonyj@suse.com> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
		
			
				
	
	
		
			26 lines
		
	
	
	
		
			409 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
	
		
			409 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef _ASM_S390_FTRACE_H
 | 
						|
#define _ASM_S390_FTRACE_H
 | 
						|
 | 
						|
#ifndef __ASSEMBLY__
 | 
						|
 | 
						|
extern void _mcount(void);
 | 
						|
 | 
						|
struct dyn_arch_ftrace { };
 | 
						|
 | 
						|
#define MCOUNT_ADDR ((long)_mcount)
 | 
						|
 | 
						|
 | 
						|
static inline unsigned long ftrace_call_adjust(unsigned long addr)
 | 
						|
{
 | 
						|
	return addr;
 | 
						|
}
 | 
						|
 | 
						|
#endif /* __ASSEMBLY__ */
 | 
						|
 | 
						|
#ifdef CONFIG_64BIT
 | 
						|
#define MCOUNT_INSN_SIZE  12
 | 
						|
#else
 | 
						|
#define MCOUNT_INSN_SIZE  22
 | 
						|
#endif
 | 
						|
 | 
						|
#endif /* _ASM_S390_FTRACE_H */
 |