summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRandy Witt <randy.e.witt@linux.intel.com>2015-08-24 00:25:03 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-08-24 23:45:25 +0100
commit849d65d55e4df5fa443b2cb7b4cee23913fc9d5a (patch)
tree86c41e1834ea4c20c2e811528ab267562dc234dd
parent2da3fee6b6d9f4dd4c4cb529f4ba393c20aa0f13 (diff)
downloadopenembedded-core-contrib-849d65d55e4df5fa443b2cb7b4cee23913fc9d5a.tar.gz
openembedded-core-contrib-849d65d55e4df5fa443b2cb7b4cee23913fc9d5a.tar.bz2
openembedded-core-contrib-849d65d55e4df5fa443b2cb7b4cee23913fc9d5a.zip
runqemu: Add a tcpserial option
The option was added so that the qemurunner could start a second tcp serial port without adding machine conditional logic to qemurunner. The issue that made this necessary was that when "virt" is passed to qemu-system-aarch64, the normal mechanism for specifying a tcp serial port does not work. This is because the hardware for the "virt" machine is hardcoded in the device tree blob and the addition devices must be virtio devices. So runqemu can specify virtio for qemuarm64 whereas it seems all other qemu machines work with the "-serial tcp*" option. Signed-off-by: Randy Witt <randy.e.witt@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/lib/oeqa/utils/qemurunner.py4
-rwxr-xr-xscripts/runqemu4
-rwxr-xr-xscripts/runqemu-internal8
3 files changed, 14 insertions, 2 deletions
diff --git a/meta/lib/oeqa/utils/qemurunner.py b/meta/lib/oeqa/utils/qemurunner.py
index e976fd0819..33f31852a7 100644
--- a/meta/lib/oeqa/utils/qemurunner.py
+++ b/meta/lib/oeqa/utils/qemurunner.py
@@ -92,7 +92,7 @@ class QemuRunner:
# Set this flag so that Qemu doesn't do any grabs as SDL grabs interact
# badly with screensavers.
os.environ["QEMU_DONT_GRAB"] = "1"
- self.qemuparams = 'bootparams="console=tty1 console=ttyS0,115200n8" qemuparams="-serial tcp:127.0.0.1:{} -serial tcp:127.0.0.1:{}"'.format(threadport, self.serverport)
+ self.qemuparams = 'bootparams="console=tty1 console=ttyS0,115200n8" qemuparams="-serial tcp:127.0.0.1:{}"'.format(threadport)
if qemuparams:
self.qemuparams = self.qemuparams[:-1] + " " + qemuparams + " " + '\"'
@@ -102,7 +102,7 @@ class QemuRunner:
fcntl.fcntl(o, fcntl.F_SETFL, fl | os.O_NONBLOCK)
return os.read(o.fileno(), 1000000)
- launch_cmd = 'runqemu %s %s %s' % (self.machine, self.rootfs, self.qemuparams)
+ launch_cmd = 'runqemu tcpserial=%s %s %s %s' % (self.serverport, self.machine, self.rootfs, self.qemuparams)
# FIXME: We pass in stdin=subprocess.PIPE here to work around stty
# blocking at the end of the runqemu script when using this within
# oe-selftest (this makes stty error out immediately). There ought
diff --git a/scripts/runqemu b/scripts/runqemu
index 09c507dc7a..82711606f6 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -68,6 +68,7 @@ SCRIPT_QEMU_OPT=""
SCRIPT_QEMU_EXTRA_OPT=""
SCRIPT_KERNEL_OPT=""
SERIALSTDIO=""
+TCPSERIAL_PORTNUM=""
KVM_ENABLED="no"
KVM_ACTIVE="no"
@@ -150,6 +151,9 @@ while true; do
SCRIPT_KERNEL_OPT="$SCRIPT_KERNEL_OPT console=ttyS0"
SERIALSTDIO="1"
;;
+ "tcpserial="*)
+ TCPSERIAL_PORTNUM=${arg##tcpserial=}
+ ;;
"biosdir="*)
CUSTOMBIOSDIR="${arg##biosdir=}"
;;
diff --git a/scripts/runqemu-internal b/scripts/runqemu-internal
index d743322037..b317358f94 100755
--- a/scripts/runqemu-internal
+++ b/scripts/runqemu-internal
@@ -620,6 +620,14 @@ if [ "x$QEMUOPTIONS" = "x" ]; then
return 1
fi
+if [ $TCPSERIAL_PORTNUM != "" ]; then
+ if [ "$MACHINE" = "qemuarm64" ]; then
+ QEMUOPTIONS="$QEMUOPTIONS -device virtio-serial-device -chardev socket,id=virtcon,port=$TCPSERIAL_PORTNUM,host=127.0.0.1 -device virtconsole,chardev=virtcon"
+ else
+ QEMUOPTIONS="$QEMUOPTIONS -serial tcp:127.0.0.1:$TCPSERIAL_PORTNUM"
+ fi
+fi
+
PATH=$OECORE_NATIVE_SYSROOT/usr/bin:$PATH
QEMUBIN=`which $QEMU 2> /dev/null`