Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

KVM: selftests: Macrofy vm_get_stat() to auto-generate stat name string

Turn vm_get_stat() into a macro that generates a string for the stat name,
as opposed to taking a string. This will allow hardening stat usage in
the future to generate errors on unknown stats at compile time.

No functional change intended.

Link: https://lore.kernel.org/r/20250111005049.1247555-5-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>

+12 -12
+7 -7
tools/testing/selftests/kvm/include/kvm_util.h
··· 534 534 void __vm_get_stat(struct kvm_vm *vm, const char *stat_name, uint64_t *data, 535 535 size_t max_elements); 536 536 537 - static inline uint64_t vm_get_stat(struct kvm_vm *vm, const char *stat_name) 538 - { 539 - uint64_t data; 540 - 541 - __vm_get_stat(vm, stat_name, &data, 1); 542 - return data; 543 - } 537 + #define vm_get_stat(vm, stat) \ 538 + ({ \ 539 + uint64_t data; \ 540 + \ 541 + __vm_get_stat(vm, #stat, &data, 1); \ 542 + data; \ 543 + }) 544 544 545 545 void vm_create_irqchip(struct kvm_vm *vm); 546 546
+3 -3
tools/testing/selftests/kvm/x86/dirty_log_page_splitting_test.c
··· 41 41 42 42 static void get_page_stats(struct kvm_vm *vm, struct kvm_page_stats *stats, const char *stage) 43 43 { 44 - stats->pages_4k = vm_get_stat(vm, "pages_4k"); 45 - stats->pages_2m = vm_get_stat(vm, "pages_2m"); 46 - stats->pages_1g = vm_get_stat(vm, "pages_1g"); 44 + stats->pages_4k = vm_get_stat(vm, pages_4k); 45 + stats->pages_2m = vm_get_stat(vm, pages_2m); 46 + stats->pages_1g = vm_get_stat(vm, pages_1g); 47 47 stats->hugepages = stats->pages_2m + stats->pages_1g; 48 48 49 49 pr_debug("\nPage stats after %s: 4K: %ld 2M: %ld 1G: %ld huge: %ld\n",
+2 -2
tools/testing/selftests/kvm/x86/nx_huge_pages_test.c
··· 73 73 { 74 74 int actual_pages_2m; 75 75 76 - actual_pages_2m = vm_get_stat(vm, "pages_2m"); 76 + actual_pages_2m = vm_get_stat(vm, pages_2m); 77 77 78 78 TEST_ASSERT(actual_pages_2m == expected_pages_2m, 79 79 "Unexpected 2m page count. Expected %d, got %d", ··· 84 84 { 85 85 int actual_splits; 86 86 87 - actual_splits = vm_get_stat(vm, "nx_lpage_splits"); 87 + actual_splits = vm_get_stat(vm, nx_lpage_splits); 88 88 89 89 TEST_ASSERT(actual_splits == expected_splits, 90 90 "Unexpected NX huge page split count. Expected %d, got %d",