Skip to content

Commit 64a4630

Browse files
mingqiangchiwenlingz
authored andcommitted
hv:refine prepare_vm0 api
-- fix MISRA-C violation "procedure has more than one exit point" for this api -- change start_vm to void type since it is always return 0 Tracked-On: #861 Signed-off-by: Mingqiang Chi <mingqiang.chi@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
1 parent b5e0efc commit 64a4630

File tree

3 files changed

+24
-24
lines changed

3 files changed

+24
-24
lines changed

hypervisor/arch/x86/guest/vm.c

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ int32_t shutdown_vm(struct acrn_vm *vm)
242242
/**
243243
* * @pre vm != NULL
244244
*/
245-
int32_t start_vm(struct acrn_vm *vm)
245+
void start_vm(struct acrn_vm *vm)
246246
{
247247
struct acrn_vcpu *vcpu = NULL;
248248

@@ -251,8 +251,6 @@ int32_t start_vm(struct acrn_vm *vm)
251251
/* Only start BSP (vid = 0) and let BSP start other APs */
252252
vcpu = vcpu_from_vid(vm, 0U);
253253
schedule_vcpu(vcpu);
254-
255-
return 0;
256254
}
257255

258256
/**
@@ -402,30 +400,32 @@ static int32_t prepare_vm0(void)
402400
vm0_desc.vm_hw_num_cores = phys_cpu_num;
403401

404402
err = create_vm(&vm0_desc, &vm);
405-
if (err != 0) {
406-
return err;
407-
}
408403

409-
/* Allocate all cpus to vm0 at the beginning */
410-
for (i = 0U; i < vm0_desc.vm_hw_num_cores; i++) {
411-
err = prepare_vcpu(vm, i);
412-
if (err != 0) {
413-
return err;
404+
if (err == 0) {
405+
/* Allocate all cpus to vm0 at the beginning */
406+
for (i = 0U; i < vm0_desc.vm_hw_num_cores; i++) {
407+
err = prepare_vcpu(vm, i);
408+
if (err != 0) {
409+
break;
410+
}
414411
}
415-
}
416412

417-
if (vm_sw_loader == NULL) {
418-
vm_sw_loader = general_sw_loader;
419-
}
413+
if (err == 0) {
420414

421-
if (is_vm0(vm)) {
422-
(void )vm_sw_loader(vm);
423-
}
415+
if (vm_sw_loader == NULL) {
416+
vm_sw_loader = general_sw_loader;
417+
}
418+
419+
if (is_vm0(vm)) {
420+
(void)vm_sw_loader(vm);
421+
}
424422

425-
/* start vm0 BSP automatically */
426-
err = start_vm(vm);
423+
/* start vm0 BSP automatically */
424+
start_vm(vm);
427425

428-
pr_acrnlog("Start VM0");
426+
pr_acrnlog("Start VM0");
427+
}
428+
}
429429

430430
return err;
431431
}

hypervisor/common/hypercall.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,15 +177,15 @@ int32_t hcall_destroy_vm(uint16_t vmid)
177177
*/
178178
int32_t hcall_start_vm(uint16_t vmid)
179179
{
180-
int32_t ret;
180+
int32_t ret = 0;
181181
struct acrn_vm *target_vm = get_vm_from_vmid(vmid);
182182

183183
if (target_vm == NULL) {
184184
ret = -1;
185185
} else if (target_vm->sw.io_shared_page == NULL) {
186186
ret = -1;
187187
} else {
188-
ret = start_vm(target_vm);
188+
start_vm(target_vm);
189189
}
190190

191191
return ret;

hypervisor/include/arch/x86/guest/vm.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ int32_t shutdown_vm(struct acrn_vm *vm);
263263
void pause_vm(struct acrn_vm *vm);
264264
void resume_vm(struct acrn_vm *vm);
265265
void resume_vm_from_s3(struct acrn_vm *vm, uint32_t wakeup_vec);
266-
int32_t start_vm(struct acrn_vm *vm);
266+
void start_vm(struct acrn_vm *vm);
267267
int32_t reset_vm(struct acrn_vm *vm);
268268
int32_t create_vm(struct vm_description *vm_desc, struct acrn_vm **rtn_vm);
269269
int32_t prepare_vm(uint16_t pcpu_id);

0 commit comments

Comments
 (0)