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@xxxxxxxxxxxxxxx, 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