From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Maximilian Immanuel Brandtner <maxbr@linux.ibm.com>
Cc: Filip Hejsek <filip.hejsek@gmail.com>,
	amit@kernel.org, armbru@redhat.com, eblake@redhat.com,
	eduardo@habkost.net, lvivier@redhat.com,
	marcandre.lureau@redhat.com, marcel.apfelbaum@gmail.com,
	mst@redhat.com, noh4hss@gmail.com, pbonzini@redhat.com,
	philmd@linaro.org, qemu-devel@nongnu.org, wangyanan55@huawei.com,
	zhao1.liu@intel.com, nsg@linux.ibm.com
Subject: Re: [PATCH v2] char-pty: add support for the terminal size
Date: Thu, 18 Sep 2025 09:59:51 +0100	[thread overview]
Message-ID: <aMvKBxaYLR065YKu@redhat.com> (raw)
In-Reply-To: <e6c30d2143147ebf285e69b4a786c0ed0f5212d2.camel@linux.ibm.com>
On Thu, Sep 18, 2025 at 10:54:45AM +0200, Maximilian Immanuel Brandtner wrote:
> On Thu, 2025-09-18 at 09:48 +0100, Daniel P. Berrangé wrote:
> > On Thu, Sep 18, 2025 at 10:39:28AM +0200, Maximilian Immanuel
> > Brandtner wrote:
> > > On Thu, 2025-09-18 at 09:35 +0100, Daniel P. Berrangé wrote:
> > > > On Wed, Sep 17, 2025 at 08:29:39PM +0200, Filip Hejsek wrote:
> > > > > On Wed, 2025-09-17 at 18:53 +0100, Daniel P. Berrangé wrote:
> > > > > > On Wed, Sep 17, 2025 at 07:11:03PM +0200, Filip Hejsek wrote:
> > > > > > > On Wed, 2025-09-17 at 17:17 +0100, Daniel P. Berrangé
> > > > > > > wrote:
> > > > > > > 
> > > > > > > > We shouldn't send any size info to the guest if the hsot
> > > > > > > > backend
> > > > > > > > does not have it available.
> > > > > > > 
> > > > > > > Does that mean sending 0x0, or not sending anything at all?
> > > > > > > The
> > > > > > > later
> > > > > > > is tricky, because for non-multiport devices it's only
> > > > > > > really
> > > > > > > possible
> > > > > > > by not offering the feature bit, but we don't know upfront
> > > > > > > whether the
> > > > > > > size command will be used.
> > > > 
> > > > What are the semantics in the guest if we sent 0x0 as the size ?
> > > > AFAICT the virtio spec is silent on what '0x0' means.
> > > > 
> > > > It seems like it could conceivably have any behaviour, whether
> > > > a zero-size console, or a console clamped to 1x1 as a min size,
> > > > or a console reset to an arbitrary guest default like 80x24.
> > > 
> > > During testing the kernel resized the tty to 0x0 if VirtIO
> > > instructed
> > > the kernel to resize the tty to 0x0.
> > 
> > If the chardev backends are defaulting to 0x0 for everything except
> > the 'stdio' backend, then this series is surely going to break all
> > existing usage of virtio-console for non-stdio backends ?
> > 
> > What am I missing here ?
> 
> Most applications fall back to 80x24 if the terminal size is 0x0 so
> it's not as big of a dealbreaker as you might think.
I'm not convinced that its a good idea for QEMU to be relying on every
application to be doing that. I can forsee the bug reports from situations
where this doesn't happen and something ends up dividing by zero when
doing an aspect ratio calculation.  Yes, we could point to the app code
and call it buggy, but I think there's a strong case to be made that we
shouldn't have been sending 0x0 to begin with.
> However, I think it would be even better if the patch-set could be
> changed to account for that. After initializing the VirtIO console a
> resize event could be sent to set the initial size (80x24), which might
> later be changed or be left as is.
The problem with QEMU sending 80x24 instead of 0x0 is that the majority
of Linux guests will then treat that as 24x80 due to the historical bug
in Linux drivers. This will probably be even worse than the bugs we get
from sending 0x0.
> If the VIRTIO_CONSOLE_F_SIZE is negotiated(and this feature flag is
> necessary for multiport resize messages not to be ignored) QEMU is
> responsible for setting the initial terminal size.
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 :|
next prev parent reply	other threads:[~2025-09-18  9:02 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-12  3:39 [PATCH v4 00/10] virtio-console: notify about the terminal size Filip Hejsek
2025-09-12  3:39 ` [PATCH v4 01/10] chardev: add cols, rows fields Filip Hejsek
2025-09-12  3:39 ` [PATCH v4 02/10] chardev: add CHR_EVENT_RESIZE Filip Hejsek
2025-09-12  3:39 ` [PATCH v4 03/10] chardev: add qemu_chr_resize() Filip Hejsek
2025-09-18  8:45   ` Maximilian Immanuel Brandtner
2025-09-18  9:31     ` Filip Hejsek
2025-09-12  3:39 ` [PATCH v4 04/10] char-mux: add support for the terminal size Filip Hejsek
2025-09-18  8:32   ` Maximilian Immanuel Brandtner
2025-09-18  9:11     ` Filip Hejsek
2025-09-12  3:39 ` [PATCH v4 05/10] main-loop: change the handling of SIGWINCH Filip Hejsek
2025-09-12  3:39 ` [PATCH v4 06/10] char-stdio: add support for the terminal size Filip Hejsek
2025-09-12  3:39 ` [PATCH v4 07/10] qmp: add chardev-resize command Filip Hejsek
2025-09-12 14:01   ` Markus Armbruster
2025-09-12 18:10     ` Filip Hejsek
2025-09-15  6:35       ` Markus Armbruster
2025-09-15 22:22         ` Filip Hejsek
2025-09-16 13:07           ` Markus Armbruster
2025-09-16 17:01             ` Filip Hejsek
2025-09-17  8:25               ` Markus Armbruster
2025-09-12  3:39 ` [PATCH v4 08/10] virtio-serial-bus: add terminal resize messages Filip Hejsek
2025-09-12 13:50   ` Markus Armbruster
2025-09-12 15:02     ` Filip Hejsek
2025-09-18  8:23   ` Daniel P. Berrangé
2025-09-18  8:51     ` Filip Hejsek
2025-09-12  3:39 ` [PATCH v4 09/10] virtio-console: notify the guest about terminal resizes Filip Hejsek
2025-09-12  3:39 ` [PATCH v4 10/10] char-win-stdio: add support for terminal size Filip Hejsek
2025-09-12  8:41 ` [PATCH v4 00/10] virtio-console: notify about the " Michael S. Tsirkin
2025-09-12  8:44   ` Michael S. Tsirkin
2025-09-12  8:50   ` Daniel P. Berrangé
2025-09-12  8:54     ` Michael S. Tsirkin
2025-09-15  8:41     ` Maximilian Immanuel Brandtner
2025-09-15  8:44       ` Daniel P. Berrangé
2025-09-15 16:25         ` [PATCH] char-pty: add support for " Maximilian Immanuel Brandtner
2025-09-15 16:34           ` [PATCH v2] " Maximilian Immanuel Brandtner
2025-09-15 16:36             ` Michael S. Tsirkin
2025-09-15 22:02             ` Filip Hejsek
2025-09-17  9:39               ` Maximilian Immanuel Brandtner
2025-09-17 13:09                 ` Filip Hejsek
2025-09-17 13:31                   ` Daniel P. Berrangé
2025-09-17 14:08                     ` Filip Hejsek
2025-09-17 16:17                       ` Daniel P. Berrangé
2025-09-17 17:11                         ` Filip Hejsek
2025-09-17 17:53                           ` Daniel P. Berrangé
2025-09-17 18:29                             ` Filip Hejsek
2025-09-18  8:35                               ` Daniel P. Berrangé
2025-09-18  8:39                                 ` Maximilian Immanuel Brandtner
2025-09-18  8:48                                   ` Daniel P. Berrangé
2025-09-18  8:54                                     ` Maximilian Immanuel Brandtner
2025-09-18  8:59                                       ` Daniel P. Berrangé [this message]
2025-09-18  9:05                                         ` Maximilian Immanuel Brandtner
2025-09-18 19:21                                           ` Filip Hejsek
2025-09-18  7:53                     ` Maximilian Immanuel Brandtner
2025-09-18  8:10                       ` Filip Hejsek
2025-09-12 14:24   ` [PATCH v4 00/10] virtio-console: notify about " Filip Hejsek
2025-09-15 23:02 ` Filip Hejsek
2025-09-15 23:08   ` Michael S. Tsirkin
2025-09-17 18:32     ` 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=aMvKBxaYLR065YKu@redhat.com \
    --to=berrange@redhat.com \
    --cc=amit@kernel.org \
    --cc=armbru@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=mst@redhat.com \
    --cc=noh4hss@gmail.com \
    --cc=nsg@linux.ibm.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 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).