aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYing-Chun Liu (PaulLiu) <paul.liu@linaro.org>2023-04-19 03:15:59 +0800
committerPaul Liu <paul.liu@linaro.org>2023-04-28 18:37:16 +0000
commited75867038ac0c62c4833da3a4aefdf62bf2d2bc (patch)
tree690e036695500cce57eff892411014317fb7525a
parent26ed3f17f4c61d90cfc1e6de53dffa72b35c7475 (diff)
Revert "ANDROID: kvm: Hook up share/unshare callbacks for pKVM hyp services"
This reverts commit 321a9af44cd84435c73dc3ab2e43c4b7955b0b49. Change-Id: Icd732cd29a36a178eccdeafff07f29d58485b3c4
-rw-r--r--drivers/firmware/kvm-hyp-services.c81
-rw-r--r--include/linux/arm-smccc.h41
2 files changed, 1 insertions, 121 deletions
diff --git a/drivers/firmware/kvm-hyp-services.c b/drivers/firmware/kvm-hyp-services.c
index 3bb8f5034a7..95161b22f0d 100644
--- a/drivers/firmware/kvm-hyp-services.c
+++ b/drivers/firmware/kvm-hyp-services.c
@@ -8,66 +8,6 @@
#include <asm/proc-armv/ptrace.h>
#include <common.h>
#include <dm.h>
-#include <malloc.h>
-#include <virtio_types.h>
-#include <virtio.h>
-#include <linux/arm-smccc.h>
-#include <linux/compat.h>
-#include <asm/io.h>
-
-extern struct virtio_iommu_platform_ops *virtio_iommu_platform_ops;
-
-static int kvm_hyp_mem_share(struct udevice *udev, void *addr, u32 npages)
-{
- while (npages--) {
- struct arm_smccc_res res;
- phys_addr_t phys = virt_to_phys(addr);
-
- arm_smccc_hvc(ARM_SMCCC_VENDOR_HYP_KVM_MEM_SHARE_FUNC_ID,
- phys, 0, 0, 0, 0, 0, 0, &res);
- if (res.a0 != SMCCC_RET_SUCCESS)
- return -EPERM;
-
- addr += PAGE_SIZE;
- }
-
- return 0;
-}
-
-static int kvm_hyp_mem_unshare(struct udevice *udev, void *addr, u32 npages)
-{
- while (npages--) {
- struct arm_smccc_res res;
- phys_addr_t phys = virt_to_phys(addr);
-
- arm_smccc_hvc(ARM_SMCCC_VENDOR_HYP_KVM_MEM_UNSHARE_FUNC_ID,
- phys, 0, 0, 0, 0, 0, 0, &res);
- if (res.a0 != SMCCC_RET_SUCCESS)
- return -EPERM;
-
- addr += PAGE_SIZE;
- }
-
- return 0;
-}
-
-static int kvm_hyp_memshare_init(unsigned long features)
-{
- static struct virtio_iommu_platform_ops ops = {
- .map = kvm_hyp_mem_share,
- .unmap = kvm_hyp_mem_unshare,
- };
- struct arm_smccc_res res;
-
- arm_smccc_hvc(ARM_SMCCC_VENDOR_HYP_KVM_HYP_MEMINFO_FUNC_ID,
- 0, 0, 0, 0, 0, 0, 0, &res);
-
- if (res.a0 != PAGE_SIZE)
- return -ENXIO;
-
- virtio_iommu_platform_ops = &ops;
- return 0;
-}
static bool esr_is_external_data_abort(unsigned int esr)
{
@@ -111,26 +51,7 @@ int handle_synchronous_exception(struct pt_regs *pt_regs)
static int kvm_hyp_services_bind(struct udevice *dev)
{
- int ret = 0;
- struct arm_smccc_res res;
-
- arm_smccc_hvc(ARM_SMCCC_VENDOR_HYP_CALL_UID_FUNC_ID,
- 0, 0, 0, 0, 0, 0, 0, &res);
- if (res.a0 != ARM_SMCCC_VENDOR_HYP_UID_KVM_REG_0 ||
- res.a1 != ARM_SMCCC_VENDOR_HYP_UID_KVM_REG_1 ||
- res.a2 != ARM_SMCCC_VENDOR_HYP_UID_KVM_REG_2 ||
- res.a3 != ARM_SMCCC_VENDOR_HYP_UID_KVM_REG_3)
- return -ENXIO;
-
- memset(&res, 0, sizeof(res));
- arm_smccc_hvc(ARM_SMCCC_VENDOR_HYP_KVM_FEATURES_FUNC_ID,
- 0, 0, 0, 0, 0, 0, 0, &res);
-
- if (res.a0 & BIT(ARM_SMCCC_KVM_FUNC_HYP_MEMINFO))
- ret = kvm_hyp_memshare_init(res.a0);
-
- pr_debug("Probed KVM hypervisor services: 0x%08x\n", (u32)res.a0);
- return ret;
+ return 0;
}
U_BOOT_DRIVER(kvm_hyp_services) = {
diff --git a/include/linux/arm-smccc.h b/include/linux/arm-smccc.h
index 3e9c46b01e6..1da54071fe2 100644
--- a/include/linux/arm-smccc.h
+++ b/include/linux/arm-smccc.h
@@ -43,15 +43,11 @@
#define ARM_SMCCC_OWNER_SIP 2
#define ARM_SMCCC_OWNER_OEM 3
#define ARM_SMCCC_OWNER_STANDARD 4
-#define ARM_SMCCC_OWNER_STANDARD_HYP 5
-#define ARM_SMCCC_OWNER_VENDOR_HYP 6
#define ARM_SMCCC_OWNER_TRUSTED_APP 48
#define ARM_SMCCC_OWNER_TRUSTED_APP_END 49
#define ARM_SMCCC_OWNER_TRUSTED_OS 50
#define ARM_SMCCC_OWNER_TRUSTED_OS_END 63
-#define ARM_SMCCC_FUNC_QUERY_CALL_UID 0xff01
-
#define ARM_SMCCC_QUIRK_NONE 0
#define ARM_SMCCC_QUIRK_QCOM_A6 1 /* Save/restore register a6 */
@@ -69,18 +65,6 @@
ARM_SMCCC_SMC_32, \
0, 1)
-#define ARM_SMCCC_VENDOR_HYP_CALL_UID_FUNC_ID \
- ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, \
- ARM_SMCCC_SMC_32, \
- ARM_SMCCC_OWNER_VENDOR_HYP, \
- ARM_SMCCC_FUNC_QUERY_CALL_UID)
-
-/* KVM UID value: 28b46fb6-2ec5-11e9-a9ca-4b564d003a74 */
-#define ARM_SMCCC_VENDOR_HYP_UID_KVM_REG_0 0xb66fb428U
-#define ARM_SMCCC_VENDOR_HYP_UID_KVM_REG_1 0xe911c52eU
-#define ARM_SMCCC_VENDOR_HYP_UID_KVM_REG_2 0x564bcaa9U
-#define ARM_SMCCC_VENDOR_HYP_UID_KVM_REG_3 0x743a004dU
-
/* KVM "vendor specific" services */
#define ARM_SMCCC_KVM_FUNC_FEATURES 0
#define ARM_SMCCC_KVM_FUNC_PTP 1
@@ -94,31 +78,6 @@
#define ARM_SMCCC_KVM_FUNC_FEATURES_2 127
#define ARM_SMCCC_KVM_NUM_FUNCS 128
-#define ARM_SMCCC_VENDOR_HYP_KVM_FEATURES_FUNC_ID \
- ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, \
- ARM_SMCCC_SMC_32, \
- ARM_SMCCC_OWNER_VENDOR_HYP, \
- ARM_SMCCC_KVM_FUNC_FEATURES)
-
-
-#define ARM_SMCCC_VENDOR_HYP_KVM_HYP_MEMINFO_FUNC_ID \
- ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, \
- ARM_SMCCC_SMC_64, \
- ARM_SMCCC_OWNER_VENDOR_HYP, \
- ARM_SMCCC_KVM_FUNC_HYP_MEMINFO)
-
-#define ARM_SMCCC_VENDOR_HYP_KVM_MEM_SHARE_FUNC_ID \
- ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, \
- ARM_SMCCC_SMC_64, \
- ARM_SMCCC_OWNER_VENDOR_HYP, \
- ARM_SMCCC_KVM_FUNC_MEM_SHARE)
-
-#define ARM_SMCCC_VENDOR_HYP_KVM_MEM_UNSHARE_FUNC_ID \
- ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, \
- ARM_SMCCC_SMC_64, \
- ARM_SMCCC_OWNER_VENDOR_HYP, \
- ARM_SMCCC_KVM_FUNC_MEM_UNSHARE)
-
#define ARM_SMCCC_VENDOR_HYP_KVM_MMIO_GUARD_INFO_FUNC_ID \
ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, \
ARM_SMCCC_SMC_64, \