On 2025/5/12 下午2:53, Huacai Chen wrote:
Hi, Bibo,
On Sun, Apr 27, 2025 at 2:45 PM Bibo Mao maobibo@loongson.cn wrote:
This patchset adds KVM selftests for LoongArch system, currently only some common test cases are supported and pass to run. These test cases are listed as following: coalesced_io_test demand_paging_test dirty_log_perf_test dirty_log_test guest_print_test hardware_disable_test kvm_binary_stats_test kvm_create_max_vcpus kvm_page_table_test memslot_modification_stress_test memslot_perf_test set_memory_region_test
I have applied this series [1] but with some modifications (see comments in other patches). You can test it to see if everything is OK.
And if it's OK, it is better to fetch the patches from [1] and then send V12.
There is error reporting with checkpatch as followings: ERROR: trailing statements should be on next line #281: FILE: tools/testing/selftests/kvm/lib/loongarch/processor.c:192: + while (1) ;
This is already solved in V9, which patch does [1] come from? +void route_exception(struct ex_regs *regs) +{ + unsigned long pc, estat, badv; + + pc = regs->pc; + estat = regs->estat; + badv = regs->badv; + ucall(UCALL_UNHANDLED, 3, pc, estat, badv); + while (1) + ; +}
Regards Bibo Mao
[1] https://github.com/chenhuacai/linux/commits/loongarch-next
Huacai
Changes in v11:
- Fix a typo issue in notes of patch 2, it is kvm_util_arch.h rather than kvm_util_base.h
Changes in v10:
- Add PS_64K and remove PS_8K in file include/loongarch/processor.h
- Fix a typo issue in file lib/loongarch/processor.c
- Update file MAINTAINERS about LoongArch KVM selftests
Changes in v9:
- Add vm mode VM_MODE_P47V47_16K, LoongArch VM uses this mode by default, rather than VM_MODE_P36V47_16K.
- Refresh some spelling issues in changelog.
Changes in v8:
- Porting patch based on the latest version.
- For macro PC_OFFSET_EXREGS, offsetof() method is used for C header file, still hardcoded definition for assemble language.
Changes in v7:
- Refine code to add LoongArch support in test case
set_memory_region_test.
Changes in v6:
- Refresh the patch based on latest kernel 6.8-rc1, add LoongArch
support about testcase set_memory_region_test. 2. Add hardware_disable_test test case. 3. Drop modification about macro DEFAULT_GUEST_TEST_MEM, it is problem of LoongArch binutils, this issue is raised to LoongArch binutils owners.
Changes in v5:
- In LoongArch kvm self tests, the DEFAULT_GUEST_TEST_MEM could be
0x130000000, it is different from the default value in memstress.h. So we Move the definition of DEFAULT_GUEST_TEST_MEM into LoongArch ucall.h, and add 'ifndef' condition for DEFAULT_GUEST_TEST_MEM in memstress.h.
Changes in v4:
- Remove the based-on flag, as the LoongArch KVM patch series
have been accepted by Linux kernel, so this can be applied directly in kernel.
Changes in v3:
- Improve implementation of LoongArch VM page walk.
- Add exception handler for LoongArch.
- Add dirty_log_test, dirty_log_perf_test, guest_print_test
test cases for LoongArch. 4. Add __ASSEMBLER__ macro to distinguish asm file and c file. 5. Move ucall_arch_do_ucall to the header file and make it as static inline to avoid function calls. 6. Change the DEFAULT_GUEST_TEST_MEM base addr for LoongArch.
Changes in v2:
- We should use ".balign 4096" to align the assemble code with 4K in
exception.S instead of "align 12". 2. LoongArch only supports 3 or 4 levels page tables, so we remove the hanlders for 2-levels page table. 3. Remove the DEFAULT_LOONGARCH_GUEST_STACK_VADDR_MIN and use the common DEFAULT_GUEST_STACK_VADDR_MIN to allocate stack memory in guest. 4. Reorganize the test cases supported by LoongArch. 5. Fix some code comments. 6. Add kvm_binary_stats_test test case into LoongArch KVM selftests.
Bibo Mao (5): KVM: selftests: Add VM_MODE_P47V47_16K VM mode KVM: selftests: Add KVM selftests header files for LoongArch KVM: selftests: Add core KVM selftests support for LoongArch KVM: selftests: Add ucall test support for LoongArch KVM: selftests: Add test cases for LoongArch
MAINTAINERS | 2 + tools/testing/selftests/kvm/Makefile | 2 +- tools/testing/selftests/kvm/Makefile.kvm | 18 + .../testing/selftests/kvm/include/kvm_util.h | 6 + .../kvm/include/loongarch/kvm_util_arch.h | 7 + .../kvm/include/loongarch/processor.h | 141 ++++++++ .../selftests/kvm/include/loongarch/ucall.h | 20 + tools/testing/selftests/kvm/lib/kvm_util.c | 3 + .../selftests/kvm/lib/loongarch/exception.S | 59 +++ .../selftests/kvm/lib/loongarch/processor.c | 342 ++++++++++++++++++ .../selftests/kvm/lib/loongarch/ucall.c | 38 ++ .../selftests/kvm/set_memory_region_test.c | 2 +- 12 files changed, 638 insertions(+), 2 deletions(-) create mode 100644 tools/testing/selftests/kvm/include/loongarch/kvm_util_arch.h create mode 100644 tools/testing/selftests/kvm/include/loongarch/processor.h create mode 100644 tools/testing/selftests/kvm/include/loongarch/ucall.h create mode 100644 tools/testing/selftests/kvm/lib/loongarch/exception.S create mode 100644 tools/testing/selftests/kvm/lib/loongarch/processor.c create mode 100644 tools/testing/selftests/kvm/lib/loongarch/ucall.c
base-commit: 5bc1018675ec28a8a60d83b378d8c3991faa5a27
2.39.3