X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_config.c;h=886aee7f2db3b256f113fe0957fad6695da01a43;hp=136213d7ed456bdef15c836216bda89a4ffda6c3;hb=0e097100a26bc43eb8964734fa43130fc4c71429;hpb=6cbdc3c14d417e26bf6dfdf08e19e09db44fdf51 diff --git a/palacios/src/palacios/vmm_config.c b/palacios/src/palacios/vmm_config.c index 136213d..886aee7 100644 --- a/palacios/src/palacios/vmm_config.c +++ b/palacios/src/palacios/vmm_config.c @@ -27,6 +27,7 @@ #include #include #include +#include #ifdef CONFIG_SYMBIOTIC #include @@ -48,6 +49,17 @@ #include +/* +static const char * test_cfg_xml = \ +"\n \ +2048\n\ +\n\ +\n\ +\n\ +\n\ +"; +*/ + #include @@ -78,6 +90,29 @@ static int passthrough_mem_write(addr_t guest_addr, void * src, uint_t length, v int v3_pre_config_guest(struct guest_info * info, struct v3_vm_config * config_ptr) { extern v3_cpu_arch_t v3_cpu_types[]; + + /* + { + struct v3_xml * cfg = v3_xml_parse((char *)test_cfg_xml); + struct v3_xml * devs = NULL; + struct v3_xml * tmp = NULL; + PrintError("Parsed XML COnfig %s\n", v3_xml_name(cfg)); + + PrintError("memory=%s\n", v3_xml_txt(v3_xml_child(cfg, "memory"))); + + devs = v3_xml_child(cfg, "devices"); + + for (tmp = v3_xml_child(devs, "device"); tmp; tmp = v3_xml_next(tmp)) { + PrintError("Device: %s, id=%s\n", + v3_xml_name(tmp), + v3_xml_attr(tmp, "id")); + } + v3_xml_free(cfg); + + return -1; + } + */ + // Amount of ram the Guest will have, rounded to a 4K page boundary info->mem_size = config_ptr->mem_size & ~(addr_t)0xfff; @@ -103,7 +138,10 @@ int v3_pre_config_guest(struct guest_info * info, struct v3_vm_config * config_p v3_init_host_events(info); // Initialize the memory map - v3_init_shadow_map(info); + if (v3_init_shadow_map(info) == -1) { + PrintError("Could not initialize shadow map\n"); + return -1; + } if ((v3_cpu_types[info->cpu_id] == V3_SVM_REV3_CPU) && (config_ptr->enable_nested_paging == 1)) { @@ -276,6 +314,7 @@ static int setup_devices(struct guest_info * info, struct v3_vm_config * config_ v3_create_device(info, "LNX_VIRTIO_BLK", "PCI"); v3_create_device(info, "LNX_VIRTIO_BALLOON", "PCI"); v3_create_device(info, "SYM_SWAP", "LNX_VIRTIO_BLK"); + // v3_create_device(info, "TMP_BLK", "LNX_VIRTIO_BLK"); v3_create_device(info, "IDE", &ide_config); @@ -324,6 +363,18 @@ static int setup_devices(struct guest_info * info, struct v3_vm_config * config_ PrintDebug("Creating NET HD\n"); v3_create_device(info, "NET-HD", &cfg); } + + } else if (config_ptr->pri_disk_type == VIRTIO) { + if (config_ptr->pri_disk_con == RAM) { + struct ram_hd_cfg cfg = {"LNX_VIRTIO_BLK", 0, 0, + (addr_t)(config_ptr->pri_disk_info.ram.data_ptr), + config_ptr->pri_disk_info.ram.size}; + + PrintDebug("Creating Virtio RAM HD\n"); + + v3_create_device(info, "RAM-HD", &cfg); + } + } }