xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] linux-stubdom: Support linux-stubdom in libxl
@ 2011-05-31  5:07 Jiageng Yu
  2011-05-31 11:24 ` Stefano Stabellini
  0 siblings, 1 reply; 2+ messages in thread
From: Jiageng Yu @ 2011-05-31  5:07 UTC (permalink / raw)
  To: Stefano Stabellini, Samuel Thibault,
	Xen-devel@lists.xensource.com

author jiageng_yu <yujiageng734@gmail.com>
Tue, 31 May 2011 02:18:01 +0000 (03:18 +0100)
committer jiageng_yu <yujiageng734@gmail.com>
 ue, 31 May 2011 02:18:01 +0000 (03:18 +0100)
commit 179b4167dd9e86a06a700d60e277c4477f0c06ef
tree 4e4c8492b480e08d9122abcb37aca52ae5650786 tree | snapshot (tar.gz zip)
parent cf4866b9161a724e4b2c366da73de271cf7ef348 commit | diff

linux-studom: Support linux-stubdom in libxl

Add linux-stubdom support in libxl. Users could start a linux-stubdom
throuh the following options:
device_model_override = 'linux-stubdom'
device_model_stubdomain_override=1

linux-stubdom project: http://repo.or.cz/w/linux-based-stubdoms.git


diff --git a/Makefile b/Makefile
index 9e5c95b..a7535f8 100644
--- a/Makefile
+++ b/Makefile
@@ -23,6 +23,10 @@ IOEMU_GIT_REMOTEBRANCH ?= qemu-dm-v15
 IOEMU_GIT_LOCALBRANCH ?= $(IOEMU_GIT_REMOTEBRANCH)
 IOEMU_GITREV ?= $(IOEMU_GIT_ORIGIN)/$(IOEMU_GIT_REMOTEBRANCH)

+#libxl
+LIBXL_DIR = libxl-$(STUBDOM_ARCH)
+LIBXL_SRCDIR = $(XEN_ROOT)/tools/libxl
+
 #download udev
 UDEV_URL?= http://www.us.kernel.org/pub/linux/utils/kernel/hotplug
 UDEV_VERSION=100
@@ -94,7 +98,7 @@ $(TARGETS_LINUX):download-linux-src

+#######
+# libxl
+#######
+
+.link-libxl-dir:
+       mkdir -p $(LIBXL_DIR)
+       set -e; +       cd $(LIBXL_DIR); +      (cd $(LIBXL_SRCDIR) &&
$(MAKE) clean);+ (cd $(LIBXL_SRCDIR) && find *   ! -type l  -type f
$(addprefix ! -name ,       +                       '*.[oda1]'
'config-*' config.mak        +                       '*.html' '*.pod'
                                      +                       )) |
                                               +                while
read f; do rm -f "$$f"; ln -s "$(LIBXL_SRCDIR)/$$f" "$$f"; done
+       patch -d $(LIBXL_DIR) -p3 < libxl.patch
+       touch .link-libxl-dir
+
+.PHONY: libxl
+libxl: .link-libxl-dir
+       (cd $(LIBXL_DIR);$(MAKE) install;)

 ######
 # udev
@@ -137,7 +162,7 @@ udev: udev-$(UDEV_VERSION).tar.bz2
 ###########################

 .PHONY: ioemu-stubdom
-ioemu-stubdom: linux-stubdom-$(STUBDOM_ARCH)-ioemu ioemu udev
+ioemu-stubdom: libxl linux-stubdom-$(STUBDOM_ARCH)-ioemu ioemu udev
        $(warning "ioemu-linux-stubdom")
        sh $(MAKE_RAMDISK_SCRIPT)
linux-stubdom-$(STUBDOM_ARCH)-ioemu/$(INSTALL_PATH) ramdisk-$(TARGETS)
ioemu

@@ -168,6 +193,7 @@ install-ioemu: ioemu-stubdom
 clean:
        rm -fr linux-stubdom-$(STUBDOM_ARCH)-ioemu
        rm -fr udev-$(UDEV_VERSION)
+       rm -fr $(LIBXL_DIR) .link-libxl-dir

 .PHONY: downloadclean
 downloadclean: clean


diff --git a/libxl.patch b/libxl.patch
new file mode 100644
index 0000000..64a49ef
--- /dev/null
+++ b/libxl.patch
@@ -0,0 +1,81 @@
+diff -r 37c77bacb52a tools/libxl/libxl_dm.c
+--- a/tools/libxl/libxl_dm.c   Mon May 23 17:38:28 2011 +0100
++++ b/tools/libxl/libxl_dm.c   Tue May 31 02:41:59 2011 +0100
+@@ -556,6 +556,14 @@
+     return 0;
+ }
+
++inline int libxl__is_linux_stubdom(libxl_device_model_info *info)
++{
++      if(!strncmp(info->device_model,"linux-stubdom",strlen(info->device_model)))
++              return 1;
++      else
++              return 0;
++};
++
+ static int libxl__create_stubdom(libxl__gc *gc,
+                                  libxl_device_model_info *info,
+                                  libxl_device_disk *disks, int num_disks,
+@@ -581,7 +589,12 @@
+         goto out;
+     }
+
+-    args = libxl__build_device_model_args(gc, "stubdom-dm", info,
++      if(libxl__is_linux_stubdom(info))
++              args = libxl__build_device_model_args(gc, "linux-stubdom", info,
++                                          disks, num_disks,
++                                          vifs, num_vifs);
++      else
++              args = libxl__build_device_model_args(gc, "stubdom-dm", info,
+                                           disks, num_disks,
+                                           vifs, num_vifs);
+     if (!args) {
+@@ -599,13 +612,22 @@
+     b_info.max_vcpus = 1;
+     b_info.max_memkb = 32 * 1024;
+     b_info.target_memkb = b_info.max_memkb;
+-    b_info.u.pv.kernel.path = libxl__abs_path(gc, "ioemu-stubdom.gz",
+-                                              libxl_xenfirmwaredir_path());
+     b_info.u.pv.cmdline = libxl__sprintf(gc, " -d %d", info->domid);
+-    b_info.u.pv.ramdisk.path = "";
+     b_info.u.pv.features = "";
+     b_info.hvm = 0;
+
++      if(libxl__is_linux_stubdom(info)){
++              b_info.u.pv.kernel.path = libxl__abs_path(gc, "vmlinuz-ioemu",
++
                         libxl_xenfirmwaredir_path());
++              b_info.u.pv.ramdisk.path = libxl__abs_path(gc, "ramdisk-ioemu",
++
                         libxl_xenfirmwaredir_path());
++      }
++      else{
++              b_info.u.pv.kernel.path = libxl__abs_path(gc,
"ioemu-stubdom.gz",
++
                         libxl_xenfirmwaredir_path());
++              b_info.u.pv.ramdisk.path = "";
++      }
++
+     /* fixme: this function can leak the stubdom if it fails */
+
+     ret = libxl__domain_make(gc, &c_info, &domid);
+diff -r 37c77bacb52a tools/libxl/libxl_internal.h
+--- a/tools/libxl/libxl_internal.h     Mon May 23 17:38:28 2011 +0100
++++ b/tools/libxl/libxl_internal.h     Tue May 31 02:41:59 2011 +0100
+@@ -249,6 +249,7 @@
+                                 libxl__domain_build_state *state);
+
+ /* for device model creation */
++_hidden int libxl__is_linux_stubdom(libxl_device_model_info *info);
+ _hidden const char *libxl__domain_device_model(libxl__gc *gc,
+                                                libxl_device_model_info *info);
+ _hidden int libxl__create_device_model(libxl__gc *gc,
+diff -r 37c77bacb52a tools/libxl/xl_cmdimpl.c
+--- a/tools/libxl/xl_cmdimpl.c Mon May 23 17:38:28 2011 +0100
++++ b/tools/libxl/xl_cmdimpl.c Tue May 31 02:41:59 2011 +0100
+@@ -1087,7 +1087,7 @@
+             fprintf(stderr,
+                     "WARNING: ignoring device_model directive.n"
+                     "WARNING: Use "device_model_override" instead if
you really want a non-default device_modeln");
+-            if (strstr(buf, "stubdom-dm"))
++            if (strstr(buf, "stubdom-dm") || strstr(buf, "linux-stubdom"))
+                 fprintf(stderr, "WARNING: Or use
"device_model_stubdomain_override" if you want to enable
stubdomainsn");
+         }
+

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] linux-stubdom: Support linux-stubdom in libxl
  2011-05-31  5:07 [PATCH] linux-stubdom: Support linux-stubdom in libxl Jiageng Yu
@ 2011-05-31 11:24 ` Stefano Stabellini
  0 siblings, 0 replies; 2+ messages in thread
