Re: [Xen-devel] [RFC PATCH 04/17] libxl: Build the domain with a Linux based stubdomain
On Wed, Aug 1, 2018 at 10:37 AM, Marek Marczykowski-Górecki wrote: > On Wed, Aug 01, 2018 at 10:26:06AM -0400, Jason Andryuk wrote: >> On Mon, Jul 30, 2018 at 11:56 PM, Marek Marczykowski-Górecki >> wrote: >> > From: Eric Shelton >> > >> > This will build a Linux-based stubdomain with QEMU upstream. >> > >> > Signed-off-by: Eric Shelton >> > >> > Simon: >> > * use initramfs instead of disk with rootfs >> > * don't initialize qmp (unused in Qubes) >> > * Make libxl_domain_need_memory consistent with actual stubdoma build >> >code (bugfix relevant also for non-linux case) >> > * Make stubdomain memory size configurable >> > Signed-off-by: Simon Gaiser >> > >> > Marek: >> > * Make kernel and ramdisk paths configurable. >> > Signed-off-by: Marek Marczykowski-Górecki >> > --- >> >> >> >> > @@ -1983,10 +1997,8 @@ void libxl__spawn_stub_dm(libxl__egc *egc, >> > libxl__stub_dm_spawn_state *sdss) >> > dm_config->num_vkbs = 1; >> > } >> > >> > -stubdom_state->pv_kernel.path >> > -= libxl__abs_path(gc, "ioemu-stubdom.gz", >> > libxl__xenfirmwaredir_path()); >> > -stubdom_state->pv_cmdline = GCSPRINTF(" -d %d", guest_domid); >> >> This dropped line isn't restored anywhere else, afaics. Does this >> break mini-os stubdoms? > > No, mini-os gets cmdline from xenstore anyway. And > libxl__build_device_model_args_old do add -d domid there. Ah, okay. Thanks. Reviewed-by: Jason Andryuk ___ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
Re: [Xen-devel] [RFC PATCH 04/17] libxl: Build the domain with a Linux based stubdomain
On Wed, Aug 01, 2018 at 10:26:06AM -0400, Jason Andryuk wrote: > On Mon, Jul 30, 2018 at 11:56 PM, Marek Marczykowski-Górecki > wrote: > > From: Eric Shelton > > > > This will build a Linux-based stubdomain with QEMU upstream. > > > > Signed-off-by: Eric Shelton > > > > Simon: > > * use initramfs instead of disk with rootfs > > * don't initialize qmp (unused in Qubes) > > * Make libxl_domain_need_memory consistent with actual stubdoma build > >code (bugfix relevant also for non-linux case) > > * Make stubdomain memory size configurable > > Signed-off-by: Simon Gaiser > > > > Marek: > > * Make kernel and ramdisk paths configurable. > > Signed-off-by: Marek Marczykowski-Górecki > > --- > > > > > @@ -1983,10 +1997,8 @@ void libxl__spawn_stub_dm(libxl__egc *egc, > > libxl__stub_dm_spawn_state *sdss) > > dm_config->num_vkbs = 1; > > } > > > > -stubdom_state->pv_kernel.path > > -= libxl__abs_path(gc, "ioemu-stubdom.gz", > > libxl__xenfirmwaredir_path()); > > -stubdom_state->pv_cmdline = GCSPRINTF(" -d %d", guest_domid); > > This dropped line isn't restored anywhere else, afaics. Does this > break mini-os stubdoms? No, mini-os gets cmdline from xenstore anyway. And libxl__build_device_model_args_old do add -d domid there. -- Best Regards, Marek Marczykowski-Górecki Invisible Things Lab A: Because it messes up the order in which people normally read text. Q: Why is top-posting such a bad thing? signature.asc Description: PGP signature ___ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
Re: [Xen-devel] [RFC PATCH 04/17] libxl: Build the domain with a Linux based stubdomain
On Mon, Jul 30, 2018 at 11:56 PM, Marek Marczykowski-Górecki wrote: > From: Eric Shelton > > This will build a Linux-based stubdomain with QEMU upstream. > > Signed-off-by: Eric Shelton > > Simon: > * use initramfs instead of disk with rootfs > * don't initialize qmp (unused in Qubes) > * Make libxl_domain_need_memory consistent with actual stubdoma build >code (bugfix relevant also for non-linux case) > * Make stubdomain memory size configurable > Signed-off-by: Simon Gaiser > > Marek: > * Make kernel and ramdisk paths configurable. > Signed-off-by: Marek Marczykowski-Górecki > --- > @@ -1983,10 +1997,8 @@ void libxl__spawn_stub_dm(libxl__egc *egc, > libxl__stub_dm_spawn_state *sdss) > dm_config->num_vkbs = 1; > } > > -stubdom_state->pv_kernel.path > -= libxl__abs_path(gc, "ioemu-stubdom.gz", > libxl__xenfirmwaredir_path()); > -stubdom_state->pv_cmdline = GCSPRINTF(" -d %d", guest_domid); This dropped line isn't restored anywhere else, afaics. Does this break mini-os stubdoms? > -stubdom_state->pv_ramdisk.path = ""; > +stubdom_state->pv_kernel.path = guest_config->b_info.stubdomain_kernel; > +stubdom_state->pv_ramdisk.path = guest_config->b_info.stubdomain_ramdisk; > > /* fixme: this function can leak the stubdom if it fails */ > ret = libxl__domain_make(gc, dm_config, stubdom_state, Regards, Jason ___ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
[Xen-devel] [RFC PATCH 04/17] libxl: Build the domain with a Linux based stubdomain
From: Eric Shelton This will build a Linux-based stubdomain with QEMU upstream. Signed-off-by: Eric Shelton Simon: * use initramfs instead of disk with rootfs * don't initialize qmp (unused in Qubes) * Make libxl_domain_need_memory consistent with actual stubdoma build code (bugfix relevant also for non-linux case) * Make stubdomain memory size configurable Signed-off-by: Simon Gaiser Marek: * Make kernel and ramdisk paths configurable. Signed-off-by: Marek Marczykowski-Górecki --- tools/libxl/libxl_create.c | 75 +++-- tools/libxl/libxl_dm.c | 48 ++-- tools/libxl/libxl_internal.c | 22 +++- tools/libxl/libxl_internal.h | 4 ++- tools/libxl/libxl_mem.c | 6 ++- tools/libxl/libxl_types.idl | 3 +- 6 files changed, 126 insertions(+), 32 deletions(-) diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index 9f5e6b7..fff1f9c 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -162,32 +162,54 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc, libxl_defbool_val(b_info->device_model_stubdomain)) { if (!b_info->stubdomain_version) { switch (b_info->device_model_version) { +case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL: +b_info->stubdomain_version = LIBXL_STUBDOMAIN_VERSION_MINIOS; +break; +case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN: +b_info->stubdomain_version = LIBXL_STUBDOMAIN_VERSION_LINUX; +break; +default: abort(); +} +} + +switch (b_info->device_model_version) { case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL: -b_info->stubdomain_version = LIBXL_STUBDOMAIN_VERSION_MINIOS; +if (b_info->stubdomain_version != LIBXL_STUBDOMAIN_VERSION_MINIOS) { +LOG(ERROR, +"\"qemu-xen-traditional\" require \"minios\" as stubdomain"); +return ERROR_INVAL; +} break; case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN: -b_info->stubdomain_version = LIBXL_STUBDOMAIN_VERSION_LINUX; +if (b_info->stubdomain_version != LIBXL_STUBDOMAIN_VERSION_LINUX) { +LOG(ERROR, +"\"qemu-xen\" require \"linux\" as stubdomain"); +return ERROR_INVAL; +} break; default: abort(); -} } -switch (b_info->device_model_version) { -case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL: -if (b_info->stubdomain_version != LIBXL_STUBDOMAIN_VERSION_MINIOS) { -LOG(ERROR, -"\"qemu-xen-traditional\" require \"minios\" as stubdomain"); -return ERROR_INVAL; +if (!b_info->stubdomain_kernel) { +switch (b_info->stubdomain_version) { +case LIBXL_STUBDOMAIN_VERSION_MINIOS: +b_info->stubdomain_kernel = +libxl__abs_path(NOGC, "ioemu-stubdom.gz", libxl__xenfirmwaredir_path()); +b_info->stubdomain_ramdisk = NULL; +break; +case LIBXL_STUBDOMAIN_VERSION_LINUX: +b_info->stubdomain_kernel = +libxl__abs_path(NOGC, +"stubdom-linux-kernel", +libxl__xenfirmwaredir_path()); +b_info->stubdomain_ramdisk = +libxl__abs_path(NOGC, +"stubdom-linux-rootfs", +libxl__xenfirmwaredir_path()); +break; +default: +abort(); } -break; -case LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN: -if (b_info->stubdomain_version != LIBXL_STUBDOMAIN_VERSION_LINUX) { -LOG(ERROR, -"\"qemu-xen\" require \"linux\" as stubdomain"); -return ERROR_INVAL; -} -break; -default: abort(); } } @@ -226,6 +248,19 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc, if (b_info->target_memkb == LIBXL_MEMKB_DEFAULT) b_info->target_memkb = b_info->max_memkb; +if (b_info->stubdomain_memkb == LIBXL_MEMKB_DEFAULT) { +switch (b_info->stubdomain_version) { +case LIBXL_STUBDOMAIN_VERSION_MINIOS: +b_info->stubdomain_memkb = 28 * 1024; +break; +case LIBXL_STUBDOMAIN_VERSION_LINUX: +b_info->stubdomain_memkb = LIBXL_LINUX_STUBDOM_MEM * 1024;; +break; +default: +b_info->stubdomain_memkb = 0; // no stubdomain +} +} +