From nobody Sun Feb 8 13:44:59 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; 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=1770450903; cv=none; d=zohomail.com; s=zohoarc; b=JKhG03AYUxaLBvaLa4TL3alyuP51zvovu9u9LNulo9S9cZG6aO5/vCfuU669eW5PwkEqzl2M/o9PqgWJHr2j5e9tfEh3thAK4bifTlrQeRX5JbMM96Xsa9F8ht9vwgw1q7OmvN3fFFQA+oAhpNiuynIbt7Qe6gzzZ5B8wH0lnXE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770450903; 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=yCi7srxjxP/q1ulSGcb4VdWmKhwpJ8Ou3TorRPJvpok=; b=XWP2BSQWr7rjDingsXbKB8e7hShuyAchcHhY47oYo2OldEMP8GmcNMrNgbWTRU7WSydLdggUhMkc0eps2sGoHNkFEQ6l8Q9Lucuxeo1bvYMd/Rjiu1GqGxrelC+unQO4QOPrXE60lUE2+zwoh/NeCewMOd9l5g8wKGvkMMbacJM= 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 1770450903945935.5613815935704; Fri, 6 Feb 2026 23:55:03 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id F24CC3FA2E; Sat, 7 Feb 2026 02:55:02 -0500 (EST) Received: from [172.19.199.6] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 5594E41D9B; Sat, 7 Feb 2026 02:53:00 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 60612417D6; Sat, 7 Feb 2026 02:52:52 -0500 (EST) Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) (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 A44313F87A for ; Sat, 7 Feb 2026 02:52:50 -0500 (EST) Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-6581234d208so2400088a12.3 for ; Fri, 06 Feb 2026 23:52:50 -0800 (PST) Received: from tulp.my.domain (2001-1c02-1a15-3000-c218-03ff-feb5-6cc4.cable.dynamic.v6.ziggo.nl. [2001:1c02:1a15:3000:c218:3ff:feb5:6cc4]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b8edacaffeesm153634466b.38.2026.02.06.23.52.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Feb 2026 23:52:47 -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=1770450769; x=1771055569; 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=yCi7srxjxP/q1ulSGcb4VdWmKhwpJ8Ou3TorRPJvpok=; b=TjsNGVGfVl99Lu1X6zn+p7AzQi5AfB0VjSKFusvS4gV8sbaEPhSGBOyWbIp1pHsmzu b0Emnfl1OGQCzMvBdcp8BMIpA163gxr3ZsQ4BulZUKswXn6+REukx5cpSRQBeXEauSGY yBG78hwpAANMY9WT9p4F9lUj+9sJcBvRLBeIMKPFdNzv5tKHZfTlKm8OgbKrSW0rMiQJ pz8PnA5HAltsQ52SGoBeY3AMJQFQ98ig3AcxhExWtb4LaQw0viUV2VqCgvB5ZeK3zuQL WK4uOZiy6xn9vEEt3u2b78cuDwpO+Rw1YdjpW4jKEAMZkQW6qTTWosueWny4SSiX8DuB 1qaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770450769; x=1771055569; 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=yCi7srxjxP/q1ulSGcb4VdWmKhwpJ8Ou3TorRPJvpok=; b=JUlnHoItkSkC6ASPqI+RDS21QUiCHSwb3qNxa5+Mb2FFhrtvqvgkkNei+QJMdmxzKY Jn543fbPdt5MYYMOLxLsAlR3NKnL1VqvGYZmJAsOea8WMasVygl43F1bvSNEd0wAG07B TMQreQP3dgUxPVQE8Oy2En2x4Oc9phvM4oiVsFZ2DIDLwKIWVY9IhnmHkDJUrpuDkFc+ VFtVE9fXX4sWmlBLcflFuTpDOdoKX1/ep3omlSh8kM1iU8PjwShTIxbLKXoMrQGIJQke YcAkIM9hnUs1pTdLHdB3xq6e7JdJs+vCc9bD1xgtTz2bY9eM9NWh1p9yf7sv14YgZPcb 70Fw== X-Gm-Message-State: AOJu0YyowKjNWN3hMRJ2qse3DMbUjuvHL/O/u8AVjfpHryuEVjQp6LEk NERRbKB+4SS2BOVfUh1Sl1QNJDpGlaD6E69dvWwtekVM7vZw59G3zdROWczehM19 X-Gm-Gg: AZuq6aI9if9VMTHfCgdmTcgoT7DLnFg3Aaqhq9H6VKQOq/QpRroCUjruNcL+feeD0Yl y8eA1bQTG2fJnBg/bi1mSrtoPBXJLKhSR8Ai0VlFk/a5kBKinin0Snjo9lXWBwpzv3ZkPIQlQcf kTzPnmJwa4AnOG37iRLhT41Va2rIi3KIhZtuGP9pxqjesoBSl2YqKHPDAWS6Nxzx/NiTtzsVEcL 6x5ZJrnQsQdMjAGEFTpGxc1M2ikKk1780ddAKQmCMt6BPLPB3SyEdufntuanCW3ZLde/CoBl/iM h7rPW20IfUED6JZi9GnxAXavS6kCcUTVDB02ck2kDA9/of1ilkKoQ8vwn2HKkrCCDjOeunIe/My J8UorzzuPmo2nLcZKOceShTeFxXpC47ymhH2CQFlbUc3GySjuyRiiy9fXJqua0cwNvNoNa/RPWs dtOUho6WBZC+7xSdBRd0Rvv8X1MJ1LghVYQgGe8tTwgXMIFXxTM9jUTMh6PcQhN8CiGHvEa5GAs INdDv8ABZlfoUZrpq/bz/nw X-Received: by 2002:a17:907:1c83:b0:b8d:f6f1:e27a with SMTP id a640c23a62f3a-b8edf404572mr269519066b.65.1770450768529; Fri, 06 Feb 2026 23:52:48 -0800 (PST) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 1/2] bhyve: support vcpu pinning Date: Sat, 7 Feb 2026 08:52:08 +0100 Message-ID: <20260207075209.18946-2-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260207075209.18946-1-bogorodskiy@gmail.com> References: <20260207075209.18946-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: FMCT6BBTYPQAX45HAZBJMKAI7WRFBSEU X-Message-ID-Hash: FMCT6BBTYPQAX45HAZBJMKAI7WRFBSEU 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: 1770450906879158500 Content-Type: text/plain; charset="utf-8" Bhyve supports vcpu pinning using the `-p vcpu:hostcpu` argument. This argument can be specified multiple times for the same vcpu to pin it to multiple hostcpu's. Bhyve currently does not allow to change vcpu pinning configuration for the VM that is already running. Use this to support domain's vcpupin configuration such as: Signed-off-by: Roman Bogorodskiy --- docs/drvbhyve.rst | 20 ++++++++++++++ src/bhyve/bhyve_command.c | 15 +++++++++++ .../x86_64/bhyvexml2argv-vcpupin.args | 15 +++++++++++ .../x86_64/bhyvexml2argv-vcpupin.ldargs | 4 +++ .../x86_64/bhyvexml2argv-vcpupin.xml | 27 +++++++++++++++++++ tests/bhyvexml2argvtest.c | 1 + 6 files changed, 82 insertions(+) create mode 100644 tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-vcpupin.ar= gs create mode 100644 tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-vcpupin.ld= args create mode 100644 tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-vcpupin.xml diff --git a/docs/drvbhyve.rst b/docs/drvbhyve.rst index 5a45e9056f..f4aec9ffad 100644 --- a/docs/drvbhyve.rst +++ b/docs/drvbhyve.rst @@ -737,6 +737,26 @@ Example: Please refer to ``cam(4)``, ``ctl(4)``, and ``ctld(8)`` manual pages for more details on CAM and CTL. =20 +vCPU pinning +~~~~~~~~~~~~ + +:since:`Since 12.1.0`, it is possible to pin domain vCPUs +to the specific host CPUs. + +Example: + +:: + + + ... + 2 + + + + + ... + + Guest-specific considerations ----------------------------- =20 diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c index ff079da9ef..7a92966d39 100644 --- a/src/bhyve/bhyve_command.c +++ b/src/bhyve/bhyve_command.c @@ -940,6 +940,21 @@ virBhyveProcessBuildBhyveCmd(struct _bhyveConn *driver= , virDomainDef *def, virCommandAddArgFormat(cmd, "%d", nvcpus); } =20 + /* CPU tuning */ + for (i =3D 0; i < virDomainDefGetVcpusMax(def); i++) { + virDomainVcpuDef *vcpu =3D virDomainDefGetVcpu(def, i); + + if (vcpu->cpumask) { + ssize_t j =3D -1; + + while ((j =3D virBitmapNextSetBit(vcpu->cpumask, j)) >=3D 0) { + virCommandAddArg(cmd, "-p"); + virCommandAddArgFormat(cmd, "%zu:%zu", i, j); + } + + } + } + /* Memory */ virCommandAddArg(cmd, "-m"); virCommandAddArgFormat(cmd, "%llu", diff --git a/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-vcpupin.args b/te= sts/bhyvexml2argvdata/x86_64/bhyvexml2argv-vcpupin.args new file mode 100644 index 0000000000..c873766220 --- /dev/null +++ b/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-vcpupin.args @@ -0,0 +1,15 @@ +bhyve \ +-c 2 \ +-p 0:1 \ +-p 0:3 \ +-p 0:4 \ +-p 1:0 \ +-p 1:4 \ +-m 214 \ +-u \ +-H \ +-P \ +-s 0:0,hostbridge \ +-s 2:0,ahci,hd:/tmp/freebsd.img \ +-s 3:0,virtio-net,faketapdev,mac=3D52:54:00:b9:94:02 \ +bhyve diff --git a/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-vcpupin.ldargs b/= tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-vcpupin.ldargs new file mode 100644 index 0000000000..5905f4b3e6 --- /dev/null +++ b/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-vcpupin.ldargs @@ -0,0 +1,4 @@ +bhyveload \ +-m 214 \ +-d /tmp/freebsd.img \ +bhyve diff --git a/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-vcpupin.xml b/tes= ts/bhyvexml2argvdata/x86_64/bhyvexml2argv-vcpupin.xml new file mode 100644 index 0000000000..bfa13c7cab --- /dev/null +++ b/tests/bhyvexml2argvdata/x86_64/bhyvexml2argv-vcpupin.xml @@ -0,0 +1,27 @@ + + bhyve + df3be7e7-a104-11e3-aeb0-50e5492bd3dc + 219136 + 2 + + + + + + hvm + + + + + + +
+ + + + + +
+ + + diff --git a/tests/bhyvexml2argvtest.c b/tests/bhyvexml2argvtest.c index ae43445cde..423edaa428 100644 --- a/tests/bhyvexml2argvtest.c +++ b/tests/bhyvexml2argvtest.c @@ -278,6 +278,7 @@ mymain(void) DO_TEST("slirp-mac-addr"); DO_TEST_FAILURE("slirp-ip"); DO_TEST("virtio-scsi"); + DO_TEST("vcpupin"); =20 /* Address allocation tests */ DO_TEST("addr-single-sata-disk"); --=20 2.52.0 From nobody Sun Feb 8 13:44:59 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; 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=1770450860; cv=none; d=zohomail.com; s=zohoarc; b=NHX19Jj1gYXMX0fp40alEz9fGOjPvPN5Vdo1pBp3Ptck4M5YwGGDJTJs9cfo5DFXiJuWCF5FrQtHWPDdhwst29qkYlSL1DW699jtpR8NVyxiBkoxszQHVWMN/dX41xRoDxqaYCWhDIFbDCcTofS2R3C6uF/KxXKrkpma7u7ivjM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770450860; 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=z2LQAktDVC5paHb1MFga1UWxZHDk1Wu7h8ygQ8BRXag=; b=mVF+MExYjPJQFVx+WkN/v60B/Qc9bq5hUAeLiNRsInFYy72BjXKsxKmvbJlormyEM+ZPG99Zs5+NeC0uC8TwRdrRxy8UV8SS8tvkIv8WUX/x7u1ZabK1wIe9tBVV9SPYVfT2USz1Djy3H9OqeY5CodT2ahf4YGNbxQDLB9iWdoA= 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 1770450860626716.452019599287; Fri, 6 Feb 2026 23:54:20 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 043EE41967; Sat, 7 Feb 2026 02:54:20 -0500 (EST) Received: from [172.19.199.6] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 9B6F441BF1; Sat, 7 Feb 2026 02:52:58 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 4FFD2417D6; Sat, 7 Feb 2026 02:52:52 -0500 (EST) Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) (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 76AA741813 for ; Sat, 7 Feb 2026 02:52:51 -0500 (EST) Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-b8869cd7bb1so261462266b.1 for ; Fri, 06 Feb 2026 23:52:51 -0800 (PST) Received: from tulp.my.domain (2001-1c02-1a15-3000-c218-03ff-feb5-6cc4.cable.dynamic.v6.ziggo.nl. [2001:1c02:1a15:3000:c218:3ff:feb5:6cc4]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b8edacaffeesm153634466b.38.2026.02.06.23.52.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Feb 2026 23:52:48 -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=1770450770; x=1771055570; 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=z2LQAktDVC5paHb1MFga1UWxZHDk1Wu7h8ygQ8BRXag=; b=Z7xCexmlzIkKg5Yu2Ch4vOxPpFjdO/+5Ya724FAlSYO0Kkf7h4ODo1HCDZ+WKa4bd3 3DvUx4Sdc1aAahiDPpyc1+FDta39NBxgNdZVGPCP7yHNw8LPj0TIZa+ZHzpTWnI5aA5w ozw+beuKVZE6PtHNMp+sub81eBLkvJX25wv9fMmjdE+EGUcnbh93xB7hvX7BWkjhRwcx yeBPGj7BkgIkXx1Dtd07MJNnpHGmxMx+TCM71ZeMPQWm3CNL1NS8AmlCEvhpwu5K4HeC e52qtc64yylqTRDYOjqtPykbfjSvovFTTAgFNOjWzpk2z4jZ1N93tXIKXx6Ls/uUTdfw OzxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770450770; x=1771055570; 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=z2LQAktDVC5paHb1MFga1UWxZHDk1Wu7h8ygQ8BRXag=; b=NV0ERUvxla98o6l0GZ2TM8QmT94fkq74Sk8kc2fXTFs/z28HksH8/1xruLT9BSy3Em 9YZAMU7hADPiVUdfzkoNsQB3AGT3rxObDMlBOsXt06X5wFPp+4WngOMlfNWr8JB26uyU QAAR1SOfp6rfeJLmTaCnjrw62e3hBwTaImaFowVTqmGCn2rpkAsc/gcOXVS89ju/kzTq G4XMqFRZQ8QKOHUpL01HUftkJczTQPLUat94hbh73ZdRXTX6BAfU0nI7V+OQifknitWW P9TajVyNDSIjYQiBRTUZk9Z0Uyu7EMMG6b67nYXXVdjisltUcsmK9t25eDAHH7dy/WWi IZQA== X-Gm-Message-State: AOJu0Yzafc5bOmzMf0WA1rTi/EcIegxsf6UsW4GITe1uL5n3hxB81B+4 PWMflwgGGnWFPYmQnk68jwS7lclWqZTSDOhvOXIybe94NMTsSNq5T3xQpnaWluQX X-Gm-Gg: AZuq6aJgEihP6M9E8lkEwWFXXOOydMTo98dQMNb+V0NqlHRR4aFtpyTYuXqsFrkM1bw fY2J8HhMmCVW30J2uwv5IJAZ5NxuSWSF9CrrkJf4giz+UXp2vvbccUVadFrDa7GNse2aVNPGoMb 9tJOQAL5q2H3UUrTfLxf413WYCyDewLGb123YVIOYe5m/xyI/jZXXMlolvNUv8sz28bUGlEyZmY 1nofA3gG3wXaf+CJFPL1SjXnQDCljZAU2SC4Gycv8wE4g1R7xjOTgrQcd58ed9xOkqiLxIdlYuH aBQuIMUYpN2HhUAA/bRhmxpt2kOkHbc/5NOBgbr66fAznpYhxf1oAo7GdzylBA3LCV1Zaix6+P1 8bK9m2sj+7TZOqnL49WUVgSMG8h7elqh5kZ8InzE5dNydKZVTOqiNyJpwH1suNupoK8w54qtWHo tKPKHmL7eGvp/1Lsduh/3AWvfkUN5CFw6AJgKBebVZLFhVwhrL7hft0YMHiV+dr3T5fW2iEDoZw ZufoggIcVG8R1vCwv9Kq5f0pjl/pKmCeuo= X-Received: by 2002:a17:906:7944:b0:b8e:15cf:78e0 with SMTP id a640c23a62f3a-b8edf2fbc62mr315899866b.40.1770450769580; Fri, 06 Feb 2026 23:52:49 -0800 (PST) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 2/2] bhyve: implement domainGetVcpuPinInfo Date: Sat, 7 Feb 2026 08:52:09 +0100 Message-ID: <20260207075209.18946-3-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260207075209.18946-1-bogorodskiy@gmail.com> References: <20260207075209.18946-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: TUGA3RDWKIO6NFCPQPLMAKRMPSE7RTB7 X-Message-ID-Hash: TUGA3RDWKIO6NFCPQPLMAKRMPSE7RTB7 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: 1770450862735154100 Content-Type: text/plain; charset="utf-8" Implement domainGetVcpuPinInfo for querying vcpu pinning information. Also, implement a couple of other APIs this one depends on: domainGetVcpusFlags and domainGetMaxVcpus. Signed-off-by: Roman Bogorodskiy --- src/bhyve/bhyve_driver.c | 74 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index cbcdc996dc..a7bd16704e 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -1775,6 +1775,77 @@ bhyveDomainBlockStats(virDomainPtr domain, return ret; } =20 +static int +bhyveDomainGetVcpusFlags(virDomainPtr domain, unsigned int flags) +{ + virDomainObj *vm; + virDomainDef *def; + int ret =3D -1; + + virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | + VIR_DOMAIN_AFFECT_CONFIG | + VIR_DOMAIN_VCPU_MAXIMUM, -1); + + if (!(vm =3D bhyveDomObjFromDomain(domain))) + return -1; + + if (virDomainGetVcpusFlagsEnsureACL(domain->conn, vm->def, flags) < 0) + goto cleanup; + + if (!(def =3D virDomainObjGetOneDef(vm, flags))) + goto cleanup; + + if (flags & VIR_DOMAIN_VCPU_MAXIMUM) + ret =3D virDomainDefGetVcpusMax(def); + else + ret =3D virDomainDefGetVcpus(def); + + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} + +static int +bhyveDomainGetMaxVcpus(virDomainPtr domain) +{ + return bhyveDomainGetVcpusFlags(domain, (VIR_DOMAIN_AFFECT_LIVE | + VIR_DOMAIN_VCPU_MAXIMUM)); +} + +static int +bhyveDomainGetVcpuPinInfo(virDomainPtr domain, + int ncpumaps, + unsigned char *cpumaps, + int maplen, + unsigned int flags) +{ + virDomainObj *vm; + virDomainDef *def; + g_autoptr(virBitmap) hostcpus =3D NULL; + int ret =3D -1; + + virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); + + if (!(vm =3D bhyveDomObjFromDomain(domain))) + return -1; + + if (virDomainGetVcpuPinInfoEnsureACL(domain->conn, vm->def) < 0) + goto cleanup; + + if (!(def =3D virDomainObjGetOneDef(vm, flags))) + goto cleanup; + + if (!(hostcpus =3D virHostCPUGetAvailableCPUsBitmap())) + goto cleanup; + + ret =3D virDomainDefGetVcpuPinInfoHelper(def, maplen, ncpumaps, cpumap= s, + hostcpus, NULL); + + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} + static virHypervisorDriver bhyveHypervisorDriver =3D { .name =3D "bhyve", .connectURIProbe =3D bhyveConnectURIProbe, @@ -1838,6 +1909,9 @@ static virHypervisorDriver bhyveHypervisorDriver =3D { .domainInterfaceStats =3D bhyveDomainInterfaceStats, /* 11.7.0 */ .domainMemoryStats =3D bhyveDomainMemoryStats, /* 11.7.0 */ .domainBlockStats =3D bhyveDomainBlockStats, /* 11.7.0 */ + .domainGetVcpusFlags =3D bhyveDomainGetVcpusFlags, /* 12.1.0 */ + .domainGetMaxVcpus =3D bhyveDomainGetMaxVcpus, /* 12.1.0 */ + .domainGetVcpuPinInfo =3D bhyveDomainGetVcpuPinInfo, /* 12.1.0 */ }; =20 =20 --=20 2.52.0