mbox series

[v4,0/2] RISC-V: add support for restartable sequence

Message ID 20220308083253.12285-1-vincent.chen@sifive.com (mailing list archive)
Headers show
Series RISC-V: add support for restartable sequence | expand

Message

Vincent Chen March 8, 2022, 8:32 a.m. UTC
Add RSEQ, restartable sequence, support and related selftest to RISCV.
  
The relevant RSEQ tests in kselftest require the binutils patch "RISC-V:
Fix linker problems with TLS copy relocs" to avoid placing
PREINIT_ARRAY and TLS variable of librseq.so at the same address.
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=3e7bd7f24146f162565edf878840449f36a8d974
A segmental fault will happen if binutils misses this patch.

Changes since v3:
1. Modify the endianness checking.
2. Fix a bug encountered in 32bit environment.

Changes since v2:
1. Move rseq_signal_deliver() after syscall restart handling.
2. Add rseq_offset_deref_addv() to support memory barrier tests.

Vincent Chen (2):
  RISC-V: Add support for restartable sequence
  rseq/selftests: Add support for RISC-V

 arch/riscv/Kconfig                        |   1 +
 arch/riscv/kernel/entry.S                 |   4 +
 arch/riscv/kernel/signal.c                |   2 +
 tools/testing/selftests/rseq/param_test.c |  23 +
 tools/testing/selftests/rseq/rseq-riscv.h | 677 ++++++++++++++++++++++
 tools/testing/selftests/rseq/rseq.h       |   2 +
 6 files changed, 709 insertions(+)
 create mode 100644 tools/testing/selftests/rseq/rseq-riscv.h

Comments

Palmer Dabbelt March 23, 2022, 12:54 a.m. UTC | #1
On Tue, 08 Mar 2022 00:32:51 PST (-0800), vincent.chen@sifive.com wrote:
>
> Add RSEQ, restartable sequence, support and related selftest to RISCV.
>
> The relevant RSEQ tests in kselftest require the binutils patch "RISC-V:
> Fix linker problems with TLS copy relocs" to avoid placing
> PREINIT_ARRAY and TLS variable of librseq.so at the same address.
> https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=3e7bd7f24146f162565edf878840449f36a8d974
> A segmental fault will happen if binutils misses this patch.
>
> Changes since v3:
> 1. Modify the endianness checking.
> 2. Fix a bug encountered in 32bit environment.
>
> Changes since v2:
> 1. Move rseq_signal_deliver() after syscall restart handling.
> 2. Add rseq_offset_deref_addv() to support memory barrier tests.
>
> Vincent Chen (2):
>   RISC-V: Add support for restartable sequence
>   rseq/selftests: Add support for RISC-V
>
>  arch/riscv/Kconfig                        |   1 +
>  arch/riscv/kernel/entry.S                 |   4 +
>  arch/riscv/kernel/signal.c                |   2 +
>  tools/testing/selftests/rseq/param_test.c |  23 +
>  tools/testing/selftests/rseq/rseq-riscv.h | 677 ++++++++++++++++++++++
>  tools/testing/selftests/rseq/rseq.h       |   2 +
>  6 files changed, 709 insertions(+)
>  create mode 100644 tools/testing/selftests/rseq/rseq-riscv.h

Thanks, this is on for-next.