From: "Michael S. Tsirkin" <mst@redhat.com>
To: Filip Hejsek <filip.hejsek@gmail.com>
Cc: "Daniel P. Berrangé" <berrange@redhat.com>,
qemu-devel@nongnu.org,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Laurent Vivier" <lvivier@redhat.com>,
"Amit Shah" <amit@kernel.org>,
"Markus Armbruster" <armbru@redhat.com>,
"Eric Blake" <eblake@redhat.com>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Yanan Wang" <wangyanan55@huawei.com>,
"Zhao Liu" <zhao1.liu@intel.com>,
"Maximilian Immanuel Brandtner" <maxbr@linux.ibm.com>,
"Szymon Lukasz" <noh4hss@gmail.com>
Subject: Re: [PATCH v6 08/12] virtio-serial-bus: add terminal resize messages
Date: Tue, 20 Jan 2026 07:56:31 -0500 [thread overview]
Message-ID: <20260120075558-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <ef45a24d7052d685f4951aaa6d37ce55b0746698.camel@gmail.com>
On Tue, Jan 20, 2026 at 10:16:08AM +0100, Filip Hejsek wrote:
> On Tue, 2026-01-20 at 08:43 +0000, Daniel P. Berrangé wrote:
> > On Mon, Jan 19, 2026 at 04:43:21AM -0500, Michael S. Tsirkin wrote:
> > > On Mon, Jan 19, 2026 at 09:38:41AM +0000, Daniel P. Berrangé wrote:
> > > > On Mon, Jan 19, 2026 at 04:27:51AM +0100, Filip Hejsek wrote:
> > > > > Implement the part of the virtio spec that allows to notify the virtio
> > > > > driver about terminal resizes. The virtio spec contains two methods to
> > > > > achieve that:
> > > > >
> > > > > For legacy drivers, we have only one port and we put the terminal size
> > > > > in the config space and inject the config changed interrupt.
> > > > >
> > > > > For multiport devices, we use the control virtqueue to send a packet
> > > > > containing the terminal size. Note that old versions of the Linux kernel
> > > > > used an incorrect order for the fields (rows then cols instead of cols
> > > > > then rows), until it was fixed by commit 5326ab737a47278dbd16ed3ee7380b26c7056ddd.
> > > > >
> > > > > As a result, when using a Linux kernel older than 6.15, the number of rows
> > > > > and columns will be swapped.
> > > > >
> > > > > Based on a patch originally written by Szymon Lukasz <noh4hss@gmail.com>,
> > > > > but partially rewritten to fix various corner cases.
> > > > >
> > > > > Signed-off-by: Szymon Lukasz <noh4hss@gmail.com>
> > > > > Signed-off-by: Filip Hejsek <filip.hejsek@gmail.com>
> > > > > ---
> > > > > hw/char/trace-events | 1 +
> > > > > hw/char/virtio-serial-bus.c | 76 +++++++++++++++++++++++++++++++++++++--
> > > > > hw/core/machine.c | 4 ++-
> > > > > include/hw/virtio/virtio-serial.h | 5 +++
> > > > > 4 files changed, 83 insertions(+), 3 deletions(-)
> > > > >
> > > >
> > > > > @@ -1158,6 +1228,8 @@ static const Property virtio_serial_properties[] = {
> > > > > 31),
> > > > > DEFINE_PROP_BIT64("emergency-write", VirtIOSerial, host_features,
> > > > > VIRTIO_CONSOLE_F_EMERG_WRITE, true),
> > > > > + DEFINE_PROP_BIT64("console-size", VirtIOSerial, host_features,
> > > > > + VIRTIO_CONSOLE_F_SIZE, true),
> > > > > };
> > > >
> > > > Given the horrible mess with the kernel intentionally changing its
> > > > behaviour after 15 years, I don't think we can we set this to be
> > > > enabled by default.
> > > >
> > > > The recent behaviour change is never going to be backported to enough
> > > > stable distros that we can rely on the new behaviour, and thanks to
> > > > the change we can't rely on the old behaviour either. We're doomed no
> > > > matter what ordernig we use.
> > > >
> > > > Thus, IMHO, this has to stay set to false indefinitely.
> > >
> > > Not sure. But what we can do is add another flag to detect new kernels.
> > > I'll try to think of a good name but suggestions are welcome.
> >
> > How can we detect the kernel ? There's no feature flag that can be
> > negotiated or detected to report the changed kernel behaviour
> > AFAICS. We have no visibility of kernel version, and even if we did,
> > the possibility of backports would make that unreliable too. The
> > inability to auto-detect anything is what makes the kernel behaviour
> > change so awful.
> >
> > We can add a nother qemu flag "console-size-inverted" to flip QEMU
> > between the 2 behaviours, but that still won't let us be able to
> > enable 'console-size' by default without guaranteed regressions.
> > The 'console-size-inverted' flag would merely flip the breakage
> > between different groups of guest OS.
>
> We could add a new virtio feature flag, and by default only enable
> resizing when the guest supports this new flag. Kernels that support
> the flag would work by default, and kernels that have the correct order
> but don't yet support the flag would require manually enabling the
> feature.
Right. For now. In X years when we see downstreams backporting the
feature, things can change.
> In any case, we will probably need to add some documentation for the
> property. I'm trying to find a good place for it, but it seems that the
> virtconsole and virtio-serial-bus devices are not actually documented
> anywhere at all. They should probably be documented in the man page,
> right?
>
> >
> > > > > static void virtio_serial_class_init(ObjectClass *klass, const void *data)
> > > > > diff --git a/hw/core/machine.c b/hw/core/machine.c
> > > > > index 6411e68856..50554b8900 100644
> > > > > --- a/hw/core/machine.c
> > > > > +++ b/hw/core/machine.c
> > > > > @@ -38,7 +38,9 @@
> > > > > #include "hw/acpi/generic_event_device.h"
> > > > > #include "qemu/audio.h"
> > > > >
> > > > > -GlobalProperty hw_compat_10_2[] = {};
> > > > > +GlobalProperty hw_compat_10_2[] = {
> > > > > + { "virtio-serial-device", "console-size", "off" },
> > > > > +};
> > > > > const size_t hw_compat_10_2_len = G_N_ELEMENTS(hw_compat_10_2);
> > > > >
> > > > > GlobalProperty hw_compat_10_1[] = {
> >
> > With regards,
> > Daniel
next prev parent reply other threads:[~2026-01-20 12:56 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-19 3:27 [PATCH v6 00/12] virtio-console: notify about the terminal size Filip Hejsek
2026-01-19 3:27 ` [PATCH v6 01/12] chardev: add cols, rows fields Filip Hejsek
2026-01-19 3:27 ` [PATCH v6 02/12] chardev: add CHR_EVENT_RESIZE Filip Hejsek
2026-01-19 3:27 ` [PATCH v6 03/12] chardev: add qemu_chr_resize() Filip Hejsek
2026-01-19 3:27 ` [PATCH v6 04/12] char-mux: add support for the terminal size Filip Hejsek
2026-01-19 3:27 ` [PATCH v6 05/12] main-loop: change the handling of SIGWINCH Filip Hejsek
2026-01-19 3:27 ` [PATCH v6 06/12] char-stdio: add support for the terminal size Filip Hejsek
2026-01-19 3:27 ` [PATCH v6 07/12] qmp: add chardev-window-size-changed command Filip Hejsek
2026-01-19 6:47 ` Markus Armbruster
2026-01-20 8:04 ` Filip Hejsek
2026-01-20 8:18 ` [PATCH] qapi: drop "must exist" from ID descriptions for consistency Filip Hejsek
2026-01-19 3:27 ` [PATCH v6 08/12] virtio-serial-bus: add terminal resize messages Filip Hejsek
2026-01-19 9:38 ` Daniel P. Berrangé
2026-01-19 9:43 ` Michael S. Tsirkin
2026-01-20 8:43 ` Daniel P. Berrangé
2026-01-20 9:16 ` Filip Hejsek
2026-01-20 12:56 ` Michael S. Tsirkin [this message]
2026-01-20 9:50 ` Filip Hejsek
2026-01-20 9:54 ` Daniel P. Berrangé
2026-01-20 10:07 ` Filip Hejsek
2026-01-20 10:10 ` Daniel P. Berrangé
2026-01-20 10:16 ` Filip Hejsek
2026-01-20 10:20 ` Daniel P. Berrangé
2026-01-20 10:22 ` Filip Hejsek
2026-01-20 10:28 ` Filip Hejsek
2026-01-20 12:58 ` Michael S. Tsirkin
2026-01-19 3:27 ` [PATCH v6 09/12] virtio-console: notify the guest about terminal resizes Filip Hejsek
2026-01-19 3:27 ` [PATCH v6 10/12] char-win-stdio: add support for terminal size Filip Hejsek
2026-01-19 3:27 ` [PATCH v6 11/12] ui/console-vc: forward text console size to vc chardev Filip Hejsek
2026-01-19 3:27 ` [PATCH v6 12/12] ui/gtk: forward gtk " Filip Hejsek
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=20260120075558-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=amit@kernel.org \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=eblake@redhat.com \
--cc=eduardo@habkost.net \
--cc=filip.hejsek@gmail.com \
--cc=lvivier@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=maxbr@linux.ibm.com \
--cc=noh4hss@gmail.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=wangyanan55@huawei.com \
--cc=zhao1.liu@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.