Re: [Xen-devel] [RFC PATCH 04/17] libxl: Build the domain with a Linux based stubdomain

2018-08-01 Thread Jason Andryuk
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

2018-08-01 Thread Marek Marczykowski-Górecki
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

2018-08-01 Thread Jason Andryuk
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

2018-07-30 Thread Marek Marczykowski-Górecki
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
+}
+}
+