[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 1/2] libxl: Set guest parameters from config file during a restore
Guest's configuration parameters (e.g. timer_mode) are used by the hypervisor during runtime. We should therefore set them during restore. Signed-off-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> --- tools/libxl/libxl_dom.c | 51 ++++++++++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index 55f74b2..368de39 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -201,6 +201,32 @@ static int numa_place_domain(libxl__gc *gc, uint32_t domid, return rc; } +static unsigned long timer_mode(const libxl_domain_build_info *info) +{ + const libxl_timer_mode mode = info->u.hvm.timer_mode; + assert(mode >= LIBXL_TIMER_MODE_DELAY_FOR_MISSED_TICKS && + mode <= LIBXL_TIMER_MODE_ONE_MISSED_TICK_PENDING); + return ((unsigned long)mode); +} + +static void hvm_set_conf_params(xc_interface *handle, uint32_t domid, + libxl_domain_build_info *const info) +{ + xc_set_hvm_param(handle, domid, HVM_PARAM_PAE_ENABLED, + libxl_defbool_val(info->u.hvm.pae)); +#if defined(__i386__) || defined(__x86_64__) + xc_set_hvm_param(handle, domid, HVM_PARAM_VIRIDIAN, + libxl_defbool_val(info->u.hvm.viridian)); + xc_set_hvm_param(handle, domid, HVM_PARAM_HPET_ENABLED, + libxl_defbool_val(info->u.hvm.hpet)); +#endif + xc_set_hvm_param(handle, domid, HVM_PARAM_TIMER_MODE, timer_mode(info)); + xc_set_hvm_param(handle, domid, HVM_PARAM_VPT_ALIGN, + libxl_defbool_val(info->u.hvm.vpt_align)); + xc_set_hvm_param(handle, domid, HVM_PARAM_NESTEDHVM, + libxl_defbool_val(info->u.hvm.nested_hvm)); +} + int libxl__build_pre(libxl__gc *gc, uint32_t domid, libxl_domain_config *d_config, libxl__domain_build_state *state) { @@ -255,6 +281,9 @@ int libxl__build_pre(libxl__gc *gc, uint32_t domid, state->console_port = xc_evtchn_alloc_unbound(ctx->xch, domid, state->console_domid); state->vm_generationid_addr = 0; + if (info->type == LIBXL_DOMAIN_TYPE_HVM) + hvm_set_conf_params(ctx->xch, domid, info); + rc = libxl__arch_domain_create(gc, d_config, domid); return rc; @@ -449,13 +478,6 @@ out: return ret == 0 ? 0 : ERROR_FAIL; } -static unsigned long timer_mode(const libxl_domain_build_info *info) -{ - const libxl_timer_mode mode = info->u.hvm.timer_mode; - assert(mode >= LIBXL_TIMER_MODE_DELAY_FOR_MISSED_TICKS && - mode <= LIBXL_TIMER_MODE_ONE_MISSED_TICK_PENDING); - return ((unsigned long)mode); -} static int hvm_build_set_params(xc_interface *handle, uint32_t domid, libxl_domain_build_info *info, int store_evtchn, unsigned long *store_mfn, @@ -484,22 +506,11 @@ static int hvm_build_set_params(xc_interface *handle, uint32_t domid, xc_get_hvm_param(handle, domid, HVM_PARAM_STORE_PFN, store_mfn); xc_get_hvm_param(handle, domid, HVM_PARAM_CONSOLE_PFN, console_mfn); - xc_set_hvm_param(handle, domid, HVM_PARAM_PAE_ENABLED, - libxl_defbool_val(info->u.hvm.pae)); -#if defined(__i386__) || defined(__x86_64__) - xc_set_hvm_param(handle, domid, HVM_PARAM_VIRIDIAN, - libxl_defbool_val(info->u.hvm.viridian)); - xc_set_hvm_param(handle, domid, HVM_PARAM_HPET_ENABLED, - libxl_defbool_val(info->u.hvm.hpet)); -#endif - xc_set_hvm_param(handle, domid, HVM_PARAM_TIMER_MODE, timer_mode(info)); - xc_set_hvm_param(handle, domid, HVM_PARAM_VPT_ALIGN, - libxl_defbool_val(info->u.hvm.vpt_align)); - xc_set_hvm_param(handle, domid, HVM_PARAM_NESTEDHVM, - libxl_defbool_val(info->u.hvm.nested_hvm)); xc_set_hvm_param(handle, domid, HVM_PARAM_STORE_EVTCHN, store_evtchn); xc_set_hvm_param(handle, domid, HVM_PARAM_CONSOLE_EVTCHN, console_evtchn); + hvm_set_conf_params(handle, domid, info); + xc_dom_gnttab_hvm_seed(handle, domid, *console_mfn, *store_mfn, console_domid, store_domid); return 0; } -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |