From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759928223; cv=none; d=zohomail.com; s=zohoarc; b=QEIlENzBNYsQpvCx+Sfk6xqY3e/DlBIKmhvTi1wgIzZdONFs9Aiemzj4uUFEVZhfBiPUZlIDVsTV4zPehZZ5aPFVVvqR8n6Y/OpGtQDW63F09mHhd7JbksOpn9LOVB0J9Mj9twzntV9ilG0jozhIbd1SENlpe6ZcNT+wmD28pJ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759928223; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=NLuRzisRPoeVfxMKlylwrTE00BrrH7QUuZ4nzMbdfZE=; b=Ra/IHj0Q9oHJJ2zxdCbU6CcEMZl2n2R8pHQHrrZKmf9uZFNc9zPaRP+GKWxv/9hgUSCdMnklR2foXHrOCG+5mKGEkKJf38m1cAVkEIBn6H/YwT7PdQkldsFl0j4xtWYL8uhJAb1SrBR2VWvUfw587Zy2JXV2a72ZvSIy4FHcbDM= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759928223524364.8372064681661; Wed, 8 Oct 2025 05:57:03 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 8A7274419D; Wed, 8 Oct 2025 08:56:58 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 2DCE34436B; Wed, 8 Oct 2025 08:56:02 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 8EF0143E22; Wed, 8 Oct 2025 08:54:11 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 2533F41B47 for ; Wed, 8 Oct 2025 08:54:10 -0400 (EDT) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-648-VS08SEBuNGK7QSo24t43fw-1; Wed, 08 Oct 2025 08:54:08 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 58B481800294 for ; Wed, 8 Oct 2025 12:54:07 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 97E8F19560BE for ; Wed, 8 Oct 2025 12:54:06 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928049; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NLuRzisRPoeVfxMKlylwrTE00BrrH7QUuZ4nzMbdfZE=; b=GYstdetUYvSc4D6G9aHhZ8ED9h1iu5TvasmxWla/74QITQqJzBtGUUmVJWM2c7OUeSFuFc AM1sbU4XFNHl7xoHGNLXk6bkR8VyqCpZ9f4fqI87fPY4k2/t0Q5pr16D7u26XBsvlFqYvx pUETgXa5ti6FiEsj5S/vmfshAr0Wr0A= X-MC-Unique: VS08SEBuNGK7QSo24t43fw-1 X-Mimecast-MFC-AGG-ID: VS08SEBuNGK7QSo24t43fw_1759928047 To: devel@lists.libvirt.org Subject: [PATCH v2 01/29] docs: Fix QEMU version wrt hypervclock Date: Wed, 8 Oct 2025 14:53:33 +0200 Message-ID: <3a1d343719ff5275567ba7fafc34643c9da45341.1759927755.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: -uYE8TAVuSCWSewh-RX-f2nr8nGF7jELIl1EsrTYW9E_1759928047 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: M2HHOKZ3HDYDJCFFM2FNVPNOY2B7XQEF X-Message-ID-Hash: M2HHOKZ3HDYDJCFFM2FNVPNOY2B7XQEF X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759928228589116600 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik The hv-time feature was introduced in QEMU commit v2.0.0-rc0~119^2~3 which means the first version the feature is available in is 2.0.0. But our docs say 1.2.2. Fix it. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- docs/formatdomain.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index f50dce477f..fcf3ad8d29 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -2437,7 +2437,7 @@ Windows, however, expects it to be in so called 'loca= ltime'. The ``name`` attribute selects which timer is being modified, and ca= n be one of "platform" (currently unsupported), "hpet" (xen, qemu, lxc), "kvmclock" (qemu), "pit" (qemu), "rtc" (qemu, lxc), "tsc" (xen, qemu= - - :since:`since 3.2.0` ), "hypervclock" (qemu - :since:`since 1.2.2` )= or + :since:`since 3.2.0` ), "hypervclock" (qemu - :since:`since 2.0.0` )= or "armvtimer" (qemu - :since:`since 6.1.0` ). The ``hypervclock`` time= r adds support for the reference time counter and the reference page for iT= SC feature for guests running the Microsoft Windows operating system. --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759928323; cv=none; d=zohomail.com; s=zohoarc; b=huppZR5ST5QCgsy+TprhJ26elfK7V2ZV1NZuJAvbFEi4yRDmoDmcrEarJGGdUQWTBTnQahvlcVnIxutxvzVKlNvZqXifRL+GEifSbrxVw1uz91hDybt7J4mY2gthneiKzC+LPAa0MXboIs3b5dhnVLvYY1JCYAvHsChhtF5a5TA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759928323; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=OPUdCYtLtX8AntIfwZ8bpwCy/SjQ6dY6dwS1dkrAkmM=; b=BTcQhIGDZzHpKGV7BdsgSyN3ZiELTaXOv1Si7VHNC2YxtsoVS5FbVRJkeV34WcPUoCk8uzbBz5ewaCRXUmjveIF+ngXKLMvpIFSbevTgjJqrmfnbj3T6T2ojUIyvCV8tgft+Kg/EhcGWqnDWh5RcPVFP0hvcmfgbxhOQIB5vj/o= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 175992832345768.40786093280315; Wed, 8 Oct 2025 05:58:43 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 987463F303; Wed, 8 Oct 2025 08:58:42 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 1142644352; Wed, 8 Oct 2025 08:57:48 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id DA0F541B43; Wed, 8 Oct 2025 08:54:11 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 0F25B41B30 for ; Wed, 8 Oct 2025 08:54:11 -0400 (EDT) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-652-dbWX06TrNm-CmWOOv_FfwA-1; Wed, 08 Oct 2025 08:54:09 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 756F21955E94 for ; Wed, 8 Oct 2025 12:54:08 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id C078B19560B8 for ; Wed, 8 Oct 2025 12:54:07 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928050; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OPUdCYtLtX8AntIfwZ8bpwCy/SjQ6dY6dwS1dkrAkmM=; b=Y9C0a/w9lEAZmaZ5pGVU+tYJMVO8T1VTZ6mu47l38nxELzSQFLMnZh0b70YAtzaqV9rkqr czqZ5J4fHAAgJcmaRzq3SyKRvLae77RBydYOuMuoCDdJI3mROqtg/IcF29xavKRcCgsfMV eVQAcDaLaTuzVKOapNaXLyuy6ALqODs= X-MC-Unique: dbWX06TrNm-CmWOOv_FfwA-1 X-Mimecast-MFC-AGG-ID: dbWX06TrNm-CmWOOv_FfwA_1759928048 To: devel@lists.libvirt.org Subject: [PATCH v2 02/29] src: Drop needless typecast to virDomainTimerNameType Date: Wed, 8 Oct 2025 14:53:34 +0200 Message-ID: <68d1642d4ae9a925cecb7e0540173ff4a853c335.1759927755.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: _GFQdI2Ck8X7yyZ4DU1INd-owwfTjOMF8UGGw6tQ1v0_1759928048 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: PQXM5DZZADTDKXFDKLFBK5BLTJDDH5AU X-Message-ID-Hash: PQXM5DZZADTDKXFDKLFBK5BLTJDDH5AU X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759928326963116600 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik This was missed in v8.10.0-rc1~229 which switched the 'name' member of _virDomainTimerDef struct from int to virDomainTimerNameType. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/libxl/libxl_conf.c | 2 +- src/libxl/xen_common.c | 2 +- src/lxc/lxc_cgroup.c | 2 +- src/lxc/lxc_controller.c | 2 +- src/qemu/qemu_command.c | 6 +++--- src/qemu/qemu_validate.c | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index 9d8301169b..0cbc09b6b0 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -397,7 +397,7 @@ libxlMakeDomBuildInfo(virDomainDef *def, } =20 for (i =3D 0; i < clock.ntimers; i++) { - switch ((virDomainTimerNameType) clock.timers[i]->name) { + switch (clock.timers[i]->name) { case VIR_DOMAIN_TIMER_NAME_TSC: switch (clock.timers[i]->mode) { case VIR_DOMAIN_TIMER_MODE_NATIVE: diff --git a/src/libxl/xen_common.c b/src/libxl/xen_common.c index a050f0ab6e..666c6cae20 100644 --- a/src/libxl/xen_common.c +++ b/src/libxl/xen_common.c @@ -2093,7 +2093,7 @@ xenFormatHypervisorFeatures(virConf *conf, virDomainD= ef *def) } =20 for (i =3D 0; i < def->clock.ntimers; i++) { - switch ((virDomainTimerNameType)def->clock.timers[i]->name) { + switch (def->clock.timers[i]->name) { case VIR_DOMAIN_TIMER_NAME_TSC: switch (def->clock.timers[i]->mode) { case VIR_DOMAIN_TIMER_MODE_NATIVE: diff --git a/src/lxc/lxc_cgroup.c b/src/lxc/lxc_cgroup.c index f566a5468e..1c637be38b 100644 --- a/src/lxc/lxc_cgroup.c +++ b/src/lxc/lxc_cgroup.c @@ -335,7 +335,7 @@ static int virLXCCgroupSetupDeviceACL(virDomainDef *def, if (timer->present =3D=3D VIR_TRISTATE_BOOL_NO) continue; =20 - switch ((virDomainTimerNameType)timer->name) { + switch (timer->name) { case VIR_DOMAIN_TIMER_NAME_PLATFORM: case VIR_DOMAIN_TIMER_NAME_TSC: case VIR_DOMAIN_TIMER_NAME_KVMCLOCK: diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c index fb7f8e0bc2..3f4c8efdcf 100644 --- a/src/lxc/lxc_controller.c +++ b/src/lxc/lxc_controller.c @@ -1502,7 +1502,7 @@ virLXCControllerSetupTimers(virLXCController *ctrl) if (timer->present =3D=3D VIR_TRISTATE_BOOL_NO) continue; =20 - switch ((virDomainTimerNameType)timer->name) { + switch (timer->name) { case VIR_DOMAIN_TIMER_NAME_PLATFORM: case VIR_DOMAIN_TIMER_NAME_TSC: case VIR_DOMAIN_TIMER_NAME_KVMCLOCK: diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 08e2a5147d..f7af92fe35 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6047,7 +6047,7 @@ qemuBuildClockCommandLine(virCommand *cmd, } =20 for (i =3D 0; i < def->clock.ntimers; i++) { - switch ((virDomainTimerNameType)def->clock.timers[i]->name) { + switch (def->clock.timers[i]->name) { case VIR_DOMAIN_TIMER_NAME_PLATFORM: /* qemuDomainDefValidateClockTimers will handle this * error condition */ @@ -6491,7 +6491,7 @@ qemuBuildCpuCommandLine(virCommand *cmd, for (i =3D 0; i < def->clock.ntimers; i++) { virDomainTimerDef *timer =3D def->clock.timers[i]; =20 - switch ((virDomainTimerNameType)timer->name) { + switch (timer->name) { case VIR_DOMAIN_TIMER_NAME_KVMCLOCK: if (timer->present !=3D VIR_TRISTATE_BOOL_ABSENT) { /* QEMU expects on/off -> virTristateSwitch. */ @@ -7200,7 +7200,7 @@ qemuBuildMachineCommandLine(virCommand *cmd, } =20 for (i =3D 0; i < def->clock.ntimers; i++) { - switch ((virDomainTimerNameType)def->clock.timers[i]->name) { + switch (def->clock.timers[i]->name) { case VIR_DOMAIN_TIMER_NAME_HPET: /* qemuBuildClockCommandLine handles the old-style config via = '-no-hpet' */ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_MACHINE_HPET) && diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 7f3ffe8bd5..8dac5c76d0 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -477,7 +477,7 @@ qemuValidateDomainDefClockTimers(const virDomainDef *de= f, for (i =3D 0; i < def->clock.ntimers; i++) { virDomainTimerDef *timer =3D def->clock.timers[i]; =20 - switch ((virDomainTimerNameType)timer->name) { + switch (timer->name) { case VIR_DOMAIN_TIMER_NAME_PLATFORM: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("unsupported timer type (name) '%1$s'"), --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759928477; cv=none; d=zohomail.com; s=zohoarc; b=Qdm25IBhHZA/BKqwxX1Id/EBR7OsBDL8IJmRho95TlOkZC3j0FitF+u3JPH3m7eKZ70v7ypyCkU8ZLC5Ejydyc7/g9T02TfB/7pZ7ZUHCyGmD+1Y/BNTJvoMMlecgmM1FO1KWRAH+j/Qy+Z7QkQFx6AoJ3/9F+jWGSWUdLmmrtw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759928477; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=F4oUS6vzYnXIpLprLQ/T35bn+C5FeIIszYw6GhAmuP8=; b=GeAtMBFXNEJOT5AyqXFoGofl2ulg1h4Ie+qYyEw5vtr5xcWvW35FohKmkZ4zpuN9wtxiKEfdPB7OsxOvw5hLpke26eaEIhphWu02ZO7Rqeb4FeAevYRlw3I9vLwzq4DyrEU/A4aredotgAbnE2FU77B5lucNqsPJ6eGJC92PoIg= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759928477059542.9368057896048; Wed, 8 Oct 2025 06:01:17 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 64C4841B1A; Wed, 8 Oct 2025 09:01:16 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 79F3144350; Wed, 8 Oct 2025 09:00:22 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id E880D41AE6; Wed, 8 Oct 2025 08:54:12 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 3EB7141B30 for ; Wed, 8 Oct 2025 08:54:12 -0400 (EDT) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-678-o6V7KIxXN6i2FZna0y6XeQ-1; Wed, 08 Oct 2025 08:54:10 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 9C07E180048E for ; Wed, 8 Oct 2025 12:54:09 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E744C19560A2 for ; Wed, 8 Oct 2025 12:54:08 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928051; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=F4oUS6vzYnXIpLprLQ/T35bn+C5FeIIszYw6GhAmuP8=; b=h7dYXluRVaNoCzCBMYHeUvja9ZWAGQhjKqGooX7YQC/lSP8dOeVe9L9HGNPu50o4iI94g0 hUgVHh9L1swJDKJDFeRPn0kikX03sg6EuvSYryApBZ8UAZVG0wmQH3vl3oosNIO6WjWGk1 gnqWdoD3ahm6FLTw+g0MxV4O0av9igo= X-MC-Unique: o6V7KIxXN6i2FZna0y6XeQ-1 X-Mimecast-MFC-AGG-ID: o6V7KIxXN6i2FZna0y6XeQ_1759928049 To: devel@lists.libvirt.org Subject: [PATCH v2 03/29] conf: Introduce virDomainDefHasTimer() Date: Wed, 8 Oct 2025 14:53:35 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: hjisxI-vswMYzZYdTJKZUjtKNsJhoOxcScT0Gp7WyDQ_1759928049 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: ADKN2BVOOXOZRKIFYOY6FULWN7QPM4EY X-Message-ID-Hash: ADKN2BVOOXOZRKIFYOY6FULWN7QPM4EY X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759928480326154100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik This is a simple helper to tell whether domain definition has certain type of timer or not. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/conf/domain_conf.c | 17 +++++++++++++++++ src/conf/domain_conf.h | 4 ++++ src/libvirt_private.syms | 1 + 3 files changed, 22 insertions(+) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 281846dfbe..156e43f5cd 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -32517,3 +32517,20 @@ virDomainWatchdogDefFind(const virDomainDef *def, =20 return -1; } + + +bool +virDomainDefHasTimer(const virDomainDef *def, + virDomainTimerNameType name) +{ + size_t i; + + for (i =3D 0; i < def->clock.ntimers; i++) { + if (def->clock.timers[i]->name =3D=3D name && + def->clock.timers[i]->present =3D=3D VIR_TRISTATE_BOOL_YES) { + return true; + } + } + + return false; +} diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 39807b5fe3..9159a69833 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -4727,3 +4727,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainThrottleFilter= Def, virDomainThrottleFilte virDomainThrottleFilterDef * virDomainThrottleFilterFind(const virDomainDiskDef *def, const char *name); + +bool +virDomainDefHasTimer(const virDomainDef *def, + virDomainTimerNameType name); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index fe72402527..7986ad123c 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -346,6 +346,7 @@ virDomainDefHasNVMeDisk; virDomainDefHasOldStyleROUEFI; virDomainDefHasOldStyleUEFI; virDomainDefHasPCIHostdev; +virDomainDefHasTimer; virDomainDefHasUSB; virDomainDefHasVcpusOffline; virDomainDefHasVDPANet; --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759928574; cv=none; d=zohomail.com; s=zohoarc; b=IOqOA9tSXb57L8O2jtTKaSlYwGm+s5uAav8z7eXHBR0A12c1ewy1vxSoww+UXw9HBRVzk+IkcA8mLCzgZsVb+d9tZgwQnbvVehKXtIILWEfYwX8A3Xq8NpthDuO7dVIMr7ih6BXkMrBDi89/VPPunSwbFMncdob1qSU253jtJ0o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759928574; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=12k2RhgGEYQJDmi4VaMknPX4IfPPV2u6oV5xfQdqdjU=; b=oA2vJBjw9/wi+U0U8z+TRfidnwpT7eaVjEcnfsifMb7V+hu/LUC8hbtM4KhC58TbLBmO5exjPt7CuViXtt5rR/cLq5qmTyHxYf9utd5YdEMkF5wLjiCIdFvA8fICxoNgERF8KeNGEYGGg4AeqACJML+6cZD5DlVKpOG69VQNV5o= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759928574651975.807790865288; Wed, 8 Oct 2025 06:02:54 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id ADC673F346; Wed, 8 Oct 2025 09:02:53 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id F2E6E44359; Wed, 8 Oct 2025 09:01:43 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 68CE24418C; Wed, 8 Oct 2025 08:54:14 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 88DAC41B30 for ; Wed, 8 Oct 2025 08:54:13 -0400 (EDT) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-582-Mx7C-EwaPOeFEeYhFzZ1TA-1; Wed, 08 Oct 2025 08:54:11 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id B9BF218002B7 for ; Wed, 8 Oct 2025 12:54:10 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 1095A19560B8 for ; Wed, 8 Oct 2025 12:54:09 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928053; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=12k2RhgGEYQJDmi4VaMknPX4IfPPV2u6oV5xfQdqdjU=; b=HwtEHOp5UdFy8/DE7410YsuAzwP1+EetIdP5DAE50eReKC/1YuvSxV+pZ3PMPd8yVQ8Ylq kFH4GHYNCoEgBgJEbJvxtvqCj8bvz40WJut1cwK64PR0zBWPe9g9hd3AFR7etiF248DQBP zprAjLTaG5jaFzwy1Q0Lga7ylK+NX38= X-MC-Unique: Mx7C-EwaPOeFEeYhFzZ1TA-1 X-Mimecast-MFC-AGG-ID: Mx7C-EwaPOeFEeYhFzZ1TA_1759928050 To: devel@lists.libvirt.org Subject: [PATCH v2 04/29] qemuxmlconfdata: Adjust hv-stimer related tests Date: Wed, 8 Oct 2025 14:53:36 +0200 Message-ID: <499644ce67dd9884ea62df0cc2f75e459f2f15ec.1759927755.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: l3AjSgrXhK1eMQWMstnMtzCekinj-zji4RtApHh9L_Q_1759928050 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: MVWLQYL5IY2TMC3FYLBZBCRQ2H4YMLZR X-Message-ID-Hash: MVWLQYL5IY2TMC3FYLBZBCRQ2H4YMLZR X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759928583510116600 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik In QEMU, hv-stimer and hv-stimer-direct require hv-time. Reflect this fact in our tests. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- tests/qemuxmlconfdata/hyperv-stimer-direct.x86_64-latest.args | 2 +- tests/qemuxmlconfdata/hyperv-stimer-direct.x86_64-latest.xml | 4 +++- tests/qemuxmlconfdata/hyperv-stimer-direct.xml | 4 +++- tests/qemuxmlconfdata/hyperv.x86_64-latest.args | 2 +- tests/qemuxmlconfdata/hyperv.x86_64-latest.xml | 4 +++- tests/qemuxmlconfdata/hyperv.xml | 4 +++- 6 files changed, 14 insertions(+), 6 deletions(-) diff --git a/tests/qemuxmlconfdata/hyperv-stimer-direct.x86_64-latest.args = b/tests/qemuxmlconfdata/hyperv-stimer-direct.x86_64-latest.args index b665e5365d..0a6d84fbd2 100644 --- a/tests/qemuxmlconfdata/hyperv-stimer-direct.x86_64-latest.args +++ b/tests/qemuxmlconfdata/hyperv-stimer-direct.x86_64-latest.args @@ -12,7 +12,7 @@ XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGue= st1/.config \ -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/va= r/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \ -machine pc,usb=3Doff,dump-guest-core=3Doff,memory-backend=3Dpc.ram,acpi= =3Don \ -accel tcg \ --cpu qemu64,hv-vpindex=3Don,hv-synic=3Don,hv-stimer=3Don,hv-stimer-direct= =3Don \ +-cpu qemu64,hv-time=3Don,hv-vpindex=3Don,hv-synic=3Don,hv-stimer=3Don,hv-s= timer-direct=3Don \ -m size=3D219136k \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}'= \ -overcommit mem-lock=3Doff \ diff --git a/tests/qemuxmlconfdata/hyperv-stimer-direct.x86_64-latest.xml b= /tests/qemuxmlconfdata/hyperv-stimer-direct.x86_64-latest.xml index efb9d0072e..5f6223bf3e 100644 --- a/tests/qemuxmlconfdata/hyperv-stimer-direct.x86_64-latest.xml +++ b/tests/qemuxmlconfdata/hyperv-stimer-direct.x86_64-latest.xml @@ -21,7 +21,9 @@ qemu64 - + + + destroy restart destroy diff --git a/tests/qemuxmlconfdata/hyperv-stimer-direct.xml b/tests/qemuxml= confdata/hyperv-stimer-direct.xml index 21163b41ad..4116b7a450 100644 --- a/tests/qemuxmlconfdata/hyperv-stimer-direct.xml +++ b/tests/qemuxmlconfdata/hyperv-stimer-direct.xml @@ -18,7 +18,9 @@ - + + + destroy restart destroy diff --git a/tests/qemuxmlconfdata/hyperv.x86_64-latest.args b/tests/qemuxm= lconfdata/hyperv.x86_64-latest.args index 5a32b80e71..30d63bae6b 100644 --- a/tests/qemuxmlconfdata/hyperv.x86_64-latest.args +++ b/tests/qemuxmlconfdata/hyperv.x86_64-latest.args @@ -12,7 +12,7 @@ XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGue= st1/.config \ -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/va= r/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \ -machine pc,usb=3Doff,dump-guest-core=3Doff,memory-backend=3Dpc.ram,acpi= =3Don \ -accel tcg \ --cpu 'qemu64,hv-relaxed=3Don,hv-vapic=3Don,hv-spinlocks=3D0x2fff,hv-vpinde= x=3Don,hv-runtime=3Don,hv-synic=3Don,hv-stimer=3Don,hv-reset=3Don,hv-vendor= -id=3DKVM Hv,hv-frequencies=3Don,hv-reenlightenment=3Don,hv-tlbflush=3Don,h= v-tlbflush-direct=3Don,hv-tlbflush-ext=3Don,hv-ipi=3Don,hv-evmcs=3Don,hv-av= ic=3Don,hv-emsr-bitmap=3Don,hv-xmm-input=3Don' \ +-cpu 'qemu64,hv-time=3Don,hv-relaxed=3Don,hv-vapic=3Don,hv-spinlocks=3D0x2= fff,hv-vpindex=3Don,hv-runtime=3Don,hv-synic=3Don,hv-stimer=3Don,hv-reset= =3Don,hv-vendor-id=3DKVM Hv,hv-frequencies=3Don,hv-reenlightenment=3Don,hv-= tlbflush=3Don,hv-tlbflush-direct=3Don,hv-tlbflush-ext=3Don,hv-ipi=3Don,hv-e= vmcs=3Don,hv-avic=3Don,hv-emsr-bitmap=3Don,hv-xmm-input=3Don' \ -m size=3D219136k \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}'= \ -overcommit mem-lock=3Doff \ diff --git a/tests/qemuxmlconfdata/hyperv.x86_64-latest.xml b/tests/qemuxml= confdata/hyperv.x86_64-latest.xml index 49537188af..ee412164ed 100644 --- a/tests/qemuxmlconfdata/hyperv.x86_64-latest.xml +++ b/tests/qemuxmlconfdata/hyperv.x86_64-latest.xml @@ -36,7 +36,9 @@ qemu64 - + + + destroy restart destroy diff --git a/tests/qemuxmlconfdata/hyperv.xml b/tests/qemuxmlconfdata/hyper= v.xml index 8c323f6578..44aec004a8 100644 --- a/tests/qemuxmlconfdata/hyperv.xml +++ b/tests/qemuxmlconfdata/hyperv.xml @@ -33,7 +33,9 @@ - + + + destroy restart destroy --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759928679; cv=none; d=zohomail.com; s=zohoarc; b=ZRAtUSUQZ5YJXs0CWeR+DhubfPILZ4YFYohD7ZJszTaZqZLAt2ND0hwYhMgsHsTMmRjNyNAQDp06Po5xA4hB99FaODP7J5syz9f5haxw1dr4OapI5E/zlMwhmJXgaYxvNxabWazKarroH/AcxgC3xocPFBc4EinV5URIzuHrGj8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759928679; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=DRMRIc75YoyQ1hPp6Ke5Gd2mYkVWSE6hSvJXdJ7M+pQ=; b=bgLxiZru/YR4lcrXrwHfOP/lxb+V2GVDu5CM6Fm8A7cOODZK/G7SjbBWpbO2GsfhppnbiMGCfVPVU5WyXakKwpUQX6h/upwtnONv86AXRIBgc1b2vP1QNDNb9tIrIzMWcA3iDt03jWUkVzpu/+8PeZhrQ9VUdvNaRJTqTK/hWSk= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 175992867936337.79127343341361; Wed, 8 Oct 2025 06:04:39 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 6D85E41AB1; Wed, 8 Oct 2025 09:04:38 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 140BC44260; Wed, 8 Oct 2025 09:03:39 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id B1BC741B4B; Wed, 8 Oct 2025 08:54:19 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 8523141B43 for ; Wed, 8 Oct 2025 08:54:14 -0400 (EDT) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-571-nEgWi97tP3yyHyM8OjR90A-1; Wed, 08 Oct 2025 08:54:12 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D6C70180034A for ; Wed, 8 Oct 2025 12:54:11 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 2DF5719560A2 for ; Wed, 8 Oct 2025 12:54:10 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928054; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=DRMRIc75YoyQ1hPp6Ke5Gd2mYkVWSE6hSvJXdJ7M+pQ=; b=cccJ4uft6rZjClMGdTJsY1J6uuDVWzXbK0Hf0rL/dM1/HA/wAyViC6ggwPw9ZwzebqVqYI uySgS48qDZjL+pjD3w+7oK6/Xku/9+gAIOvvFV6890eEB0HWNb+UHh1/SaKJNAuL1f9VNg FEbnb5VG6NzGng4q39dr2VV7arcZM4c= X-MC-Unique: nEgWi97tP3yyHyM8OjR90A-1 X-Mimecast-MFC-AGG-ID: nEgWi97tP3yyHyM8OjR90A_1759928051 To: devel@lists.libvirt.org Subject: [PATCH v2 05/29] qemu_validate: Reflect dependencies of hv-synic Date: Wed, 8 Oct 2025 14:53:37 +0200 Message-ID: <9f71fd0d7903b45cb98938d7377ec446d4997c3c.1759927755.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: jUPEJpFmvYVXh2HejaNnQR8vwBddwcSkzipiVvniQSk_1759928051 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 742VLJ3QIXVXYCKSXNXXRVKU6YE77QWZ X-Message-ID-Hash: 742VLJ3QIXVXYCKSXNXXRVKU6YE77QWZ X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759928681311154100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Per QEMU documentation (docs/system/i386/hyperv.rst): ``hv-synic`` Enables Hyper-V Synthetic interrupt controller Requires: ``hv-vpindex`` Reflect this dependency when validating domain definition. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_validate.c | 42 ++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 8dac5c76d0..279f72f50a 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -88,6 +88,38 @@ qemuValidateDomainDefPSeriesFeature(const virDomainDef *= def, } =20 =20 +#define CHECK_HV_FEAT(feat, requires) \ + if (def->hyperv_features[feat] =3D=3D VIR_TRISTATE_SWITCH_ON && \ + def->hyperv_features[requires] !=3D VIR_TRISTATE_SWITCH_ON) { \ + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, \ + _("'%1$s' hyperv feature requires '%2$s' feature"),= \ + virDomainHypervTypeToString(feat), \ + virDomainHypervTypeToString(requires)); \ + return -1; \ + } + +static int +qemuValidateDomainDefHypervFeatures(const virDomainDef *def) +{ + if (def->features[VIR_DOMAIN_FEATURE_HYPERV] =3D=3D VIR_DOMAIN_HYPERV_= MODE_NONE) + return 0; + + if (!ARCH_IS_X86(def->os.arch) && !qemuDomainIsARMVirt(def)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Hyperv features are not supported for architectu= re '%1$s' or machine type '%2$s'"), + virArchToString(def->os.arch), + def->os.machine); + return -1; + } + + CHECK_HV_FEAT(VIR_DOMAIN_HYPERV_SYNIC, VIR_DOMAIN_HYPERV_VPINDEX); + + return 0; +} + +#undef CHECK_HV_FEAT + + static int qemuValidateDomainDefFeatures(const virDomainDef *def, virQEMUCaps *qemuCaps) @@ -187,14 +219,8 @@ qemuValidateDomainDefFeatures(const virDomainDef *def, break; =20 case VIR_DOMAIN_FEATURE_HYPERV: - if (def->features[i] !=3D VIR_DOMAIN_HYPERV_MODE_NONE && - !ARCH_IS_X86(def->os.arch) && !qemuDomainIsARMVirt(def)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("Hyperv features are not supported for ar= chitecture '%1$s' or machine type '%2$s'"), - virArchToString(def->os.arch), - def->os.machine); - return -1; - } + if (qemuValidateDomainDefHypervFeatures(def) < 0) + return -1; break; =20 case VIR_DOMAIN_FEATURE_PMU: --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759928758; cv=none; d=zohomail.com; s=zohoarc; b=eIo7JDiBtG6aXe2j4e8ikRVyAQ6uJrgaYz6Mu6cVXtK1Q34oauSvyjtl6Vp2sp2giBbv5wP331CJdfi3v715dJXSM3sMB5jFUnO5XMA/JfLq/kTlSddP6idsktk+leOy07mXwNx+q8t5qiKBbdz2XB36yTSLwuTObagbE7j5Mb8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759928758; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=55sB9vEHZmpvCvdCCp3CCTNPAB9K6M0ZUkELZ4CFY/E=; b=dYB2vnshY7EC46RTvvswqz8s+JPjIbVAgNLTqeU1ESu6Bwn3KY/MHV+CI4vhdW91N983q1c64qASm9AXmXu4D2hNT5yX9ARZFvhJsQQUn1S5TLubbYJV9gg+CdYXa40wEWBtrlVsVWf0i1RDfs1vbk4Bf/laLBgyrAKroAw18OQ= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759928758585303.6797437015442; Wed, 8 Oct 2025 06:05:58 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 98652418C9; Wed, 8 Oct 2025 09:05:57 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 80D454438B; Wed, 8 Oct 2025 09:04:54 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 6BED444310; Wed, 8 Oct 2025 08:54:23 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 B0FDD441DC for ; Wed, 8 Oct 2025 08:54:15 -0400 (EDT) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-595-_sRTAfaYOTmJt84AmJm0ow-1; Wed, 08 Oct 2025 08:54:13 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 011A218002CE for ; Wed, 8 Oct 2025 12:54:13 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 4B82319560A2 for ; Wed, 8 Oct 2025 12:54:12 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928055; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=55sB9vEHZmpvCvdCCp3CCTNPAB9K6M0ZUkELZ4CFY/E=; b=AVXPa5JIzMgLAj5Qu4SlU9a6LwfeKJG037opwnEsF/6qWhE5LyUxLuo3uQwZ+lx6unohHA wJR5UhFxT6J7yO3QH3+5q2+R5QKxsFhw2rxF16KfIFzRlfgy4mxc+vgHhGL9lPeNlLSJ8X n2eni/fIpOuiNWWkxlshkT4BxWhfrGI= X-MC-Unique: _sRTAfaYOTmJt84AmJm0ow-1 X-Mimecast-MFC-AGG-ID: _sRTAfaYOTmJt84AmJm0ow_1759928053 To: devel@lists.libvirt.org Subject: [PATCH v2 06/29] qemu_validate: Reflect dependencies of hv-stimer Date: Wed, 8 Oct 2025 14:53:38 +0200 Message-ID: <6dfe7d1e693d36f66c69ecb2dd339bf2e20b43d4.1759927755.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: d5iuv64crNb2MFV4JJ5aT1lyNhzVUjSMg4XewruSK4o_1759928053 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: TRUTWDSFYV53ODBPPQHSZ3KDFOPVSZAN X-Message-ID-Hash: TRUTWDSFYV53ODBPPQHSZ3KDFOPVSZAN X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759928759747116600 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Per QEMU documentation (docs/system/i386/hyperv.rst): ``hv-stimer`` Enables Hyper-V synthetic timers. Requires: ``hv-vpindex``, ``hv-synic``, ``hv-time`` Reflect these dependencies when validating domain definition. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_validate.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 279f72f50a..60bf623716 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -114,6 +114,19 @@ qemuValidateDomainDefHypervFeatures(const virDomainDef= *def) =20 CHECK_HV_FEAT(VIR_DOMAIN_HYPERV_SYNIC, VIR_DOMAIN_HYPERV_VPINDEX); =20 + if (def->hyperv_features[VIR_DOMAIN_HYPERV_STIMER] =3D=3D VIR_TRISTATE= _SWITCH_ON) { + if (!virDomainDefHasTimer(def, VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK))= { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("'%1$s' hyperv feature requires '%2$s' timer"= ), + virDomainHypervTypeToString(VIR_DOMAIN_HYPERV_S= TIMER), + virDomainTimerNameTypeToString(VIR_DOMAIN_TIMER= _NAME_HYPERVCLOCK)); + return -1; + } + } + + CHECK_HV_FEAT(VIR_DOMAIN_HYPERV_STIMER, VIR_DOMAIN_HYPERV_VPINDEX); + CHECK_HV_FEAT(VIR_DOMAIN_HYPERV_STIMER, VIR_DOMAIN_HYPERV_SYNIC); + return 0; } =20 --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759929005; cv=none; d=zohomail.com; s=zohoarc; b=ftcfQqwUHzNm6BaADXeceO9a62kM1O36RnLJQgQ+8q+WBBVB5FidbTKCRxp6fOepZfG/56B9bQ6LGp+eN136wuI9ipmDOiKVCpLanVeVFAZLVKNfn5d1ChuxkOTJCDQNvUgqZjUBGPFqx0MICkHQ87J+QDRfTcEpoxDNRD75Gcg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759929005; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=rR9/CZ7sO/c487Ihr2q/vKJLvvxp8F6vHfOf8g+WiOA=; b=W/QCWGqyePJ43dE4EA0PUpzYJ7ga3MYuSp0JWpZefWKVpNBA8os9aVrrv6ylLXX+xFog3uUKKI8EgDYABrxr1eXKevB7C7WDvD6dGnP8Eraos2nscS+8vdJVm9GPJjNlSkkf6T9hZ4J9X9b/0/MwLuziYm0qVRA6L7ELkPQMSXY= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 175992900548789.24214559971244; Wed, 8 Oct 2025 06:10:05 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id C171B4433B; Wed, 8 Oct 2025 09:10:04 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 7ED234425B; Wed, 8 Oct 2025 09:09:00 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 0BC4044239; Wed, 8 Oct 2025 08:54:32 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 C00B44422F for ; Wed, 8 Oct 2025 08:54:16 -0400 (EDT) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-664-s7wm_g5OOdGo712I4iroXg-1; Wed, 08 Oct 2025 08:54:14 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 286E2180047F for ; Wed, 8 Oct 2025 12:54:14 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6920E19560A2 for ; Wed, 8 Oct 2025 12:54:13 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928056; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=rR9/CZ7sO/c487Ihr2q/vKJLvvxp8F6vHfOf8g+WiOA=; b=aQzENG2FRWW/sSXc/oY1nxVfLBAT2Gh1ROIkZ0LnssFfeXTssYuo2W7WCiaEhpnB0z6R4m xZmck0x1LAJHBECbsaIGW5ELMeXz0lfMnDlmmthOyQybUXrvL6Iu9S+MPEUN6UzzocBG5T CLZaFi+SchIwsu7S9Lr73wfFSWgMG7c= X-MC-Unique: s7wm_g5OOdGo712I4iroXg-1 X-Mimecast-MFC-AGG-ID: s7wm_g5OOdGo712I4iroXg_1759928054 To: devel@lists.libvirt.org Subject: [PATCH v2 07/29] qemu_validate: Reflect dependencies of hv-tlbflush Date: Wed, 8 Oct 2025 14:53:39 +0200 Message-ID: <04b878637d6be3865a51f21a06b70276d47c53b2.1759927755.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: y8i6psIDJby0DqUVwrWjHSQw0aQssDbJS45RnZNQRU4_1759928054 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: WMRY3YBIEGQJB6RAY6S2TMJKGITJVAMF X-Message-ID-Hash: WMRY3YBIEGQJB6RAY6S2TMJKGITJVAMF X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759929007297154100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Per QEMU documentation (docs/system/i386/hyperv.rst): ``hv-tlbflush`` Enables paravirtualized TLB shoot-down mechanism. Requires: ``hv-vpindex`` Reflect this dependency when validating domain definition. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_validate.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 60bf623716..38cac4dc72 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -127,6 +127,8 @@ qemuValidateDomainDefHypervFeatures(const virDomainDef = *def) CHECK_HV_FEAT(VIR_DOMAIN_HYPERV_STIMER, VIR_DOMAIN_HYPERV_VPINDEX); CHECK_HV_FEAT(VIR_DOMAIN_HYPERV_STIMER, VIR_DOMAIN_HYPERV_SYNIC); =20 + CHECK_HV_FEAT(VIR_DOMAIN_HYPERV_TLBFLUSH, VIR_DOMAIN_HYPERV_VPINDEX); + return 0; } =20 --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759929072; cv=none; d=zohomail.com; s=zohoarc; b=cgjg6SrRKDCfJqMKIwpuzFyqXD6+IUX05xoOJHEHYcRcg3NyO9NkNtTAJge2NXDOrQyl6d+mC26VUHoP509+u1Kk9Rbe5zMB/DcHSuuFkHad7SjTUglYPmBLNLpnCCTuWiNj0XB6dMIAVFEvH7ov6+KhiE9UTENjqKt9VMhfSfI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759929072; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=MD2B6j/rpAU3/BdI+Z+i4XmlrDjWvy77eXHA+RZ1hpg=; b=RCR+Heh4dD1e2g/3BT+cSNXHZ+H66KofBIei5QpKih19fS3elO32mfCZvX8LgcDPwiPCBxjhAubVlJ6RJekPCa6fZ7r2T3Q+/NdthojQuYzC5MVWol/373arBZEVpeTKv3Nu4b/vPQIeZzsYi/VH6HAY0mKAg8LSxx6NnQ2Bchg= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759929072445285.5046316383432; Wed, 8 Oct 2025 06:11:12 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id D6DC14431B; Wed, 8 Oct 2025 09:11:11 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id D880B443B4; Wed, 8 Oct 2025 09:09:38 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 74BC2442FF; Wed, 8 Oct 2025 08:54:42 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 B6B3C44261 for ; Wed, 8 Oct 2025 08:54:17 -0400 (EDT) Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-626-SV3J47XmOueSuRf9z1GhVw-1; Wed, 08 Oct 2025 08:54:16 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 4EFBD1956078 for ; Wed, 8 Oct 2025 12:54:15 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 9112C19560A2 for ; Wed, 8 Oct 2025 12:54:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928057; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MD2B6j/rpAU3/BdI+Z+i4XmlrDjWvy77eXHA+RZ1hpg=; b=LHysgX/+k+EYF8XfvxKIQMhnW8frU5ijcfZwqCJ9ZetjrWv4+03H4BJzCJvIgoH85Yti6q Zg0hAspu8L2RnA6fxC3OMqXgpWPJEbTPBbuyEdmJ6bBSUyyiLJknvvBMmiz8kG0vNU0oMQ hFBdqN9VRV+JrT+PWIk3M4oQ+AKCs0w= X-MC-Unique: SV3J47XmOueSuRf9z1GhVw-1 X-Mimecast-MFC-AGG-ID: SV3J47XmOueSuRf9z1GhVw_1759928055 To: devel@lists.libvirt.org Subject: [PATCH v2 08/29] qemu_validate: Reflect dependencies of hv-ipi Date: Wed, 8 Oct 2025 14:53:40 +0200 Message-ID: <1c1377b37b53bfec6d12539ccef87ec953d28900.1759927755.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: -HCsvFhNzwP1Q8jYLxNVTNuKPmt4gNkyo8Eji1a6JvI_1759928055 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: SEBO6PLKXFHDAQP7PHD7AMBNZ753S455 X-Message-ID-Hash: SEBO6PLKXFHDAQP7PHD7AMBNZ753S455 X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759929073858154100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Per QEMU documentation (docs/system/i386/hyperv.rst): ``hv-ipi`` Enables paravirtualized IPI send mechanism. Requires: ``hv-vpindex`` Reflect this dependency when validating domain definition. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_validate.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 38cac4dc72..f274e4f126 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -129,6 +129,8 @@ qemuValidateDomainDefHypervFeatures(const virDomainDef = *def) =20 CHECK_HV_FEAT(VIR_DOMAIN_HYPERV_TLBFLUSH, VIR_DOMAIN_HYPERV_VPINDEX); =20 + CHECK_HV_FEAT(VIR_DOMAIN_HYPERV_IPI, VIR_DOMAIN_HYPERV_VPINDEX); + return 0; } =20 --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759929140; cv=none; d=zohomail.com; s=zohoarc; b=ZG37EaAd1Uf5b5odtdpH64FTtZ4Y2SokeRJKt+UluyowqqHIsXN8NhbtdmtdW7PKe/ccono1eCp9/7NlAvalcCLk51PvdWwRcKTjGbDEoFprcRLnpUcRHN4F8IscDIiPttSnQGWo+e32E0Trd+6UXAyCmL1LFb7xdYQu5HCK4J0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759929140; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=nydP7+922PGBCa4Od4ks6ev0uKaNfE+RKqPxFEq8MNQ=; b=FaZAB4P3iwP9IFN548IKgP9Ocw0hTa0XmsSq8s5Z8ofEO7DKZjO/uPDgrBYa3wri+Iw0JDNZgXlDNGvcEdmLRTa4GgzcohbdDilSjUze57lWylXXagO3MlMaviohf/AGlm4eRsbUKysJcWf/6LNDgfsxU+R4KVEVxezO0QSjxWw= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759929140980528.677709118133; Wed, 8 Oct 2025 06:12:20 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 099A74431B; Wed, 8 Oct 2025 09:12:16 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 3F37D443F4; Wed, 8 Oct 2025 09:09:49 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id D60154433A; Wed, 8 Oct 2025 08:54:48 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 43204442D8 for ; Wed, 8 Oct 2025 08:54:19 -0400 (EDT) Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-645-UqlzmgfkPpieNeiaNZnKSw-1; Wed, 08 Oct 2025 08:54:17 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 77218195608C for ; Wed, 8 Oct 2025 12:54:16 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B8BDB19560A2 for ; Wed, 8 Oct 2025 12:54:15 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928058; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nydP7+922PGBCa4Od4ks6ev0uKaNfE+RKqPxFEq8MNQ=; b=OGMaAx7riUog8tzGNpVzs8fUFTixmDzQe3sRyMvUP608Qs5Aetk9YDICMjd45xurVAuHyK R/ymUtmaGyHHf4ka6hDmM5q+uEkcP/eJlmyGxc6P6ygfKVthF03J77G8OsHeLqVbZNVKLn m4yVhhfZBzB6Wn7gYrSRWV3YffPuzFs= X-MC-Unique: UqlzmgfkPpieNeiaNZnKSw-1 X-Mimecast-MFC-AGG-ID: UqlzmgfkPpieNeiaNZnKSw_1759928056 To: devel@lists.libvirt.org Subject: [PATCH v2 09/29] qemu_validate: Reflect dependencies of hv-evmcs Date: Wed, 8 Oct 2025 14:53:41 +0200 Message-ID: <0e9ba1333e7c877617a73f21818223beea855ed7.1759927755.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: zpgcZQzU_sTMSXpLjEOxS-um0v4PF76tT-Z4H2a08lw_1759928056 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: YTTKKFGO6TTBK33J62LRJFI6GMCVDSG7 X-Message-ID-Hash: YTTKKFGO6TTBK33J62LRJFI6GMCVDSG7 X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759929143239116600 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Per QEMU documentation (docs/system/i386/hyperv.rst): ``hv-evmcs`` The enlightenment is nested specific, it targets Hyper-V on KVM guests. <= snip/> Requires: ``hv-vapic`` Reflect this dependency when validating domain definition. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_validate.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index f274e4f126..3dbb00c23a 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -131,6 +131,8 @@ qemuValidateDomainDefHypervFeatures(const virDomainDef = *def) =20 CHECK_HV_FEAT(VIR_DOMAIN_HYPERV_IPI, VIR_DOMAIN_HYPERV_VPINDEX); =20 + CHECK_HV_FEAT(VIR_DOMAIN_HYPERV_EVMCS, VIR_DOMAIN_HYPERV_VAPIC); + return 0; } =20 --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759929219; cv=none; d=zohomail.com; s=zohoarc; b=AISy9HIZGa5lcKGdDFjyWFVzGzpRx4DL9yocyqijjyGanPIwDYLtNdVVdexIdpVX5haQBokhiIHocrh3w9vmYs7cBQFex5ae6vrNA/CntB6XO6cKslv7Sx5HfF6s+CvtwD9PmAHwTtJ1OqFY7brbj4N1p0DAEyW6cfNjqdSYNWM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759929219; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=tm8aNZoYzoAJ3cTZDmMJDHZBhxGWmywo7zjZdLBFDBA=; b=JHS1/z/xMe7SkQSbKjQdT9IOHljIEd3wLS763YCl9t0VZn5VMYjxBTveYWL6hoE7+8pFJXX6kxIs1JexejIMEzh0Lb1Tb3n+31An3WXZYzs6JVHZE4nLZUqJbcK4qEPzhMpbWA7oHnnNZoaVmpaPe6xM1HfGE197xVtoIe5+gt4= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759929219898458.3865670515984; Wed, 8 Oct 2025 06:13:39 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 089FD41A3E; Wed, 8 Oct 2025 09:13:34 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 74B0444476; Wed, 8 Oct 2025 09:09:55 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id A26FE41B47; Wed, 8 Oct 2025 08:54:56 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 2237544133 for ; Wed, 8 Oct 2025 08:54:21 -0400 (EDT) Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-609-HL06nLzBM3SB32QIDnWLCg-1; Wed, 08 Oct 2025 08:54:18 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 9408B1956054 for ; Wed, 8 Oct 2025 12:54:17 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E02B019560A2 for ; Wed, 8 Oct 2025 12:54:16 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928060; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tm8aNZoYzoAJ3cTZDmMJDHZBhxGWmywo7zjZdLBFDBA=; b=Zw+9noQh04FC/4oEr/NgV2Pfc2TJcFuDKnvfoiLP8oXYFCYSSi1bxDkp1p7yegPCn/DuBF jA/WGN9NXVFlN66/9zGq608BlxuY+LSTFPxK3VNeNSLA4PmXTTZBu4W/Dz56zCbmjKSnUe 0+QOs3e/OR03jAlm0Db8yl8q7eO15SI= X-MC-Unique: HL06nLzBM3SB32QIDnWLCg-1 X-Mimecast-MFC-AGG-ID: HL06nLzBM3SB32QIDnWLCg_1759928057 To: devel@lists.libvirt.org Subject: [PATCH v2 10/29] qemu_validate: Reflect dependencies of hv-tlbflush-direct Date: Wed, 8 Oct 2025 14:53:42 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: Q2IS6XJSXpVqOTovlCu5ORbCD8G1XNleqEuzno204yY_1759928057 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: ISOQXGJCWSGNG23AJP7JNEIVSOK6JQPA X-Message-ID-Hash: ISOQXGJCWSGNG23AJP7JNEIVSOK6JQPA X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759929222219116600 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Per QEMU documentation (docs/system/i386/hyperv.rst): ``hv-tlbflush-direct`` The enlightenment is nested specific, it targets Hyper-V on KVM guests. <= snip/> Requires: ``hv-vapic`` Reflect this dependency when validating domain definition. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_validate.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 3dbb00c23a..930ba3543f 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -133,6 +133,17 @@ qemuValidateDomainDefHypervFeatures(const virDomainDef= *def) =20 CHECK_HV_FEAT(VIR_DOMAIN_HYPERV_EVMCS, VIR_DOMAIN_HYPERV_VAPIC); =20 + if (def->hyperv_features[VIR_DOMAIN_HYPERV_TLBFLUSH] =3D=3D VIR_TRISTA= TE_SWITCH_ON && + def->hyperv_tlbflush_direct =3D=3D VIR_TRISTATE_SWITCH_ON) { + if (def->hyperv_features[VIR_DOMAIN_HYPERV_VAPIC] !=3D VIR_TRISTAT= E_SWITCH_ON) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("'%1$s' hyperv feature requires '%2$s' featur= e"), + VIR_CPU_x86_HV_TLBFLUSH_DIRECT, + virDomainHypervTypeToString(VIR_DOMAIN_HYPERV_V= APIC)); + return -1; + } + } + return 0; } =20 --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759929367; cv=none; d=zohomail.com; s=zohoarc; b=N7SKQhu/OoIRYi1+/HreER/GrKS3HAF9hhv9PoaxkBa9U26C+QMhpXYpr0R8niTRrmP7SU8x+IikLXafu3/Jl+EyOs5dHsOn0p8L829rgzGVy4yCftLdawi/oLLwvWslK5PExw7OLtIouDlMeU0lbbEr80jtQE4vae1dGd/jCzg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759929367; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=0vl9/llKkSLdRhYRoqdeMlw9aDkfkVOmwIAJyagy+PI=; b=D3FxwjAF6Zjph7Kk0S4VZXRBIhTWjq3TxHerXsl4U6HcjirC7pSh6xV9UAOXt8/EV0sBtuoqBGjlYUZjKOTdodDYoHohWhatquoBF/mYjaQ2cs7YIeUPdn0tEOMWld7I5qLrL/rDQs95t68ohfvtY+G8gVDUSE7c+Bdw6+rSGtg= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759929367360336.48530682288344; Wed, 8 Oct 2025 06:16:07 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 3CEAB4430D; Wed, 8 Oct 2025 09:16:05 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id AD51D445C8; Wed, 8 Oct 2025 09:10:16 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 5FF3044144; Wed, 8 Oct 2025 08:55:35 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 7D73C44338 for ; Wed, 8 Oct 2025 08:54:22 -0400 (EDT) Received: from mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-349-6Nf7fuE2NmqFBUJjLVd6lQ-1; Wed, 08 Oct 2025 08:54:20 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id BC53619560B1 for ; Wed, 8 Oct 2025 12:54:18 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 0994C19560A2 for ; Wed, 8 Oct 2025 12:54:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928062; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0vl9/llKkSLdRhYRoqdeMlw9aDkfkVOmwIAJyagy+PI=; b=MLIBGyeIXlnBHv6a+1X7aWnzGtQsVwTEDIdnVjhmbO1yUsGReb5wrqy+a7TzNKXgSOaquK o1BQtR9Je5aFnKbo4G9ZH2aTzHCIz4BqL+KfNQtSNriJjSCnf4NbAmIW1iwdzAZNFGBHOl 6HowYVk8ZQAqaWnUUweo+/uGV9Vj3IM= X-MC-Unique: 6Nf7fuE2NmqFBUJjLVd6lQ-1 X-Mimecast-MFC-AGG-ID: 6Nf7fuE2NmqFBUJjLVd6lQ_1759928058 To: devel@lists.libvirt.org Subject: [PATCH v2 11/29] NEWS: Document Hyper-V enlightenment validation Date: Wed, 8 Oct 2025 14:53:43 +0200 Message-ID: <526a0db0895cd010e30ddf1bd18f712f8b602682.1759927755.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: xsfeSYh8P0M7Aurtw0h-ea3gBm9HHjhKtlJyme5Fc_Y_1759928058 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 776OVEX2CIN5UKW2SBBWA2M7OSQUSFTB X-Message-ID-Hash: 776OVEX2CIN5UKW2SBBWA2M7OSQUSFTB X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759929368187116600 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- NEWS.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/NEWS.rst b/NEWS.rst index 006b2ccf6a..c44203bcc1 100644 --- a/NEWS.rst +++ b/NEWS.rst @@ -25,6 +25,11 @@ v11.9.0 (unreleased) Intel-specific USB controllers are relegated to x86 guests, and model selection overall behaves more consistently across architectures. =20 + * qemu: Validate Hyper-V enlightenment dependencies + + Some Hyper-V enlightenments may require some other enlightenments to be + turned on. Libvirt now validates these when defining new domains. + * **Bug fixes** =20 =20 --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759929293; cv=none; d=zohomail.com; s=zohoarc; b=Tk6iSMsgxWlzNTOecvj57KM3GQJkl5rIUv8wb7e7oXLBm5xGPyTJCXM2/g6DnCWL1336TK1qmpBkD2quKBo+Ad/Gf0/iHbRo6c1jBG3+f0rIVwIr3Pg81NjzvTdEIGLr3uS6n+0vMgiQnbc+xfidNDd2cBY9mEDcZjsZF9gu39M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759929293; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=I/VU8Gy9jTXoxq1uqHTE6NY0jDzbX/9/fE7KwDOBG5A=; b=bFj4fz1T/Z9hSrPNj0EDX70UialG0P5PbGqVrdJ8U8fRAwpcb68cEBaLfHFkmJWMmx97PovvLB3bEB8zs9VzpFEVLfonMUR0RjVhQ+Uonv3wtdny2dxJa2s2Rc3NXaY0c79vgGE4VlQ2QlAal/0t9akyqS+TorYEfTjq8MShu1o= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 175992929300789.47063018562403; Wed, 8 Oct 2025 06:14:53 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 5806444381; Wed, 8 Oct 2025 09:14:52 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id EA5F244264; Wed, 8 Oct 2025 09:10:04 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 6CD7C44263; Wed, 8 Oct 2025 08:55:13 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 216F544329 for ; Wed, 8 Oct 2025 08:54:22 -0400 (EDT) Received: from mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-689-Q0Ih7-wzPi-pM8yzAu-aBA-1; Wed, 08 Oct 2025 08:54:20 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id E20E21955F2B for ; Wed, 8 Oct 2025 12:54:19 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 38F4419560A2 for ; Wed, 8 Oct 2025 12:54:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928061; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=I/VU8Gy9jTXoxq1uqHTE6NY0jDzbX/9/fE7KwDOBG5A=; b=fkvrFDXded0I+xkL6jk/DYYn7m+wBEwHpUUXLUqhy6bKUoRZas+R1/OQ2JVp5JgrKpBJWl w6nXiSXLqj3c5SEUQdZgOanOF7NyTGkLTh/ZjyI2WC5fCnHWMEpi/+I+AdE6T/r9xhyadW 9Q0Ji2RfO0h+blAbhavh5x/dc1Z+I/w= X-MC-Unique: Q0Ih7-wzPi-pM8yzAu-aBA-1 X-Mimecast-MFC-AGG-ID: Q0Ih7-wzPi-pM8yzAu-aBA_1759928060 To: devel@lists.libvirt.org Subject: [PATCH v2 12/29] virxml: Introduce virXPathTristateSwitch() Date: Wed, 8 Oct 2025 14:53:44 +0200 Message-ID: <8fb589c7bf62652e56b8a8afd8730bcfe1272cda.1759927755.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: yS3YPB4TCmva5CTQ04YSp-zkrPa3am_GUggJeTRQ4Iw_1759928060 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: E3NK4FFSFVMHET6UL56FQXKVM3FVS5ZY X-Message-ID-Hash: E3NK4FFSFVMHET6UL56FQXKVM3FVS5ZY X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759929294629154100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Similarly to other virXPath* functions, let's have a helper that evaluates an XPath and stores the value into virTristateSwitch. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/libvirt_private.syms | 1 + src/util/virxml.c | 34 ++++++++++++++++++++++++++++++++++ src/util/virxml.h | 5 +++++ 3 files changed, 40 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 7986ad123c..0b692c038e 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -3827,6 +3827,7 @@ virXPathLongLong; virXPathNode; virXPathNodeSet; virXPathString; +virXPathTristateSwitch; virXPathUInt; virXPathUIntBase; virXPathULongLong; diff --git a/src/util/virxml.c b/src/util/virxml.c index bb80bb7444..60485c10fa 100644 --- a/src/util/virxml.c +++ b/src/util/virxml.c @@ -284,6 +284,40 @@ virXPathLongLong(const char *xpath, } =20 =20 +/** + * virXPathTristateSwitch: + * @xpath: the XPath string to evaluate + * @ctxt: an XPath context + * @value: the returned virTristateSwitch value + * + * Convenience function to evaluate an XPath tristate value. The @xpath + * expression must ensure that the evaluated value is returned as a + * string (use the 'string()' conversion in the expression). + * + * Returns 0 in case of success in which case @value is set, + * or -1 if the XPath evaluation failed or -2 if the + * value isn't of a virTristateSwitch value. + */ +int +virXPathTristateSwitch(const char *xpath, + xmlXPathContextPtr ctxt, + virTristateSwitch *value) +{ + g_autoptr(xmlXPathObject) obj =3D NULL; + int rc; + + if (!(obj =3D virXPathEvalString(xpath, ctxt))) + return -1; + + rc =3D virTristateSwitchTypeFromString((char *)obj->stringval); + if (rc < 0) + return -2; + + *value =3D rc; + return 0; +} + + /** * virXMLCheckIllegalChars: * @nodeName: Name of checked node diff --git a/src/util/virxml.h b/src/util/virxml.h index 7cc3f47913..dfec386494 100644 --- a/src/util/virxml.h +++ b/src/util/virxml.h @@ -73,6 +73,11 @@ virXPathLongLong(const char *xpath, xmlXPathContextPtr ctxt, long long *value); =20 +int +virXPathTristateSwitch(const char *xpath, + xmlXPathContextPtr ctxt, + virTristateSwitch *value); + xmlNodePtr virXMLNodeGetSubelement(xmlNodePtr node, const char *name); --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759929433; cv=none; d=zohomail.com; s=zohoarc; b=Bw+uTxrSySy82EGL/LweZQ+zgcOFv5D+jHfJmRspzdH6fHSByiI+bUCAyF6iAJpNys80+5BtsEWlJg3nstkFGnJ3qEkmDMZfurMRyqNmfbOBmexZY/3d+fmgu/5NkcNp0L/OM3dqe1ZjvU5TvlqTj4GF5G14pHEtpBPY0A6NRww= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759929433; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=UTaqnotxScWQ6nNK4Z3WFSy64g3J+gdmFXYIEf3VkMQ=; b=D0b8eDewNIBbIP7aQIbus8XgMLT/NJmudjfnSUEA4D2SIWlmGUg4oTlkXP5DKnBQe8wY1tEV1ypIvX6e84RJvZe2VirS9DgvHyTyY3CJEHPgLWyxIKTu+/BcMZ3VcCtEKrPAgtoM40nfYsowjGa2CmR7ct52GCIP2se4szhnjRk= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759929433128329.6926479232658; Wed, 8 Oct 2025 06:17:13 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 6D639443BB; Wed, 8 Oct 2025 09:17:12 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 1748244555; Wed, 8 Oct 2025 09:11:58 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 98E03441B0; Wed, 8 Oct 2025 08:55:35 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 55FA8441D2 for ; Wed, 8 Oct 2025 08:54:23 -0400 (EDT) Received: from mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-685-m2cUmh5UO8GQKGahiOz1Ag-1; Wed, 08 Oct 2025 08:54:21 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 0BF5719560AF for ; Wed, 8 Oct 2025 12:54:21 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 56C8119560B8 for ; Wed, 8 Oct 2025 12:54:20 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928063; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UTaqnotxScWQ6nNK4Z3WFSy64g3J+gdmFXYIEf3VkMQ=; b=cfIcaFo6+7fmSfmD27Y4EVtLuArOC6GnVm7IPFzUQwUm1kTh6do1W6mGT3l+XLT4ic7kUX UOvkLi8cJt7b9VPKGJmCX64HGnFjzpQkm5XEBNQ1GHbnBblyoBLxuQjtcp4RRqnEmzrKnI ODSRp7ziblFFmS1v3Eanggr9NtaSO6s= X-MC-Unique: m2cUmh5UO8GQKGahiOz1Ag-1 X-Mimecast-MFC-AGG-ID: m2cUmh5UO8GQKGahiOz1Ag_1759928061 To: devel@lists.libvirt.org Subject: [PATCH v2 13/29] virxml: Introduce virXPathTristateBool() Date: Wed, 8 Oct 2025 14:53:45 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 8sC835oMbXjsQpw2oM05MbIToU2JgukoL4A5mX8Q6Mg_1759928061 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: GN3SAMCEPDE2A5CLG4Y66CJCYV4CVRPP X-Message-ID-Hash: GN3SAMCEPDE2A5CLG4Y66CJCYV4CVRPP X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759929436311154100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Similarly to other virXPath* functions, let's have a helper that evaluates an XPath and stores the value into virTristateBool. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/libvirt_private.syms | 1 + src/util/virxml.c | 34 ++++++++++++++++++++++++++++++++++ src/util/virxml.h | 5 +++++ 3 files changed, 40 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 0b692c038e..1a4f47aabc 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -3827,6 +3827,7 @@ virXPathLongLong; virXPathNode; virXPathNodeSet; virXPathString; +virXPathTristateBool; virXPathTristateSwitch; virXPathUInt; virXPathUIntBase; diff --git a/src/util/virxml.c b/src/util/virxml.c index 60485c10fa..44f11accf3 100644 --- a/src/util/virxml.c +++ b/src/util/virxml.c @@ -318,6 +318,40 @@ virXPathTristateSwitch(const char *xpath, } =20 =20 +/** + * virXPathTristateBool: + * @xpath: the XPath string to evaluate + * @ctxt: an XPath context + * @value: the returned virTristateBool value + * + * Convenience function to evaluate an XPath tristate value. The @xpath + * expression must ensure that the evaluated value is returned as a + * string (use the 'string()' conversion in the expression). + * + * Returns 0 in case of success in which case @value is set, + * or -1 if the XPath evaluation failed or -2 if the + * value isn't of a virTristateBool value. + */ +int +virXPathTristateBool(const char *xpath, + xmlXPathContextPtr ctxt, + virTristateBool *value) +{ + g_autoptr(xmlXPathObject) obj =3D NULL; + int rc; + + if (!(obj =3D virXPathEvalString(xpath, ctxt))) + return -1; + + rc =3D virTristateBoolTypeFromString((char *)obj->stringval); + if (rc < 0) + return -2; + + *value =3D rc; + return 0; +} + + /** * virXMLCheckIllegalChars: * @nodeName: Name of checked node diff --git a/src/util/virxml.h b/src/util/virxml.h index dfec386494..82218c0539 100644 --- a/src/util/virxml.h +++ b/src/util/virxml.h @@ -78,6 +78,11 @@ virXPathTristateSwitch(const char *xpath, xmlXPathContextPtr ctxt, virTristateSwitch *value); =20 +int +virXPathTristateBool(const char *xpath, + xmlXPathContextPtr ctxt, + virTristateBool *value); + xmlNodePtr virXMLNodeGetSubelement(xmlNodePtr node, const char *name); --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759929502; cv=none; d=zohomail.com; s=zohoarc; b=cjvTJeizWGiMo1tBeq9Ur4vZQMA/C2QDpeSYa2l7ov3KJL9Xr26KTe2CnWlJPWY7JxeIBuGLri4XIgwGLagkKypgzzse85AjUQw7slPACMxmrS4da97gC3ev/HrIxE1ZAuY2FcgsQPByk7fN2pZz6QTBiFcsrI0gxV73r8OA6zc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759929502; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=/2/gQAYm9p4nfblTFlP3auNgWeyt3PKpYiIvErs1cxc=; b=cfKoC7Js5PtuNEz1acvDexV1Tj5Dzqgjmh/QWYTR82LDca/OjYOycktLwqhpzIO4xtg5EfpsnLu070oHRsVz268RWDDQVJ74BnHZ4aUEPSRNuL7/6EzpY3XYNsjbl5Rf7id8odG5yZeIpB4g5dUHpu71SzQwkbQ0X1Frq0nevWk= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759929502133239.06063037332865; Wed, 8 Oct 2025 06:18:22 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 8CEB3443E6; Wed, 8 Oct 2025 09:18:21 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id AB4B044674; Wed, 8 Oct 2025 09:12:28 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 15FD444186; Wed, 8 Oct 2025 08:55:38 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 7883844326 for ; Wed, 8 Oct 2025 08:54:24 -0400 (EDT) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-226-Gvzj0BGvNYeJZGazNKDGDw-1; Wed, 08 Oct 2025 08:54:22 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 29ED819560BE for ; Wed, 8 Oct 2025 12:54:22 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 74D6419560A2 for ; Wed, 8 Oct 2025 12:54:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928064; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/2/gQAYm9p4nfblTFlP3auNgWeyt3PKpYiIvErs1cxc=; b=ULAl4g/jXeRP4WAX4ez9vp3/nO66w/V5TGuGVAK9y9ufh6+4ESOtrzEj6jSYVAhe/NU/hj BZ0vCSEA3ROWzDi76q4t7mSYKQAXea0jvkIvykdCM9YWzjcEyF5zWwuj2vmQeSeGstT/+Q UhpMXVKqHn5gVSep2IdPf2aRWyZkeJY= X-MC-Unique: Gvzj0BGvNYeJZGazNKDGDw-1 X-Mimecast-MFC-AGG-ID: Gvzj0BGvNYeJZGazNKDGDw_1759928062 To: devel@lists.libvirt.org Subject: [PATCH v2 14/29] qemu: Use virXPathTristateBool() Date: Wed, 8 Oct 2025 14:53:46 +0200 Message-ID: <3da3fea40ea1470da7501625ef91b07f2b61881f.1759927755.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: nTEnwzNUgQffm7yySQcVI6FvyXF03VOhweCc3P_OBAg_1759928062 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: MOZFD4KZXFIVH7SY3CI4MFWPEYQXAWEN X-Message-ID-Hash: MOZFD4KZXFIVH7SY3CI4MFWPEYQXAWEN X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759929520292154100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik There are two places in our code base which can use freshly introduced virXPathTristateBool(): qemuStorageSourcePrivateDataParse() and qemuDomainObjPrivateXMLParseBlockjobs(). Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_domain.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index b39fabfbb4..d675a5d7ee 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -2073,7 +2073,7 @@ qemuStorageSourcePrivateDataParse(xmlXPathContextPtr = ctxt, g_autofree char *authalias =3D NULL; g_autofree char *httpcookiealias =3D NULL; g_autofree char *tlskeyalias =3D NULL; - g_autofree char *thresholdEventWithIndex =3D NULL; + virTristateBool thresholdEventWithIndex; bool fdsetPresent =3D false; unsigned int fdSetID; int enccount; @@ -2139,9 +2139,10 @@ qemuStorageSourcePrivateDataParse(xmlXPathContextPtr= ctxt, if (virStorageSourcePrivateDataParseRelPath(ctxt, src) < 0) return -1; =20 - if ((thresholdEventWithIndex =3D virXPathString("string(./thresholdEve= nt/@indexUsed)", ctxt)) && - virTristateBoolTypeFromString(thresholdEventWithIndex) =3D=3D VIR_= TRISTATE_BOOL_YES) - src->thresholdEventWithIndex =3D true; + if (virXPathTristateBool("string(./thresholdEvent/@indexUsed)", + ctxt, &thresholdEventWithIndex) >=3D 0) { + virTristateBoolToBool(thresholdEventWithIndex, &src->thresholdEven= tWithIndex); + } =20 if ((nbdkitnode =3D virXPathNode("nbdkit", ctxt))) { if (qemuStorageSourcePrivateDataParseNbdkit(nbdkitnode, ctxt, src)= < 0) @@ -3210,13 +3211,10 @@ qemuDomainObjPrivateXMLParseBlockjobs(virDomainObj = *vm, { g_autofree xmlNodePtr *nodes =3D NULL; ssize_t nnodes =3D 0; - g_autofree char *active =3D NULL; - int tmp; size_t i; =20 - if ((active =3D virXPathString("string(./blockjobs/@active)", ctxt)) && - (tmp =3D virTristateBoolTypeFromString(active)) > 0) - priv->reconnectBlockjobs =3D tmp; + virXPathTristateBool("string(./blockjobs/@active)", + ctxt, &priv->reconnectBlockjobs); =20 if ((nnodes =3D virXPathNodeSet("./blockjobs/blockjob", ctxt, &nodes))= < 0) return -1; --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759930143; cv=none; d=zohomail.com; s=zohoarc; b=Zu7Agv3oLWNPKMzKySE5S+WqKsKHp4IBFFbpHdTt3DqZJ9pRjdCPg8Rwrfm8Jcjkgzx060eJL58kol0gUdqnzyNYd3bC63P/jIU/MxLPZ2+aQAuUh8BjPMWqYtnq4pN9alk7egMeBfZH+lzkamLTbP2iHv2F2X5XLXKA2Y16rRs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759930143; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=eBo8wz5x98zD8M2Tl0GWft8AdmkB5e9RfiLLippOBtU=; b=aty9LjaXfggY/47DM87G98NXSCbLfCRbb0dZdTOGbYoc7iMshdcj2PmrdzM4Vj916enk1Ws8/JRfPRoEKirH2S5DvVKLejPczy8aWMxyrU7thVvPCOxE8oyCYpdMnLf69GUNZT2qIwE6WNQcMQzDSegOYRYl5FEsaz/r5WdGub8= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759930143606833.8165210614646; Wed, 8 Oct 2025 06:29:03 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id C5EF844399; Wed, 8 Oct 2025 09:29:02 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 7113A41814; Wed, 8 Oct 2025 09:18:13 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 4F74644144; Wed, 8 Oct 2025 08:55:44 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 6942B44215 for ; Wed, 8 Oct 2025 08:54:25 -0400 (EDT) Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-205-D4XOEYbkOZ-xLyDIHuJWVg-1; Wed, 08 Oct 2025 08:54:24 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 45FDD195605B for ; Wed, 8 Oct 2025 12:54:23 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 924A419560A2 for ; Wed, 8 Oct 2025 12:54:22 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928065; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eBo8wz5x98zD8M2Tl0GWft8AdmkB5e9RfiLLippOBtU=; b=LTDlywmvZMDYjEe017OcwhI4/eRGp6wa+MGr4SLgFvWrvS2NxOQ7UPYDUIhFyDKY5J3YZw BAkeI8ucf7GFmzNieigmqtIlZLEhZcVSCArjSCaQjmj+QGKi5RusBQHwWph23owJdXAFP4 nBUIkdWTo846XKBUBr4e04YokSXt4wI= X-MC-Unique: D4XOEYbkOZ-xLyDIHuJWVg-1 X-Mimecast-MFC-AGG-ID: D4XOEYbkOZ-xLyDIHuJWVg_1759928063 To: devel@lists.libvirt.org Subject: [PATCH v2 15/29] domain_conf: Move format of hyperv features into a function Date: Wed, 8 Oct 2025 14:53:47 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: BIqinO5D-Oh2Jk_kPVwk8ecLtyxChpImWuQx6h9Fc58_1759928063 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: RUSMXWY64A3IDNGX6ZZOT35R7QVAN2NU X-Message-ID-Hash: RUSMXWY64A3IDNGX6ZZOT35R7QVAN2NU X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759930146156154100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/conf/domain_conf.c | 158 ++++++++++++++++++++++------------------- 1 file changed, 84 insertions(+), 74 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 156e43f5cd..585546d6fd 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -28581,6 +28581,89 @@ virDomainFeatureTCGFormat(virBuffer *buf, } =20 =20 +static void +virDomainFeaturesHyperVDefFormat(virBuffer *buf, + const virDomainDef *def) +{ + virBuffer tmpChildBuf =3D VIR_BUFFER_INIT_CHILD(buf); + size_t j; + + if (def->features[VIR_DOMAIN_FEATURE_HYPERV] =3D=3D VIR_DOMAIN_HYPERV_= MODE_NONE) + return; + + virBufferAsprintf(buf, "\n", + virDomainHyperVModeTypeToString(def->features[VIR_DO= MAIN_FEATURE_HYPERV])); + + for (j =3D 0; j < VIR_DOMAIN_HYPERV_LAST; j++) { + g_auto(virBuffer) hypervAttrBuf =3D VIR_BUFFER_INITIALIZER; + g_auto(virBuffer) hypervChildBuf =3D VIR_BUFFER_INIT_CHILD(&tmpChi= ldBuf); + + if (def->hyperv_features[j] =3D=3D VIR_TRISTATE_SWITCH_ABSENT) + continue; + + virBufferAsprintf(&hypervAttrBuf, " state=3D'%s'", + virTristateSwitchTypeToString(def->hyperv_featur= es[j])); + + switch ((virDomainHyperv) j) { + case VIR_DOMAIN_HYPERV_RELAXED: + case VIR_DOMAIN_HYPERV_VAPIC: + case VIR_DOMAIN_HYPERV_VPINDEX: + case VIR_DOMAIN_HYPERV_RUNTIME: + case VIR_DOMAIN_HYPERV_SYNIC: + case VIR_DOMAIN_HYPERV_RESET: + case VIR_DOMAIN_HYPERV_FREQUENCIES: + case VIR_DOMAIN_HYPERV_REENLIGHTENMENT: + case VIR_DOMAIN_HYPERV_IPI: + case VIR_DOMAIN_HYPERV_EVMCS: + case VIR_DOMAIN_HYPERV_AVIC: + case VIR_DOMAIN_HYPERV_EMSR_BITMAP: + case VIR_DOMAIN_HYPERV_XMM_INPUT: + break; + + case VIR_DOMAIN_HYPERV_SPINLOCKS: + if (def->hyperv_features[j] =3D=3D VIR_TRISTATE_SWITCH_ON) { + virBufferAsprintf(&hypervAttrBuf, + " retries=3D'%d'", def->hyperv_spinlocks= ); + } + break; + + case VIR_DOMAIN_HYPERV_STIMER: + if (def->hyperv_features[j] =3D=3D VIR_TRISTATE_SWITCH_ON && + def->hyperv_stimer_direct =3D=3D VIR_TRISTATE_SWITCH_ON) { + virBufferAddLit(&hypervChildBuf, "\n= "); + } + + break; + + case VIR_DOMAIN_HYPERV_VENDOR_ID: + if (def->hyperv_features[j] =3D=3D VIR_TRISTATE_SWITCH_ON) { + virBufferEscapeString(&hypervAttrBuf, " value=3D'%s'", + def->hyperv_vendor_id); + } + break; + + case VIR_DOMAIN_HYPERV_TLBFLUSH: + if (def->hyperv_features[j] !=3D VIR_TRISTATE_SWITCH_ON) + break; + + if (def->hyperv_tlbflush_direct =3D=3D VIR_TRISTATE_SWITCH_ON) + virBufferAddLit(&hypervChildBuf, "\n= "); + if (def->hyperv_tlbflush_extended =3D=3D VIR_TRISTATE_SWITCH_O= N) + virBufferAddLit(&hypervChildBuf, "= \n"); + break; + + case VIR_DOMAIN_HYPERV_LAST: + break; + } + + virXMLFormatElement(&tmpChildBuf, virDomainHypervTypeToString(j), + &hypervAttrBuf, &hypervChildBuf); + } + + virBufferAddBuffer(buf, &tmpChildBuf); + virBufferAddLit(buf, "\n"); +} + static int virDomainDefFormatFeatures(virBuffer *buf, virDomainDef *def) @@ -28678,80 +28761,7 @@ virDomainDefFormatFeatures(virBuffer *buf, break; =20 case VIR_DOMAIN_FEATURE_HYPERV: - if (def->features[i] =3D=3D VIR_DOMAIN_HYPERV_MODE_NONE) - break; - - virBufferAsprintf(&childBuf, "\n", - virDomainHyperVModeTypeToString(def->feature= s[i])); - - for (j =3D 0; j < VIR_DOMAIN_HYPERV_LAST; j++) { - g_auto(virBuffer) hypervAttrBuf =3D VIR_BUFFER_INITIALIZER; - g_auto(virBuffer) hypervChildBuf =3D VIR_BUFFER_INIT_CHILD= (&tmpChildBuf); - - if (def->hyperv_features[j] =3D=3D VIR_TRISTATE_SWITCH_ABS= ENT) - continue; - - virBufferAsprintf(&hypervAttrBuf, " state=3D'%s'", - virTristateSwitchTypeToString(def->hyper= v_features[j])); - - switch ((virDomainHyperv) j) { - case VIR_DOMAIN_HYPERV_RELAXED: - case VIR_DOMAIN_HYPERV_VAPIC: - case VIR_DOMAIN_HYPERV_VPINDEX: - case VIR_DOMAIN_HYPERV_RUNTIME: - case VIR_DOMAIN_HYPERV_SYNIC: - case VIR_DOMAIN_HYPERV_RESET: - case VIR_DOMAIN_HYPERV_FREQUENCIES: - case VIR_DOMAIN_HYPERV_REENLIGHTENMENT: - case VIR_DOMAIN_HYPERV_IPI: - case VIR_DOMAIN_HYPERV_EVMCS: - case VIR_DOMAIN_HYPERV_AVIC: - case VIR_DOMAIN_HYPERV_EMSR_BITMAP: - case VIR_DOMAIN_HYPERV_XMM_INPUT: - break; - - case VIR_DOMAIN_HYPERV_SPINLOCKS: - if (def->hyperv_features[j] =3D=3D VIR_TRISTATE_SWITCH= _ON) { - virBufferAsprintf(&hypervAttrBuf, - " retries=3D'%d'", def->hyperv_s= pinlocks); - } - break; - - case VIR_DOMAIN_HYPERV_STIMER: - if (def->hyperv_features[j] =3D=3D VIR_TRISTATE_SWITCH= _ON && - def->hyperv_stimer_direct =3D=3D VIR_TRISTATE_SWIT= CH_ON) { - virBufferAddLit(&hypervChildBuf, "\n"); - } - - break; - - case VIR_DOMAIN_HYPERV_VENDOR_ID: - if (def->hyperv_features[j] =3D=3D VIR_TRISTATE_SWITCH= _ON) { - virBufferEscapeString(&hypervAttrBuf, " value=3D'%= s'", - def->hyperv_vendor_id); - } - break; - - case VIR_DOMAIN_HYPERV_TLBFLUSH: - if (def->hyperv_features[j] !=3D VIR_TRISTATE_SWITCH_O= N) - break; - - if (def->hyperv_tlbflush_direct =3D=3D VIR_TRISTATE_SW= ITCH_ON) - virBufferAddLit(&hypervChildBuf, "\n"); - if (def->hyperv_tlbflush_extended =3D=3D VIR_TRISTATE_= SWITCH_ON) - virBufferAddLit(&hypervChildBuf, "\n"); - break; - - case VIR_DOMAIN_HYPERV_LAST: - break; - } - - virXMLFormatElement(&tmpChildBuf, virDomainHypervTypeToStr= ing(j), - &hypervAttrBuf, &hypervChildBuf); - } - - virBufferAddBuffer(&childBuf, &tmpChildBuf); - virBufferAddLit(&childBuf, "\n"); + virDomainFeaturesHyperVDefFormat(&childBuf, def); break; =20 case VIR_DOMAIN_FEATURE_KVM: --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759930485; cv=none; d=zohomail.com; s=zohoarc; b=Sd5HbsrLuwPbQf1+VU3Q1S0M0otIOqvbT1YJuKHsVKw1+u+3DWZHSjUbEPJtPPWECPEd6fTHR4/hvLwcfkHmzug9YvQ1kGLcBYTbWsc6qKnvK/Ya09zQ8oBAUz64qilvCb5HEc2nvrwNwsqhOJy+d2Lh042XHUU+PFvyAl+iOHY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759930485; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=tMWoWsAgGD2iyMi+aL96ifPc9CFjuBlUhn9aUbJGxGk=; b=Smm3TwKvZ8P+tgWHoQh5fDbG7vihr8MbsOU+lErBYyfPdvsZU3aJrwqQMym5MBHj4AZU7+0vuUmZJzw+Y/AzV6wV/OVoM26QVRWs6yHD1kAVEtchaMt001xlhTKdoPvE71lXNJ9WZoIkirvhs6Ydu5IKU/3u3ZAPPkhj/kHBD2M= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759930485144638.7606411986939; Wed, 8 Oct 2025 06:34:45 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 299E13FB96; Wed, 8 Oct 2025 09:34:42 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 4AF5D44B9B; Wed, 8 Oct 2025 09:18:39 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id BF144441B4; Wed, 8 Oct 2025 08:55:49 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 CFDF843E22 for ; Wed, 8 Oct 2025 08:54:26 -0400 (EDT) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-522-k9avou7bMiiCQ_n66OIcMA-1; Wed, 08 Oct 2025 08:54:25 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 655381800451 for ; Wed, 8 Oct 2025 12:54:24 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id AFF6019560A2 for ; Wed, 8 Oct 2025 12:54:23 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928066; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tMWoWsAgGD2iyMi+aL96ifPc9CFjuBlUhn9aUbJGxGk=; b=gcKDcdGcG0si6vUveiCSxdK69g8l3k4LsnTQXqsOV5uboRx0DVynarSAa1MkeaoUO+3lqO Obif78w28LBTSJbBu8wXAkoJwu6S+8+K7zieXu62zkQvrMSGFpM+8q9+mVQ+GEE+FC/QLB Bx4kmhS8lEpTDYuBCwtC1SA7akjTerw= X-MC-Unique: k9avou7bMiiCQ_n66OIcMA-1 X-Mimecast-MFC-AGG-ID: k9avou7bMiiCQ_n66OIcMA_1759928064 To: devel@lists.libvirt.org Subject: [PATCH v2 16/29] domain_conf: Use virXMLFormatElement() to format hyperv features Date: Wed, 8 Oct 2025 14:53:48 +0200 Message-ID: <2429d13aa6c0622a9bad20a29930b79439e3dcd8.1759927755.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: eiZVr8Kd80KdeGxohtbbd4HHaPikiTakuaqhdJafedU_1759928064 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: YR24FCH6A3N3VOYA4ZVK36DQ4DX7MLAN X-Message-ID-Hash: YR24FCH6A3N3VOYA4ZVK36DQ4DX7MLAN X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759930491685116601 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Not only is it more modern that old virBufferAsprintf() of opening and closing tag, it's also aware of child elements buffer and thus formats a singleton properly. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/conf/domain_conf.c | 13 +++++++------ .../hyperv-passthrough.x86_64-latest.xml | 3 +-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 585546d6fd..d095454283 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -28585,18 +28585,19 @@ static void virDomainFeaturesHyperVDefFormat(virBuffer *buf, const virDomainDef *def) { - virBuffer tmpChildBuf =3D VIR_BUFFER_INIT_CHILD(buf); + virBuffer childBuf =3D VIR_BUFFER_INIT_CHILD(buf); + virBuffer attrBuf =3D VIR_BUFFER_INITIALIZER; size_t j; =20 if (def->features[VIR_DOMAIN_FEATURE_HYPERV] =3D=3D VIR_DOMAIN_HYPERV_= MODE_NONE) return; =20 - virBufferAsprintf(buf, "\n", + virBufferAsprintf(&attrBuf, " mode=3D'%s'", virDomainHyperVModeTypeToString(def->features[VIR_DO= MAIN_FEATURE_HYPERV])); =20 for (j =3D 0; j < VIR_DOMAIN_HYPERV_LAST; j++) { g_auto(virBuffer) hypervAttrBuf =3D VIR_BUFFER_INITIALIZER; - g_auto(virBuffer) hypervChildBuf =3D VIR_BUFFER_INIT_CHILD(&tmpChi= ldBuf); + g_auto(virBuffer) hypervChildBuf =3D VIR_BUFFER_INIT_CHILD(&childB= uf); =20 if (def->hyperv_features[j] =3D=3D VIR_TRISTATE_SWITCH_ABSENT) continue; @@ -28656,14 +28657,14 @@ virDomainFeaturesHyperVDefFormat(virBuffer *buf, break; } =20 - virXMLFormatElement(&tmpChildBuf, virDomainHypervTypeToString(j), + virXMLFormatElement(&childBuf, virDomainHypervTypeToString(j), &hypervAttrBuf, &hypervChildBuf); } =20 - virBufferAddBuffer(buf, &tmpChildBuf); - virBufferAddLit(buf, "\n"); + virXMLFormatElement(buf, "hyperv", &attrBuf, &childBuf); } =20 + static int virDomainDefFormatFeatures(virBuffer *buf, virDomainDef *def) diff --git a/tests/qemuxmlconfdata/hyperv-passthrough.x86_64-latest.xml b/t= ests/qemuxmlconfdata/hyperv-passthrough.x86_64-latest.xml index 2cfae8fa4c..0ce5bab605 100644 --- a/tests/qemuxmlconfdata/hyperv-passthrough.x86_64-latest.xml +++ b/tests/qemuxmlconfdata/hyperv-passthrough.x86_64-latest.xml @@ -10,8 +10,7 @@ - - + qemu64 --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759929576; cv=none; d=zohomail.com; s=zohoarc; b=jlDsgk9n+gJ3vcK4zjAMEPmZlN59k5jG10b6NyhrZAmnazxEaIH0SVKwZr8Xc2NNCu/ytAX2TNLN97FBlv4YmR80NRmK1NEQ4vUNS8BE9XgLwWVqj+yA5EgMjHBrwOkubswnXOj+zGYLMAb3ZUF+yEK8T0FvQlz0+rtv6cSZJok= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759929576; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=f1t+tynwKljtAylLeXLTvfWKJ7NcSVF+lcYWOT2TTGo=; b=etxKT2XEGiaHIx6IMh02b8Mf/4VZyB31caiLit+zG8FMtZKYq+RKsz5kgpuhvcn4kufNdt6zGUsSvCeYAhOkzexX3R6bMJT7hU0va8Vj4LBeRJfl/SHFCkaeBtAZhyB+dDegyPPzSfOK/C4pi6zu5YEiINL4B7SDI9gOlqQ5P7Y= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759929576065723.3738781717236; Wed, 8 Oct 2025 06:19:36 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 780A141BE4; Wed, 8 Oct 2025 09:19:35 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id EB95F446D2; Wed, 8 Oct 2025 09:14:48 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 09CE243EC9; Wed, 8 Oct 2025 08:55:39 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 157EF441F6 for ; Wed, 8 Oct 2025 08:54:28 -0400 (EDT) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-311-KInd7igoOdiyx2XgEorPtA-1; Wed, 08 Oct 2025 08:54:26 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8C0881800289 for ; Wed, 8 Oct 2025 12:54:25 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id CD9CE19560A2 for ; Wed, 8 Oct 2025 12:54:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928067; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=f1t+tynwKljtAylLeXLTvfWKJ7NcSVF+lcYWOT2TTGo=; b=gHESe9DxYgfQmAgpmRnm4r+6MFX6blMdjSQhTdnJ9K8b+9ZGYfKQuPttEKq0T/7JJvA4jr GTR5UX9fOkscOmrU9pQD1EZC96DHsPLl0VJhuocuHzoyMmVHin+0IMucHxGp4yP7IHr11U nPP5Ml2DpEje+4rZIRsaoSTNrKYbMWA= X-MC-Unique: KInd7igoOdiyx2XgEorPtA-1 X-Mimecast-MFC-AGG-ID: KInd7igoOdiyx2XgEorPtA_1759928065 To: devel@lists.libvirt.org Subject: [PATCH v2 17/29] qemu_caps: Prefer VIR_DOMAIN_CAPS_ENUM_IS_SET() Date: Wed, 8 Oct 2025 14:53:49 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: W0HHRJJ4CPoprhurQZN75S7UdlZjxlGjL1n8WKVCEo8_1759928065 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: CXFZ5PCIPH3IX3SGLXC67VOXV66ANHXF X-Message-ID-Hash: CXFZ5PCIPH3IX3SGLXC67VOXV66ANHXF X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759929577719154100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik While virDomainCapsEnum is in fact a bitmap, we also have a macro to manipulate/query individual bits. Prefer it to make the code more readable. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_capabilities.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 618291e5b6..5b485d7bfb 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -5065,7 +5065,7 @@ virQEMUCapsFormatHypervCapabilities(virQEMUCaps *qemu= Caps, size_t i; =20 for (i =3D 0; i < sizeof(hvcaps->features.values) * CHAR_BIT; i++)= { - if (!(hvcaps->features.values & (1U << i))) + if (!VIR_DOMAIN_CAPS_ENUM_IS_SET(hvcaps->features, i)) continue; =20 virBufferAsprintf(&childBuf, "\n", --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759930202; cv=none; d=zohomail.com; s=zohoarc; b=EKGknx/YqXVYr8p9ONaQK7M11cgWYf66U89P67VJ9s8ztY6FPgb2mivRUjsqUPh4vFBAwEyY9HKRu0K9gADGNynhNq4r5qo+f3qu8jWS3GcyyVINwLn+paUZYUViazVdVCgl/ZjwFBx/kmwc1qwJlQqABBZOzbRcHdMKkjSw0/w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759930202; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=4qjMqJJuA5z0E7z3xl+4RnSicmqGR1+pNeFo3r1W1o4=; b=ZoWJArQm+KsihXg/p4hP1kMEe2OBSHjtoXhxuXB4myaFYUxTR0Uhn4r/nQTaeHzCIrBQvhs0B08ZIz/9AiY+Q2d2V6WMjLFRbhWIV4VrftX9yucQG81oKdY7UFgmLmDFErwoWPYFNS6r5JO3EeAYCU3rRsKiNrafNcsTDuAVe8I= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759930201980711.0333545518318; Wed, 8 Oct 2025 06:30:01 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 2E1BC441B8; Wed, 8 Oct 2025 09:29:59 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id C6EB144865; Wed, 8 Oct 2025 09:18:19 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id C93A944224; Wed, 8 Oct 2025 08:55:45 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 0A31C44224 for ; Wed, 8 Oct 2025 08:54:30 -0400 (EDT) Received: from mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-388-cvmGDQ3HOESKuEmGq_iTDA-1; Wed, 08 Oct 2025 08:54:28 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id A97FE195609E for ; Wed, 8 Oct 2025 12:54:26 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 0093319560A2 for ; Wed, 8 Oct 2025 12:54:25 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928069; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4qjMqJJuA5z0E7z3xl+4RnSicmqGR1+pNeFo3r1W1o4=; b=QclYZ3fTRsSCcZJ/hSZ1go1GKAxrBK/2g1tm0ZB/6dHQavXsN3lBk3av0mUtPOhTIcYM3u sOFY0vvRDLQjleY8z/rj4xqjtzAWZTyxe6t/mEeMJGY5fa7+lMOtQ2H0Td2SMN/esbzyBb kMd6eXQ0AQrIrjB3WSzK8KPMk6HupLA= X-MC-Unique: cvmGDQ3HOESKuEmGq_iTDA-1 X-Mimecast-MFC-AGG-ID: cvmGDQ3HOESKuEmGq_iTDA_1759928066 To: devel@lists.libvirt.org Subject: [PATCH v2 18/29] qemu_command: Move hyperv cmd line generation into a function Date: Wed, 8 Oct 2025 14:53:50 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: YPZf_WVceXG57TGX-txJla49mO2aq6_8mGnuid5uE4I_1759928066 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 6QHEI2XLON2GSEOGRCAWXWXJOG7HPVZP X-Message-ID-Hash: 6QHEI2XLON2GSEOGRCAWXWXJOG7HPVZP X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759930204721116600 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_command.c | 155 ++++++++++++++++++++++------------------ 1 file changed, 85 insertions(+), 70 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index f7af92fe35..542022b889 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6449,6 +6449,89 @@ qemuBuildCpuModelArgStr(virQEMUDriver *driver, return 0; } =20 + +static int +qemuBuildCpuHypervCommandLine(virBuffer *buf, + const virDomainDef *def) +{ + size_t i; + + if (def->features[VIR_DOMAIN_FEATURE_HYPERV] =3D=3D VIR_DOMAIN_HYPERV_= MODE_NONE) + return 0; + + switch ((virDomainHyperVMode) def->features[VIR_DOMAIN_FEATURE_HYPERV]= ) { + case VIR_DOMAIN_HYPERV_MODE_CUSTOM: + break; + + case VIR_DOMAIN_HYPERV_MODE_PASSTHROUGH: + virBufferAsprintf(buf, ",hv-%s=3Don", "passthrough"); + break; + + case VIR_DOMAIN_HYPERV_MODE_NONE: + case VIR_DOMAIN_HYPERV_MODE_LAST: + default: + virReportEnumRangeError(virDomainHyperVMode, + def->features[VIR_DOMAIN_FEATURE_HYPERV]); + return -1; + } + + for (i =3D 0; i < VIR_DOMAIN_HYPERV_LAST; i++) { + switch ((virDomainHyperv) i) { + case VIR_DOMAIN_HYPERV_RELAXED: + case VIR_DOMAIN_HYPERV_VAPIC: + case VIR_DOMAIN_HYPERV_VPINDEX: + case VIR_DOMAIN_HYPERV_RUNTIME: + case VIR_DOMAIN_HYPERV_SYNIC: + case VIR_DOMAIN_HYPERV_STIMER: + case VIR_DOMAIN_HYPERV_RESET: + case VIR_DOMAIN_HYPERV_FREQUENCIES: + case VIR_DOMAIN_HYPERV_REENLIGHTENMENT: + case VIR_DOMAIN_HYPERV_TLBFLUSH: + case VIR_DOMAIN_HYPERV_IPI: + case VIR_DOMAIN_HYPERV_EVMCS: + case VIR_DOMAIN_HYPERV_AVIC: + case VIR_DOMAIN_HYPERV_EMSR_BITMAP: + case VIR_DOMAIN_HYPERV_XMM_INPUT: + if (def->hyperv_features[i] =3D=3D VIR_TRISTATE_SWITCH_ON) { + const char *name =3D virDomainHypervTypeToString(i); + g_autofree char *full_name =3D g_strdup_printf("hv-%s", na= me); + const char *qemu_name =3D virQEMUCapsCPUFeatureToQEMU(def-= >os.arch, + full_n= ame); + virBufferAsprintf(buf, ",%s=3Don", qemu_name); + } + if ((i =3D=3D VIR_DOMAIN_HYPERV_STIMER) && + (def->hyperv_stimer_direct =3D=3D VIR_TRISTATE_SWITCH_ON)) + virBufferAsprintf(buf, ",%s=3Don", VIR_CPU_x86_HV_STIMER_D= IRECT); + if (i =3D=3D VIR_DOMAIN_HYPERV_TLBFLUSH) { + if (def->hyperv_tlbflush_direct =3D=3D VIR_TRISTATE_SWITCH= _ON) + virBufferAsprintf(buf, ",%s=3Don", VIR_CPU_x86_HV_TLBF= LUSH_DIRECT); + if (def->hyperv_tlbflush_extended =3D=3D VIR_TRISTATE_SWIT= CH_ON) + virBufferAsprintf(buf, ",%s=3Don", VIR_CPU_x86_HV_TLBF= LUSH_EXT); + } + break; + + case VIR_DOMAIN_HYPERV_SPINLOCKS: + if (def->hyperv_features[i] =3D=3D VIR_TRISTATE_SWITCH_ON) + virBufferAsprintf(buf, ",%s=3D0x%x", + VIR_CPU_x86_HV_SPINLOCKS, + def->hyperv_spinlocks); + break; + + case VIR_DOMAIN_HYPERV_VENDOR_ID: + if (def->hyperv_features[i] =3D=3D VIR_TRISTATE_SWITCH_ON) + virBufferAsprintf(buf, ",hv-vendor-id=3D%s", + def->hyperv_vendor_id); + break; + + case VIR_DOMAIN_HYPERV_LAST: + break; + } + } + + return 0; +} + + static int qemuBuildCpuCommandLine(virCommand *cmd, virQEMUDriver *driver, @@ -6545,76 +6628,8 @@ qemuBuildCpuCommandLine(virCommand *cmd, VIR_TRISTATE_SWITCH_ON ? "on" : "off"); } =20 - if (def->features[VIR_DOMAIN_FEATURE_HYPERV] !=3D VIR_DOMAIN_HYPERV_MO= DE_NONE) { - switch ((virDomainHyperVMode) def->features[VIR_DOMAIN_FEATURE_HYP= ERV]) { - case VIR_DOMAIN_HYPERV_MODE_CUSTOM: - break; - - case VIR_DOMAIN_HYPERV_MODE_PASSTHROUGH: - virBufferAsprintf(&buf, ",hv-%s=3Don", "passthrough"); - break; - - case VIR_DOMAIN_HYPERV_MODE_NONE: - case VIR_DOMAIN_HYPERV_MODE_LAST: - default: - virReportEnumRangeError(virDomainHyperVMode, - def->features[VIR_DOMAIN_FEATURE_HYPER= V]); - return -1; - } - - for (i =3D 0; i < VIR_DOMAIN_HYPERV_LAST; i++) { - switch ((virDomainHyperv) i) { - case VIR_DOMAIN_HYPERV_RELAXED: - case VIR_DOMAIN_HYPERV_VAPIC: - case VIR_DOMAIN_HYPERV_VPINDEX: - case VIR_DOMAIN_HYPERV_RUNTIME: - case VIR_DOMAIN_HYPERV_SYNIC: - case VIR_DOMAIN_HYPERV_STIMER: - case VIR_DOMAIN_HYPERV_RESET: - case VIR_DOMAIN_HYPERV_FREQUENCIES: - case VIR_DOMAIN_HYPERV_REENLIGHTENMENT: - case VIR_DOMAIN_HYPERV_TLBFLUSH: - case VIR_DOMAIN_HYPERV_IPI: - case VIR_DOMAIN_HYPERV_EVMCS: - case VIR_DOMAIN_HYPERV_AVIC: - case VIR_DOMAIN_HYPERV_EMSR_BITMAP: - case VIR_DOMAIN_HYPERV_XMM_INPUT: - if (def->hyperv_features[i] =3D=3D VIR_TRISTATE_SWITCH_ON)= { - const char *name =3D virDomainHypervTypeToString(i); - g_autofree char *full_name =3D g_strdup_printf("hv-%s"= , name); - const char *qemu_name =3D virQEMUCapsCPUFeatureToQEMU(= def->os.arch, - fu= ll_name); - virBufferAsprintf(&buf, ",%s=3Don", qemu_name); - } - if ((i =3D=3D VIR_DOMAIN_HYPERV_STIMER) && - (def->hyperv_stimer_direct =3D=3D VIR_TRISTATE_SWITCH_= ON)) - virBufferAsprintf(&buf, ",%s=3Don", VIR_CPU_x86_HV_STI= MER_DIRECT); - if (i =3D=3D VIR_DOMAIN_HYPERV_TLBFLUSH) { - if (def->hyperv_tlbflush_direct =3D=3D VIR_TRISTATE_SW= ITCH_ON) - virBufferAsprintf(&buf, ",%s=3Don", VIR_CPU_x86_HV= _TLBFLUSH_DIRECT); - if (def->hyperv_tlbflush_extended =3D=3D VIR_TRISTATE_= SWITCH_ON) - virBufferAsprintf(&buf, ",%s=3Don", VIR_CPU_x86_HV= _TLBFLUSH_EXT); - } - break; - - case VIR_DOMAIN_HYPERV_SPINLOCKS: - if (def->hyperv_features[i] =3D=3D VIR_TRISTATE_SWITCH_ON) - virBufferAsprintf(&buf, ",%s=3D0x%x", - VIR_CPU_x86_HV_SPINLOCKS, - def->hyperv_spinlocks); - break; - - case VIR_DOMAIN_HYPERV_VENDOR_ID: - if (def->hyperv_features[i] =3D=3D VIR_TRISTATE_SWITCH_ON) - virBufferAsprintf(&buf, ",hv-vendor-id=3D%s", - def->hyperv_vendor_id); - break; - - case VIR_DOMAIN_HYPERV_LAST: - break; - } - } - } + if (qemuBuildCpuHypervCommandLine(&buf, def) < 0) + return -1; =20 for (i =3D 0; i < def->npanics; i++) { if (def->panics[i]->model =3D=3D VIR_DOMAIN_PANIC_MODEL_HYPERV) { --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759929813; cv=none; d=zohomail.com; s=zohoarc; b=DPkQQE1nIxkcQ0Rbb6zjRnzn8l/t0v4VRmloum9sUl0G1TzXht884zZiHH1H4S6I+75E23U7CfPwdsNxBuNhpKYER48iaBP8fUVbWZ5sq0mkBdCOyFoeW9x2kx5hKZ89vgBufQeRVkTOsKdVmeA5WdUBRCXj6GgIeALZY9Azp5w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759929813; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=2aV1eB5UV8upGyl4UnZCbmezoMBizFvd32yig2X5mIo=; b=cleT94uod7wveHBtGqNNsamgOklHlYQPy1ngBEIWD10/x/UmrxSihLmzDQof/jcj6jh97w+fLZ9JC7hRWEeI+83z0n2A6HTvnawAmcra/1vrhTA3ZcXxE4n6DZCWPfcExIOiWfl8o9LQgog+YV36vu3IUcrY4VFmaoIb7C4wwt8= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759929813280843.8923348693362; Wed, 8 Oct 2025 06:23:33 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id A10734188C; Wed, 8 Oct 2025 09:23:32 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id BE6C3446C1; Wed, 8 Oct 2025 09:17:48 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id DF35E41B30; Wed, 8 Oct 2025 08:55:41 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 5A0014425B for ; Wed, 8 Oct 2025 08:54:30 -0400 (EDT) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-441-orWzwliCOzWtcgJM5A_F7Q-1; Wed, 08 Oct 2025 08:54:28 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D0DF218004D4 for ; Wed, 8 Oct 2025 12:54:27 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 1E22719560A2 for ; Wed, 8 Oct 2025 12:54:26 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928070; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2aV1eB5UV8upGyl4UnZCbmezoMBizFvd32yig2X5mIo=; b=PdI76UL+yrUdLl4L74eozpYqy6ZghaYSrhyi2ZJRQ8CYFTiBq6/9yTgYEiAf8uSJxnWA/D yl4DtCGe8EUv0N0L2gs0S+SBz+MS5sbKzj3e1ucZ5UHXWY2XvKj39z33MEisdDCYMNYnrF 6NCoDsG2wJNJAw9Lx+D4z10mXOKePN8= X-MC-Unique: orWzwliCOzWtcgJM5A_F7Q-1 X-Mimecast-MFC-AGG-ID: orWzwliCOzWtcgJM5A_F7Q_1759928067 To: devel@lists.libvirt.org Subject: [PATCH v2 19/29] qemu_command: Prefer virBufferAddLit() in qemuBuildCpuHypervCommandLine() Date: Wed, 8 Oct 2025 14:53:51 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: tB2k5iSnkQqXFxQF-EU2HZs5Sta2OBp7eFLHMF7PhfA_1759928067 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: GLKCZGYFTC5TT777OW5SOUCMYPHQS7OK X-Message-ID-Hash: GLKCZGYFTC5TT777OW5SOUCMYPHQS7OK X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759929814615154100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Using virBufferAsprintf() just to concatenate two literal strings is excessive. Use virBufferAddLit(). Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_command.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 542022b889..65b50740ce 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6464,7 +6464,7 @@ qemuBuildCpuHypervCommandLine(virBuffer *buf, break; =20 case VIR_DOMAIN_HYPERV_MODE_PASSTHROUGH: - virBufferAsprintf(buf, ",hv-%s=3Don", "passthrough"); + virBufferAddLit(buf, ",hv-passthrough=3Don"); break; =20 case VIR_DOMAIN_HYPERV_MODE_NONE: --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759929666; cv=none; d=zohomail.com; s=zohoarc; b=MLyGj0wNXE0JdgZNluJ2mQzOd/vTSgqsuvZKtj316lOPe4sINl2EdW1Ii0kHrfnz1PNwBZLx37aL/WuEXtQyEFWtgT/sBQWl89qgPV6TBDM9YDsiLUGCOME0ekzSGEvaci13N9LIkuJhId5t+Grt5IaVng4H7qfAnjNpo4/tR3Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759929666; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=+FMQviMBPgT057W2Qi6iNDhhjsV4n2X9CK/+TyP0UJs=; b=Lko27zIiWT5liC7hg+jMv5cBmT78kaqgZyT+jonsN2yUet8b0WNpSOR9ohX9sYkfQV+GhMhOD0/sW80uDtEXPurJcX2Ahi1mDtQC0ZXNZwyCAJ8X/gxfZO5s9jq/A0pQcitlcxeJAlR/KGypVQQDViKcVPGgFLq2SvJ6F7DLXbE= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759929666704356.7024975320363; Wed, 8 Oct 2025 06:21:06 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 10C4D44350; Wed, 8 Oct 2025 09:21:06 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id DE1FC44455; Wed, 8 Oct 2025 09:17:21 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id E132D43EC9; Wed, 8 Oct 2025 08:55:40 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 6099644253 for ; Wed, 8 Oct 2025 08:54:31 -0400 (EDT) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-78-bDYBN7DqMQu5szcPA18T7g-1; Wed, 08 Oct 2025 08:54:29 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id EEB041800378 for ; Wed, 8 Oct 2025 12:54:28 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 4609119560A2 for ; Wed, 8 Oct 2025 12:54:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928071; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+FMQviMBPgT057W2Qi6iNDhhjsV4n2X9CK/+TyP0UJs=; b=S2TKnzkFl9gVPLH0QndDecb8nistBkFDbE1WbQf0V47dwGf0fMMHDptj0zyGFdS1lLP88R tW9LFgAmMdPasE/5YceZeuo60y0lYGrC95+tz7OweyWMsd7F73mP0OOSSCCxgQFIK1KioW 9TdTM8nPxTLSeghw2PCjkTq+iD+CIWw= X-MC-Unique: bDYBN7DqMQu5szcPA18T7g-1 X-Mimecast-MFC-AGG-ID: bDYBN7DqMQu5szcPA18T7g_1759928069 To: devel@lists.libvirt.org Subject: [PATCH v2 20/29] libxl: Simplify setting HyperV features Date: Wed, 8 Oct 2025 14:53:52 +0200 Message-ID: <19b7823400531e1f8baf32a7edbf0137d69d463d.1759927755.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: yguCr_HgPt6nkEI2opqmgxkO6dvG2oCr9LHnJZpYiU0_1759928069 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: CB6EDCEHHCQ272WBU4IQGBKQBBCQHWBE X-Message-ID-Hash: CB6EDCEHHCQ272WBU4IQGBKQBBCQHWBE X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759929668869154100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Inside of libxlMakeDomBuildInfo() there's a huge switch() for each virDomainHyperv case. Instead of checking whether feature is enabled in each 'case', let's just check it at the beginning of each loop. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/libxl/libxl_conf.c | 67 +++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 40 deletions(-) diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index 0cbc09b6b0..cea4bd801c 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -608,60 +608,49 @@ libxlMakeDomBuildInfo(virDomainDef *def, } =20 for (i =3D 0; i < VIR_DOMAIN_HYPERV_LAST; i++) { + if (def->hyperv_features[i] !=3D VIR_TRISTATE_SWITCH_ON) + continue; + switch ((virDomainHyperv) i) { case VIR_DOMAIN_HYPERV_VPINDEX: case VIR_DOMAIN_HYPERV_RELAXED: /* Already set by base flag */ break; case VIR_DOMAIN_HYPERV_SYNIC: - if (def->hyperv_features[i] =3D=3D VIR_TRISTATE_SWITCH= _ON) { - libxl_bitmap_set(&b_info->u.hvm.viridian_enable, - LIBXL_VIRIDIAN_ENLIGHTENMENT_SYNI= C); - } + libxl_bitmap_set(&b_info->u.hvm.viridian_enable, + LIBXL_VIRIDIAN_ENLIGHTENMENT_SYNIC); break; case VIR_DOMAIN_HYPERV_STIMER: - if (def->hyperv_features[i] =3D=3D VIR_TRISTATE_SWITCH= _ON) { - /* STIMER implies synic and clock features */ - libxl_bitmap_set(&b_info->u.hvm.viridian_enable, - LIBXL_VIRIDIAN_ENLIGHTENMENT_STIM= ER); - libxl_bitmap_set(&b_info->u.hvm.viridian_enable, - LIBXL_VIRIDIAN_ENLIGHTENMENT_SYNI= C); - libxl_bitmap_set(&b_info->u.hvm.viridian_enable, - LIBXL_VIRIDIAN_ENLIGHTENMENT_TIME= _REF_COUNT); - libxl_bitmap_set(&b_info->u.hvm.viridian_enable, - LIBXL_VIRIDIAN_ENLIGHTENMENT_REFE= RENCE_TSC); - } + /* STIMER implies synic and clock features */ + libxl_bitmap_set(&b_info->u.hvm.viridian_enable, + LIBXL_VIRIDIAN_ENLIGHTENMENT_STIMER); + libxl_bitmap_set(&b_info->u.hvm.viridian_enable, + LIBXL_VIRIDIAN_ENLIGHTENMENT_SYNIC); + libxl_bitmap_set(&b_info->u.hvm.viridian_enable, + LIBXL_VIRIDIAN_ENLIGHTENMENT_TIME_REF= _COUNT); + libxl_bitmap_set(&b_info->u.hvm.viridian_enable, + LIBXL_VIRIDIAN_ENLIGHTENMENT_REFERENC= E_TSC); break; case VIR_DOMAIN_HYPERV_VAPIC: - if (def->hyperv_features[i] =3D=3D VIR_TRISTATE_SWITCH= _ON) { - libxl_bitmap_set(&b_info->u.hvm.viridian_enable, - LIBXL_VIRIDIAN_ENLIGHTENMENT_APIC= _ASSIST); - } + libxl_bitmap_set(&b_info->u.hvm.viridian_enable, + LIBXL_VIRIDIAN_ENLIGHTENMENT_APIC_ASS= IST); break; case VIR_DOMAIN_HYPERV_FREQUENCIES: - if (def->hyperv_features[i] =3D=3D VIR_TRISTATE_SWITCH= _ON) { - libxl_bitmap_set(&b_info->u.hvm.viridian_enable, - LIBXL_VIRIDIAN_ENLIGHTENMENT_FREQ= ); - } + libxl_bitmap_set(&b_info->u.hvm.viridian_enable, + LIBXL_VIRIDIAN_ENLIGHTENMENT_FREQ); break; case VIR_DOMAIN_HYPERV_TLBFLUSH: - if (def->hyperv_features[i] =3D=3D VIR_TRISTATE_SWITCH= _ON) { - libxl_bitmap_set(&b_info->u.hvm.viridian_enable, - LIBXL_VIRIDIAN_ENLIGHTENMENT_HCAL= L_REMOTE_TLB_FLUSH); - } + libxl_bitmap_set(&b_info->u.hvm.viridian_enable, + LIBXL_VIRIDIAN_ENLIGHTENMENT_HCALL_RE= MOTE_TLB_FLUSH); break; case VIR_DOMAIN_HYPERV_IPI: - if (def->hyperv_features[i] =3D=3D VIR_TRISTATE_SWITCH= _ON) { - libxl_bitmap_set(&b_info->u.hvm.viridian_enable, - LIBXL_VIRIDIAN_ENLIGHTENMENT_HCAL= L_IPI); - } + libxl_bitmap_set(&b_info->u.hvm.viridian_enable, + LIBXL_VIRIDIAN_ENLIGHTENMENT_HCALL_IP= I); break; case VIR_DOMAIN_HYPERV_SPINLOCKS: case VIR_DOMAIN_HYPERV_VENDOR_ID: - if (def->hyperv_features[i] =3D=3D VIR_TRISTATE_SWITCH= _ON) { - const char *name =3D virDomainHypervTypeToString(i= ); - VIR_WARN("Hyper-v flag '%s' specified per-domain b= ut is a global Xen setting and will be ignored.", name); - } + VIR_WARN("Hyper-v flag '%s' specified per-domain but i= s a global Xen setting and will be ignored.", + virDomainHypervTypeToString(i)); break; case VIR_DOMAIN_HYPERV_RUNTIME: case VIR_DOMAIN_HYPERV_RESET: @@ -670,11 +659,9 @@ libxlMakeDomBuildInfo(virDomainDef *def, case VIR_DOMAIN_HYPERV_AVIC: case VIR_DOMAIN_HYPERV_EMSR_BITMAP: case VIR_DOMAIN_HYPERV_XMM_INPUT: - if (def->hyperv_features[i] =3D=3D VIR_TRISTATE_SWITCH= _ON) { - const char *name =3D virDomainHypervTypeToString(i= ); - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("Hyper-v enlightenment feature '%1$s' is not= supported for Xen domains."), name); - } + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Hyper-v enlightenment feature '%1$s'= is not supported for Xen domains."), + virDomainHypervTypeToString(i)); break; case VIR_DOMAIN_HYPERV_LAST: break; --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759929956; cv=none; d=zohomail.com; s=zohoarc; b=IQNwICcd78l8RaJDHJwyFnzda5bg3HIUNVcQfYntEOMbG1hg0puO9yhoeuLAa9MGsj1kDgo3pyMptVWtZ5+asCu7a6KJYTxQsLOuRUHUFNZU0UnVCQfjVtvyF25kSjHhFku60L0Kn8LwT62m8HiSdBzhLMmUc8Jj1I/6vvHtgXE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759929956; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=tM0WBl1PeFxziEkGB3cE/FG2drfj1b+2tLW0IVrV+nE=; b=SubzhfflktkrWH8/aUIuXSW+BwsWMB8u6nj2pJ7lPAel9jhnLvrjH3RuAET5EkCeYA03p6YYm5svHHNytwuldOBA6B75hePkZk3085XDU0+WYD2hHCtJt4ImZrbm8AEzjjcwhBLYRZ8UlEk2mBuu7feWPQFSP0CrY9bJPhlTZms= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759929956283455.1497388301965; Wed, 8 Oct 2025 06:25:56 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id ABB1741C3A; Wed, 8 Oct 2025 09:25:55 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id AC735446FE; Wed, 8 Oct 2025 09:17:57 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 8A7E844144; Wed, 8 Oct 2025 08:55:43 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 93B5844268 for ; Wed, 8 Oct 2025 08:54:32 -0400 (EDT) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-490-Scw9GUWdPyed9p24vtxUvw-1; Wed, 08 Oct 2025 08:54:30 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 2A673180057E for ; Wed, 8 Oct 2025 12:54:30 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 63A4919560A2 for ; Wed, 8 Oct 2025 12:54:29 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928072; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tM0WBl1PeFxziEkGB3cE/FG2drfj1b+2tLW0IVrV+nE=; b=ePiXFN79sNG9DRW5qjqr6nHswlMHs8BWxsJOTmVkDtcJ0EwVoUHwPEGrsXhLx/U7XVexsN 07ouLz9ncIUZOJE5YJPsvDYfxe4pNBjHF7ckY5v5hja/9YxYNemrjjCxry7avAqEOQBern 1FoHv8VxQ+ck6gU2Ruw0KXD77jXw92M= X-MC-Unique: Scw9GUWdPyed9p24vtxUvw-1 X-Mimecast-MFC-AGG-ID: Scw9GUWdPyed9p24vtxUvw_1759928070 To: devel@lists.libvirt.org Subject: [PATCH v2 21/29] conf: More hyperv related members into a single struct Date: Wed, 8 Oct 2025 14:53:53 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: pWnqHZdWhpbG7B4QIY_AhwmZNP-_eRuGr0MAiS5GfOo_1759928070 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: MX7667Y3SRIIS53QEE2G7Y4EG5SGYLSD X-Message-ID-Hash: MX7667Y3SRIIS53QEE2G7Y4EG5SGYLSD X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759929958065154100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik So far, we have an array of integers (hyperv_features), an uint (hyperv_spinlocks), a string (hyperv_vendor_id) and some tristate switches scattered across virDomainDef. Soon, new knobs will be introduced and keeping the current state would only worsen readability. Introduce virDomainHypervFeatures struct to place hyperv related features there. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/conf/domain_conf.c | 77 ++++++++++++++++++++++------------------ src/conf/domain_conf.h | 15 ++++---- src/conf/virconftypes.h | 2 ++ src/libxl/libxl_conf.c | 2 +- src/qemu/qemu_command.c | 16 ++++----- src/qemu/qemu_process.c | 8 ++--- src/qemu/qemu_validate.c | 12 +++---- 7 files changed, 72 insertions(+), 60 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index d095454283..8c42f95af4 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -4020,6 +4020,13 @@ virDomainOSDefClear(virDomainOSDef *os) } =20 =20 +static void +virDomainHypervFeaturesClear(virDomainHypervFeatures *hv) +{ + g_free(hv->vendor_id); +} + + void virDomainDefFree(virDomainDef *def) { size_t i; @@ -4147,8 +4154,8 @@ void virDomainDefFree(virDomainDef *def) g_free(def->emulator); g_free(def->description); g_free(def->title); + virDomainHypervFeaturesClear(&def->hyperv); g_free(def->kvm_features); - g_free(def->hyperv_vendor_id); g_free(def->tcg_features); =20 virBlkioDeviceArrayClear(def->blkio.devices, @@ -17049,7 +17056,7 @@ virDomainFeaturesHyperVDefParse(virDomainDef *def, &value) < 0) return -1; =20 - def->hyperv_features[feature] =3D value; + def->hyperv.features[feature] =3D value; =20 switch ((virDomainHyperv) feature) { case VIR_DOMAIN_HYPERV_RELAXED: @@ -17075,11 +17082,11 @@ virDomainFeaturesHyperVDefParse(virDomainDef *def, while (child) { if (STREQ((const char *)child->name, "direct")) { if (virXMLPropTristateSwitch(child, "state", VIR_XML_P= ROP_REQUIRED, - &def->hyperv_tlbflush_dir= ect) < 0) + &def->hyperv.tlbflush_dir= ect) < 0) return -1; } else if (STREQ((const char *)child->name, "extended")) { if (virXMLPropTristateSwitch(child, "state", VIR_XML_P= ROP_REQUIRED, - &def->hyperv_tlbflush_ext= ended) < 0) + &def->hyperv.tlbflush_ext= ended) < 0) return -1; } else { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, @@ -17106,7 +17113,7 @@ virDomainFeaturesHyperVDefParse(virDomainDef *def, } =20 if (virXMLPropTristateSwitch(child, "state", VIR_XML_PROP_= REQUIRED, - &def->hyperv_stimer_direct) <= 0) + &def->hyperv.stimer_direct) <= 0) return -1; =20 child =3D xmlNextElementSibling(child); @@ -17118,10 +17125,10 @@ virDomainFeaturesHyperVDefParse(virDomainDef *def, break; =20 if (virXMLPropUInt(node, "retries", 0, VIR_XML_PROP_REQUIRED, - &def->hyperv_spinlocks) < 0) + &def->hyperv.spinlocks) < 0) return -1; =20 - if (def->hyperv_spinlocks < 0xFFF) { + if (def->hyperv.spinlocks < 0xFFF) { virReportError(VIR_ERR_XML_ERROR, "%s", _("HyperV spinlock retry count must be at l= east 4095")); return -1; @@ -17132,15 +17139,15 @@ virDomainFeaturesHyperVDefParse(virDomainDef *def, if (value !=3D VIR_TRISTATE_SWITCH_ON) break; =20 - g_clear_pointer(&def->hyperv_vendor_id, g_free); + g_clear_pointer(&def->hyperv.vendor_id, g_free); =20 - if (!(def->hyperv_vendor_id =3D virXMLPropString(node, "value"= ))) { + if (!(def->hyperv.vendor_id =3D virXMLPropString(node, "value"= ))) { virReportError(VIR_ERR_XML_ERROR, "%s", _("missing 'value' attribute for HyperV fea= ture 'vendor_id'")); return -1; } =20 - if (!STRLIM(def->hyperv_vendor_id, VIR_DOMAIN_HYPERV_VENDOR_ID= _MAX)) { + if (!STRLIM(def->hyperv.vendor_id, VIR_DOMAIN_HYPERV_VENDOR_ID= _MAX)) { virReportError(VIR_ERR_XML_ERROR, _("HyperV vendor_id value must not be more = than %1$d characters."), VIR_DOMAIN_HYPERV_VENDOR_ID_MAX); @@ -17148,7 +17155,7 @@ virDomainFeaturesHyperVDefParse(virDomainDef *def, } =20 /* ensure that the string can be passed to qemu */ - if (strchr(def->hyperv_vendor_id, ',')) { + if (strchr(def->hyperv.vendor_id, ',')) { virReportError(VIR_ERR_XML_ERROR, "%s", _("HyperV vendor_id value is invalid")); return -1; @@ -21641,12 +21648,12 @@ virDomainDefFeaturesCheckABIStability(virDomainDe= f *src, case VIR_DOMAIN_HYPERV_AVIC: case VIR_DOMAIN_HYPERV_EMSR_BITMAP: case VIR_DOMAIN_HYPERV_XMM_INPUT: - if (src->hyperv_features[i] !=3D dst->hyperv_features[i]) { + if (src->hyperv.features[i] !=3D dst->hyperv.features[i]) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("State of HyperV enlightenment featur= e '%1$s' differs: source: '%2$s', destination: '%3$s'"), virDomainHypervTypeToString(i), - virTristateSwitchTypeToString(src->hype= rv_features[i]), - virTristateSwitchTypeToString(dst->hype= rv_features[i])); + virTristateSwitchTypeToString(src->hype= rv.features[i]), + virTristateSwitchTypeToString(dst->hype= rv.features[i])); return false; } =20 @@ -21654,21 +21661,21 @@ virDomainDefFeaturesCheckABIStability(virDomainDe= f *src, =20 case VIR_DOMAIN_HYPERV_SPINLOCKS: /* spinlock count matters! */ - if (src->hyperv_spinlocks !=3D dst->hyperv_spinlocks) { + if (src->hyperv.spinlocks !=3D dst->hyperv.spinlocks) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("HyperV spinlock retry count differs:= source: '%1$u', destination: '%2$u'"), - src->hyperv_spinlocks, - dst->hyperv_spinlocks); + src->hyperv.spinlocks, + dst->hyperv.spinlocks); return false; } break; =20 case VIR_DOMAIN_HYPERV_VENDOR_ID: - if (STRNEQ_NULLABLE(src->hyperv_vendor_id, dst->hyperv_ven= dor_id)) { + if (STRNEQ_NULLABLE(src->hyperv.vendor_id, dst->hyperv.ven= dor_id)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("HyperV vendor_id differs: source: '%= 1$s', destination: '%2$s'"), - src->hyperv_vendor_id, - dst->hyperv_vendor_id); + src->hyperv.vendor_id, + dst->hyperv.vendor_id); return false; } break; @@ -21679,12 +21686,12 @@ virDomainDefFeaturesCheckABIStability(virDomainDe= f *src, } } =20 - if (src->hyperv_features[VIR_DOMAIN_HYPERV_STIMER] =3D=3D VIR_TRISTATE= _SWITCH_ON) { - if (src->hyperv_stimer_direct !=3D dst->hyperv_stimer_direct) { + if (src->hyperv.features[VIR_DOMAIN_HYPERV_STIMER] =3D=3D VIR_TRISTATE= _SWITCH_ON) { + if (src->hyperv.stimer_direct !=3D dst->hyperv.stimer_direct) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("State of HyperV stimer direct feature differ= s: source: '%1$s', destination: '%2$s'"), - virTristateSwitchTypeToString(src->hyperv_stime= r_direct), - virTristateSwitchTypeToString(dst->hyperv_stime= r_direct)); + virTristateSwitchTypeToString(src->hyperv.stime= r_direct), + virTristateSwitchTypeToString(dst->hyperv.stime= r_direct)); return false; } } @@ -28599,11 +28606,11 @@ virDomainFeaturesHyperVDefFormat(virBuffer *buf, g_auto(virBuffer) hypervAttrBuf =3D VIR_BUFFER_INITIALIZER; g_auto(virBuffer) hypervChildBuf =3D VIR_BUFFER_INIT_CHILD(&childB= uf); =20 - if (def->hyperv_features[j] =3D=3D VIR_TRISTATE_SWITCH_ABSENT) + if (def->hyperv.features[j] =3D=3D VIR_TRISTATE_SWITCH_ABSENT) continue; =20 virBufferAsprintf(&hypervAttrBuf, " state=3D'%s'", - virTristateSwitchTypeToString(def->hyperv_featur= es[j])); + virTristateSwitchTypeToString(def->hyperv.featur= es[j])); =20 switch ((virDomainHyperv) j) { case VIR_DOMAIN_HYPERV_RELAXED: @@ -28622,34 +28629,34 @@ virDomainFeaturesHyperVDefFormat(virBuffer *buf, break; =20 case VIR_DOMAIN_HYPERV_SPINLOCKS: - if (def->hyperv_features[j] =3D=3D VIR_TRISTATE_SWITCH_ON) { + if (def->hyperv.features[j] =3D=3D VIR_TRISTATE_SWITCH_ON) { virBufferAsprintf(&hypervAttrBuf, - " retries=3D'%d'", def->hyperv_spinlocks= ); + " retries=3D'%d'", def->hyperv.spinlocks= ); } break; =20 case VIR_DOMAIN_HYPERV_STIMER: - if (def->hyperv_features[j] =3D=3D VIR_TRISTATE_SWITCH_ON && - def->hyperv_stimer_direct =3D=3D VIR_TRISTATE_SWITCH_ON) { + if (def->hyperv.features[j] =3D=3D VIR_TRISTATE_SWITCH_ON && + def->hyperv.stimer_direct =3D=3D VIR_TRISTATE_SWITCH_ON) { virBufferAddLit(&hypervChildBuf, "\n= "); } =20 break; =20 case VIR_DOMAIN_HYPERV_VENDOR_ID: - if (def->hyperv_features[j] =3D=3D VIR_TRISTATE_SWITCH_ON) { + if (def->hyperv.features[j] =3D=3D VIR_TRISTATE_SWITCH_ON) { virBufferEscapeString(&hypervAttrBuf, " value=3D'%s'", - def->hyperv_vendor_id); + def->hyperv.vendor_id); } break; =20 case VIR_DOMAIN_HYPERV_TLBFLUSH: - if (def->hyperv_features[j] !=3D VIR_TRISTATE_SWITCH_ON) + if (def->hyperv.features[j] !=3D VIR_TRISTATE_SWITCH_ON) break; =20 - if (def->hyperv_tlbflush_direct =3D=3D VIR_TRISTATE_SWITCH_ON) + if (def->hyperv.tlbflush_direct =3D=3D VIR_TRISTATE_SWITCH_ON) virBufferAddLit(&hypervChildBuf, "\n= "); - if (def->hyperv_tlbflush_extended =3D=3D VIR_TRISTATE_SWITCH_O= N) + if (def->hyperv.tlbflush_extended =3D=3D VIR_TRISTATE_SWITCH_O= N) virBufferAddLit(&hypervChildBuf, "= \n"); break; =20 diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 9159a69833..5e37ef7b0d 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3124,6 +3124,14 @@ struct _virDomainPstoreDef { virDomainDeviceInfo info; }; =20 +struct _virDomainHypervFeatures { + int features[VIR_DOMAIN_HYPERV_LAST]; + unsigned int spinlocks; + virTristateSwitch stimer_direct; + virTristateSwitch tlbflush_direct; + virTristateSwitch tlbflush_extended; + char *vendor_id; +}; =20 #define SCSI_SUPER_WIDE_BUS_MAX_CONT_UNIT 64 #define SCSI_WIDE_BUS_MAX_CONT_UNIT 16 @@ -3195,19 +3203,14 @@ struct _virDomainDef { * See virDomainDefFeaturesCheckABIStability() for details. */ int features[VIR_DOMAIN_FEATURE_LAST]; int caps_features[VIR_DOMAIN_PROCES_CAPS_FEATURE_LAST]; - int hyperv_features[VIR_DOMAIN_HYPERV_LAST]; + virDomainHypervFeatures hyperv; virDomainFeatureKVM *kvm_features; int msrs_features[VIR_DOMAIN_MSRS_LAST]; int xen_features[VIR_DOMAIN_XEN_LAST]; virDomainXenPassthroughMode xen_passthrough_mode; - unsigned int hyperv_spinlocks; - virTristateSwitch hyperv_stimer_direct; - virTristateSwitch hyperv_tlbflush_direct; - virTristateSwitch hyperv_tlbflush_extended; virGICVersion gic_version; virDomainHPTResizing hpt_resizing; unsigned long long hpt_maxpagesize; /* Stored in KiB */ - char *hyperv_vendor_id; virTristateSwitch apic_eoi; virDomainFeatureTCG *tcg_features; =20 diff --git a/src/conf/virconftypes.h b/src/conf/virconftypes.h index 93fc9c9217..6e2573035a 100644 --- a/src/conf/virconftypes.h +++ b/src/conf/virconftypes.h @@ -142,6 +142,8 @@ typedef struct _virDomainHubDef virDomainHubDef; =20 typedef struct _virDomainHugePage virDomainHugePage; =20 +typedef struct _virDomainHypervFeatures virDomainHypervFeatures; + typedef struct _virDomainIOMMUDef virDomainIOMMUDef; =20 typedef struct _virDomainIOThreadIDDef virDomainIOThreadIDDef; diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index cea4bd801c..3962a7dba2 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -608,7 +608,7 @@ libxlMakeDomBuildInfo(virDomainDef *def, } =20 for (i =3D 0; i < VIR_DOMAIN_HYPERV_LAST; i++) { - if (def->hyperv_features[i] !=3D VIR_TRISTATE_SWITCH_ON) + if (def->hyperv.features[i] !=3D VIR_TRISTATE_SWITCH_ON) continue; =20 switch ((virDomainHyperv) i) { diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 65b50740ce..7a31848d6f 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6492,7 +6492,7 @@ qemuBuildCpuHypervCommandLine(virBuffer *buf, case VIR_DOMAIN_HYPERV_AVIC: case VIR_DOMAIN_HYPERV_EMSR_BITMAP: case VIR_DOMAIN_HYPERV_XMM_INPUT: - if (def->hyperv_features[i] =3D=3D VIR_TRISTATE_SWITCH_ON) { + if (def->hyperv.features[i] =3D=3D VIR_TRISTATE_SWITCH_ON) { const char *name =3D virDomainHypervTypeToString(i); g_autofree char *full_name =3D g_strdup_printf("hv-%s", na= me); const char *qemu_name =3D virQEMUCapsCPUFeatureToQEMU(def-= >os.arch, @@ -6500,27 +6500,27 @@ qemuBuildCpuHypervCommandLine(virBuffer *buf, virBufferAsprintf(buf, ",%s=3Don", qemu_name); } if ((i =3D=3D VIR_DOMAIN_HYPERV_STIMER) && - (def->hyperv_stimer_direct =3D=3D VIR_TRISTATE_SWITCH_ON)) + (def->hyperv.stimer_direct =3D=3D VIR_TRISTATE_SWITCH_ON)) virBufferAsprintf(buf, ",%s=3Don", VIR_CPU_x86_HV_STIMER_D= IRECT); if (i =3D=3D VIR_DOMAIN_HYPERV_TLBFLUSH) { - if (def->hyperv_tlbflush_direct =3D=3D VIR_TRISTATE_SWITCH= _ON) + if (def->hyperv.tlbflush_direct =3D=3D VIR_TRISTATE_SWITCH= _ON) virBufferAsprintf(buf, ",%s=3Don", VIR_CPU_x86_HV_TLBF= LUSH_DIRECT); - if (def->hyperv_tlbflush_extended =3D=3D VIR_TRISTATE_SWIT= CH_ON) + if (def->hyperv.tlbflush_extended =3D=3D VIR_TRISTATE_SWIT= CH_ON) virBufferAsprintf(buf, ",%s=3Don", VIR_CPU_x86_HV_TLBF= LUSH_EXT); } break; =20 case VIR_DOMAIN_HYPERV_SPINLOCKS: - if (def->hyperv_features[i] =3D=3D VIR_TRISTATE_SWITCH_ON) + if (def->hyperv.features[i] =3D=3D VIR_TRISTATE_SWITCH_ON) virBufferAsprintf(buf, ",%s=3D0x%x", VIR_CPU_x86_HV_SPINLOCKS, - def->hyperv_spinlocks); + def->hyperv.spinlocks); break; =20 case VIR_DOMAIN_HYPERV_VENDOR_ID: - if (def->hyperv_features[i] =3D=3D VIR_TRISTATE_SWITCH_ON) + if (def->hyperv.features[i] =3D=3D VIR_TRISTATE_SWITCH_ON) virBufferAsprintf(buf, ",hv-vendor-id=3D%s", - def->hyperv_vendor_id); + def->hyperv.vendor_id); break; =20 case VIR_DOMAIN_HYPERV_LAST: diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 57b14f640e..d42e3f612b 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -4418,7 +4418,7 @@ qemuProcessVerifyHypervFeatures(virDomainDef *def, i =3D=3D VIR_DOMAIN_HYPERV_SPINLOCKS) continue; =20 - if (def->hyperv_features[i] !=3D VIR_TRISTATE_SWITCH_ON) + if (def->hyperv.features[i] !=3D VIR_TRISTATE_SWITCH_ON) continue; =20 cpuFeature =3D g_strdup_printf("hv-%s", virDomainHypervTypeToStrin= g(i)); @@ -4429,7 +4429,7 @@ qemuProcessVerifyHypervFeatures(virDomainDef *def, return -1; } else if (rc =3D=3D 1) { if (i =3D=3D VIR_DOMAIN_HYPERV_STIMER) { - if (def->hyperv_stimer_direct !=3D VIR_TRISTATE_SWITCH_ON) + if (def->hyperv.stimer_direct !=3D VIR_TRISTATE_SWITCH_ON) continue; =20 rc =3D virCPUDataCheckFeature(cpu, VIR_CPU_x86_HV_STIMER_D= IRECT); @@ -4444,7 +4444,7 @@ qemuProcessVerifyHypervFeatures(virDomainDef *def, return -1; } if (i =3D=3D VIR_DOMAIN_HYPERV_TLBFLUSH) { - if (def->hyperv_tlbflush_direct =3D=3D VIR_TRISTATE_SWITCH= _ON) { + if (def->hyperv.tlbflush_direct =3D=3D VIR_TRISTATE_SWITCH= _ON) { rc =3D virCPUDataCheckFeature(cpu, VIR_CPU_x86_HV_TLBF= LUSH_DIRECT); if (rc < 0) return -1; @@ -4455,7 +4455,7 @@ qemuProcessVerifyHypervFeatures(virDomainDef *def, return -1; } } - if (def->hyperv_tlbflush_extended =3D=3D VIR_TRISTATE_SWIT= CH_ON) { + if (def->hyperv.tlbflush_extended =3D=3D VIR_TRISTATE_SWIT= CH_ON) { rc =3D virCPUDataCheckFeature(cpu, VIR_CPU_x86_HV_TLBF= LUSH_EXT); if (rc < 0) return -1; diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 930ba3543f..3e8fdb2268 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -89,8 +89,8 @@ qemuValidateDomainDefPSeriesFeature(const virDomainDef *d= ef, =20 =20 #define CHECK_HV_FEAT(feat, requires) \ - if (def->hyperv_features[feat] =3D=3D VIR_TRISTATE_SWITCH_ON && \ - def->hyperv_features[requires] !=3D VIR_TRISTATE_SWITCH_ON) { \ + if (def->hyperv.features[feat] =3D=3D VIR_TRISTATE_SWITCH_ON && \ + def->hyperv.features[requires] !=3D VIR_TRISTATE_SWITCH_ON) { \ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, \ _("'%1$s' hyperv feature requires '%2$s' feature"),= \ virDomainHypervTypeToString(feat), \ @@ -114,7 +114,7 @@ qemuValidateDomainDefHypervFeatures(const virDomainDef = *def) =20 CHECK_HV_FEAT(VIR_DOMAIN_HYPERV_SYNIC, VIR_DOMAIN_HYPERV_VPINDEX); =20 - if (def->hyperv_features[VIR_DOMAIN_HYPERV_STIMER] =3D=3D VIR_TRISTATE= _SWITCH_ON) { + if (def->hyperv.features[VIR_DOMAIN_HYPERV_STIMER] =3D=3D VIR_TRISTATE= _SWITCH_ON) { if (!virDomainDefHasTimer(def, VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK))= { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("'%1$s' hyperv feature requires '%2$s' timer"= ), @@ -133,9 +133,9 @@ qemuValidateDomainDefHypervFeatures(const virDomainDef = *def) =20 CHECK_HV_FEAT(VIR_DOMAIN_HYPERV_EVMCS, VIR_DOMAIN_HYPERV_VAPIC); =20 - if (def->hyperv_features[VIR_DOMAIN_HYPERV_TLBFLUSH] =3D=3D VIR_TRISTA= TE_SWITCH_ON && - def->hyperv_tlbflush_direct =3D=3D VIR_TRISTATE_SWITCH_ON) { - if (def->hyperv_features[VIR_DOMAIN_HYPERV_VAPIC] !=3D VIR_TRISTAT= E_SWITCH_ON) { + if (def->hyperv.features[VIR_DOMAIN_HYPERV_TLBFLUSH] =3D=3D VIR_TRISTA= TE_SWITCH_ON && + def->hyperv.tlbflush_direct =3D=3D VIR_TRISTATE_SWITCH_ON) { + if (def->hyperv.features[VIR_DOMAIN_HYPERV_VAPIC] !=3D VIR_TRISTAT= E_SWITCH_ON) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("'%1$s' hyperv feature requires '%2$s' featur= e"), VIR_CPU_x86_HV_TLBFLUSH_DIRECT, --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759929748; cv=none; d=zohomail.com; s=zohoarc; b=C4VZH9K/kjCq/GKTEvddyJvs+3ggbtvm/uyx6UH1h/A5Cl0FTWiRz0nC7W3H1JT7XVBzDxNEOnTaCmXmhVWRR/9+4Tc84Nyi4GNjJIyAv20MpjE27u0j5pgAFOUXH8+4m754IW3EYjmaUKDXZFyCbRYo4Sofz5ilRrgk6X0CZRo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759929748; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=qK8M3jruUup9eoQfAhaiZpqyyDMuCxiIKByWhYuxj1M=; b=gYy9HycY6b8jA7OeHzi/s4dZs3y9mC6YylIr2O7W+Nj1RI3QgxQDSm+33GmJv7dKNgSoE4TPZwMj44Q35yJ1XWp5ZDFLhjmBZFKOELlGSh1SlDzqUtwUZCKV3dZ7Z/US5nbAh/oycKyrUbrvwTrwzlUcBrz+MsyCVfu3tN14lJI= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759929748318462.50483065802257; Wed, 8 Oct 2025 06:22:28 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id B124D41B7E; Wed, 8 Oct 2025 09:22:27 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id A040744341; Wed, 8 Oct 2025 09:17:31 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 109A441B30; Wed, 8 Oct 2025 08:55:41 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 6D2414420F for ; Wed, 8 Oct 2025 08:54:33 -0400 (EDT) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-335-Vmhj_fs_MqaF-KtIf7POLQ-1; Wed, 08 Oct 2025 08:54:32 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 404D21800370 for ; Wed, 8 Oct 2025 12:54:31 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 8238719560A2 for ; Wed, 8 Oct 2025 12:54:30 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928073; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=qK8M3jruUup9eoQfAhaiZpqyyDMuCxiIKByWhYuxj1M=; b=CfQj7NA6pVN/ZGeBU1IrmFWsEZpYD7YGIsOTSRlU1ZHtiliEgvB9dCGZvLXfzxR0XhZDx/ wH2StGIyexeI4hBsMHJO4auor3EDty1EHaEa7JGjNBxvxto5SrWIwCEN0QcICUxchfisyZ EuVCxXDXVAY5bnh/SnBiJ930tvKJ1z0= X-MC-Unique: Vmhj_fs_MqaF-KtIf7POLQ-1 X-Mimecast-MFC-AGG-ID: Vmhj_fs_MqaF-KtIf7POLQ_1759928071 To: devel@lists.libvirt.org Subject: [PATCH v2 22/29] docs: Drop remark on now unsupported version of QEMU Date: Wed, 8 Oct 2025 14:53:54 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 2rOWbVb6c2YJatju2lOEcWplL2wtusHLgc4AZdQt_Vg_1759928071 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: Y7C24MIOCXGDBCS2QP3BYTILC3RU2QS5 X-Message-ID-Hash: Y7C24MIOCXGDBCS2QP3BYTILC3RU2QS5 X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759929749619154100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik In formatdomaincaps.rst under section documenting hyperv features there's a paragraph describing behaviour with QEMU older than 6.1.0. Well, as of v11.2.0-rc1~216 the minimum required version is 6.2.0 rendering the paragraph needless. Drop it. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- docs/formatdomaincaps.rst | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/formatdomaincaps.rst b/docs/formatdomaincaps.rst index 664194b16d..4eb8211b09 100644 --- a/docs/formatdomaincaps.rst +++ b/docs/formatdomaincaps.rst @@ -871,10 +871,6 @@ are supported. The ``features`` enum corresponds to th= e ```` element (well, its children) as documented in `Hypervisor features `__. =20 -Please note that depending on the QEMU version some capabilities might be -missing even though QEMU does support them. This is because prior to QEMU-= 6.1.0 -not all features were reported by QEMU. - Launch security ^^^^^^^^^^^^^^^ =20 --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759930047; cv=none; d=zohomail.com; s=zohoarc; b=FSkJixGht2fBcQbHzAIGmBsm0k3F0v813yiMHdBtdo29f5aftw+zwkCNTB6osQuTXTCs79ASempapgCHMQBPPHxlRj9GdWHb70XlM+2L1uAYxL4ZUx+Md9Jqb2OJlWjzIz9bT12QzavHBum9SDTL3/HNYhzg6Qbaj7VkoKpn1wY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759930047; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=hdNTTMUweSCy9SfNuWsqyQeBr6nK+JQW0P8YOL/oUzQ=; b=VKEfT5vQeyM3lHJrsC0aLz2unZzbP2vJW1v9nifpWg1CTmPmYQnFU9UNvvRKJyYcjjHw/hXVveqIJmbG1liWQ4UQ5dIEOcHhvzYa7xu0X/QcFZxMbrCiLGZDOB+u6g7w2uYUPCa9cTksZFvIjpel42hlN6knX9N2niAraxkG1q4= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759930047341105.9881622667018; Wed, 8 Oct 2025 06:27:27 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id A07EF41A4D; Wed, 8 Oct 2025 09:27:26 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 2E2D344577; Wed, 8 Oct 2025 09:18:05 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id ED439441B5; Wed, 8 Oct 2025 08:55:43 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 D8A7E4420D for ; Wed, 8 Oct 2025 08:54:34 -0400 (EDT) Received: from mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-567-omge9zzSNUqUK3z9NJJmhA-1; Wed, 08 Oct 2025 08:54:33 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 5E55219560AE for ; Wed, 8 Oct 2025 12:54:32 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id A939919560A2 for ; Wed, 8 Oct 2025 12:54:31 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928074; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=hdNTTMUweSCy9SfNuWsqyQeBr6nK+JQW0P8YOL/oUzQ=; b=bQuBd/y7OyIl7gVNk1BsGlTYhj/OvwePDHIw4SKokTIqg+MAs3C8I9GFeWhVcduDNRUWkh Z0Dbad6UqBc9qTJQsOuFnb3THvKiCefdb6b/6KgwqxHbAVKKAP9bYGyGvKmh7A6kUagFNW lJt1Y/4ObdcHmNzzwoYkJa356PDKNYA= X-MC-Unique: omge9zzSNUqUK3z9NJJmhA-1 X-Mimecast-MFC-AGG-ID: omge9zzSNUqUK3z9NJJmhA_1759928072 To: devel@lists.libvirt.org Subject: [PATCH v2 23/29] conf: Report default hyperv values in domain capabilities Date: Wed, 8 Oct 2025 14:53:55 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: t-aEWq_lsASo34JuxjFlRtkLImi2cIg30cKIz_H9q7w_1759928072 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: W2LNUP7SXKZZRAMMVLRNCLLQF7XEBD6F X-Message-ID-Hash: W2LNUP7SXKZZRAMMVLRNCLLQF7XEBD6F X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759930049132154101 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik So far the set of available Hyper-V enlightenments are reported in domain capabilities. Well, some enlightenments are more than just simple on/off switch. For instance, the 'spinlocks' enlightenment expects a number, or 'vendor_id' expects a string. All of these have some default values (at least in QEMU) and are used when the passthrough mode is set. Allow querying these defaults in domain capabilities XML. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- docs/formatdomaincaps.rst | 5 ++- src/conf/domain_capabilities.c | 61 ++++++++++++++++++++++++++++++++- src/conf/domain_capabilities.h | 11 ++++++ src/conf/schemas/domaincaps.rng | 29 ++++++++++++++++ src/libvirt_private.syms | 2 ++ src/qemu/qemu_capabilities.c | 12 +++---- 6 files changed, 111 insertions(+), 9 deletions(-) diff --git a/docs/formatdomaincaps.rst b/docs/formatdomaincaps.rst index 4eb8211b09..32dc09d41e 100644 --- a/docs/formatdomaincaps.rst +++ b/docs/formatdomaincaps.rst @@ -869,7 +869,10 @@ Hyper-V Enlightenments Report which features improving behavior of guests running Microsoft Windo= ws are supported. The ``features`` enum corresponds to the ```` elem= ent (well, its children) as documented in `Hypervisor features -`__. +`__. The ``defaults`` element then +contains child elements describing default values as reported by hyperviso= r, +e.h. whether direct or extended TLB flushes are available. :since:`(since +11.9.0)` =20 Launch security ^^^^^^^^^^^^^^^ diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c index f29c4e0515..422b68c085 100644 --- a/src/conf/domain_capabilities.c +++ b/src/conf/domain_capabilities.c @@ -92,6 +92,32 @@ virSGXCapabilitiesFree(virSGXCapability *cap) } =20 =20 +void +virDomainCapsFeatureHypervFree(virDomainCapsFeatureHyperv *cap) +{ + if (!cap) + return; + + g_free(cap->vendor_id); + g_free(cap); +} + + +virDomainCapsFeatureHyperv * +virDomainCapsFeatureHypervCopy(virDomainCapsFeatureHyperv *cap) +{ + virDomainCapsFeatureHyperv *ret =3D NULL; + + if (!cap) + return NULL; + + ret =3D g_memdup2(cap, sizeof(virDomainCapsFeatureHyperv)); + ret->vendor_id =3D g_strdup(cap->vendor_id); + + return ret; +} + + static void virDomainCapsDispose(void *obj) { @@ -105,7 +131,7 @@ virDomainCapsDispose(void *obj) virCPUDefFree(caps->cpu.hostModel); virSEVCapabilitiesFree(caps->sev); virSGXCapabilitiesFree(caps->sgx); - g_free(caps->hyperv); + virDomainCapsFeatureHypervFree(caps->hyperv); =20 values =3D &caps->os.loader.values; for (i =3D 0; i < values->nvalues; i++) @@ -791,6 +817,8 @@ static void virDomainCapsFeatureHypervFormat(virBuffer *buf, const virDomainCapsFeatureHyperv *hyperv) { + virBuffer defaults =3D VIR_BUFFER_INIT_CHILD(buf); + if (!hyperv) return; =20 @@ -798,6 +826,37 @@ virDomainCapsFeatureHypervFormat(virBuffer *buf, =20 ENUM_PROCESS(hyperv, features, virDomainHypervTypeToString); =20 + virBufferAdjustIndent(&defaults, 2); + + if (VIR_DOMAIN_CAPS_ENUM_IS_SET(hyperv->features, VIR_DOMAIN_HYPERV_SP= INLOCKS) && + hyperv->spinlocks !=3D 0) { + virBufferAsprintf(&defaults, "%u\n", hyperv= ->spinlocks); + } + + if (VIR_DOMAIN_CAPS_ENUM_IS_SET(hyperv->features, VIR_DOMAIN_HYPERV_ST= IMER) && + hyperv->stimer_direct !=3D VIR_TRISTATE_SWITCH_ABSENT) { + virBufferAsprintf(&defaults, "%s\n", + virTristateSwitchTypeToString(hyperv->stimer_dir= ect)); + } + + if (VIR_DOMAIN_CAPS_ENUM_IS_SET(hyperv->features, VIR_DOMAIN_HYPERV_TL= BFLUSH)) { + if (hyperv->tlbflush_direct !=3D VIR_TRISTATE_SWITCH_ABSENT) { + virBufferAsprintf(&defaults, "%s\n", + virTristateSwitchTypeToString(hyperv->tlbflu= sh_direct)); + } + + if (hyperv->tlbflush_extended !=3D VIR_TRISTATE_SWITCH_ABSENT) { + virBufferAsprintf(&defaults, "%s\n", + virTristateSwitchTypeToString(hyperv->tlbflu= sh_extended)); + } + } + + if (VIR_DOMAIN_CAPS_ENUM_IS_SET(hyperv->features, VIR_DOMAIN_HYPERV_VE= NDOR_ID)) { + virBufferEscapeString(&defaults, "%s\n", hy= perv->vendor_id); + } + + virXMLFormatElement(buf, "defaults", NULL, &defaults); + FORMAT_EPILOGUE(hyperv); } =20 diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h index 43141dbdd5..437981c711 100644 --- a/src/conf/domain_capabilities.h +++ b/src/conf/domain_capabilities.h @@ -163,6 +163,11 @@ typedef struct _virDomainCapsFeatureHyperv virDomainCa= psFeatureHyperv; struct _virDomainCapsFeatureHyperv { virTristateBool supported; virDomainCapsEnum features; /* Info about supported virDomainHyperv fe= atures */ + unsigned int spinlocks; + virTristateSwitch stimer_direct; + virTristateSwitch tlbflush_direct; + virTristateSwitch tlbflush_extended; + char *vendor_id; }; =20 STATIC_ASSERT_ENUM(VIR_DOMAIN_LAUNCH_SECURITY_LAST); @@ -378,3 +383,9 @@ void virSGXCapabilitiesFree(virSGXCapability *capabilities); =20 G_DEFINE_AUTOPTR_CLEANUP_FUNC(virSGXCapability, virSGXCapabilitiesFree); + +void virDomainCapsFeatureHypervFree(virDomainCapsFeatureHyperv *capabiliti= es); +G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainCapsFeatureHyperv, virDomainCapsFea= tureHypervFree); + +virDomainCapsFeatureHyperv * +virDomainCapsFeatureHypervCopy(virDomainCapsFeatureHyperv *cap); diff --git a/src/conf/schemas/domaincaps.rng b/src/conf/schemas/domaincaps.= rng index 7edae54931..8d0380951d 100644 --- a/src/conf/schemas/domaincaps.rng +++ b/src/conf/schemas/domaincaps.rng @@ -509,6 +509,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + =20 diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 1a4f47aabc..26776dff2a 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -217,6 +217,8 @@ virDomainCapsCPUUsableTypeFromString; virDomainCapsCPUUsableTypeToString; virDomainCapsEnumClear; virDomainCapsEnumSet; +virDomainCapsFeatureHypervCopy; +virDomainCapsFeatureHypervFree; virDomainCapsFormat; virDomainCapsNew; virSEVCapabilitiesFree; diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 5b485d7bfb..2ccddbfcaa 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -2070,8 +2070,7 @@ virQEMUCaps *virQEMUCapsNewCopy(virQEMUCaps *qemuCaps) if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SGX_EPC)) virQEMUCapsSGXInfoCopy(&ret->sgxCapabilities, qemuCaps->sgxCapabil= ities); =20 - ret->hypervCapabilities =3D g_memdup2(qemuCaps->hypervCapabilities, - sizeof(virDomainCapsFeatureHyperv)= ); + ret->hypervCapabilities =3D virDomainCapsFeatureHypervCopy(qemuCaps->h= ypervCapabilities); =20 return g_steal_pointer(&ret); } @@ -2113,7 +2112,7 @@ void virQEMUCapsDispose(void *obj) virSEVCapabilitiesFree(qemuCaps->sevCapabilities); virSGXCapabilitiesFree(qemuCaps->sgxCapabilities); =20 - g_free(qemuCaps->hypervCapabilities); + virDomainCapsFeatureHypervFree(qemuCaps->hypervCapabilities); =20 virQEMUCapsAccelClear(&qemuCaps->kvm); virQEMUCapsAccelClear(&qemuCaps->hvf); @@ -3138,7 +3137,7 @@ static int virQEMUCapsProbeHypervCapabilities(virQEMUCaps *qemuCaps, qemuMonitorCPUModelInfo *fullQEMU) { - g_autofree virDomainCapsFeatureHyperv *hvcaps =3D NULL; + g_autoptr(virDomainCapsFeatureHyperv) hvcaps =3D NULL; size_t i; =20 if (!fullQEMU) @@ -4494,7 +4493,7 @@ static int virQEMUCapsParseHypervCapabilities(virQEMUCaps *qemuCaps, xmlXPathContextPtr ctxt) { - g_autofree virDomainCapsFeatureHyperv *hvcaps =3D NULL; + g_autoptr(virDomainCapsFeatureHyperv) hvcaps =3D NULL; xmlNodePtr n =3D NULL; g_autofree xmlNodePtr *capNodes =3D NULL; int ncapNodes; @@ -6930,8 +6929,7 @@ static void virQEMUCapsFillDomainFeatureHypervCaps(virQEMUCaps *qemuCaps, virDomainCaps *domCaps) { - domCaps->hyperv =3D g_memdup2(qemuCaps->hypervCapabilities, - sizeof(virDomainCapsFeatureHyperv)); + domCaps->hyperv =3D virDomainCapsFeatureHypervCopy(qemuCaps->hypervCap= abilities); } =20 =20 --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759930253; cv=none; d=zohomail.com; s=zohoarc; b=Ndfe4M9TAM1nGEWn2A6BfVCgJ8sPNZgTb6gYkorCCzf/VCOuP5zW9crUDBxisdHOSEEimT0GkDYsFi/RN2f8KZglUXrZnZiGMdn8LhFy0AkcLxBPOSe5/3Dp1f+lqW/3+JOHgPgId1PcPlF4hfsfTMKDR6QTmkyHwJWgQQzWKHY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759930253; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=OuqKvjlqhImPwF9ob8UMocJljRlo1tq8HwtOZb1tVDk=; b=QRpgJKeJ/XpdMTtM9t4bRuNL3qgk3AoLx8ylJVtaZxE3Jax7+vV1OdwDUBU0Z7v61czN/8oji2f7mpIlhGEVIGiHAS9jHKtfZ7XIGpECyojVBxsCeeKywnIFjCgOmKhYaVYds3p5HBjfiLtxZWiIQRMfnojvBPIJdtoA8jXEy1I= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759930253835183.61984009422474; Wed, 8 Oct 2025 06:30:53 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id EF6B641C7E; Wed, 8 Oct 2025 09:30:50 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 6C98F44AB6; Wed, 8 Oct 2025 09:18:25 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 9E34C441B8; Wed, 8 Oct 2025 08:55:46 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 E5C6A44239 for ; Wed, 8 Oct 2025 08:54:35 -0400 (EDT) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-479-gwTlr4hWNyG1i_4WdcWOJg-1; Wed, 08 Oct 2025 08:54:34 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 7CAC61800378 for ; Wed, 8 Oct 2025 12:54:33 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id C6B9619560A2 for ; Wed, 8 Oct 2025 12:54:32 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928075; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OuqKvjlqhImPwF9ob8UMocJljRlo1tq8HwtOZb1tVDk=; b=QA9LgwdhfntZadoTCLvCQ6A5oF573990fj68Y13+rtUkcxhDpu6rlFhsDaoIs8eY5eqjVK daqoegy2igt1yAmMH4WGZ71CkC//zOGuDrRW4YpFrAJ4gmyn9PLX+Ulr0sjWiWu09WPxDC YmiJBYvL1og0twHYiIayegQX9Woms/0= X-MC-Unique: gwTlr4hWNyG1i_4WdcWOJg-1 X-Mimecast-MFC-AGG-ID: gwTlr4hWNyG1i_4WdcWOJg_1759928073 To: devel@lists.libvirt.org Subject: [PATCH v2 24/29] qemu_capabilities: Format and parse new hyperv domcaps members Date: Wed, 8 Oct 2025 14:53:56 +0200 Message-ID: <72917816fb04e751f693c1f00f3852a0d2fae11f.1759927755.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: M21n5CX9bsdSbApZep1C0d1upbyAovBr5FckAmtK9wQ_1759928073 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: HC6WTTCJXWQ5IUBUG5ZGZ4IMC2MZ4JZF X-Message-ID-Hash: HC6WTTCJXWQ5IUBUG5ZGZ4IMC2MZ4JZF X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759930255460116601 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik After previous commit the virDomainCapsFeatureHyperv struct gained new members. Since virQEMUCaps struct holds a pointer to such struct we must format and parse it to/from capabilities XML. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_capabilities.c | 42 ++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 2ccddbfcaa..f571596b30 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -4496,6 +4496,7 @@ virQEMUCapsParseHypervCapabilities(virQEMUCaps *qemuC= aps, g_autoptr(virDomainCapsFeatureHyperv) hvcaps =3D NULL; xmlNodePtr n =3D NULL; g_autofree xmlNodePtr *capNodes =3D NULL; + int rc; int ncapNodes; size_t i; =20 @@ -4531,6 +4532,28 @@ virQEMUCapsParseHypervCapabilities(virQEMUCaps *qemu= Caps, VIR_DOMAIN_CAPS_ENUM_SET(hvcaps->features, val); } =20 + rc =3D virXPathUInt("string(./hypervCapabilities/spinlocks)", + ctxt, &hvcaps->spinlocks); + if (rc =3D=3D -2) + return -1; + + rc =3D virXPathTristateSwitch("string(./hypervCapabilities/stimer_dire= ct)", + ctxt, &hvcaps->stimer_direct); + if (rc =3D=3D -2) + return -1; + + rc =3D virXPathTristateSwitch("string(./hypervCapabilities/tlbflush_di= rect)", + ctxt, &hvcaps->tlbflush_direct); + if (rc =3D=3D -2) + return -1; + + rc =3D virXPathTristateSwitch("string(./hypervCapabilities/tlbflush_ex= tended)", + ctxt, &hvcaps->tlbflush_extended); + if (rc =3D=3D -2) + return -1; + + hvcaps->vendor_id =3D virXPathString("string(./hypervCapabilities/vend= or_id)", ctxt); + qemuCaps->hypervCapabilities =3D g_steal_pointer(&hvcaps); return 0; } @@ -5070,6 +5093,25 @@ virQEMUCapsFormatHypervCapabilities(virQEMUCaps *qem= uCaps, virBufferAsprintf(&childBuf, "\n", virDomainHypervTypeToString(i)); } + + if (hvcaps->spinlocks !=3D 0) { + virBufferAsprintf(&childBuf, "%u\n", + hvcaps->spinlocks); + } + if (hvcaps->stimer_direct !=3D VIR_TRISTATE_SWITCH_ABSENT) { + virBufferAsprintf(&childBuf, "%s\n", + virTristateSwitchTypeToString(hvcaps->stimer= _direct)); + } + if (hvcaps->tlbflush_direct !=3D VIR_TRISTATE_SWITCH_ABSENT) { + virBufferAsprintf(&childBuf, "%s\n", + virTristateSwitchTypeToString(hvcaps->tlbflu= sh_direct)); + } + if (hvcaps->tlbflush_extended !=3D VIR_TRISTATE_SWITCH_ABSENT) { + virBufferAsprintf(&childBuf, "%s\n", + virTristateSwitchTypeToString(hvcaps->tlbflu= sh_extended)); + } + virBufferEscapeString(&childBuf, "%s\n", + hvcaps->vendor_id); } =20 return virXMLFormatElement(buf, "hypervCapabilities", &attrBuf, &child= Buf); --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759930714; cv=none; d=zohomail.com; s=zohoarc; b=QSC+ck9hPzMp4R/m+92Wo7XQUScUo2ceaCkTTGZJGxhdZ2CDKUx1y9R06A4IbeY1CM5/A+eGjfnSbVliP7BSPQh6xCLLALc2BMdtnIhCrWQPIkMRHxB6KBu+DnRE2bdDViStDWBPHJYbZBnNhVSG385slXuZRHB6w7t+szQwoyI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759930714; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=JbxcqxKWWx36E/HtHJ6jku9kftesdBS0nCzBjHFMwbA=; b=HdgO2eOTCvfYUBV+HbI31NS8TL82IHWgrKrjD2kWNHYb8Eoo0M3jqxevzLRYSwojznyKj4OMdrgd/7d9f+RNc6nhGgkXtFX6tuF6Y5ihavIc8OrHLJdURllkNABQyovvZ1Jxxrwtwm6WG82Y09xQEMnDdrwoeciMOLW2kJ6u1/8= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759930714481144.73338904980824; Wed, 8 Oct 2025 06:38:34 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id BA89D41C96; Wed, 8 Oct 2025 09:38:33 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 068B544BC9; Wed, 8 Oct 2025 09:18:46 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 1AD6C441E1; Wed, 8 Oct 2025 08:55:49 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 632394424A for ; Wed, 8 Oct 2025 08:54:37 -0400 (EDT) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-210-xS1qLk-LMguUTVEO2z6Jng-1; Wed, 08 Oct 2025 08:54:35 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D03781800378 for ; Wed, 8 Oct 2025 12:54:34 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E4A1419560A2 for ; Wed, 8 Oct 2025 12:54:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928077; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JbxcqxKWWx36E/HtHJ6jku9kftesdBS0nCzBjHFMwbA=; b=AUSizeHnXrWno3YkRPJAC+1pM4JBlMTi/c2rw+Eblojl3jguTtbBHZ9IjUSASNZI1wGV9r LYN+UmlZUoU9XiF1HOjsOFzg/EPDtXtzWJPJys3T1keXCSplGncd3zV7OOV1R3T6jl9J1H jeqWHKR0ebVICC2J4tt+YTf/baskCXU= X-MC-Unique: xS1qLk-LMguUTVEO2z6Jng-1 X-Mimecast-MFC-AGG-ID: xS1qLk-LMguUTVEO2z6Jng_1759928074 To: devel@lists.libvirt.org Subject: [PATCH v2 25/29] qemu_capabilities: Fetch new hyperv domcaps Date: Wed, 8 Oct 2025 14:53:57 +0200 Message-ID: <8d15e40d8a2c9f95ecea5070b43e795aa645ed73.1759927755.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: ZZlDSRf7zy_4d65oo4fhMNbYbB4yb_klsy0uvLO5nbQ_1759928074 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: ZXH75PJF3NDDPZJ2S7MAHHVBLTL7T6TA X-Message-ID-Hash: ZXH75PJF3NDDPZJ2S7MAHHVBLTL7T6TA X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759930717298154101 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Now that everything is prepared, we can start storing the default values for some hyperv features that are reported in domain capabilities XML later. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_capabilities.c | 44 +++++++++++++++++++ .../qemu_10.0.0-q35.x86_64+amdsev.xml | 7 +++ .../domaincapsdata/qemu_10.0.0-q35.x86_64.xml | 7 +++ .../qemu_10.0.0-tcg.x86_64+amdsev.xml | 7 +++ .../domaincapsdata/qemu_10.0.0-tcg.x86_64.xml | 7 +++ .../qemu_10.0.0.x86_64+amdsev.xml | 7 +++ tests/domaincapsdata/qemu_10.0.0.x86_64.xml | 7 +++ .../qemu_10.1.0-q35.x86_64+inteltdx.xml | 7 +++ .../domaincapsdata/qemu_10.1.0-q35.x86_64.xml | 7 +++ .../qemu_10.1.0-tcg.x86_64+inteltdx.xml | 7 +++ .../domaincapsdata/qemu_10.1.0-tcg.x86_64.xml | 7 +++ .../qemu_10.1.0.x86_64+inteltdx.xml | 7 +++ tests/domaincapsdata/qemu_10.1.0.x86_64.xml | 7 +++ .../domaincapsdata/qemu_10.2.0-q35.x86_64.xml | 7 +++ .../domaincapsdata/qemu_10.2.0-tcg.x86_64.xml | 7 +++ tests/domaincapsdata/qemu_10.2.0.x86_64.xml | 7 +++ .../domaincapsdata/qemu_8.0.0-q35.x86_64.xml | 7 +++ .../domaincapsdata/qemu_8.0.0-tcg.x86_64.xml | 7 +++ tests/domaincapsdata/qemu_8.0.0.x86_64.xml | 7 +++ .../domaincapsdata/qemu_8.1.0-q35.x86_64.xml | 7 +++ .../domaincapsdata/qemu_8.1.0-tcg.x86_64.xml | 7 +++ tests/domaincapsdata/qemu_8.1.0.x86_64.xml | 7 +++ .../domaincapsdata/qemu_8.2.0-q35.x86_64.xml | 7 +++ .../domaincapsdata/qemu_8.2.0-tcg.x86_64.xml | 7 +++ tests/domaincapsdata/qemu_8.2.0.x86_64.xml | 7 +++ .../domaincapsdata/qemu_9.0.0-q35.x86_64.xml | 7 +++ .../domaincapsdata/qemu_9.0.0-tcg.x86_64.xml | 7 +++ tests/domaincapsdata/qemu_9.0.0.x86_64.xml | 7 +++ .../domaincapsdata/qemu_9.1.0-q35.x86_64.xml | 7 +++ .../domaincapsdata/qemu_9.1.0-tcg.x86_64.xml | 7 +++ tests/domaincapsdata/qemu_9.1.0.x86_64.xml | 7 +++ .../qemu_9.2.0-q35.x86_64+amdsev.xml | 7 +++ .../domaincapsdata/qemu_9.2.0-q35.x86_64.xml | 7 +++ .../qemu_9.2.0-tcg.x86_64+amdsev.xml | 7 +++ .../domaincapsdata/qemu_9.2.0-tcg.x86_64.xml | 7 +++ .../qemu_9.2.0.x86_64+amdsev.xml | 7 +++ tests/domaincapsdata/qemu_9.2.0.x86_64.xml | 7 +++ .../caps_10.0.0_x86_64+amdsev.xml | 5 +++ .../caps_10.0.0_x86_64.xml | 5 +++ .../caps_10.1.0_x86_64+inteltdx.xml | 5 +++ .../caps_10.1.0_x86_64.xml | 5 +++ .../caps_10.2.0_x86_64.xml | 5 +++ .../caps_8.0.0_x86_64.xml | 5 +++ .../caps_8.1.0_x86_64.xml | 5 +++ .../caps_8.2.0_x86_64.xml | 5 +++ .../caps_9.0.0_x86_64.xml | 5 +++ .../caps_9.1.0_x86_64.xml | 5 +++ .../caps_9.2.0_x86_64+amdsev.xml | 5 +++ .../caps_9.2.0_x86_64.xml | 5 +++ 49 files changed, 356 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index f571596b30..2f4664fce3 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3155,6 +3155,50 @@ virQEMUCapsProbeHypervCapabilities(virQEMUCaps *qemu= Caps, if (!(name =3D STRSKIP(prop.name, "hv-"))) continue; =20 + if (STREQ(prop.name, VIR_CPU_x86_HV_SPINLOCKS)) { + if (prop.type !=3D QEMU_MONITOR_CPU_PROPERTY_NUMBER) { + VIR_DEBUG("Unexpected type '%s' for name '%s'", + qemuMonitorCPUPropertyTypeToString(prop.type), p= rop.name); + continue; + } + + if ((uint32_t)prop.value.number !=3D (uint32_t)-1) + hvcaps->spinlocks =3D prop.value.number; + } else if (STREQ(prop.name, VIR_CPU_x86_HV_STIMER_DIRECT)) { + if (prop.type !=3D QEMU_MONITOR_CPU_PROPERTY_BOOLEAN) { + VIR_DEBUG("Unexpected type '%s' for name '%s'", + qemuMonitorCPUPropertyTypeToString(prop.type), p= rop.name); + } else { + hvcaps->stimer_direct =3D virTristateSwitchFromBool(prop.v= alue.boolean); + } + continue; + } else if (STREQ(prop.name, VIR_CPU_x86_HV_TLBFLUSH_DIRECT)) { + if (prop.type !=3D QEMU_MONITOR_CPU_PROPERTY_BOOLEAN) { + VIR_DEBUG("Unexpected type '%s' for name '%s'", + qemuMonitorCPUPropertyTypeToString(prop.type), p= rop.name); + } else { + hvcaps->tlbflush_direct =3D virTristateSwitchFromBool(prop= .value.boolean); + } + continue; + } else if (STREQ(prop.name, VIR_CPU_x86_HV_TLBFLUSH_EXT)) { + if (prop.type !=3D QEMU_MONITOR_CPU_PROPERTY_BOOLEAN) { + VIR_DEBUG("Unexpected type '%s' for name '%s'", + qemuMonitorCPUPropertyTypeToString(prop.type), p= rop.name); + } else { + hvcaps->tlbflush_extended =3D virTristateSwitchFromBool(pr= op.value.boolean); + } + continue; + } else if (STREQ(prop.name, "hv-vendor-id")) { + if (prop.type !=3D QEMU_MONITOR_CPU_PROPERTY_STRING) { + VIR_DEBUG("Unexpected type '%s' for name '%s'", + qemuMonitorCPUPropertyTypeToString(prop.type), p= rop.name); + continue; + } + + if (STRNEQ(prop.value.string, "")) + hvcaps->vendor_id =3D g_strdup(prop.value.string); + } + hvprop =3D virDomainHypervTypeFromString(name); =20 if (hvprop < 0) { diff --git a/tests/domaincapsdata/qemu_10.0.0-q35.x86_64+amdsev.xml b/tests= /domaincapsdata/qemu_10.0.0-q35.x86_64+amdsev.xml index 5ef892e1ff..ec2944d380 100644 --- a/tests/domaincapsdata/qemu_10.0.0-q35.x86_64+amdsev.xml +++ b/tests/domaincapsdata/qemu_10.0.0-q35.x86_64+amdsev.xml @@ -861,6 +861,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_10.0.0-q35.x86_64.xml b/tests/domain= capsdata/qemu_10.0.0-q35.x86_64.xml index 60cee93cb6..abe4536c18 100644 --- a/tests/domaincapsdata/qemu_10.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_10.0.0-q35.x86_64.xml @@ -1716,6 +1716,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64+amdsev.xml b/tests= /domaincapsdata/qemu_10.0.0-tcg.x86_64+amdsev.xml index 6dc5bccfed..481092d7b1 100644 --- a/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64+amdsev.xml +++ b/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64+amdsev.xml @@ -1830,6 +1830,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64.xml b/tests/domain= capsdata/qemu_10.0.0-tcg.x86_64.xml index de4fbe0dbe..3bec568edf 100644 --- a/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64.xml @@ -1824,6 +1824,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_10.0.0.x86_64+amdsev.xml b/tests/dom= aincapsdata/qemu_10.0.0.x86_64+amdsev.xml index 74bc0dc84e..818876eb89 100644 --- a/tests/domaincapsdata/qemu_10.0.0.x86_64+amdsev.xml +++ b/tests/domaincapsdata/qemu_10.0.0.x86_64+amdsev.xml @@ -861,6 +861,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_10.0.0.x86_64.xml b/tests/domaincaps= data/qemu_10.0.0.x86_64.xml index b41e9ae196..c9c89b202b 100644 --- a/tests/domaincapsdata/qemu_10.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_10.0.0.x86_64.xml @@ -1716,6 +1716,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_10.1.0-q35.x86_64+inteltdx.xml b/tes= ts/domaincapsdata/qemu_10.1.0-q35.x86_64+inteltdx.xml index fafa28ecbe..e7b1e4d1ae 100644 --- a/tests/domaincapsdata/qemu_10.1.0-q35.x86_64+inteltdx.xml +++ b/tests/domaincapsdata/qemu_10.1.0-q35.x86_64+inteltdx.xml @@ -773,6 +773,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_10.1.0-q35.x86_64.xml b/tests/domain= capsdata/qemu_10.1.0-q35.x86_64.xml index 3479493fca..9c832a7bfd 100644 --- a/tests/domaincapsdata/qemu_10.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_10.1.0-q35.x86_64.xml @@ -1741,6 +1741,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64+inteltdx.xml b/tes= ts/domaincapsdata/qemu_10.1.0-tcg.x86_64+inteltdx.xml index eba8023fc8..b0eb35c6c8 100644 --- a/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64+inteltdx.xml +++ b/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64+inteltdx.xml @@ -1820,6 +1820,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64.xml b/tests/domain= capsdata/qemu_10.1.0-tcg.x86_64.xml index fd4ea39d42..fb6540b94a 100644 --- a/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64.xml @@ -1821,6 +1821,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_10.1.0.x86_64+inteltdx.xml b/tests/d= omaincapsdata/qemu_10.1.0.x86_64+inteltdx.xml index 9ea7d779b5..468dc22ce9 100644 --- a/tests/domaincapsdata/qemu_10.1.0.x86_64+inteltdx.xml +++ b/tests/domaincapsdata/qemu_10.1.0.x86_64+inteltdx.xml @@ -773,6 +773,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_10.1.0.x86_64.xml b/tests/domaincaps= data/qemu_10.1.0.x86_64.xml index fc90d0d680..df171bb5d7 100644 --- a/tests/domaincapsdata/qemu_10.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_10.1.0.x86_64.xml @@ -1741,6 +1741,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_10.2.0-q35.x86_64.xml b/tests/domain= capsdata/qemu_10.2.0-q35.x86_64.xml index d81f1632a3..409357d8f4 100644 --- a/tests/domaincapsdata/qemu_10.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_10.2.0-q35.x86_64.xml @@ -994,6 +994,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_10.2.0-tcg.x86_64.xml b/tests/domain= capsdata/qemu_10.2.0-tcg.x86_64.xml index c439ea0eee..c43f7eb9ce 100644 --- a/tests/domaincapsdata/qemu_10.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_10.2.0-tcg.x86_64.xml @@ -1821,6 +1821,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_10.2.0.x86_64.xml b/tests/domaincaps= data/qemu_10.2.0.x86_64.xml index 59ac0015ce..65283fb50a 100644 --- a/tests/domaincapsdata/qemu_10.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_10.2.0.x86_64.xml @@ -994,6 +994,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml b/tests/domainc= apsdata/qemu_8.0.0-q35.x86_64.xml index 7fd6a8b043..8a5277934d 100644 --- a/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml @@ -1262,6 +1262,13 @@ emsr_bitmap xmm_input + + 4095 + on + off + off + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml b/tests/domainc= apsdata/qemu_8.0.0-tcg.x86_64.xml index 949534b6cc..9348304998 100644 --- a/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml @@ -1755,6 +1755,13 @@ emsr_bitmap xmm_input + + 4095 + on + off + off + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml b/tests/domaincapsd= ata/qemu_8.0.0.x86_64.xml index db709b0355..f68a87f2e0 100644 --- a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.0.0.x86_64.xml @@ -1262,6 +1262,13 @@ emsr_bitmap xmm_input + + 4095 + on + off + off + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml b/tests/domainc= apsdata/qemu_8.1.0-q35.x86_64.xml index 5130dd0c6c..a9a113326a 100644 --- a/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml @@ -1520,6 +1520,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml b/tests/domainc= apsdata/qemu_8.1.0-tcg.x86_64.xml index 8381303e99..f1f41fbe96 100644 --- a/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml @@ -1776,6 +1776,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_8.1.0.x86_64.xml b/tests/domaincapsd= ata/qemu_8.1.0.x86_64.xml index 705e7be2e7..13541e8421 100644 --- a/tests/domaincapsdata/qemu_8.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.1.0.x86_64.xml @@ -1520,6 +1520,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml b/tests/domainc= apsdata/qemu_8.2.0-q35.x86_64.xml index 8e026e2f40..dabdf47c6b 100644 --- a/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml @@ -1522,6 +1522,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml b/tests/domainc= apsdata/qemu_8.2.0-tcg.x86_64.xml index 5878c09b14..7538570678 100644 --- a/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml @@ -1743,6 +1743,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_8.2.0.x86_64.xml b/tests/domaincapsd= ata/qemu_8.2.0.x86_64.xml index 921e87a285..ffcfc42b08 100644 --- a/tests/domaincapsdata/qemu_8.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.2.0.x86_64.xml @@ -1522,6 +1522,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml b/tests/domainc= apsdata/qemu_9.0.0-q35.x86_64.xml index 16f8b46b15..7289d5fbdc 100644 --- a/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml @@ -1522,6 +1522,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml b/tests/domainc= apsdata/qemu_9.0.0-tcg.x86_64.xml index 79411ea73f..141edc67f3 100644 --- a/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml @@ -1672,6 +1672,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_9.0.0.x86_64.xml b/tests/domaincapsd= ata/qemu_9.0.0.x86_64.xml index fa378cf372..5a636f06a8 100644 --- a/tests/domaincapsdata/qemu_9.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.0.0.x86_64.xml @@ -1522,6 +1522,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml b/tests/domainc= apsdata/qemu_9.1.0-q35.x86_64.xml index c7ae480df8..4003af73de 100644 --- a/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml @@ -1658,6 +1658,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml b/tests/domainc= apsdata/qemu_9.1.0-tcg.x86_64.xml index 94b530d1e8..2fdeeb143a 100644 --- a/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml @@ -1777,6 +1777,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_9.1.0.x86_64.xml b/tests/domaincapsd= ata/qemu_9.1.0.x86_64.xml index fce0504d60..ba78d5d24d 100644 --- a/tests/domaincapsdata/qemu_9.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.1.0.x86_64.xml @@ -1658,6 +1658,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_9.2.0-q35.x86_64+amdsev.xml b/tests/= domaincapsdata/qemu_9.2.0-q35.x86_64+amdsev.xml index 3667417d1b..099c503551 100644 --- a/tests/domaincapsdata/qemu_9.2.0-q35.x86_64+amdsev.xml +++ b/tests/domaincapsdata/qemu_9.2.0-q35.x86_64+amdsev.xml @@ -861,6 +861,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_9.2.0-q35.x86_64.xml b/tests/domainc= apsdata/qemu_9.2.0-q35.x86_64.xml index b4437dd3d0..f83af00819 100644 --- a/tests/domaincapsdata/qemu_9.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.2.0-q35.x86_64.xml @@ -1716,6 +1716,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64+amdsev.xml b/tests/= domaincapsdata/qemu_9.2.0-tcg.x86_64+amdsev.xml index d214915a48..28b9647f14 100644 --- a/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64+amdsev.xml +++ b/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64+amdsev.xml @@ -1830,6 +1830,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64.xml b/tests/domainc= apsdata/qemu_9.2.0-tcg.x86_64.xml index 04c13a1335..f3469cdade 100644 --- a/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64.xml @@ -1824,6 +1824,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_9.2.0.x86_64+amdsev.xml b/tests/doma= incapsdata/qemu_9.2.0.x86_64+amdsev.xml index 9b62c679b7..462365ee12 100644 --- a/tests/domaincapsdata/qemu_9.2.0.x86_64+amdsev.xml +++ b/tests/domaincapsdata/qemu_9.2.0.x86_64+amdsev.xml @@ -861,6 +861,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/domaincapsdata/qemu_9.2.0.x86_64.xml b/tests/domaincapsd= ata/qemu_9.2.0.x86_64.xml index 3d970f53db..756e2cf90a 100644 --- a/tests/domaincapsdata/qemu_9.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_9.2.0.x86_64.xml @@ -1716,6 +1716,13 @@ emsr_bitmap xmm_input + + 4095 + on + on + on + Linux KVM Hv + diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml b/tes= ts/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml index b83de7cc4d..e410e11dbe 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_x86_64+amdsev.xml @@ -3374,5 +3374,10 @@ + 4095 + on + on + on + Linux KVM Hv diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml b/tests/qemu= capabilitiesdata/caps_10.0.0_x86_64.xml index 4545de53ef..6b50ff6249 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml @@ -4223,5 +4223,10 @@ + 4095 + on + on + on + Linux KVM Hv diff --git a/tests/qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml b/t= ests/qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml index 3381f0bafa..3d5d53d3e7 100644 --- a/tests/qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml +++ b/tests/qemucapabilitiesdata/caps_10.1.0_x86_64+inteltdx.xml @@ -3581,5 +3581,10 @@ + 4095 + on + on + on + Linux KVM Hv diff --git a/tests/qemucapabilitiesdata/caps_10.1.0_x86_64.xml b/tests/qemu= capabilitiesdata/caps_10.1.0_x86_64.xml index 014e0ff44e..9628c5c999 100644 --- a/tests/qemucapabilitiesdata/caps_10.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_10.1.0_x86_64.xml @@ -4899,5 +4899,10 @@ + 4095 + on + on + on + Linux KVM Hv diff --git a/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml b/tests/qemu= capabilitiesdata/caps_10.2.0_x86_64.xml index 3e5e2cdb08..35d63265f0 100644 --- a/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_10.2.0_x86_64.xml @@ -3946,5 +3946,10 @@ + 4095 + on + on + on + Linux KVM Hv diff --git a/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml b/tests/qemuc= apabilitiesdata/caps_8.0.0_x86_64.xml index 555b078971..f0053a9742 100644 --- a/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml @@ -3453,5 +3453,10 @@ + 4095 + on + off + off + Linux KVM Hv diff --git a/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml b/tests/qemuc= apabilitiesdata/caps_8.1.0_x86_64.xml index 5e44997c91..c8782763aa 100644 --- a/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml @@ -3782,5 +3782,10 @@ + 4095 + on + on + on + Linux KVM Hv diff --git a/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml b/tests/qemuc= apabilitiesdata/caps_8.2.0_x86_64.xml index 232a060750..21f40b7f5a 100644 --- a/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml @@ -3756,5 +3756,10 @@ + 4095 + on + on + on + Linux KVM Hv diff --git a/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml b/tests/qemuc= apabilitiesdata/caps_9.0.0_x86_64.xml index 4953de2247..5ec8321bf2 100644 --- a/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml @@ -3692,5 +3692,10 @@ + 4095 + on + on + on + Linux KVM Hv diff --git a/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml b/tests/qemuc= apabilitiesdata/caps_9.1.0_x86_64.xml index df062944e2..4c0d5a28f9 100644 --- a/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml @@ -3949,5 +3949,10 @@ + 4095 + on + on + on + Linux KVM Hv diff --git a/tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml b/test= s/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml index 048d1b1462..6caddd450f 100644 --- a/tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml +++ b/tests/qemucapabilitiesdata/caps_9.2.0_x86_64+amdsev.xml @@ -3123,5 +3123,10 @@ + 4095 + on + on + on + Linux KVM Hv diff --git a/tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml b/tests/qemuc= apabilitiesdata/caps_9.2.0_x86_64.xml index dd2d876cad..665b82560c 100644 --- a/tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml @@ -3930,5 +3930,10 @@ + 4095 + on + on + on + Linux KVM Hv --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759930412; cv=none; d=zohomail.com; s=zohoarc; b=TjtB4yxV4B/VneLBUEXuwadHsQHLTF5qbuMU+8OAHhkc5gZEL0Z4UHm7ejq0tWf15iCqEjrDN95rPiWGIWXNQ9L28Ho+Xdtzoae+TnC87WT+hHc5i647wbTQvMD1m/O3soEs6dzCcSgE8uSsL39q8VAT/U71BoDdpfMbBfCgYSo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759930412; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=NbUbjSmR0WENpZGbDvvdg1NV8UJYyDRgcyUTwo9lJY8=; b=I8CMnvmAFfm8nPRf+vngWc+5p0eEmI48SI+1mCI3MazFI7lpuNL8M3BvzHyE2OlDPCBt73Zh6UBBIzl+SQFTh9M7xWQxIt/yRHUxjX0i64vxilYBNTBxw0uiH96br384GVpI6rZr6Riph8N4I6+CqnPW//K/ZUrwRtJMTRqw5PY= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759930412213706.6495707187023; Wed, 8 Oct 2025 06:33:32 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 7F5D6418DA; Wed, 8 Oct 2025 09:33:30 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id BF6C64429F; Wed, 8 Oct 2025 09:18:34 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 69232441B6; Wed, 8 Oct 2025 08:55:48 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 375C8442F4 for ; Wed, 8 Oct 2025 08:54:38 -0400 (EDT) Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-280-ktjp3jBYNiitcXLzaZWs9w-1; Wed, 08 Oct 2025 08:54:36 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id EE44D1800576 for ; Wed, 8 Oct 2025 12:54:35 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 446F819560A2 for ; Wed, 8 Oct 2025 12:54:35 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928077; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NbUbjSmR0WENpZGbDvvdg1NV8UJYyDRgcyUTwo9lJY8=; b=V76PhH/H15apZTnfmcrLXfl7ijeEojAalEzIEFECc2DMLk8B1SN3kpOOlntkzeMplxZyB6 E8w5sn5IpLNyA3m5mVVZpAg+8n7kBOam0si8qafq61ZfxEMLObhYqZtSxeQvqCmvHxkDbc 8aUC0TffG0Uws1PDj5jgn18KEXXqT90= X-MC-Unique: ktjp3jBYNiitcXLzaZWs9w-1 X-Mimecast-MFC-AGG-ID: ktjp3jBYNiitcXLzaZWs9w_1759928076 To: devel@lists.libvirt.org Subject: [PATCH v2 26/29] qemu_caps: Introduce virQEMUCapsGetHypervCapabilities() Date: Wed, 8 Oct 2025 14:53:58 +0200 Message-ID: <611b1fbf747e3f4cd899d4517155401521c7f381.1759927755.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 1cDZTww3fD68-Hie5VoYQZmxzCsVLhbYH4T_HQk3ZHM_1759928076 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: YTMGVH7SYFF5GNFQEHNLGWROEYH77NY4 X-Message-ID-Hash: YTMGVH7SYFF5GNFQEHNLGWROEYH77NY4 X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759930415422154100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik We'll need to access hypervCapabilities memeber later on. Introduce a getter function. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_capabilities.c | 7 +++++++ src/qemu/qemu_capabilities.h | 3 +++ 2 files changed, 10 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 2f4664fce3..83946123be 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -2710,6 +2710,13 @@ virQEMUCapsGetSGXCapabilities(virQEMUCaps *qemuCaps) } =20 =20 +virDomainCapsFeatureHyperv * +virQEMUCapsGetHypervCapabilities(virQEMUCaps *qemuCaps) +{ + return qemuCaps->hypervCapabilities; +} + + static int virQEMUCapsProbeQMPObjectTypes(virQEMUCaps *qemuCaps, qemuMonitor *mon) diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index c71fc19a03..2b454e0352 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -957,6 +957,9 @@ virQEMUCapsGetSEVCapabilities(virQEMUCaps *qemuCaps); virSGXCapability * virQEMUCapsGetSGXCapabilities(virQEMUCaps *qemuCaps); =20 +virDomainCapsFeatureHyperv * +virQEMUCapsGetHypervCapabilities(virQEMUCaps *qemuCaps); + bool virQEMUCapsGetKVMSupportsSecureGuest(virQEMUCaps *qemuCaps) ATTRIBUTE_MOCK= ABLE; =20 --=20 2.49.1 From nobody Wed Oct 22 03:41:45 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1759930342; cv=none; d=zohomail.com; s=zohoarc; b=DtVrHuV5GDtRvFhEKTOQ6LBXelb5qmmOL2Mbf51A52hJuUmCfLSlZ1PqYqvSfCZKe0JCRpP5sHVn64IdZrKTSVMlbcoDr2F9tTuJKNDFG+V0cjEFubG+6SoPIODXLgKKOo/0aouPe3SyAzqR4QcWE0Ad8vyw7cJSzCNs8+vPmg8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759930342; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=6m/S0hwc6uN2zV+o9NbqbtjWvwatojFslPatCfSfNRI=; b=RaT2oLbQLkm3oHtJb6DJE6RQweBlegZQpkGvll9WQN2uARSlO4okEcFsRRXvpTPl2Xj0r2tWYeXCT0KHEng3lj3x+7mD94S2JTgGvhx4mDXPXYRHuB1iVmhAUz6FA5MEDE9vv7VXVp00L/de7fUW6bdWMsmsvbQcFiSmGYoaSJs= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1759930342052614.5842974988749; Wed, 8 Oct 2025 06:32:22 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 7607A41B79; Wed, 8 Oct 2025 09:32:21 -0400 (EDT) Received: from [172.19.199.17] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 1F223449CE; Wed, 8 Oct 2025 09:18:31 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id BF00B441BD; Wed, 8 Oct 2025 08:55:47 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 6407E4426B for ; Wed, 8 Oct 2025 08:54:39 -0400 (EDT) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-103-8YZNQ6gYOl-tmoylgFc_Pg-1; Wed, 08 Oct 2025 08:54:37 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 170BB1800447 for ; Wed, 8 Oct 2025 12:54:37 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6240219560B8 for ; Wed, 8 Oct 2025 12:54:36 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, 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=redhat.com; s=mimecast20190719; t=1759928079; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6m/S0hwc6uN2zV+o9NbqbtjWvwatojFslPatCfSfNRI=; b=S5ofpeduIAbqDbG8m01U+soPaBufCZ2d0CmSKfybA7DTeYoWIeqzRmHDOn2Rg2lHhMxFIJ bGyDCvy/1lwC/K6BaYJL+LabR8GoPADTlr0xAVdVmzDl0GUXAXwLulnXaFh3h52vhfPFYG r1hiSP2NOaiXyfKqfQugqbP6EkRwysE= X-MC-Unique: 8YZNQ6gYOl-tmoylgFc_Pg-1 X-Mimecast-MFC-AGG-ID: 8YZNQ6gYOl-tmoylgFc_Pg_1759928077 To: devel@lists.libvirt.org Subject: [PATCH v2 27/29] conf: Introduce hyperv host-model mode Date: Wed, 8 Oct 2025 14:53:59 +0200 Message-ID: <8bbbcbc96ae42b46ea3e9db943165bb8f36435f9.1759927755.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: ZfP9qj27284nUzbhnsk84nTTFI5CEv81bK4WLlfoK94_1759928077 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: EKTEWWRVYZQZ4FY5XFAGNPKWU46KZD7A X-Message-ID-Hash: EKTEWWRVYZQZ4FY5XFAGNPKWU46KZD7A X-MailFrom: mprivozn@redhat.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 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: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1759930344768154100 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik So far we have two modes for hyperv features: 1) custom, where users have to enable features explicitly, and 2) passthrough, where hypervisor enables features automagically. Problem with 'custom' mode is that some features are not plain on/off switches but expect int/string value. Until very recently, these were not reported in domcaps. And even if they were it's a bit cumbersome. Problem with 'passthrough' mode is that users don't get to see the expanded list of enlightenments enabled. Therefore, mimic what we're already doing with CPUs: have 'host-model' which gets expanded at domain startup and is fixed throughout domain's run. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- docs/formatdomain.rst | 6 ++++ src/conf/domain_conf.c | 4 ++- src/conf/domain_conf.h | 1 + src/conf/schemas/domaincommon.rng | 3 ++ src/libxl/libxl_conf.c | 1 + src/qemu/qemu_command.c | 1 + .../hyperv-host-model.x86_64-latest.args | 32 ++++++++++++++++++ .../hyperv-host-model.x86_64-latest.xml | 33 +++++++++++++++++++ tests/qemuxmlconfdata/hyperv-host-model.xml | 27 +++++++++++++++ tests/qemuxmlconftest.c | 1 + 10 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 tests/qemuxmlconfdata/hyperv-host-model.x86_64-latest.a= rgs create mode 100644 tests/qemuxmlconfdata/hyperv-host-model.x86_64-latest.x= ml create mode 100644 tests/qemuxmlconfdata/hyperv-host-model.xml diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index fcf3ad8d29..13c624fe5b 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -2189,6 +2189,12 @@ are: virtual CPU may or may not contain features which may block migration even to an identical host. =20 + ``host-model`` + Similar to the ``passthrough`` mode, except libvirt detects which + enlightenments are supported by hypervisor and expands them on domain + startup into the live XML. In a sense, this is similar to ``host-mod= el`` + CPU mode (See `CPU model and topology`_). :since:`Since 11.9.0` + The ``mode`` attribute can be omitted and will default to ``custom``. =20 ``pvspinlock`` diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 8c42f95af4..4737594487 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -145,6 +145,7 @@ VIR_ENUM_IMPL(virDomainHyperVMode, "none", "custom", "passthrough", + "host-model", ); =20 VIR_ENUM_IMPL(virDomainBoot, @@ -17035,7 +17036,8 @@ virDomainFeaturesHyperVDefParse(virDomainDef *def, =20 def->features[VIR_DOMAIN_FEATURE_HYPERV] =3D mode; =20 - if (mode =3D=3D VIR_DOMAIN_HYPERV_MODE_PASSTHROUGH) + if (mode =3D=3D VIR_DOMAIN_HYPERV_MODE_PASSTHROUGH || + mode =3D=3D VIR_DOMAIN_HYPERV_MODE_HOST_MODEL) return 0; =20 node =3D xmlFirstElementChild(node); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 5e37ef7b0d..a63d922853 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -164,6 +164,7 @@ typedef enum { VIR_DOMAIN_HYPERV_MODE_NONE =3D 0, VIR_DOMAIN_HYPERV_MODE_CUSTOM, VIR_DOMAIN_HYPERV_MODE_PASSTHROUGH, + VIR_DOMAIN_HYPERV_MODE_HOST_MODEL, =20 VIR_DOMAIN_HYPERV_MODE_LAST } virDomainHyperVMode; diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincom= mon.rng index b9230a35b4..ace74fee08 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -8030,6 +8030,9 @@ passthrough + + host-model + diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index 3962a7dba2..2b988157fa 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -599,6 +599,7 @@ libxlMakeDomBuildInfo(virDomainDef *def, case VIR_DOMAIN_HYPERV_MODE_PASSTHROUGH: libxl_bitmap_set_any(&b_info->u.hvm.viridian_enable); break; + case VIR_DOMAIN_HYPERV_MODE_HOST_MODEL: case VIR_DOMAIN_HYPERV_MODE_NONE: case VIR_DOMAIN_HYPERV_MODE_LAST: default: diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 7a31848d6f..609d0677df 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6461,6 +6461,7 @@ qemuBuildCpuHypervCommandLine(virBuffer *buf, =20 switch ((virDomainHyperVMode) def->features[VIR_DOMAIN_FEATURE_HYPERV]= ) { case VIR_DOMAIN_HYPERV_MODE_CUSTOM: + case VIR_DOMAIN_HYPERV_MODE_HOST_MODEL: break; =20 case VIR_DOMAIN_HYPERV_MODE_PASSTHROUGH: diff --git a/tests/qemuxmlconfdata/hyperv-host-model.x86_64-latest.args b/t= ests/qemuxmlconfdata/hyperv-host-model.x86_64-latest.args new file mode 100644 index 0000000000..2ed72fcd1b --- /dev/null +++ b/tests/qemuxmlconfdata/hyperv-host-model.x86_64-latest.args @@ -0,0 +1,32 @@ +LC_ALL=3DC \ +PATH=3D/bin \ +HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \ +USER=3Dtest \ +LOGNAME=3Dtest \ +XDG_DATA_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \ +XDG_CACHE_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \ +XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \ +/usr/bin/qemu-system-x86_64 \ +-name guest=3DQEMUGuest1,debug-threads=3Don \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/va= r/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \ +-machine pc,usb=3Doff,dump-guest-core=3Doff,memory-backend=3Dpc.ram,acpi= =3Don \ +-accel tcg \ +-cpu qemu64 \ +-m size=3D219136k \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}'= \ +-overcommit mem-lock=3Doff \ +-smp 6,sockets=3D6,cores=3D1,threads=3D1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=3Dcharmonitor,fd=3D1729,server=3Don,wait=3Doff \ +-mon chardev=3Dcharmonitor,id=3Dmonitor,mode=3Dcontrol \ +-rtc base=3Dutc \ +-no-shutdown \ +-boot strict=3Don \ +-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0= x2"}' \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ +-msg timestamp=3Don diff --git a/tests/qemuxmlconfdata/hyperv-host-model.x86_64-latest.xml b/te= sts/qemuxmlconfdata/hyperv-host-model.x86_64-latest.xml new file mode 100644 index 0000000000..453a43b3c9 --- /dev/null +++ b/tests/qemuxmlconfdata/hyperv-host-model.x86_64-latest.xml @@ -0,0 +1,33 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219100 + 219100 + 6 + + hvm + + + + + + + + qemu64 + + + destroy + restart + destroy + + /usr/bin/qemu-system-x86_64 + +
+ + + + +