select HAVE_PERF_USER_STACK_DUMP
        select HAVE_REGS_AND_STACK_ACCESS_API
        select HAVE_RCU_TABLE_FREE
+       select HAVE_RSEQ
        select HAVE_STACKPROTECTOR
        select HAVE_SYSCALL_TRACEPOINTS
        select HAVE_KPROBES
 
 #define __ARM_NR_compat_cacheflush     (__ARM_NR_COMPAT_BASE+2)
 #define __ARM_NR_compat_set_tls                (__ARM_NR_COMPAT_BASE+5)
 
-#define __NR_compat_syscalls           398
+#define __NR_compat_syscalls           399
 #endif
 
 #define __ARCH_WANT_SYS_CLONE
 
 __SYSCALL(__NR_pkey_free, sys_pkey_free)
 #define __NR_statx 397
 __SYSCALL(__NR_statx, sys_statx)
+#define __NR_rseq 398
+__SYSCALL(__NR_rseq, sys_rseq)
 
 /*
  * Please add new compat syscalls above this comment and update
 
 ret_fast_syscall:
        disable_daif
        str     x0, [sp, #S_X0]                 // returned x0
+#ifndef CONFIG_DEBUG_RSEQ
        ldr     x1, [tsk, #TSK_TI_FLAGS]        // re-check for syscall tracing
        and     x2, x1, #_TIF_SYSCALL_WORK
        cbnz    x2, ret_fast_syscall_trace
        cbnz    x2, work_pending
        enable_step_tsk x1, x2
        kernel_exit 0
+#endif
 ret_fast_syscall_trace:
        enable_daif
        b       __sys_trace_return_skipped      // we already saved x0
 
 
        if (test_thread_flag(TIF_SYSCALL_TRACE))
                tracehook_report_syscall(regs, PTRACE_SYSCALL_EXIT);
+
+       rseq_syscall(regs);
 }
 
 /*
 
        int usig = ksig->sig;
        int ret;
 
+       rseq_signal_deliver(ksig, regs);
+
        /*
         * Set up the stack frame
         */
                        if (thread_flags & _TIF_NOTIFY_RESUME) {
                                clear_thread_flag(TIF_NOTIFY_RESUME);
                                tracehook_notify_resume(regs);
+                               rseq_handle_notify_resume(NULL, regs);
                        }
 
                        if (thread_flags & _TIF_FOREIGN_FPSTATE)