On Thu, May 18, 2023 at 12:17:18PM +0800, Haibo Xu wrote: ...
The idea of these *to_str functions is to dump output that can be copy+pasted into a reg array (hence the trailing commas in print_reg lines). So we can't just print random lines here or return '##UNKOWN##', as that won't compile. Instead, the default should return
str_with_index("KVM_REG_RISCV_CONFIG_REG(##)", reg_off)
Thanks for sharing the detailed idea, will fix it in next version!
I guess we could also return a string like,
"KVM_REG_RISCV_CONFIG_REG(##) /* UNKNOWN */"
as that would still compile and also convey the message that this register doesn't have a name because the test doesn't know it yet.
...
We should share all the code above, except print_reg(), with aarch64. I'll send a patch series that splits the arch-neutral code out of the aarch64 test that you can base this test on.
Good idea! I will rebase the patch based on your work.
Ok, I've pushed patches to [1]. This series introduces two things to KVM selftests. Primarily it splits the aarch64/get-reg-list test into a cross-arch get-reg-list test and an $ARCH_DIR/get-reg-list.o object file, which the cross-arch test depends on. To do that, it also introduces the concept of a "split test", a test that has a cross-arch part which depends on an arch-specific part. Using a split test is cleaner than the #ifdeffery we usually do for cross-arch tests.
I've added kvmarm@lists.linux.dev, Marc, Oliver, and Sean to the CC of this message. You'll want to add them when you post v2 as well.
[1] https://github.com/jones-drew/linux/commits/arm64/kself/get-reg-list
Thanks, drew