From 8a4761c0fb720078757ecaafd26be18293253f2c Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 8 Sep 2021 16:06:22 +0100 Subject: [PATCH] lib: direct: Remove use of sga MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sga (or "sgabios" or "Serial Graphics Adapter") is an option ROM for seabios which directs output to the serial adapter. This is very useful for debugging BIOS problems during boot. RHEL wants to deprecate this feature (in fact, they just deprecated it without telling us). However there is an equivalent feature in seabios (seabios >= 1.11 / qemu >= 2.11.0) which can be enabled using either -nographic or -machine graphics=off This commit removes sga and enables -machine graphics=off in the direct backend. References (for RHEL 9 qemu change): https://bugzilla.redhat.com/show_bug.cgi?id=2002325 https://bugzilla.redhat.com/show_bug.cgi?id=2000845 https://lists.nongnu.org/archive/html/qemu-devel/2021-09/msg02417.html https://listman.redhat.com/archives/libvir-list/2021-September/msg00205.html For the libvirt backend we will continue to use . This currently breaks when sga is not available, but I talked to Dan and the plan there is to adapt libvirt so the same XML will enable -machine graphics=off. IOW libguestfs does not need to make any change. References (for libvirt change): https://bugzilla.redhat.com/show_bug.cgi?id=2003092 https://listman.redhat.com/archives/libvir-list/2021-September/msg00193.html Thanks: Gerd Hoffman, Daniel Berrangé (cherry picked from commit e14ff937422115e23094ca4cce80ec9fb01c10b3) --- lib/launch-direct.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/lib/launch-direct.c b/lib/launch-direct.c index 972e77e13..e5b9a5611 100644 --- a/lib/launch-direct.c +++ b/lib/launch-direct.c @@ -544,6 +544,13 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) append_list ("gic-version=host"); #endif append_list_format ("accel=%s", accel_val); +#if defined(__i386__) || defined(__x86_64__) + /* Tell seabios to send debug messages to the serial port. + * This used to be done by sgabios. + */ + if (g->verbose) + append_list ("graphics=off"); +#endif } end_list (); cpu_model = guestfs_int_get_cpu_model (has_kvm && !force_tcg); @@ -665,18 +672,6 @@ launch_direct (guestfs_h *g, void *datav, const char *arg) } end_list (); #endif - if (g->verbose && - guestfs_int_qemu_supports_device (g, data->qemu_data, - "Serial Graphics Adapter")) { - /* Use sgabios instead of vgabios. This means we'll see BIOS - * messages on the serial port, and also works around this bug - * in qemu 1.1.0: - * https://bugs.launchpad.net/qemu/+bug/1021649 - * QEmu has included sgabios upstream since just before 1.0. - */ - arg ("-device", "sga"); - } - /* Set up virtio-serial for the communications channel. */ start_list ("-chardev") { append_list ("socket"); -- 2.31.1