From nobody Mon Apr 29 05:06:32 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 1526571224480636.8730282149141; Thu, 17 May 2018 08:33:44 -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 5C22D30C498F; Thu, 17 May 2018 15:33:42 +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 C2AB320078B0; Thu, 17 May 2018 15:33:41 +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 A560D4BB79; Thu, 17 May 2018 15:33:40 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w4HFXU35029663 for ; Thu, 17 May 2018 11:33:31 -0400 Received: by smtp.corp.redhat.com (Postfix) id BF62910E4CF6; Thu, 17 May 2018 15:33:30 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9EB4010E4CF0 for ; Thu, 17 May 2018 15:33:28 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 67DC6102EDA; Thu, 17 May 2018 17:33:27 +0200 (CEST) From: Jiri Denemark To: libvir-list@redhat.com Date: Thu, 17 May 2018 17:33:24 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 1/3] Revert "domcaps: Treat host models as case-insensitive strings" 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: , MIME-Version: 1.0 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.48]); Thu, 17 May 2018 15:33:43 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This reverts commit 2d8721e2606806164782028ecf1ee33a9bbaa8fe. This fix was both incomplete and too general. It only fixed domain startup, but libvirt would still report empty list of supported CPU models with recent QEMU for ppc64. On the other hand, while ppc64 QEMU ignores case when looking up CPU model names, x86_64 QEMU does case sensitive lookup. Without reverting this patch, libvirt could happily accept CPU model names which are not supported by QEMU. Signed-off-by: Jiri Denemark --- src/conf/domain_capabilities.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c index 6e2ab0a287..5f82ad2c10 100644 --- a/src/conf/domain_capabilities.c +++ b/src/conf/domain_capabilities.c @@ -264,7 +264,7 @@ virDomainCapsCPUModelsGet(virDomainCapsCPUModelsPtr cpu= Models, return NULL; =20 for (i =3D 0; i < cpuModels->nmodels; i++) { - if (STRCASEEQ(cpuModels->models[i].name, name)) + if (STREQ(cpuModels->models[i].name, name)) return cpuModels->models + i; } =20 --=20 2.17.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Mon Apr 29 05:06:32 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 1526571280867469.27536471308963; Thu, 17 May 2018 08:34:40 -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 EF0B730C6B36; Thu, 17 May 2018 15:34:37 +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 BE5ED1001F5C; Thu, 17 May 2018 15:34:37 +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 68D044CAA8; Thu, 17 May 2018 15:34:37 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w4HFXUmm029662 for ; Thu, 17 May 2018 11:33:31 -0400 Received: by smtp.corp.redhat.com (Postfix) id BBA67ADF99; Thu, 17 May 2018 15:33:30 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 991D6ADF95 for ; Thu, 17 May 2018 15:33:28 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 6A7E6102EDD; Thu, 17 May 2018 17:33:27 +0200 (CEST) From: Jiri Denemark To: libvir-list@redhat.com Date: Thu, 17 May 2018 17:33:25 +0200 Message-Id: <2635e8a3debff8f1331cd4a675c1e14c5ad8db8d.1526570946.git.jdenemar@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 2/3] util: Introduce virStringListSearch 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: , MIME-Version: 1.0 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.48]); Thu, 17 May 2018 15:34:39 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" The function performs a case insensitive search in a string list. Signed-off-by: Jiri Denemark --- src/libvirt_private.syms | 1 + src/util/virstring.c | 28 ++++++++++++++++++++++++++++ src/util/virstring.h | 3 +++ 3 files changed, 32 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 3dece252df..9448bca596 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2868,6 +2868,7 @@ virStringListJoin; virStringListLength; virStringListMerge; virStringListRemove; +virStringListSearch; virStringMatch; virStringParsePort; virStringReplace; diff --git a/src/util/virstring.c b/src/util/virstring.c index 15f367af7c..17c3282043 100644 --- a/src/util/virstring.c +++ b/src/util/virstring.c @@ -1499,3 +1499,31 @@ virStringParsePort(const char *str, =20 return 0; } + + +/** + * virStringListSearch: + * @strings: string list + * @needle: string to be searched for + * + * Searches for @needle in @strings ignoring case. See virStringListHasStr= ing + * for case sensitive search. + * + * Returns the matching string in @strings or NULL if not found. + */ +const char * +virStringListSearch(const char **strings, + const char *needle) +{ + size_t i; + + if (!strings) + return NULL; + + for (i =3D 0; strings[i]; i++) { + if (STRCASEEQ(strings[i], needle)) + return strings[i]; + } + + return NULL; +} diff --git a/src/util/virstring.h b/src/util/virstring.h index fa2ec1df4d..90afd244f6 100644 --- a/src/util/virstring.h +++ b/src/util/virstring.h @@ -309,4 +309,7 @@ int virStringParsePort(const char *str, unsigned int *port) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; =20 +const char *virStringListSearch(const char **strings, + const char *needle); + #endif /* __VIR_STRING_H__ */ --=20 2.17.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Mon Apr 29 05:06:32 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 1526571286369263.61926282964373; Thu, 17 May 2018 08:34:46 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D4549316EFF8; Thu, 17 May 2018 15:34:44 +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 D40622B6EC; Thu, 17 May 2018 15:34:43 +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 6E433180124E; Thu, 17 May 2018 15:34:43 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w4HFXUfQ029664 for ; Thu, 17 May 2018 11:33:31 -0400 Received: by smtp.corp.redhat.com (Postfix) id D723C8579A; Thu, 17 May 2018 15:33:30 +0000 (UTC) Received: from virval.usersys.redhat.com (unknown [10.43.2.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 991A0945A3 for ; Thu, 17 May 2018 15:33:28 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id 6D3D2102EDE; Thu, 17 May 2018 17:33:27 +0200 (CEST) From: Jiri Denemark To: libvir-list@redhat.com Date: Thu, 17 May 2018 17:33:26 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 3/3] qemu: Adapt to changed ppc64 CPU model names 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: , MIME-Version: 1.0 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.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.41]); Thu, 17 May 2018 15:34:45 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" QEMU 2.11 for ppc64 changed all CPU model names to lower case. Since libvirt can't change the model names for compatibility reasons, we need to translate the matching lower case models to the names known by libvirt. Signed-off-by: Jiri Denemark --- src/qemu/qemu_capabilities.c | 28 +++++++++++++++++-- src/qemu/qemu_capabilities.h | 3 +- src/qemu/qemu_process.c | 2 +- .../qemu_2.12.0.ppc64.xml | 6 +++- .../caps_2.12.0.ppc64.xml | 12 ++++---- 5 files changed, 40 insertions(+), 11 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index a5cb24fec6..9fee5dcd8a 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -2217,16 +2217,39 @@ virQEMUCapsProbeQMPMachineTypes(virQEMUCapsPtr qemu= Caps, =20 =20 virDomainCapsCPUModelsPtr -virQEMUCapsFetchCPUDefinitions(qemuMonitorPtr mon) +virQEMUCapsFetchCPUDefinitions(qemuMonitorPtr mon, + virArch arch) { virDomainCapsCPUModelsPtr models =3D NULL; qemuMonitorCPUDefInfoPtr *cpus =3D NULL; + char **libvirtModels =3D NULL; int ncpus =3D 0; size_t i; =20 if ((ncpus =3D qemuMonitorGetCPUDefinitions(mon, &cpus)) < 0) return NULL; =20 + if (ARCH_IS_PPC(arch)) { + /* QEMU 2.11 for Power renamed all CPU models to lower case, we ne= ed + * to translate them back to libvirt's upper case model names. */ + if (virCPUGetModels(arch, &libvirtModels) < 0) + goto error; + + if (virStringListLength((const char **)libvirtModels) > 0) { + for (i =3D 0; i < ncpus; i++) { + const char *name; + + if (!(name =3D virStringListSearch((const char **)libvirtM= odels, + cpus[i]->name))) + continue; + + VIR_FREE(cpus[i]->name); + if (VIR_STRDUP(cpus[i]->name, name) < 0) + goto error; + } + } + } + if (!(models =3D virDomainCapsCPUModelsNew(ncpus))) goto error; =20 @@ -2247,6 +2270,7 @@ virQEMUCapsFetchCPUDefinitions(qemuMonitorPtr mon) for (i =3D 0; i < ncpus; i++) qemuMonitorCPUDefInfoFree(cpus[i]); VIR_FREE(cpus); + virStringListFree(libvirtModels); return models; =20 error: @@ -2266,7 +2290,7 @@ virQEMUCapsProbeQMPCPUDefinitions(virQEMUCapsPtr qemu= Caps, if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_CPU_DEFINITIONS)) return 0; =20 - if (!(models =3D virQEMUCapsFetchCPUDefinitions(mon))) + if (!(models =3D virQEMUCapsFetchCPUDefinitions(mon, qemuCaps->arch))) return -1; =20 if (tcg || !virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM)) diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index d23c34c24d..3ab108a667 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -513,7 +513,8 @@ int virQEMUCapsAddCPUDefinitions(virQEMUCapsPtr qemuCap= s, virDomainCapsCPUUsable usable); virDomainCapsCPUModelsPtr virQEMUCapsGetCPUDefinitions(virQEMUCapsPtr qemu= Caps, virDomainVirtType t= ype); -virDomainCapsCPUModelsPtr virQEMUCapsFetchCPUDefinitions(qemuMonitorPtr mo= n); +virDomainCapsCPUModelsPtr virQEMUCapsFetchCPUDefinitions(qemuMonitorPtr mo= n, + virArch arch); =20 typedef enum { /* Host CPU definition reported in domain capabilities. */ diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 5b73a61962..d09ff7fb87 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -4127,7 +4127,7 @@ qemuProcessFetchCPUDefinitions(virQEMUDriverPtr drive= r, if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0) goto error; =20 - models =3D virQEMUCapsFetchCPUDefinitions(priv->mon); + models =3D virQEMUCapsFetchCPUDefinitions(priv->mon, vm->def->os.arch); =20 if (qemuDomainObjExitMonitor(driver, vm) < 0) goto error; diff --git a/tests/domaincapsschemadata/qemu_2.12.0.ppc64.xml b/tests/domai= ncapsschemadata/qemu_2.12.0.ppc64.xml index 5fac2ed772..1762417ee2 100644 --- a/tests/domaincapsschemadata/qemu_2.12.0.ppc64.xml +++ b/tests/domaincapsschemadata/qemu_2.12.0.ppc64.xml @@ -25,7 +25,11 @@ POWER8 - + + POWER9 + POWER8 + POWER7 + diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml b/tests/qemuc= apabilitiesdata/caps_2.12.0.ppc64.xml index bffe3b3b97..144b8883a2 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml @@ -171,12 +171,12 @@ - + - + - + @@ -609,12 +609,12 @@ - + - + - + --=20 2.17.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list