diff --git a/arch/arm64/kvm/hyp/nvhe/mem_protect.c b/arch/arm64/kvm/hyp/nvhe/mem_protect.c index 810436d85608..5d2ce6e14405 100644 --- a/arch/arm64/kvm/hyp/nvhe/mem_protect.c +++ b/arch/arm64/kvm/hyp/nvhe/mem_protect.c @@ -929,6 +929,9 @@ static int host_complete_share(u64 addr, const struct pkvm_mem_transition *tx, { u64 size = tx->nr_pages * PAGE_SIZE; + if (tx->initiator.id == PKVM_ID_GUEST) + psci_mem_protect_dec(); + return __host_set_page_state_range(addr, size, PKVM_PAGE_SHARED_BORROWED); } @@ -937,6 +940,9 @@ static int host_complete_unshare(u64 addr, const struct pkvm_mem_transition *tx) u64 size = tx->nr_pages * PAGE_SIZE; pkvm_id owner_id = initiator_owner_id(tx); + if (tx->initiator.id == PKVM_ID_GUEST) + psci_mem_protect_inc(); + return host_stage2_set_owner_locked(addr, size, owner_id); }