Commit 24006968 authored by Will Deacon's avatar Will Deacon Committed by Marc Zyngier
Browse files

KVM: arm64: Allow get_pkvm_hyp_vm() to take a reference to a dying VM



Now that completion of the teardown path requires a refcount of zero for
the target VM, we can allow get_pkvm_hyp_vm() to take a reference on a
dying VM, which is necessary to unshare pages with a non-protected VM
during the teardown process itself.

Note that vCPUs belonging to a dying VM cannot be loaded and pages can
only be reclaimed from a protected VM (via
__pkvm_reclaim_dying_guest_page()) if the target VM is in the dying
state.

Signed-off-by: default avatarWill Deacon <will@kernel.org>
Link: https://patch.msgid.link/20260331155056.28220-3-will@kernel.org


Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
parent 760299a1
Loading
Loading
Loading
Loading
+1 −7
Original line number Diff line number Diff line
@@ -309,14 +309,8 @@ struct pkvm_hyp_vm *get_pkvm_hyp_vm(pkvm_handle_t handle)

	hyp_spin_lock(&vm_table_lock);
	hyp_vm = get_vm_by_handle(handle);
	if (!hyp_vm)
		goto unlock;

	if (hyp_vm->kvm.arch.pkvm.is_dying)
		hyp_vm = NULL;
	else
	if (hyp_vm)
		hyp_page_ref_inc(hyp_virt_to_page(hyp_vm));
unlock:
	hyp_spin_unlock(&vm_table_lock);

	return hyp_vm;