On Sat, Sep 10, 2022 at 4:01 AM Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx> wrote: > > On 2021-07-26 12:28, Mathieu Desnoyers wrote: > > ----- On Jul 26, 2021, at 12:10 PM, Guo Ren guoren@xxxxxxxxxx wrote: > > > >> Hi Mathieu, > >> > >> Sorry for forgetting to CC you in the last patch, and that patch has > >> been merged into master which has the problem of syscall restart. > >> > >> I still want to keep rseq feature for csky, and implement the > >> RSEQ_SKIP_FASTPATH for self-test, it that okay? > > > > No, the RSEQ_SKIP_FASTPATH is the one special-case of test build which > > skips building rseq critical sections entirely. This leaves out any > > relevant testing of rseq per-se. With what we have in the upstream > > selftests, I expect this test configuration to abort at runtime because > > no slow-path fallbacks are available when the fastpath is disabled. > > > > The asm glue to test rseq user-space really needs to be implemented > > for any useful testing to be done here. > > > > Unless that asm glue is contributed, none of the rseq logic is actually > > tested on that architecture. > > > > Considering the extremely-hard-to-debug nature of races with a broken > > rseq kernel implementation, proper testing coverage is paramount, so I > > still recommend the revert unless the selftests user-space asm glue is > > contributed for C-Sky. > > Hi Guo, > > A friendly ping after 1.5 year about the fact that the selftests code is > still missing for the csky architecture. So there is no way to validate > that the kernel pieces that were merged actually work on that architecture. > > What is the timeline for contribution of the missing bits needed to enable > those tests ? I would send the 1st version of patchset before 2022/10/30, or just revert it from csky. 1. a patch for fixup the bug: diff --git a/arch/csky/kernel/signal.c b/arch/csky/kernel/signal.c index b7b3685283d7..434dcf2e8e37 100644 --- a/arch/csky/kernel/signal.c +++ b/arch/csky/kernel/signal.c @@ -179,8 +179,6 @@ static void handle_signal(struct ksignal *ksig, struct pt_regs *regs) sigset_t *oldset = sigmask_to_save(); int ret; - rseq_signal_deliver(ksig, regs); - /* Are we from a system call? */ if (in_syscall(regs)) { /* Avoid additional syscall restarting via ret_from_exception */ @@ -206,6 +204,8 @@ static void handle_signal(struct ksignal *ksig, struct pt_regs *regs) } } + rseq_signal_deliver(ksig, regs); + /* Set up the stack frame */ ret = setup_rt_frame(ksig, oldset, regs); 2. Add tools/testing/selftests/rseq/rseq-csky* codes. > > Here are the required header files: > > tools/testing/selftests/rseq/rseq-csky.h > tools/testing/selftests/rseq/rseq-csky-thread-pointer.h (only if __builtin_thread_pointer is not implemented by gcc) > > I'm open to suggestions from other rseq co-maintainers on how to best address > this situation. > > Thanks, > > Mathieu > > -- > Mathieu Desnoyers > EfficiOS Inc. > https://www.efficios.com -- Best Regards Guo Ren