From nobody Fri Dec 19 16:08: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=fail; 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=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1752416740944382.98519041341706; Sun, 13 Jul 2025 07:25:40 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id E8BAB1651; Sun, 13 Jul 2025 10:25:39 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id A411F1650; Sun, 13 Jul 2025 10:24:44 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id BE2E41464; Sun, 13 Jul 2025 10:24:39 -0400 (EDT) Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 7FD721471 for ; Sun, 13 Jul 2025 10:24:38 -0400 (EDT) Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-60bf5a08729so6476075a12.0 for ; Sun, 13 Jul 2025 07:24:38 -0700 (PDT) Received: from tulp.my.domain (80-115-115-199.cable.dynamic.v4.ziggo.nl. [80.115.115.199]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-611c9734069sm4881982a12.48.2025.07.13.07.24.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Jul 2025 07:24:35 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752416677; x=1753021477; 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=A0X+zM/+AkLdh4F9nAdxLIad4y32epeJxi36jE4Kzjw=; b=XiuESkpVD5JGnEU72EAk7HHlkhpYzkCJNjK++as01vt71Ds2k/3jRtIUxjHo/rYYCv CRkItZtSFNuutU0z2jKvEcZh00K3EaUEjYY6rdyrXFc2oYZmvpVHURa0VfTHuS4k+fnu n26Kc5dq266YR4aPUeWOgr6LxNzf/DTJ/goWh4d9pzpVLH25EfvRANOhQOTrN15wz/V0 nGluj6/REUu4aRCLxxL6Zcl4mFHpBOcvG4Q0IL2xA8bdaC+jPMUh3voTiqzyAYnykptg 4Qrf99U5jwAZ5BtK422m2JSIfa5oUEcQ1S3X4onbznRh4tMMZp5+vOObVsCf2Y+ndtMM S/Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752416677; x=1753021477; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=A0X+zM/+AkLdh4F9nAdxLIad4y32epeJxi36jE4Kzjw=; b=rRyLgxR/S1px4jGhVRUNbXIq7L+HsHCGS76ei0spln7hj1zzD27wKAIIJmzq0RMLAr Ya9Cy+WPLIzALDa2OwbkxbqKVobHGPurC155TktVhRJB0vj1hYzbrhBuX6scT1M2rGLh f3RDVAmgC9Ilygy4fTPUSsSScqoUWpaxF6TRkJoka9O7NGrqEGsVWspN5Xx5vurZ5q9Q xBGK3kmYHot3VrPNdzsk3EbT6Ku/xIsQoM/yrp0QRS/ArQubSyv1aykbjZv4VpteOpHb fFMpwSfOroFynAz/OOpu/1pQiS7gAoHjnKRJG8yrG9JL6TPfspexeua2V3LbsJqXWfcj JjpQ== X-Gm-Message-State: AOJu0Yy6HrDojEFi0CljNKHGghsUIsqEVU5GyrlBHq44BawnrTmkfsx6 Raj3NuGRYlX1FkfFwY26ChsMMQ1OC9Xnzi7nSiEQGax9F1/PQPAhNA/kwlUmAJUnGGD9sg== X-Gm-Gg: ASbGncufFBDs//rSYy/iYlXltFSic3RqXVk5kG7tJ+RVXtKM/ZlbHLKZM4HeA5dXCkC 0qGjmVyrnFoj1zhRgOr2n0TRB9vAUV6K2lEtyZAS+5Z/9OkAaERK+iz3/ckHToPNhIlMwZ8dYHK VK4fh7aFaw0UWPg2C45pBUN65+OKpaqDHe98w6ceJk24eev2oCI7I95auRe3gyf+XlTyxxV0+RX 5ZfiWs41Oa5rSPWQgs3uzMRnfL4Pa//FUdKaTH827mFFcBSTMBhdOz20P2s01H+9f09CCTkmjN5 AL/PYR5CySnfdSXcSap9ZH2cRpLmXTAxgsKQcO52drmxRVjj2MllZy2MFbCMdPgx6fBY/uIYPeU 6wA3OlhOhJlpYUCR8PrT9M6Yvm75mIIrWh+Ct5yXVOwsrc+FXuSXDSW3GmbhMrlSA0AS0+oI= X-Google-Smtp-Source: AGHT+IEoFLJ31S8pp37H2k+89h0p+CtcM2kH6+jJL++vNWlCWV5dEcP8wEmfcE9lpT2VW3tr0nWpsQ== X-Received: by 2002:a05:6402:30bb:b0:60c:4220:5d8b with SMTP id 4fb4d7f45d1cf-611e84ab122mr6658909a12.17.1752416676490; Sun, 13 Jul 2025 07:24:36 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 1/3] bhyve: support serial type 'tcp' Date: Sun, 13 Jul 2025 16:22:05 +0200 Message-ID: <20250713142207.9647-2-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250713142207.9647-1-bogorodskiy@gmail.com> References: <20250713142207.9647-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: SPZTBWQJ2KRGXX3MPR45JHKK2KWRTB3G X-Message-ID-Hash: SPZTBWQJ2KRGXX3MPR45JHKK2KWRTB3G X-MailFrom: bogorodskiy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: Roman Bogorodskiy X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1752416741829116600 Content-Type: text/plain; charset="utf-8" In addition to the nmdm consoles, bhyve also supports a tcp console. It's configured with: .. -l com1,tcp=3D127.0.0.1:12345 Then a user could connect to the guest console port 0 by making a tcp connection to the host's 127.0.0.1:12345. In the domain XML this configuration is represented as: Also, update domain capabilities to include the TCP console support. Unfortunately, there's no way to detect that from the bhyve binary before trying to start a VM, so there's no capability probing for this feature. Signed-off-by: Roman Bogorodskiy Reviewed-by: Daniel P. Berrang=C3=A9 --- src/bhyve/bhyve_capabilities.c | 3 +- src/bhyve/bhyve_command.c | 42 +++++++++++------ .../bhyvexml2argv-serial-tcp.args | 12 +++++ .../bhyvexml2argv-serial-tcp.ldargs | 4 ++ .../bhyvexml2argv-serial-tcp.xml | 27 +++++++++++ tests/bhyvexml2argvtest.c | 1 + .../bhyvexml2xmlout-serial-tcp.xml | 46 +++++++++++++++++++ tests/bhyvexml2xmltest.c | 1 + tests/domaincapsdata/bhyve_basic.x86_64.xml | 1 + tests/domaincapsdata/bhyve_fbuf.x86_64.xml | 1 + tests/domaincapsdata/bhyve_uefi.x86_64.xml | 1 + 11 files changed, 123 insertions(+), 16 deletions(-) create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.args create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.ldargs create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.xml create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-serial-tcp.xml diff --git a/src/bhyve/bhyve_capabilities.c b/src/bhyve/bhyve_capabilities.c index 59fc81d26c..04a5a4cf29 100644 --- a/src/bhyve/bhyve_capabilities.c +++ b/src/bhyve/bhyve_capabilities.c @@ -128,7 +128,8 @@ virBhyveDomainCapsFill(virDomainCaps *caps, caps->console.supported =3D VIR_TRISTATE_BOOL_YES; caps->console.type.report =3D true; VIR_DOMAIN_CAPS_ENUM_SET(caps->console.type, - VIR_DOMAIN_CHR_TYPE_NMDM); + VIR_DOMAIN_CHR_TYPE_NMDM, + VIR_DOMAIN_CHR_TYPE_TCP); =20 return 0; } diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c index c82a07c2eb..89648f76cb 100644 --- a/src/bhyve/bhyve_command.c +++ b/src/bhyve/bhyve_command.c @@ -159,29 +159,41 @@ bhyveBuildNetArgStr(const virDomainDef *def, static int bhyveBuildConsoleArgStr(const virDomainDef *def, virCommand *cmd) { + size_t i =3D 0; virDomainChrDef *chr =3D NULL; =20 if (!def->nserials) return 0; =20 - chr =3D def->serials[0]; + for (i =3D 0; i < def->nserials; i++) { + chr =3D def->serials[i]; =20 - if (chr->source->type !=3D VIR_DOMAIN_CHR_TYPE_NMDM) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("only nmdm console types are supported")); - return -1; - } + /* bhyve supports only two ports: com1 and com2 */ + if (chr->target.port > 2) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("only two serial ports are supported")); + return -1; + } =20 - /* bhyve supports only two ports: com1 and com2 */ - if (chr->target.port > 2) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("only two serial ports are supported")); - return -1; - } + virCommandAddArg(cmd, "-l"); =20 - virCommandAddArg(cmd, "-l"); - virCommandAddArgFormat(cmd, "com%d,%s", - chr->target.port + 1, chr->source->data.file.pa= th); + switch (chr->source->type) { + case VIR_DOMAIN_CHR_TYPE_NMDM: + virCommandAddArgFormat(cmd, "com%d,%s", + chr->target.port + 1, chr->source->data= .file.path); + break; + case VIR_DOMAIN_CHR_TYPE_TCP: + virCommandAddArgFormat(cmd, "com%d,tcp=3D%s:%s", + chr->target.port + 1, + chr->source->data.tcp.host, + chr->source->data.tcp.service); + break; + default: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("only nmdm and tcp console types are supporte= d")); + return -1; + } + } =20 return 0; } diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.args b/tests/= bhyvexml2argvdata/bhyvexml2argv-serial-tcp.args new file mode 100644 index 0000000000..8e4072d897 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.args @@ -0,0 +1,12 @@ +bhyve \ +-c 1 \ +-m 214 \ +-u \ +-H \ +-P \ +-s 0:0,hostbridge \ +-s 1:0,lpc \ +-s 2:0,ahci,hd:/tmp/freebsd.img \ +-s 3:0,virtio-net,faketapdev,mac=3D52:54:00:b1:42:eb \ +-l com1,tcp=3D127.0.0.1:12345 \ +bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.ldargs b/test= s/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.ldargs new file mode 100644 index 0000000000..5905f4b3e6 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.ldargs @@ -0,0 +1,4 @@ +bhyveload \ +-m 214 \ +-d /tmp/freebsd.img \ +bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.xml b/tests/b= hyvexml2argvdata/bhyvexml2argv-serial-tcp.xml new file mode 100644 index 0000000000..61c9440e44 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-tcp.xml @@ -0,0 +1,27 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 1 + + hvm + + + + + + +
+ + + + + +
+ + + + + + + diff --git a/tests/bhyvexml2argvtest.c b/tests/bhyvexml2argvtest.c index 58b404ca7d..d1786ff165 100644 --- a/tests/bhyvexml2argvtest.c +++ b/tests/bhyvexml2argvtest.c @@ -254,6 +254,7 @@ mymain(void) DO_TEST_FAILURE("virtio-rnd-transitional"); driver.bhyvecaps &=3D ~BHYVE_CAP_VIRTIO_RND; DO_TEST_FAILURE("virtio-rnd"); + DO_TEST("serial-tcp"); =20 /* Address allocation tests */ DO_TEST("addr-single-sata-disk"); diff --git a/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-serial-tcp.xml b/tes= ts/bhyvexml2xmloutdata/bhyvexml2xmlout-serial-tcp.xml new file mode 100644 index 0000000000..641efcd602 --- /dev/null +++ b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-serial-tcp.xml @@ -0,0 +1,46 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 219136 + 1 + + hvm + + + + destroy + restart + destroy + + + + + +
+ + + +
+ + +
+ + + + + +
+ + + + + + + + + + + + + diff --git a/tests/bhyvexml2xmltest.c b/tests/bhyvexml2xmltest.c index 98006dac04..0b858731a6 100644 --- a/tests/bhyvexml2xmltest.c +++ b/tests/bhyvexml2xmltest.c @@ -115,6 +115,7 @@ mymain(void) DO_TEST_DIFFERENT("isa-controller"); DO_TEST_DIFFERENT("fs-9p"); DO_TEST_DIFFERENT("virtio-rnd"); + DO_TEST_DIFFERENT("serial-tcp"); =20 /* Address allocation tests */ DO_TEST_DIFFERENT("addr-single-sata-disk"); diff --git a/tests/domaincapsdata/bhyve_basic.x86_64.xml b/tests/domaincaps= data/bhyve_basic.x86_64.xml index d1211a5b5e..0c386c79d2 100644 --- a/tests/domaincapsdata/bhyve_basic.x86_64.xml +++ b/tests/domaincapsdata/bhyve_basic.x86_64.xml @@ -29,6 +29,7 @@ + tcp nmdm diff --git a/tests/domaincapsdata/bhyve_fbuf.x86_64.xml b/tests/domaincapsd= ata/bhyve_fbuf.x86_64.xml index 8d5e42dd82..2936281857 100644 --- a/tests/domaincapsdata/bhyve_fbuf.x86_64.xml +++ b/tests/domaincapsdata/bhyve_fbuf.x86_64.xml @@ -46,6 +46,7 @@ + tcp nmdm diff --git a/tests/domaincapsdata/bhyve_uefi.x86_64.xml b/tests/domaincapsd= ata/bhyve_uefi.x86_64.xml index 3a6f178dd4..fa87fd3640 100644 --- a/tests/domaincapsdata/bhyve_uefi.x86_64.xml +++ b/tests/domaincapsdata/bhyve_uefi.x86_64.xml @@ -38,6 +38,7 @@ + tcp nmdm --=20 2.49.0 From nobody Fri Dec 19 16:08: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=fail; 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=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1752416776908290.82839256480406; Sun, 13 Jul 2025 07:26:16 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id F13941315; Sun, 13 Jul 2025 10:26:15 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 84B2B1661; Sun, 13 Jul 2025 10:24:47 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 3D7681489; Sun, 13 Jul 2025 10:24:41 -0400 (EDT) Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 3153E1315 for ; Sun, 13 Jul 2025 10:24:40 -0400 (EDT) Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-60c01b983b6so6558137a12.0 for ; Sun, 13 Jul 2025 07:24:40 -0700 (PDT) Received: from tulp.my.domain (80-115-115-199.cable.dynamic.v4.ziggo.nl. [80.115.115.199]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-611c9734069sm4881982a12.48.2025.07.13.07.24.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Jul 2025 07:24:36 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752416678; x=1753021478; 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=B4rHVkCU2FIL+eCwqz2p1HAlYjoIxzsg73bkS73je0c=; b=Pxa1H4miD6ZFhBUVnhyp6b/QXgNOA1/U6cYjabUHV20emjojnVoojPBvFH+gBT/8dg k/OS7Tkt3jxkmdidwR0KtCGcCs54D3NmzIZHJUfKvfPDO9JqnrOAcnV9kE6ZSNzYc2Jz QXZW1cHvm41NZrgjwfBp1WpMh6ND1RSbD+iOAcrz/UtVCpvsUDQQXVq7hocvHIpZAp5A XvryPwCVI5FuEQJwXly10OBKjHSlrs9DoAC++7XHEhE+8yw3Z9Ly98tQ/CYFo8QtdcVg SjXFhcQnIapO9Cb4q/RCbCihWe6shbReWJ3kjcNArIRIwTyw/mVU1JCCQ3sVnI+Lt6Cs nohg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752416678; x=1753021478; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=B4rHVkCU2FIL+eCwqz2p1HAlYjoIxzsg73bkS73je0c=; b=a7vJY4iQyEqTq/J/dFVqFUIdi7SGt+5Z9hs/uGrJQ3VcarQTfyFCAJGAbIpFi6yE4p YPkmI28ppFQCYREuEbc73JkbZhG5/jOcVY2kQ+8QXpdN9N/16f1o0F7WRGpbTD5KR7WU Ro937xUQGm2FD7rGC7bSWkvvrlV/WJqL9IZM3darj+nowbEnoz0r55SCuMUAbLGizufC CN66SI9xQDCsurV7ZDwgwiLJEXMhnTLw0MC88QyXs8Gp2TQmxTGA65xMgVAZ1yb5BFMz eyLF9oAh8KHIkbQBOqq9X2GjP80Ldu8lxOXVp1gFRFXGey/JOQp0TlXNpD8VWB927h3e L+eg== X-Gm-Message-State: AOJu0YygRWYaBCjSYnBR6cebsDduWqGKnWHdJtqL95xMvmru4bDPzYZ9 qg6lNC8en69H0jeGoHXk3Dzkyy/up9cXpMmOA4gfokv5d0dbgXJVspLia4KTys3osPm49A== X-Gm-Gg: ASbGncu0OEDsC2Cf7LCkDwe3Xo8ozifNSw3bhzd4ci/l3kRx0+p9m2G2ea6LszgUkyk 93vVFeKOy5/IhhvRNHSmDkhSSkKUCrzsCLFJNfE6VrGoAHq3EThpCcGLu++rNn5Xropes/mjCGc pTpjmvp9SKBPnx4FCzTZGUyTKmX2SwnYrc1YHdriL9kUGKEQfunKkbq8u2+YYVH04GZhBawlz6f j/TgxAUfjzwyIfgM4P+YGFWtuBCajeFjwdDJugdDcYjov8QMorTXm4YsFhyfOSRp3A98UF74U1X Ss0V0KgPezF93dYvSRofyy2VGfFiRRFD9H8GIW954/yxChTd1Euj5aguWS5H3vjKq6KcnvftPkJ IoC9xO0M8+86AnIq0ruQ3ehsI6xWnEjmBFN43Y+yd5+rIJ9zth+45lCALh8P2nT1CdrxNd8c= X-Google-Smtp-Source: AGHT+IFt8lXZmlAgedMwYs7skmqFhNgDjl9LejFqr+ytk7bxpi8PkIj7hULbwrqWdQ4rJ6OQRyyrYg== X-Received: by 2002:a05:6402:4407:b0:600:129:444e with SMTP id 4fb4d7f45d1cf-611e624f8aamr9259705a12.4.1752416678007; Sun, 13 Jul 2025 07:24:38 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 2/3] bhyve: increase number of supported consoles to 4 Date: Sun, 13 Jul 2025 16:22:06 +0200 Message-ID: <20250713142207.9647-3-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250713142207.9647-1-bogorodskiy@gmail.com> References: <20250713142207.9647-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: RD55PKN2AEO4ABP5Q5IRDVOY525KE3YP X-Message-ID-Hash: RD55PKN2AEO4ABP5Q5IRDVOY525KE3YP X-MailFrom: bogorodskiy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: Roman Bogorodskiy X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1752416778167116600 Content-Type: text/plain; charset="utf-8" Recent versions of bhyve support 4 com ports instead of just 2. Thus, allow to use 4 console devices. Also, there was a bug previously because the condition was "if (chr->target.port > 2)", but as target.port start with 0 and "com" ports start with 1, this condition allows com3 to be used. As bhyve supports 4 com ports already long enough, and all supported FreeBSD versions include this capability, do not introduce driver capability for that. Add a couple of tests for that: - A domain that uses 4 serials, 2 of type 'nmdm' and the other 2 of type 'tcp' - A domain that uses unsupported port, such as target.port=3D4 which translates into com5. Signed-off-by: Roman Bogorodskiy Reviewed-by: Daniel P. Berrang=C3=A9 --- src/bhyve/bhyve_command.c | 4 +- .../bhyvexml2argv-4-consoles.args | 15 +++++ .../bhyvexml2argv-4-consoles.ldargs | 4 ++ .../bhyvexml2argv-4-consoles.xml | 35 +++++++++++ .../bhyvexml2argv-serial-invalid-port.args | 12 ++++ .../bhyvexml2argv-serial-invalid-port.ldargs | 4 ++ .../bhyvexml2argv-serial-invalid-port.xml | 28 +++++++++ tests/bhyvexml2argvtest.c | 2 + .../bhyvexml2xmlout-4-consoles.xml | 58 +++++++++++++++++++ tests/bhyvexml2xmltest.c | 1 + 10 files changed, 161 insertions(+), 2 deletions(-) create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-4-consoles.args create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-4-consoles.ldargs create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-4-consoles.xml create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-po= rt.args create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-po= rt.ldargs create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-po= rt.xml create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-4-consoles.xml diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c index 89648f76cb..18f65cf757 100644 --- a/src/bhyve/bhyve_command.c +++ b/src/bhyve/bhyve_command.c @@ -168,8 +168,8 @@ bhyveBuildConsoleArgStr(const virDomainDef *def, virCom= mand *cmd) for (i =3D 0; i < def->nserials; i++) { chr =3D def->serials[i]; =20 - /* bhyve supports only two ports: com1 and com2 */ - if (chr->target.port > 2) { + /* bhyve supports 4 ports: com1, com2, com3, com4 */ + if (chr->target.port > 3) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("only two serial ports are supported")); return -1; diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-4-consoles.args b/tests/= bhyvexml2argvdata/bhyvexml2argv-4-consoles.args new file mode 100644 index 0000000000..16c7bd7638 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-4-consoles.args @@ -0,0 +1,15 @@ +bhyve \ +-c 1 \ +-m 214 \ +-u \ +-H \ +-P \ +-s 0:0,hostbridge \ +-s 1:0,lpc \ +-s 2:0,ahci,hd:/tmp/freebsd.img \ +-s 3:0,virtio-net,faketapdev,mac=3D52:54:00:b1:42:eb \ +-l com1,/dev/nmdmdf3be7e7-a104-11e3-aeb0-50e5492bd3dcA \ +-l com2,tcp=3D127.0.0.1:12345 \ +-l com3,tcp=3D0.0.0.0:54321 \ +-l com4,/dev/nmdm0A \ +bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-4-consoles.ldargs b/test= s/bhyvexml2argvdata/bhyvexml2argv-4-consoles.ldargs new file mode 100644 index 0000000000..5905f4b3e6 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-4-consoles.ldargs @@ -0,0 +1,4 @@ +bhyveload \ +-m 214 \ +-d /tmp/freebsd.img \ +bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-4-consoles.xml b/tests/b= hyvexml2argvdata/bhyvexml2argv-4-consoles.xml new file mode 100644 index 0000000000..4529239b1a --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-4-consoles.xml @@ -0,0 +1,35 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 1 + + hvm + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + + diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-port.args= b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-port.args new file mode 100644 index 0000000000..8e4072d897 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-port.args @@ -0,0 +1,12 @@ +bhyve \ +-c 1 \ +-m 214 \ +-u \ +-H \ +-P \ +-s 0:0,hostbridge \ +-s 1:0,lpc \ +-s 2:0,ahci,hd:/tmp/freebsd.img \ +-s 3:0,virtio-net,faketapdev,mac=3D52:54:00:b1:42:eb \ +-l com1,tcp=3D127.0.0.1:12345 \ +bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-port.ldar= gs b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-port.ldargs new file mode 100644 index 0000000000..5905f4b3e6 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-port.ldargs @@ -0,0 +1,4 @@ +bhyveload \ +-m 214 \ +-d /tmp/freebsd.img \ +bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-port.xml = b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-port.xml new file mode 100644 index 0000000000..36ecd1a9f1 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-serial-invalid-port.xml @@ -0,0 +1,28 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 1 + + hvm + + + + + + +
+ + + + + +
+ + + + + + + + diff --git a/tests/bhyvexml2argvtest.c b/tests/bhyvexml2argvtest.c index d1786ff165..2838b20c29 100644 --- a/tests/bhyvexml2argvtest.c +++ b/tests/bhyvexml2argvtest.c @@ -255,6 +255,8 @@ mymain(void) driver.bhyvecaps &=3D ~BHYVE_CAP_VIRTIO_RND; DO_TEST_FAILURE("virtio-rnd"); DO_TEST("serial-tcp"); + DO_TEST("4-consoles"); + DO_TEST_FAILURE("serial-invalid-port"); =20 /* Address allocation tests */ DO_TEST("addr-single-sata-disk"); diff --git a/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-4-consoles.xml b/tes= ts/bhyvexml2xmloutdata/bhyvexml2xmlout-4-consoles.xml new file mode 100644 index 0000000000..eddb88eedc --- /dev/null +++ b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-4-consoles.xml @@ -0,0 +1,58 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 219136 + 1 + + hvm + + + + destroy + restart + destroy + + + + + +
+ + + +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/bhyvexml2xmltest.c b/tests/bhyvexml2xmltest.c index 0b858731a6..df093a5539 100644 --- a/tests/bhyvexml2xmltest.c +++ b/tests/bhyvexml2xmltest.c @@ -116,6 +116,7 @@ mymain(void) DO_TEST_DIFFERENT("fs-9p"); DO_TEST_DIFFERENT("virtio-rnd"); DO_TEST_DIFFERENT("serial-tcp"); + DO_TEST_DIFFERENT("4-consoles"); =20 /* Address allocation tests */ DO_TEST_DIFFERENT("addr-single-sata-disk"); --=20 2.49.0 From nobody Fri Dec 19 16:08: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=fail; 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=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 175241680166033.31313779816776; Sun, 13 Jul 2025 07:26:41 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id A076A1565; Sun, 13 Jul 2025 10:26:40 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id AE18715AA; Sun, 13 Jul 2025 10:24:50 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 535E6146F; Sun, 13 Jul 2025 10:24:41 -0400 (EDT) Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id A62B41471 for ; Sun, 13 Jul 2025 10:24:40 -0400 (EDT) Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-6097d144923so7367587a12.1 for ; Sun, 13 Jul 2025 07:24:40 -0700 (PDT) Received: from tulp.my.domain (80-115-115-199.cable.dynamic.v4.ziggo.nl. [80.115.115.199]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-611c9734069sm4881982a12.48.2025.07.13.07.24.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Jul 2025 07:24:38 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752416679; x=1753021479; 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=cvK/IalSdn16YSMhb+jI32cnVQyXYIlLBGgRx7NPm2s=; b=MUf6N+dhF5xErNkB9zgyf82Gy08BgqBYR0sFvQFCwJMjXs7lAzC/0fQSM1kLQ0Ef7N HQjoOmBfjXJJihref/9VlW5xSX/kZXiTVLDZHRYr9SwAtZh8fQr9q7cwbz4o/y7lxxnC ehOfVQXWs+FzxURrxKoQXDcqgUuKJhSgdyQ6w4fk8KAEij+ZxYf25Ad2I+dts7eFjvab YfLaBPutQSm6jYYs45Qgx0g/2GZfpSpbhIMNMR0rtOK5Hu0RreDtgAoVrshD/Vaba0/y 7cYDNUKGpPR0fq6i1dYYHd+4tTH1faiSY93jrRJ9cjnnxBHDGoFjGuffRRE0FEcRn+4O wIrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752416679; x=1753021479; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cvK/IalSdn16YSMhb+jI32cnVQyXYIlLBGgRx7NPm2s=; b=q9tCDqAGfLAE/TYh71KPaBunsV9b5+E85S+cMtWQpnifmmCeqW8+ECJgotbzWnq94M PulJNa9zAc/jYG68MYZrsSXq9xNhuHTdiZVTz6bbFzSaUOuKPilW3Ao8+MhPCZkWKhd+ +RIhjYVl2Q2HLlb3CfVQL8xfwiYgxGEQTG8ArkjCby1NneBDMsh3DGkn7aTXCKaEu5/n W7xlOxSiyyU2cBsF/9uIoqIiP0nwLc6WovuXjl62T8CIXYSfx6Yi3hhWnBXot6dkLbwh O5l95KtZwPw68yUq/bs57RVXtcdVpXA0C8mBfqhJniqjnpIZOtydL8Dv6Y9qz/A89RPa ToMw== X-Gm-Message-State: AOJu0YzaGwJu4shmCd8UMOhwbV0UoLVwzAVLhdXWdU8GniOyF4+pvcdn DHA6KriUnIAIHRkbZC5NRptDiDPFkAC7I1WMF+ZQo9xT76NEbmbXBDg1i3uGGZRnL4WrDw== X-Gm-Gg: ASbGncvCCLHG4QJG1NuF7TFWTEiv8c9sG050R1AqGA+f0fIIXOIl/p3tAHQw3NF8j6J VcDoK0bKzzYuigYogx5tnvD4RsYtCk0r0X/TUWUC61HPTj4uRh1VMfWOCdR57VMHZ74NR3/zDdg gDsssGEo7ygDN8oIrAMEH4DPh4tfuVlMkn9yPV/D4fqCSmmTJGlJSE0++cyFBouS8kiaHi/1GHv 1W8imhvlpK5MRzvHbJaSIaVAo72lESb4AfEWKJFn5QkCulSLlC7Cy7bR0abom+fvONbrL3RgsTg Qw92CBFtbG4fKssax2Azmydb1SsWS5kSa7ugehfIG0tiwTK2HVUHAMtBfiIPy2tNtKmDsNpgjKI quTRwp2ireXXyMPhRGoW+GNutHdilydEL7K8Wifayg6IyDkJKNU3mxhWSkBf9vJuMZlOC7kw= X-Google-Smtp-Source: AGHT+IGjfZVc10dsYc8I+Jt3f2+XRzBNAZvqOn7+h1YNLZx8zrN7Vd2xJJ/pInnKhEBF5ZFAqZmiDA== X-Received: by 2002:a05:6402:3717:b0:605:ff84:375b with SMTP id 4fb4d7f45d1cf-611e638c2d0mr9452882a12.16.1752416678868; Sun, 13 Jul 2025 07:24:38 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 3/3] docs: drvbhyve: document TCP console support Date: Sun, 13 Jul 2025 16:22:07 +0200 Message-ID: <20250713142207.9647-4-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250713142207.9647-1-bogorodskiy@gmail.com> References: <20250713142207.9647-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: OUAPQBLVLJGKECK6SE4UEUJDNHUTHKCC X-Message-ID-Hash: OUAPQBLVLJGKECK6SE4UEUJDNHUTHKCC X-MailFrom: bogorodskiy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: Roman Bogorodskiy X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1752416802195116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Roman Bogorodskiy Reviewed-by: Daniel P. Berrang=C3=A9 --- docs/drvbhyve.rst | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/drvbhyve.rst b/docs/drvbhyve.rst index 7eec4a2123..2ecd1358a3 100644 --- a/docs/drvbhyve.rst +++ b/docs/drvbhyve.rst @@ -619,3 +619,22 @@ Example: ... + +TCP console +~~~~~~~~~~~ +:since:`Since 11.6.0` it's possible to configure TCP console. + +Example: + +:: + + ... + + + + + ... + +Note: there's no direct way to check if the actual ``bhyve`` binary suppor= ts +the TCP console. Thus, libvirt always assumes it's supported. Please +refer to the ``bhyve(1)`` manual page to make sure. --=20 2.49.0