From: Stefano Stabellini @ 2011-05-31 11:24 UTC (permalink / raw)
  To: Jiageng Yu
  Cc: Samuel Thibault, Xen-devel@lists.xensource.com,
	Stefano Stabellini

On Tue, 31 May 2011, Jiageng Yu wrote:
> author jiageng_yu <yujiageng734@gmail.com>
> Tue, 31 May 2011 02:18:01 +0000 (03:18 +0100)
> committer jiageng_yu <yujiageng734@gmail.com>
>  ue, 31 May 2011 02:18:01 +0000 (03:18 +0100)
> commit 179b4167dd9e86a06a700d60e277c4477f0c06ef
> tree 4e4c8492b480e08d9122abcb37aca52ae5650786 tree | snapshot (tar.gz zip)
> parent cf4866b9161a724e4b2c366da73de271cf7ef348 commit | diff
> 
> linux-studom: Support linux-stubdom in libxl
> 
> Add linux-stubdom support in libxl. Users could start a linux-stubdom
> throuh the following options:
> device_model_override = 'linux-stubdom'
> device_model_stubdomain_override=1
> 
> linux-stubdom project: http://repo.or.cz/w/linux-based-stubdoms.git
> 
> 
> diff --git a/Makefile b/Makefile
> index 9e5c95b..a7535f8 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -23,6 +23,10 @@ IOEMU_GIT_REMOTEBRANCH ?= qemu-dm-v15
>  IOEMU_GIT_LOCALBRANCH ?= $(IOEMU_GIT_REMOTEBRANCH)
>  IOEMU_GITREV ?= $(IOEMU_GIT_ORIGIN)/$(IOEMU_GIT_REMOTEBRANCH)
> 
> +#libxl
> +LIBXL_DIR = libxl-$(STUBDOM_ARCH)
> +LIBXL_SRCDIR = $(XEN_ROOT)/tools/libxl
> +
>  #download udev
>  UDEV_URL?= http://www.us.kernel.org/pub/linux/utils/kernel/hotplug
>  UDEV_VERSION=100
> @@ -94,7 +98,7 @@ $(TARGETS_LINUX):download-linux-src
> 
> +#######
> +# libxl
> +#######
> +
> +.link-libxl-dir:
> +       mkdir -p $(LIBXL_DIR)
> +       set -e; +       cd $(LIBXL_DIR); +      (cd $(LIBXL_SRCDIR) &&
> $(MAKE) clean);+ (cd $(LIBXL_SRCDIR) && find *   ! -type l  -type f
> $(addprefix ! -name ,       +                       '*.[oda1]'
> 'config-*' config.mak        +                       '*.html' '*.pod'
>                                       +                       )) |
>                                                +                while
> read f; do rm -f "$$f"; ln -s "$(LIBXL_SRCDIR)/$$f" "$$f"; done
> +       patch -d $(LIBXL_DIR) -p3 < libxl.patch
> +       touch .link-libxl-dir
> +
> +.PHONY: libxl
> +libxl: .link-libxl-dir
> +       (cd $(LIBXL_DIR);$(MAKE) install;)
> 
>  ######
>  # udev
> @@ -137,7 +162,7 @@ udev: udev-$(UDEV_VERSION).tar.bz2
>  ###########################
> 
>  .PHONY: ioemu-stubdom
> -ioemu-stubdom: linux-stubdom-$(STUBDOM_ARCH)-ioemu ioemu udev
> +ioemu-stubdom: libxl linux-stubdom-$(STUBDOM_ARCH)-ioemu ioemu udev
>         $(warning "ioemu-linux-stubdom")
>         sh $(MAKE_RAMDISK_SCRIPT)
> linux-stubdom-$(STUBDOM_ARCH)-ioemu/$(INSTALL_PATH) ramdisk-$(TARGETS)
> ioemu
> 
> @@ -168,6 +193,7 @@ install-ioemu: ioemu-stubdom
>  clean:
>         rm -fr linux-stubdom-$(STUBDOM_ARCH)-ioemu
>         rm -fr udev-$(UDEV_VERSION)
> +       rm -fr $(LIBXL_DIR) .link-libxl-dir
> 
>  .PHONY: downloadclean
>  downloadclean: clean
> 
> 

