linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/6] selftests/nolibc: wire up riscv32
@ 2024-12-21 14:44 Thomas Weißschuh
  2024-12-21 14:44 ` [PATCH 1/6] tools/nolibc: add support for waitid() Thomas Weißschuh
                   ` (6 more replies)
  0 siblings, 7 replies; 13+ messages in thread
From: Thomas Weißschuh @ 2024-12-21 14:44 UTC (permalink / raw)
  To: Willy Tarreau, Shuah Khan, Paul Walmsley, Palmer Dabbelt,
	Albert Ou
  Cc: linux-kernel, linux-kselftest, linux-riscv, Zhangjin Wu,
	Thomas Weißschuh

Nolibc has support for riscv32. But the testsuite did not allow to test
it so far. Add a test configuration.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
Thomas Weißschuh (6):
      tools/nolibc: add support for waitid()
      selftests/nolibc: use waitid() over waitpid()
      selftests/nolibc: use a pipe to in vfprintf tests
      selftests/nolibc: skip tests for unimplemented syscalls
      selftests/nolibc: rename riscv to riscv64
      selftests/nolibc: add configurations for riscv32

 tools/include/nolibc/sys.h                   | 18 ++++++++++++
 tools/testing/selftests/nolibc/Makefile      | 11 +++++++
 tools/testing/selftests/nolibc/nolibc-test.c | 44 ++++++++++++++++------------
 tools/testing/selftests/nolibc/run-tests.sh  |  2 +-
 4 files changed, 56 insertions(+), 19 deletions(-)
---
base-commit: 499551201b5f4fd3c0618a3e95e3d0d15ea18f31
change-id: 20241219-nolibc-rv32-cff8a3e22394

Best regards,
-- 
Thomas Weißschuh <linux@weissschuh.net>


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/6] tools/nolibc: add support for waitid()
  2024-12-21 14:44 [PATCH 0/6] selftests/nolibc: wire up riscv32 Thomas Weißschuh
@ 2024-12-21 14:44 ` Thomas Weißschuh
  2024-12-21 16:35   ` Willy Tarreau
  2024-12-21 14:44 ` [PATCH 2/6] selftests/nolibc: use waitid() over waitpid() Thomas Weißschuh
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 13+ messages in thread
From: Thomas Weißschuh @ 2024-12-21 14:44 UTC (permalink / raw)
  To: Willy Tarreau, Shuah Khan, Paul Walmsley, Palmer Dabbelt,
	Albert Ou
  Cc: linux-kernel, linux-kselftest, linux-riscv, Zhangjin Wu,
	Thomas Weißschuh

waitid() is the modern variant of the family of wait-like syscalls.
Some architectures have dropped support for wait(), wait4() and waitpid()
but all of them support waitid().
It is more flexible and easier to use than the older ones.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
 tools/include/nolibc/sys.h | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/tools/include/nolibc/sys.h b/tools/include/nolibc/sys.h
index 7b82bc3cf107439a3f09f98b99d4d540ffb9ba2a..d4a5c2399a66b200ebf7ab249569cce2285481a5 100644
--- a/tools/include/nolibc/sys.h
+++ b/tools/include/nolibc/sys.h
@@ -23,6 +23,7 @@
 #include <linux/prctl.h>
 #include <linux/resource.h>
 #include <linux/utsname.h>
+#include <linux/signal.h>
 
 #include "arch.h"
 #include "errno.h"
@@ -1225,6 +1226,23 @@ pid_t waitpid(pid_t pid, int *status, int options)
 }
 
 
+/*
+ * int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options);
+ */
+
+static __attribute__((unused))
+int sys_waitid(int which, pid_t pid, siginfo_t *infop, int options, struct rusage *rusage)
+{
+	return my_syscall5(__NR_waitid, which, pid, infop, options, rusage);
+}
+
+static __attribute__((unused))
+int waitid(int which, pid_t pid, siginfo_t *infop, int options)
+{
+	return __sysret(sys_waitid(which, pid, infop, options, NULL));
+}
+
+
 /*
  * ssize_t write(int fd, const void *buf, size_t count);
  */

-- 
2.47.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 2/6] selftests/nolibc: use waitid() over waitpid()
  2024-12-21 14:44 [PATCH 0/6] selftests/nolibc: wire up riscv32 Thomas Weißschuh
  2024-12-21 14:44 ` [PATCH 1/6] tools/nolibc: add support for waitid() Thomas Weißschuh
@ 2024-12-21 14:44 ` Thomas Weißschuh
  2024-12-21 14:44 ` [PATCH 3/6] selftests/nolibc: use a pipe to in vfprintf tests Thomas Weißschuh
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: Thomas Weißschuh @ 2024-12-21 14:44 UTC (permalink / raw)
  To: Willy Tarreau, Shuah Khan, Paul Walmsley, Palmer Dabbelt,
	Albert Ou
  Cc: linux-kernel, linux-kselftest, linux-riscv, Zhangjin Wu,
	Thomas Weißschuh

Newer archs like riscv32 don't provide waitpid() anymore.
Switch to waitid() which is available everywhere.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
 tools/testing/selftests/nolibc/nolibc-test.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c
