From nobody Tue Aug 25 02:51:24 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 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=1787321595; cv=none; d=zohomail.com; s=zohoarc; b=SXdzcotw8ANI1NuCb7APW4BcmzVF+X9h+6fOkdlR7LHoixkN6wfVGwhrlUed+JjbEdC1/1et31r3ga8hqoZLchTjb/ln+tkZY+w81PtseZAhOga9bu5sE86lR8TciOjGoeEypb4NHBjWVimd24LVkxzVVf7s8Q+DywGQC1RrrYk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787321595; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; bh=RbgDDHz80Td+c5R+S8W+x/tunkTDlJ9ZWn7Y5sfo6Jw=; b=F9Z/XM+cB1uSJtYV27+BOLTrlEXU1t49V30S+Cmj5GVD/YDwr+mYSb0weDyODkH6BvCrpMmHYzmJ5Ia6Ay5juTPQNeVui8T3ON8MFtFd1/nYpkoS2n3NfZipMdpiiG8UaM7+Zq+lmX6zbX+KMu+jNtkZS8L3/XWb3h1afYot5O4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 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 [38.145.34.151]) by mx.zohomail.com with SMTPS id 1787321595537834.556817763157; Fri, 21 Aug 2026 07:13:15 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id E4FEB41A5D; Fri, 21 Aug 2026 10:13:13 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 8A39041B2E for ; Fri, 21 Aug 2026 10:11:54 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 4BB243F8EB; Fri, 21 Aug 2026 10:11:47 -0400 (EDT) Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com [IPv6:2a00:1450:4864:20::62a]) (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 65CB83FBCA for ; Fri, 21 Aug 2026 10:11:45 -0400 (EDT) Received: by mail-ej1-x62a.google.com with SMTP id a640c23a62f3a-c214321dc32so208430466b.0 for ; Fri, 21 Aug 2026 07:11:45 -0700 (PDT) Received: from tulp.my.domain (2001-1c02-1a15-3000-ee82-4536-a8f2-9e22.cable.dynamic.v6.ziggo.nl. [2001:1c02:1a15:3000:ee82:4536:a8f2:9e22]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c24589e1b17sm528019866b.10.2026.08.21.07.11.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2026 07:11:43 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.7 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_NONE, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787321504; x=1787926304; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=RbgDDHz80Td+c5R+S8W+x/tunkTDlJ9ZWn7Y5sfo6Jw=; b=pbVQ/TZ/Mae7XXAa1GdyxYTooxeGQyI4ugSS0qErdcGlzEbZSrq46WewzGtJRG9+PF ILFSj7DS69050lf3Trjec9jhQSCK8aKMbEgbyojj4k3VVXKWLL76JoYGoAhcc8x0mEAg BzVtwRwF5uFE8dpRTl9ooyvJk5i5/mA3Ych1qjCFVsWqoXg93gRhSK2+HdRT37RyyxC2 dewLj/MbagVidFGZ1lfhGFwJ6z1dpns8ENu6hDN8z1zi/UJcUgYYs+rZvXpFvIw+vAnJ E5PtRi5NyX4DKT93smezsojAxGVoO5bP2F/FLqQHVVXZAl9P9pQoXGxxrfKi5f7CXFGq TqcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787321504; x=1787926304; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=RbgDDHz80Td+c5R+S8W+x/tunkTDlJ9ZWn7Y5sfo6Jw=; b=LD/OrpOaetcnKMSObzX9heBAz4RtqaMe1ZnsJmxk5qZNbfvE8pc5PEXPs9brvJpu+c FJ1vS4XNl39PyxFqyGoRb9AP6qHMhQaXAUpludY1OsPQ9eAhm0vDZTIqtEgyuQ40uDvP 1OcWeFF+aMw6JsnfUHjPSJmA6QYP1WiiofO7/OgS2+C6jZBWi45yU/O+875c8FzHRrC3 TAa4y2EXkZrSzDce6/MJYM6O4/oUE9/+o70U5WJ3Bb3rGyy98W7JnpFC04XVt6WjqHVM tGVLnY7DGzsHVBHZlrEuTEvSiyjIBBbvgP533GK3O4W+34njLyikb7tnomkYa3vpKOL2 9b1A== X-Gm-Message-State: AFuF++k2jhs9UbleT0wuOaUxZvnpjrGIUij7sjCNmYvtmIWtgseh7tjc qlFrJEs+D4UioQot/CWxKIeUYpF8+gBuy+dx39lhin2tLE8e3yTwNMzo4Ty5j+0g X-Gm-Gg: AR+sD12v+2FNiN4K7J6c58NGg8SX+yPzlpJKw23phgbVp57CplCchdAj/AfilnSnYBy V6FXSiRdSR1uWTSqNeMX5QkWBwYou9mLRDVAZ6RP9xq0SnYT2nCj0Gozqe0HG4tB7ImZgmJ76Fg oVico4nA8l2Lg1+1GKPzqk8O0b8BH30bm4F42UM+UElGKTYVAbKuKiHAHlb9T3ztMLI3p3uQIG0 GclY+dRGj9aaKtitZZlpUP7ldxu9SlE2jKF2poMpZwQu2WETeXKhnNxU7JC66AQlAf2EviTUMQ4 g17PJrVFr4vXj3Km4emsVYJ0SLwi+GMWKtuPOLZAPBOm6OlkmY96syY3MdBGSQBJRsm8CxVT92k E4r3boM4uGiHaQ1FfQNcFfXtMpTPnDTRRk9l9KioJ/DyFRtdDba8TtAr9qkcQ1CQGHItV+OXA45 SaBZxP980omf3WUNPL7hzD/UbnpHPZKk5rC8TEJTh3WvRXTLUsSjy4L3YsrDVbXTRAcdU0KDdfc IhHmCsmTpkLaj5QWIROlekJZ2Q5Yt+Ehn61mXqQiQsoYcKxEHIC1R11hu5++Ksxp6DDTsTe5WE= X-Received: by 2002:a17:906:100a:20b0:c16:8799:fcb4 with SMTP id a640c23a62f3a-c246a6a93fbmr518826666b.19.1787321503540; Fri, 21 Aug 2026 07:11:43 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH] bhyve: allow setting eui64 for NVMe disks Date: Fri, 21 Aug 2026 16:10:50 +0200 Message-ID: <20260821141050.50261-1-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: R4JXPZENHHPL62LZYSAO7BKPQU3EPZL7 X-Message-ID-Hash: R4JXPZENHHPL62LZYSAO7BKPQU3EPZL7 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: 1787321596882158500 Content-Type: text/plain; charset="utf-8" Bhyve allows to set eui64 for the NVMe disks: eui64 IEEE Extended Unique Identifier (8 byte value). And in a real command line: -s 5:0,nvme,/data/img/10gb.img,ser=3DBHYVE-NVME01-F000,eui64=3D0x01000000e= fbeadde Model that using the element: 01000000efbeadde As this element does not allow commas, it's not necessary to add additional validation for that. Closes: https://gitlab.com/libvirt/libvirt/-/work_items/901 Signed-off-by: Roman Bogorodskiy Reviewed-by: Michal Privoznik --- I think there's a bug in bhyve that results in a reversed order value, so I have to use "01000000efbeadde" to get "deadbeef00000001". I'm trying to address that in https://reviews.freebsd.org/D59080. src/bhyve/bhyve_command.c | 4 ++++ .../x86_64/bhyvexml2argv-2-nvme-2-controllers.args | 2 +- .../x86_64/bhyvexml2argv-2-nvme-2-controllers.xml | 1 + .../x86_64/bhyvexml2argv-nvme-explicit-controller.args | 2 +- .../x86_64/bhyvexml2argv-nvme-explicit-controller.xml | 1 + .../x86_64/bhyvexml2xmlout-2-nvme-2-controllers.xml | 1 + .../x86_64/bhyvexml2xmlout-nvme-explicit-controller.xml | 1 + 7 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c index 956fcab06c..f0a87cffea 100644 --- a/src/bhyve/bhyve_command.c +++ b/src/bhyve/bhyve_command.c @@ -479,6 +479,10 @@ bhyveBuildNVMeControllerArgStr(const virDomainDef *def, virBufferAsprintf(&opt, ",maxq=3D%d", disk->queues); if (disk->queue_size) virBufferAsprintf(&opt, ",qsz=3D%d", disk->queue_size); + if (disk->wwn) + virBufferAsprintf(&opt, ",eui64=3D%s%s", + STRPREFIX(disk->wwn, "0x") ? "" : "0x", + disk->wwn); if (controller->opts.nvmeopts.serial) virBufferAsprintf(&opt, ",ser=3D%s", controller->opts.nvmeopts= .serial); =20 diff --git a/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-2-nvme-2-controll= ers.args b/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-2-nvme-2-controller= s.args index 664eec99bc..5be39bda1d 100644 --- a/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-2-nvme-2-controllers.args +++ b/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-2-nvme-2-controllers.args @@ -5,6 +5,6 @@ bhyve \ -H \ -P \ -s 0:0,hostbridge \ --s 2:0,nvme,/tmp/freebsd.img \ +-s 2:0,nvme,/tmp/freebsd.img,eui64=3D0xdeadbeef00000001 \ -s 3:0,nvme,/tmp/data.img \ bhyve diff --git a/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-2-nvme-2-controll= ers.xml b/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-2-nvme-2-controllers= .xml index 30f337197e..6a5efd3831 100644 --- a/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-2-nvme-2-controllers.xml +++ b/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-2-nvme-2-controllers.xml @@ -11,6 +11,7 @@ + 0xdeadbeef00000001 diff --git a/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-nvme-explicit-con= troller.args b/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-nvme-explicit-c= ontroller.args index 74dd4baa37..022a4df209 100644 --- a/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-nvme-explicit-controller= .args +++ b/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-nvme-explicit-controller= .args @@ -5,5 +5,5 @@ bhyve \ -H \ -P \ -s 0:0,hostbridge \ --s 2:0,nvme,/tmp/freebsd.img,maxq=3D2,qsz=3D256,ser=3DBHYVE-NVME0-01234 \ +-s 2:0,nvme,/tmp/freebsd.img,maxq=3D2,qsz=3D256,eui64=3D0x01000000efbeadde= ,ser=3DBHYVE-NVME0-01234 \ bhyve diff --git a/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-nvme-explicit-con= troller.xml b/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-nvme-explicit-co= ntroller.xml index 9781d3aaef..fb7ed573c5 100644 --- a/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-nvme-explicit-controller= .xml +++ b/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-nvme-explicit-controller= .xml @@ -14,6 +14,7 @@ + 01000000efbeadde
diff --git a/tests/bhyvexml2xmloutdata/x86_64/bhyvexml2xmlout-2-nvme-2-cont= rollers.xml b/tests/bhyvexml2xmloutdata/x86_64/bhyvexml2xmlout-2-nvme-2-con= trollers.xml index d0eb9c7fc8..107beef587 100644 --- a/tests/bhyvexml2xmloutdata/x86_64/bhyvexml2xmlout-2-nvme-2-controllers= .xml +++ b/tests/bhyvexml2xmloutdata/x86_64/bhyvexml2xmlout-2-nvme-2-controllers= .xml @@ -17,6 +17,7 @@ + 0xdeadbeef00000001
diff --git a/tests/bhyvexml2xmloutdata/x86_64/bhyvexml2xmlout-nvme-explicit= -controller.xml b/tests/bhyvexml2xmloutdata/x86_64/bhyvexml2xmlout-nvme-exp= licit-controller.xml index f646267ec5..7c4dd2cdb3 100644 --- a/tests/bhyvexml2xmloutdata/x86_64/bhyvexml2xmlout-nvme-explicit-contro= ller.xml +++ b/tests/bhyvexml2xmloutdata/x86_64/bhyvexml2xmlout-nvme-explicit-contro= ller.xml @@ -17,6 +17,7 @@ + 01000000efbeadde
--=20 2.52.0