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 <[email protected]>,
> > but partially rewritten to fix various corner cases.
> >
> > Signed-off-by: Szymon Lukasz <[email protected]>
> > Signed-off-by: Filip Hejsek <[email protected]>
> > ---
> > 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.
> > 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
> --
> |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
> |: https://libvirt.org -o- https://fstop138.berrange.com :|
> |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|