On Thu, Jun 05, 2025 at 09:18:06AM -0700, Jesse Taube wrote:
Add tests for the DBTR SBI extension.
Signed-off-by: Jesse Taube jesse@rivosinc.com
V1 -> V2:
- Call report_prefix_pop before returning
- Disable compressed instructions in exec_call, update related comment
- Remove extra "| 1" in dbtr_test_load
- Remove extra newlines
- Remove extra tabs in check_exec
- Remove typedefs from enums
- Return when dbtr_install_trigger fails
- s/avalible/available/g
- s/unistall/uninstall/g
V2 -> V3:
- Change SBI_DBTR_SHMEM_INVALID_ADDR to -1UL
- Move all dbtr functions to sbi-dbtr.c
- Move INSN_LEN to processor.h
- Update include list
- Use C-style comments
lib/riscv/asm/sbi.h | 1 + riscv/Makefile | 1 + riscv/sbi-dbtr.c | 811 ++++++++++++++++++++++++++++++++++++++++++++ riscv/sbi-tests.h | 1 + riscv/sbi.c | 1 + 5 files changed, 815 insertions(+) create mode 100644 riscv/sbi-dbtr.c
diff --git a/lib/riscv/asm/sbi.h b/lib/riscv/asm/sbi.h index a5738a5c..78fd6e2a 100644 --- a/lib/riscv/asm/sbi.h +++ b/lib/riscv/asm/sbi.h @@ -51,6 +51,7 @@ enum sbi_ext_id { SBI_EXT_SUSP = 0x53555350, SBI_EXT_FWFT = 0x46574654, SBI_EXT_SSE = 0x535345,
- SBI_EXT_DBTR = 0x44425452,
}; enum sbi_ext_base_fid { diff --git a/riscv/Makefile b/riscv/Makefile index 11e68eae..55c7ac93 100644 --- a/riscv/Makefile +++ b/riscv/Makefile @@ -20,6 +20,7 @@ all: $(tests) $(TEST_DIR)/sbi-deps += $(TEST_DIR)/sbi-asm.o $(TEST_DIR)/sbi-deps += $(TEST_DIR)/sbi-fwft.o $(TEST_DIR)/sbi-deps += $(TEST_DIR)/sbi-sse.o +$(TEST_DIR)/sbi-deps += $(TEST_DIR)/sbi-dbtr.o all_deps += $($(TEST_DIR)/sbi-deps) diff --git a/riscv/sbi-dbtr.c b/riscv/sbi-dbtr.c new file mode 100644 index 00000000..a4bfa41e --- /dev/null +++ b/riscv/sbi-dbtr.c @@ -0,0 +1,811 @@ +// SPDX-License-Identifier: GPL-2.0-only +/*
- SBI DBTR testsuite
- Copyright (C) 2025, Rivos Inc., Jesse Taube jesse@rivosinc.com
- */
+#include <asm/io.h> +#include <bitops.h> +#include <asm/processor.h>
+#include "sbi-tests.h"
Still missing at least libcflat.h (report_*). I'm not a big fan of libcflat.h (a collection of random stuff...), but until somebody gets around to dividing it up correctly, then pretty much every unit test file will need it.
+#define SBI_DBTR_SHMEM_INVALID_ADDR (-1UL)
I was going to complain that my suggestion to use get_invalid_addr() was ignored, but now I see that SBI_DBTR_SHMEM_INVALID_ADDR isn't used at all?
Thanks, drew