From nobody Fri Jan 9 08:53:57 2026 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; 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=1766912323; cv=none; d=zohomail.com; s=zohoarc; b=iRpDz1pv2HJJM3JDKO9eusXeDq6XyN4xCZwlua2R2E0JZFA8T6MzP3xGjim5Z3Hdml1hwnFRZcQDOoBC155kfS/b9KZrHL1LPyjVJp53ZCgEXPWwfQN2B7t2CWOQYcvfesZAmKzbdchMKotq+/qQi89whM6bILZYbcTBPZeDmtI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766912323; 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=3KOOf+PvVr8dMnJ3zzgwztVlE9tcu0CBGoY+CM1NiXY=; b=DmfjyQl6XipswgzwiTEN0VDSHOALsxs8xx3Iiy53K9Hd3UA5vjoKklV2Tv5ssMYX2pWKXsP4b87Qyalu6p+RhfkTSkE4eBr+H47PA0piJTGWhHUa/qHVBLsj03oc9GA90XACwMW/tX87Jhj7twsRNfV5w6nIZzStXtPnZnT7nts= 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 1766912323917543.1070415391001; Sun, 28 Dec 2025 00:58:43 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 0D2E34186E; Sun, 28 Dec 2025 03:58:42 -0500 (EST) Received: from [172.19.199.83] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 3FD7D41928; Sun, 28 Dec 2025 03:56:48 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 817093F34C; Sun, 28 Dec 2025 03:54:43 -0500 (EST) Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) (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 8578A3F34C for ; Sun, 28 Dec 2025 03:54:42 -0500 (EST) Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-b79af62d36bso1418314966b.3 for ; Sun, 28 Dec 2025 00:54:42 -0800 (PST) Received: from tulp.my.domain (84-25-144-101.cable.dynamic.v4.ziggo.nl. [84.25.144.101]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b8037f0ebbasm2843201266b.55.2025.12.28.00.54.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Dec 2025 00:54:39 -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=1766912081; x=1767516881; 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=3KOOf+PvVr8dMnJ3zzgwztVlE9tcu0CBGoY+CM1NiXY=; b=nB3jkbK9KoFFZwPZzj9MvREQXUBqx3UJ+rTA2cNAgUt9YWe4yL7Q+30Jx8oLLj/0cJ a2xlEB1fRJXV57XrSG/iW5HgZelPk72xVBMXhk5hwz5DEYRPddMFcUhOWSd/6+0oRBe+ xGKxAdol64IRdeJbrXqyzmErN6nP8tmlDEvO5zw81R9t+/iEjYy0CVKcSOyIDqtDW2IO NvJ5ZCIzxgYT1+/59T3G+5sq2dGM1Dk6s3sU8kXSiw8vQYh8s2v28K16YwrF/Qk8xKDk f5EjCtz84TwkIdCEb1DTyPeoKrgRwUmimyzgG/DkZaC0iokwMoCHfAD7dGfMJkiht/ky XNGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766912081; x=1767516881; 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=3KOOf+PvVr8dMnJ3zzgwztVlE9tcu0CBGoY+CM1NiXY=; b=EX0FeJ+VcjzpKwh++vuyvRdKf5NXa1LSlNsxx+WShm9Jnn2exAMg6m55HYQUC1Kzm/ XKy0cu5TBziNz3XHRaoVGfT1PHtAelcjjE1OWC543Qjvw4+ED1SDSAO3gUt7wLILiuN3 olij992N8x7WE6VJLzgdlL/vS4/gc/KeEcxRVyJLVlv0l2m2G1ooha/oQ/P6yCoPIiF3 Z8X7H7UtE1L/NV2VWXQUAHCTsiCOksRcyg/7nFctCl9JLw6FIXdOrOl0gu0yxSqIgFJn EZPIdXIk7Wyd10PZ6qDQ+poRrqPSFNwduEHvrIpY4Rtds/KK0Z+PXhIQXyOy5JGkry81 XQkA== X-Gm-Message-State: AOJu0YwohK5SWmJNrAPyXl+Owfg/zJw4nCQeEPI2iMWjB+ayyJzpCktE NbqDgFGgIdit9x4bvbNJmk8yQxYGSsVLZZ4AH+Rk7cxqmHXpYJhvR83AA6Bp72I6 X-Gm-Gg: AY/fxX4VbpA2NUQiwrPz5XHXsBdOeTxCW+oGvstPUqckQ6r+dciaXVahmD45ON9Gyxx Qa38SJQH5KC2jFZE//SF5SRCeGYCtuiDPWMZmbaXA9fK9xSOtvBW1tl84jgIPlPWyeHFQVWFzfw g8TuxYQSnGy9ZwD3GhayixPPp7DjSR1bf/TF5boMbqP7DlUGDH2W0rlPJB8/TRqLFL7WVGatgnl zMWebNeUNDeV4zGDXeg6DFFDEHIDeuWV920HcXBceCHaP26as4958uCS5flTwBtU0egpLxVCWSi sY5QpSl5Do/QwGgZYy8+lam34Tdqbv6iPjPvIpkonxMQrieQY9plm9i/Y5CCBGSz4t+FlvaxxsS e72LTvRvjGnfWq+r2Mu+K5h71w2F2U7GvSa4qT+D6VEaSbNCBZdZvqT/xswIKJDtvS6a7X4Vc89 y/R/TRLt3chH8kNZZh1zm6IP40XLbvNUgPY4t7qDCMRgq+jJBmcw== X-Google-Smtp-Source: AGHT+IFghu2mb3MY1NMCiBivnGXrwTHTaXhyDojXA+blTdIqFE5CTXR0UTfo/0OXc0WVK6P8xE1tRw== X-Received: by 2002:a17:907:9710:b0:b3f:f207:b748 with SMTP id a640c23a62f3a-b8036ecdbd4mr2974520166b.10.1766912080390; Sun, 28 Dec 2025 00:54:40 -0800 (PST) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 4/9] bhyve: command: handle arm64 console Date: Sun, 28 Dec 2025 09:51:07 +0100 Message-ID: <20251228085112.81805-5-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251228085112.81805-1-bogorodskiy@gmail.com> References: <20251228085112.81805-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 4CVSSDE4EU2VV22LXHZHZRAKFGOLV6S6 X-Message-ID-Hash: 4CVSSDE4EU2VV22LXHZHZRAKFGOLV6S6 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: 1766912326097158500 Content-Type: text/plain; charset="utf-8" Console device handling in bhyve is different for amd64 and arm64. On amd64, it's configured as an LPC device, and multiple consoles are supported. On arm64, only a single console can be configured, and the syntax is different: -o console=3D/dev/nmdmguest0A Update the bhyve command generation accordingly. Signed-off-by: Roman Bogorodskiy --- src/bhyve/bhyve_command.c | 59 ++++++++++++------- .../aarch64/bhyvexml2argv-console.args | 11 ++++ .../aarch64/bhyvexml2argv-console.ldargs | 7 +++ .../aarch64/bhyvexml2argv-console.xml | 26 ++++++++ tests/bhyvexml2argvtest.c | 1 + 5 files changed, 84 insertions(+), 20 deletions(-) create mode 100644 tests/bhyvexml2argvdata/aarch64/bhyvexml2argv-console.a= rgs create mode 100644 tests/bhyvexml2argvdata/aarch64/bhyvexml2argv-console.l= dargs create mode 100644 tests/bhyvexml2argvdata/aarch64/bhyvexml2argv-console.x= ml diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c index bc37f4cef9..e6dddfcf97 100644 --- a/src/bhyve/bhyve_command.c +++ b/src/bhyve/bhyve_command.c @@ -172,34 +172,53 @@ bhyveBuildConsoleArgStr(const virDomainDef *def, virC= ommand *cmd) if (!def->nserials) return 0; =20 - for (i =3D 0; i < def->nserials; i++) { - chr =3D def->serials[i]; + if (ARCH_IS_X86(def->os.arch)) { + for (i =3D 0; i < def->nserials; i++) { + chr =3D def->serials[i]; =20 - /* bhyve supports 4 ports: com1, com2, com3, com4 */ - if (chr->target.port > 3) { + /* bhyve supports 4 ports: com1, com2, com3, com4 */ + if (chr->target.port > 3) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Only four serial ports are supported")); + return -1; + } + + virCommandAddArg(cmd, "-l"); + + 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 = supported")); + return -1; + } + } + } else if (ARCH_IS_ARM(def->os.arch)) { + if (def->nserials > 1) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("Only four serial ports are supported")); + _("Only one console is supported on arm64")); return -1; } =20 - virCommandAddArg(cmd, "-l"); - - 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: + chr =3D def->serials[0]; + if (chr->source->type !=3D VIR_DOMAIN_CHR_TYPE_NMDM) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("Only 'nmdm' and 'tcp' console types are supp= orted")); + _("Only 'nmdm' console type is supported on arm= 64")); return -1; } + + virCommandAddArg(cmd, "-o"); + virCommandAddArgFormat(cmd, "console=3D%s", + chr->source->data.file.path); } =20 return 0; diff --git a/tests/bhyvexml2argvdata/aarch64/bhyvexml2argv-console.args b/t= ests/bhyvexml2argvdata/aarch64/bhyvexml2argv-console.args new file mode 100644 index 0000000000..73d0005faf --- /dev/null +++ b/tests/bhyvexml2argvdata/aarch64/bhyvexml2argv-console.args @@ -0,0 +1,11 @@ +bhyve \ +-c 1 \ +-m 214 \ +-u \ +-H \ +-P \ +-s 0:0,hostbridge \ +-s 3:0,virtio-net,faketapdev,mac=3D52:54:00:b9:94:02 \ +-s 2:0,virtio-blk,/tmp/freebsd.img \ +-o console=3D/dev/nmdm0A \ +bhyve diff --git a/tests/bhyvexml2argvdata/aarch64/bhyvexml2argv-console.ldargs b= /tests/bhyvexml2argvdata/aarch64/bhyvexml2argv-console.ldargs new file mode 100644 index 0000000000..264ae48441 --- /dev/null +++ b/tests/bhyvexml2argvdata/aarch64/bhyvexml2argv-console.ldargs @@ -0,0 +1,7 @@ +timeout \ +--foreground \ +--verbose \ +-k 20s 300s bhyveload \ +-m 214 \ +-d /tmp/freebsd.img \ +bhyve diff --git a/tests/bhyvexml2argvdata/aarch64/bhyvexml2argv-console.xml b/te= sts/bhyvexml2argvdata/aarch64/bhyvexml2argv-console.xml new file mode 100644 index 0000000000..dd599b5133 --- /dev/null +++ b/tests/bhyvexml2argvdata/aarch64/bhyvexml2argv-console.xml @@ -0,0 +1,26 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 1 + + hvm + + + + + + +
+ + + + + +
+ + + + + + diff --git a/tests/bhyvexml2argvtest.c b/tests/bhyvexml2argvtest.c index e420fde1e9..564f3fb433 100644 --- a/tests/bhyvexml2argvtest.c +++ b/tests/bhyvexml2argvtest.c @@ -334,6 +334,7 @@ mymain(void) driver.caps =3D virBhyveCapsBuild(); =20 DO_TEST("base"); + DO_TEST("console"); =20 virObjectUnref(driver.caps); virObjectUnref(driver.xmlopt); --=20 2.51.2