[PATCH v2 07/12] KVM: selftests: Drop unreachable, dead code from hardware disable test
From: Sean Christopherson
Date: Fri Jul 31 2026 - 13:21:14 EST
Drop all of the code that is unreachable in the hardware disable test, as
it adds a lot of noise that makes the test seem far more complicated than
it actually is.
Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx>
---
.../selftests/kvm/hardware_disable_test.c | 41 +++++++------------
1 file changed, 14 insertions(+), 27 deletions(-)
diff --git a/tools/testing/selftests/kvm/hardware_disable_test.c b/tools/testing/selftests/kvm/hardware_disable_test.c
index bd23c1300370..b8115b2dcae3 100644
--- a/tools/testing/selftests/kvm/hardware_disable_test.c
+++ b/tools/testing/selftests/kvm/hardware_disable_test.c
@@ -15,6 +15,7 @@
#include <test_util.h>
#include "kvm_util.h"
+#include "ucall_common.h"
#define VCPU_NUM 4
#define SLEEPING_THREAD_NUM (1 << 4)
@@ -28,7 +29,7 @@ static void guest_code(void)
{
for (;;)
; /* Some busy work */
- printf("Should not be reached.\n");
+ GUEST_ASSERT(0);
}
static void *run_vcpu(void *arg)
@@ -42,10 +43,8 @@ static void *run_vcpu(void *arg)
vcpu_run(vcpu);
- TEST_ASSERT(false, "%s: exited with reason %d: %s",
- __func__, run->exit_reason,
- exit_reason_str(run->exit_reason));
- pthread_exit(NULL);
+ TEST_FAIL("vCPU%d exited with reason %d: %s",
+ vcpu->id, run->exit_reason, exit_reason_str(run->exit_reason));
}
static void *sleeping_thread(void *arg)
@@ -56,12 +55,11 @@ static void *sleeping_thread(void *arg)
kvm_sched_setaffinity(0, sizeof(cpu_set_t), &threads_cpu_set);
#endif
- while (true) {
+ while (1) {
fd = open("/dev/null", O_RDWR);
close(fd);
}
- TEST_ASSERT(false, "%s: exited", __func__);
- pthread_exit(NULL);
+ TEST_FAIL("%s: exited", __func__);
}
static inline void check_create_thread(pthread_t *thread, pthread_attr_t *attr,
@@ -73,22 +71,12 @@ static inline void check_create_thread(pthread_t *thread, pthread_attr_t *attr,
TEST_ASSERT(r == 0, "%s: failed to create thread", __func__);
}
-static inline void check_join(pthread_t thread, void **retval)
-{
- int r;
-
- r = pthread_join(thread, retval);
- TEST_ASSERT(r == 0, "%s: failed to join thread", __func__);
-}
-
static void run_test(u32 run)
{
struct kvm_vcpu *vcpu;
pthread_attr_t attr;
struct kvm_vm *vm;
- pthread_t threads[VCPU_NUM];
- pthread_t throw_away;
- void *b;
+ pthread_t thread;
u32 i, j;
pthread_attr_init(&attr);
@@ -102,19 +90,18 @@ static void run_test(u32 run)
for (i = 0; i < VCPU_NUM; ++i) {
vcpu = vm_vcpu_add(vm, i, guest_code);
- check_create_thread(&threads[i], &attr, run_vcpu, vcpu);
+ check_create_thread(&thread, &attr, run_vcpu, vcpu);
- for (j = 0; j < SLEEPING_THREAD_NUM; ++j) {
- check_create_thread(&throw_away, &attr, sleeping_thread,
+ for (j = 0; j < SLEEPING_THREAD_NUM; ++j)
+ check_create_thread(&thread, &attr, sleeping_thread,
(void *)NULL);
- }
}
pr_debug("%s: [%d] all threads launched\n", __func__, run);
sem_post(sem);
- for (i = 0; i < VCPU_NUM; ++i)
- check_join(threads[i], &b);
- /* Should not be reached */
- TEST_ASSERT(false, "%s: [%d] child escaped the ninja", __func__, run);
+
+ /* Wait for the parent to SIGKILL this child. */
+ while (1)
+ pause();
}
void wait_for_child_setup(pid_t pid)
--
2.55.0.508.g3f0d502094-goog