X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_config_class.h;h=0c7ef4cbeff2e280addaf013573665471c35c6a3;hb=cc58a5fffaa40aecc5c493ac7285b93d743b3258;hp=8f74a448f5d888e251158847e2d0b9fbdf3af43a;hpb=921772c23185aa48406a390c58546ee463f49dc4;p=palacios-OLD.git diff --git a/palacios/src/palacios/vmm_config_class.h b/palacios/src/palacios/vmm_config_class.h index 8f74a44..0c7ef4c 100644 --- a/palacios/src/palacios/vmm_config_class.h +++ b/palacios/src/palacios/vmm_config_class.h @@ -76,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; }