From nobody Thu May 2 17:40:36 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1534432358531973.9676229306872; Thu, 16 Aug 2018 08:12:38 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D86D920277; Thu, 16 Aug 2018 15:12:35 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 58BEF100194B; Thu, 16 Aug 2018 15:12:35 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 768D018037EF; Thu, 16 Aug 2018 15:12:34 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w7GFCWJg024315 for ; Thu, 16 Aug 2018 11:12:32 -0400 Received: by smtp.corp.redhat.com (Postfix) id 9B3BC2156715; Thu, 16 Aug 2018 15:12:32 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-117-135.ams2.redhat.com [10.36.117.135]) by smtp.corp.redhat.com (Postfix) with ESMTP id C4EBD2156712; Thu, 16 Aug 2018 15:12:31 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 16 Aug 2018 16:12:25 +0100 Message-Id: <20180816151227.10886-2-berrange@redhat.com> In-Reply-To: <20180816151227.10886-1-berrange@redhat.com> References: <20180816151227.10886-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 1/3] qemu: record the QEMU default machine in capabilities X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Thu, 16 Aug 2018 15:12:37 +0000 (UTC) X-ZohoMail: RDMRC_0 RSF_0 Z_629925259 SPT_0 We don't honour the QEMU default machine type anymore, always using the libvirt chosen default instead. The QEMU argv parser, however, will need to know the exacty QEMU default, so we must record that info. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- src/qemu/qemu_capabilities.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index e6e199b2c6..a0a1b97f1d 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -515,6 +515,7 @@ struct virQEMUCapsMachineType { char *alias; unsigned int maxCpus; bool hotplugCpus; + bool qemuDefault; }; =20 typedef struct _virQEMUCapsHostCPUData virQEMUCapsHostCPUData; @@ -2324,8 +2325,10 @@ virQEMUCapsProbeQMPMachineTypes(virQEMUCapsPtr qemuC= aps, preferredIdx =3D qemuCaps->nmachineTypes - 1; } =20 - if (machines[i]->isDefault) + if (machines[i]->isDefault) { + mach->qemuDefault =3D true; defIdx =3D qemuCaps->nmachineTypes - 1; + } } =20 /* @@ -3355,7 +3358,7 @@ virQEMUCapsCachePrivFree(void *privData) * ... * * ... - * + * * ... * */ @@ -3520,6 +3523,11 @@ virQEMUCapsLoadCache(virArch hostArch, if (STREQ_NULLABLE(str, "yes")) qemuCaps->machineTypes[i].hotplugCpus =3D true; VIR_FREE(str); + + str =3D virXMLPropString(nodes[i], "default"); + if (STREQ_NULLABLE(str, "yes")) + qemuCaps->machineTypes[i].qemuDefault =3D true; + VIR_FREE(str); } } VIR_FREE(nodes); @@ -3768,6 +3776,8 @@ virQEMUCapsFormatCache(virQEMUCapsPtr qemuCaps) qemuCaps->machineTypes[i].alias); if (qemuCaps->machineTypes[i].hotplugCpus) virBufferAddLit(&buf, " hotplugCpus=3D'yes'"); + if (qemuCaps->machineTypes[i].qemuDefault) + virBufferAddLit(&buf, " default=3D'yes'"); virBufferAsprintf(&buf, " maxCpus=3D'%u'/>\n", qemuCaps->machineTypes[i].maxCpus); } --=20 2.17.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Thu May 2 17:40:36 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1534432373025981.1577153142167; Thu, 16 Aug 2018 08:12:53 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.25]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id F364921BB3; Thu, 16 Aug 2018 15:12:50 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B34AE20078BC; Thu, 16 Aug 2018 15:12:50 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 5509F4A460; Thu, 16 Aug 2018 15:12:50 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w7GFCXdY024322 for ; Thu, 16 Aug 2018 11:12:33 -0400 Received: by smtp.corp.redhat.com (Postfix) id 8E7B82156714; Thu, 16 Aug 2018 15:12:33 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-117-135.ams2.redhat.com [10.36.117.135]) by smtp.corp.redhat.com (Postfix) with ESMTP id E348B2156712; Thu, 16 Aug 2018 15:12:32 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 16 Aug 2018 16:12:26 +0100 Message-Id: <20180816151227.10886-3-berrange@redhat.com> In-Reply-To: <20180816151227.10886-1-berrange@redhat.com> References: <20180816151227.10886-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 2/3] qemu: rename method for getting preferred machine type X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.25 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 16 Aug 2018 15:12:51 +0000 (UTC) X-ZohoMail: RDMRC_0 RSF_0 Z_629925259 SPT_0 The virQEMUCapsGetDefaultMachine() method doesn't get QEMU's default machine any more, instead it gets the historical default that libvirt prefers for each arch. Rename it, so that the old name can be used for getting QEMU's default. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- src/qemu/qemu_capabilities.c | 8 ++++++-- src/qemu/qemu_capabilities.h | 2 +- tests/domaincapstest.c | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index a0a1b97f1d..4e4f732889 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -4876,7 +4876,7 @@ virQEMUCapsCacheLookupDefault(virFileCachePtr cache, goto cleanup; } } else { - machine =3D virQEMUCapsGetDefaultMachine(qemuCaps); + machine =3D virQEMUCapsGetPreferredMachine(qemuCaps); } =20 if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM)) @@ -4935,8 +4935,12 @@ virQEMUCapsIsMachineSupported(virQEMUCapsPtr qemuCap= s, } =20 =20 +/* + * The preferred machine to use if none is listed explicitly + * Note that this may differ from QEMU's own default machine + */ const char * -virQEMUCapsGetDefaultMachine(virQEMUCapsPtr qemuCaps) +virQEMUCapsGetPreferredMachine(virQEMUCapsPtr qemuCaps) { if (!qemuCaps->nmachineTypes) return NULL; diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 26813a908c..88e81be09b 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -605,7 +605,7 @@ bool virQEMUCapsSupportsGICVersion(virQEMUCapsPtr qemuC= aps, bool virQEMUCapsIsMachineSupported(virQEMUCapsPtr qemuCaps, const char *canonical_machine); =20 -const char *virQEMUCapsGetDefaultMachine(virQEMUCapsPtr qemuCaps); +const char *virQEMUCapsGetPreferredMachine(virQEMUCapsPtr qemuCaps); =20 int virQEMUCapsInitGuestFromBinary(virCapsPtr caps, const char *binary, diff --git a/tests/domaincapstest.c b/tests/domaincapstest.c index 06e77fd586..3b94cad223 100644 --- a/tests/domaincapstest.c +++ b/tests/domaincapstest.c @@ -168,7 +168,7 @@ fillQemuCaps(virDomainCapsPtr domCaps, =20 if (!domCaps->machine && VIR_STRDUP(domCaps->machine, - virQEMUCapsGetDefaultMachine(qemuCaps)) < 0) + virQEMUCapsGetPreferredMachine(qemuCaps)) < 0) goto cleanup; =20 if (virQEMUCapsFillDomainCaps(caps, domCaps, qemuCaps, --=20 2.17.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Thu May 2 17:40:36 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1534432377669368.55087169204626; Thu, 16 Aug 2018 08:12:57 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 913063084055; Thu, 16 Aug 2018 15:12:55 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4552010694D6; Thu, 16 Aug 2018 15:12:55 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id EC4E94A465; Thu, 16 Aug 2018 15:12:54 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w7GFCYLs024330 for ; Thu, 16 Aug 2018 11:12:34 -0400 Received: by smtp.corp.redhat.com (Postfix) id AFB1B2156714; Thu, 16 Aug 2018 15:12:34 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-117-135.ams2.redhat.com [10.36.117.135]) by smtp.corp.redhat.com (Postfix) with ESMTP id E9EA92156712; Thu, 16 Aug 2018 15:12:33 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: libvir-list@redhat.com Date: Thu, 16 Aug 2018 16:12:27 +0100 Message-Id: <20180816151227.10886-4-berrange@redhat.com> In-Reply-To: <20180816151227.10886-1-berrange@redhat.com> References: <20180816151227.10886-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 3/3] qemu: fix default machine for argv -> xml convertor X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.40]); Thu, 16 Aug 2018 15:12:56 +0000 (UTC) X-ZohoMail: RDMRC_0 RSF_0 Z_629925259 SPT_0 Historically the argv -> xml convertor wanted the same default machine as we'd set when parsing xml. The latter has now changed, however, to use a default defined by libvirt. The former needs fixing to again honour the default QEMU machine. This exposed a bug in handling for the aarch64 target, as QEMU does not define any default machine. Thus we should not having been accepting argv without a -machine provided. Signed-off-by: Daniel P. Berrang=C3=A9 Reviewed-by: John Ferlan --- src/qemu/qemu_capabilities.c | 17 +++++++- src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_driver.c | 6 ++- src/qemu/qemu_parse_command.c | 34 ++++++++++------ src/qemu/qemu_parse_command.h | 8 +++- tests/qemuargv2xmldata/nomachine-aarch64.args | 11 ----- tests/qemuargv2xmldata/nomachine-aarch64.xml | 40 ------------------- tests/qemuargv2xmldata/nomachine-ppc64.xml | 4 +- tests/qemuargv2xmldata/nomachine-x86_64.xml | 4 +- tests/qemuargv2xmldata/pseries-disk.xml | 4 +- tests/qemuargv2xmldata/pseries-nvram.xml | 4 +- tests/qemuargv2xmltest.c | 18 ++++++++- .../caps_1.5.3.x86_64.xml | 2 +- .../caps_1.6.0.x86_64.xml | 2 +- .../caps_1.7.0.x86_64.xml | 2 +- .../caps_2.1.1.x86_64.xml | 2 +- .../caps_2.10.0.ppc64.xml | 2 +- .../caps_2.10.0.s390x.xml | 2 +- .../caps_2.10.0.x86_64.xml | 2 +- .../caps_2.11.0.s390x.xml | 2 +- .../caps_2.11.0.x86_64.xml | 2 +- .../caps_2.12.0.ppc64.xml | 2 +- .../caps_2.12.0.s390x.xml | 2 +- .../caps_2.12.0.x86_64.xml | 2 +- .../caps_2.4.0.x86_64.xml | 2 +- .../caps_2.5.0.x86_64.xml | 2 +- .../qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 2 +- .../caps_2.6.0.x86_64.xml | 2 +- .../qemucapabilitiesdata/caps_2.7.0.s390x.xml | 2 +- .../caps_2.7.0.x86_64.xml | 2 +- .../qemucapabilitiesdata/caps_2.8.0.s390x.xml | 2 +- .../caps_2.8.0.x86_64.xml | 2 +- .../qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 2 +- .../qemucapabilitiesdata/caps_2.9.0.s390x.xml | 2 +- .../caps_2.9.0.x86_64.xml | 2 +- .../qemucapabilitiesdata/caps_3.0.0.ppc64.xml | 2 +- .../caps_3.0.0.x86_64.xml | 2 +- 37 files changed, 97 insertions(+), 104 deletions(-) delete mode 100644 tests/qemuargv2xmldata/nomachine-aarch64.args delete mode 100644 tests/qemuargv2xmldata/nomachine-aarch64.xml diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 4e4f732889..72b550ae16 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -1625,6 +1625,7 @@ virQEMUCapsPtr virQEMUCapsNewCopy(virQEMUCapsPtr qemu= Caps) goto error; ret->machineTypes[i].maxCpus =3D qemuCaps->machineTypes[i].maxCpus; ret->machineTypes[i].hotplugCpus =3D qemuCaps->machineTypes[i].hot= plugCpus; + ret->machineTypes[i].qemuDefault =3D qemuCaps->machineTypes[i].qem= uDefault; } =20 if (VIR_ALLOC_N(ret->gicCapabilities, qemuCaps->ngicCapabilities) < 0) @@ -2042,6 +2043,17 @@ const char *virQEMUCapsGetCanonicalMachine(virQEMUCa= psPtr qemuCaps, return name; } =20 +const char *virQEMUCapsGetDefaultMachine(virQEMUCapsPtr qemuCaps) +{ + size_t i; + + for (i =3D 0; i < qemuCaps->nmachineTypes; i++) { + if (qemuCaps->machineTypes[i].qemuDefault) + return qemuCaps->machineTypes[i].name; + } + + return NULL; +} =20 int virQEMUCapsGetMachineMaxCpus(virQEMUCapsPtr qemuCaps, const char *name) @@ -3776,10 +3788,11 @@ virQEMUCapsFormatCache(virQEMUCapsPtr qemuCaps) qemuCaps->machineTypes[i].alias); if (qemuCaps->machineTypes[i].hotplugCpus) virBufferAddLit(&buf, " hotplugCpus=3D'yes'"); + virBufferAsprintf(&buf, " maxCpus=3D'%u'", + qemuCaps->machineTypes[i].maxCpus); if (qemuCaps->machineTypes[i].qemuDefault) virBufferAddLit(&buf, " default=3D'yes'"); - virBufferAsprintf(&buf, " maxCpus=3D'%u'/>\n", - qemuCaps->machineTypes[i].maxCpus); + virBufferAddLit(&buf, "/>\n"); } =20 for (i =3D 0; i < qemuCaps->ngicCapabilities; i++) { diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 88e81be09b..a410885215 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -558,6 +558,7 @@ bool virQEMUCapsIsCPUModeSupported(virQEMUCapsPtr qemuC= aps, virCPUMode mode); const char *virQEMUCapsGetCanonicalMachine(virQEMUCapsPtr qemuCaps, const char *name); +const char *virQEMUCapsGetDefaultMachine(virQEMUCapsPtr qemuCaps); int virQEMUCapsGetMachineMaxCpus(virQEMUCapsPtr qemuCaps, const char *name); bool virQEMUCapsGetMachineHotplugCpus(virQEMUCapsPtr qemuCaps, diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index d4a2379e48..75eadbba56 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -7103,7 +7103,8 @@ static char *qemuConnectDomainXMLFromNative(virConnec= tPtr conn, if (!(caps =3D virQEMUDriverGetCapabilities(driver, false))) goto cleanup; =20 - def =3D qemuParseCommandLineString(caps, driver->xmlopt, config, + def =3D qemuParseCommandLineString(driver->qemuCapsCache, + caps, driver->xmlopt, config, NULL, NULL, NULL); if (!def) goto cleanup; @@ -16581,7 +16582,8 @@ static virDomainPtr qemuDomainQemuAttach(virConnect= Ptr conn, if (!(caps =3D virQEMUDriverGetCapabilities(driver, false))) goto cleanup; =20 - if (!(def =3D qemuParseCommandLinePid(caps, driver->xmlopt, pid, + if (!(def =3D qemuParseCommandLinePid(driver->qemuCapsCache, + caps, driver->xmlopt, pid, &pidfile, &monConfig, &monJSON))) goto cleanup; =20 diff --git a/src/qemu/qemu_parse_command.c b/src/qemu/qemu_parse_command.c index 351425fedd..b66c1c3d03 100644 --- a/src/qemu/qemu_parse_command.c +++ b/src/qemu/qemu_parse_command.c @@ -1826,7 +1826,8 @@ qemuParseCommandLineBootDevs(virDomainDefPtr def, con= st char *str) * as is practical. This is not an exact science.... */ static virDomainDefPtr -qemuParseCommandLine(virCapsPtr caps, +qemuParseCommandLine(virFileCachePtr capsCache, + virCapsPtr caps, virDomainXMLOptionPtr xmlopt, char **progenv, char **progargv, @@ -1848,6 +1849,7 @@ qemuParseCommandLine(virCapsPtr caps, virDomainDiskDefPtr disk =3D NULL; const char *ceph_args =3D qemuFindEnv(progenv, "CEPH_ARGS"); bool have_sdl =3D false; + virQEMUCapsPtr qemuCaps; =20 if (pidfile) *pidfile =3D NULL; @@ -1862,6 +1864,9 @@ qemuParseCommandLine(virCapsPtr caps, return NULL; } =20 + if (!(qemuCaps =3D virQEMUCapsCacheLookup(capsCache, progargv[0]))) + goto error; + if (!(def =3D virDomainDefNew())) goto error; =20 @@ -2014,17 +2019,18 @@ qemuParseCommandLine(virCapsPtr caps, /* If no machine type has been found among the arguments, then figure * out a reasonable value by using capabilities */ if (!def->os.machine) { - virCapsDomainDataPtr capsdata; + const char *mach =3D virQEMUCapsGetDefaultMachine(qemuCaps); =20 - if (!(capsdata =3D virCapabilitiesDomainDataLookup(caps, def->os.t= ype, - def->os.arch, def->virtType, NULL, NULL))) + if (!mach) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Binary '%s' does not have a default machine = type " + "and no '-machine' arg is present"), + progargv[0]); goto error; + } =20 - if (VIR_STRDUP(def->os.machine, capsdata->machinetype) < 0) { - VIR_FREE(capsdata); + if (VIR_STRDUP(def->os.machine, mach) < 0) goto error; - } - VIR_FREE(capsdata); } =20 /* Now the real processing loop */ @@ -2715,6 +2721,7 @@ qemuParseCommandLine(virCapsPtr caps, else qemuDomainCmdlineDefFree(cmd); =20 + virObjectUnref(qemuCaps); return def; =20 error: @@ -2729,11 +2736,13 @@ qemuParseCommandLine(virCapsPtr caps, } if (pidfile) VIR_FREE(*pidfile); + virObjectUnref(qemuCaps); return NULL; } =20 =20 -virDomainDefPtr qemuParseCommandLineString(virCapsPtr caps, +virDomainDefPtr qemuParseCommandLineString(virFileCachePtr capsCache, + virCapsPtr caps, virDomainXMLOptionPtr xmlopt, const char *args, char **pidfile, @@ -2747,7 +2756,7 @@ virDomainDefPtr qemuParseCommandLineString(virCapsPtr= caps, if (qemuStringToArgvEnv(args, &progenv, &progargv) < 0) goto cleanup; =20 - def =3D qemuParseCommandLine(caps, xmlopt, progenv, progargv, + def =3D qemuParseCommandLine(capsCache, caps, xmlopt, progenv, progarg= v, pidfile, monConfig, monJSON); =20 cleanup: @@ -2805,7 +2814,8 @@ static int qemuParseProcFileStrings(int pid_value, return ret; } =20 -virDomainDefPtr qemuParseCommandLinePid(virCapsPtr caps, +virDomainDefPtr qemuParseCommandLinePid(virFileCachePtr capsCache, + virCapsPtr caps, virDomainXMLOptionPtr xmlopt, pid_t pid, char **pidfile, @@ -2825,7 +2835,7 @@ virDomainDefPtr qemuParseCommandLinePid(virCapsPtr ca= ps, qemuParseProcFileStrings(pid, "environ", &progenv) < 0) goto cleanup; =20 - if (!(def =3D qemuParseCommandLine(caps, xmlopt, progenv, progargv, + if (!(def =3D qemuParseCommandLine(capsCache, caps, xmlopt, progenv, p= rogargv, pidfile, monConfig, monJSON))) goto cleanup; =20 diff --git a/src/qemu/qemu_parse_command.h b/src/qemu/qemu_parse_command.h index b3a950a420..a4db1a50ca 100644 --- a/src/qemu/qemu_parse_command.h +++ b/src/qemu/qemu_parse_command.h @@ -24,19 +24,23 @@ #ifndef __QEMU_PARSE_COMMAND_H__ # define __QEMU_PARSE_COMMAND_H__ =20 +# include "virfilecache.h" + # define QEMU_QXL_VGAMEM_DEFAULT 16 * 1024 =20 /* * NB: def->name can be NULL upon return and the caller * *must* decide how to fill in a name in this case */ -virDomainDefPtr qemuParseCommandLineString(virCapsPtr caps, +virDomainDefPtr qemuParseCommandLineString(virFileCachePtr capsCache, + virCapsPtr caps, virDomainXMLOptionPtr xmlopt, const char *args, char **pidfile, virDomainChrSourceDefPtr *monCo= nfig, bool *monJSON); -virDomainDefPtr qemuParseCommandLinePid(virCapsPtr caps, +virDomainDefPtr qemuParseCommandLinePid(virFileCachePtr capsCache, + virCapsPtr caps, virDomainXMLOptionPtr xmlopt, pid_t pid, char **pidfile, diff --git a/tests/qemuargv2xmldata/nomachine-aarch64.args b/tests/qemuargv= 2xmldata/nomachine-aarch64.args deleted file mode 100644 index b17c0d0c23..0000000000 --- a/tests/qemuargv2xmldata/nomachine-aarch64.args +++ /dev/null @@ -1,11 +0,0 @@ -LC_ALL=3DC \ -PATH=3D/bin \ -HOME=3D/home/test \ -USER=3Dtest \ -LOGNAME=3Dtest \ -QEMU_AUDIO_DRV=3Dnone \ -/usr/bin/qemu-system-aarch64 \ --name QEMUGuest1 \ --m 512 \ --hda /dev/HostVG/QEMUGuest1 \ --cdrom /root/boot.iso diff --git a/tests/qemuargv2xmldata/nomachine-aarch64.xml b/tests/qemuargv2= xmldata/nomachine-aarch64.xml deleted file mode 100644 index 9492423389..0000000000 --- a/tests/qemuargv2xmldata/nomachine-aarch64.xml +++ /dev/null @@ -1,40 +0,0 @@ - - QEMUGuest1 - c7a5fdbd-edaf-9455-926a-d65c16db1809 - 524288 - 524288 - 1 - - hvm - - - - - - - destroy - restart - destroy - - /usr/bin/qemu-system-aarch64 - - - - -
- - - - - - -
- - - - - - - diff --git a/tests/qemuargv2xmldata/nomachine-ppc64.xml b/tests/qemuargv2xm= ldata/nomachine-ppc64.xml index 1f15a950e3..18b0c5c20a 100644 --- a/tests/qemuargv2xmldata/nomachine-ppc64.xml +++ b/tests/qemuargv2xmldata/nomachine-ppc64.xml @@ -5,7 +5,7 @@ 524288 1 - hvm + hvm @@ -27,7 +27,7 @@
- +
diff --git a/tests/qemuargv2xmldata/nomachine-x86_64.xml b/tests/qemuargv2x= mldata/nomachine-x86_64.xml index 33cde4c55a..6863c8f5f4 100644 --- a/tests/qemuargv2xmldata/nomachine-x86_64.xml +++ b/tests/qemuargv2xmldata/nomachine-x86_64.xml @@ -5,7 +5,7 @@ 524288 1 - hvm + hvm @@ -30,7 +30,7 @@
- +
diff --git a/tests/qemuargv2xmldata/pseries-disk.xml b/tests/qemuargv2xmlda= ta/pseries-disk.xml index 1f15a950e3..18b0c5c20a 100644 --- a/tests/qemuargv2xmldata/pseries-disk.xml +++ b/tests/qemuargv2xmldata/pseries-disk.xml @@ -5,7 +5,7 @@ 524288 1 - hvm + hvm @@ -27,7 +27,7 @@
- +
diff --git a/tests/qemuargv2xmldata/pseries-nvram.xml b/tests/qemuargv2xmld= ata/pseries-nvram.xml index 7787847a90..500227afc0 100644 --- a/tests/qemuargv2xmldata/pseries-nvram.xml +++ b/tests/qemuargv2xmldata/pseries-nvram.xml @@ -5,7 +5,7 @@ 524288 1 - hvm + hvm @@ -14,7 +14,7 @@ destroy /usr/bin/qemu-system-ppc64 - +
diff --git a/tests/qemuargv2xmltest.c b/tests/qemuargv2xmltest.c index cb010268c4..966e75ef5f 100644 --- a/tests/qemuargv2xmltest.c +++ b/tests/qemuargv2xmltest.c @@ -65,7 +65,8 @@ static int testCompareXMLToArgvFiles(const char *xmlfile, if (virTestLoadFile(cmdfile, &cmd) < 0) goto fail; =20 - if (!(vmdef =3D qemuParseCommandLineString(driver.caps, driver.xmlopt, + if (!(vmdef =3D qemuParseCommandLineString(driver.qemuCapsCache, + driver.caps, driver.xmlopt, cmd, NULL, NULL, NULL))) goto fail; =20 @@ -154,6 +155,20 @@ mymain(void) if (qemuTestDriverInit(&driver) < 0) return EXIT_FAILURE; =20 +# define LOAD_CAPS(arch) \ + do { \ + virQEMUCapsPtr qemuCaps; \ + qemuCaps =3D qemuTestParseCapabilitiesArch(VIR_ARCH_X86_64, \ + "qemucapabilitiesdata/cap= s_2.12.0." arch ".xml"); \ + if (virFileCacheInsertData(driver.qemuCapsCache, \ + "/usr/bin/qemu-system-" arch, \ + qemuCaps) < 0) \ + return EXIT_FAILURE; \ + } while (0) + + LOAD_CAPS("x86_64"); + LOAD_CAPS("aarch64"); + LOAD_CAPS("ppc64"); =20 # define DO_TEST_FULL(name, flags) \ do { \ @@ -290,7 +305,6 @@ mymain(void) DO_TEST("machine-keywrap-none-argv"); =20 DO_TEST("nomachine-x86_64"); - DO_TEST("nomachine-aarch64"); DO_TEST("nomachine-ppc64"); =20 qemuTestDriverFree(&driver); diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_1.5.3.x86_64.xml index a8dd69f4fa..1b009ba32d 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -160,7 +160,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_1.6.0.x86_64.xml index 536e0e19eb..fbf3d2913d 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -165,7 +165,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_1.7.0.x86_64.xml index 41f57963fa..cbed9870e9 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -167,7 +167,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_2.1.1.x86_64.xml index 28f2db1fbc..77999f7ede 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml @@ -185,7 +185,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml b/tests/qemuc= apabilitiesdata/caps_2.10.0.ppc64.xml index 75c2230b25..b299fd9a54 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml @@ -1030,7 +1030,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml b/tests/qemuc= apabilitiesdata/caps_2.10.0.s390x.xml index 5d134f4708..efe2dcd02f 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml @@ -1265,7 +1265,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml b/tests/qemu= capabilitiesdata/caps_2.10.0.x86_64.xml index e5905d727c..6d5bfb43f7 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml @@ -932,7 +932,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml b/tests/qemuc= apabilitiesdata/caps_2.11.0.s390x.xml index df70c7d3e9..4a325068eb 100644 --- a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml @@ -2610,7 +2610,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml b/tests/qemu= capabilitiesdata/caps_2.11.0.x86_64.xml index c22d8507a6..43a1fd1872 100644 --- a/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml @@ -923,7 +923,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml b/tests/qemuc= apabilitiesdata/caps_2.12.0.ppc64.xml index d94082600f..f3af6b641b 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml @@ -1048,7 +1048,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml b/tests/qemuc= apabilitiesdata/caps_2.12.0.s390x.xml index e5b7ffc433..a52fdc4a88 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml @@ -2475,7 +2475,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml b/tests/qemu= capabilitiesdata/caps_2.12.0.x86_64.xml index d34d762ca8..3b099c3f88 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml @@ -1216,7 +1216,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_2.4.0.x86_64.xml index 8b480889b8..ba81aeec4c 100644 --- a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml @@ -217,7 +217,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_2.5.0.x86_64.xml index 1055b367fb..a52bbadac6 100644 --- a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml @@ -223,7 +223,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_2.6.0.ppc64.xml index be091167d3..dc185b031e 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml @@ -1005,7 +1005,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_2.6.0.x86_64.xml index ea2623c9ef..45162b618d 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml @@ -235,7 +235,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml b/tests/qemuca= pabilitiesdata/caps_2.7.0.s390x.xml index adc3877bd8..2425ec5869 100644 --- a/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml @@ -113,7 +113,7 @@ s390x - + diff --git a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_2.7.0.x86_64.xml index 00557a9783..f31f1ed6bf 100644 --- a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml @@ -242,7 +242,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml b/tests/qemuca= pabilitiesdata/caps_2.8.0.s390x.xml index fdaea3fabb..b1e70a8bec 100644 --- a/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml @@ -259,7 +259,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_2.8.0.x86_64.xml index 71548b6326..b27a6c6687 100644 --- a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml @@ -367,7 +367,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_2.9.0.ppc64.xml index c4ebb73d21..1f912a6007 100644 --- a/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml @@ -1021,7 +1021,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml b/tests/qemuca= pabilitiesdata/caps_2.9.0.s390x.xml index 302cc5ffa1..4a886f8268 100644 --- a/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml @@ -264,7 +264,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_2.9.0.x86_64.xml index c0bfb3f07a..6425112350 100644 --- a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml @@ -850,7 +850,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_3.0.0.ppc64.xml index 64033dee51..359fe07b7d 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml @@ -1048,7 +1048,7 @@ - + diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_3.0.0.x86_64.xml index c8da1c5696..d8297620c0 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml @@ -1158,7 +1158,7 @@ - + --=20 2.17.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list