From nobody Mon Apr 29 12:27:43 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 ARC-Seal: i=1; a=rsa-sha256; t=1560984850; cv=none; d=zoho.com; s=zohoarc; b=GNZBqwNnEuVwiSNMIl79c00eVyUFuuudbgRvQCubC6x9STnAGJ62c5jBNva3hKns6RNjhEHQyNINo24EczsxZKIbs/XgJdzYnzWHBJiOaABCTfVLu05WGMBGXILDl56Wquql0GjSy9NBtqcDpMD7/vSqCn8u5nOuoJt4MwJCQtk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560984850; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=LN0Jcr2rQWBjJufZwKf4hfbRA0cT0Lwz371eGk/n14Y=; b=YxE8wXYWfc7hxpaj5mg2Pdy3W6Rs0vzeCfWUUz6fR/eRbtkuYhK2qpL00cx+KSUj9NeLm1g2hiYfIBj7uEaK5uN8/bUF++Y1FMZj2I7DNka3HsuyYn1APYELHRyaE8zMo5A1AHHwbrz+OuE3w3O0gfxCvtV8zDbNZogZUhFY6hA= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 156098485049871.05112511305947; Wed, 19 Jun 2019 15:54:10 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id BFD9931628F9; Wed, 19 Jun 2019 22:54:05 +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 5E0E160FDE; Wed, 19 Jun 2019 22:54:01 +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 1B708206D3; Wed, 19 Jun 2019 22:53:49 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x5JMrm8H022714 for ; Wed, 19 Jun 2019 18:53:48 -0400 Received: by smtp.corp.redhat.com (Postfix) id 1727B5D71D; Wed, 19 Jun 2019 22:53:48 +0000 (UTC) Received: from orkuz.int.mamuti.net (ovpn-204-21.brq.redhat.com [10.40.204.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DF33E5D71C for ; Wed, 19 Jun 2019 22:53:45 +0000 (UTC) Received: by orkuz.int.mamuti.net (Postfix, from userid 500) id 37EF12A05BD; Thu, 20 Jun 2019 00:53:43 +0200 (CEST) From: Jiri Denemark To: libvir-list@redhat.com Date: Thu, 20 Jun 2019 00:53:36 +0200 Message-Id: <9f7361e55f67e7a181756e70cc7c00dea19d51cf.1560984559.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 1/7] conf: Introduce virCPUDefCheckFeatures 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-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.41]); Wed, 19 Jun 2019 22:54:08 +0000 (UTC) Content-Type: text/plain; charset="utf-8" This API can be used to check whether a CPU definition contains features matching a given filter. Signed-off-by: Jiri Denemark Reviewed-by: J=C3=A1n Tomko --- src/conf/cpu_conf.c | 33 +++++++++++++++++++++++++++++++++ src/conf/cpu_conf.h | 6 ++++++ src/libvirt_private.syms | 1 + 3 files changed, 40 insertions(+) diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c index 675d214c50..7d16a05283 100644 --- a/src/conf/cpu_conf.c +++ b/src/conf/cpu_conf.c @@ -930,6 +930,39 @@ virCPUDefFilterFeatures(virCPUDefPtr cpu, } =20 =20 +/** + * virCPUDefCheckFeatures: + * + * Check CPU features for which @filter reports true and store them in a N= ULL + * terminated list returned via @features. + * + * Returns the number of features matching @filter or -1 on error. + */ +int +virCPUDefCheckFeatures(virCPUDefPtr cpu, + virCPUDefFeatureFilter filter, + void *opaque, + char ***features) +{ + VIR_AUTOSTRINGLIST list =3D NULL; + size_t n =3D 0; + size_t i; + + *features =3D NULL; + + for (i =3D 0; i < cpu->nfeatures; i++) { + if (filter(cpu->features[i].name, opaque)) { + if (virStringListAdd(&list, cpu->features[i].name) < 0) + return -1; + n++; + } + } + + VIR_STEAL_PTR(*features, list); + return n; +} + + bool virCPUDefIsEqual(virCPUDefPtr src, virCPUDefPtr dst, diff --git a/src/conf/cpu_conf.h b/src/conf/cpu_conf.h index 906ef5368e..19ce816ec2 100644 --- a/src/conf/cpu_conf.h +++ b/src/conf/cpu_conf.h @@ -224,6 +224,12 @@ virCPUDefFilterFeatures(virCPUDefPtr cpu, virCPUDefFeatureFilter filter, void *opaque); =20 +int +virCPUDefCheckFeatures(virCPUDefPtr cpu, + virCPUDefFeatureFilter filter, + void *opaque, + char ***features); + virCPUDefPtr * virCPUDefListParse(const char **xmlCPUs, unsigned int ncpus, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index ab2e4bc6fe..90a6d10666 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -73,6 +73,7 @@ virCapabilitiesSetNetPrefix; virCPUCacheModeTypeFromString; virCPUCacheModeTypeToString; virCPUDefAddFeature; +virCPUDefCheckFeatures; virCPUDefCopy; virCPUDefCopyModel; virCPUDefCopyModelFilter; --=20 2.22.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Mon Apr 29 12:27:43 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 ARC-Seal: i=1; a=rsa-sha256; t=1560984850; cv=none; d=zoho.com; s=zohoarc; b=YsyStc/PZdxkYXPPOL+PPqmdziV3zszGkWtEZx9uM+FP9PmA68gc0NMHwnjPwgYvcrv6+7WqXqPwxaS7fWvPM2swvSqfB1bY0uCS3ysYnBygrl9+846oE9farZ6PjPJU1iEezS1jnmUMuj8ZbPNEg9dNXa4bAL5yTz4OsB53PX8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560984850; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=nX+FGJUd6onld5L/hlHSlOAKRgar9p5J7sCb5J/a88k=; b=VgfmQIyVaCANWTW+QWg/JwY57C4D5JE1X6/etuNO530LIjhaxxoeQPLCLqv3J2PwWIRwCYs23q6WxbZ3k3sD7EKG98RneZvxrZmrMs7AKnjktq60DJq6Ts1aB4Ups0l0dBLdSS/AbwEqa4K+o6vJpGWvnin40tlOTKKGIgQF8VU= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1560984850559976.1269608659314; Wed, 19 Jun 2019 15:54:10 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1607881E04; Wed, 19 Jun 2019 22:54:04 +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 BE7AE5D9D2; Wed, 19 Jun 2019 22:53:59 +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 ED85B206D2; Wed, 19 Jun 2019 22:53:48 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x5JMrmAh022735 for ; Wed, 19 Jun 2019 18:53:48 -0400 Received: by smtp.corp.redhat.com (Postfix) id 4AFCA19C5B; Wed, 19 Jun 2019 22:53:48 +0000 (UTC) Received: from orkuz.int.mamuti.net (ovpn-204-21.brq.redhat.com [10.40.204.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id EAA4E19C79 for ; Wed, 19 Jun 2019 22:53:45 +0000 (UTC) Received: by orkuz.int.mamuti.net (Postfix, from userid 500) id 3B07C2A10F4; Thu, 20 Jun 2019 00:53:43 +0200 (CEST) From: Jiri Denemark To: libvir-list@redhat.com Date: Thu, 20 Jun 2019 00:53:37 +0200 Message-Id: <74638662a6b03a8b6951931574218f357b52158f.1560984559.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 2/7] cpu_x86: Turn virCPUx86DataIteratorInit into a function 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-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Wed, 19 Jun 2019 22:54:07 +0000 (UTC) Content-Type: text/plain; charset="utf-8" Until now, this was a macro usable for direct initialization when a variable is defined. Turning the macro into a function makes it more general. Signed-off-by: Jiri Denemark Reviewed-by: J=C3=A1n Tomko --- src/cpu/cpu_x86.c | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c index b6a94d483a..6eef5cef00 100644 --- a/src/cpu/cpu_x86.c +++ b/src/cpu/cpu_x86.c @@ -189,8 +189,13 @@ struct _virCPUx86DataIterator { }; =20 =20 -#define virCPUx86DataIteratorInit(data) \ - { data, -1 } +static void +virCPUx86DataIteratorInit(virCPUx86DataIteratorPtr iterator, + const virCPUx86Data *data) +{ + virCPUx86DataIterator iter =3D { data, -1 }; + *iterator =3D iter; +} =20 =20 static bool @@ -540,9 +545,10 @@ static int x86DataAdd(virCPUx86Data *data1, const virCPUx86Data *data2) { - virCPUx86DataIterator iter =3D virCPUx86DataIteratorInit(data2); + virCPUx86DataIterator iter; virCPUx86DataItemPtr item; =20 + virCPUx86DataIteratorInit(&iter, data2); while ((item =3D virCPUx86DataNext(&iter))) { if (virCPUx86DataAddItem(data1, item) < 0) return -1; @@ -556,10 +562,11 @@ static void x86DataSubtract(virCPUx86Data *data1, const virCPUx86Data *data2) { - virCPUx86DataIterator iter =3D virCPUx86DataIteratorInit(data1); + virCPUx86DataIterator iter; virCPUx86DataItemPtr item1; virCPUx86DataItemPtr item2; =20 + virCPUx86DataIteratorInit(&iter, data1); while ((item1 =3D virCPUx86DataNext(&iter))) { item2 =3D virCPUx86DataGet(data2, item1); virCPUx86DataItemClearBits(item1, item2); @@ -571,10 +578,11 @@ static void x86DataIntersect(virCPUx86Data *data1, const virCPUx86Data *data2) { - virCPUx86DataIterator iter =3D virCPUx86DataIteratorInit(data1); + virCPUx86DataIterator iter; virCPUx86DataItemPtr item1; virCPUx86DataItemPtr item2; =20 + virCPUx86DataIteratorInit(&iter, data1); while ((item1 =3D virCPUx86DataNext(&iter))) { item2 =3D virCPUx86DataGet(data2, item1); if (item2) @@ -588,8 +596,9 @@ x86DataIntersect(virCPUx86Data *data1, static bool x86DataIsEmpty(virCPUx86Data *data) { - virCPUx86DataIterator iter =3D virCPUx86DataIteratorInit(data); + virCPUx86DataIterator iter; =20 + virCPUx86DataIteratorInit(&iter, data); return !virCPUx86DataNext(&iter); } =20 @@ -598,10 +607,11 @@ static bool x86DataIsSubset(const virCPUx86Data *data, const virCPUx86Data *subset) { - virCPUx86DataIterator iter =3D virCPUx86DataIteratorInit((virCPUx86Dat= a *)subset); + virCPUx86DataIterator iter; const virCPUx86DataItem *item; const virCPUx86DataItem *itemSubset; =20 + virCPUx86DataIteratorInit(&iter, subset); while ((itemSubset =3D virCPUx86DataNext(&iter))) { if (!(item =3D virCPUx86DataGet(data, itemSubset)) || !virCPUx86DataItemMatchMasked(item, itemSubset)) @@ -1314,11 +1324,13 @@ x86ModelCompare(virCPUx86ModelPtr model1, virCPUx86ModelPtr model2) { virCPUx86CompareResult result =3D EQUAL; - virCPUx86DataIterator iter1 =3D virCPUx86DataIteratorInit(&model1->dat= a); - virCPUx86DataIterator iter2 =3D virCPUx86DataIteratorInit(&model2->dat= a); + virCPUx86DataIterator iter1; + virCPUx86DataIterator iter2; virCPUx86DataItemPtr item1; virCPUx86DataItemPtr item2; =20 + virCPUx86DataIteratorInit(&iter1, &model1->data); + virCPUx86DataIteratorInit(&iter2, &model2->data); while ((item1 =3D virCPUx86DataNext(&iter1))) { virCPUx86CompareResult match =3D SUPERSET; =20 @@ -1624,10 +1636,12 @@ virCPUx86GetMap(void) static char * virCPUx86DataFormat(const virCPUData *data) { - virCPUx86DataIterator iter =3D virCPUx86DataIteratorInit(&data->data.x= 86); + virCPUx86DataIterator iter; virCPUx86DataItemPtr item; virBuffer buf =3D VIR_BUFFER_INITIALIZER; =20 + virCPUx86DataIteratorInit(&iter, &data->data.x86); + virBufferAddLit(&buf, "\n"); while ((item =3D virCPUx86DataNext(&iter))) { virCPUx86CPUIDPtr cpuid; --=20 2.22.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Mon Apr 29 12:27:43 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 ARC-Seal: i=1; a=rsa-sha256; t=1560984880; cv=none; d=zoho.com; s=zohoarc; b=K+kgn9Jwl/cM7u1dQ2NZ3LEB0zpnUDJ3LsuqINxRmRrSJIkpe+zd4bYoXx+qLCqT7bXMSiuAXZX3JztDmdKgNv9x3RAzTBB6HhEi0dXt0/+MHte3MCtXou6baTBZvxQw/3MAmNNGvPe+vP83RD4smMBI/m8jjj5fdMth/RTOLxY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560984880; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=20AYmb/CyBtEmcua2BhQdEFmGS0pjhcZhr4mSn5PW0w=; b=GrC/d7LFnV5TP48I7m8cFTbLTH4EJSd90+GMhfVwh9hMcKK55AUFLIFIgpYkqhBsqzovR9g30rGyST9yFrFy6sDkdTwYoB7xG5TaKOsII7zEuF0OPMnVntCS9TZIebcedyge5HgCYCbA8CcEzGRiOStaJrer38kbeCyw380d6zI= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1560984880655208.9922697123991; Wed, 19 Jun 2019 15:54:40 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 9A506C072253; Wed, 19 Jun 2019 22:54:31 +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 76E2360FDE; Wed, 19 Jun 2019 22:54:31 +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 3BA631806B1A; Wed, 19 Jun 2019 22:54:29 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x5JMrmeD022715 for ; Wed, 19 Jun 2019 18:53:48 -0400 Received: by smtp.corp.redhat.com (Postfix) id 1A89C5C221; Wed, 19 Jun 2019 22:53:48 +0000 (UTC) Received: from orkuz.int.mamuti.net (ovpn-204-21.brq.redhat.com [10.40.204.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E1F785C21E for ; Wed, 19 Jun 2019 22:53:45 +0000 (UTC) Received: by orkuz.int.mamuti.net (Postfix, from userid 500) id 3E0CB2A10F5; Thu, 20 Jun 2019 00:53:43 +0200 (CEST) From: Jiri Denemark To: libvir-list@redhat.com Date: Thu, 20 Jun 2019 00:53:38 +0200 Message-Id: <787a32631c8038b7fda9ad5815cf99586fcf325c.1560984559.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 3/7] cpu_x86: Introduce virCPUx86FeatureIsMSR 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-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Wed, 19 Jun 2019 22:54:39 +0000 (UTC) Content-Type: text/plain; charset="utf-8" This function may be used as a virCPUDefFeatureFilter callback for virCPUDefCheckFeatures, virCPUDefFilerFeatures, and similar functions to filter or pick out features reported via MSR. Signed-off-by: Jiri Denemark --- src/cpu/cpu_x86.c | 40 ++++++++++++++++++++++++++++++++++++++++ src/cpu/cpu_x86.h | 3 +++ src/libvirt_private.syms | 1 + 3 files changed, 44 insertions(+) diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c index 6eef5cef00..a7ec0f7095 100644 --- a/src/cpu/cpu_x86.c +++ b/src/cpu/cpu_x86.c @@ -3362,6 +3362,46 @@ virCPUx86DataAddFeature(virCPUDataPtr cpuData, } =20 =20 +/** + * virCPUx86FeatureIsMSR: + * @name CPU feature name + * @opaque NULL or a pointer to bool + * + * This is a callback for functions filtering features in virCPUDef. + * + * Checks whether a given CPU feature is reported via MSR. When @opaque is= NULL + * or a pointer to true, the function will pick out (return true for) MSR + * features. If @opaque is a pointer to false, the logic will be inverted = and + * the function will filter out (return false for) MSR features. + */ +bool +virCPUx86FeatureIsMSR(const char *name, + void *opaque) +{ + virCPUx86FeaturePtr feature; + virCPUx86DataIterator iter; + virCPUx86DataItemPtr item; + virCPUx86MapPtr map; + bool inverted =3D false; + + if (opaque) + inverted =3D !*(bool *)opaque; + + if ((!(map =3D virCPUx86GetMap()) || + !(feature =3D x86FeatureFind(map, name))) && + !(feature =3D x86FeatureFindInternal(name))) + return inverted ? true : false; + + virCPUx86DataIteratorInit(&iter, &feature->data); + while ((item =3D virCPUx86DataNext(&iter))) { + if (item->type =3D=3D VIR_CPU_X86_DATA_MSR) + return inverted ? false : true; + } + + return inverted ? true : false; +} + + struct cpuArchDriver cpuDriverX86 =3D { .name =3D "x86", .arch =3D archs, diff --git a/src/cpu/cpu_x86.h b/src/cpu/cpu_x86.h index 28ae46647a..8ae78d5e34 100644 --- a/src/cpu/cpu_x86.h +++ b/src/cpu/cpu_x86.h @@ -40,3 +40,6 @@ uint32_t virCPUx86DataGetSignature(virCPUDataPtr cpuData, =20 int virCPUx86DataSetVendor(virCPUDataPtr cpuData, const char *vendor); + +bool virCPUx86FeatureIsMSR(const char *name, + void *opaque); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 90a6d10666..aa64580d63 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1268,6 +1268,7 @@ virCPUx86DataAdd; virCPUx86DataGetSignature; virCPUx86DataSetSignature; virCPUx86DataSetVendor; +virCPUx86FeatureIsMSR; =20 =20 # datatypes.h --=20 2.22.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Mon Apr 29 12:27:43 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 ARC-Seal: i=1; a=rsa-sha256; t=1560984884; cv=none; d=zoho.com; s=zohoarc; b=oL/MInIQb2rlds8KwMOwWE1u0Y8PPDEZpiLP6bupdWqRiZQv72y1zOu7KGM/lNkWrzfdMjXQPdJVhL7EUfyr0Sw50QiI9YJl7T6s1uS/Qd2AXb40DHid0enDrKkd4CN6zuXuVlnXKD7atZEGhyWaHszPAmsCM/i8bh11GtW7/L0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560984884; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=wUH5TGRecCEmhxNUF2UxkhEqwokq//IOFIIFQaYj+oM=; b=nS6Od8GEn4N9vEcrd16IcYix+bqDUstm/54Ic6LK/aI01WOskyFhS1YjPT3j8qjeSPWb7Gw1P7wDB/GQud0dd23H219twe52NVWanAF+AvDyBB/86UJa+S0rvrKtIT0X4eoCVqQeiifxZgBvFgShWKhkJ9HUoHeTKFNAdR+vRIg= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1560984884064977.4638226913777; Wed, 19 Jun 2019 15:54:44 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7451AC1EB1EF; Wed, 19 Jun 2019 22:54: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 54FE65D9D6; Wed, 19 Jun 2019 22:54:42 +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 5A587206DB; Wed, 19 Jun 2019 22:54:40 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x5JMrmc4022716 for ; Wed, 19 Jun 2019 18:53:48 -0400 Received: by smtp.corp.redhat.com (Postfix) id 1BE9A608CA; Wed, 19 Jun 2019 22:53:48 +0000 (UTC) Received: from orkuz.int.mamuti.net (ovpn-204-21.brq.redhat.com [10.40.204.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E1D2E608A5 for ; Wed, 19 Jun 2019 22:53:45 +0000 (UTC) Received: by orkuz.int.mamuti.net (Postfix, from userid 500) id 3F9CA2A10F3; Thu, 20 Jun 2019 00:53:43 +0200 (CEST) From: Jiri Denemark To: libvir-list@redhat.com Date: Thu, 20 Jun 2019 00:53:39 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 4/7] cpu_x86: Read CPU features from IA32_ARCH_CAPABILITIES MSR 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.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Wed, 19 Jun 2019 22:54:42 +0000 (UTC) This is used by the host capabilities code to construct host CPU definition. Signed-off-by: Jiri Denemark Reviewed-by: J=C3=A1n Tomko --- src/cpu/cpu_x86.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c index a7ec0f7095..5f051950de 100644 --- a/src/cpu/cpu_x86.c +++ b/src/cpu/cpu_x86.c @@ -2773,6 +2773,28 @@ virCPUx86GetHost(virCPUDefPtr cpu, cpuidSet(CPUX86_EXTENDED, cpuData) < 0) goto cleanup; =20 + /* Read the IA32_ARCH_CAPABILITIES MSR (0x10a) if supported. + * This is best effort since there might be no way to read the MSR + * when we are not running as root. */ + if (virCPUx86DataCheckFeature(cpuData, "arch-capabilities") =3D=3D 1) { + uint64_t msr; + unsigned long index =3D 0x10a; + + if (virHostCPUGetMSR(index, &msr) =3D=3D 0) { + virCPUx86DataItem item =3D { + .type =3D VIR_CPU_X86_DATA_MSR, + .data.msr =3D { + .index =3D index, + .eax =3D msr & 0xffffffff, + .edx =3D msr >> 32, + }, + }; + + if (virCPUx86DataAdd(cpuData, &item) < 0) + return -1; + } + } + ret =3D x86DecodeCPUData(cpu, cpuData, models); cpu->microcodeVersion =3D virHostCPUGetMicrocodeVersion(); =20 --=20 2.22.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Mon Apr 29 12:27:43 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 ARC-Seal: i=1; a=rsa-sha256; t=1560984880; cv=none; d=zoho.com; s=zohoarc; b=OSiuU+eOQ2UdL/PB4bXQn7uL49hUKfsqRtZDzHdhCQTkvsGi+1Ya/eG+s8CAu6oZJ+gwo5Fni5hrJodfvoJKvoo8a/tNWC8e1zuJnIHit/43KlSfABb6qnkr8JLp5lqG/bBSX6stnVojKUrt6S1O7FrkS4w2rYS5Rsh69Zf1pvc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560984880; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=ODQYb3/+Wr1oXVUOx7GcfEoAcqPHw+3T09fi8voRqdA=; b=Dtnf4e1m5aERu7FIc05UOoCP4Waca33zgtFl0oQU1cVSaKBTEg9PzjmdUG1vSiCgTf/1V6QNOgOx+fWr0/gx7bHcjaEW3Vo1MsxS+BMzdiKUxHtEBTHCjmRk7XHiCFpXQL+i7cYXeld4kindv3ZOCYg+Sve2KmCDODVsmqn5YhE= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1560984880693880.1317508671342; Wed, 19 Jun 2019 15:54:40 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E75FE3003097; Wed, 19 Jun 2019 22:54:32 +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 BA2B95C225; Wed, 19 Jun 2019 22:54:30 +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 7277A206D4; Wed, 19 Jun 2019 22:54:29 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x5JMrnDG022750 for ; Wed, 19 Jun 2019 18:53:49 -0400 Received: by smtp.corp.redhat.com (Postfix) id DE77E19C5B; Wed, 19 Jun 2019 22:53:49 +0000 (UTC) Received: from orkuz.int.mamuti.net (ovpn-204-21.brq.redhat.com [10.40.204.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8850C19C79 for ; Wed, 19 Jun 2019 22:53:49 +0000 (UTC) Received: by orkuz.int.mamuti.net (Postfix, from userid 500) id 42B602A117B; Thu, 20 Jun 2019 00:53:43 +0200 (CEST) From: Jiri Denemark To: libvir-list@redhat.com Date: Thu, 20 Jun 2019 00:53:40 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 5/7] cpu_map: Introduce IA32_ARCH_CAPABILITIES MSR features 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.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.46]); Wed, 19 Jun 2019 22:54:38 +0000 (UTC) Signed-off-by: Jiri Denemark Reviewed-by: J=C3=A1n Tomko --- src/cpu_map/x86_features.xml | 20 +++++++++++++++++++ .../x86_64-cpuid-Core-i7-7600U-enabled.xml | 1 + .../x86_64-cpuid-Core-i7-7600U-json.xml | 1 + ...86_64-cpuid-Xeon-Platinum-8268-enabled.xml | 1 + .../x86_64-cpuid-Xeon-Platinum-8268-guest.xml | 4 ++++ .../x86_64-cpuid-Xeon-Platinum-8268-host.xml | 4 ++++ .../x86_64-cpuid-Xeon-Platinum-8268-json.xml | 3 +++ .../qemu_3.1.0.x86_64.xml | 1 + .../qemu_4.0.0.x86_64.xml | 1 + .../qemu_4.1.0.x86_64.xml | 1 + 10 files changed, 37 insertions(+) diff --git a/src/cpu_map/x86_features.xml b/src/cpu_map/x86_features.xml index 370807f88e..2bed1e0372 100644 --- a/src/cpu_map/x86_features.xml +++ b/src/cpu_map/x86_features.xml @@ -482,4 +482,24 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-enabled.xml b/tes= ts/cputestdata/x86_64-cpuid-Core-i7-7600U-enabled.xml index b1cdaa802a..58bc84577c 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-enabled.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-enabled.xml @@ -5,4 +5,5 @@ + diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-json.xml b/tests/= cputestdata/x86_64-cpuid-Core-i7-7600U-json.xml index 48089c6003..690081493b 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-json.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-json.xml @@ -10,4 +10,5 @@ + diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-enabled.xml = b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-enabled.xml index 434ac1956a..313009b156 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-enabled.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-enabled.xml @@ -5,4 +5,5 @@ + diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-guest.xml b/= tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-guest.xml index c7e8a1fccf..988fb1dbdc 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-guest.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-guest.xml @@ -30,4 +30,8 @@ + + + + diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-host.xml b/t= ests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-host.xml index d7482751b4..fdeafc4870 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-host.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-host.xml @@ -31,4 +31,8 @@ + + + + diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-json.xml b/t= ests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-json.xml index b7d12dced7..78863c61d1 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-json.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-json.xml @@ -7,4 +7,7 @@ + + + diff --git a/tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml b/tests/domai= ncapsschemadata/qemu_3.1.0.x86_64.xml index ca3baab88c..dfd186afba 100644 --- a/tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml +++ b/tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml @@ -42,6 +42,7 @@ + qemu64 diff --git a/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml b/tests/domai= ncapsschemadata/qemu_4.0.0.x86_64.xml index cba841d844..36f6f1e94d 100644 --- a/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml +++ b/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml @@ -42,6 +42,7 @@ + qemu64 diff --git a/tests/domaincapsschemadata/qemu_4.1.0.x86_64.xml b/tests/domai= ncapsschemadata/qemu_4.1.0.x86_64.xml index 389e641bbb..d3fc1ce9e7 100644 --- a/tests/domaincapsschemadata/qemu_4.1.0.x86_64.xml +++ b/tests/domaincapsschemadata/qemu_4.1.0.x86_64.xml @@ -41,6 +41,7 @@ + qemu64 --=20 2.22.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Mon Apr 29 12:27:43 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 ARC-Seal: i=1; a=rsa-sha256; t=1560984878; cv=none; d=zoho.com; s=zohoarc; b=aHAhUTn1evrMvdwz5xfB2ETZipGSp59p/YYHirikNBoTodsssafy8XS3mbtVJKdZOlnYah6iOLaZXFDeHU8kl/nv0ugJBBUGsqg2oXtNTLlykctQ7LpVsskGFKR7usjBHTam1UVWjrq8Vl5PHKqWPi0wSF+Kh9PxLAPg/9LtjeQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560984878; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=0Q3P5/pTYraNWtJkwhPUhucTLfCNLNNBZMEC92utS6c=; b=UIcnsQBEHdx4z9VlGyKI1kpXu6pYjzdmG8AUpFuu0QzaU7zIdBOYVhRgsAPgZHdVBBbVDwZJD1f+HrVHw92/P+JnEYzqygRawOvpATUnl7GLr1wL1hvfXLkIUikBwaaOqhwQYkM69LIP2HKCzSlzYkv05RhuWGOLBL5mrTeix/Q= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1560984878530339.19900912869196; Wed, 19 Jun 2019 15:54:38 -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 9D1DC44BC6; Wed, 19 Jun 2019 22:54:36 +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 71BD619722; Wed, 19 Jun 2019 22:54: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 39793206D8; Wed, 19 Jun 2019 22:54:34 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x5JMrn2C022741 for ; Wed, 19 Jun 2019 18:53:49 -0400 Received: by smtp.corp.redhat.com (Postfix) id B583519936; Wed, 19 Jun 2019 22:53:49 +0000 (UTC) Received: from orkuz.int.mamuti.net (ovpn-204-21.brq.redhat.com [10.40.204.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 87D1319C5B for ; Wed, 19 Jun 2019 22:53:49 +0000 (UTC) Received: by orkuz.int.mamuti.net (Postfix, from userid 500) id 453792A117E; Thu, 20 Jun 2019 00:53:43 +0200 (CEST) From: Jiri Denemark To: libvir-list@redhat.com Date: Thu, 20 Jun 2019 00:53:41 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 6/7] qemu: Forbid MSR features with old QEMU 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-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.30]); Wed, 19 Jun 2019 22:54:37 +0000 (UTC) Content-Type: text/plain; charset="utf-8" Without "unavailable-features" CPU property we cannot properly detect whether a specific MSR feature we asked for (either explicitly or implicitly via a CPU model) was disabled by QEMU for some reason. Because this could break migration, snapshots, and save/restore operaions, it's better to just forbid any use of MSR features with QEMU which lacks "unavailable-features" CPU property. Signed-off-by: Jiri Denemark Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_process.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index fa82adbc1e..45997dad49 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -59,6 +59,7 @@ #include "qemu_firmware.h" =20 #include "cpu/cpu.h" +#include "cpu/cpu_x86.h" #include "datatypes.h" #include "virlog.h" #include "virerror.h" @@ -5407,9 +5408,31 @@ qemuProcessStartValidate(virQEMUDriverPtr driver, if (qemuProcessStartValidateShmem(vm) < 0) return -1; =20 - if (vm->def->cpu && - virCPUValidateFeatures(vm->def->os.arch, vm->def->cpu) < 0) - return -1; + if (vm->def->cpu) { + if (virCPUValidateFeatures(vm->def->os.arch, vm->def->cpu) < 0) + return -1; + + if (ARCH_IS_X86(vm->def->os.arch) && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_CPU_UNAVAILABLE_FEATURES))= { + VIR_AUTOSTRINGLIST features =3D NULL; + int n; + + if ((n =3D virCPUDefCheckFeatures(vm->def->cpu, + virCPUx86FeatureIsMSR, NULL, + &features)) < 0) + return -1; + + if (n > 0) { + VIR_AUTOFREE(char *) str =3D NULL; + + str =3D virStringListJoin((const char **)features, ", "); + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Some features cannot be reliably used " + "with this QEMU: %s"), str); + return -1; + } + } + } =20 if (qemuProcessStartValidateDisks(vm, qemuCaps) < 0) return -1; --=20 2.22.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Mon Apr 29 12:27:43 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 ARC-Seal: i=1; a=rsa-sha256; t=1560984847; cv=none; d=zoho.com; s=zohoarc; b=gkuymh1tO45bT9xYCx/OobphG8QiskpnpzmcPcqsfkvG8eSPGKeh5vEiogHKiKQX0SkhoWPt2/Kxw2Ova+Mwq5o4KJh+jqDg18glZYw1mBtCinpEZju8PTSjp2CdGGKp5TJr/w+EH+P0ariM/S5DP7gRha7LuVsfbj3PH+u5xEs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560984847; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=9VAr97bpfSCSRHP/l4lWmRgPBFityFWlAoHHVbyULbc=; b=PYm4SPgm452+/dDcSPsyC//eDw84ubRBVWMdXHaPW+WLObsQONndNvmlsumz+qdk00HyebQ4+CKxWf7CqwcdpUk4wm76jIFG+XeIafFrBxJqYnvxk41a74xgOVhx1F6OO+iMg75m90B9ZauAc6IBnTbqXmVzqvQuieNLOmlctlw= ARC-Authentication-Results: i=1; mx.zoho.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 header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1560984847997148.10509950410426; Wed, 19 Jun 2019 15:54:07 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 6A12330860D3; Wed, 19 Jun 2019 22:54:03 +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 20C45608A5; Wed, 19 Jun 2019 22:53:59 +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 1B70C1806B18; Wed, 19 Jun 2019 22:53:51 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x5JMrn9C022740 for ; Wed, 19 Jun 2019 18:53:49 -0400 Received: by smtp.corp.redhat.com (Postfix) id B55F3608CA; Wed, 19 Jun 2019 22:53:49 +0000 (UTC) Received: from orkuz.int.mamuti.net (ovpn-204-21.brq.redhat.com [10.40.204.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 87DC4608A5 for ; Wed, 19 Jun 2019 22:53:49 +0000 (UTC) Received: by orkuz.int.mamuti.net (Postfix, from userid 500) id 49FA72A2129; Thu, 20 Jun 2019 00:53:43 +0200 (CEST) From: Jiri Denemark To: libvir-list@redhat.com Date: Thu, 20 Jun 2019 00:53:42 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v2 7/7] qemu: Drop MSR features from host-model with old QEMU 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-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.44]); Wed, 19 Jun 2019 22:54:04 +0000 (UTC) Content-Type: text/plain; charset="utf-8" With QEMU versions which lack "unavailable-features" we use CPUID based detection of features which were enabled or disabled once QEMU starts. Thus using MSR features with host-model would result in all of them being marked as disabled in the active domain definition even though QEMU did not actually disable them. Let's make sure we add MSR features to host-model only when "unavailable-features" property is supported by QEMU. Signed-off-by: Jiri Denemark Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_capabilities.c | 16 ++++++++++++++++ tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml | 1 - tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml | 1 - 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 4134f319ac..b7c20f3e3e 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3193,6 +3193,22 @@ virQEMUCapsInitHostCPUModel(virQEMUCapsPtr qemuCaps, goto error; } =20 + if (ARCH_IS_X86(qemuCaps->arch) && + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_CPU_UNAVAILABLE_FEATURES)) { + bool selecting =3D false; + if (cpu && + virCPUDefFilterFeatures(cpu, virCPUx86FeatureIsMSR, &selecting= ) < 0) + goto error; + + if (migCPU && + virCPUDefFilterFeatures(migCPU, virCPUx86FeatureIsMSR, &select= ing) < 0) + goto error; + + if (fullCPU && + virCPUDefFilterFeatures(fullCPU, virCPUx86FeatureIsMSR, &selec= ting) < 0) + goto error; + } + virQEMUCapsSetHostModel(qemuCaps, type, cpu, migCPU, fullCPU); =20 cleanup: diff --git a/tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml b/tests/domai= ncapsschemadata/qemu_3.1.0.x86_64.xml index dfd186afba..ca3baab88c 100644 --- a/tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml +++ b/tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml @@ -42,7 +42,6 @@ - qemu64 diff --git a/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml b/tests/domai= ncapsschemadata/qemu_4.0.0.x86_64.xml index 36f6f1e94d..cba841d844 100644 --- a/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml +++ b/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml @@ -42,7 +42,6 @@ - qemu64 --=20 2.22.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list