dm: get vcpu num from hypervisor when create VM

Now, we pre-define VM configuration statically in HV. So HV can create
vcpus instead of DM when VM create.

This patch get the created vcpu_num from HV. vm_create_vcpu can be
removed later if kernel can get vcpu_num correctly without
IC_CREATE_VCPU ioctl.

v4: Keep vm_create_vcpu in DM for compatbility. We might remove it when
kernel is ready.

Tracked-On: #3663
Signed-off-by: Shuo A Liu <shuo.a.liu@intel.com>
This commit is contained in:
Shuo A Liu 2019-05-21 16:13:40 +08:00 committed by ACRN System Integration
parent 489937f7b8
commit d8acff1f44
3 changed files with 4 additions and 4 deletions

View File

@ -258,7 +258,6 @@ add_cpu(struct vmctx *ctx, int guest_ncpus)
fprintf(stderr, "ERROR: could not create VCPU %d\n", i);
return error;
}
CPU_SET_ATOMIC(i, &cpumask);
mt_vmm_info[i].mt_ctx = ctx;
@ -962,7 +961,7 @@ main(int argc, char *argv[])
for (;;) {
pr_notice("vm_create: %s\n", vmname);
ctx = vm_create(vmname, (unsigned long)vhm_req_buf);
ctx = vm_create(vmname, (unsigned long)vhm_req_buf, &guest_ncpus);
if (!ctx) {
pr_err("vm_create failed");
goto create_fail;

View File

@ -87,7 +87,7 @@ check_api(int fd)
static int devfd = -1;
struct vmctx *
vm_create(const char *name, uint64_t req_buf)
vm_create(const char *name, uint64_t req_buf, int *vcpu_num)
{
struct vmctx *ctx;
struct acrn_create_vm create_vm;
@ -168,6 +168,7 @@ vm_create(const char *name, uint64_t req_buf)
goto err;
}
*vcpu_num = create_vm.vcpu_num;
ctx->vmid = create_vm.vmid;
return ctx;

View File

@ -87,7 +87,7 @@ struct vm_isa_irq {
*
* Returns a pointer to the memory segment on success and MAP_FAILED otherwise.
*/
struct vmctx *vm_create(const char *name, uint64_t req_buf);
struct vmctx *vm_create(const char *name, uint64_t req_buf, int* vcpu_num);
void vm_pause(struct vmctx *ctx);
void vm_reset(struct vmctx *ctx);
int vm_create_ioreq_client(struct vmctx *ctx);