Could you please send the following patch to xen-devel separately?


> diff --git a/libxl.patch b/libxl.patch
> new file mode 100644
> index 0000000..64a49ef
> --- /dev/null
> +++ b/libxl.patch
> @@ -0,0 +1,81 @@
> +diff -r 37c77bacb52a tools/libxl/libxl_dm.c
> +--- a/tools/libxl/libxl_dm.c   Mon May 23 17:38:28 2011 +0100
> ++++ b/tools/libxl/libxl_dm.c   Tue May 31 02:41:59 2011 +0100
> +@@ -556,6 +556,14 @@
> +     return 0;
> + }
> +
> ++inline int libxl__is_linux_stubdom(libxl_device_model_info *info)
> ++{
> ++      if(!strncmp(info->device_model,"linux-stubdom",strlen(info->device_model)))
> ++              return 1;
> ++      else
> ++              return 0;
> ++};
> ++
> + static int libxl__create_stubdom(libxl__gc *gc,
> +                                  libxl_device_model_info *info,
> +                                  libxl_device_disk *disks, int num_disks,
> +@@ -581,7 +589,12 @@
> +         goto out;
> +     }
> +
> +-    args = libxl__build_device_model_args(gc, "stubdom-dm", info,
> ++      if(libxl__is_linux_stubdom(info))
> ++              args = libxl__build_device_model_args(gc, "linux-stubdom", info,
> ++                                          disks, num_disks,
> ++                                          vifs, num_vifs);
> ++      else
> ++              args = libxl__build_device_model_args(gc, "stubdom-dm", info,
> +                                           disks, num_disks,
> +                                           vifs, num_vifs);
> +     if (!args) {
> +@@ -599,13 +612,22 @@
> +     b_info.max_vcpus = 1;
> +     b_info.max_memkb = 32 * 1024;
> +     b_info.target_memkb = b_info.max_memkb;
> +-    b_info.u.pv.kernel.path = libxl__abs_path(gc, "ioemu-stubdom.gz",
> +-                                              libxl_xenfirmwaredir_path());
> +     b_info.u.pv.cmdline = libxl__sprintf(gc, " -d %d", info->domid);
> +-    b_info.u.pv.ramdisk.path = "";
> +     b_info.u.pv.features = "";
> +     b_info.hvm = 0;
> +
> ++      if(libxl__is_linux_stubdom(info)){
> ++              b_info.u.pv.kernel.path = libxl__abs_path(gc, "vmlinuz-ioemu",
> ++
>                          libxl_xenfirmwaredir_path());
> ++              b_info.u.pv.ramdisk.path = libxl__abs_path(gc, "ramdisk-ioemu",
> ++
>                          libxl_xenfirmwaredir_path());
> ++      }
> ++      else{
> ++              b_info.u.pv.kernel.path = libxl__abs_path(gc,
> "ioemu-stubdom.gz",
> ++
>                          libxl_xenfirmwaredir_path());
> ++              b_info.u.pv.ramdisk.path = "";
> ++      }
> ++
> +     /* fixme: this function can leak the stubdom if it fails */
> +
> +     ret = libxl__domain_make(gc, &c_info, &domid);
> +diff -r 37c77bacb52a tools/libxl/libxl_internal.h
> +--- a/tools/libxl/libxl_internal.h     Mon May 23 17:38:28 2011 +0100
> ++++ b/tools/libxl/libxl_internal.h     Tue May 31 02:41:59 2011 +0100
> +@@ -249,6 +249,7 @@
> +                                 libxl__domain_build_state *state);
> +
> + /* for device model creation */
> ++_hidden int libxl__is_linux_stubdom(libxl_device_model_info *info);
> + _hidden const char *libxl__domain_device_model(libxl__gc *gc,
> +                                                libxl_device_model_info *info);
> + _hidden int libxl__create_device_model(libxl__gc *gc,
> +diff -r 37c77bacb52a tools/libxl/xl_cmdimpl.c
> +--- a/tools/libxl/xl_cmdimpl.c Mon May 23 17:38:28 2011 +0100
> ++++ b/tools/libxl/xl_cmdimpl.c Tue May 31 02:41:59 2011 +0100
> +@@ -1087,7 +1087,7 @@
> +             fprintf(stderr,
> +                     "WARNING: ignoring device_model directive.n"
> +                     "WARNING: Use "device_model_override" instead if
> you really want a non-default device_modeln");
> +-            if (strstr(buf, "stubdom-dm"))
> ++            if (strstr(buf, "stubdom-dm") || strstr(buf, "linux-stubdom"))
> +                 fprintf(stderr, "WARNING: Or use
> "device_model_stubdomain_override" if you want to enable
> stubdomainsn");
> +         }
> +
> 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-05-31 11:24 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-31  5:07 [PATCH] linux-stubdom: Support linux-stubdom in libxl Jiageng Yu
2011-05-31 11:24 ` Stefano Stabellini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).