#include <palacios/vmm_io.h>
#include <palacios/vmm_msr.h>
#include <palacios/vmm_mptable.h>
-
+#include <palacios/vmm_sprintf.h>
char * vm_class = v3_cfg_val(vm_cfg, "class");
char * align_str = v3_cfg_val(v3_cfg_subtree(vm_cfg, "memory"), "alignment");
uint32_t sched_hz = 100; // set the schedule frequency to 100 HZ
-
+
+
if (!memory_str) {
PrintError("Memory is a required configuration parameter\n");
return -1;
}
// Amount of ram the Guest will have, always in MB
- vm->mem_size = atoi(memory_str) * 1024 * 1024;
+ vm->mem_size = (addr_t)atoi(memory_str) * 1024 * 1024;
vm->mem_align = get_alignment(align_str);
- PrintDebug("Alignment computed as 0x%x\n", vm->mem_align);
+ PrintDebug("Alignment for %lu bytes of memory computed as 0x%x\n", vm->mem_size, vm->mem_align);
if (strcasecmp(vm_class, "PC") == 0) {
vm->vm_class = V3_PC_VM;
return -1;
}
- if (v3_inject_mptable(vm) == -1) {
- PrintError("Failed to inject mptable during configuration\n");
- return -1;
- }
-
-
return 0;
}
-struct v3_vm_info * v3_config_guest(void * cfg_blob) {
- v3_cpu_arch_t cpu_type = v3_get_cpu_type(v3_get_cpu_id());
+struct v3_vm_info * v3_config_guest(void * cfg_blob, void * priv_data) {
+ v3_cpu_arch_t cpu_type = v3_get_cpu_type(V3_Get_CPU());
struct v3_config * cfg_data = NULL;
struct v3_vm_info * vm = NULL;
int num_cores = 0;
return NULL;
}
+ vm->host_priv_data = priv_data;
+
vm->cfg_data = cfg_data;
V3_Print("Preconfiguration\n");
+int v3_free_config(struct v3_vm_info * vm) {
+
+ v3_free_htable(vm->cfg_data->file_table, 1, 0);
+
+ v3_xml_free(vm->cfg_data->cfg);
+
+ V3_Free(vm->cfg_data);
+ return 0;
+}
+
static int setup_memory_map(struct v3_vm_info * vm, v3_cfg_tree_t * cfg) {