diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 811678f..29fb10f 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -1060,7 +1060,7 @@ int libxl_stubdom_create(struct libxl_ctx *ctx, libxl_device_disk *disks, int num_disks, libxl_device_nic *vifs, int num_vifs, libxl_device_vfb *vfb, - libxl_device_vkb *vkb, + libxl_device_vkb *vkb, uint32_t *stubdomid, libxl_device_model_starting **starting_r) { int i, num_console = 1, ret; @@ -1141,6 +1141,9 @@ retry_transaction: ret = libxl_device_console_add(ctx, domid, &console[i]); if (ret) return ret; } + + *stubdomid = domid; + if (libxl_create_xenpv_qemu(ctx, vfb, num_console, console, &dm_starting) < 0) { free(args); return -1; @@ -1150,8 +1153,6 @@ retry_transaction: return -1; } - libxl_domain_unpause(ctx, domid); - if (starting_r) { *starting_r = libxl_calloc(ctx, sizeof(libxl_device_model_starting), 1); (*starting_r)->domid = info->domid; diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index 76f9b5c..597d91b 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -381,7 +381,7 @@ int libxl_stubdom_create(struct libxl_ctx *ctx, libxl_device_nic *vifs, int num_vifs, libxl_device_vfb *vfb, libxl_device_vkb *vkb, - libxl_device_model_starting **starting_r); + uint32_t *stubdomid, libxl_device_model_starting **starting_r); int libxl_vfb_and_vkb_from_device_model_info(struct libxl_ctx *ctx, libxl_device_model_info *info, diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index a20e77a..6ed8e26 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -1154,9 +1154,11 @@ start: if (strstr(dm_info.device_model, "stubdom-dm")) { libxl_device_vfb vfb; libxl_device_vkb vkb; + uint32_t stubdomid; libxl_vfb_and_vkb_from_device_model_info(&ctx, &dm_info, &vfb, &vkb); - MUST( libxl_stubdom_create(&ctx, &dm_info, disks, num_disks, vifs, num_vifs, &vfb, &vkb, &dm_starting) ); + MUST( libxl_stubdom_create(&ctx, &dm_info, disks, num_disks, vifs, num_vifs, &vfb, &vkb, &stubdomid, &dm_starting) ); + libxl_domain_unpause(&ctx, stubdomid); } else { MUST( libxl_create_device_model(&ctx, &dm_info, disks, num_disks, vifs, num_vifs, &dm_starting) );