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:47:07 +0100
commitd893a2503da29ec99b3a911f8877cc59e7e6b50d (patch)
tree183020614bdb63c539d648116ce83a90508cb20a
parentfd164dcc31aa6c60e9834036a7cfcea5411daa3d (diff)
downloadpoky-d893a2503da29ec99b3a911f8877cc59e7e6b50d.tar.gz
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. (From OE-Core rev: 849d65d55e4df5fa443b2cb7b4cee23913fc9d5a) 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:
92 # Set this flag so that Qemu doesn't do any grabs as SDL grabs interact 92 # Set this flag so that Qemu doesn't do any grabs as SDL grabs interact
93 # badly with screensavers. 93 # badly with screensavers.
94 os.environ["QEMU_DONT_GRAB"] = "1" 94 os.environ["QEMU_DONT_GRAB"] = "1"
95 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) 95 self.qemuparams = 'bootparams="console=tty1 console=ttyS0,115200n8" qemuparams="-serial tcp:127.0.0.1:{}"'.format(threadport)
96 if qemuparams: 96 if qemuparams:
97 self.qemuparams = self.qemuparams[:-1] + " " + qemuparams + " " + '\"' 97 self.qemuparams = self.qemuparams[:-1] + " " + qemuparams + " " + '\"'
98 98
@@ -102,7 +102,7 @@ class QemuRunner:
102 fcntl.fcntl(o, fcntl.F_SETFL, fl | os.O_NONBLOCK) 102 fcntl.fcntl(o, fcntl.F_SETFL, fl | os.O_NONBLOCK)
103 return os.read(o.fileno(), 1000000) 103 return os.read(o.fileno(), 1000000)
104 104
105 launch_cmd = 'runqemu %s %s %s' % (self.machine, self.rootfs, self.qemuparams) 105 launch_cmd = 'runqemu tcpserial=%s %s %s %s' % (self.serverport, self.machine, self.rootfs, self.qemuparams)
106 # FIXME: We pass in stdin=subprocess.PIPE here to work around stty 106 # FIXME: We pass in stdin=subprocess.PIPE here to work around stty
107 # blocking at the end of the runqemu script when using this within 107 # blocking at the end of the runqemu script when using this within
108 # oe-selftest (this makes stty error out immediately). There ought 108 # 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=""
68SCRIPT_QEMU_EXTRA_OPT="" 68SCRIPT_QEMU_EXTRA_OPT=""
69SCRIPT_KERNEL_OPT="" 69SCRIPT_KERNEL_OPT=""
70SERIALSTDIO="" 70SERIALSTDIO=""
71TCPSERIAL_PORTNUM=""
71KVM_ENABLED="no" 72KVM_ENABLED="no"
72KVM_ACTIVE="no" 73KVM_ACTIVE="no"
73 74
@@ -150,6 +151,9 @@ while true; do
150 SCRIPT_KERNEL_OPT="$SCRIPT_KERNEL_OPT console=ttyS0" 151 SCRIPT_KERNEL_OPT="$SCRIPT_KERNEL_OPT console=ttyS0"
151 SERIALSTDIO="1" 152 SERIALSTDIO="1"
152 ;; 153 ;;
154 "tcpserial="*)
155 TCPSERIAL_PORTNUM=${arg##tcpserial=}
156 ;;
153 "biosdir="*) 157 "biosdir="*)
154 CUSTOMBIOSDIR="${arg##biosdir=}" 158 CUSTOMBIOSDIR="${arg##biosdir=}"
155 ;; 159 ;;
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
620 return 1 620 return 1
621fi 621fi
622 622
623if [ $TCPSERIAL_PORTNUM != "" ]; then
624 if [ "$MACHINE" = "qemuarm64" ]; then
625 QEMUOPTIONS="$QEMUOPTIONS -device virtio-serial-device -chardev socket,id=virtcon,port=$TCPSERIAL_PORTNUM,host=127.0.0.1 -device virtconsole,chardev=virtcon"
626 else
627 QEMUOPTIONS="$QEMUOPTIONS -serial tcp:127.0.0.1:$TCPSERIAL_PORTNUM"
628 fi
629fi
630
623PATH=$OECORE_NATIVE_SYSROOT/usr/bin:$PATH 631PATH=$OECORE_NATIVE_SYSROOT/usr/bin:$PATH
624 632
625QEMUBIN=`which $QEMU 2> /dev/null` 633QEMUBIN=`which $QEMU 2> /dev/null`