X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_config_class.h;h=0c7ef4cbeff2e280addaf013573665471c35c6a3;hb=20795e931e9ceed9853351133fcd6adf4e6a2de9;hp=1965059d4a4cc24aac81fc711105a4aa5274898d;hpb=1cc3466d1edc53576a1f70fe45b048b219e5c468;p=palacios.git diff --git a/palacios/src/palacios/vmm_config_class.h b/palacios/src/palacios/vmm_config_class.h index 1965059..0c7ef4c 100644 --- a/palacios/src/palacios/vmm_config_class.h +++ b/palacios/src/palacios/vmm_config_class.h @@ -22,8 +22,6 @@ static int pre_config_pc_core(struct guest_info * info, v3_cfg_tree_t * cfg) { - - info->cpu_mode = REAL; info->mem_mode = PHYSICAL_MEM; @@ -78,6 +76,22 @@ static int post_config_pc(struct v3_vm_info * vm, v3_cfg_tree_t * cfg) { memcpy(rombios_dst, v3_rombios_start, v3_rombios_end - v3_rombios_start); } + + if (vm->num_cores>1 && !v3_find_dev(vm,"apic")) { + PrintError("palacios: VM has more than one core, but no device named \"apic\"!\n"); + return -1; + } + + if (v3_find_dev(vm,"apic")) { + if (!v3_find_dev(vm,"ioapic")) { + PrintError("palacios: VM cores have apics, but there is no device named \"ioapic\"!\n"); + } + if (v3_inject_mptable(vm) == -1) { + PrintError("Failed to inject mptable during configuration\n"); + return -1; + } + } + return 0; }