linux/arch/s390/kernel
Heiko Carstens a9ca8eb7af s390/ftrace: fix crashes when switching tracers / add notrace to cpu_relax()
With git commit 4d92f50249 ("s390: reintroduce diag 44 calls for
cpu_relax()") I reintroduced a non-trivial cpu_relax() variant on s390.

The difference to the previous variant however is that the new version is
an out-of-line function, which will be traced if function tracing is enabled.

Switching to different tracers includes instruction patching. Therefore this
is done within stop_machine() "context" to prevent that any function tracing
is going on while instructions are being patched.
With the new out-of-line variant of cpu_relax() this is not true anymore,
since cpu_relax() gets called in a busy loop by all waiting cpus within
stop_machine() until function patching is finished.
Therefore cpu_relax() must be marked notrace.

This fixes kernel crashes when frequently switching between "function" and
"function_graph" tracers.

Moving cpu_relax() to a header file again, doesn't work because of header
include order dependencies.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2015-03-02 11:35:53 -08:00
..
vdso32 s390/vdso: fix stack corruption 2014-10-27 13:27:02 +01:00
vdso64 s390/vdso: fix clock_gettime for CLOCK_THREAD_CPUTIME_ID, -2 and -3 2015-02-12 09:37:21 +01:00
.gitignore s390: add various .gitignore files. 2012-05-16 14:42:41 +02:00
asm-offsets.c s390/cmpxchg: use compiler builtins 2014-11-03 13:29:47 +01:00
audit.c
audit.h
base.S s390: add SMT support 2015-01-22 12:16:01 +01:00
cache.c s390/cacheinfo: coding style changes 2015-02-12 09:37:24 +01:00
compat_audit.c
compat_linux.c groups: Consolidate the setgroups permission checks 2014-12-05 17:19:27 -06:00
compat_linux.h s390: add support for vector extension 2014-10-09 09:14:13 +02:00
compat_ptrace.h
compat_signal.c all arches, signal: move restart_block to struct task_struct 2015-02-12 18:54:12 -08:00
compat_wrapper.c s390/kernel: add system calls for PCI memory access 2014-11-19 09:46:43 +01:00
cpcmd.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
crash_dump.c s390/kdump: add support for vector extension 2014-10-09 09:14:16 +02:00
debug.c s390/debug: avoid function call for debug_sprintf_* 2014-12-08 09:42:29 +01:00
diag.c [S390] replace diag10() with diag10_range() function 2011-05-10 17:13:43 +02:00
dis.c s390: add SMT support 2015-01-22 12:16:01 +01:00
dumpstack.c s390/traps: print interrupt code and instruction length code 2014-11-21 08:49:30 +01:00
early.c s390/spinlock: disabled compare-and-delay by default 2015-02-19 18:05:38 +01:00
ebcdic.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
entry64.S s390: use local symbol names in entry[64].S 2014-12-08 09:42:38 +01:00
entry.h s390/signal: add sys_sigreturn and sys_rt_sigreturn declarations 2015-01-08 10:02:49 +01:00
entry.S s390: use local symbol names in entry[64].S 2014-12-08 09:42:38 +01:00
ftrace.c s390/ftrace: hotpatch support for function tracing 2015-01-29 09:19:25 +01:00
head31.S s390/mm: Convert bootmem to memblock 2014-05-20 08:58:40 +02:00
head64.S s390: fix kernel crash due to linkage stack instructions 2014-02-05 11:00:50 +01:00
head_kdump.S s390/kdump: Use 64 bit mode for 0x10000 entry point 2012-10-18 17:50:09 +02:00
head.S s390: add z13 code generation support 2015-01-22 12:15:57 +01:00
idle.c s390/idle: convert open coded idle time seqcount 2014-12-08 09:42:32 +01:00
ipl.c s390: add SMT support 2015-01-22 12:16:01 +01:00
irq.c s390/irq: use irq 0 2014-11-18 18:23:03 +01:00
jump_label.c s390/jump label: improve and fix sanity check 2015-02-26 09:24:46 +01:00
kprobes.c s390/ftrace: hotpatch support for function tracing 2015-01-29 09:19:25 +01:00
lgr.c s390/sysinfo,stsi: change return code handling 2012-09-26 15:45:12 +02:00
machine_kexec.c s390: add SMT support 2015-01-22 12:16:01 +01:00
Makefile s390/ftrace: hotpatch support for function tracing 2015-01-29 09:19:25 +01:00
mcount.S s390/ftrace: hotpatch support for function tracing 2015-01-29 09:19:25 +01:00
module.c s390/jump label: add missing jump_label_apply_nops() call 2015-02-26 09:24:45 +01:00
nmi.c s390: fix machine check handling 2014-12-01 11:06:55 +01:00
os_info.c Include missing linux/slab.h inclusions 2013-04-29 15:42:01 -04:00
perf_cpum_cf_events.c s390/cpum_cf: Export event names in sysfs 2013-12-16 14:37:50 +01:00
perf_cpum_cf.c s390: Replace __get_cpu_var uses 2014-08-26 13:45:52 -04:00
perf_cpum_sf.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2014-12-11 17:30:55 -08:00
perf_event.c s390/perf: make print_debug_cf() static 2014-03-14 12:59:32 +01:00
pgm_check.S s390: add support for vector extension 2014-10-09 09:14:13 +02:00
process.c s390/process: free vx save area when releasing tasks 2015-02-10 16:39:05 +01:00
processor.c s390/ftrace: fix crashes when switching tracers / add notrace to cpu_relax() 2015-03-02 11:35:53 -08:00
ptrace.c s390/ptrace: always include vector registers in core files 2014-12-08 09:42:37 +01:00
reipl64.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
reipl.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
relocate_kernel64.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
relocate_kernel.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
runtime_instr.c s390/irq: Use defines for external interruption codes 2014-04-03 14:30:52 +02:00
s390_ksyms.c s390: use IS_ENABLED to check if a CONFIG is set to y or m 2013-12-16 14:38:04 +01:00
sclp.S s390/sclp: sign extend return value of _sclp_print_early() 2015-01-08 10:02:52 +01:00
setup.c s390/topology: delay initialization of topology cpu masks 2015-02-12 09:37:22 +01:00
signal.c all arches, signal: move restart_block to struct task_struct 2015-02-12 18:54:12 -08:00
smp.c s390/smp: reduce size of struct pcpu 2015-02-12 09:37:23 +01:00
stacktrace.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
suspend.c nosave: consolidate __nosave_{begin,end} in <asm/sections.h> 2014-10-09 22:26:04 -04:00
swsusp_asm64.S s390/hibernate: add early resume function 2013-08-30 08:57:15 +02:00
sys_s390.c teach SYSCALL_DEFINE<n> how to deal with long long/unsigned long long 2013-03-03 22:46:22 -05:00
syscalls.S s390: wire up execveat syscall 2014-12-18 13:37:17 +01:00
sysinfo.c Fairly small update, but there are some interesting new features. 2015-02-13 09:55:09 -08:00
time.c s390/kprobes: make use of NOKPROBE_SYMBOL() 2014-10-27 13:27:28 +01:00
topology.c s390/topology: convert cpu_topology array to per cpu variable 2015-02-12 09:37:22 +01:00
traps.c s390/traps: die on translation exceptions 2014-11-21 08:49:33 +01:00
uprobes.c s390/uprobes: fix user space PER events 2015-01-12 10:24:58 +01:00
vdso.c arm64,ia64,ppc,s390,sh,tile,um,x86,mm: remove default gate area 2014-08-08 15:57:27 -07:00
vmlinux.lds.S s390/linker skript: discard exit.data at runtime 2013-02-14 15:55:21 +01:00
vtime.c s390: add SMT support 2015-01-22 12:16:01 +01:00