mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-25 15:02:13 +00:00
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:
parent
489937f7b8
commit
d8acff1f44
@ -258,7 +258,6 @@ add_cpu(struct vmctx *ctx, int guest_ncpus)
|
|||||||
fprintf(stderr, "ERROR: could not create VCPU %d\n", i);
|
fprintf(stderr, "ERROR: could not create VCPU %d\n", i);
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
CPU_SET_ATOMIC(i, &cpumask);
|
CPU_SET_ATOMIC(i, &cpumask);
|
||||||
|
|
||||||
mt_vmm_info[i].mt_ctx = ctx;
|
mt_vmm_info[i].mt_ctx = ctx;
|
||||||
@ -962,7 +961,7 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
pr_notice("vm_create: %s\n", vmname);
|
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) {
|
if (!ctx) {
|
||||||
pr_err("vm_create failed");
|
pr_err("vm_create failed");
|
||||||
goto create_fail;
|
goto create_fail;
|
||||||
|
@ -87,7 +87,7 @@ check_api(int fd)
|
|||||||
static int devfd = -1;
|
static int devfd = -1;
|
||||||
|
|
||||||
struct vmctx *
|
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 vmctx *ctx;
|
||||||
struct acrn_create_vm create_vm;
|
struct acrn_create_vm create_vm;
|
||||||
@ -168,6 +168,7 @@ vm_create(const char *name, uint64_t req_buf)
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*vcpu_num = create_vm.vcpu_num;
|
||||||
ctx->vmid = create_vm.vmid;
|
ctx->vmid = create_vm.vmid;
|
||||||
|
|
||||||
return ctx;
|
return ctx;
|
||||||
|
@ -87,7 +87,7 @@ struct vm_isa_irq {
|
|||||||
*
|
*
|
||||||
* Returns a pointer to the memory segment on success and MAP_FAILED otherwise.
|
* 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_pause(struct vmctx *ctx);
|
||||||
void vm_reset(struct vmctx *ctx);
|
void vm_reset(struct vmctx *ctx);
|
||||||
int vm_create_ioreq_client(struct vmctx *ctx);
|
int vm_create_ioreq_client(struct vmctx *ctx);
|
||||||
|
Loading…
Reference in New Issue
Block a user