HV:fix vcpu more than one return entry

ACRN coding guideline requires function shall have only one return entry.
Fix it.

Tracked-On: #861
Signed-off-by: Huihuang Shi <huihuang.shi@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
Huihuang Shi 2019-06-27 18:23:11 +08:00 committed by Eddie Dong
parent 198e01716a
commit 74b788988d

View File

@ -349,11 +349,7 @@ int32_t create_vcpu(uint16_t pcpu_id, struct acrn_vm *vm, struct acrn_vcpu **rtn
* vm->hw.created_vcpus++; * vm->hw.created_vcpus++;
*/ */
vcpu_id = atomic_xadd16(&vm->hw.created_vcpus, 1U); vcpu_id = atomic_xadd16(&vm->hw.created_vcpus, 1U);
if (vcpu_id >= CONFIG_MAX_VCPUS_PER_VM) { if (vcpu_id < CONFIG_MAX_VCPUS_PER_VM) {
vm->hw.created_vcpus--;
pr_err("%s, vcpu id is invalid!\n", __func__);
return -EINVAL;
}
/* Allocate memory for VCPU */ /* Allocate memory for VCPU */
vcpu = &(vm->hw.vcpu_array[vcpu_id]); vcpu = &(vm->hw.vcpu_array[vcpu_id]);
(void)memset((void *)vcpu, 0U, sizeof(struct acrn_vcpu)); (void)memset((void *)vcpu, 0U, sizeof(struct acrn_vcpu));
@ -406,14 +402,20 @@ int32_t create_vcpu(uint16_t pcpu_id, struct acrn_vm *vm, struct acrn_vcpu **rtn
*rtn_vcpu_handle = vcpu; *rtn_vcpu_handle = vcpu;
vcpu->launched = false; vcpu->launched = false;
vcpu->running = 0; vcpu->running = 0U;
vcpu->arch.nr_sipi = 0; vcpu->arch.nr_sipi = 0U;
vcpu->state = VCPU_INIT; vcpu->state = VCPU_INIT;
reset_vcpu_regs(vcpu); reset_vcpu_regs(vcpu);
(void)memset(&vcpu->req, 0U, sizeof(struct io_request)); (void)memset((void *)&vcpu->req, 0U, sizeof(struct io_request));
ret = 0;
} else {
vm->hw.created_vcpus -= 1U;
pr_err("%s, vcpu id is invalid!\n", __func__);
ret = -EINVAL;
}
return 0; return ret;
} }
/* /*
@ -561,14 +563,12 @@ void reset_vcpu(struct acrn_vcpu *vcpu)
ASSERT(vcpu->state != VCPU_RUNNING, ASSERT(vcpu->state != VCPU_RUNNING,
"reset vcpu when it's running"); "reset vcpu when it's running");
if (vcpu->state == VCPU_INIT) if (vcpu->state != VCPU_INIT) {
return;
vcpu->state = VCPU_INIT; vcpu->state = VCPU_INIT;
vcpu->launched = false; vcpu->launched = false;
vcpu->running = 0; vcpu->running = 0U;
vcpu->arch.nr_sipi = 0; vcpu->arch.nr_sipi = 0U;
vcpu->arch.exception_info.exception = VECTOR_INVALID; vcpu->arch.exception_info.exception = VECTOR_INVALID;
vcpu->arch.cur_context = NORMAL_WORLD; vcpu->arch.cur_context = NORMAL_WORLD;
@ -586,6 +586,7 @@ void reset_vcpu(struct acrn_vcpu *vcpu)
vlapic_reset(vlapic); vlapic_reset(vlapic);
reset_vcpu_regs(vcpu); reset_vcpu_regs(vcpu);
}
} }
void pause_vcpu(struct acrn_vcpu *vcpu, enum vcpu_state new_state) void pause_vcpu(struct acrn_vcpu *vcpu, enum vcpu_state new_state)
@ -699,17 +700,14 @@ static uint64_t build_stack_frame(struct acrn_vcpu *vcpu)
/* help function for vcpu create */ /* help function for vcpu create */
int32_t prepare_vcpu(struct acrn_vm *vm, uint16_t pcpu_id) int32_t prepare_vcpu(struct acrn_vm *vm, uint16_t pcpu_id)
{ {
int32_t ret = 0; int32_t ret;
struct acrn_vcpu *vcpu = NULL; struct acrn_vcpu *vcpu = NULL;
char thread_name[16]; char thread_name[16];
uint64_t orig_val, final_val; uint64_t orig_val, final_val;
struct acrn_vm_config *conf; struct acrn_vm_config *conf;
ret = create_vcpu(pcpu_id, vm, &vcpu); ret = create_vcpu(pcpu_id, vm, &vcpu);
if (ret != 0) { if (ret == 0) {
return ret;
}
set_pcpu_used(pcpu_id); set_pcpu_used(pcpu_id);
/* Update CLOS for this CPU */ /* Update CLOS for this CPU */
@ -727,6 +725,7 @@ int32_t prepare_vcpu(struct acrn_vm *vm, uint16_t pcpu_id)
vcpu->sched_obj.host_sp = build_stack_frame(vcpu); vcpu->sched_obj.host_sp = build_stack_frame(vcpu);
vcpu->sched_obj.prepare_switch_out = context_switch_out; vcpu->sched_obj.prepare_switch_out = context_switch_out;
vcpu->sched_obj.prepare_switch_in = context_switch_in; vcpu->sched_obj.prepare_switch_in = context_switch_in;
}
return ret; return ret;
} }