HV: return bool in sanitize_vm_config

Return true if vm configs is sanitized successfully, otherwise return false;

Tracked-On: #2291

Signed-off-by: Victor Sun <victor.sun@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
Victor Sun 2019-04-09 15:40:24 +08:00 committed by ACRN System Integration
parent 6071234337
commit cb10dc7e73
3 changed files with 10 additions and 10 deletions

View File

@ -23,9 +23,9 @@ struct acrn_vm_config *get_vm_config(uint16_t vm_id)
/** /**
* @pre vm_config != NULL * @pre vm_config != NULL
*/ */
int32_t sanitize_vm_config(void) bool sanitize_vm_config(void)
{ {
int32_t ret = 0; bool ret = true;
uint16_t vm_id; uint16_t vm_id;
uint64_t sos_pcpu_bitmap, pre_launch_pcpu_bitmap; uint64_t sos_pcpu_bitmap, pre_launch_pcpu_bitmap;
struct acrn_vm_config *vm_config; struct acrn_vm_config *vm_config;
@ -43,11 +43,11 @@ int32_t sanitize_vm_config(void)
switch (vm_config->type) { switch (vm_config->type) {
case PRE_LAUNCHED_VM: case PRE_LAUNCHED_VM:
if (vm_config->pcpu_bitmap == 0U) { if (vm_config->pcpu_bitmap == 0U) {
ret = -EINVAL; ret = false;
/* GUEST_FLAG_RT must be set if we have GUEST_FLAG_LAPIC_PASSTHROUGH set in guest_flags */ /* GUEST_FLAG_RT must be set if we have GUEST_FLAG_LAPIC_PASSTHROUGH set in guest_flags */
} else if (((vm_config->guest_flags & GUEST_FLAG_LAPIC_PASSTHROUGH) != 0U) } else if (((vm_config->guest_flags & GUEST_FLAG_LAPIC_PASSTHROUGH) != 0U)
&& ((vm_config->guest_flags & GUEST_FLAG_RT) == 0U)) { && ((vm_config->guest_flags & GUEST_FLAG_RT) == 0U)) {
ret = -EINVAL; ret = false;
} else { } else {
pre_launch_pcpu_bitmap |= vm_config->pcpu_bitmap; pre_launch_pcpu_bitmap |= vm_config->pcpu_bitmap;
} }
@ -56,13 +56,13 @@ int32_t sanitize_vm_config(void)
/* Deduct pcpus of PRE_LAUNCHED_VMs */ /* Deduct pcpus of PRE_LAUNCHED_VMs */
sos_pcpu_bitmap ^= pre_launch_pcpu_bitmap; sos_pcpu_bitmap ^= pre_launch_pcpu_bitmap;
if ((sos_pcpu_bitmap == 0U) || ((vm_config->guest_flags & GUEST_FLAG_LAPIC_PASSTHROUGH) != 0U)) { if ((sos_pcpu_bitmap == 0U) || ((vm_config->guest_flags & GUEST_FLAG_LAPIC_PASSTHROUGH) != 0U)) {
ret = -EINVAL; ret = false;
} else { } else {
vm_config->pcpu_bitmap = sos_pcpu_bitmap; vm_config->pcpu_bitmap = sos_pcpu_bitmap;
} }
break; break;
case NORMAL_VM: case NORMAL_VM:
ret = -EINVAL; ret = false;
break; break;
default: default:
/* Nothing to do for a UNDEFINED_VM, break directly. */ /* Nothing to do for a UNDEFINED_VM, break directly. */
@ -74,11 +74,11 @@ int32_t sanitize_vm_config(void)
cat_cap_info.enabled = true; cat_cap_info.enabled = true;
} else { } else {
pr_err("%s set wrong CLOS or CAT is not supported\n", __func__); pr_err("%s set wrong CLOS or CAT is not supported\n", __func__);
ret = -EINVAL; ret = false;
} }
} }
if (ret != 0) { if (!ret) {
break; break;
} }
} }

View File

@ -198,7 +198,7 @@ void init_cpu_post(uint16_t pcpu_id)
panic("hardware not support!"); panic("hardware not support!");
} }
if (sanitize_vm_config() != 0) { if (!sanitize_vm_config()) {
panic("VM Configuration Error!"); panic("VM Configuration Error!");
} }

View File

@ -63,7 +63,7 @@ struct acrn_vm_config {
} __aligned(8); } __aligned(8);
struct acrn_vm_config *get_vm_config(uint16_t vm_id); struct acrn_vm_config *get_vm_config(uint16_t vm_id);
int32_t sanitize_vm_config(void); bool sanitize_vm_config(void);
extern struct acrn_vm_config vm_configs[CONFIG_MAX_VM_NUM]; extern struct acrn_vm_config vm_configs[CONFIG_MAX_VM_NUM];