This series fixes a performance issue in the KVM selftests, specifically those that use perf_test_util. These tests create vCPU threads which immediately enter guest mode and start faulting in memory. Creating vCPU threads while faulting in memory is a recipe for generating a lot of contention on the mmap_sem, as thread creation requires acquiring the mmap_sem in write mode. This series fixes this issue by ensuring that all vCPUs threads are created before entering guest mode. As part of fixing this issue I consolidated the code to create and join vCPU threads across all users of perf_test_util. The last commit is an unrelated perf_test_util cleanup. Note: This series applies on top of https://lore.kernel.org/kvm/20211111000310.1435032-1-dmatlack@xxxxxxxxxx/, although the dependency on the series is just cosmetic. David Matlack (4): KVM: selftests: Start at iteration 0 instead of -1 KVM: selftests: Move vCPU thread creation and joining to common helpers KVM: selftests: Wait for all vCPU to be created before entering guest mode KVM: selftests: Use perf_test_destroy_vm in memslot_modification_stress_test .../selftests/kvm/access_tracking_perf_test.c | 46 +++--------- .../selftests/kvm/demand_paging_test.c | 25 +------ .../selftests/kvm/dirty_log_perf_test.c | 19 ++--- .../selftests/kvm/include/perf_test_util.h | 5 ++ .../selftests/kvm/lib/perf_test_util.c | 72 +++++++++++++++++++ .../kvm/memslot_modification_stress_test.c | 25 ++----- 6 files changed, 96 insertions(+), 96 deletions(-) -- 2.34.0.rc1.387.gb447b232ab-goog