• Miroslav Benes's avatar
    livepatch/s390: add TIF_PATCH_PENDING thread flag · 2f09ca60
    Miroslav Benes authored
    Update a task's patch state when returning from a system call or user
    space interrupt, or after handling a signal.
    
    This greatly increases the chances of a patch operation succeeding.  If
    a task is I/O bound, it can be patched when returning from a system
    call.  If a task is CPU bound, it can be patched when returning from an
    interrupt.  If a task is sleeping on a to-be-patched function, the user
    can send SIGSTOP and SIGCONT to force it to switch.
    
    Since there are two ways the syscall can be restarted on return from a
    signal handling process, it is important to clear the flag before
    do_signal() is called. Otherwise we could miss the migration if we used
    SIGSTOP/SIGCONT procedure or fake signal to migrate patching blocking
    tasks. If we place our hook to sysc_work label in entry before
    TIF_SIGPENDING is evaluated we kill two birds with one stone. The task
    is correctly migrated in all return paths from a syscall.
    Signed-off-by: default avatarMiroslav Benes <mbenes@suse.cz>
    Signed-off-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
    Acked-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    2f09ca60
entry.S 33.9 KB