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

KVM: arm64: Extend pKVM page ownership selftests to cover forced reclaim



Extend the pKVM page ownership selftests to forcefully reclaim a donated
page and check that it cannot be re-donated at the same IPA.

Tested-by: default avatarFuad Tabba <tabba@google.com>
Tested-by: default avatarMostafa Saleh <smostafa@google.com>
Signed-off-by: default avatarWill Deacon <will@kernel.org>
Link: https://patch.msgid.link/20260330144841.26181-36-will@kernel.org


Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
parent 8972a991
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -1815,8 +1815,20 @@ void pkvm_ownership_selftest(void *base)
	assert_transition_res(-EPERM,	__pkvm_hyp_donate_host, pfn, 1);

	selftest_state.host = PKVM_PAGE_OWNED;
	selftest_state.guest[0] = PKVM_NOPAGE;
	assert_transition_res(0,	__pkvm_host_reclaim_page_guest, gfn, vm);
	selftest_state.guest[0] = PKVM_POISON;
	assert_transition_res(0,	__pkvm_host_force_reclaim_page_guest, phys);
	assert_transition_res(-EPERM,	__pkvm_host_donate_guest, pfn, gfn, vcpu);
	assert_transition_res(-EPERM,	__pkvm_host_share_guest, pfn, gfn, 1, vcpu, prot);

	selftest_state.host = PKVM_NOPAGE;
	selftest_state.guest[1] = PKVM_PAGE_OWNED;
	assert_transition_res(0,	__pkvm_host_donate_guest, pfn, gfn + 1, vcpu);

	selftest_state.host = PKVM_PAGE_OWNED;
	selftest_state.guest[1] = PKVM_NOPAGE;
	assert_transition_res(0,	__pkvm_host_reclaim_page_guest, gfn + 1, vm);
	assert_transition_res(-EPERM,	__pkvm_host_donate_guest, pfn, gfn, vcpu);
	assert_transition_res(-EPERM,	__pkvm_host_share_guest, pfn, gfn, 1, vcpu, prot);

	selftest_state.host = PKVM_NOPAGE;
	selftest_state.hyp = PKVM_PAGE_OWNED;