* [PATCH 0/4] selftest: x86: conform tests to TAP format output
@ 2024-04-14 13:18 Muhammad Usama Anjum
2024-04-14 13:18 ` [PATCH 1/4] selftests: x86: check_initial_reg_state: conform test " Muhammad Usama Anjum
` (6 more replies)
0 siblings, 7 replies; 14+ messages in thread
From: Muhammad Usama Anjum @ 2024-04-14 13:18 UTC (permalink / raw)
To: Shuah Khan, Muhammad Usama Anjum, linux-kselftest, linux-kernel; +Cc: kernel
In this series, 4 tests are being conformed to TAP.
Muhammad Usama Anjum (4):
selftests: x86: check_initial_reg_state: conform test to TAP format
output
selftests: x86: corrupt_xstate_header: conform test to TAP format
output
selftests: fsgsbase_restore: conform test to TAP format output
selftests: entry_from_vm86: conform test to TAP format output
.../selftests/x86/check_initial_reg_state.c | 24 ++--
.../selftests/x86/corrupt_xstate_header.c | 30 +++--
tools/testing/selftests/x86/entry_from_vm86.c | 109 ++++++++--------
.../testing/selftests/x86/fsgsbase_restore.c | 117 +++++++++---------
4 files changed, 139 insertions(+), 141 deletions(-)
--
2.39.2
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 1/4] selftests: x86: check_initial_reg_state: conform test to TAP format output
2024-04-14 13:18 [PATCH 0/4] selftest: x86: conform tests to TAP format output Muhammad Usama Anjum
@ 2024-04-14 13:18 ` Muhammad Usama Anjum
2024-04-14 13:18 ` [PATCH 2/4] selftests: x86: corrupt_xstate_header: " Muhammad Usama Anjum
` (5 subsequent siblings)
6 siblings, 0 replies; 14+ messages in thread
From: Muhammad Usama Anjum @ 2024-04-14 13:18 UTC (permalink / raw)
To: Shuah Khan, Muhammad Usama Anjum, linux-kselftest, linux-kernel; +Cc: kernel
Conform the layout, informational and status messages to TAP. No
functional change is intended other than the layout of output messages.
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
.../selftests/x86/check_initial_reg_state.c | 24 +++++++++----------
1 file changed, 11 insertions(+), 13 deletions(-)
diff --git a/tools/testing/selftests/x86/check_initial_reg_state.c b/tools/testing/selftests/x86/check_initial_reg_state.c
index 3bc95f3ed5859..c3d42b193222a 100644
--- a/tools/testing/selftests/x86/check_initial_reg_state.c
+++ b/tools/testing/selftests/x86/check_initial_reg_state.c
@@ -7,6 +7,7 @@
#define _GNU_SOURCE
#include <stdio.h>
+#include "../kselftest.h"
unsigned long ax, bx, cx, dx, si, di, bp, sp, flags;
unsigned long r8, r9, r10, r11, r12, r13, r14, r15;
@@ -53,20 +54,19 @@ asm (
int main()
{
- int nerrs = 0;
+ ksft_print_header();
+ ksft_set_plan(2);
- if (sp == 0) {
- printf("[FAIL]\tTest was built incorrectly\n");
- return 1;
- }
+ if (sp == 0)
+ ksft_exit_fail_msg("Test was built incorrectly\n");
if (ax || bx || cx || dx || si || di || bp
#ifdef __x86_64__
|| r8 || r9 || r10 || r11 || r12 || r13 || r14 || r15
#endif
) {
- printf("[FAIL]\tAll GPRs except SP should be 0\n");
-#define SHOW(x) printf("\t" #x " = 0x%lx\n", x);
+ ksft_test_result_fail("All GPRs except SP should be 0\n");
+#define SHOW(x) ksft_print_msg("\t" #x " = 0x%lx\n", x);
SHOW(ax);
SHOW(bx);
SHOW(cx);
@@ -85,17 +85,15 @@ int main()
SHOW(r14);
SHOW(r15);
#endif
- nerrs++;
} else {
- printf("[OK]\tAll GPRs except SP are 0\n");
+ ksft_test_result_pass("All GPRs except SP are 0\n");
}
if (flags != 0x202) {
- printf("[FAIL]\tFLAGS is 0x%lx, but it should be 0x202\n", flags);
- nerrs++;
+ ksft_test_result_fail("FLAGS is 0x%lx, but it should be 0x202\n", flags);
} else {
- printf("[OK]\tFLAGS is 0x202\n");
+ ksft_test_result_pass("FLAGS is 0x202\n");
}
- return nerrs ? 1 : 0;
+ ksft_finished();
}
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 2/4] selftests: x86: corrupt_xstate_header: conform test to TAP format output
2024-04-14 13:18 [PATCH 0/4] selftest: x86: conform tests to TAP format output Muhammad Usama Anjum
2024-04-14 13:18 ` [PATCH 1/4] selftests: x86: check_initial_reg_state: conform test " Muhammad Usama Anjum
@ 2024-04-14 13:18 ` Muhammad Usama Anjum
2024-04-14 13:18 ` [PATCH 3/4] selftests: fsgsbase_restore: " Muhammad Usama Anjum
` (4 subsequent siblings)
6 siblings, 0 replies; 14+ messages in thread
From: Muhammad Usama Anjum @ 2024-04-14 13:18 UTC (permalink / raw)
To: Shuah Khan, Muhammad Usama Anjum, linux-kselftest, linux-kernel; +Cc: kernel
Conform the layout, informational and status messages to TAP. No
functional change is intended other than the layout of output messages.
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
| 30 +++++++++++--------
1 file changed, 18 insertions(+), 12 deletions(-)
--git a/tools/testing/selftests/x86/corrupt_xstate_header.c b/tools/testing/selftests/x86/corrupt_xstate_header.c
index cf9ce8fbb656c..119ff74763c6d 100644
--- a/tools/testing/selftests/x86/corrupt_xstate_header.c
+++ b/tools/testing/selftests/x86/corrupt_xstate_header.c
@@ -39,7 +39,7 @@ static void sethandler(int sig, void (*handler)(int, siginfo_t *, void *),
sa.sa_flags = SA_SIGINFO | flags;
sigemptyset(&sa.sa_mask);
if (sigaction(sig, &sa, 0))
- err(1, "sigaction");
+ ksft_exit_fail_perror("sigaction");
}
static void sigusr1(int sig, siginfo_t *info, void *uc_void)
@@ -48,26 +48,29 @@ static void sigusr1(int sig, siginfo_t *info, void *uc_void)
uint8_t *fpstate = (uint8_t *)uc->uc_mcontext.fpregs;
uint64_t *xfeatures = (uint64_t *)(fpstate + 512);
- printf("\tWreck XSTATE header\n");
+ ksft_print_msg("Wreck XSTATE header\n");
/* Wreck the first reserved bytes in the header */
*(xfeatures + 2) = 0xfffffff;
}
static void sigsegv(int sig, siginfo_t *info, void *uc_void)
{
- printf("\tGot SIGSEGV\n");
+ ksft_print_msg("Got SIGSEGV\n");
}
int main(void)
{
cpu_set_t set;
+ ksft_print_header();
+ ksft_set_plan(2);
+
sethandler(SIGUSR1, sigusr1, 0);
sethandler(SIGSEGV, sigsegv, 0);
if (!xsave_enabled()) {
- printf("[SKIP] CR4.OSXSAVE disabled.\n");
- return 0;
+ ksft_print_msg("CR4.OSXSAVE disabled.\n");
+ return KSFT_SKIP;
}
CPU_ZERO(&set);
@@ -79,18 +82,21 @@ int main(void)
*/
sched_setaffinity(getpid(), sizeof(set), &set);
- printf("[RUN]\tSend ourselves a signal\n");
+ ksft_print_msg("Send ourselves a signal\n");
raise(SIGUSR1);
- printf("[OK]\tBack from the signal. Now schedule.\n");
+ ksft_test_result_pass("Back from the signal. Now schedule.\n");
+
pid_t child = fork();
- if (child < 0)
- err(1, "fork");
if (child == 0)
return 0;
- if (child)
+
+ if (child < 0) {
+ ksft_test_result_fail("fork: %s\n", strerror(errno));
+ } else if (child) {
waitpid(child, NULL, 0);
- printf("[OK]\tBack in the main thread.\n");
+ ksft_test_result_pass("Back in the main thread.\n");
+ }
/*
* We could try to confirm that extended state is still preserved
@@ -98,5 +104,5 @@ int main(void)
* a warning in the kernel logs.
*/
- return 0;
+ ksft_finished();
}
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 3/4] selftests: fsgsbase_restore: conform test to TAP format output
2024-04-14 13:18 [PATCH 0/4] selftest: x86: conform tests to TAP format output Muhammad Usama Anjum
2024-04-14 13:18 ` [PATCH 1/4] selftests: x86: check_initial_reg_state: conform test " Muhammad Usama Anjum
2024-04-14 13:18 ` [PATCH 2/4] selftests: x86: corrupt_xstate_header: " Muhammad Usama Anjum
@ 2024-04-14 13:18 ` Muhammad Usama Anjum
2024-04-14 13:18 ` [PATCH 4/4] selftests: entry_from_vm86: " Muhammad Usama Anjum
` (3 subsequent siblings)
6 siblings, 0 replies; 14+ messages in thread
From: Muhammad Usama Anjum @ 2024-04-14 13:18 UTC (permalink / raw)
To: Shuah Khan, Muhammad Usama Anjum, linux-kselftest, linux-kernel; +Cc: kernel
Conform the layout, informational and status messages to TAP. No
functional change is intended other than the layout of output messages.
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
.../testing/selftests/x86/fsgsbase_restore.c | 117 +++++++++---------
1 file changed, 57 insertions(+), 60 deletions(-)
diff --git a/tools/testing/selftests/x86/fsgsbase_restore.c b/tools/testing/selftests/x86/fsgsbase_restore.c
index 6fffadc515791..32e5b1b4be16f 100644
--- a/tools/testing/selftests/x86/fsgsbase_restore.c
+++ b/tools/testing/selftests/x86/fsgsbase_restore.c
@@ -30,6 +30,7 @@
#include <sys/ptrace.h>
#include <sys/wait.h>
#include <stdint.h>
+#include "../kselftest.h"
#define EXPECTED_VALUE 0x1337f00d
@@ -46,18 +47,18 @@ static unsigned int dereference_seg_base(void)
return ret;
}
-static void init_seg(void)
+static int init_seg(void)
{
unsigned int *target = mmap(
NULL, sizeof(unsigned int),
PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_ANONYMOUS | MAP_32BIT, -1, 0);
if (target == MAP_FAILED)
- err(1, "mmap");
+ ksft_exit_fail_perror("mmap");
*target = EXPECTED_VALUE;
- printf("\tsegment base address = 0x%lx\n", (unsigned long)target);
+ ksft_print_msg("segment base address = 0x%lx\n", (unsigned long)target);
struct user_desc desc = {
.entry_number = 0,
@@ -71,7 +72,7 @@ static void init_seg(void)
.useable = 0
};
if (syscall(SYS_modify_ldt, 1, &desc, sizeof(desc)) == 0) {
- printf("\tusing LDT slot 0\n");
+ ksft_print_msg("using LDT slot 0\n");
asm volatile ("mov %0, %" SEG :: "rm" ((unsigned short)0x7));
} else {
/* No modify_ldt for us (configured out, perhaps) */
@@ -97,14 +98,16 @@ static void init_seg(void)
munmap(low_desc, sizeof(desc));
if (ret != 0) {
- printf("[NOTE]\tcould not create a segment -- can't test anything\n");
- exit(0);
+ ksft_print_msg("could not create a segment -- can't test anything\n");
+ return KSFT_SKIP;
}
- printf("\tusing GDT slot %d\n", desc.entry_number);
+ ksft_print_msg("using GDT slot %d\n", desc.entry_number);
unsigned short sel = (unsigned short)((desc.entry_number << 3) | 0x3);
asm volatile ("mov %0, %" SEG :: "rm" (sel));
}
+
+ return 0;
}
static void tracee_zap_segment(void)
@@ -115,7 +118,7 @@ static void tracee_zap_segment(void)
* we modify a segment register in order to make sure that ptrace
* can correctly restore segment registers.
*/
- printf("\tTracee: in tracee_zap_segment()\n");
+ ksft_print_msg("Tracee: in tracee_zap_segment()\n");
/*
* Write a nonzero selector with base zero to the segment register.
@@ -130,70 +133,72 @@ static void tracee_zap_segment(void)
pid_t pid = getpid(), tid = syscall(SYS_gettid);
- printf("\tTracee is going back to sleep\n");
+ ksft_print_msg("Tracee is going back to sleep\n");
syscall(SYS_tgkill, pid, tid, SIGSTOP);
/* Should not get here. */
- while (true) {
- printf("[FAIL]\tTracee hit unreachable code\n");
- pause();
- }
+ ksft_exit_fail_msg("Tracee hit unreachable code\n");
}
int main()
{
- printf("\tSetting up a segment\n");
- init_seg();
+ int ret;
+
+ ksft_print_header();
+ ksft_set_plan(2);
+
+ ksft_print_msg("Setting up a segment\n");
+
+ ret = init_seg();
+ if (ret)
+ return ret;
unsigned int val = dereference_seg_base();
- if (val != EXPECTED_VALUE) {
- printf("[FAIL]\tseg[0] == %x; should be %x\n", val, EXPECTED_VALUE);
- return 1;
- }
- printf("[OK]\tThe segment points to the right place.\n");
+ ksft_test_result(val == EXPECTED_VALUE, "The segment points to the right place.\n");
pid_t chld = fork();
if (chld < 0)
- err(1, "fork");
+ ksft_exit_fail_perror("fork");
if (chld == 0) {
prctl(PR_SET_PDEATHSIG, SIGKILL, 0, 0, 0, 0);
if (ptrace(PTRACE_TRACEME, 0, 0, 0) != 0)
- err(1, "PTRACE_TRACEME");
+ ksft_exit_fail_perror("PTRACE_TRACEME");
pid_t pid = getpid(), tid = syscall(SYS_gettid);
- printf("\tTracee will take a nap until signaled\n");
+ ksft_print_msg("Tracee will take a nap until signaled\n");
syscall(SYS_tgkill, pid, tid, SIGSTOP);
- printf("\tTracee was resumed. Will re-check segment.\n");
+ ksft_print_msg("Tracee was resumed. Will re-check segment.\n");
val = dereference_seg_base();
- if (val != EXPECTED_VALUE) {
- printf("[FAIL]\tseg[0] == %x; should be %x\n", val, EXPECTED_VALUE);
- exit(1);
+
+ if (val == EXPECTED_VALUE) {
+ ksft_print_msg("The segment points to the right place.\n");
+ return EXIT_SUCCESS;
}
- printf("[OK]\tThe segment points to the right place.\n");
- exit(0);
+ ksft_print_msg("seg[0] == %x; should be %x\n", val, EXPECTED_VALUE);
+ return EXIT_FAILURE;
}
int status;
/* Wait for SIGSTOP. */
if (waitpid(chld, &status, 0) != chld || !WIFSTOPPED(status))
- err(1, "waitpid");
+ ksft_exit_fail_perror("waitpid");
struct user_regs_struct regs;
if (ptrace(PTRACE_GETREGS, chld, NULL, ®s) != 0)
- err(1, "PTRACE_GETREGS");
+ ksft_exit_fail_perror("PTRACE_GETREGS");
#ifdef __x86_64__
- printf("\tChild GS=0x%lx, GSBASE=0x%lx\n", (unsigned long)regs.gs, (unsigned long)regs.gs_base);
+ ksft_print_msg("Child GS=0x%lx, GSBASE=0x%lx\n", (unsigned long)regs.gs, (unsigned long)regs.gs_base);
#else
- printf("\tChild FS=0x%lx\n", (unsigned long)regs.xfs);
+ ksft_print_msg("Child FS=0x%lx\n", (unsigned long)regs.xfs);
#endif
struct user_regs_struct regs2 = regs;
@@ -204,42 +209,34 @@ int main()
regs2.eip = (unsigned long)tracee_zap_segment;
#endif
- printf("\tTracer: redirecting tracee to tracee_zap_segment()\n");
+ ksft_print_msg("Tracer: redirecting tracee to tracee_zap_segment()\n");
if (ptrace(PTRACE_SETREGS, chld, NULL, ®s2) != 0)
- err(1, "PTRACE_GETREGS");
+ ksft_exit_fail_perror("PTRACE_GETREGS");
if (ptrace(PTRACE_CONT, chld, NULL, NULL) != 0)
- err(1, "PTRACE_GETREGS");
+ ksft_exit_fail_perror("PTRACE_GETREGS");
/* Wait for SIGSTOP. */
if (waitpid(chld, &status, 0) != chld || !WIFSTOPPED(status))
- err(1, "waitpid");
+ ksft_exit_fail_perror("waitpid");
- printf("\tTracer: restoring tracee state\n");
+ ksft_print_msg("Tracer: restoring tracee state\n");
if (ptrace(PTRACE_SETREGS, chld, NULL, ®s) != 0)
- err(1, "PTRACE_GETREGS");
+ ksft_exit_fail_perror("PTRACE_GETREGS");
if (ptrace(PTRACE_DETACH, chld, NULL, NULL) != 0)
- err(1, "PTRACE_GETREGS");
+ ksft_exit_fail_perror("PTRACE_GETREGS");
/* Wait for SIGSTOP. */
if (waitpid(chld, &status, 0) != chld)
- err(1, "waitpid");
-
- if (WIFSIGNALED(status)) {
- printf("[FAIL]\tTracee crashed\n");
- return 1;
- }
-
- if (!WIFEXITED(status)) {
- printf("[FAIL]\tTracee stopped for an unexpected reason: %d\n", status);
- return 1;
- }
-
- int exitcode = WEXITSTATUS(status);
- if (exitcode != 0) {
- printf("[FAIL]\tTracee reported failure\n");
- return 1;
- }
-
- printf("[OK]\tAll is well.\n");
- return 0;
+ ksft_exit_fail_perror("waitpid");
+
+ if (WIFSIGNALED(status))
+ ksft_test_result_fail("Tracee crashed\n");
+ else if (!WIFEXITED(status))
+ ksft_test_result_fail("Tracee stopped for an unexpected reason: %d\n", status);
+ else if (WEXITSTATUS(status) != 0)
+ ksft_test_result_fail("Tracee reported failure\n");
+ else
+ ksft_test_result_pass("Tracee exited correctly\n");
+
+ ksft_finished();
}
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 4/4] selftests: entry_from_vm86: conform test to TAP format output
2024-04-14 13:18 [PATCH 0/4] selftest: x86: conform tests to TAP format output Muhammad Usama Anjum
` (2 preceding siblings ...)
2024-04-14 13:18 ` [PATCH 3/4] selftests: fsgsbase_restore: " Muhammad Usama Anjum
@ 2024-04-14 13:18 ` Muhammad Usama Anjum
2024-04-22 12:36 ` [PATCH 0/4] selftest: x86: conform tests " Muhammad Usama Anjum
` (2 subsequent siblings)
6 siblings, 0 replies; 14+ messages in thread
From: Muhammad Usama Anjum @ 2024-04-14 13:18 UTC (permalink / raw)
To: Shuah Khan, Muhammad Usama Anjum, linux-kselftest, linux-kernel; +Cc: kernel
Conform the layout, informational and status messages to TAP. No
functional change is intended other than the layout of output messages.
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
tools/testing/selftests/x86/entry_from_vm86.c | 109 +++++++++---------
1 file changed, 53 insertions(+), 56 deletions(-)
diff --git a/tools/testing/selftests/x86/entry_from_vm86.c b/tools/testing/selftests/x86/entry_from_vm86.c
index d1e919b0c1dc8..a4efa4588e6f8 100644
--- a/tools/testing/selftests/x86/entry_from_vm86.c
+++ b/tools/testing/selftests/x86/entry_from_vm86.c
@@ -23,9 +23,9 @@
#include <stdbool.h>
#include <errno.h>
#include <sys/vm86.h>
+#include "../kselftest.h"
static unsigned long load_addr = 0x10000;
-static int nerrs = 0;
static void sethandler(int sig, void (*handler)(int, siginfo_t *, void *),
int flags)
@@ -36,7 +36,7 @@ static void sethandler(int sig, void (*handler)(int, siginfo_t *, void *),
sa.sa_flags = SA_SIGINFO | flags;
sigemptyset(&sa.sa_mask);
if (sigaction(sig, &sa, 0))
- err(1, "sigaction");
+ ksft_exit_fail_perror("sigaction");
}
static void clearhandler(int sig)
@@ -46,7 +46,7 @@ static void clearhandler(int sig)
sa.sa_handler = SIG_DFL;
sigemptyset(&sa.sa_mask);
if (sigaction(sig, &sa, 0))
- err(1, "sigaction");
+ ksft_exit_fail_perror("sigaction");
}
static sig_atomic_t got_signal;
@@ -56,10 +56,8 @@ static void sighandler(int sig, siginfo_t *info, void *ctx_void)
ucontext_t *ctx = (ucontext_t*)ctx_void;
if (ctx->uc_mcontext.gregs[REG_EFL] & X86_EFLAGS_VM ||
- (ctx->uc_mcontext.gregs[REG_CS] & 3) != 3) {
- printf("[FAIL]\tSignal frame should not reflect vm86 mode\n");
- nerrs++;
- }
+ (ctx->uc_mcontext.gregs[REG_CS] & 3) != 3)
+ ksft_test_result_fail("Signal frame should not reflect vm86 mode\n");
const char *signame;
if (sig == SIGSEGV)
@@ -69,9 +67,9 @@ static void sighandler(int sig, siginfo_t *info, void *ctx_void)
else
signame = "unexpected signal";
- printf("[INFO]\t%s: FLAGS = 0x%lx, CS = 0x%hx\n", signame,
- (unsigned long)ctx->uc_mcontext.gregs[REG_EFL],
- (unsigned short)ctx->uc_mcontext.gregs[REG_CS]);
+ ksft_test_result_pass("%s: FLAGS = 0x%lx, CS = 0x%hx\n", signame,
+ (unsigned long)ctx->uc_mcontext.gregs[REG_EFL],
+ (unsigned short)ctx->uc_mcontext.gregs[REG_CS]);
got_signal = 1;
}
@@ -137,13 +135,13 @@ static bool do_test(struct vm86plus_struct *v86, unsigned long eip,
{
long ret;
- printf("[RUN]\t%s from vm86 mode\n", text);
+ ksft_print_msg("%s from vm86 mode\n", text);
v86->regs.eip = eip;
ret = vm86(VM86_ENTER, v86);
if (ret == -1 && (errno == ENOSYS || errno == EPERM)) {
- printf("[SKIP]\tvm86 %s\n",
- errno == ENOSYS ? "not supported" : "not allowed");
+ ksft_test_result_skip("vm86 %s\n",
+ errno == ENOSYS ? "not supported" : "not allowed");
return false;
}
@@ -159,29 +157,27 @@ static bool do_test(struct vm86plus_struct *v86, unsigned long eip,
else
sprintf(trapname, "%d", trapno);
- printf("[INFO]\tExited vm86 mode due to #%s\n", trapname);
+ ksft_print_msg("Exited vm86 mode due to #%s\n", trapname);
} else if (VM86_TYPE(ret) == VM86_UNKNOWN) {
- printf("[INFO]\tExited vm86 mode due to unhandled GP fault\n");
+ ksft_print_msg("Exited vm86 mode due to unhandled GP fault\n");
} else if (VM86_TYPE(ret) == VM86_TRAP) {
- printf("[INFO]\tExited vm86 mode due to a trap (arg=%ld)\n",
- VM86_ARG(ret));
+ ksft_print_msg("Exited vm86 mode due to a trap (arg=%ld)\n",
+ VM86_ARG(ret));
} else if (VM86_TYPE(ret) == VM86_SIGNAL) {
- printf("[INFO]\tExited vm86 mode due to a signal\n");
+ ksft_print_msg("Exited vm86 mode due to a signal\n");
} else if (VM86_TYPE(ret) == VM86_STI) {
- printf("[INFO]\tExited vm86 mode due to STI\n");
+ ksft_print_msg("Exited vm86 mode due to STI\n");
} else {
- printf("[INFO]\tExited vm86 mode due to type %ld, arg %ld\n",
- VM86_TYPE(ret), VM86_ARG(ret));
+ ksft_print_msg("Exited vm86 mode due to type %ld, arg %ld\n",
+ VM86_TYPE(ret), VM86_ARG(ret));
}
if (rettype == -1 ||
- (VM86_TYPE(ret) == rettype && VM86_ARG(ret) == retarg)) {
- printf("[OK]\tReturned correctly\n");
- } else {
- printf("[FAIL]\tIncorrect return reason (started at eip = 0x%lx, ended at eip = 0x%lx)\n", eip, v86->regs.eip);
- nerrs++;
- }
-
+ (VM86_TYPE(ret) == rettype && VM86_ARG(ret) == retarg))
+ ksft_test_result_pass("Returned correctly\n");
+ else
+ ksft_test_result_fail("Incorrect return reason (started at eip = 0x%lx, ended at eip = 0x%lx)\n",
+ eip, v86->regs.eip);
return true;
}
@@ -215,26 +211,20 @@ void do_umip_tests(struct vm86plus_struct *vm86, unsigned char *test_mem)
/* Results when using register operands */
msw3 = *(unsigned short *)(test_mem + 2080);
- printf("[INFO]\tResult from SMSW:[0x%04x]\n", msw1);
- printf("[INFO]\tResult from SIDT: limit[0x%04x]base[0x%08lx]\n",
- idt1.limit, idt1.base);
- printf("[INFO]\tResult from SGDT: limit[0x%04x]base[0x%08lx]\n",
- gdt1.limit, gdt1.base);
+ ksft_print_msg("Result from SMSW:[0x%04x]\n", msw1);
+ ksft_print_msg("Result from SIDT: limit[0x%04x]base[0x%08lx]\n",
+ idt1.limit, idt1.base);
+ ksft_print_msg("Result from SGDT: limit[0x%04x]base[0x%08lx]\n",
+ gdt1.limit, gdt1.base);
- if (msw1 != msw2 || msw1 != msw3)
- printf("[FAIL]\tAll the results of SMSW should be the same.\n");
- else
- printf("[PASS]\tAll the results from SMSW are identical.\n");
+ ksft_test_result((msw1 == msw2 && msw1 == msw3),
+ "All the results from SMSW are identical.\n");
- if (memcmp(&gdt1, &gdt2, sizeof(gdt1)))
- printf("[FAIL]\tAll the results of SGDT should be the same.\n");
- else
- printf("[PASS]\tAll the results from SGDT are identical.\n");
+ ksft_test_result(!memcmp(&gdt1, &gdt2, sizeof(gdt1)),
+ "All the results from SGDT are identical.\n");
- if (memcmp(&idt1, &idt2, sizeof(idt1)))
- printf("[FAIL]\tAll the results of SIDT should be the same.\n");
- else
- printf("[PASS]\tAll the results from SIDT are identical.\n");
+ ksft_test_result(!memcmp(&idt1, &idt2, sizeof(idt1)),
+ "All the results from SIDT are identical.\n");
sethandler(SIGILL, sighandler, 0);
do_test(vm86, vmcode_umip_str - vmcode, VM86_SIGNAL, 0,
@@ -250,11 +240,15 @@ void do_umip_tests(struct vm86plus_struct *vm86, unsigned char *test_mem)
int main(void)
{
struct vm86plus_struct v86;
- unsigned char *addr = mmap((void *)load_addr, 4096,
- PROT_READ | PROT_WRITE | PROT_EXEC,
- MAP_ANONYMOUS | MAP_PRIVATE, -1,0);
+ unsigned char *addr;
+
+ ksft_print_header();
+ ksft_set_plan(18);
+
+ addr = mmap((void *)load_addr, 4096, PROT_READ | PROT_WRITE | PROT_EXEC,
+ MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
if (addr != (unsigned char *)load_addr)
- err(1, "mmap");
+ ksft_exit_fail_perror("mmap");
memcpy(addr, vmcode, end_vmcode - vmcode);
addr[2048] = 2;
@@ -270,7 +264,8 @@ int main(void)
/* Use the end of the page as our stack. */
v86.regs.esp = 4096;
- assert((v86.regs.cs & 3) == 0); /* Looks like RPL = 0 */
+ if (v86.regs.cs & 3)
+ ksft_exit_fail_msg("Looks like RPL = 0\n");
/* #BR -- should deliver SIG??? */
do_test(&v86, vmcode_bound - vmcode, VM86_INTx, 5, "#BR");
@@ -333,16 +328,18 @@ int main(void)
v86.regs.ss = 0;
sethandler(SIGSEGV, sighandler, 0);
got_signal = 0;
- if (do_test(&v86, 0, VM86_SIGNAL, 0, "Execute null pointer") &&
- !got_signal) {
- printf("[FAIL]\tDid not receive SIGSEGV\n");
- nerrs++;
- }
+ if (do_test(&v86, 0, VM86_SIGNAL, 0, "Execute null pointer"))
+ ksft_test_result(got_signal, "Received SIGSEGV\n");
+ else
+ ksft_test_result_skip("Received SIGSEGV\n");
+
clearhandler(SIGSEGV);
/* Make sure nothing explodes if we fork. */
if (fork() == 0)
return 0;
- return (nerrs == 0 ? 0 : 1);
+ ksft_test_result_pass("fork succeeded\n");
+
+ ksft_finished();
}
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 0/4] selftest: x86: conform tests to TAP format output
2024-04-14 13:18 [PATCH 0/4] selftest: x86: conform tests to TAP format output Muhammad Usama Anjum
` (3 preceding siblings ...)
2024-04-14 13:18 ` [PATCH 4/4] selftests: entry_from_vm86: " Muhammad Usama Anjum
@ 2024-04-22 12:36 ` Muhammad Usama Anjum
2024-05-28 5:02 ` Muhammad Usama Anjum
2024-05-28 5:04 ` Muhammad Usama Anjum
6 siblings, 0 replies; 14+ messages in thread
From: Muhammad Usama Anjum @ 2024-04-22 12:36 UTC (permalink / raw)
To: Shuah Khan, linux-kselftest, linux-kernel; +Cc: Muhammad Usama Anjum, kernel
Reminder
On 4/14/24 6:18 PM, Muhammad Usama Anjum wrote:
> In this series, 4 tests are being conformed to TAP.
>
> Muhammad Usama Anjum (4):
> selftests: x86: check_initial_reg_state: conform test to TAP format
> output
> selftests: x86: corrupt_xstate_header: conform test to TAP format
> output
> selftests: fsgsbase_restore: conform test to TAP format output
> selftests: entry_from_vm86: conform test to TAP format output
>
> .../selftests/x86/check_initial_reg_state.c | 24 ++--
> .../selftests/x86/corrupt_xstate_header.c | 30 +++--
> tools/testing/selftests/x86/entry_from_vm86.c | 109 ++++++++--------
> .../testing/selftests/x86/fsgsbase_restore.c | 117 +++++++++---------
> 4 files changed, 139 insertions(+), 141 deletions(-)
>
--
BR,
Muhammad Usama Anjum
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/4] selftest: x86: conform tests to TAP format output
2024-04-14 13:18 [PATCH 0/4] selftest: x86: conform tests to TAP format output Muhammad Usama Anjum
` (4 preceding siblings ...)
2024-04-22 12:36 ` [PATCH 0/4] selftest: x86: conform tests " Muhammad Usama Anjum
@ 2024-05-28 5:02 ` Muhammad Usama Anjum
2024-05-28 5:04 ` Muhammad Usama Anjum
6 siblings, 0 replies; 14+ messages in thread
From: Muhammad Usama Anjum @ 2024-05-28 5:02 UTC (permalink / raw)
To: Shuah Khan, linux-kselftest, linux-kernel; +Cc: Muhammad Usama Anjum, kernel
Kind reminder
On 4/14/24 6:18 PM, Muhammad Usama Anjum wrote:
> In this series, 4 tests are being conformed to TAP.
>
> Muhammad Usama Anjum (4):
> selftests: x86: check_initial_reg_state: conform test to TAP format
> output
> selftests: x86: corrupt_xstate_header: conform test to TAP format
> output
> selftests: fsgsbase_restore: conform test to TAP format output
> selftests: entry_from_vm86: conform test to TAP format output
>
> .../selftests/x86/check_initial_reg_state.c | 24 ++--
> .../selftests/x86/corrupt_xstate_header.c | 30 +++--
> tools/testing/selftests/x86/entry_from_vm86.c | 109 ++++++++--------
> .../testing/selftests/x86/fsgsbase_restore.c | 117 +++++++++---------
> 4 files changed, 139 insertions(+), 141 deletions(-)
>
--
BR,
Muhammad Usama Anjum
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/4] selftest: x86: conform tests to TAP format output
2024-04-14 13:18 [PATCH 0/4] selftest: x86: conform tests to TAP format output Muhammad Usama Anjum
` (5 preceding siblings ...)
2024-05-28 5:02 ` Muhammad Usama Anjum
@ 2024-05-28 5:04 ` Muhammad Usama Anjum
2024-06-07 20:52 ` Shuah Khan
6 siblings, 1 reply; 14+ messages in thread
From: Muhammad Usama Anjum @ 2024-05-28 5:04 UTC (permalink / raw)
To: Shuah Khan, linux-kselftest, linux-kernel; +Cc: Muhammad Usama Anjum, kernel
Kind reminder
On 4/14/24 6:18 PM, Muhammad Usama Anjum wrote:
> In this series, 4 tests are being conformed to TAP.
>
> Muhammad Usama Anjum (4):
> selftests: x86: check_initial_reg_state: conform test to TAP format
> output
> selftests: x86: corrupt_xstate_header: conform test to TAP format
> output
> selftests: fsgsbase_restore: conform test to TAP format output
> selftests: entry_from_vm86: conform test to TAP format output
>
> .../selftests/x86/check_initial_reg_state.c | 24 ++--
> .../selftests/x86/corrupt_xstate_header.c | 30 +++--
> tools/testing/selftests/x86/entry_from_vm86.c | 109 ++++++++--------
> .../testing/selftests/x86/fsgsbase_restore.c | 117 +++++++++---------
> 4 files changed, 139 insertions(+), 141 deletions(-)
>
--
BR,
Muhammad Usama Anjum
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/4] selftest: x86: conform tests to TAP format output
2024-05-28 5:04 ` Muhammad Usama Anjum
@ 2024-06-07 20:52 ` Shuah Khan
2024-06-10 5:19 ` Muhammad Usama Anjum
0 siblings, 1 reply; 14+ messages in thread
From: Shuah Khan @ 2024-06-07 20:52 UTC (permalink / raw)
To: Muhammad Usama Anjum, Shuah Khan, linux-kselftest, linux-kernel
Cc: kernel, Shuah Khan
On 5/27/24 23:04, Muhammad Usama Anjum wrote:
> Kind reminder
>
> On 4/14/24 6:18 PM, Muhammad Usama Anjum wrote:
>> In this series, 4 tests are being conformed to TAP.
>>
>> Muhammad Usama Anjum (4):
>> selftests: x86: check_initial_reg_state: conform test to TAP format
>> output
>> selftests: x86: corrupt_xstate_header: conform test to TAP format
>> output
>> selftests: fsgsbase_restore: conform test to TAP format output
>> selftests: entry_from_vm86: conform test to TAP format output
>>
>> .../selftests/x86/check_initial_reg_state.c | 24 ++--
>> .../selftests/x86/corrupt_xstate_header.c | 30 +++--
>> tools/testing/selftests/x86/entry_from_vm86.c | 109 ++++++++--------
>> .../testing/selftests/x86/fsgsbase_restore.c | 117 +++++++++---------
>> 4 files changed, 139 insertions(+), 141 deletions(-)
>>
>
These patches usually go through x86 repo to avoid merge conflicts.
I need ack from x86 maintainers to take these. I don't see x86 list
cc'ed.
Please make sure to include everybody on these threads to get quicker
response.
thanks,
-- Shuah
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/4] selftest: x86: conform tests to TAP format output
2024-06-07 20:52 ` Shuah Khan
@ 2024-06-10 5:19 ` Muhammad Usama Anjum
2024-07-02 10:17 ` Muhammad Usama Anjum
0 siblings, 1 reply; 14+ messages in thread
From: Muhammad Usama Anjum @ 2024-06-10 5:19 UTC (permalink / raw)
To: Shuah Khan, Shuah Khan, Borislav Petkov, Dave Hansen, x86
Cc: Muhammad Usama Anjum, kernel, linux-kselftest, linux-kernel
Adding Borislav, Dave and x86 mailing list:
Please review the series.
On 6/8/24 1:52 AM, Shuah Khan wrote:
> On 5/27/24 23:04, Muhammad Usama Anjum wrote:
>> Kind reminder
>>
>> On 4/14/24 6:18 PM, Muhammad Usama Anjum wrote:
>>> In this series, 4 tests are being conformed to TAP.
>>>
>>> Muhammad Usama Anjum (4):
>>> selftests: x86: check_initial_reg_state: conform test to TAP format
>>> output
>>> selftests: x86: corrupt_xstate_header: conform test to TAP format
>>> output
>>> selftests: fsgsbase_restore: conform test to TAP format output
>>> selftests: entry_from_vm86: conform test to TAP format output
>>>
>>> .../selftests/x86/check_initial_reg_state.c | 24 ++--
>>> .../selftests/x86/corrupt_xstate_header.c | 30 +++--
>>> tools/testing/selftests/x86/entry_from_vm86.c | 109 ++++++++--------
>>> .../testing/selftests/x86/fsgsbase_restore.c | 117 +++++++++---------
>>> 4 files changed, 139 insertions(+), 141 deletions(-)
>>>
>>
>
> These patches usually go through x86 repo to avoid merge conflicts.
>
> I need ack from x86 maintainers to take these. I don't see x86 list
> cc'ed.
>
> Please make sure to include everybody on these threads to get quicker
> response.
It seems like selftests/x86 path is missing from Maintainers file and it
causes these issues. I'll look at fixing it.
>
> thanks,
> -- Shuah
>
>
--
BR,
Muhammad Usama Anjum
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/4] selftest: x86: conform tests to TAP format output
2024-06-10 5:19 ` Muhammad Usama Anjum
@ 2024-07-02 10:17 ` Muhammad Usama Anjum
2024-07-09 23:39 ` Shuah Khan
0 siblings, 1 reply; 14+ messages in thread
From: Muhammad Usama Anjum @ 2024-07-02 10:17 UTC (permalink / raw)
To: Borislav Petkov, Dave Hansen, x86
Cc: Muhammad Usama Anjum, kernel, linux-kselftest, linux-kernel,
Shuah Khan, Shuah Khan
On 6/10/24 10:19 AM, Muhammad Usama Anjum wrote:
> Adding Borislav, Dave and x86 mailing list:
> Please review the series.
Kind reminder
>
> On 6/8/24 1:52 AM, Shuah Khan wrote:
>> On 5/27/24 23:04, Muhammad Usama Anjum wrote:
>>> Kind reminder
>>>
>>> On 4/14/24 6:18 PM, Muhammad Usama Anjum wrote:
>>>> In this series, 4 tests are being conformed to TAP.
>>>>
>>>> Muhammad Usama Anjum (4):
>>>> selftests: x86: check_initial_reg_state: conform test to TAP format
>>>> output
>>>> selftests: x86: corrupt_xstate_header: conform test to TAP format
>>>> output
>>>> selftests: fsgsbase_restore: conform test to TAP format output
>>>> selftests: entry_from_vm86: conform test to TAP format output
>>>>
>>>> .../selftests/x86/check_initial_reg_state.c | 24 ++--
>>>> .../selftests/x86/corrupt_xstate_header.c | 30 +++--
>>>> tools/testing/selftests/x86/entry_from_vm86.c | 109 ++++++++--------
>>>> .../testing/selftests/x86/fsgsbase_restore.c | 117 +++++++++---------
>>>> 4 files changed, 139 insertions(+), 141 deletions(-)
>>>>
>>>
>>
>> These patches usually go through x86 repo to avoid merge conflicts.
>>
>> I need ack from x86 maintainers to take these. I don't see x86 list
>> cc'ed.
>>
>> Please make sure to include everybody on these threads to get quicker
>> response.
> It seems like selftests/x86 path is missing from Maintainers file and it
> causes these issues. I'll look at fixing it.
>
>>
>> thanks,
>> -- Shuah
>>
>>
>
--
BR,
Muhammad Usama Anjum
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/4] selftest: x86: conform tests to TAP format output
2024-07-02 10:17 ` Muhammad Usama Anjum
@ 2024-07-09 23:39 ` Shuah Khan
2024-07-10 8:58 ` Muhammad Usama Anjum
0 siblings, 1 reply; 14+ messages in thread
From: Shuah Khan @ 2024-07-09 23:39 UTC (permalink / raw)
To: Muhammad Usama Anjum, Borislav Petkov, Dave Hansen, x86
Cc: kernel, linux-kselftest, linux-kernel, Shuah Khan, Shuah Khan
On 7/2/24 04:17, Muhammad Usama Anjum wrote:
> On 6/10/24 10:19 AM, Muhammad Usama Anjum wrote:
>> Adding Borislav, Dave and x86 mailing list:
>> Please review the series.
> Kind reminder
>
Usama,
As I mentioned another TAP conversion patch from you patch if the
following command gives you TAP, there is no need to convert.
make -C tools/testing/tmp2 run_tests
make kselftest TARGETS=tmp2
kselftest framework lib.mk and runtests wrappers take care for
TAP. The reason to take care of this at framework level is to
avoid changes to individual tests. The wrapper keys off of
KSFT_* codes returned from tests.
Please don't send TAP conversion patches like this one. The output
from the commands will have duplicate messages. The reason tests
return
make -C tools/testing/tmp2 run_tests
make kselftest TARGETS=tmp2
thanks,
-- Shuah
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/4] selftest: x86: conform tests to TAP format output
2024-07-09 23:39 ` Shuah Khan
@ 2024-07-10 8:58 ` Muhammad Usama Anjum
2024-07-11 16:14 ` Shuah Khan
0 siblings, 1 reply; 14+ messages in thread
From: Muhammad Usama Anjum @ 2024-07-10 8:58 UTC (permalink / raw)
To: Shuah Khan, Borislav Petkov, Dave Hansen, x86
Cc: Muhammad Usama Anjum, kernel, linux-kselftest, linux-kernel,
Shuah Khan
Hi Shuah,
Thank you for replying.
On 7/10/24 4:39 AM, Shuah Khan wrote:
> On 7/2/24 04:17, Muhammad Usama Anjum wrote:
>> On 6/10/24 10:19 AM, Muhammad Usama Anjum wrote:
>>> Adding Borislav, Dave and x86 mailing list:
>>> Please review the series.
>> Kind reminder
>>
>
> Usama,
>
> As I mentioned another TAP conversion patch from you patch if the
> following command gives you TAP, there is no need to convert.
>
> make -C tools/testing/tmp2 run_tests
> make kselftest TARGETS=tmp2
>
> kselftest framework lib.mk and runtests wrappers take care for
> TAP. The reason to take care of this at framework level is to
> avoid changes to individual tests. The wrapper keys off of
> KSFT_* codes returned from tests.
>
> Please don't send TAP conversion patches like this one. The output
> from the commands will have duplicate messages. The reason tests
> return
>
> make -C tools/testing/tmp2 run_tests
> make kselftest TARGETS=tmp2
The current series have several improvements which are beneficial in
several ways. I think these improvements should be included. While
conforming for TAP following improvements have been made:
*[PATCH 1/4] check_initial_reg_state*
Removes manual counting of pass and fail tests
Increase readability and maintainability of tests
Print logs in standard format (without [RUN], [OK] tags)
*[PATCH 2/4] corrupt_xstate_header*
Correct the skip, pass and fail return codes. Otherwise the test always
return 0
Returns correct number of stats about passed/failed tests
Print logs in standard format
*[PATCH 3/4] fsgsbase_restore*
Add test skip support instead of returning success at skip time for the
kselftest script to understand correct exit status
Print details about errno if error occurs
Increase readability and maintainability
Print logs in standard format
*[PATCH 4/4 entry_from_vm86*
Remove manual pass/fail tests counting
Increase readability
Print details about errno if error occurs
Print logs in standard format
These improvements aren't evident from the description of patches as I
thought converting to TAP achieves all this by default. But I can improve
the patches description and send patch revision. Thoughts?
--
BR,
Muhammad Usama Anjum
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/4] selftest: x86: conform tests to TAP format output
2024-07-10 8:58 ` Muhammad Usama Anjum
@ 2024-07-11 16:14 ` Shuah Khan
0 siblings, 0 replies; 14+ messages in thread
From: Shuah Khan @ 2024-07-11 16:14 UTC (permalink / raw)
To: Muhammad Usama Anjum, Borislav Petkov, Dave Hansen, x86
Cc: kernel, linux-kselftest, linux-kernel, Shuah Khan, Shuah Khan
On 7/10/24 02:58, Muhammad Usama Anjum wrote:
> Hi Shuah,
>
> Thank you for replying.
>
> On 7/10/24 4:39 AM, Shuah Khan wrote:
>> On 7/2/24 04:17, Muhammad Usama Anjum wrote:
>>> On 6/10/24 10:19 AM, Muhammad Usama Anjum wrote:
>>>> Adding Borislav, Dave and x86 mailing list:
>>>> Please review the series.
>>> Kind reminder
>>>
>>
>> Usama,
>>
>> As I mentioned another TAP conversion patch from you patch if the
>> following command gives you TAP, there is no need to convert.
>>
>> make -C tools/testing/tmp2 run_tests
>> make kselftest TARGETS=tmp2
>>
>> kselftest framework lib.mk and runtests wrappers take care for
>> TAP. The reason to take care of this at framework level is to
>> avoid changes to individual tests. The wrapper keys off of
>> KSFT_* codes returned from tests.
>>
>> Please don't send TAP conversion patches like this one. The output
>> from the commands will have duplicate messages. The reason tests
>> return
>>
>> make -C tools/testing/tmp2 run_tests
>> make kselftest TARGETS=tmp2
> The current series have several improvements which are beneficial in
> several ways. I think these improvements should be included. While
> conforming for TAP following improvements have been made:
>
> *[PATCH 1/4] check_initial_reg_state*
> Removes manual counting of pass and fail tests
> Increase readability and maintainability of tests
> Print logs in standard format (without [RUN], [OK] tags)
>
> *[PATCH 2/4] corrupt_xstate_header*
> Correct the skip, pass and fail return codes. Otherwise the test always
> return 0
> Returns correct number of stats about passed/failed tests
> Print logs in standard format
>
> *[PATCH 3/4] fsgsbase_restore*
> Add test skip support instead of returning success at skip time for the
> kselftest script to understand correct exit status
> Print details about errno if error occurs
> Increase readability and maintainability
> Print logs in standard format
>
> *[PATCH 4/4 entry_from_vm86*
> Remove manual pass/fail tests counting
> Increase readability
> Print details about errno if error occurs
> Print logs in standard format
>
>
> These improvements aren't evident from the description of patches as I
> thought converting to TAP achieves all this by default. But I can improve
> the patches description and send patch revision. Thoughts?
>
Please drop the TAP conversion and make the other changes in your v2.
thanks,
-- Shuah
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2024-07-11 16:14 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-14 13:18 [PATCH 0/4] selftest: x86: conform tests to TAP format output Muhammad Usama Anjum
2024-04-14 13:18 ` [PATCH 1/4] selftests: x86: check_initial_reg_state: conform test " Muhammad Usama Anjum
2024-04-14 13:18 ` [PATCH 2/4] selftests: x86: corrupt_xstate_header: " Muhammad Usama Anjum
2024-04-14 13:18 ` [PATCH 3/4] selftests: fsgsbase_restore: " Muhammad Usama Anjum
2024-04-14 13:18 ` [PATCH 4/4] selftests: entry_from_vm86: " Muhammad Usama Anjum
2024-04-22 12:36 ` [PATCH 0/4] selftest: x86: conform tests " Muhammad Usama Anjum
2024-05-28 5:02 ` Muhammad Usama Anjum
2024-05-28 5:04 ` Muhammad Usama Anjum
2024-06-07 20:52 ` Shuah Khan
2024-06-10 5:19 ` Muhammad Usama Anjum
2024-07-02 10:17 ` Muhammad Usama Anjum
2024-07-09 23:39 ` Shuah Khan
2024-07-10 8:58 ` Muhammad Usama Anjum
2024-07-11 16:14 ` Shuah Khan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox