qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Cleber Rosa <crosa@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Caio Carrara" <ccarrara@redhat.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
	"Aleksandar Rikalo" <arikalo@wavecomp.com>,
	"Aurelien Jarno" <aurelien@aurel32.net>,
	"Fam Zheng" <fam@euphon.net>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"Stefan Markovic" <smarkovic@wavecomp.com>,
	qemu-s390x@nongnu.org,
	"Aleksandar Markovic" <amarkovic@wavecomp.com>,
	"Cleber Rosa" <crosa@redhat.com>,
	"Cornelia Huck" <cohuck@redhat.com>
Subject: [Qemu-devel] [PATCH v3 13/20] scripts/qemu.py: support adding a console with the default serial device
Date: Wed, 20 Feb 2019 19:57:46 -0500	[thread overview]
Message-ID: <20190221005753.27955-14-crosa@redhat.com> (raw)
In-Reply-To: <20190221005753.27955-1-crosa@redhat.com>

The set_console() utility function traditionally adds a device either
based on the explicitly given device type, or based on the machine type,
a known good type of device.

But, for a number of machine types, it may be impossible or
inconvenient to add the devices my means of "-device" command line
options, and then it may better to just use the "-serial" option and
let QEMU itself, based on the machine type, set the device
accordingly.

To achieve that, the behavior of set_console() now flags the intention
to add a console device on launch(), and if no explicit device type is
given, and there's no definition on CONSOLE_DEV_TYPES, the "-serial"
is going to be added to the QEMU command line, instead of raising
exceptions.

Based on testing with different machine types, the CONSOLE_DEV_TYPES
is now being set to the bare essential entries (one entry to be
honest), for machine types that can not easily give us a working
console with "-serial".

Signed-off-by: Cleber Rosa <crosa@redhat.com>
---
 scripts/qemu.py | 39 +++++++++++++++++++--------------------
 1 file changed, 19 insertions(+), 20 deletions(-)

diff --git a/scripts/qemu.py b/scripts/qemu.py
index ee85309923..bd1d2e2b9a 100644
--- a/scripts/qemu.py
+++ b/scripts/qemu.py
@@ -42,11 +42,6 @@ def kvm_available(target_arch=None):
 
 #: Maps machine types to the preferred console device types
 CONSOLE_DEV_TYPES = {
-    r'^clipper$': 'isa-serial',
-    r'^malta': 'isa-serial',
-    r'^(pc.*|q35.*|isapc)$': 'isa-serial',
-    r'^(40p|powernv|prep)$': 'isa-serial',
-    r'^pseries.*': 'spapr-vty',
     r'^s390-ccw-virtio.*': 'sclpconsole',
     }
 
@@ -129,6 +124,7 @@ class QEMUMachine(object):
         self._temp_dir = None
         self._launched = False
         self._machine = None
+        self._console_set = False
         self._console_device_type = None
         self._console_address = None
         self._console_socket = None
@@ -248,13 +244,17 @@ class QEMUMachine(object):
                 '-display', 'none', '-vga', 'none']
         if self._machine is not None:
             args.extend(['-machine', self._machine])
-        if self._console_device_type is not None:
+        if self._console_set:
             self._console_address = os.path.join(self._temp_dir,
                                                  self._name + "-console.sock")
             chardev = ('socket,id=console,path=%s,server,nowait' %
                        self._console_address)
-            device = '%s,chardev=console' % self._console_device_type
-            args.extend(['-chardev', chardev, '-device', device])
+            args.extend(['-chardev', chardev])
+            if self._console_device_type is None:
+                args.extend(['-serial', 'chardev:console'])
+            else:
+                device = '%s,chardev=console' % self._console_device_type
+                args.extend(['-device', device])
         return args
 
     def _pre_launch(self):
@@ -480,30 +480,29 @@ class QEMUMachine(object):
         line.
 
         This is a convenience method that will either use the provided
-        device type, of if not given, it will used the device type set
-        on CONSOLE_DEV_TYPES.
+        device type, of if not given, it will use the device type set
+        on CONSOLE_DEV_TYPES if a machine type is set, and a matching
+        entry exists on CONSOLE_DEV_TYPES.
 
         The actual setting of command line arguments will be be done at
         machine launch time, as it depends on the temporary directory
         to be created.
 
-        @param device_type: the device type, such as "isa-serial"
+        @param device_type: the device type, such as "isa-serial".  If
+                            None is given (the default value) a "-serial
+                            chardev:console" command line argument will
+                            be used instead, resorting to the machine's
+                            default device type, if a machine type is set,
+                            and a matching entry exists on CONSOLE_DEV_TYPES.
         @raises: QEMUMachineAddDeviceError if the device type is not given
                  and can not be determined.
         """
-        if device_type is None:
-            if self._machine is None:
-                raise QEMUMachineAddDeviceError("Can not add a console device:"
-                                                " QEMU instance without a "
-                                                "defined machine type")
+        self._console_set = True
+        if device_type is None and self._machine is not None:
             for regex, device in CONSOLE_DEV_TYPES.items():
                 if re.match(regex, self._machine):
                     device_type = device
                     break
-            if device_type is None:
-                raise QEMUMachineAddDeviceError("Can not add a console device:"
-                                                " no matching console device "
-                                                "type definition")
         self._console_device_type = device_type
 
     @property
-- 
2.20.1

  parent reply	other threads:[~2019-02-21  0:59 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-21  0:57 [Qemu-devel] [PATCH v3 00/20] Acceptance Tests: target architecture support Cleber Rosa
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 01/20] scripts/qemu.py: log QEMU launch command line Cleber Rosa
2019-03-01 10:16   ` Cornelia Huck
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 02/20] Acceptance tests: show avocado test execution by default Cleber Rosa
2019-03-01 10:19   ` Cornelia Huck
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 03/20] Acceptance tests: improve docstring on pick_default_qemu_bin() Cleber Rosa
2019-03-01 10:21   ` Cornelia Huck
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 04/20] Acceptance tests: fix doc reference to avocado_qemu directory Cleber Rosa
2019-03-01 10:22   ` Cornelia Huck
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 05/20] Acceptance tests: introduce arch parameter and attribute Cleber Rosa
2019-03-01 10:27   ` Cornelia Huck
2019-03-11 23:28     ` Cleber Rosa
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 06/20] Acceptance tests: use "arch:" tag to filter target specific tests Cleber Rosa
2019-03-01 10:32   ` Cornelia Huck
2019-03-11 23:45     ` Cleber Rosa
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 07/20] Acceptance tests: look for target architecture in test tags first Cleber Rosa
2019-03-01 10:37   ` Cornelia Huck
2019-03-11 23:50     ` Cleber Rosa
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 08/20] Boot Linux Console Test: rename the x86_64 after the arch and machine Cleber Rosa
2019-03-01 10:38   ` Cornelia Huck
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 09/20] Boot Linux Console Test: update the x86_64 kernel Cleber Rosa
2019-03-01 10:41   ` Cornelia Huck
2019-03-11 23:58     ` Cleber Rosa
2019-03-02 21:42   ` Philippe Mathieu-Daudé
2019-03-12  0:00     ` Cleber Rosa
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 10/20] Boot Linux Console Test: add common kernel command line options Cleber Rosa
2019-03-01 10:43   ` Cornelia Huck
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 11/20] Boot Linux Console Test: increase timeout Cleber Rosa
2019-03-01 10:45   ` Cornelia Huck
2019-03-02 21:43   ` Philippe Mathieu-Daudé
2019-03-12  0:04     ` Cleber Rosa
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 12/20] Boot Linux Console Test: refactor the console watcher into utility method Cleber Rosa
2019-03-01 10:47   ` Cornelia Huck
2019-02-21  0:57 ` Cleber Rosa [this message]
2019-03-01 10:55   ` [Qemu-devel] [PATCH v3 13/20] scripts/qemu.py: support adding a console with the default serial device Cornelia Huck
2019-03-12  0:47     ` Cleber Rosa
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 14/20] Boot Linux Console Test: add a test for mips + malta Cleber Rosa
2019-02-22 20:02   ` Aleksandar Markovic
2019-03-02 21:44   ` Philippe Mathieu-Daudé
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 15/20] Boot Linux Console Test: add a test for mips64el " Cleber Rosa
2019-02-22 20:01   ` Aleksandar Markovic
2019-03-02 21:39   ` Philippe Mathieu-Daudé
2019-03-12  1:06     ` Cleber Rosa
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 16/20] Boot Linux Console Test: add a test for ppc64 + pseries Cleber Rosa
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 17/20] Boot Linux Console Test: add a test for aarch64 + virt Cleber Rosa
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 18/20] Boot Linux Console Test: add a test for arm " Cleber Rosa
2019-03-02 20:13   ` Philippe Mathieu-Daudé
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 19/20] Boot Linux Console Test: add a test for s390x + s390-ccw-virtio Cleber Rosa
2019-02-21  0:57 ` [Qemu-devel] [PATCH v3 20/20] Boot Linux Console Test: add a test for alpha + clipper Cleber Rosa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190221005753.27955-14-crosa@redhat.com \
    --to=crosa@redhat.com \
    --cc=alex.bennee@linaro.org \
    --cc=amarkovic@wavecomp.com \
    --cc=arikalo@wavecomp.com \
    --cc=aurelien@aurel32.net \
    --cc=ccarrara@redhat.com \
    --cc=cohuck@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=fam@euphon.net \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=smarkovic@wavecomp.com \
    --cc=wainersm@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).