From nobody Fri Nov 21 10:19:31 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=1761978685; cv=none; d=zohomail.com; s=zohoarc; b=XUoBTVj8CAsX4pMBf3h14PD2Hx1vCBdUEQ3zA+n8mhGajlmHRyyPgv3deLbSYvfLQgWLEb6DEzFC4WMgVF9VNX9QiYufBq796zGudYrfOPAFxytMvHJsZLszxfHBxDat5guIQhuMk3YsOdzGGCWBt285GXxQ0uC5pg1RbC2d7So= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761978685; 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=n7knHgtAvSJWbUmitUrZkY6B1oxt9fQs6dINDVP3mvk=; b=blhyvjBFUymQvt4gwOFN6grMEPP+tF70h9tl+L4heUGQTatRBN6k6XrCD90AEYaJX32V0KMxYTcC1Dx+cjaPpZisP0Z7eb8r4kt4fXVz56jnd6BrempBRO6N8671+VH3LFMco8Rn8ZAgqhdoy89VeVXlt7cFezVv8twvxulQ/ok= 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 1761978685923426.8199689808564; Fri, 31 Oct 2025 23:31:25 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id B2B993F967; Sat, 1 Nov 2025 02:31:24 -0400 (EDT) Received: from [172.19.199.29] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 4D02D440DD; Sat, 1 Nov 2025 02:27:51 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 07EA241BC1; Sat, 1 Nov 2025 02:26:09 -0400 (EDT) Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) (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 5E4E943F79 for ; Sat, 1 Nov 2025 02:26:05 -0400 (EDT) Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-b6d5c59f2b6so706715866b.2 for ; Fri, 31 Oct 2025 23:26:05 -0700 (PDT) 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-b7077975e18sm371807166b.2.2025.10.31.23.26.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Oct 2025 23:26:02 -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=-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=1761978364; x=1762583164; 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=n7knHgtAvSJWbUmitUrZkY6B1oxt9fQs6dINDVP3mvk=; b=KQKIuvXQ31IzhgV3nZP4jQjj3KukCceQ81qxslgpWkEKo+vFSvQ3IC/knGGojTYGgN 2qSTaRG4Qr88Cg8tYzFZyyyXpyb/JD8f59JgUUqmTfdDlZ2JMOMqoQDNpX9tVdRiCrV1 ELSXPCQXPxqeOhKvsStgrkxYkVt2kaRXFSCQUxv3DdT4dn0h4ZCkbFpmTyG28VhK7qy/ LbWXroO0Za+HEp9vX3wUBConBXY6/B/wJehanSy+ZX+Fh1l26u7SL7jWC5rMRiQQ5Sjn uPSwGzedkXOMr94GFvSx4NzOwlrN8KesdS15mSdfWEipPoLTDS7hTN4PUU3CRqkMJtjK RI2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761978364; x=1762583164; 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=n7knHgtAvSJWbUmitUrZkY6B1oxt9fQs6dINDVP3mvk=; b=IhVT41hjQ/YXp9hkeFKebyc0DsFPXZpvQ3OT2R2OJ3FiVRROK5z/t16xPEbobORyuk avnJC7Cb/tYtgZvat1j5q1dM2/NxZ73A8m3UGK5Hda9FKK0qST3iX4ZbFnGcsiwHilNY BJKbPqedxV+vTPucxJq7451mLW9xVle/KUJmZL1ZMY4LsgDJP6Wf7d0ugrZd4wSTxQY9 hSo2NvJZxh8W5F/kPLNxvz/vHd0ETo24LYy1bkQow4+dA3exHNTK5M23Gi5Pal9Xln1b EeZw2oKwZriK9hreOOBfH64vMdCepld6K1RkBpwo6jPHFBm5BuYwP3pz+p73BL2dW7fR 4vcw== X-Gm-Message-State: AOJu0YymISD+mpeYvrnF/tmoWGvMDdoMK9ex8oBb3JLgTLWVZ1IgYhk8 1s4HvJti4lMfMkZVmaONVsmd8x0tHoPWT+XR8W5WESeQ4Qn0aKBmuXOxiC3ktHz3Jf/7tQ== X-Gm-Gg: ASbGncuwNJ6FW2Mzupu7c+hoWr81g0RUZhn1KzV8rBBWzvprTHqGjGX5mQc4ZglJ0Pi jdQK6up9uOUbMNqUrYzH77iCrXaN50pp5RO/9idu77/TP95U4CEYogpcnavoSbOUVoBwFUqYcKz Jca+aCGwpR7ThB/V1U8oRWa+gSfbpRihUfqAcxWFYDy/R84XE+fSbPYfGuxxNnFmM65anPCQUIm rvLwQ+DOBottQe0BbSaGs7olNKUTiqq6SMtgrNfXvGShVZqIl4rzO7nV9rC2zaJdKJtl6M4y+Rt uAvuTFZYjmZKhXc29U3KUxxh27OUpbbvyNy5MqPHJn9MCnPqbldwkJooJgWDBtnOckGeP2w/DnL iSibzDeHZZbITat8axZHz5n9CRlHIdma6o87AlUwwj8DHnUsxuHjiogwgY++UMVyCu1ZTeoL0R4 b9hWx2N+56YFHJLvwFhB1QRlb01c7XBSAubU3likx0JVMtzA== X-Google-Smtp-Source: AGHT+IFrh4GFKpfi/BMBCJO0k7CQpGlHsg7VZVKh7BvRm65OqNgZbgDzLQtQ3x0KUJJ91tro4jyObA== X-Received: by 2002:a17:907:72c6:b0:b04:830f:822d with SMTP id a640c23a62f3a-b70708a1c37mr579495466b.63.1761978363669; Fri, 31 Oct 2025 23:26:03 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 4/4] bhyve: auto-assign PCI addresses for hostdevs Date: Sat, 1 Nov 2025 07:24:24 +0100 Message-ID: <20251101062424.57331-5-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251101062424.57331-1-bogorodskiy@gmail.com> References: <20251101062424.57331-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: XSARZWKMYD32TQTP5LGN35TSCKDTDJ2Q X-Message-ID-Hash: XSARZWKMYD32TQTP5LGN35TSCKDTDJ2Q 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: 1761978686420158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Roman Bogorodskiy --- src/bhyve/bhyve_device.c | 10 ++++ .../bhyvexml2argv-passthru-multiple-devs.args | 12 +++++ ...hyvexml2argv-passthru-multiple-devs.ldargs | 4 ++ .../bhyvexml2argv-passthru-multiple-devs.xml | 41 ++++++++++++++++ tests/bhyvexml2argvtest.c | 1 + ...bhyvexml2xmlout-passthru-multiple-devs.xml | 48 +++++++++++++++++++ tests/bhyvexml2xmltest.c | 1 + 7 files changed, 117 insertions(+) create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-passthru-multiple= -devs.args create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-passthru-multiple= -devs.ldargs create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-passthru-multiple= -devs.xml create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-passthru-mult= iple-devs.xml diff --git a/src/bhyve/bhyve_device.c b/src/bhyve/bhyve_device.c index 49cfccaeba..ead52ae704 100644 --- a/src/bhyve/bhyve_device.c +++ b/src/bhyve/bhyve_device.c @@ -196,6 +196,16 @@ bhyveAssignDevicePCISlots(virDomainDef *def, return -1; } =20 + for (i =3D 0; i < def->nhostdevs; i++) { + if (!virDeviceInfoPCIAddressIsWanted(def->hostdevs[i]->info)) + continue; + if (virDomainPCIAddressReserveNextAddr(addrs, + def->hostdevs[i]->info, + VIR_PCI_CONNECT_TYPE_PCI_DE= VICE, + -1) < 0) + return -1; + } + return 0; } =20 diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-passthru-multiple-devs.a= rgs b/tests/bhyvexml2argvdata/bhyvexml2argv-passthru-multiple-devs.args new file mode 100644 index 0000000000..97647987bd --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-passthru-multiple-devs.args @@ -0,0 +1,12 @@ +bhyve \ +-c 1 \ +-m 214 \ +-S \ +-H \ +-P \ +-s 0:0,hostbridge \ +-s 2:0,ahci,hd:/tmp/freebsd.img \ +-s 7:1,passthru,3/0/4 \ +-s 3:0,passthru,4/0/0 \ +-s 4:0,passthru,5/2/0 \ +bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-passthru-multiple-devs.l= dargs b/tests/bhyvexml2argvdata/bhyvexml2argv-passthru-multiple-devs.ldargs new file mode 100644 index 0000000000..5905f4b3e6 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-passthru-multiple-devs.ldargs @@ -0,0 +1,4 @@ +bhyveload \ +-m 214 \ +-d /tmp/freebsd.img \ +bhyve diff --git a/tests/bhyvexml2argvdata/bhyvexml2argv-passthru-multiple-devs.x= ml b/tests/bhyvexml2argvdata/bhyvexml2argv-passthru-multiple-devs.xml new file mode 100644 index 0000000000..bcea7aa033 --- /dev/null +++ b/tests/bhyvexml2argvdata/bhyvexml2argv-passthru-multiple-devs.xml @@ -0,0 +1,41 @@ + + bhyve + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 219136 + + + + 1 + + hvm + + + destroy + destroy + destroy + + + + + +
+ + + +
+ +
+ + + +
+ + + + +
+ + + + diff --git a/tests/bhyvexml2argvtest.c b/tests/bhyvexml2argvtest.c index 5d234b39fa..f7411ee094 100644 --- a/tests/bhyvexml2argvtest.c +++ b/tests/bhyvexml2argvtest.c @@ -223,6 +223,7 @@ mymain(void) DO_TEST("localtime"); DO_TEST("net-e1000"); DO_TEST("passthru"); + DO_TEST("passthru-multiple-devs"); DO_TEST("uefi"); DO_TEST("uefi-nvram"); DO_TEST("uefi-nvram-template-set"); diff --git a/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-passthru-multiple-de= vs.xml b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-passthru-multiple-devs.x= ml new file mode 100644 index 0000000000..dbb2a03cd3 --- /dev/null +++ b/tests/bhyvexml2xmloutdata/bhyvexml2xmlout-passthru-multiple-devs.xml @@ -0,0 +1,48 @@ + + bhyve + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 219136 + + + + 1 + + hvm + + + + destroy + destroy + destroy + + + + + +
+ + + +
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + diff --git a/tests/bhyvexml2xmltest.c b/tests/bhyvexml2xmltest.c index 226eaccc6a..97c8647192 100644 --- a/tests/bhyvexml2xmltest.c +++ b/tests/bhyvexml2xmltest.c @@ -119,6 +119,7 @@ mymain(void) DO_TEST_DIFFERENT("4-consoles"); DO_TEST_DIFFERENT("nvme"); DO_TEST_DIFFERENT("2-nvme-2-controllers"); + DO_TEST_DIFFERENT("passthru-multiple-devs"); =20 /* Address allocation tests */ DO_TEST_DIFFERENT("addr-single-sata-disk"); --=20 2.51.0