aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--extras/mini-os/blkfront.c4
-rw-r--r--stubdom/stubdom-dm80
-rw-r--r--tools/python/xen/xend/image.py7
3 files changed, 77 insertions, 14 deletions
diff --git a/extras/mini-os/blkfront.c b/extras/mini-os/blkfront.c
index 75add45fb4..d869715bea 100644
--- a/extras/mini-os/blkfront.c
+++ b/extras/mini-os/blkfront.c
@@ -244,10 +244,6 @@ void shutdown_blkfront(struct blkfront_dev *dev)
xenbus_wait_for_value(path, "5", &dev->events);
err = xenbus_printf(XBT_NIL, nodename, "state", "%u", 6);
- xenbus_wait_for_value(path, "6", &dev->events);
-
- err = xenbus_printf(XBT_NIL, nodename, "state", "%u", 1);
- xenbus_wait_for_value(path, "2", &dev->events);
xenbus_unwatch_path(XBT_NIL, path);
diff --git a/stubdom/stubdom-dm b/stubdom/stubdom-dm
index f471e82b36..f431d4f69b 100644
--- a/stubdom/stubdom-dm
+++ b/stubdom/stubdom-dm
@@ -15,7 +15,10 @@ domname=
vncviewer=0
vncpid=
extra=
-videoram=4
+sdl=0
+opengl=1
+vnc=0
+vncunused=0
while [ "$#" -gt 0 ];
do
if [ "$#" -ge 2 ];
@@ -31,22 +34,30 @@ do
shift
;;
-vnc)
- ip=${2%:*};
- vnc_port=${2#*:};
+ vnc=1
+ op=${2%,*}
+ ip=${op%:*};
+ vnc_port=${op#*:};
shift
;;
+ -vncunused)
+ vncunused=1
+ shift
+ ;;
-loadvm)
extra="$extra -loadvm $2";
shift
;;
- -videoram)
- videoram="$2"
- shift
- ;;
+ -k)
+ keymap=$2
+ shift
+ ;;
esac
fi
case "$1" in
-vncviewer) vncviewer=1 ;;
+ -sdl) sdl=1 ;;
+ -disable-opengl) opengl=0 ;;
esac
shift
done
@@ -61,7 +72,7 @@ term() {
(
[ -n "$vncpid" ] && kill -9 $vncpid
xm destroy $domname-dm
- #xm destroy $domname
+ rm /etc/xen/stubdoms/$domname-dm
) &
# We need to exit immediately so as to let xend do the commands above
exit 0
@@ -77,7 +88,58 @@ do
sleep 1
done
-creation="xm create -c $domname-dm target=$domid memory=32 videoram=$videoram extra=\"$extra\""
+# Generate stubdom config file
+mkdir -p /etc/xen/stubdoms &>/dev/null
+echo "#This file is autogenerated, edit $domname instead!" > /etc/xen/stubdoms/$domname-dm
+echo "kernel = '/usr/lib/xen/boot/ioemu-stubdom.gz'" >> /etc/xen/stubdoms/$domname-dm
+
+vfb="sdl=$sdl, opengl=$opengl"
+test "$DISPLAY" && vfb="$vfb, display=$DISPLAY"
+test "$XAUTHORITY" && vfb="$vfb, xauthority=$XAUTHORITY"
+test $vnc != 0 && vfb="$vfb, vnc=$vnc, vncdisplay=$vnc_port, vnclisten=$ip, vncunused=$vncunused"
+vncpasswd=`xenstore-read /local/domain/0/backend/vfb/$domid/0/vncpasswd 2>/dev/null`
+test "$vncpasswd" && vfb="$vfb, vncpasswd=$vncpasswd"
+test "$keymap" && vfb="$vfb, keymap=$keymap"
+echo "vfb = ['$vfb']" >> /etc/xen/stubdoms/$domname-dm
+
+echo -n "disk = [ " >> /etc/xen/stubdoms/$domname-dm
+j=0
+for i in `xenstore-ls /local/domain/$domid/device/vbd | grep 'backend =' | awk '{print $3}'`
+do
+ i=${i%\"}
+ i=${i#\"}
+ vbd_mode=`xenstore-read $i/mode`
+ vbd_disk=`xenstore-read $i/params`
+ vbd_type=`xenstore-read $i/type`
+ vbd_dev=`xenstore-read $i/dev`
+ if [ $vbd_type = "file" ]
+ then
+ vbd_type="tap:aio"
+ fi
+ if [ $j -ne 0 ]
+ then
+ echo -n "," >> /etc/xen/stubdoms/$domname-dm
+ fi
+ echo -n "'$vbd_type:$vbd_disk,$vbd_dev,$vbd_mode'" >> /etc/xen/stubdoms/$domname-dm
+ j=$(( $j + 1 ))
+done
+echo " ] " >> /etc/xen/stubdoms/$domname-dm
+echo -n "vif = [ " >> /etc/xen/stubdoms/$domname-dm
+j=0
+for i in `xenstore-ls /local/domain/$domid/device/vif | grep 'backend =' | awk '{print $3}'`
+do
+ i=${i%\"}
+ i=${i#\"}
+ vif_mac=`xenstore-read $i/mac`
+ if [ $j -ne 0 ]
+ then
+ echo -n "," >> /etc/xen/stubdoms/$domname-dm
+ fi
+ echo -n "'mac=$vif_mac'" >> /etc/xen/stubdoms/$domname-dm
+ j=$(( $j + 1 ))
+done
+echo " ] " >> /etc/xen/stubdoms/$domname-dm
+creation="xm create -c /etc/xen/stubdoms/$domname-dm target=$domid memory=32 extra=\"$extra\""
(while true ; do sleep 60 ; done) | /bin/sh -c "$creation" &
#xterm -geometry +0+0 -e /bin/sh -c "$creation ; echo ; echo press ENTER to shut down ; read" &
diff --git a/tools/python/xen/xend/image.py b/tools/python/xen/xend/image.py
index dc53e4a34c..9e978b97aa 100644
--- a/tools/python/xen/xend/image.py
+++ b/tools/python/xen/xend/image.py
@@ -729,7 +729,12 @@ class HVMImageHandler(ImageHandler):
if not self.display :
self.display = ''
- self.vm.storeVm(("image/dmargs", " ".join(self.dmargs)),
+ # Do not store sdl, opengl and serial related qemu cli options
+ self.vm.storeVm(("image/dmargs", " ".join([ x for x in self.dmargs
+ if x != "-sdl"
+ and x != "-disable-opengl"
+ and x != "-serial"
+ and x != "pty" ])),
("image/device-model", self.device_model),
("image/display", self.display))
self.vm.permissionsVm("image/dmargs", { 'dom': self.vm.getDomid(), 'read': True } )