clear-pkgs-linux-iot-lts2018/0481-vhm-refine-vm-related-...

169 lines
6.4 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Yin Fengwei <fengwei.yin@intel.com>
Date: Fri, 31 Aug 2018 10:58:57 +0800
Subject: [PATCH] vhm: refine vm related hypercall/ioctrl
Change-Id: I028f59998733f3d066e2ead7768297570d97bf22
Tracked-On:218445
Signed-off-by: Yin Fengwei <fengwei.yin@intel.com>
Reviewed-on:
Reviewed-by: Dong, Eddie <eddie.dong@intel.com>
Tested-by: Dong, Eddie <eddie.dong@intel.com>
---
drivers/char/vhm/vhm_dev.c | 17 ++++-------------
drivers/vhm/vhm_hypercall.c | 9 ++-------
include/linux/vhm/acrn_common.h | 11 +++++++----
include/linux/vhm/acrn_hv_defs.h | 5 ++---
include/linux/vhm/vhm_hypercall.h | 2 +-
include/linux/vhm/vhm_ioctl_defs.h | 5 ++---
6 files changed, 18 insertions(+), 31 deletions(-)
diff --git a/drivers/char/vhm/vhm_dev.c b/drivers/char/vhm/vhm_dev.c
index e36a5e225e12..d3fd572c1642 100644
--- a/drivers/char/vhm/vhm_dev.c
+++ b/drivers/char/vhm/vhm_dev.c
@@ -189,12 +189,12 @@ static long vhm_dev_ioctl(struct file *filep,
vm->vmid = created_vm.vmid;
- pr_info("vhm: VM %ld created\n", created_vm.vmid);
+ pr_info("vhm: VM %d created\n", created_vm.vmid);
break;
}
- case IC_RESUME_VM: {
- ret = hcall_resume_vm(vm->vmid);
+ case IC_START_VM: {
+ ret = hcall_start_vm(vm->vmid);
if (ret < 0) {
pr_err("vhm: failed to start VM %ld!\n", vm->vmid);
return -EFAULT;
@@ -221,15 +221,6 @@ static long vhm_dev_ioctl(struct file *filep,
break;
}
- case IC_QUERY_VMSTATE: {
- ret = hcall_query_vm_state(vm->vmid);
- if (ret < 0) {
- pr_err("vhm: failed to query VM State%ld!\n", vm->vmid);
- return -EFAULT;
- }
- return ret;
- }
-
case IC_CREATE_VCPU: {
struct acrn_create_vcpu cv;
@@ -240,7 +231,7 @@ static long vhm_dev_ioctl(struct file *filep,
ret = acrn_hypercall2(HC_CREATE_VCPU, vm->vmid,
virt_to_phys(&cv));
if (ret < 0) {
- pr_err("vhm: failed to create vcpu %ld!\n", cv.vcpuid);
+ pr_err("vhm: failed to create vcpu %d!\n", cv.vcpu_id);
return -EFAULT;
}
diff --git a/drivers/vhm/vhm_hypercall.c b/drivers/vhm/vhm_hypercall.c
index 94a95933d51e..b2738474afaf 100644
--- a/drivers/vhm/vhm_hypercall.c
+++ b/drivers/vhm/vhm_hypercall.c
@@ -57,9 +57,9 @@ inline long hcall_create_vm(unsigned long vminfo)
return acrn_hypercall2(HC_CREATE_VM, 0, vminfo);
}
-inline long hcall_resume_vm(unsigned long vmid)
+inline long hcall_start_vm(unsigned long vmid)
{
- return acrn_hypercall1(HC_RESUME_VM, vmid);
+ return acrn_hypercall1(HC_START_VM, vmid);
}
inline long hcall_pause_vm(unsigned long vmid)
@@ -72,11 +72,6 @@ inline long hcall_destroy_vm(unsigned long vmid)
return acrn_hypercall1(HC_DESTROY_VM, vmid);
}
-inline long hcall_query_vm_state(unsigned long vmid)
-{
- return acrn_hypercall1(HC_QUERY_VMSTATE, vmid);
-}
-
inline long hcall_set_memmap(unsigned long vmid, unsigned long memmap)
{
return acrn_hypercall2(HC_VM_SET_MEMMAP, vmid, memmap);
diff --git a/include/linux/vhm/acrn_common.h b/include/linux/vhm/acrn_common.h
index aa61fbed2596..23f80acd92f6 100644
--- a/include/linux/vhm/acrn_common.h
+++ b/include/linux/vhm/acrn_common.h
@@ -141,13 +141,16 @@ struct vhm_request_buffer {
/* Common API params */
struct acrn_create_vm {
- unsigned long vmid; /* OUT: HV return vmid to VHM */
- unsigned long vcpu_num; /* IN: VM vcpu number */
+ int32_t vmid; /* OUT: return vmid to VHM. Keep it first field */
+ uint32_t vcpu_num; /* IN: VM vcpu number */
+ uint8_t GUID[16]; /* IN: GUID of this vm */
+ uint8_t trusty_enabled;/* IN: whether trusty is enabled */
+ uint8_t reserved[31]; /* Reserved for future use */
} __attribute__((aligned(8)));
struct acrn_create_vcpu {
- int vcpuid; /* IN: vcpu id */
- int pcpuid; /* IN: pcpu id */
+ uint32_t vcpu_id; /* IN: vcpu id */
+ uint32_t pcpu_id; /* IN: pcpu id */
} __attribute__((aligned(8)));
struct acrn_set_ioreq_buffer {
diff --git a/include/linux/vhm/acrn_hv_defs.h b/include/linux/vhm/acrn_hv_defs.h
index fa32243a6407..eb1d4c974a3e 100644
--- a/include/linux/vhm/acrn_hv_defs.h
+++ b/include/linux/vhm/acrn_hv_defs.h
@@ -70,10 +70,9 @@
#define HC_GET_API_VERSION _HC_ID(HC_ID, HC_ID_VM_BASE + 0x00)
#define HC_CREATE_VM _HC_ID(HC_ID, HC_ID_VM_BASE + 0x01)
#define HC_DESTROY_VM _HC_ID(HC_ID, HC_ID_VM_BASE + 0x02)
-#define HC_RESUME_VM _HC_ID(HC_ID, HC_ID_VM_BASE + 0x03)
+#define HC_START_VM _HC_ID(HC_ID, HC_ID_VM_BASE + 0x03)
#define HC_PAUSE_VM _HC_ID(HC_ID, HC_ID_VM_BASE + 0x04)
-#define HC_QUERY_VMSTATE _HC_ID(HC_ID, HC_ID_VM_BASE + 0x05)
-#define HC_CREATE_VCPU _HC_ID(HC_ID, HC_ID_VM_BASE + 0x06)
+#define HC_CREATE_VCPU _HC_ID(HC_ID, HC_ID_VM_BASE + 0x05)
/* IRQ and Interrupts */
#define HC_ID_IRQ_BASE 0x100UL
diff --git a/include/linux/vhm/vhm_hypercall.h b/include/linux/vhm/vhm_hypercall.h
index 5447e951bf4b..b40f8f898046 100644
--- a/include/linux/vhm/vhm_hypercall.h
+++ b/include/linux/vhm/vhm_hypercall.h
@@ -138,7 +138,7 @@ static inline long acrn_hypercall4(unsigned long hcall_id, unsigned long param1,
}
inline long hcall_create_vm(unsigned long vminfo);
-inline long hcall_resume_vm(unsigned long vmid);
+inline long hcall_start_vm(unsigned long vmid);
inline long hcall_pause_vm(unsigned long vmid);
inline long hcall_destroy_vm(unsigned long vmid);
inline long hcall_query_vm_state(unsigned long vmid);
diff --git a/include/linux/vhm/vhm_ioctl_defs.h b/include/linux/vhm/vhm_ioctl_defs.h
index 79d91a858226..e157d6a86a66 100644
--- a/include/linux/vhm/vhm_ioctl_defs.h
+++ b/include/linux/vhm/vhm_ioctl_defs.h
@@ -60,10 +60,9 @@
#define IC_GET_API_VERSION _IC_ID(IC_ID, IC_ID_VM_BASE + 0x00)
#define IC_CREATE_VM _IC_ID(IC_ID, IC_ID_VM_BASE + 0x01)
#define IC_DESTROY_VM _IC_ID(IC_ID, IC_ID_VM_BASE + 0x02)
-#define IC_RESUME_VM _IC_ID(IC_ID, IC_ID_VM_BASE + 0x03)
+#define IC_START_VM _IC_ID(IC_ID, IC_ID_VM_BASE + 0x03)
#define IC_PAUSE_VM _IC_ID(IC_ID, IC_ID_VM_BASE + 0x04)
-#define IC_QUERY_VMSTATE _IC_ID(IC_ID, IC_ID_VM_BASE + 0x05)
-#define IC_CREATE_VCPU _IC_ID(IC_ID, IC_ID_VM_BASE + 0x06)
+#define IC_CREATE_VCPU _IC_ID(IC_ID, IC_ID_VM_BASE + 0x05)
/* IRQ and Interrupts */
#define IC_ID_IRQ_BASE 0x100UL
--
https://clearlinux.org