Commit 56a14984 authored by Zenghui Yu's avatar Zenghui Yu Committed by Marc Zyngier
Browse files

KVM: arm64: selftests: Close the GIC FD in arch_timer_edge_cases



Close the GIC FD to free the reference it holds to the VM so that we can
correctly clean up the VM. This also gets rid of the

	"KVM: debugfs: duplicate directory 395722-4"

warning when running arch_timer_edge_cases.

Signed-off-by: default avatarZenghui Yu <yuzenghui@huawei.com>
Reviewed-by: default avatarMiguel Luis <miguel.luis@oracle.com>
Reviewed-by: default avatarSebastian Ott <sebott@redhat.com>
Link: https://lore.kernel.org/r/20250608095402.1131-1-yuzenghui@huawei.com


Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
parent 1fbe6861
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -954,6 +954,8 @@ static void test_init_timer_irq(struct kvm_vm *vm, struct kvm_vcpu *vcpu)
	pr_debug("ptimer_irq: %d; vtimer_irq: %d\n", ptimer_irq, vtimer_irq);
}

static int gic_fd;

static void test_vm_create(struct kvm_vm **vm, struct kvm_vcpu **vcpu,
			   enum arch_timer timer)
{
@@ -968,12 +970,20 @@ static void test_vm_create(struct kvm_vm **vm, struct kvm_vcpu **vcpu,
	vcpu_args_set(*vcpu, 1, timer);

	test_init_timer_irq(*vm, *vcpu);
	vgic_v3_setup(*vm, 1, 64);
	gic_fd = vgic_v3_setup(*vm, 1, 64);
	__TEST_REQUIRE(gic_fd >= 0, "Failed to create vgic-v3");

	sync_global_to_guest(*vm, test_args);
	sync_global_to_guest(*vm, CVAL_MAX);
	sync_global_to_guest(*vm, DEF_CNT);
}

static void test_vm_cleanup(struct kvm_vm *vm)
{
	close(gic_fd);
	kvm_vm_free(vm);
}

static void test_print_help(char *name)
{
	pr_info("Usage: %s [-h] [-b] [-i iterations] [-l long_wait_ms] [-p] [-v]\n"
@@ -1060,13 +1070,13 @@ int main(int argc, char *argv[])
	if (test_args.test_virtual) {
		test_vm_create(&vm, &vcpu, VIRTUAL);
		test_run(vm, vcpu);
		kvm_vm_free(vm);
		test_vm_cleanup(vm);
	}

	if (test_args.test_physical) {
		test_vm_create(&vm, &vcpu, PHYSICAL);
		test_run(vm, vcpu);
		kvm_vm_free(vm);
		test_vm_cleanup(vm);
	}

	return 0;