vmx_ret |= check_vmcs_write(VMCS_LINK_PTR_HIGH, (addr_t)0xffffffffUL);
#endif
-
+ if (vmx_ret != VMX_SUCCESS) {
+ PrintError(core->vm_info, core, "Error configuring VMX\n");
+ return -1;
+ }
PrintDebug(core->vm_info, core, "Serializing VMCS: %p\n", (void *)vmx_state->vmcs_ptr_phys);
vmx_ret = vmcs_clear(vmx_state->vmcs_ptr_phys);
+ if (vmx_ret != VMX_SUCCESS) {
+ PrintError(core->vm_info,core,"VMCS Clear failed\n");
+ return;
+ }
+
core->core_run_state = CORE_STOPPED;
return;
}
PrintDebug(info->vm_info, info, "Starting VMX core %u\n", info->vcpu_id);
+#ifdef V3_CONFIG_MULTIBOOT
+ if (v3_setup_multiboot_core_for_boot(info)) {
+ PrintError(info->vm_info, info, "Failed to setup Multiboot core...\n");
+ return -1;
+ }
+#endif
+
#ifdef V3_CONFIG_HVM
if (v3_setup_hvm_hrt_core_for_boot(info)) {
PrintError(info->vm_info, info, "Failed to setup HRT core...\n");
}
+#ifdef V3_CONFIG_HVM
+ if (v3_handle_hvm_reset(info) > 0) {
+ continue;
+ }
+#endif
+
+#ifdef V3_CONFIG_MULTIBOOT
+ if (v3_handle_multiboot_reset(info) > 0) {
+ continue;
+ }
+#endif
+
#ifdef V3_CONFIG_PMU_TELEMETRY
v3_pmu_telemetry_start(info);
#endif