From nobody Fri Nov 21 10:13:15 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1763575200; cv=none; d=zohomail.com; s=zohoarc; b=WgeeRO/W/G1jEMlJImky+A1sKQs6MKxYIEApcZxhEtiscRdKn90vvkJM0ffvX1WwpYv9s786yQxPN1/6WKg4ZOmgbDC5FqekyJqcP1y2NA5wUfhUGEEYUmCTvAzaxz1l6zV/0hjqweMn/getM/URTLLD120IYkZaANjiYmZRITM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1763575200; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=k9evYQPzJalvJQCcLpmft/gyf+7oJz1HkffLsrhdYsI=; b=Kfh8P00Fbziy6pBz0OMErgpMwgaqizXdk64K7MYItCdiJMWy2ZJOKGZ9R4tfYOebxgElg54aQwHfWs6nkUXIdkol6RWF8eo32aiVJ4kxPt6NOPVbhXJSI+XzGEvC69M1uO6xbYV/Y8CrBypROkOMOhGLl7Ssnf+TlEjeD+xTPTo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 176357520089058.2310757472809; Wed, 19 Nov 2025 10:00:00 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id EA16643F65; Wed, 19 Nov 2025 12:59:59 -0500 (EST) Received: from [172.19.199.50] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 398E4441BE; Wed, 19 Nov 2025 12:57:29 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 9604A43F65; Wed, 19 Nov 2025 12:56:37 -0500 (EST) Received: from mail-lf1-f43.google.com (mail-lf1-f43.google.com [209.85.167.43]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 304FE41C16 for ; Wed, 19 Nov 2025 12:56:36 -0500 (EST) Received: by mail-lf1-f43.google.com with SMTP id 2adb3069b0e04-5943d20f352so7672624e87.0 for ; Wed, 19 Nov 2025 09:56:36 -0800 (PST) Received: from tulp.my.domain ([176.96.226.171]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5969db8dc41sm14292e87.45.2025.11.19.09.56.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Nov 2025 09:56:32 -0800 (PST) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.3 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763574994; x=1764179794; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=k9evYQPzJalvJQCcLpmft/gyf+7oJz1HkffLsrhdYsI=; b=e2dDYQz9FSDz6ZYC5iBFznyHX11fPQEhDQmz0SbZBUxO4svBGbaiJmetFXnzuo632I rLvsWJ5D75GtarRz2IOEX7uQEEBC14TBQkMmNUWJ5CgqzTUVYSYDTrXcZH6F3TSGc8rg JCD4XtWvhuvYIcAeMQRYou3LX/WFatVgcc92mCMI90w9BIpdoFWxVP+6nM4Cu2BKwLtG 7eZSGrgzLVacrNQe5Xncj0DVWCNLOHtBw5eHTMYIipqixB4KEspkr57brM1LURnyXH2J q0rdQUJ3RjPMTnDami9MrW89q+VTMZUSQaOSU8lR32P3Mi6GGRAs4/Xq8KArQbjSHkBK sbxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763574994; x=1764179794; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=k9evYQPzJalvJQCcLpmft/gyf+7oJz1HkffLsrhdYsI=; b=dyFy7YE+tvF1X9U9qxCqPr4+IPizODH/bKSpHvWLab8MHwdpgBVyxUdOSJzYvpvbOS 93U4TQBG715c0V3Zyx/BvLN37Zi1bxu5+t8j3+vZ4GQ1599BSgTalin7gKseLcDsjf8n u+3H+ukZWnDc1F/nKC5ZQlUBEfkYqV9p1GNQUnQbfZE4cWdxpr0DynHNlG6QasBr8FI/ Lqgawsu9A/6WtEcDcJNev1HsFpaO6W0F92e5wjwYoYGjf6o0H1YEsqfRrfaMrUTPQAw1 cIuuXtwkqCrqfcMd8I9LY1AtKlLt8OCwOhtDmm9LvvuW31f1KzxB5jFsB5RNxluwEbYO k4sw== X-Gm-Message-State: AOJu0YyKRyO6u2PVEScW0u0og7D5ArxHEKq3uFK1pawUfb8dPvKf6qgz OKjzIAlmkup7bMlRBTMb17vqkCq9/MEYqGOtQz3uSWSiIobYhQDJzZndw4zYiwlFQ6OTpA== X-Gm-Gg: ASbGncvsSK+U4IEUV3RoTejonktu1tJbbHeOlFNt/ixzquWZQnVSxrODUGcIxG3poAe JNQbEtvud6tHxvuUHJ6MyU1Hkr0+WX1fgj4rduuwZOtLqOkb8ZzDQHr17Aajht9OyHx/HJGUsEU QprNcTpnBvvMYlqDtRUNj4M6REoP+z+Am6/UBqtGuwCRuKorFwE9PlLKXK6C5LXGrmxUPUYkHOn Mjy3pFZqamQ2sj8aIYOfDhshZCrEVl2iM9fTD8g/7Getc/ldOo3oYH0uJLPZlgQjrXTEDdbNI5g v6vzNvEQwcXD1/eDIyF+UZO54EWzv7MuYbieyra1CqXuQzjwFUeEivaTAE8OJKiKr0KXGd9opZb u1Ue1Ap40p8e0BxhL9gz3jYC/5YrghzIqYcrPmS2nDuoyIpCsQkedxCeErwp+Ogle5oJ9bkOakf qBD83HBif8JXj07PHTKw== X-Google-Smtp-Source: AGHT+IFJ4a+mD5lLEYJ7eTU/cTWdOVNixqFsUcrkTCsZDaelgewH2AjAx6dagZD33JMIvWW0Wfi0XQ== X-Received: by 2002:a05:6512:239a:b0:594:3d20:f021 with SMTP id 2adb3069b0e04-595841e10e3mr7456648e87.3.1763574994105; Wed, 19 Nov 2025 09:56:34 -0800 (PST) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 2/2] bhyve: support VNC 'wait' attribute Date: Wed, 19 Nov 2025 18:54:26 +0100 Message-ID: <20251119175427.55587-3-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251119175427.55587-1-bogorodskiy@gmail.com> References: <20251119175427.55587-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: DR6BPOOP5CUY5LYSOHC5PWKE6WW5C7Z5 X-Message-ID-Hash: DR6BPOOP5CUY5LYSOHC5PWKE6WW5C7Z5 X-MailFrom: bogorodskiy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Roman Bogorodskiy X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1763575203648019100 Content-Type: text/plain; charset="utf-8" Bhyve supports the 'wait' option for the VNC device configuration. When enabled, VM boots only upon a VNC connection. Sample device configuration looks like this: -s 29,fbuf,tcp=3D0.0.0.0:5900,w=3D800,h=3D600,wait Signed-off-by: Roman Bogorodskiy Reviewed-by: Martin Kletzander --- src/bhyve/bhyve_command.c | 3 ++ .../bhyvexml2argv-vnc-wait-no.args | 13 ++++++ .../bhyvexml2argv-vnc-wait-no.ldargs | 1 + .../bhyvexml2argv-vnc-wait-no.xml | 26 +++++++++++ .../bhyvexml2argv-vnc-wait.args | 13 ++++++ .../bhyvexml2argv-vnc-wait.ldargs | 1 + .../bhyvexml2argv-vnc-wait.xml | 26 +++++++++++ tests/bhyvexml2argvtest.c | 2 + .../bhyvexml2xmlout-vnc-wait-no.xml | 44 +++++++++++++++++++ .../bhyvexml2xmlout-vnc-wait.xml | 44 +++++++++++++++++++ tests/bhyvexml2xmltest.c | 2 + 11 files changed, 175 insertions(+) create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-vnc-wait-no.args create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-vnc-wait-no.ldargs create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-vnc-wait-no.xml create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-vnc-wait.args create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-vnc-wait.ldargs create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-vnc-wait.xml create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-vnc-wait-no.x= ml create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-vnc-wait.xml diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c index 8bfd5a6f93..057715102e 100644 --- a/src/bhyve/bhyve_command.c +++ b/src/bhyve/bhyve_command.c @@ -651,6 +651,9 @@ bhyveBuildGraphicsArgStr(const virDomainDef *def, virBufferAsprintf(&opt, ",vga=3D%s", virDomainVideoVGAConfTypeToString(video->driver-= >vgaconf)); =20 + if (graphics->data.vnc.wait) + virBufferAddLit(&opt, ",wait"); + virCommandAddArg(cmd, "-s"); virCommandAddArgBuffer(cmd, &opt); return 0; diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-vnc-wait-no.args b/tests= /bhyvexml2argvdata/bhyvexml2argv-vnc-wait-no.args new file mode 100644 index 0000000000..049e65227d --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-vnc-wait-no.args @@ -0,0 +1,13 @@ +bhyve \ +-c 1 \ +-m 214 \ +-u \ +-H \ +-P \ +-s 0:0,hostbridge \ +-l bootrom,/path/to/test.fd \ +-s 1:0,lpc \ +-s 2:0,ahci,hd:/tmp/freebsd.img \ +-s 3:0,virtio-net,faketapdev,mac=3D52:54:00:00:00:00 \ +-s 4:0,fbuf,tcp=3D127.0.0.1:5904 \ +bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-vnc-wait-no.ldargs b/tes= ts/bhyvexml2argvdata/bhyvexml2argv-vnc-wait-no.ldargs new file mode 100644 index 0000000000..421376db9e --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-vnc-wait-no.ldargs @@ -0,0 +1 @@ +dummy diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-vnc-wait-no.xml b/tests/= bhyvexml2argvdata/bhyvexml2argv-vnc-wait-no.xml new file mode 100644 index 0000000000..61c028bfc7 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-vnc-wait-no.xml @@ -0,0 +1,26 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 1 + + hvm + /path/to/test.fd + + + + + + +
+ + + + +
+ + + + + + diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-vnc-wait.args b/tests/bh= yvexml2argvdata/bhyvexml2argv-vnc-wait.args new file mode 100644 index 0000000000..4394bdfb4b --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-vnc-wait.args @@ -0,0 +1,13 @@ +bhyve \ +-c 1 \ +-m 214 \ +-u \ +-H \ +-P \ +-s 0:0,hostbridge \ +-l bootrom,/path/to/test.fd \ +-s 1:0,lpc \ +-s 2:0,ahci,hd:/tmp/freebsd.img \ +-s 3:0,virtio-net,faketapdev,mac=3D52:54:00:00:00:00 \ +-s 4:0,fbuf,tcp=3D127.0.0.1:5904,wait \ +bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-vnc-wait.ldargs b/tests/= bhyvexml2argvdata/bhyvexml2argv-vnc-wait.ldargs new file mode 100644 index 0000000000..421376db9e --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-vnc-wait.ldargs @@ -0,0 +1 @@ +dummy diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-vnc-wait.xml b/tests/bhy= vexml2argvdata/bhyvexml2argv-vnc-wait.xml new file mode 100644 index 0000000000..8cfd40ad7d --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-vnc-wait.xml @@ -0,0 +1,26 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 1 + + hvm + /path/to/test.fd + + + + + + +
+ + + + +
+ + + + + + diff --git a/tests/bhyvexml2argvtest.c b/tests/bhyvexml2argvtest.c index 2a785ef8aa..650313c2da 100644 --- a/tests/bhyvexml2argvtest.c +++ b/tests/bhyvexml2argvtest.c @@ -235,6 +235,8 @@ mymain(void) DO_TEST("vnc-autoport"); DO_TEST("vnc-resolution"); DO_TEST("vnc-password"); + DO_TEST("vnc-wait"); + DO_TEST("vnc-wait-no"); DO_TEST_FAILURE("vnc-password-comma"); DO_TEST("cputopology"); DO_TEST_FAILURE("cputopology-nvcpu-mismatch"); diff --git a/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-vnc-wait-no.xml b/te= sts/bhyvexml2xmloutdata/bhyvexml2xmlout-vnc-wait-no.xml new file mode 100644 index 0000000000..58e71282e7 --- /dev/null +++ b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-vnc-wait-no.xml @@ -0,0 +1,44 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 219136 + 1 + + hvm + /path/to/test.fd + + + + destroy + restart + destroy + + + + + +
+ + + +
+ + +
+ + + + + +
+ + + + +