diff options
author | Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org> | 2023-04-19 03:15:59 +0800 |
---|---|---|
committer | Paul Liu <paul.liu@linaro.org> | 2023-04-28 18:37:16 +0000 |
commit | ed75867038ac0c62c4833da3a4aefdf62bf2d2bc (patch) | |
tree | 690e036695500cce57eff892411014317fb7525a | |
parent | 26ed3f17f4c61d90cfc1e6de53dffa72b35c7475 (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.c | 81 | ||||
-rw-r--r-- | include/linux/arm-smccc.h | 41 |
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, \ |