index 6fba7025c5e3c002085862fdf6fa950da6000d6c..60c50968d3630e4909a5ecb2400770baaf7c2add 100644
--- a/tools/testing/selftests/nolibc/nolibc-test.c
+++ b/tools/testing/selftests/nolibc/nolibc-test.c
@@ -1323,7 +1323,8 @@ static int run_protection(int min __attribute__((unused)),
 			  int max __attribute__((unused)))
 {
 	pid_t pid;
-	int llen = 0, status;
+	int llen = 0, ret;
+	siginfo_t siginfo = {};
 	struct rlimit rlimit = { 0, 0 };
 
 	llen += printf("0 -fstackprotector ");
@@ -1361,10 +1362,11 @@ static int run_protection(int min __attribute__((unused)),
 		return 1;
 
 	default:
-		pid = waitpid(pid, &status, 0);
+		ret = waitid(P_PID, pid, &siginfo, WEXITED);
 
-		if (pid == -1 || !WIFSIGNALED(status) || WTERMSIG(status) != SIGABRT) {
-			llen += printf("waitpid()");
+		if (ret != 0 || siginfo.si_signo != SIGCHLD ||
+		    siginfo.si_code != CLD_KILLED || siginfo.si_status != SIGABRT) {
+			llen += printf("waitid()");
 			result(llen, FAIL);
 			return 1;
 		}

-- 
2.47.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 3/6] selftests/nolibc: use a pipe to in vfprintf tests
  2024-12-21 14:44 [PATCH 0/6] selftests/nolibc: wire up riscv32 Thomas Weißschuh
  2024-12-21 14:44 ` [PATCH 1/6] tools/nolibc: add support for waitid() Thomas Weißschuh
  2024-12-21 14:44 ` [PATCH 2/6] selftests/nolibc: use waitid() over waitpid() Thomas Weißschuh
@ 2024-12-21 14:44 ` Thomas Weißschuh
  2024-12-21 14:44 ` [PATCH 4/6] selftests/nolibc: skip tests for unimplemented syscalls Thomas Weißschuh
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: Thomas Weißschuh @ 2024-12-21 14:44 UTC (permalink / raw)
  To: Willy Tarreau, Shuah Khan, Paul Walmsley, Palmer Dabbelt,
	Albert Ou
  Cc: linux-kernel, linux-kselftest, linux-riscv, Zhangjin Wu,
	Thomas Weißschuh

Not all architectures implement lseek(), for example riscv32 only
implements llseek() which is not equivalent to normal lseek().
Remove the need for lseek() by using a pipe instead.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
 tools/testing/selftests/nolibc/nolibc-test.c | 20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c
index 60c50968d3630e4909a5ecb2400770baaf7c2add..3685c13a9a6b8fd5110715b95ff323cdcb29481a 100644
--- a/tools/testing/selftests/nolibc/nolibc-test.c
+++ b/tools/testing/selftests/nolibc/nolibc-test.c
@@ -1229,19 +1229,20 @@ int run_stdlib(int min, int max)
 
 static int expect_vfprintf(int llen, int c, const char *expected, const char *fmt, ...)
 {
-	int ret, fd;
+	int ret, pipefd[2];
 	ssize_t w, r;
 	char buf[100];
 	FILE *memfile;
 	va_list args;
 
-	fd = open("/tmp", O_TMPFILE | O_EXCL | O_RDWR, 0600);
-	if (fd == -1) {
-		result(llen, SKIPPED);
-		return 0;
+	ret = pipe(pipefd);
+	if (ret == -1) {
+		llen += printf(" pipe() != %s", strerror(errno));
+		result(llen, FAIL);
+		return 1;
 	}
 
-	memfile = fdopen(fd, "w+");
+	memfile = fdopen(pipefd[1], "w");
 	if (!memfile) {
 		result(llen, FAIL);
 		return 1;
@@ -1257,13 +1258,10 @@ static int expect_vfprintf(int llen, int c, const char *expected, const char *fm
 		return 1;
 	}
 
-	fflush(memfile);
-	lseek(fd, 0, SEEK_SET);
-
-	r = read(fd, buf, sizeof(buf) - 1);
-
 	fclose(memfile);
 
+	r = read(pipefd[0], buf, sizeof(buf) - 1);
+
 	if (r != w) {
 		llen += printf(" written(%d) != read(%d)", (int)w, (int)r);
 		result(llen, FAIL);

-- 
2.47.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 4/6] selftests/nolibc: skip tests for unimplemented syscalls
  2024-12-21 14:44 [PATCH 0/6] selftests/nolibc: wire up riscv32 Thomas Weißschuh
                   ` (2 preceding siblings ...)
  2024-12-21 14:44 ` [PATCH 3/6] selftests/nolibc: use a pipe to in vfprintf tests Thomas Weißschuh
@ 2024-12-21 14:44 ` Thomas Weißschuh
  2024-12-21 14:44 ` [PATCH 5/6] selftests/nolibc: rename riscv to riscv64 Thomas Weißschuh
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: Thomas Weißschuh @ 2024-12-21 14:44 UTC (permalink / raw)
  To: Willy Tarreau, Shuah Khan, Paul Walmsley, Palmer Dabbelt,
	Albert Ou
  Cc: linux-kernel, linux-kselftest, linux-riscv, Zhangjin Wu,
	Thomas Weißschuh

The riscv32 architecture is missing many of the older syscalls.
Instead of providing wrappers for everything at once, introducing a lot
of complexity, skip the tests for those syscalls for now.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
 tools/testing/selftests/nolibc/nolibc-test.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c
index 3685c13a9a6b8fd5110715b95ff323cdcb29481a..0e0e3b48a8c3a6802c6989954b6f3a7c7258db43 100644
--- a/tools/testing/selftests/nolibc/nolibc-test.c
+++ b/tools/testing/selftests/nolibc/nolibc-test.c
@@ -302,7 +302,10 @@ int expect_syszr(int expr, int llen)
 {
 	int ret = 0;
 
-	if (expr) {
+	if (errno == ENOSYS) {
+		llen += printf(" = ENOSYS");
+		result(llen, SKIPPED);
+	} else if (expr) {
 		ret = 1;
 		llen += printf(" = %d %s ", expr, errorname(errno));
 		result(llen, FAIL);
@@ -342,7 +345,10 @@ int expect_sysne(int expr, int llen, int val)
 {
 	int ret = 0;
 
-	if (expr == val) {
+	if (errno == ENOSYS) {
+		llen += printf(" = ENOSYS");
+		result(llen, SKIPPED);
+	} else if (expr == val) {
 		ret = 1;
 		llen += printf(" = %d %s ", expr, errorname(errno));
 		result(llen, FAIL);
@@ -367,7 +373,9 @@ int expect_syserr2(int expr, int expret, int experr1, int experr2, int llen)
 	int _errno = errno;
 
 	llen += printf(" = %d %s ", expr, errorname(_errno));
-	if (expr != expret || (_errno != experr1 && _errno != experr2)) {
+	if (errno == ENOSYS) {
+		result(llen, SKIPPED);
+	} else if (expr != expret || (_errno != experr1 && _errno != experr2)) {
 		ret = 1;
 		if (experr2 == 0)
 			llen += printf(" != (%d %s) ", expret, errorname(experr1));

-- 
2.47.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 5/6] selftests/nolibc: rename riscv to riscv64
  2024-12-21 14:44 [PATCH 0/6] selftests/nolibc: wire up riscv32 Thomas Weißschuh
                   ` (3 preceding siblings ...)
  2024-12-21 14:44 ` [PATCH 4/6] selftests/nolibc: skip tests for unimplemented syscalls Thomas Weißschuh
@ 2024-12-21 14:44 ` Thomas Weißschuh
  2025-01-17 19:13   ` Charlie Jenkins
  2024-12-21 14:44 ` [PATCH 6/6] selftests/nolibc: add configurations for riscv32 Thomas Weißschuh
  2025-02-03 19:15 ` [PATCH 0/6] selftests/nolibc: wire up riscv32 patchwork-bot+linux-riscv
  6 siblings, 1 reply; 13+ messages in thread
From: Thomas Weißschuh @ 2024-12-21 14:44 UTC (permalink / raw)
  To: Willy Tarreau, Shuah Khan, Paul Walmsley, Palmer Dabbelt,
	Albert Ou
  Cc: linux-kernel, linux-kselftest, linux-riscv, Zhangjin Wu,
	Thomas Weißschuh

riscv32 support is about the be added. To keep the naming clear and
consistent with other architectures rename riscv to riscv64, as that is
what it actually represents.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
 tools/testing/selftests/nolibc/Makefile     | 6 ++++++
 tools/testing/selftests/nolibc/run-tests.sh | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile
index e92e0b88586111072a0e043cb15f3b59cf42c3a6..78f47e85b389ac229ac13f3e7c8299fb3ec92197 100644
--- a/tools/testing/selftests/nolibc/Makefile
+++ b/tools/testing/selftests/nolibc/Makefile
@@ -43,6 +43,7 @@ cc-option = $(call __cc-option, $(CC),$(CLANG_CROSS_FLAGS),$(1),$(2))
 # configure default variants for target kernel supported architectures
 XARCH_powerpc    = ppc
 XARCH_mips       = mips32le
+XARCH_riscv      = riscv64
 XARCH            = $(or $(XARCH_$(ARCH)),$(ARCH))
 
 # map from user input variants to their kernel supported architectures
@@ -51,6 +52,7 @@ ARCH_ppc64       = powerpc
 ARCH_ppc64le     = powerpc
 ARCH_mips32le    = mips
 ARCH_mips32be    = mips
+ARCH_riscv64     = riscv
 ARCH            := $(or $(ARCH_$(XARCH)),$(XARCH))
 
 # kernel image names by architecture
@@ -65,6 +67,7 @@ IMAGE_ppc        = vmlinux
 IMAGE_ppc64      = vmlinux
 IMAGE_ppc64le    = arch/powerpc/boot/zImage
 IMAGE_riscv      = arch/riscv/boot/Image
+IMAGE_riscv64    = arch/riscv/boot/Image
 IMAGE_s390       = arch/s390/boot/bzImage
 IMAGE_loongarch  = arch/loongarch/boot/vmlinuz.efi
 IMAGE            = $(objtree)/$(IMAGE_$(XARCH))
@@ -82,6 +85,7 @@ DEFCONFIG_ppc        = pmac32_defconfig
 DEFCONFIG_ppc64      = powernv_be_defconfig
 DEFCONFIG_ppc64le    = powernv_defconfig
 DEFCONFIG_riscv      = defconfig
+DEFCONFIG_riscv64    = defconfig
 DEFCONFIG_s390       = defconfig
 DEFCONFIG_loongarch  = defconfig
 DEFCONFIG            = $(DEFCONFIG_$(XARCH))
@@ -104,6 +108,7 @@ QEMU_ARCH_ppc        = ppc
 QEMU_ARCH_ppc64      = ppc64
 QEMU_ARCH_ppc64le    = ppc64
 QEMU_ARCH_riscv      = riscv64
+QEMU_ARCH_riscv64    = riscv64
 QEMU_ARCH_s390       = s390x
 QEMU_ARCH_loongarch  = loongarch64
 QEMU_ARCH            = $(QEMU_ARCH_$(XARCH))
@@ -130,6 +135,7 @@ QEMU_ARGS_ppc        = -M g3beige -append "console=ttyS0 panic=-1 $(TEST:%=NOLIB
 QEMU_ARGS_ppc64      = -M powernv -append "console=hvc0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
 QEMU_ARGS_ppc64le    = -M powernv -append "console=hvc0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
 QEMU_ARGS_riscv      = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
+QEMU_ARGS_riscv64    = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
 QEMU_ARGS_s390       = -M s390-ccw-virtio -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
 QEMU_ARGS_loongarch  = -M virt -append "console=ttyS0,115200 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
 QEMU_ARGS            = -m 1G $(QEMU_ARGS_$(XARCH)) $(QEMU_ARGS_BIOS) $(QEMU_ARGS_EXTRA)
diff --git a/tools/testing/selftests/nolibc/run-tests.sh b/tools/testing/selftests/nolibc/run-tests.sh
index e7ecda4ae796fbf0d389f20144511e66ce4f0b30..caa1ae40fe9a2faf8931c299aacd19716227e2b8 100755
--- a/tools/testing/selftests/nolibc/run-tests.sh
+++ b/tools/testing/selftests/nolibc/run-tests.sh
@@ -17,7 +17,7 @@ perform_download=0
 test_mode=system
 werror=1
 llvm=
-archs="i386 x86_64 arm64 arm mips32le mips32be ppc ppc64 ppc64le riscv s390 loongarch"
+archs="i386 x86_64 arm64 arm mips32le mips32be ppc ppc64 ppc64le riscv64 s390 loongarch"
 
 TEMP=$(getopt -o 'j:d:c:b:a:m:pelh' -n "$0" -- "$@")
 

-- 
2.47.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 6/6] selftests/nolibc: add configurations for riscv32
  2024-12-21 14:44 [PATCH 0/6] selftests/nolibc: wire up riscv32 Thomas Weißschuh
                   ` (4 preceding siblings ...)
  2024-12-21 14:44 ` [PATCH 5/6] selftests/nolibc: rename riscv to riscv64 Thomas Weißschuh
@ 2024-12-21 14:44 ` Thomas Weißschuh
  2025-01-17 19:10   ` Charlie Jenkins
  2025-02-03 19:15 ` [PATCH 0/6] selftests/nolibc: wire up riscv32 patchwork-bot+linux-riscv
  6 siblings, 1 reply; 13+ messages in thread
From: Thomas Weißschuh @ 2024-12-21 14:44 UTC (permalink / raw)
  To: Willy Tarreau, Shuah Khan, Paul Walmsley, Palmer Dabbelt,
	Albert Ou
  Cc: linux-kernel, linux-kselftest, linux-riscv, Zhangjin Wu,
	Thomas Weißschuh

nolibc already supports riscv32. Wire it up in the testsuite.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
---
 tools/testing/selftests/nolibc/Makefile     | 5 +++++
 tools/testing/selftests/nolibc/run-tests.sh | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile
index 78f47e85b389ac229ac13f3e7c8299fb3ec92197..7d14a7c0cb62608f328b251495264517d333db2e 100644
--- a/tools/testing/selftests/nolibc/Makefile
+++ b/tools/testing/selftests/nolibc/Makefile
@@ -52,6 +52,7 @@ ARCH_ppc64       = powerpc
 ARCH_ppc64le     = powerpc
 ARCH_mips32le    = mips
 ARCH_mips32be    = mips
+ARCH_riscv32     = riscv
 ARCH_riscv64     = riscv
 ARCH            := $(or $(ARCH_$(XARCH)),$(XARCH))
 
@@ -67,6 +68,7 @@ IMAGE_ppc        = vmlinux
 IMAGE_ppc64      = vmlinux
 IMAGE_ppc64le    = arch/powerpc/boot/zImage
 IMAGE_riscv      = arch/riscv/boot/Image
+IMAGE_riscv32    = arch/riscv/boot/Image
 IMAGE_riscv64    = arch/riscv/boot/Image
 IMAGE_s390       = arch/s390/boot/bzImage
 IMAGE_loongarch  = arch/loongarch/boot/vmlinuz.efi
@@ -85,6 +87,7 @@ DEFCONFIG_ppc        = pmac32_defconfig
 DEFCONFIG_ppc64      = powernv_be_defconfig
 DEFCONFIG_ppc64le    = powernv_defconfig
 DEFCONFIG_riscv      = defconfig
+DEFCONFIG_riscv32    = rv32_defconfig
 DEFCONFIG_riscv64    = defconfig
 DEFCONFIG_s390       = defconfig
 DEFCONFIG_loongarch  = defconfig
@@ -108,6 +111,7 @@ QEMU_ARCH_ppc        = ppc
 QEMU_ARCH_ppc64      = ppc64
 QEMU_ARCH_ppc64le    = ppc64
 QEMU_ARCH_riscv      = riscv64
+QEMU_ARCH_riscv32    = riscv32
 QEMU_ARCH_riscv64    = riscv64
 QEMU_ARCH_s390       = s390x
 QEMU_ARCH_loongarch  = loongarch64
@@ -135,6 +139,7 @@ QEMU_ARGS_ppc        = -M g3beige -append "console=ttyS0 panic=-1 $(TEST:%=NOLIB
 QEMU_ARGS_ppc64      = -M powernv -append "console=hvc0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
 QEMU_ARGS_ppc64le    = -M powernv -append "console=hvc0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
 QEMU_ARGS_riscv      = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
+QEMU_ARGS_riscv32    = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
 QEMU_ARGS_riscv64    = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
 QEMU_ARGS_s390       = -M s390-ccw-virtio -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
 QEMU_ARGS_loongarch  = -M virt -append "console=ttyS0,115200 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
diff --git a/tools/testing/selftests/nolibc/run-tests.sh b/tools/testing/selftests/nolibc/run-tests.sh
index caa1ae40fe9a2faf8931c299aacd19716227e2b8..67fefc847d77165f817c3befa578cfa27e6f93d8 100755
--- a/tools/testing/selftests/nolibc/run-tests.sh
+++ b/tools/testing/selftests/nolibc/run-tests.sh
@@ -17,7 +17,7 @@ perform_download=0
 test_mode=system
 werror=1
 llvm=
-archs="i386 x86_64 arm64 arm mips32le mips32be ppc ppc64 ppc64le riscv64 s390 loongarch"
+archs="i386 x86_64 arm64 arm mips32le mips32be ppc ppc64 ppc64le riscv32 riscv64 s390 loongarch"
 
 TEMP=$(getopt -o 'j:d:c:b:a:m:pelh' -n "$0" -- "$@")
 

-- 
2.47.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/6] tools/nolibc: add support for waitid()
  2024-12-21 14:44 ` [PATCH 1/6] tools/nolibc: add support for waitid() Thomas Weißschuh
@ 2024-12-21 16:35   ` Willy Tarreau
  2024-12-22 11:39     ` Thomas Weißschuh
  0 siblings, 1 reply; 13+ messages in thread
From: Willy Tarreau @ 2024-12-21 16:35 UTC (permalink / raw)
  To: Thomas Weißschuh
  Cc: Shuah Khan, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	linux-kernel, linux-kselftest, linux-riscv, Zhangjin Wu

Hi Thomas!

On Sat, Dec 21, 2024 at 03:44:28PM +0100, Thomas Weißschuh wrote:
> waitid() is the modern variant of the family of wait-like syscalls.
> Some architectures have dropped support for wait(), wait4() and waitpid()
> but all of them support waitid().
> It is more flexible and easier to use than the older ones.

I'm generally fine with the series, but I'm starting to get concerned
that some simple applications that used to rely on wait() or waitpid()
will not work on this architecture. Just like we did for some early
syscalls that got replaced (e.g. open->openat etc), I think we'll have
to implement a default wrapper relying on waitid() for all these calls
in this case, and maybe as well for lseek->llseek() btw, what do you
think ?

The single fact that you've had to modify some of the nolibc-test code
(which is supposed to be the application here) indicates that we're
progressively going away from what applications need on certain archs.
Ideally an application relying on long-established calls should continue
to work unmodified.

Maybe it will be time for us to run an overall audit of arch-dependent
syscalls we currently have, to make sure that the common ones continue
to work fine there (and waitpid() definitely is as common a syscall as
open() since it's the good old and portable one).

Cheers,
Willy

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/6] tools/nolibc: add support for waitid()
  2024-12-21 16:35   ` Willy Tarreau
@ 2024-12-22 11:39     ` Thomas Weißschuh
  2024-12-23  8:13       ` Willy Tarreau
  0 siblings, 1 reply; 13+ messages in thread
From: Thomas Weißschuh @ 2024-12-22 11:39 UTC (permalink / raw)
  To: Willy Tarreau
  Cc: Shuah Khan, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	linux-kernel, linux-kselftest, linux-riscv, Zhangjin Wu

Hi Willy!

On 2024-12-21 17:35:40+0100, Willy Tarreau wrote:
> On Sat, Dec 21, 2024 at 03:44:28PM +0100, Thomas Weißschuh wrote:
> > waitid() is the modern variant of the family of wait-like syscalls.
> > Some architectures have dropped support for wait(), wait4() and waitpid()
> > but all of them support waitid().
> > It is more flexible and easier to use than the older ones.
> 
> I'm generally fine with the series, but I'm starting to get concerned
> that some simple applications that used to rely on wait() or waitpid()
> will not work on this architecture. Just like we did for some early
> syscalls that got replaced (e.g. open->openat etc), I think we'll have
> to implement a default wrapper relying on waitid() for all these calls
> in this case, and maybe as well for lseek->llseek() btw, what do you
> think ?

Indeed, it would be nice to have full compatibility. However there are
more syscalls missing than wait() and lseek(). These are just the
missing ones affecting nolibc-test.
Adding wrappers will be more work. This series is only meant to
ensure that the existing limited support does not regress.

We can add compatibility wrappers one after the other on top.
I think Zhangjin implemented and proposed a few before, but a few of
them ended up complicated.

> The single fact that you've had to modify some of the nolibc-test code
> (which is supposed to be the application here) indicates that we're
> progressively going away from what applications need on certain archs.
> Ideally an application relying on long-established calls should continue
> to work unmodified.

Agreed.

> Maybe it will be time for us to run an overall audit of arch-dependent
> syscalls we currently have, to make sure that the common ones continue
> to work fine there (and waitpid() definitely is as common a syscall as
> open() since it's the good old and portable one).

Isn't this what nolibc-test is already doing?
Or do you also want to compare it to non-current kernel versions?

In general the special rv32 syscalls are not really
architecture-dependent, they just dropped the "legacy" ones, especially
all using 32bit timestamps.


Thomas

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/6] tools/nolibc: add support for waitid()
  2024-12-22 11:39     ` Thomas Weißschuh
@ 2024-12-23  8:13       ` Willy Tarreau
  0 siblings, 0 replies; 13+ messages in thread
From: Willy Tarreau @ 2024-12-23  8:13 UTC (permalink / raw)
  To: Thomas Weißschuh
  Cc: Shuah Khan, Paul Walmsley, Palmer Dabbelt, Albert Ou,
	linux-kernel, linux-kselftest, linux-riscv, Zhangjin Wu

Hi Thomas!

On Sun, Dec 22, 2024 at 12:39:01PM +0100, Thomas Weißschuh wrote:
> > Maybe it will be time for us to run an overall audit of arch-dependent
> > syscalls we currently have, to make sure that the common ones continue
> > to work fine there (and waitpid() definitely is as common a syscall as
> > open() since it's the good old and portable one).
> 
> Isn't this what nolibc-test is already doing?

My concern is that it might be progressively going away from this if
we replace some standard syscalls with new ones that are cross-arch.

> Or do you also want to compare it to non-current kernel versions?

I mean that we progressively replace old posix calls with new cross arch
ones in the system (e.g. open->openat, waitpid->waitid etc) and normally
it's a libc's role to preserve application-level compatibility by
maintaining the mapping between standard ones and specific ones so that
applications relying on standard ones continue to work, and that was one
of the original goals of nolibc.

I have nothing against missing some calls in newly added architectures,
of course, but when I'm seeing for example that we switch some of the
lower layer tests to use a pipe because some call was not present, I
tend to think that maybe we should first define what is the minimal set
of working syscalls that the nolibc-test program requires to be usable
on any arch.

In the current case, we seem to have to arbiter between pipe() and
lseek() support for basic nolibc-test support. But maybe a new arch will
be added for which it will be the opposite choice between the two. We
may very well require both of them to work if needed, or either, at the
risk of delaying support of a specific arch in the future, but that's
fine.

Second we should have a new look at all our supported calls and check if
some of them are present while the legacy calls they're supposed to
replace is missing (which would be perfectly possible). For example if
we had implemented waitpid() much later, it would have been perfectly
possible that we'd only implement waitid() and miss waitpid() that
applications expect.

Honestly it's not a particularly interesting job to do. That's why I'm
mostly saying that we should just keep that in mind to be careful with
new additions.

> In general the special rv32 syscalls are not really
> architecture-dependent, they just dropped the "legacy" ones, especially
> all using 32bit timestamps.

I understand, and when adding a new arch we need to start with something.
I just think that we should consider that for a new arch to switch from
"in progress" to "working", it would require the legacy ones working on
other archs to work on that one as well. My concern is that early boot
tools would only build on certain archs but not all when all of them are
supposed to be in a working state. When it fails everywhere that's fine,
it just means we're missing some calls and the user is welcome to submit
a patch. But when the user only tests on, say, x86 and arm, and someone
relies on that to package kernels and discovers late that it fails on
riscv for example, that's a problem. Note that I'm just making up examples,
and not designating any particular issue.

Maybe it would be convenient to maintain a support matrix for the syscalls
we currently support. It could look something like:

   waitpid()   x86: native
               arm: native
               riscv32: via waitid()
               foobar: not yet

   open()      ...

etc. I could try to work on such a thing if you're interested as well, but
not now as I don't have the time at the moment.

Cheers,
Willy

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 6/6] selftests/nolibc: add configurations for riscv32
  2024-12-21 14:44 ` [PATCH 6/6] selftests/nolibc: add configurations for riscv32 Thomas Weißschuh
@ 2025-01-17 19:10   ` Charlie Jenkins
  0 siblings, 0 replies; 13+ messages in thread
From: Charlie Jenkins @ 2025-01-17 19:10 UTC (permalink / raw)
  To: Thomas Weißschuh
  Cc: Willy Tarreau, Shuah Khan, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, linux-kernel, linux-kselftest, linux-riscv,
	Zhangjin Wu

On Sat, Dec 21, 2024 at 03:44:33PM +0100, Thomas Weißschuh wrote:
> nolibc already supports riscv32. Wire it up in the testsuite.

Good addition!

Reviewed-by: Charlie Jenkins <charlie@rivosinc.com>
Tested-by: Charlie Jenkins <charlie@rivosinc.com>

> 
> Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
> ---
>  tools/testing/selftests/nolibc/Makefile     | 5 +++++
>  tools/testing/selftests/nolibc/run-tests.sh | 2 +-
>  2 files changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile
> index 78f47e85b389ac229ac13f3e7c8299fb3ec92197..7d14a7c0cb62608f328b251495264517d333db2e 100644
> --- a/tools/testing/selftests/nolibc/Makefile
> +++ b/tools/testing/selftests/nolibc/Makefile
> @@ -52,6 +52,7 @@ ARCH_ppc64       = powerpc
>  ARCH_ppc64le     = powerpc
>  ARCH_mips32le    = mips
>  ARCH_mips32be    = mips
> +ARCH_riscv32     = riscv
>  ARCH_riscv64     = riscv
>  ARCH            := $(or $(ARCH_$(XARCH)),$(XARCH))
>  
> @@ -67,6 +68,7 @@ IMAGE_ppc        = vmlinux
>  IMAGE_ppc64      = vmlinux
>  IMAGE_ppc64le    = arch/powerpc/boot/zImage
>  IMAGE_riscv      = arch/riscv/boot/Image
> +IMAGE_riscv32    = arch/riscv/boot/Image
>  IMAGE_riscv64    = arch/riscv/boot/Image
>  IMAGE_s390       = arch/s390/boot/bzImage
>  IMAGE_loongarch  = arch/loongarch/boot/vmlinuz.efi
> @@ -85,6 +87,7 @@ DEFCONFIG_ppc        = pmac32_defconfig
>  DEFCONFIG_ppc64      = powernv_be_defconfig
>  DEFCONFIG_ppc64le    = powernv_defconfig
>  DEFCONFIG_riscv      = defconfig
> +DEFCONFIG_riscv32    = rv32_defconfig
>  DEFCONFIG_riscv64    = defconfig
>  DEFCONFIG_s390       = defconfig
>  DEFCONFIG_loongarch  = defconfig
> @@ -108,6 +111,7 @@ QEMU_ARCH_ppc        = ppc
>  QEMU_ARCH_ppc64      = ppc64
>  QEMU_ARCH_ppc64le    = ppc64
>  QEMU_ARCH_riscv      = riscv64
> +QEMU_ARCH_riscv32    = riscv32
>  QEMU_ARCH_riscv64    = riscv64
>  QEMU_ARCH_s390       = s390x
>  QEMU_ARCH_loongarch  = loongarch64
> @@ -135,6 +139,7 @@ QEMU_ARGS_ppc        = -M g3beige -append "console=ttyS0 panic=-1 $(TEST:%=NOLIB
>  QEMU_ARGS_ppc64      = -M powernv -append "console=hvc0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
>  QEMU_ARGS_ppc64le    = -M powernv -append "console=hvc0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
>  QEMU_ARGS_riscv      = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
> +QEMU_ARGS_riscv32    = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
>  QEMU_ARGS_riscv64    = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
>  QEMU_ARGS_s390       = -M s390-ccw-virtio -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
>  QEMU_ARGS_loongarch  = -M virt -append "console=ttyS0,115200 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
> diff --git a/tools/testing/selftests/nolibc/run-tests.sh b/tools/testing/selftests/nolibc/run-tests.sh
> index caa1ae40fe9a2faf8931c299aacd19716227e2b8..67fefc847d77165f817c3befa578cfa27e6f93d8 100755
> --- a/tools/testing/selftests/nolibc/run-tests.sh
> +++ b/tools/testing/selftests/nolibc/run-tests.sh
> @@ -17,7 +17,7 @@ perform_download=0
>  test_mode=system
>  werror=1
>  llvm=
> -archs="i386 x86_64 arm64 arm mips32le mips32be ppc ppc64 ppc64le riscv64 s390 loongarch"
> +archs="i386 x86_64 arm64 arm mips32le mips32be ppc ppc64 ppc64le riscv32 riscv64 s390 loongarch"
>  
>  TEMP=$(getopt -o 'j:d:c:b:a:m:pelh' -n "$0" -- "$@")
>  
> 
> -- 
> 2.47.1
> 
> 
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 5/6] selftests/nolibc: rename riscv to riscv64
  2024-12-21 14:44 ` [PATCH 5/6] selftests/nolibc: rename riscv to riscv64 Thomas Weißschuh
@ 2025-01-17 19:13   ` Charlie Jenkins
  0 siblings, 0 replies; 13+ messages in thread
From: Charlie Jenkins @ 2025-01-17 19:13 UTC (permalink / raw)
  To: Thomas Weißschuh
  Cc: Willy Tarreau, Shuah Khan, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, linux-kernel, linux-kselftest, linux-riscv,
	Zhangjin Wu

On Sat, Dec 21, 2024 at 03:44:32PM +0100, Thomas Weißschuh wrote:
> riscv32 support is about the be added. To keep the naming clear and
> consistent with other architectures rename riscv to riscv64, as that is
> what it actually represents.

Seems like a reasonable change.

Reviewed-by: Charlie Jenkins <charlie@rivosinc.com>
Tested-by: Charlie Jenkins <charlie@rivosinc.com>

> 
> Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
> ---
>  tools/testing/selftests/nolibc/Makefile     | 6 ++++++
>  tools/testing/selftests/nolibc/run-tests.sh | 2 +-
>  2 files changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile
> index e92e0b88586111072a0e043cb15f3b59cf42c3a6..78f47e85b389ac229ac13f3e7c8299fb3ec92197 100644
> --- a/tools/testing/selftests/nolibc/Makefile
> +++ b/tools/testing/selftests/nolibc/Makefile
> @@ -43,6 +43,7 @@ cc-option = $(call __cc-option, $(CC),$(CLANG_CROSS_FLAGS),$(1),$(2))
>  # configure default variants for target kernel supported architectures
>  XARCH_powerpc    = ppc
>  XARCH_mips       = mips32le
> +XARCH_riscv      = riscv64
>  XARCH            = $(or $(XARCH_$(ARCH)),$(ARCH))
>  
>  # map from user input variants to their kernel supported architectures
> @@ -51,6 +52,7 @@ ARCH_ppc64       = powerpc
>  ARCH_ppc64le     = powerpc
>  ARCH_mips32le    = mips
>  ARCH_mips32be    = mips
> +ARCH_riscv64     = riscv
>  ARCH            := $(or $(ARCH_$(XARCH)),$(XARCH))
>  
>  # kernel image names by architecture
> @@ -65,6 +67,7 @@ IMAGE_ppc        = vmlinux
>  IMAGE_ppc64      = vmlinux
>  IMAGE_ppc64le    = arch/powerpc/boot/zImage
>  IMAGE_riscv      = arch/riscv/boot/Image
> +IMAGE_riscv64    = arch/riscv/boot/Image
>  IMAGE_s390       = arch/s390/boot/bzImage
>  IMAGE_loongarch  = arch/loongarch/boot/vmlinuz.efi
>  IMAGE            = $(objtree)/$(IMAGE_$(XARCH))
> @@ -82,6 +85,7 @@ DEFCONFIG_ppc        = pmac32_defconfig
>  DEFCONFIG_ppc64      = powernv_be_defconfig
>  DEFCONFIG_ppc64le    = powernv_defconfig
>  DEFCONFIG_riscv      = defconfig
> +DEFCONFIG_riscv64    = defconfig
>  DEFCONFIG_s390       = defconfig
>  DEFCONFIG_loongarch  = defconfig
>  DEFCONFIG            = $(DEFCONFIG_$(XARCH))
> @@ -104,6 +108,7 @@ QEMU_ARCH_ppc        = ppc
>  QEMU_ARCH_ppc64      = ppc64
>  QEMU_ARCH_ppc64le    = ppc64
>  QEMU_ARCH_riscv      = riscv64
> +QEMU_ARCH_riscv64    = riscv64
>  QEMU_ARCH_s390       = s390x
>  QEMU_ARCH_loongarch  = loongarch64
>  QEMU_ARCH            = $(QEMU_ARCH_$(XARCH))
> @@ -130,6 +135,7 @@ QEMU_ARGS_ppc        = -M g3beige -append "console=ttyS0 panic=-1 $(TEST:%=NOLIB
>  QEMU_ARGS_ppc64      = -M powernv -append "console=hvc0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
>  QEMU_ARGS_ppc64le    = -M powernv -append "console=hvc0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
>  QEMU_ARGS_riscv      = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
> +QEMU_ARGS_riscv64    = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
>  QEMU_ARGS_s390       = -M s390-ccw-virtio -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
>  QEMU_ARGS_loongarch  = -M virt -append "console=ttyS0,115200 panic=-1 $(TEST:%=NOLIBC_TEST=%)"
>  QEMU_ARGS            = -m 1G $(QEMU_ARGS_$(XARCH)) $(QEMU_ARGS_BIOS) $(QEMU_ARGS_EXTRA)
> diff --git a/tools/testing/selftests/nolibc/run-tests.sh b/tools/testing/selftests/nolibc/run-tests.sh
> index e7ecda4ae796fbf0d389f20144511e66ce4f0b30..caa1ae40fe9a2faf8931c299aacd19716227e2b8 100755
> --- a/tools/testing/selftests/nolibc/run-tests.sh
> +++ b/tools/testing/selftests/nolibc/run-tests.sh
> @@ -17,7 +17,7 @@ perform_download=0
>  test_mode=system
>  werror=1
>  llvm=
> -archs="i386 x86_64 arm64 arm mips32le mips32be ppc ppc64 ppc64le riscv s390 loongarch"
> +archs="i386 x86_64 arm64 arm mips32le mips32be ppc ppc64 ppc64le riscv64 s390 loongarch"
>  
>  TEMP=$(getopt -o 'j:d:c:b:a:m:pelh' -n "$0" -- "$@")
>  
> 
> -- 
> 2.47.1
> 
> 
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/6] selftests/nolibc: wire up riscv32
  2024-12-21 14:44 [PATCH 0/6] selftests/nolibc: wire up riscv32 Thomas Weißschuh
                   ` (5 preceding siblings ...)
  2024-12-21 14:44 ` [PATCH 6/6] selftests/nolibc: add configurations for riscv32 Thomas Weißschuh
@ 2025-02-03 19:15 ` patchwork-bot+linux-riscv
  6 siblings, 0 replies; 13+ messages in thread
From: patchwork-bot+linux-riscv @ 2025-02-03 19:15 UTC (permalink / raw)
  To: =?utf-8?q?Thomas_Wei=C3=9Fschuh_=3Clinux=40weissschuh=2Enet=3E?=
  Cc: linux-riscv, w, shuah, paul.walmsley, palmer, aou, linux-kernel,
	linux-kselftest, falcon

Hello:

This series was applied to riscv/linux.git (fixes)
by Thomas Weißschuh <linux@weissschuh.net>:

On Sat, 21 Dec 2024 15:44:27 +0100 you wrote:
> Nolibc has support for riscv32. But the testsuite did not allow to test
> it so far. Add a test configuration.
> 
> Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
> ---
> Thomas Weißschuh (6):
>       tools/nolibc: add support for waitid()
>       selftests/nolibc: use waitid() over waitpid()
>       selftests/nolibc: use a pipe to in vfprintf tests
>       selftests/nolibc: skip tests for unimplemented syscalls
>       selftests/nolibc: rename riscv to riscv64
>       selftests/nolibc: add configurations for riscv32
> 
> [...]

Here is the summary with links:
  - [1/6] tools/nolibc: add support for waitid()
    https://git.kernel.org/riscv/c/7f89bc51101c
  - [2/6] selftests/nolibc: use waitid() over waitpid()
    https://git.kernel.org/riscv/c/a0bc8947ac73
  - [3/6] selftests/nolibc: use a pipe to in vfprintf tests
    https://git.kernel.org/riscv/c/4c7f09ab79b1
  - [4/6] selftests/nolibc: skip tests for unimplemented syscalls
    https://git.kernel.org/riscv/c/349afc8a52f8
  - [5/6] selftests/nolibc: rename riscv to riscv64
    https://git.kernel.org/riscv/c/a47b4b9fbaa1
  - [6/6] selftests/nolibc: add configurations for riscv32
    https://git.kernel.org/riscv/c/60fe18237f72

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2025-02-03 19:15 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-21 14:44 [PATCH 0/6] selftests/nolibc: wire up riscv32 Thomas Weißschuh
2024-12-21 14:44 ` [PATCH 1/6] tools/nolibc: add support for waitid() Thomas Weißschuh
2024-12-21 16:35   ` Willy Tarreau
2024-12-22 11:39     ` Thomas Weißschuh
2024-12-23  8:13       ` Willy Tarreau
2024-12-21 14:44 ` [PATCH 2/6] selftests/nolibc: use waitid() over waitpid() Thomas Weißschuh
2024-12-21 14:44 ` [PATCH 3/6] selftests/nolibc: use a pipe to in vfprintf tests Thomas Weißschuh
2024-12-21 14:44 ` [PATCH 4/6] selftests/nolibc: skip tests for unimplemented syscalls Thomas Weißschuh
2024-12-21 14:44 ` [PATCH 5/6] selftests/nolibc: rename riscv to riscv64 Thomas Weißschuh
2025-01-17 19:13   ` Charlie Jenkins
2024-12-21 14:44 ` [PATCH 6/6] selftests/nolibc: add configurations for riscv32 Thomas Weißschuh
2025-01-17 19:10   ` Charlie Jenkins
2025-02-03 19:15 ` [PATCH 0/6] selftests/nolibc: wire up riscv32 patchwork-bot+linux-riscv

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).