From nobody Mon Feb 2 09:11:34 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=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=1767709807; cv=none; d=zohomail.com; s=zohoarc; b=R8BiXZ7g4PyZtAhHXWTdmyY+F6LZVwgv4fInadforNQAiFLjwdkUMy354p1enVfX/8+aTXpLL+xDjxq4K2P2FdzqluH8PZxgOf2BXxnGUm99ysiV7g2t8+kB5FLCsTpM8UGs+y5ymO0z4i7J5d0/lJL9vETEEkGXUtCZxmwuyaw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767709807; 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=ZViE4p4iKeBth6/FlYOnWtsYFle3wMNm3fXqhvBlfX4=; b=QK4tthlSFsxPMAGmXQSLx7c/7zya1XPLYWKWtxW9KR3eH8AdR3hmPD/EHMckWyFbSQ10phLHDkEvyul1ZtsszLl+Fkbi7LPZEfFzAOIC6/c6QdT1cvweQ1Sjc2LQ1bLg3Oqnl3nkxEuqguLmFPtxhyZ1RFesK19D151ua3DGD1g= 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 1767709807771326.42378295916774; Tue, 6 Jan 2026 06:30:07 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 9F513418B1; Tue, 6 Jan 2026 09:30:06 -0500 (EST) Received: from [172.19.199.83] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 75E0641C1F; Tue, 6 Jan 2026 09:28:06 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 68F2341B23; Tue, 6 Jan 2026 09:25:54 -0500 (EST) 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 45DA141B24 for ; Tue, 6 Jan 2026 09:25:37 -0500 (EST) 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-640-yPffO1JwNOShuDke9GL1-Q-1; Tue, 06 Jan 2026 09:25:35 -0500 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (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 28B131977510 for ; Tue, 6 Jan 2026 14:25:26 +0000 (UTC) Received: from moe (unknown [10.43.3.236]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 848EE180044F for ; Tue, 6 Jan 2026 14:25: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=-5.0 required=5.0 tests=BAYES_00,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=1767709536; 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=ZViE4p4iKeBth6/FlYOnWtsYFle3wMNm3fXqhvBlfX4=; b=P5/KcblsJ837szGoWVJPO8FHj6+VP5+X3ZWTCsmdgOqoq0sMesWOWFxTWZcMmdwsWHIFwQ vIdoSHnK4lcKzpqOxaElCz7K9WwOj/uJM99opZasQU1es75c6d1vZ+O69gHKYQUWYYsRRz 61f7RYvqxoNigcCRRamFqM7TLhRsNFQ= X-MC-Unique: yPffO1JwNOShuDke9GL1-Q-1 X-Mimecast-MFC-AGG-ID: yPffO1JwNOShuDke9GL1-Q_1767709534 To: devel@lists.libvirt.org Subject: [PATCH 2/3] qemu: Skip validation of VIR_DOMAIN_HYPERV_SYNIC on i440fx Date: Tue, 6 Jan 2026 15:25:17 +0100 Message-ID: <04cdc9005bdc1244683472f9168374a24bcf6467.1767709486.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: wk1Nkz2H8uyeIprjzZPCqflpLe5kUsmUm3kqsYyY2tA_1767709534 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 3FW3YMSJWB5R4WEOCPQZPUV2O3UP53UY X-Message-ID-Hash: 3FW3YMSJWB5R4WEOCPQZPUV2O3UP53UY 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: 1767709811273158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Turns out, that synic hyperv enlightenment not always requires vpindex. Some (older) machine types (e.g. pc-i440fx-3.0, pc-i440fx-rhel7.6.0) can run with synic enabled and vpindex disabled. This is because they did enable 'x-hv-synic-kvm-only' CPU property, but starting from QEMU commit v3.1.0-rc0~44^2~9 the property is disabled by default. To avoid parsing machine type version, let's just skip this dependency validation for all i440fx machine types with a note to remove the limitation once affected machine types go out of support. Now, q35 has this dependency, although it might be not visible at the first glance. Inside of target/i386/kvm/kvm.c there's kvm_hyperv_properties[] array declared and in there HYPERV_FEAT_SYNIC doesn't have any .dependencies set. But looking couple of pages down at kvm_hyperv_expand_features() function, there's the following check: /* Additional dependencies not covered by kvm_hyperv_properties[] */ if (hyperv_feat_enabled(cpu, HYPERV_FEAT_SYNIC) && !cpu->hyperv_synic_kvm_only && !hyperv_feat_enabled(cpu, HYPERV_FEAT_VPINDEX)) { error_setg(errp, "Hyper-V %s requires Hyper-V %s", kvm_hyperv_properties[HYPERV_FEAT_SYNIC].desc, kvm_hyperv_properties[HYPERV_FEAT_VPINDEX].desc); return false; } And as noted above, 'hyperv_synic_kvm_only' is false by default. Resolves: https://gitlab.com/libvirt/libvirt/-/issues/837 Resolves: https://issues.redhat.com/browse/RHEL-138689 Fixes: 1822d030c32d9857020ee8385b0a8808a29a472f Signed-off-by: Michal Privoznik --- src/qemu/qemu_validate.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index da08fd17cd..a8b1029d0c 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -112,7 +112,13 @@ qemuValidateDomainDefHypervFeatures(const virDomainDef= *def) return -1; } =20 - CHECK_HV_FEAT(VIR_DOMAIN_HYPERV_SYNIC, VIR_DOMAIN_HYPERV_VPINDEX); + if (!qemuDomainIsI440FX(def)) { + /* Some i440fx machine types don't have this dependency and unless= we + * want to parse machine type version (we do not), just skip this + * check. The worst that'll happen is QEMU will error out later. + * TODO: Remove once pc-i440fx-3.0 is no longer supported. */ + 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))= { --=20 2.52.0