• Heiko Carstens's avatar
    s390/ftrace: fix crashes when switching tracers / add notrace to cpu_relax() · a9ca8eb7
    Heiko Carstens authored
    With git commit 4d92f502 ("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: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    a9ca8eb7
processor.c 2.26 KB