On September 18, 2025 10:23:33 AM GMT+02:00, "Daniel P. Berrangé"
<[email protected]> wrote:
> On Fri, Sep 12, 2025 at 05:39:53AM +0200, Filip Hejsek wrote:
> > From: Szymon Lukasz <[email protected]>
> >
> > 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.
> >
> > Signed-off-by: Szymon Lukasz <[email protected]>
> > Reviewed-by: Michael S. Tsirkin <[email protected]>
> > Signed-off-by: Filip Hejsek <[email protected]>
> > ---
> > [...]
> > + vser->port0_cols = cols;
> > + vser->port0_rows = rows;
> > + virtio_notify_config(vdev);
>
> IIUC, we should skip sending this if port->id does NOT reflect
> the primary port 0, as the virtio spec indicates F_SIZE only
> applies to port 0 unless we have F_MULTIPORT set.
I have already changed this in my working version. I'm on a phone
and don't have access to it right now, but it was something like this
pseudocode:
if "console-size" enabled:
if port id == 0:
port0_{cols,rows} = {cols,rows}
if multiport:
send VIRTIO_CONSOLE_RESIZE
else:
notify config
I guess I should make the config notification conditional on port 0 too.