[Libguestfs] [PATCH] lib: direct: Remove use of sga
Laszlo Ersek
lersek at redhat.com
Thu Sep 9 11:11:09 UTC 2021
On 09/08/21 17:42, Richard W.M. Jones wrote:
> 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 now in
> seabios which can be enabled using either -nographic or
> -machine graphics=off
(
That's from SeaBIOS commit 0ebc29f9c4db ("paravirt: serial console
configuration.", 2017-09-22), as far as I can tell. The containing
series is:
1 44270bc1d285 std: add cp437 to unicode map
2 90fa51152714 kbd: make enqueue_key public, add ascii_to_keycode
3 1bda724cc567 romfile: add support for constant files.
4 0ebc29f9c4db paravirt: serial console configuration.
5 d6728f301d7e add serial console support
Part of "rel-1.11.0".
)
>
> This commit removes sga and enables -machine graphics=off in the
> direct backend.
>
> (We cannot do the same for the libvirt backend because libvirt has no
> feature to implement this yet).
> ---
> 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");
>
So, I'm asking this question mainly for my own education:
How does libguestfs deal with different QEMU versions / QEMU feature
deprecation? Is there some kind of feature detection?
For example, why would it be less good to implement the change as follows:
if (g->verbose) {
if (guestfs_int_qemu_supports_device(...) {
arg ("-device", "sga");
} else {
#if defined(__i386__) || defined(__x86_64__)
arg ("-machine", "graphics=off");
#endif
}
This would continue working with SeaBIOS preceding "rel-1.11.0", if at
the same time, the QEMU board had SGA support.
But: do we care? (That's what I'd like to learn about libguestfs,
primarily.)
The patch looks good to me, otherwise.
Reviewed-by: Laszlo Ersek <lersek at redhat.com>
Thanks
Laszlo
More information about the Libguestfs
mailing list