From nobody Tue Aug 25 02:49:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1787562267; cv=none; d=zohomail.com; s=zohoarc; b=m5eVhqtOiYde9YR0daGILH8NQTk+aZwsfkLGmgMRCZS+NPaGzlTGhtqOXMViW8qrgDtlCFZ3bzJXV0XRcApqz8BWNYZ4bq95v9aw1Sc9edBzobPRGojePxtXIC+9oLmQExxbuIwnUxypk8EFIDyFe86Wam5bClUeMW/Wbl8jJVs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787562267; 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=URmRflZ5yOLynAP/LPbf+Wqp0IZFALKtzO3xfHe7KAk=; b=F6O6IQ2NsX1l/IZ9Qz71n/8ukQ6JB71CwO8dvALfxSrxHSB5Ux/H/87bx1iI1rnMw4thJFw2s4NEa8CmsIaMJu282o+WjQaFxWiL20LpNrKAYpsxwPklGLBFnqNWKRbWANhD1tYrX9oWUWBHmr9aVa2b7v0aEUUuuxIIq/0+K6k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1787562267564721.4010066044985; Mon, 24 Aug 2026 02:04:27 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 1314941ACF; Mon, 24 Aug 2026 05:04:26 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id BB0B641BB7 for ; Mon, 24 Aug 2026 05:01:38 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 11F83417D2; Mon, 24 Aug 2026 05:01:19 -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 D33DA41901 for ; Mon, 24 Aug 2026 05:01:18 -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-180-JfewrSbmON6a71jxn1GM1w-1; Mon, 24 Aug 2026 05:01:16 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (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 16E691944A86 for ; Mon, 24 Aug 2026 09:01:16 +0000 (UTC) Received: from moe (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 72A6D3000239 for ; Mon, 24 Aug 2026 09:01: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=0.6 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,RCVD_IN_SBL_CSS,SPF_HELO_PASS autolearn=no autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787562078; 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=URmRflZ5yOLynAP/LPbf+Wqp0IZFALKtzO3xfHe7KAk=; b=JcuzX2ddxhRyPLFNpQqNGwwy9R8qwOoF4QFTbXAWAgoJrJzjktZnhnZeh1SEzbsruxwuwp ZQ52RVpmcgOhqbRzPmED+7AGBFTaA95Hkafd3j4Ze4Z2oVVqkFKut+ipVCS5fenexdiFRG JBDYk29h6edSXoJLqEliypNOIkk0cKw= X-MC-Unique: JfewrSbmON6a71jxn1GM1w-1 X-Mimecast-MFC-AGG-ID: JfewrSbmON6a71jxn1GM1w_1787562076 To: devel@lists.libvirt.org Subject: [PATCH 1/7] vmx: Add SCSI controllers Date: Mon, 24 Aug 2026 11:00:59 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: MW_WzDSsqY9_pmLAFN1wZtvfqD9z_5q0QLyvWPEZfSs_1787562076 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: FM54VHP366ODCJDMZPAZ5SC2XJ3GSCPR X-Message-ID-Hash: FM54VHP366ODCJDMZPAZ5SC2XJ3GSCPR 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: 1787562268491158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Currently, the VMX driver ignores SCSI controllers without disks plugged in (even though they are present in the .vmx file) and adds some "random" ones after SCSI disks are parsed. Well, those controllers from the file are visible to the guest so add those to the domain definition instead. Signed-off-by: Michal Privoznik --- src/vmx/vmx.c | 51 +++++++++++------------- tests/vmx2xmldata/esx-in-the-wild-16.xml | 1 + tests/vmx2xmldata/gsx-in-the-wild-1.xml | 1 + tests/vmx2xmldata/gsx-in-the-wild-2.xml | 1 + tests/vmx2xmldata/gsx-in-the-wild-3.xml | 1 + tests/vmx2xmldata/gsx-in-the-wild-4.xml | 1 + 6 files changed, 29 insertions(+), 27 deletions(-) diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index 72ec1454aa..c438f2720c 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -584,8 +584,11 @@ VIR_ENUM_IMPL(virVMXControllerModelSCSI, ); =20 static int virVMXParseVNC(virConf *conf, virDomainGraphicsDef **def); -static int virVMXParseSCSIController(virConf *conf, int controller, bool *= present, - int *virtualDev); +static int +virVMXParseSCSIController(virDomainDef *def, + virConf *conf, + int controllerIdx, + bool *present); static int virVMXParseSATAController(virConf *conf, int controller, bool *= present); static int virVMXParseNVMEController(virConf *conf, int controller, bool *= present); static int virVMXParseDisk(virVMXContext *ctx, virDomainXMLOption *xmlopt, @@ -1408,7 +1411,6 @@ virVMXParseConfig(virVMXContext *ctx, int bus; int port; bool present; - int scsi_virtualDev[4] =3D { -1, -1, -1, -1 }; int unit; bool hgfs_disabled =3D true; long long sharedFolder_maxNum =3D 0; @@ -1739,8 +1741,7 @@ virVMXParseConfig(virVMXContext *ctx, =20 /* def:disks (scsi) */ for (controller =3D 0; controller < 4; ++controller) { - if (virVMXParseSCSIController(conf, controller, &present, - &scsi_virtualDev[controller]) < 0) { + if (virVMXParseSCSIController(def, conf, controller, &present) < 0= ) { goto cleanup; } =20 @@ -1781,11 +1782,6 @@ virVMXParseConfig(virVMXContext *ctx, /* add all the SCSI controllers we've seen, up until the last one that= is * currently used by a disk */ if (def->ndisks !=3D 0) { - virDomainDeviceInfo *info =3D &def->disks[def->ndisks - 1]->info; - for (controller =3D 0; controller <=3D info->addr.drive.controller= ; controller++) { - virDomainDefAddController(def, VIR_DOMAIN_CONTROLLER_TYPE_SCSI, - controller, scsi_virtualDev[controll= er]); - } saved_ndisks =3D def->ndisks; } =20 @@ -2142,30 +2138,28 @@ virVMXParseVNC(virConf *conf, virDomainGraphicsDef = **def) =20 =20 static int -virVMXParseSCSIController(virConf *conf, int controller, bool *present, - int *virtualDev) +virVMXParseSCSIController(virDomainDef *def, + virConf *conf, + int controllerIdx, + bool *present) { int result =3D -1; char present_name[32]; char virtualDev_name[32]; char *virtualDev_string =3D NULL; char *tmp; + int virtualDev =3D -1; =20 - if (virtualDev =3D=3D NULL || *virtualDev !=3D -1) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Invalid argument")= ); - return -1; - } - - if (controller < 0 || controller > 3) { + if (controllerIdx < 0 || controllerIdx > 3) { virReportError(VIR_ERR_INTERNAL_ERROR, _("SCSI controller index %1$d out of [0..3] range"), - controller); + controllerIdx); return -1; } =20 - g_snprintf(present_name, sizeof(present_name), "scsi%d.present", contr= oller); + g_snprintf(present_name, sizeof(present_name), "scsi%d.present", contr= ollerIdx); g_snprintf(virtualDev_name, sizeof(virtualDev_name), "scsi%d.virtualDe= v", - controller); + controllerIdx); =20 if (virVMXGetConfigBoolean(conf, present_name, present, false, true) <= 0) goto cleanup; @@ -2186,13 +2180,13 @@ virVMXParseSCSIController(virConf *conf, int contro= ller, bool *present, for (; *tmp !=3D '\0'; ++tmp) *tmp =3D g_ascii_tolower(*tmp); =20 - *virtualDev =3D virVMXControllerModelSCSITypeFromString(virtualDev= _string); + virtualDev =3D virVMXControllerModelSCSITypeFromString(virtualDev_= string); =20 - if (*virtualDev =3D=3D -1 || - (*virtualDev !=3D VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC && - *virtualDev !=3D VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC && - *virtualDev !=3D VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068 = && - *virtualDev !=3D VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI)) { + if (virtualDev =3D=3D -1 || + (virtualDev !=3D VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC && + virtualDev !=3D VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC && + virtualDev !=3D VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068 && + virtualDev !=3D VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI)) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Expecting VMX entry '%1$s' to be 'buslogic' = or 'lsilogic' or 'lsisas1068' or 'pvscsi' but found '%2$s'"), virtualDev_name, virtualDev_string); @@ -2200,6 +2194,9 @@ virVMXParseSCSIController(virConf *conf, int controll= er, bool *present, } } =20 + virDomainDefAddController(def, VIR_DOMAIN_CONTROLLER_TYPE_SCSI, + controllerIdx, virtualDev); + result =3D 0; =20 cleanup: diff --git a/tests/vmx2xmldata/esx-in-the-wild-16.xml b/tests/vmx2xmldata/e= sx-in-the-wild-16.xml index ab8497ba2d..77c4a10c1c 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-16.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-16.xml @@ -26,6 +26,7 @@
+ diff --git a/tests/vmx2xmldata/gsx-in-the-wild-1.xml b/tests/vmx2xmldata/gs= x-in-the-wild-1.xml index 4618e574a9..c314d1e4f8 100644 --- a/tests/vmx2xmldata/gsx-in-the-wild-1.xml +++ b/tests/vmx2xmldata/gsx-in-the-wild-1.xml @@ -19,6 +19,7 @@
+ diff --git a/tests/vmx2xmldata/gsx-in-the-wild-2.xml b/tests/vmx2xmldata/gs= x-in-the-wild-2.xml index 8841bc5fdd..fbcbf7ed06 100644 --- a/tests/vmx2xmldata/gsx-in-the-wild-2.xml +++ b/tests/vmx2xmldata/gsx-in-the-wild-2.xml @@ -19,6 +19,7 @@
+ diff --git a/tests/vmx2xmldata/gsx-in-the-wild-3.xml b/tests/vmx2xmldata/gs= x-in-the-wild-3.xml index 181036a126..834731f7df 100644 --- a/tests/vmx2xmldata/gsx-in-the-wild-3.xml +++ b/tests/vmx2xmldata/gsx-in-the-wild-3.xml @@ -19,6 +19,7 @@
+ diff --git a/tests/vmx2xmldata/gsx-in-the-wild-4.xml b/tests/vmx2xmldata/gs= x-in-the-wild-4.xml index f66afe35bd..f91d389aa8 100644 --- a/tests/vmx2xmldata/gsx-in-the-wild-4.xml +++ b/tests/vmx2xmldata/gsx-in-the-wild-4.xml @@ -19,6 +19,7 @@
+ --=20 2.54.0 From nobody Tue Aug 25 02:49:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1787562535; cv=none; d=zohomail.com; s=zohoarc; b=kA+F5CJ4yYvk5gLuxM3xU7g8IceYinqGZAu/eH5yHqRjv+wouHpTw8R1GjFo5mCBlKZ+jQb3N6DzHsc0b0+WsUKDr/V6L4YNnDQp5kkYliq4EJEEiv7zMiCEBdM2Gzj0FhLvLRO7LNc8MPSenASRYKkyeEqv1qba120yfOZ/Yk0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787562535; 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=Xg+UcVVQZu3sEWgLvHLcTgf4wexp9jFB3Fl0JxL87D4=; b=DZ4IZdlMPSW+q+gPA/4CUZopwPrtIIn9DVRwtG82a2+ntUADXAXclMKpmaiZSLXJlSwqN8HMAYjgz35E1gR10jNJLhF+a+3gcO/7BrLEQZ+g0Cx8+K1YU2V4x+TEIaqw0yvPhsCp1Ksxmt9rvRfQZ3DhOiXDnYZ3v/UUYicwvLg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1787562535622543.0010747024734; Mon, 24 Aug 2026 02:08:55 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 6175441A5A; Mon, 24 Aug 2026 05:08:54 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 7C27641A0A for ; Mon, 24 Aug 2026 05:01:55 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 0A5AB41A0A; Mon, 24 Aug 2026 05:01:24 -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)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 5D46B418F8 for ; Mon, 24 Aug 2026 05:01:20 -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-631-EQ5StEYJPVG-NVz7AnLIrg-1; Mon, 24 Aug 2026 05:01:17 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (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 24C1B183EEE9 for ; Mon, 24 Aug 2026 09:01:17 +0000 (UTC) Received: from moe (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 805BE3000239 for ; Mon, 24 Aug 2026 09:01: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=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, SPF_HELO_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=1787562079; 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=Xg+UcVVQZu3sEWgLvHLcTgf4wexp9jFB3Fl0JxL87D4=; b=Ozl2apFAoc9aKz9/UuhvECUp8XQF5N0tOnqfWyNIplv6RwiSDwilfPrQQmBOlbX0kRcUWz ya2xUM2otXNbrjLBqYn+C5jfRikm0XIfcnFmDX8hbV1KTY0PtUK6EC0uJ7ZtnVIEl5z8Q3 MeLNXu0rKeSSc6/d+aySTzw88UYKC7A= X-MC-Unique: EQ5StEYJPVG-NVz7AnLIrg-1 X-Mimecast-MFC-AGG-ID: EQ5StEYJPVG-NVz7AnLIrg_1787562077 To: devel@lists.libvirt.org Subject: [PATCH 2/7] vmx: Parse PCI address for SCSI controllers Date: Mon, 24 Aug 2026 11:01:00 +0200 Message-ID: <640504ba2bc32d28b003f1bfba10e08c30635d91.1787561906.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: cbrL7oD3ZZYutl_5DeuBtDkD_vpGm2CdUoMUeSl9vpU_1787562077 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: A3KCIJGHLEIJVK5XFAPFIDSQYGZKPVSH X-Message-ID-Hash: A3KCIJGHLEIJVK5XFAPFIDSQYGZKPVSH 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: 1787562536187158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik The VMX file also contains information on PCI topology. At least for some devices. They have the .pciSlotNumber attribute which is a number that encodes their PCI address. It's documented here [1]. The algorithm described there also offers a way to calculate PCI topology with bridges and everything. Let's save that for future work. For now, just parse and report PCI address of SCSI controllers. NB: at this point it is unclear how the algorithm/address encoding changes wrt 'virtualHW.version'. But we will cross that bridge when we get there. 1: https://knowledge.broadcom.com/external/article/311606/mapping-pci-slot-= numbers-to-guestvisible.html Signed-off-by: Michal Privoznik --- src/vmx/vmx.c | 40 ++++++++++++++++++++-- tests/vmx2xmldata/esx-in-the-wild-11.xml | 4 ++- tests/vmx2xmldata/esx-in-the-wild-12.xml | 4 ++- tests/vmx2xmldata/esx-in-the-wild-13.xml | 4 ++- tests/vmx2xmldata/esx-in-the-wild-14.xml | 4 ++- tests/vmx2xmldata/esx-in-the-wild-16.xml | 4 ++- tests/vmx2xmldata/esx-in-the-wild-17.xml | 4 ++- tests/vmx2xmldata/esx-in-the-wild-5.xml | 4 ++- tests/vmx2xmldata/esx-in-the-wild-6.xml | 4 ++- tests/vmx2xmldata/esx-in-the-wild-7.xml | 4 ++- tests/vmx2xmldata/esx-in-the-wild-8.xml | 4 ++- tests/vmx2xmldata/esx-in-the-wild-9.xml | 4 ++- tests/vmx2xmldata/fusion-in-the-wild-1.xml | 4 ++- 13 files changed, 73 insertions(+), 15 deletions(-) diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index c438f2720c..92b55307de 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -950,6 +950,34 @@ virVMXGetConfigBoolean(virConf *conf, const char *name= , bool *boolean_, } =20 =20 +static int +virVMXPCISlotNumber(virConf *conf, + const char *name, + virDomainDeviceInfo *info) +{ + long long slotNumber =3D -1; + + if (virVMXGetConfigLong(conf, name, &slotNumber, -1, true) < 0) + return -1; + + if (slotNumber =3D=3D -1) { + /* missing */ + return 0; + } + + /* The slot number encodes PCI address as FFF.BBBBB.DDDDD, for instanc= e: + * 1216 =3D 0x4c0 =3D 001.00110.00000b + * which gives bus =3D 6, slot =3D 0, function =3D 1. + */ + info->type =3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI; + info->addr.pci.domain =3D 0; + info->addr.pci.bus =3D (slotNumber >> 5) & 0x1f; + info->addr.pci.slot =3D slotNumber & 0x1f; + info->addr.pci.function =3D (slotNumber >> 10) & 0x7; + + return 0; +} + =20 static int virVMXSCSIDiskNameToControllerAndUnit(const char *name, int *controller, i= nt *unit) @@ -2143,12 +2171,14 @@ virVMXParseSCSIController(virDomainDef *def, int controllerIdx, bool *present) { + virDomainControllerDef *controllerDef =3D NULL; int result =3D -1; char present_name[32]; char virtualDev_name[32]; char *virtualDev_string =3D NULL; char *tmp; int virtualDev =3D -1; + g_autofree char *pciSlotNumberName =3D NULL; =20 if (controllerIdx < 0 || controllerIdx > 3) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -2194,11 +2224,15 @@ virVMXParseSCSIController(virDomainDef *def, } } =20 - virDomainDefAddController(def, VIR_DOMAIN_CONTROLLER_TYPE_SCSI, - controllerIdx, virtualDev); + controllerDef =3D virDomainDefAddController(def, VIR_DOMAIN_CONTROLLER= _TYPE_SCSI, + controllerIdx, virtualDev); + + pciSlotNumberName =3D g_strdup_printf("scsi%d.pciSlotNumber", controll= erIdx); + + if (virVMXPCISlotNumber(conf, pciSlotNumberName, &controllerDef->info)= < 0) + goto cleanup; =20 result =3D 0; - cleanup: VIR_FREE(virtualDev_string); =20 diff --git a/tests/vmx2xmldata/esx-in-the-wild-11.xml b/tests/vmx2xmldata/e= sx-in-the-wild-11.xml index ded63c3345..e39a525de7 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-11.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-11.xml @@ -32,7 +32,9 @@
- + +
+ diff --git a/tests/vmx2xmldata/esx-in-the-wild-12.xml b/tests/vmx2xmldata/e= sx-in-the-wild-12.xml index 4836cbd03d..08a4b5fada 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-12.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-12.xml @@ -31,7 +31,9 @@
- + +
+ diff --git a/tests/vmx2xmldata/esx-in-the-wild-13.xml b/tests/vmx2xmldata/e= sx-in-the-wild-13.xml index 604fe99f5c..f38dc063f1 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-13.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-13.xml @@ -36,7 +36,9 @@ package:20.6.2
- + +
+ diff --git a/tests/vmx2xmldata/esx-in-the-wild-14.xml b/tests/vmx2xmldata/e= sx-in-the-wild-14.xml index 31ada6eb5f..a8061b14c6 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-14.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-14.xml @@ -25,7 +25,9 @@
- + +
+ diff --git a/tests/vmx2xmldata/esx-in-the-wild-16.xml b/tests/vmx2xmldata/e= sx-in-the-wild-16.xml index 77c4a10c1c..2ff3a74d5f 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-16.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-16.xml @@ -26,7 +26,9 @@
- + +
+ diff --git a/tests/vmx2xmldata/esx-in-the-wild-17.xml b/tests/vmx2xmldata/e= sx-in-the-wild-17.xml index 0603adfd35..04776efcea 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-17.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-17.xml @@ -34,7 +34,9 @@
- + +
+ diff --git a/tests/vmx2xmldata/esx-in-the-wild-5.xml b/tests/vmx2xmldata/es= x-in-the-wild-5.xml index fee496aa6a..fe3d81db63 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-5.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-5.xml @@ -32,7 +32,9 @@
- + +
+ diff --git a/tests/vmx2xmldata/esx-in-the-wild-6.xml b/tests/vmx2xmldata/es= x-in-the-wild-6.xml index ab3b1fa7a6..2682679796 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-6.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-6.xml @@ -25,7 +25,9 @@
- + +
+ diff --git a/tests/vmx2xmldata/esx-in-the-wild-7.xml b/tests/vmx2xmldata/es= x-in-the-wild-7.xml index daaac5e92d..4cdf338640 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-7.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-7.xml @@ -25,7 +25,9 @@
- + +
+ diff --git a/tests/vmx2xmldata/esx-in-the-wild-8.xml b/tests/vmx2xmldata/es= x-in-the-wild-8.xml index 3472ce14ef..5e92157c9d 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-8.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-8.xml @@ -42,7 +42,9 @@
- + +
+ diff --git a/tests/vmx2xmldata/esx-in-the-wild-9.xml b/tests/vmx2xmldata/es= x-in-the-wild-9.xml index 57a376209b..7aff055ed3 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-9.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-9.xml @@ -26,7 +26,9 @@
- + +
+ diff --git a/tests/vmx2xmldata/fusion-in-the-wild-1.xml b/tests/vmx2xmldata= /fusion-in-the-wild-1.xml index a39bcbb2cd..2c29f65d77 100644 --- a/tests/vmx2xmldata/fusion-in-the-wild-1.xml +++ b/tests/vmx2xmldata/fusion-in-the-wild-1.xml @@ -24,7 +24,9 @@
- + +
+ --=20 2.54.0 From nobody Tue Aug 25 02:49:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1787562352; cv=none; d=zohomail.com; s=zohoarc; b=EqFP5gPLITDTVFgVDeCHHbfrc0qqE4rDWR/OUYPYLmo+/luOyF0XPmDvsATL8YUAJo6YmIiif+aR1rJ7hbDJhgsgkG056TzOjROCWOoWhiyOwPNfWRrrvJnjF5oucS8UZVnwI9x42S/mWF5zeRu3ZLvJNsk8zSBEQoFhUYQv4nY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787562352; 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=bszr4PIohVw3/lLRUQizDgkONsS0FSxGuaUQ200m8qY=; b=CCLceEpmR+oaklNJXyVZuHA2DVq8hTLfanqWS6daFAcUJw/TrQOqgcJHWTip9QJbzaDAvHtXLAX6INaMExIxG7oADhtIS/Qpb9Na8DPC5Qd+if3CbLGHxlhOzZrH+IKnP9QeljFWYHKeKnI83V+0VcLpM1XgUHr5X2sCxHJJJRg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1787562352637178.50064956417498; Mon, 24 Aug 2026 02:05:52 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 734B641B70; Mon, 24 Aug 2026 05:05:51 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 7FF6D41C21 for ; Mon, 24 Aug 2026 05:01:46 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id AF7C24190B; Mon, 24 Aug 2026 05:01:21 -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 F0605417D2 for ; Mon, 24 Aug 2026 05:01:20 -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-683-pu3_i-_QM6ivaSGMxvtxRg-1; Mon, 24 Aug 2026 05:01:19 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (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 26900193F079 for ; Mon, 24 Aug 2026 09:01:18 +0000 (UTC) Received: from moe (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 817B03000239 for ; Mon, 24 Aug 2026 09:01: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=0.6 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, RCVD_IN_SBL_CSS,SPF_HELO_PASS autolearn=no autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787562080; 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=bszr4PIohVw3/lLRUQizDgkONsS0FSxGuaUQ200m8qY=; b=BWx1jTDYN3nB8fQG0E6BYhsQl/rQ8CuIgHR3T+JygjCX6ZD+I5+uaC5XmJJ2XtXc7QBXnT 9g/B1tDRqWDRz1wusXEvy+6JU/s4vpLGJhcOTnV1cheCbDw+dhHum2JyHHSFBEmT4TjvTG jC3yeYUgh2fnZgI/erFNzj9h5DmUz7w= X-MC-Unique: pu3_i-_QM6ivaSGMxvtxRg-1 X-Mimecast-MFC-AGG-ID: pu3_i-_QM6ivaSGMxvtxRg_1787562078 To: devel@lists.libvirt.org Subject: [PATCH 3/7] vmx: Add SATA controllers Date: Mon, 24 Aug 2026 11:01:01 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: lDHiLXR4_WD8jpyQ6gji0h6--IR4O-qma9QUWZzcV30_1787562078 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 5PYTFDDZNWUJPDYIVXELYDPOWNAATXJE X-Message-ID-Hash: 5PYTFDDZNWUJPDYIVXELYDPOWNAATXJE 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: 1787562353026158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Currently, the VMX driver ignores SATA controllers without disks plugged in (even though they are present in the .vmx file) and adds some "random" ones after SATA disks are parsed. Well, those controllers from the file are visible to the guest so add those to the domain definition instead. Signed-off-by: Michal Privoznik --- src/vmx/vmx.c | 40 +++++++++++------------- tests/vmx2xmldata/esx-in-the-wild-16.xml | 1 + tests/vmx2xmldata/esx-in-the-wild-9.xml | 1 + 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index 92b55307de..bc4c69ad6a 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -589,7 +589,11 @@ virVMXParseSCSIController(virDomainDef *def, virConf *conf, int controllerIdx, bool *present); -static int virVMXParseSATAController(virConf *conf, int controller, bool *= present); +static int +virVMXParseSATAController(virDomainDef *def, + virConf *conf, + int controllerIdx, + bool *present); static int virVMXParseNVMEController(virConf *conf, int controller, bool *= present); static int virVMXParseDisk(virVMXContext *ctx, virDomainXMLOption *xmlopt, virConf *conf, int device, int busType, @@ -1447,7 +1451,6 @@ virVMXParseConfig(virVMXContext *ctx, virCPUDef *cpu =3D NULL; char *firmware =3D NULL; g_autofree char *nvram =3D NULL; - size_t saved_ndisks =3D 0; =20 if (ctx->parseFileName =3D=3D NULL) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -1807,15 +1810,9 @@ virVMXParseConfig(virVMXContext *ctx, } } =20 - /* add all the SCSI controllers we've seen, up until the last one that= is - * currently used by a disk */ - if (def->ndisks !=3D 0) { - saved_ndisks =3D def->ndisks; - } - /* def:disks (sata) */ for (controller =3D 0; controller < 4; ++controller) { - if (virVMXParseSATAController(conf, controller, &present) < 0) { + if (virVMXParseSATAController(def, conf, controller, &present) < 0= ) { goto cleanup; } =20 @@ -1845,14 +1842,6 @@ virVMXParseConfig(virVMXContext *ctx, } } =20 - /* add all the SATA controllers we've seen, up until the last one that= is - * currently used by a disk */ - if (def->ndisks - saved_ndisks !=3D 0) { - virDomainDeviceInfo *info =3D &def->disks[def->ndisks - 1]->info; - for (controller =3D 0; controller <=3D info->addr.drive.controller= ; controller++) - virDomainDefAddController(def, VIR_DOMAIN_CONTROLLER_TYPE_SATA= , controller, -1); - } - /* def:disks (ide) */ for (bus =3D 0; bus < 2; ++bus) { for (unit =3D 0; unit < 2; ++unit) { @@ -2242,22 +2231,31 @@ virVMXParseSCSIController(virDomainDef *def, =20 =20 static int -virVMXParseSATAController(virConf *conf, int controller, bool *present) +virVMXParseSATAController(virDomainDef *def, + virConf *conf, + int controllerIdx, + bool *present) { char present_name[32]; =20 - if (controller < 0 || controller > 3) { + if (controllerIdx < 0 || controllerIdx > 3) { virReportError(VIR_ERR_INTERNAL_ERROR, _("SATA controller index %1$d out of [0..3] range"), - controller); + controllerIdx); return -1; } =20 - g_snprintf(present_name, sizeof(present_name), "sata%d.present", contr= oller); + g_snprintf(present_name, sizeof(present_name), "sata%d.present", contr= ollerIdx); =20 if (virVMXGetConfigBoolean(conf, present_name, present, false, true) <= 0) return -1; =20 + if (!*present) + return 0; + + virDomainDefAddController(def, VIR_DOMAIN_CONTROLLER_TYPE_SATA, + controllerIdx, -1); + return 0; } =20 diff --git a/tests/vmx2xmldata/esx-in-the-wild-16.xml b/tests/vmx2xmldata/e= sx-in-the-wild-16.xml index 2ff3a74d5f..c0f430e617 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-16.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-16.xml @@ -29,6 +29,7 @@
+ diff --git a/tests/vmx2xmldata/esx-in-the-wild-9.xml b/tests/vmx2xmldata/es= x-in-the-wild-9.xml index 7aff055ed3..a1a66bef5f 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-9.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-9.xml @@ -29,6 +29,7 @@
+ --=20 2.54.0 From nobody Tue Aug 25 02:49:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1787562612; cv=none; d=zohomail.com; s=zohoarc; b=QV7fuKrqIw8BT6mRxuHEUObNaglUOsamdDpKUZoFjIGKCTK+jtCY6/h/f6wQluzocyHNIwBlFoUtz20+Cfb1wHzJrjBOJMhthQPNnz3ZYD6fQYj59M0cq+aj/JAzBYRjj+zwUvviJYQgaF4gJ1LHvUeo2y3YVGbADmFo/FPa3xc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787562612; 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=r6pb9pqabJkbFs9d8yrWN7AwY990+n6njF1kLWOXAUA=; b=htHX3XUG4MSqk7+mE3j9LkmB5Sm/sfXhlRpcEGPNa3YJZknW4kZ+kM7Vljsw5oCBaoVd7gorrTayr2LXTQZHDqtLmmUPn5kQBbxB+UTABSQRSp5chvBeaVKKaqXbV8Pn4rpQf6dSX3itR55jObqDMi6unCOkFEdPxMwoS2bJnXI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1787562612163425.5053629754042; Mon, 24 Aug 2026 02:10:12 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 045CE41C45; Mon, 24 Aug 2026 05:10:10 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 11E9041D3D for ; Mon, 24 Aug 2026 05:02:00 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id A65AF41999; Mon, 24 Aug 2026 05:01:29 -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)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id DE2B441953 for ; Mon, 24 Aug 2026 05:01:23 -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-584-3Y2yjabxOQC0EWN7VspZLQ-1; Mon, 24 Aug 2026 05:01:20 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (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 3AD001801A32 for ; Mon, 24 Aug 2026 09:01:19 +0000 (UTC) Received: from moe (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 95AE630002EA for ; Mon, 24 Aug 2026 09:01: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=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_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=1787562083; 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=r6pb9pqabJkbFs9d8yrWN7AwY990+n6njF1kLWOXAUA=; b=fQ9WKVQQCiIUBuToU9/JhGFKjz5OBbx35+OfVJ7eiI20eNNe9W6pUOE/8hyD3TlA+95jRa 58U88a5rlFt0ClsykrqIb3a/mIrxINi0vFBt8RreuH4+BTROTpwp3B70vmuiJ63NH7taMF n6bwNCYbpNU+nd0YSId+Tnmz69Ywzzg= X-MC-Unique: 3Y2yjabxOQC0EWN7VspZLQ-1 X-Mimecast-MFC-AGG-ID: 3Y2yjabxOQC0EWN7VspZLQ_1787562079 To: devel@lists.libvirt.org Subject: [PATCH 4/7] vmx: Parse PCI address for SATA controllers Date: Mon, 24 Aug 2026 11:01:02 +0200 Message-ID: <61aaf8c18768cce8be261fcc2a497fe41b0e71e2.1787561906.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: ueJrQEe1HJvN62WmFw1JFnCrcl7KRXtc-7zReJR9y4w_1787562079 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: CPFZLLBGD3SN6AFJI5IDJFY3SBHLJP3H X-Message-ID-Hash: CPFZLLBGD3SN6AFJI5IDJFY3SBHLJP3H 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: 1787562614600158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Similarly to SCSI controllers (see one previous commits), parse and report PCI address for SATA controllers. Signed-off-by: Michal Privoznik --- src/vmx/vmx.c | 11 +++++++++-- tests/vmx2xmldata/esx-in-the-wild-10.xml | 4 +++- tests/vmx2xmldata/esx-in-the-wild-12.xml | 4 +++- tests/vmx2xmldata/esx-in-the-wild-16.xml | 4 +++- tests/vmx2xmldata/esx-in-the-wild-17.xml | 4 +++- tests/vmx2xmldata/esx-in-the-wild-8.xml | 4 +++- tests/vmx2xmldata/esx-in-the-wild-9.xml | 4 +++- 7 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index bc4c69ad6a..25bfddbf68 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -2236,6 +2236,8 @@ virVMXParseSATAController(virDomainDef *def, int controllerIdx, bool *present) { + virDomainControllerDef *controllerDef =3D NULL; + g_autofree char *pciSlotNumberName =3D NULL; char present_name[32]; =20 if (controllerIdx < 0 || controllerIdx > 3) { @@ -2253,8 +2255,13 @@ virVMXParseSATAController(virDomainDef *def, if (!*present) return 0; =20 - virDomainDefAddController(def, VIR_DOMAIN_CONTROLLER_TYPE_SATA, - controllerIdx, -1); + controllerDef =3D virDomainDefAddController(def, VIR_DOMAIN_CONTROLLER= _TYPE_SATA, + controllerIdx, -1); + + pciSlotNumberName =3D g_strdup_printf("sata%d.pciSlotNumber", controll= erIdx); + + if (virVMXPCISlotNumber(conf, pciSlotNumberName, &controllerDef->info)= < 0) + return -1; =20 return 0; } diff --git a/tests/vmx2xmldata/esx-in-the-wild-10.xml b/tests/vmx2xmldata/e= sx-in-the-wild-10.xml index 166240f96b..2ba801169e 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-10.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-10.xml @@ -26,7 +26,9 @@
- + +
+ diff --git a/tests/vmx2xmldata/esx-in-the-wild-12.xml b/tests/vmx2xmldata/e= sx-in-the-wild-12.xml index 08a4b5fada..907a000391 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-12.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-12.xml @@ -34,7 +34,9 @@
- + +
+ diff --git a/tests/vmx2xmldata/esx-in-the-wild-16.xml b/tests/vmx2xmldata/e= sx-in-the-wild-16.xml index c0f430e617..5d3b2163ed 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-16.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-16.xml @@ -29,7 +29,9 @@
- + +
+ diff --git a/tests/vmx2xmldata/esx-in-the-wild-17.xml b/tests/vmx2xmldata/e= sx-in-the-wild-17.xml index 04776efcea..fe15990118 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-17.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-17.xml @@ -37,7 +37,9 @@
- + +
+ diff --git a/tests/vmx2xmldata/esx-in-the-wild-8.xml b/tests/vmx2xmldata/es= x-in-the-wild-8.xml index 5e92157c9d..63bdd82c6b 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-8.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-8.xml @@ -45,7 +45,9 @@
- + +
+ diff --git a/tests/vmx2xmldata/esx-in-the-wild-9.xml b/tests/vmx2xmldata/es= x-in-the-wild-9.xml index a1a66bef5f..8b7f442921 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-9.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-9.xml @@ -29,7 +29,9 @@
- + +
+ --=20 2.54.0 From nobody Tue Aug 25 02:49:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1787562416; cv=none; d=zohomail.com; s=zohoarc; b=l2PZLL9LI7On1EjsV88jKXcSmHY2RmW95mUSiHOdIji08pzkg5iT/X9EWcqJSBP3dfH+K+5C1fnWgBrUckA9jD2khWkcPHj0pwoxIDnLZbV1YSzmcaND0VgUfuyN7P/iR4lIuGA1n5yc+HfVTIBzSsyfvT1ytDrWumV5+PhBEHk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787562416; 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=dl5yidrAWN+IiS32i3wj6hmww7sjWZ413eCTqxKoIiU=; b=Z8AoF0QBu2X1kEjrmls2V4hG846FDT1/St47vYhsrZ4S+UVj2ozH8DsA6CAUErPIOMEaBQ+l4QRCoYN51k5Y5U46gz/3funYxutHWHmSHYnVtEBQL9PXPpwFra98S/hT8eMt4yNPOOdLjOHbPJDfaoTdTj6fdpICB8WHFQA66IQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 17875624167149.373492882994924; Mon, 24 Aug 2026 02:06:56 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 7794F41C53; Mon, 24 Aug 2026 05:06:55 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id AB46F41AF9 for ; Mon, 24 Aug 2026 05:01:50 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 0249E41966; Mon, 24 Aug 2026 05:01: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 4BC57417D2 for ; Mon, 24 Aug 2026 05:01:23 -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-9-Ie0_8hecPq-Z9q_R7xYQqA-1; Mon, 24 Aug 2026 05:01:21 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (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 44B86195DE5D for ; Mon, 24 Aug 2026 09:01:20 +0000 (UTC) Received: from moe (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 9F31430002EA for ; Mon, 24 Aug 2026 09:01:19 +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=0.6 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, RCVD_IN_SBL_CSS,SPF_HELO_PASS autolearn=no autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787562082; 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=dl5yidrAWN+IiS32i3wj6hmww7sjWZ413eCTqxKoIiU=; b=JAR1TImiOdthcfYxp/pGWXpjV0k/LR43Yi7V9stBX6xgVi0VBUBO8g5uvGkrTAqZYEJWCf W2T9FZhNbmD3CEVnP1u7KRmv0GgEbXsZrxFHGT0kCy6cUtNy8BQxGU48KozzENkVrFo8CW AjnQfkVk0rrB0+ur0UGvN1sI33EaZn0= X-MC-Unique: Ie0_8hecPq-Z9q_R7xYQqA-1 X-Mimecast-MFC-AGG-ID: Ie0_8hecPq-Z9q_R7xYQqA_1787562080 To: devel@lists.libvirt.org Subject: [PATCH 5/7] vmx: Add NVMe controllers Date: Mon, 24 Aug 2026 11:01:03 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: V4np-s5dszkdiVSv2AcbMqmFa_B_WScyIUSNa2msg9M_1787562080 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: O63C7XXTQWV6DXGQPBPGFF7DQOFVHH2I X-Message-ID-Hash: O63C7XXTQWV6DXGQPBPGFF7DQOFVHH2I 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: 1787562417524158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Currently, the VMX driver ignores SCSI controllers without disks plugged in (even though they are present in the .vmx file) and relies on post parse callback to fill them in (virDomainDefAddImplicitControllers()). Well, those controllers from the file are visible to the guest so add those to the domain definition instead. Signed-off-by: Michal Privoznik --- src/vmx/vmx.c | 24 ++++++++++++++++++------ tests/vmx2xmldata/esx-in-the-wild-15.xml | 2 +- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index 25bfddbf68..8cb04f8490 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -594,7 +594,11 @@ virVMXParseSATAController(virDomainDef *def, virConf *conf, int controllerIdx, bool *present); -static int virVMXParseNVMEController(virConf *conf, int controller, bool *= present); +static int +virVMXParseNVMEController(virDomainDef *def, + virConf *conf, + int controllerIdx, + bool *present); static int virVMXParseDisk(virVMXContext *ctx, virDomainXMLOption *xmlopt, virConf *conf, int device, int busType, int controllerOrBus, int unit, virDomainDiskDef= **def, @@ -1885,7 +1889,7 @@ virVMXParseConfig(virVMXContext *ctx, =20 /* def:disks (nvme) */ for (controller =3D 0; controller < 4; ++controller) { - if (virVMXParseNVMEController(conf, controller, &present) < 0) + if (virVMXParseNVMEController(def, conf, controller, &present) < 0) goto cleanup; =20 if (!present) @@ -2268,22 +2272,30 @@ virVMXParseSATAController(virDomainDef *def, =20 =20 static int -virVMXParseNVMEController(virConf *conf, int controller, bool *present) +virVMXParseNVMEController(virDomainDef *def, + virConf *conf, + int controllerIdx, + bool *present) { char present_name[32]; =20 - if (controller < 0 || controller > 3) { + if (controllerIdx < 0 || controllerIdx > 3) { virReportError(VIR_ERR_INTERNAL_ERROR, _("NVMe controller index %1$d out of [0..3] range"), - controller); + controllerIdx); return -1; } =20 - g_snprintf(present_name, sizeof(present_name), "nvme%d.present", contr= oller); + g_snprintf(present_name, sizeof(present_name), "nvme%d.present", contr= ollerIdx); =20 if (virVMXGetConfigBoolean(conf, present_name, present, false, true) <= 0) return -1; =20 + if (!*present) + return 0; + + virDomainDefAddController(def, VIR_DOMAIN_CONTROLLER_TYPE_NVME, + controllerIdx, -1); return 0; } =20 diff --git a/tests/vmx2xmldata/esx-in-the-wild-15.xml b/tests/vmx2xmldata/e= sx-in-the-wild-15.xml index fb32a5aa59..cc4a9d1631 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-15.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-15.xml @@ -33,8 +33,8 @@
- + --=20 2.54.0 From nobody Tue Aug 25 02:49:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1787562695; cv=none; d=zohomail.com; s=zohoarc; b=SuARwLt7+AgWjbNQZ+x/DUzzK0HpHBQPIjfYcLB2dnSXgmt/RrfCdt8T9NCVa8sUkTsWmOYiGIdXjTBXZYlioTVQ4BiZ4tofTIY3pqrynnfQzp3V9b0sEWENrHRRNQSR5tVrQEyCEXy/kmPrrpXrtLyVpRB+pCstDiUKk3gFZ+Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787562695; 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=X04mG47OWoVS8u0ZbDRpDwEkE6OgacDMjjqVRScUPqI=; b=gnuIuQOQP5AS31ny+KM8hDI0NNc4OPSlTkMUp05Gj3/ZcxzvbRJWMsy37NbYs2CGW89pNnSc73QhuthxufVRHI/LNJS5/4F6JiK8OGXjwrnmkKmRBllIIwFgvxX9hlmBvVr9HSmK9R5cI2/JwRAp4iPUx4j0Kzvt3zjP7rfziBc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1787562695417557.2202975289334; Mon, 24 Aug 2026 02:11:35 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 62A1041ABB; Mon, 24 Aug 2026 05:11:34 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id D8AAF41DB1 for ; Mon, 24 Aug 2026 05:02:05 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 6B6AA419EF; Mon, 24 Aug 2026 05:01:33 -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 1A08941998 for ; Mon, 24 Aug 2026 05:01:24 -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-695-fxMnly4fMpCh8rXUnQtTkg-1; Mon, 24 Aug 2026 05:01:22 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (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 446D81954117 for ; Mon, 24 Aug 2026 09:01:21 +0000 (UTC) Received: from moe (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id A06DF3000239 for ; Mon, 24 Aug 2026 09:01: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=0.6 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2, RCVD_IN_SBL_CSS,SPF_HELO_PASS autolearn=no autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787562083; 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=X04mG47OWoVS8u0ZbDRpDwEkE6OgacDMjjqVRScUPqI=; b=iwlxgEVRsfyS340ogdL+h+3qvMISo8zdQP8Vsrsl5hfe3nusxFQS3KmtdJXfW2vNDPWuqZ JXPyGbqyARvvimfSE64WAXFLelZAwYCHc6jegNbdS/l43k1+NMl2C+6wvtLZW80hEcOCmT qnGu21GTjQHekxY0dXU6zeXpcW3pxVE= X-MC-Unique: fxMnly4fMpCh8rXUnQtTkg-1 X-Mimecast-MFC-AGG-ID: fxMnly4fMpCh8rXUnQtTkg_1787562081 To: devel@lists.libvirt.org Subject: [PATCH 6/7] vmx: Parse PCI address for NVMe controllers Date: Mon, 24 Aug 2026 11:01:04 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: G1LAyVy3NgTMlxWr8p85a4e0GQFzAmA7YQBOTZnkEiE_1787562081 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 3JGMN6P5PP54EWB3ZFFPQTWZ65JOAB62 X-Message-ID-Hash: 3JGMN6P5PP54EWB3ZFFPQTWZ65JOAB62 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: 1787562697145158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Similarly to SCSI and SATA controllers (see previous commits), parse and report PCI address for NVMe controllers. Signed-off-by: Michal Privoznik --- src/vmx/vmx.c | 12 ++++++++++-- tests/vmx2xmldata/esx-in-the-wild-15.xml | 4 +++- tests/vmx2xmldata/esx-in-the-wild-16.xml | 4 +++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index 8cb04f8490..0fee7c0e7e 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -2277,6 +2277,8 @@ virVMXParseNVMEController(virDomainDef *def, int controllerIdx, bool *present) { + virDomainControllerDef *controllerDef =3D NULL; + g_autofree char *pciSlotNumberName =3D NULL; char present_name[32]; =20 if (controllerIdx < 0 || controllerIdx > 3) { @@ -2294,8 +2296,14 @@ virVMXParseNVMEController(virDomainDef *def, if (!*present) return 0; =20 - virDomainDefAddController(def, VIR_DOMAIN_CONTROLLER_TYPE_NVME, - controllerIdx, -1); + controllerDef =3D virDomainDefAddController(def, VIR_DOMAIN_CONTROLLER= _TYPE_NVME, + controllerIdx, -1); + + pciSlotNumberName =3D g_strdup_printf("nvme%d.pciSlotNumber", controll= erIdx); + + if (virVMXPCISlotNumber(conf, pciSlotNumberName, &controllerDef->info)= < 0) + return -1; + return 0; } =20 diff --git a/tests/vmx2xmldata/esx-in-the-wild-15.xml b/tests/vmx2xmldata/e= sx-in-the-wild-15.xml index cc4a9d1631..2a169864d6 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-15.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-15.xml @@ -33,7 +33,9 @@
- + +
+ diff --git a/tests/vmx2xmldata/esx-in-the-wild-16.xml b/tests/vmx2xmldata/e= sx-in-the-wild-16.xml index 5d3b2163ed..37023ef4f0 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-16.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-16.xml @@ -32,7 +32,9 @@
- + +
+ --=20 2.54.0 From nobody Tue Aug 25 02:49:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1787562831; cv=none; d=zohomail.com; s=zohoarc; b=A5Asqs5rm1iTOYySUJjMmI5MFIfHZjILtQk3hcvryYBUmPkmtmccpz5vneGdWekGozxaCxCJhEKAcWu5xwWVRpdqJwUVQN11EjyPQJ1z/CiIO7Mv7z3l+0mlnck0JFDZSPckGG2xVLnScIugNuKovxUZdcc+cOZNrnw6hH31FGM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787562831; 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=J7cxKOMXHGdAef1dKn+Xf9AdOiHD2NFFxCk2lWsgVkU=; b=Sqs6CMt0sf4gZoK00YxtJAEG0UVuj3iXzckwd1u2o3JpFjJcqm4w9o8YNgBad7XkI8twLhDOP+yUXqIxrFwjkP1yRhJ9S8K8L3mUHKzf9xf2xOqCxnIWdwL78v8+eHG0Qoj1OKDLYr0PjFGDwLsd0B12Whj5hCgGkW1fYH/Msm8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1787562831875235.94338720964095; Mon, 24 Aug 2026 02:13:51 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 7E5AD41AF9; Mon, 24 Aug 2026 05:13:50 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 2F26741E20 for ; Mon, 24 Aug 2026 05:02:11 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id C09EF41BBB; Mon, 24 Aug 2026 05:01:39 -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 A112B41A2E for ; Mon, 24 Aug 2026 05:01: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-538-RhuupbEHO7unmXR5AldFmA-1; Mon, 24 Aug 2026 05:01:23 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (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 4559A1955E77 for ; Mon, 24 Aug 2026 09:01:22 +0000 (UTC) Received: from moe (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id A1B2F3000239 for ; Mon, 24 Aug 2026 09:01: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=0.6 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,RCVD_IN_SBL_CSS,SPF_HELO_PASS autolearn=no autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787562085; 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=J7cxKOMXHGdAef1dKn+Xf9AdOiHD2NFFxCk2lWsgVkU=; b=L9dRXNhRmyoOHnkZSrXzakKeUxfPLb7FXIi8aTXCCNj5cb/1Zi/jvfSIpGWejKxlPVBCvE j9RjvE7mWk8joyAO8ZR2T1tjeRKgTHZ/u/s8Y8lNfDPlXmlEwsg2LC/2s3odJ6BCiwKpyt rWvRRwFGRtGI5Nx/KQLlI6WMdEBhdq0= X-MC-Unique: RhuupbEHO7unmXR5AldFmA-1 X-Mimecast-MFC-AGG-ID: RhuupbEHO7unmXR5AldFmA_1787562082 To: devel@lists.libvirt.org Subject: [PATCH 7/7] vmx: Parse PCI address for ethernet devices Date: Mon, 24 Aug 2026 11:01:05 +0200 Message-ID: <22b3f36645613f8c0a4126fbb73a54375f59c6e9.1787561906.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 5tW-B3nClzd5P9yzRWmiMT2aOW3_Tt-z7u0oWNFJIm0_1787562082 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: J4WSUA7GEPU7YFIAQXFUAG3NUFMKV4EF X-Message-ID-Hash: J4WSUA7GEPU7YFIAQXFUAG3NUFMKV4EF 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: 1787562833998158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik Similarly to disk controllers (see previous commits), parse and report PCI address for ethernet devices. Signed-off-by: Michal Privoznik --- src/vmx/vmx.c | 7 +++++++ tests/vmx2xmldata/esx-in-the-wild-10.xml | 1 + tests/vmx2xmldata/esx-in-the-wild-11.xml | 1 + tests/vmx2xmldata/esx-in-the-wild-12.xml | 1 + tests/vmx2xmldata/esx-in-the-wild-13.xml | 1 + tests/vmx2xmldata/esx-in-the-wild-14.xml | 1 + tests/vmx2xmldata/esx-in-the-wild-15.xml | 1 + tests/vmx2xmldata/esx-in-the-wild-16.xml | 1 + tests/vmx2xmldata/esx-in-the-wild-17.xml | 1 + tests/vmx2xmldata/esx-in-the-wild-5.xml | 1 + tests/vmx2xmldata/esx-in-the-wild-6.xml | 1 + tests/vmx2xmldata/esx-in-the-wild-7.xml | 1 + tests/vmx2xmldata/esx-in-the-wild-8.xml | 10 ++++++++++ tests/vmx2xmldata/esx-in-the-wild-9.xml | 1 + tests/vmx2xmldata/fusion-in-the-wild-1.xml | 2 ++ 15 files changed, 31 insertions(+) diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index 0fee7c0e7e..1bbe0144d2 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -2930,6 +2930,8 @@ virVMXParseEthernet(virConf *conf, int controller, vi= rDomainNetDef **def) =20 int netmodel =3D VIR_DOMAIN_NET_MODEL_UNKNOWN; =20 + g_autofree char *pciSlotNumberName =3D NULL; + if (def =3D=3D NULL || *def !=3D NULL) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Invalid argument")= ); return -1; @@ -3124,6 +3126,11 @@ virVMXParseEthernet(virConf *conf, int controller, v= irDomainNetDef **def) goto cleanup; } =20 + pciSlotNumberName =3D g_strdup_printf("ethernet%d.pciSlotNumber", cont= roller); + + if (virVMXPCISlotNumber(conf, pciSlotNumberName, &(*def)->info) < 0) + goto cleanup; + (*def)->model =3D netmodel; result =3D 0; =20 diff --git a/tests/vmx2xmldata/esx-in-the-wild-10.xml b/tests/vmx2xmldata/e= sx-in-the-wild-10.xml index 2ba801169e..153f6900d7 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-10.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-10.xml @@ -33,6 +33,7 @@ +