From: Patrick Bridges Date: Fri, 30 Jul 2010 18:18:17 +0000 (-0600) Subject: Final changes to paging configuration format. Nested and shadow paging X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=commitdiff_plain;h=6adf4a960b1a2999fa47f5e29e7583cfdf4d3b6f;p=palacios.git Final changes to paging configuration format. Nested and shadow paging both verified to work. --- diff --git a/palacios/src/palacios/vmm_config.c b/palacios/src/palacios/vmm_config.c index 7aee4cc..9ba0a11 100644 --- a/palacios/src/palacios/vmm_config.c +++ b/palacios/src/palacios/vmm_config.c @@ -247,34 +247,33 @@ static int determine_paging_mode(struct guest_info *info, v3_cfg_tree_t * core_c v3_cfg_tree_t *vm_tree = info->vm_info->cfg_data->cfg; v3_cfg_tree_t *pg_tree = v3_cfg_subtree(vm_tree, "paging"); - char *pg_type = v3_cfg_val(vm_tree, "paging"); char *pg_mode = v3_cfg_val(pg_tree, "mode"); - PrintDebug("Paging mode specified as %s(%s)\n", pg_type, pg_mode); + PrintDebug("Paging mode specified as %s\n", pg_mode); - if (pg_type) { - if ((strcasecmp(pg_type, "nested") == 0)) { + if (pg_mode) { + if ((strcasecmp(pg_mode, "nested") == 0)) { if (v3_cpu_types[info->cpu_id] == V3_SVM_REV3_CPU) { info->shdw_pg_mode = NESTED_PAGING; } else { PrintError("Nested paging not supported on this hardware. Defaulting to shadow paging\n"); info->shdw_pg_mode = SHADOW_PAGING; } - } else if ((strcasecmp(pg_type, "shadow") == 0)) { + } else if ((strcasecmp(pg_mode, "shadow") == 0)) { info->shdw_pg_mode = SHADOW_PAGING; } else { - PrintError("Invalid paging type (%s) specified in configuration. Defaulting to shadow paging\n", pg_type); + PrintError("Invalid paging mode (%s) specified in configuration. Defaulting to shadow paging\n", pg_mode); info->shdw_pg_mode = SHADOW_PAGING; } } else { - PrintDebug("No paging type specified in configuration.\n"); + PrintDebug("No paging mode specified in configuration.\n"); info->shdw_pg_mode = SHADOW_PAGING; } if (info->shdw_pg_mode == NESTED_PAGING) { - PrintDebug("Guest Page Mode: NESTED_PAGING\n"); + PrintDebug("Guest Paging Mode: NESTED_PAGING\n"); } else if (info->shdw_pg_mode == SHADOW_PAGING) { - PrintDebug("Guest Page Mode: SHADOW_PAGING\n"); + PrintDebug("Guest Paging Mode: SHADOW_PAGING\n"); } else { PrintError("Guest paging mode incorrectly set.\n"); return -1; diff --git a/palacios/src/palacios/vmm_shadow_paging.c b/palacios/src/palacios/vmm_shadow_paging.c index 6d6cfec..434b34e 100644 --- a/palacios/src/palacios/vmm_shadow_paging.c +++ b/palacios/src/palacios/vmm_shadow_paging.c @@ -141,22 +141,22 @@ int v3_init_shdw_pg_state(struct guest_info * core) { int v3_init_shdw_impl(struct v3_vm_info * vm) { struct v3_shdw_impl_state * impl_state = &(vm->shdw_impl); v3_cfg_tree_t * pg_cfg = v3_cfg_subtree(vm->cfg_data->cfg, "paging"); - char * pg_type = v3_cfg_val(vm->cfg_data->cfg, "paging"); char * pg_mode = v3_cfg_val(pg_cfg, "mode"); + char * pg_strat = v3_cfg_val(pg_cfg, "strategy"); struct v3_shdw_pg_impl * impl = NULL; PrintDebug("Checking if shadow paging requested.\n"); - if (pg_type && (strcasecmp(pg_type, "nested") == 0)) { + if (pg_mode && (strcasecmp(pg_mode, "nested") == 0)) { PrintDebug("Nested paging specified - not initializing shadow paging.\n"); return 0; } V3_Print("Initialization of Shadow Paging implementation\n"); - impl = (struct v3_shdw_pg_impl *)v3_htable_search(master_shdw_pg_table, (addr_t)pg_mode); + impl = (struct v3_shdw_pg_impl *)v3_htable_search(master_shdw_pg_table, (addr_t)pg_strat); if (impl == NULL) { - PrintError("Could not find shadow paging impl (%s)\n", pg_mode); + PrintError("Could not find shadow paging impl (%s)\n", pg_strat); return -1; } diff --git a/utils/guest_creator/default.xml b/utils/guest_creator/default.xml index cc0bc98..6316742 100644 --- a/utils/guest_creator/default.xml +++ b/utils/guest_creator/default.xml @@ -7,8 +7,14 @@ enable - shadow - + + VTLB + + 100