From nobody Sat Oct 03 12:42:00 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hxlf132Ztz6vLl7 for ; Sat, 03 Oct 2026 12:42:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hxlf11pD3z3Lvb for ; Sat, 03 Oct 2026 12:42:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791031321; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=LvUGzqg2XCVUJfowtBodAdCMonZ1BGH7JN27iKaD6Cs=; b=Q+XSTukvZORYQwtYZFtpN4SoS11szR9L2DYBC7PTlB8iCJki8DuPNMwwbNOz/obCRET2GS 3oyaPm/PAci0sz5iV7JmHVkFxiJ9AiiqTR8QlC5MaFfj0UuHAwiYV0191lRUx2DNuRjhcG jBCbFgYRG+bsQS+ZYSHobEiO4lbWSHEqrcrZomQQ93UVmlbvkjoGcslY0hCCIBk56zGNy+ 0JF+A1tyaOMLQruS6o6PV2JS+wyB3IkE+Ud8kOU17BPgD3VAnDYC7SW8eLbXE1IT9aHsGY m4FK6P7vLu5zhyCDMH6DRxB4/ozooC74yKS1FuRww1JJxVj58s4OOM3iu9l2rw== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791031321; b=u2ei5juHADL+mEencM2VTLWMTV4YBavO42HIv9D/P1B39re7JngXY4W/svD/KB/iF/7IV/ UJukFZ1kgzuNaR+Op+bnTJWUa0RnimSg0xSQR7LcPvH+Jz6l7ejRMZGH4Hb2Pc2cPNnFY4 DJwpzZP0CHAnYj/EVHxch3toRM6x2QSAuutmzkc3fopK07JUtlsdgkr2jtjYRWP7oO8ROc Rjt3iDlP3/KbDlNNjUxUuH9ZAmmZRJiR+Zxw3BsC/FOYpQnT77PUFBDtzTakxt7RUVDcLj 7PwYU1PZ0qrA3+0MwUB9P/aHp88nHqw3gLy97B0pgh6gNdyjWkK/tlCn5Nrv8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791031321; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=LvUGzqg2XCVUJfowtBodAdCMonZ1BGH7JN27iKaD6Cs=; b=dD+ZrTt/ypyOx3O2XW0/LPnmWqJaD9WdulhenvcyiObPVabT2ZGkmqIMNJ2Cfoj2bpNgoc VQc06ezEfunqNpshbZe+lFqup2n/FH6QSEhk/SBMgeKkr5k3k+A0/xhFkKMMPQE2jGqZd7 D5VYv7owCkv20wYDCtSo1Jwncf2cB1Y5qfJEc4c1yMRv/91akK5UXJVwlhJNma6aPps2Er qFtzkFhJdub2ZCJMldMD7jNOzh0fdxr63ihZtCwF+hMWUDUaqOCSbgHXbKm27krqWl0dzz IcLdVYWbc5nHpJENC1KiNvVRLOtjBHYGXCrd3MpH2X/0AU6N/cu3VdOC2z/UZQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hxlf01mZ1z13py for ; Sat, 03 Oct 2026 12:42:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 27150 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 03 Oct 2026 12:42:00 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Faraz Vahedi Subject: git: 765615997a3a - main - virtio_console: Handle VIRTIO_CONSOLE_RESIZE List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kfv X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 765615997a3a3ab649505d58087b7375736fdff7 Auto-Submitted: auto-generated Date: Sat, 03 Oct 2026 12:42:00 +0000 Message-Id: <6ac0f818.27150.3c20e224@gitrepo.freebsd.org> The branch main has been updated by kfv: URL: https://cgit.FreeBSD.org/src/commit/?id=765615997a3a3ab649505d58087b7375736fdff7 commit 765615997a3a3ab649505d58087b7375736fdff7 Author: Faraz Vahedi AuthorDate: 2026-10-03 12:40:45 +0000 Commit: Faraz Vahedi CommitDate: 2026-10-03 12:40:45 +0000 virtio_console: Handle VIRTIO_CONSOLE_RESIZE Multiport devices report console size per port by control event, which was ignored and hence their ttys could never have a window size. Reviewed by: markj Approved by: fuz (mentor) Differential Revision: https://reviews.freebsd.org/D60094 --- sys/dev/virtio/console/virtio_console.c | 38 +++++++++++++++++++++++++++++++++ sys/dev/virtio/console/virtio_console.h | 5 +++++ 2 files changed, 43 insertions(+) diff --git a/sys/dev/virtio/console/virtio_console.c b/sys/dev/virtio/console/virtio_console.c index 7dc6b531ea0e..bfa90b865d02 100644 --- a/sys/dev/virtio/console/virtio_console.c +++ b/sys/dev/virtio/console/virtio_console.c @@ -181,6 +181,8 @@ static void vtcon_ctrl_port_add_event(struct vtcon_softc *, int); static void vtcon_ctrl_port_remove_event(struct vtcon_softc *, int); static void vtcon_ctrl_port_console_event(struct vtcon_softc *, int); static void vtcon_ctrl_port_open_event(struct vtcon_softc *, int); +static void vtcon_ctrl_port_resize_event(struct vtcon_softc *, int, + const void *, size_t); static void vtcon_ctrl_port_name_event(struct vtcon_softc *, int, const char *, size_t); static void vtcon_ctrl_process_event(struct vtcon_softc *, @@ -819,6 +821,41 @@ vtcon_ctrl_port_open_event(struct vtcon_softc *sc, int id) VTCON_PORT_UNLOCK(port); } +static void +vtcon_ctrl_port_resize_event(struct vtcon_softc *sc, int id, const void *data, + size_t len) +{ + device_t dev; + struct vtcon_softc_port *scport; + struct vtcon_port *port; + struct virtio_console_resize resize; + + dev = sc->vtcon_dev; + scport = &sc->vtcon_ports[id]; + + if (data == NULL || len < sizeof(resize)) { + device_printf(dev, "%s: resize port %d, but no size\n", + __func__, id); + return; + } + memcpy(&resize, data, sizeof(resize)); + + VTCON_LOCK(sc); + port = scport->vcsp_port; + if (port == NULL) { + VTCON_UNLOCK(sc); + device_printf(dev, "%s: resize port %d, but does not exist\n", + __func__, id); + return; + } + + VTCON_PORT_LOCK(port); + VTCON_UNLOCK(sc); + vtcon_port_change_size(port, vtcon_htog16(sc, resize.cols), + vtcon_htog16(sc, resize.rows)); + VTCON_PORT_UNLOCK(port); +} + static void vtcon_ctrl_port_name_event(struct vtcon_softc *sc, int id, const char *name, size_t len) @@ -889,6 +926,7 @@ vtcon_ctrl_process_event(struct vtcon_softc *sc, break; case VIRTIO_CONSOLE_RESIZE: + vtcon_ctrl_port_resize_event(sc, id, data, data_len); break; case VIRTIO_CONSOLE_PORT_OPEN: diff --git a/sys/dev/virtio/console/virtio_console.h b/sys/dev/virtio/console/virtio_console.h index 98daec9ecc10..fa16e7bc7c4b 100644 --- a/sys/dev/virtio/console/virtio_console.h +++ b/sys/dev/virtio/console/virtio_console.h @@ -60,6 +60,11 @@ struct virtio_console_control { uint16_t value; /* Extra information for the key */ }; +struct virtio_console_resize { + uint16_t cols; + uint16_t rows; +} __packed; + /* Some events for control messages */ #define VIRTIO_CONSOLE_DEVICE_READY 0 #define VIRTIO_CONSOLE_PORT_ADD 1