From 709e2b9ed9962e44e83ef04773614746ee98cb16 Mon Sep 17 00:00:00 2001 From: Will Deacon Date: Thu, 7 Jul 2022 15:48:58 +0100 Subject: [PATCH] Revert "Revert "ANDROID: KVM: arm64: Allow userspace to receive SHARE and UNSHARE notifications"" This reverts commit 68c3df5b39f81599a6d1c788d7e07d9fa29106a5. Bug: 233587962 Signed-off-by: Will Deacon Change-Id: Id5caa080b3b271e3e84e583ceb6d18b0823c52c7 --- arch/arm64/kvm/arm.c | 3 ++- arch/arm64/kvm/hypercalls.c | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index e9333495fdd0..1341bcd0d278 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -65,7 +65,8 @@ static DEFINE_PER_CPU(unsigned char, kvm_arm_hardware_enabled); DEFINE_STATIC_KEY_FALSE(userspace_irqchip_in_use); /* KVM "vendor" hypercalls which may be forwarded to userspace on request. */ -#define KVM_EXIT_HYPERCALL_VALID_MASK (0) +#define KVM_EXIT_HYPERCALL_VALID_MASK (BIT(ARM_SMCCC_KVM_FUNC_MEM_SHARE) | \ + BIT(ARM_SMCCC_KVM_FUNC_MEM_UNSHARE)) int kvm_arch_vcpu_should_kick(struct kvm_vcpu *vcpu) { diff --git a/arch/arm64/kvm/hypercalls.c b/arch/arm64/kvm/hypercalls.c index 5d31640d745f..e7c71396b7e0 100644 --- a/arch/arm64/kvm/hypercalls.c +++ b/arch/arm64/kvm/hypercalls.c @@ -163,6 +163,14 @@ int kvm_hvc_call_handler(struct kvm_vcpu *vcpu) case ARM_SMCCC_VENDOR_HYP_KVM_PTP_FUNC_ID: kvm_ptp_get_time(vcpu, val); break; + case ARM_SMCCC_VENDOR_HYP_KVM_MEM_SHARE_FUNC_ID: + if (!kvm_vcpu_exit_hcall(vcpu, ARM_SMCCC_KVM_FUNC_MEM_SHARE, 3)) + return 0; + break; + case ARM_SMCCC_VENDOR_HYP_KVM_MEM_UNSHARE_FUNC_ID: + if (!kvm_vcpu_exit_hcall(vcpu, ARM_SMCCC_KVM_FUNC_MEM_UNSHARE, 3)) + return 0; + break; case ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_MAP_FUNC_ID: if (kvm_vm_is_protected(vcpu->kvm) && !topup_hyp_memcache(vcpu)) val[0] = SMCCC_RET_SUCCESS;