- cpu: x86: Add support for adding features to existing CPU models
- qemu: domain: Check arch in qemuDomainMakeCPUMigratable - conf: cpu: Introduce virCPUDefListFeatures - qemu: domain: Drop added features from migratable CPU - Add vmx-* features to Broadwell* - Add vmx-* features to Cascadelake* - Add vmx-* features to Conroe - Add vmx-* features to Cooperlake - Add vmx-* features to core2duo - Add vmx-* features to Haswell* - Add vmx-* features to Icelake* - Add vmx-* features to IvyBridge* - Add vmx-* features to kvm* - Add vmx-* features to Nehalem* - Add vmx-* features to Penryn - Add vmx-* features to SandyBridge* - Add vmx-* features to SapphireRapids - Add vmx-* features to Skylake* - Add vmx-* features to Snowridge - Add vmx-* features to Westmere* - qemu: virtiofs: do not crash if cgroups are missing - qemu: virtiofs: set correct label when creating the socket - qemu: virtiofs: error out if getting the group or user name fails
This commit is contained in:
parent
6de10c41f7
commit
2daa9ba65a
78
SOURCES/conf-cpu-Introduce-virCPUDefListFeatures.patch
Normal file
78
SOURCES/conf-cpu-Introduce-virCPUDefListFeatures.patch
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
From 577c4ca414b26c8586f2586978e55c948bec0a32 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Mon, 11 Mar 2024 15:37:32 +0100
|
||||||
|
Subject: [PATCH] conf: cpu: Introduce virCPUDefListFeatures
|
||||||
|
|
||||||
|
The function returns a list of explicitly mentioned features in the CPU
|
||||||
|
definition.
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
|
||||||
|
---
|
||||||
|
src/conf/cpu_conf.c | 24 ++++++++++++++++++++++++
|
||||||
|
src/conf/cpu_conf.h | 3 +++
|
||||||
|
src/libvirt_private.syms | 1 +
|
||||||
|
3 files changed, 28 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c
|
||||||
|
index 6e6e1b9a897..4dca7e57ec7 100644
|
||||||
|
--- a/src/conf/cpu_conf.c
|
||||||
|
+++ b/src/conf/cpu_conf.c
|
||||||
|
@@ -982,6 +982,30 @@ virCPUDefFindFeature(const virCPUDef *def,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
+/**
|
||||||
|
+ * virCPUDefListExplicitFeatures:
|
||||||
|
+ * @def: CPU definition
|
||||||
|
+ *
|
||||||
|
+ * Provides a list of feature names explicitly mentioned in the CPU definition
|
||||||
|
+ * regardless of the policy. The caller is responsible for freeing the list.
|
||||||
|
+ *
|
||||||
|
+ * Returns a NULL-terminated list of feature names.
|
||||||
|
+ */
|
||||||
|
+char **
|
||||||
|
+virCPUDefListExplicitFeatures(const virCPUDef *def)
|
||||||
|
+{
|
||||||
|
+ char **list;
|
||||||
|
+ size_t i;
|
||||||
|
+
|
||||||
|
+ list = g_new0(char *, def->nfeatures + 1);
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < def->nfeatures; i++)
|
||||||
|
+ list[i] = g_strdup(def->features[i].name);
|
||||||
|
+
|
||||||
|
+ return list;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
int
|
||||||
|
virCPUDefFilterFeatures(virCPUDef *cpu,
|
||||||
|
virCPUDefFeatureFilter filter,
|
||||||
|
diff --git a/src/conf/cpu_conf.h b/src/conf/cpu_conf.h
|
||||||
|
index 2694022fed1..b10c23ee828 100644
|
||||||
|
--- a/src/conf/cpu_conf.h
|
||||||
|
+++ b/src/conf/cpu_conf.h
|
||||||
|
@@ -270,6 +270,9 @@ virCPUDefCheckFeatures(virCPUDef *cpu,
|
||||||
|
void *opaque,
|
||||||
|
char ***features);
|
||||||
|
|
||||||
|
+char **
|
||||||
|
+virCPUDefListExplicitFeatures(const virCPUDef *def);
|
||||||
|
+
|
||||||
|
virCPUDef **
|
||||||
|
virCPUDefListParse(const char **xmlCPUs,
|
||||||
|
unsigned int ncpus,
|
||||||
|
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
|
||||||
|
index 98a925933ef..6b6bcc368ac 100644
|
||||||
|
--- a/src/libvirt_private.syms
|
||||||
|
+++ b/src/libvirt_private.syms
|
||||||
|
@@ -111,6 +111,7 @@ virCPUDefFree;
|
||||||
|
virCPUDefFreeFeatures;
|
||||||
|
virCPUDefFreeModel;
|
||||||
|
virCPUDefIsEqual;
|
||||||
|
+virCPUDefListExplicitFeatures;
|
||||||
|
virCPUDefListFree;
|
||||||
|
virCPUDefListParse;
|
||||||
|
virCPUDefNew;
|
@ -0,0 +1,212 @@
|
|||||||
|
From 5fbfa5ab8a3bf914d2deacd0d281b16aafd593b5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Thu, 7 Mar 2024 14:50:48 +0100
|
||||||
|
Subject: [PATCH] cpu: x86: Add support for adding features to existing CPU
|
||||||
|
models
|
||||||
|
|
||||||
|
This is not a good idea in general, but we can (and have to) do it in
|
||||||
|
specific cases when a feature has always been part of a CPU model in
|
||||||
|
hypervisor's definition, but we ignored it and did not include the
|
||||||
|
feature in our definition.
|
||||||
|
|
||||||
|
Blindly adding the features to the CPU map and not adding them to
|
||||||
|
existing CPU models breaks migration between old and new libvirt in both
|
||||||
|
directions. New libvirt would complain the features got unexpectedly
|
||||||
|
enabled (as they were not mentioned in the incoming domain XML) even
|
||||||
|
though they were also enabled on the source and the old libvirt just
|
||||||
|
didn't know about them. On the other hand, old libvirt would refuse to
|
||||||
|
accept incoming migration of a domain started by new libvirt because the
|
||||||
|
domain XML would contain CPU features unknown to the old libvirt.
|
||||||
|
|
||||||
|
This is exactly what happened when several vmx-* features were added a
|
||||||
|
few releases back. Migration between libvirt releases before and after
|
||||||
|
the addition is now broken.
|
||||||
|
|
||||||
|
This patch adds support for added these features to existing CPU models
|
||||||
|
by marking them with added='yes'. The features will not be considered
|
||||||
|
part of the CPU model and will be described explicitly via additional
|
||||||
|
<feature/> elements, but the compatibility check will not complain if
|
||||||
|
they are enabled by the hypervisor even though they were not explicitly
|
||||||
|
mentioned in the CPU definition and incoming migration from old libvirt
|
||||||
|
will succeed.
|
||||||
|
|
||||||
|
To fix outgoing migration to old libvirt, we also need to drop all those
|
||||||
|
features from domain XML unless they were explicitly requested by the
|
||||||
|
user. This will be handled by a later patch.
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
|
||||||
|
---
|
||||||
|
src/cpu/cpu_x86.c | 74 ++++++++++++++++++++++++++++++++++++++--
|
||||||
|
src/cpu/cpu_x86.h | 3 ++
|
||||||
|
src/libvirt_private.syms | 1 +
|
||||||
|
3 files changed, 75 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
|
||||||
|
index e8409ce616f..0fad761809c 100644
|
||||||
|
--- a/src/cpu/cpu_x86.c
|
||||||
|
+++ b/src/cpu/cpu_x86.c
|
||||||
|
@@ -148,6 +148,17 @@ struct _virCPUx86Model {
|
||||||
|
virCPUx86Signatures *signatures;
|
||||||
|
virCPUx86Data data;
|
||||||
|
GStrv removedFeatures;
|
||||||
|
+
|
||||||
|
+ /* Features added to the CPU model after its original version was released.
|
||||||
|
+ * Such features are not really considered part of the model, but the
|
||||||
|
+ * compatibility check will not complain if they are enabled by the
|
||||||
|
+ * hypervisor even though they were not explicitly mentioned in the CPU
|
||||||
|
+ * definition. This should only be used for features which were always
|
||||||
|
+ * included in the CPU model by the hypervisor, but libvirt didn't support
|
||||||
|
+ * them when introducing the CPU model. In other words, they were enabled,
|
||||||
|
+ * but we ignored them.
|
||||||
|
+ */
|
||||||
|
+ GStrv addedFeatures;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct _virCPUx86Map virCPUx86Map;
|
||||||
|
@@ -1276,6 +1287,7 @@ x86ModelFree(virCPUx86Model *model)
|
||||||
|
virCPUx86SignaturesFree(model->signatures);
|
||||||
|
virCPUx86DataClear(&model->data);
|
||||||
|
g_strfreev(model->removedFeatures);
|
||||||
|
+ g_strfreev(model->addedFeatures);
|
||||||
|
g_free(model);
|
||||||
|
}
|
||||||
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virCPUx86Model, x86ModelFree);
|
||||||
|
@@ -1291,6 +1303,7 @@ x86ModelCopy(virCPUx86Model *model)
|
||||||
|
copy->signatures = virCPUx86SignaturesCopy(model->signatures);
|
||||||
|
x86DataCopy(©->data, &model->data);
|
||||||
|
copy->removedFeatures = g_strdupv(model->removedFeatures);
|
||||||
|
+ copy->addedFeatures = g_strdupv(model->addedFeatures);
|
||||||
|
copy->vendor = model->vendor;
|
||||||
|
|
||||||
|
return g_steal_pointer(©);
|
||||||
|
@@ -1596,17 +1609,20 @@ x86ModelParseFeatures(virCPUx86Model *model,
|
||||||
|
g_autofree xmlNodePtr *nodes = NULL;
|
||||||
|
size_t i;
|
||||||
|
size_t nremoved = 0;
|
||||||
|
+ size_t nadded = 0;
|
||||||
|
int n;
|
||||||
|
|
||||||
|
if ((n = virXPathNodeSet("./feature", ctxt, &nodes)) <= 0)
|
||||||
|
return n;
|
||||||
|
|
||||||
|
model->removedFeatures = g_new0(char *, n + 1);
|
||||||
|
+ model->addedFeatures = g_new0(char *, n + 1);
|
||||||
|
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
g_autofree char *ftname = NULL;
|
||||||
|
virCPUx86Feature *feature;
|
||||||
|
virTristateBool rem;
|
||||||
|
+ virTristateBool added;
|
||||||
|
|
||||||
|
if (!(ftname = virXMLPropString(nodes[i], "name"))) {
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
|
@@ -1632,10 +1648,21 @@ x86ModelParseFeatures(virCPUx86Model *model,
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (virXMLPropTristateBool(nodes[i], "added",
|
||||||
|
+ VIR_XML_PROP_NONE,
|
||||||
|
+ &added) < 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ if (added == VIR_TRISTATE_BOOL_YES) {
|
||||||
|
+ model->addedFeatures[nadded++] = g_strdup(ftname);
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
x86DataAdd(&model->data, &feature->data);
|
||||||
|
}
|
||||||
|
|
||||||
|
model->removedFeatures = g_renew(char *, model->removedFeatures, nremoved + 1);
|
||||||
|
+ model->addedFeatures = g_renew(char *, model->addedFeatures, nadded + 1);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@@ -3022,11 +3049,18 @@ virCPUx86UpdateLive(virCPUDef *cpu,
|
||||||
|
if (expected == VIR_CPU_FEATURE_DISABLE &&
|
||||||
|
x86DataIsSubset(&enabled, &feature->data)) {
|
||||||
|
VIR_DEBUG("Feature '%s' enabled by the hypervisor", feature->name);
|
||||||
|
- if (cpu->check == VIR_CPU_CHECK_FULL)
|
||||||
|
+
|
||||||
|
+ /* Extra features enabled by the hypervisor are ignored by
|
||||||
|
+ * check='full' in case they were added to the model later for
|
||||||
|
+ * backward compatibility with the older definition of the model.
|
||||||
|
+ */
|
||||||
|
+ if (cpu->check == VIR_CPU_CHECK_FULL &&
|
||||||
|
+ !g_strv_contains((const char **) model->addedFeatures, feature->name)) {
|
||||||
|
virBufferAsprintf(&bufAdded, "%s,", feature->name);
|
||||||
|
- else if (virCPUDefUpdateFeature(cpu, feature->name,
|
||||||
|
- VIR_CPU_FEATURE_REQUIRE) < 0)
|
||||||
|
+ } else if (virCPUDefUpdateFeature(cpu, feature->name,
|
||||||
|
+ VIR_CPU_FEATURE_REQUIRE) < 0) {
|
||||||
|
return -1;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x86DataIsSubset(&disabled, &feature->data) ||
|
||||||
|
@@ -3491,6 +3525,40 @@ virCPUx86FeatureFilterDropMSR(const char *name,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
+/**
|
||||||
|
+ * virCPUx86GetAddedFeatures:
|
||||||
|
+ * @modelName: CPU model
|
||||||
|
+ * @features: where to store a pointer to the list of added features
|
||||||
|
+ *
|
||||||
|
+ * Gets a list of features added to a specified CPU model after its original
|
||||||
|
+ * version was already released. The @features will be set to NULL if the list
|
||||||
|
+ * is empty or it will point to internal structures and thus it must not be
|
||||||
|
+ * freed or modified by the caller. The pointer is valid for the whole lifetime
|
||||||
|
+ * of the process.
|
||||||
|
+ *
|
||||||
|
+ * Returns 0 on success, -1 otherwise.
|
||||||
|
+ */
|
||||||
|
+int
|
||||||
|
+virCPUx86GetAddedFeatures(const char *modelName,
|
||||||
|
+ const char * const **features)
|
||||||
|
+{
|
||||||
|
+ virCPUx86Map *map;
|
||||||
|
+ virCPUx86Model *model;
|
||||||
|
+
|
||||||
|
+ if (!(map = virCPUx86GetMap()))
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ if (!(model = x86ModelFind(map, modelName))) {
|
||||||
|
+ virReportError(VIR_ERR_INVALID_ARG,
|
||||||
|
+ _("unknown CPU model %1$s"), modelName);
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ *features = (const char **) model->addedFeatures;
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
struct cpuArchDriver cpuDriverX86 = {
|
||||||
|
.name = "x86",
|
||||||
|
.arch = archs,
|
||||||
|
diff --git a/src/cpu/cpu_x86.h b/src/cpu/cpu_x86.h
|
||||||
|
index 2721fc90970..2cd965fea4c 100644
|
||||||
|
--- a/src/cpu/cpu_x86.h
|
||||||
|
+++ b/src/cpu/cpu_x86.h
|
||||||
|
@@ -48,3 +48,6 @@ bool virCPUx86FeatureFilterSelectMSR(const char *name,
|
||||||
|
bool virCPUx86FeatureFilterDropMSR(const char *name,
|
||||||
|
virCPUFeaturePolicy policy,
|
||||||
|
void *opaque);
|
||||||
|
+
|
||||||
|
+int virCPUx86GetAddedFeatures(const char *modelName,
|
||||||
|
+ const char * const **features);
|
||||||
|
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
|
||||||
|
index 887659784a6..98a925933ef 100644
|
||||||
|
--- a/src/libvirt_private.syms
|
||||||
|
+++ b/src/libvirt_private.syms
|
||||||
|
@@ -1543,6 +1543,7 @@ virCPUx86DataSetSignature;
|
||||||
|
virCPUx86DataSetVendor;
|
||||||
|
virCPUx86FeatureFilterDropMSR;
|
||||||
|
virCPUx86FeatureFilterSelectMSR;
|
||||||
|
+virCPUx86GetAddedFeatures;
|
||||||
|
|
||||||
|
# datatypes.h
|
||||||
|
virConnectClass;
|
@ -1,201 +0,0 @@
|
|||||||
From bfe53e9145cd5996a791c5caff0686572b850f82 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Tim Wiederhake <twiederh@redhat.com>
|
|
||||||
Date: Wed, 6 Sep 2023 13:13:34 +0200
|
|
||||||
Subject: [PATCH] cpu_map: Add cpu model EPYC Genoa
|
|
||||||
|
|
||||||
This was added in qemu commit 166b174188.
|
|
||||||
No additional features had to be added to libvirt.
|
|
||||||
|
|
||||||
Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
|
|
||||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
||||||
---
|
|
||||||
src/cpu_map/index.xml | 1 +
|
|
||||||
src/cpu_map/meson.build | 1 +
|
|
||||||
src/cpu_map/x86_EPYC-Genoa.xml | 115 ++++++++++++++++++
|
|
||||||
.../domaincapsdata/qemu_8.1.0-q35.x86_64.xml | 1 +
|
|
||||||
.../domaincapsdata/qemu_8.1.0-tcg.x86_64.xml | 1 +
|
|
||||||
tests/domaincapsdata/qemu_8.1.0.x86_64.xml | 1 +
|
|
||||||
6 files changed, 120 insertions(+)
|
|
||||||
create mode 100644 src/cpu_map/x86_EPYC-Genoa.xml
|
|
||||||
|
|
||||||
diff --git a/src/cpu_map/index.xml b/src/cpu_map/index.xml
|
|
||||||
index 0187016c1c5..d2c5af57970 100644
|
|
||||||
--- a/src/cpu_map/index.xml
|
|
||||||
+++ b/src/cpu_map/index.xml
|
|
||||||
@@ -70,6 +70,7 @@
|
|
||||||
<include filename='x86_EPYC-IBPB.xml'/>
|
|
||||||
<include filename='x86_EPYC-Rome.xml'/>
|
|
||||||
<include filename='x86_EPYC-Milan.xml'/>
|
|
||||||
+ <include filename='x86_EPYC-Genoa.xml'/>
|
|
||||||
|
|
||||||
<!-- Hygon CPU models -->
|
|
||||||
<include filename='x86_Dhyana.xml'/>
|
|
||||||
diff --git a/src/cpu_map/meson.build b/src/cpu_map/meson.build
|
|
||||||
index fa83b234741..ae5293e85f1 100644
|
|
||||||
--- a/src/cpu_map/meson.build
|
|
||||||
+++ b/src/cpu_map/meson.build
|
|
||||||
@@ -39,6 +39,7 @@ cpumap_data = [
|
|
||||||
'x86_Dhyana.xml',
|
|
||||||
'x86_EPYC-IBPB.xml',
|
|
||||||
'x86_EPYC.xml',
|
|
||||||
+ 'x86_EPYC-Genoa.xml',
|
|
||||||
'x86_EPYC-Milan.xml',
|
|
||||||
'x86_EPYC-Rome.xml',
|
|
||||||
'x86_features.xml',
|
|
||||||
diff --git a/src/cpu_map/x86_EPYC-Genoa.xml b/src/cpu_map/x86_EPYC-Genoa.xml
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000000..3e765b89b16
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/cpu_map/x86_EPYC-Genoa.xml
|
|
||||||
@@ -0,0 +1,115 @@
|
|
||||||
+<cpus>
|
|
||||||
+ <model name='EPYC-Genoa'>
|
|
||||||
+ <decode host='on' guest='on'/>
|
|
||||||
+ <signature family='25' model='17'/>
|
|
||||||
+ <vendor name='AMD'/>
|
|
||||||
+ <feature name='3dnowprefetch'/>
|
|
||||||
+ <feature name='abm'/>
|
|
||||||
+ <feature name='adx'/>
|
|
||||||
+ <feature name='aes'/>
|
|
||||||
+ <feature name='amd-psfd'/>
|
|
||||||
+ <feature name='amd-ssbd'/>
|
|
||||||
+ <feature name='amd-stibp'/>
|
|
||||||
+ <feature name='apic'/>
|
|
||||||
+ <feature name='arat'/>
|
|
||||||
+ <feature name='auto-ibrs'/>
|
|
||||||
+ <feature name='avx'/>
|
|
||||||
+ <feature name='avx2'/>
|
|
||||||
+ <feature name='avx512-bf16'/>
|
|
||||||
+ <feature name='avx512-vpopcntdq'/>
|
|
||||||
+ <feature name='avx512bitalg'/>
|
|
||||||
+ <feature name='avx512bw'/>
|
|
||||||
+ <feature name='avx512cd'/>
|
|
||||||
+ <feature name='avx512dq'/>
|
|
||||||
+ <feature name='avx512f'/>
|
|
||||||
+ <feature name='avx512ifma'/>
|
|
||||||
+ <feature name='avx512vbmi'/>
|
|
||||||
+ <feature name='avx512vbmi2'/>
|
|
||||||
+ <feature name='avx512vl'/>
|
|
||||||
+ <feature name='avx512vnni'/>
|
|
||||||
+ <feature name='bmi1'/>
|
|
||||||
+ <feature name='bmi2'/>
|
|
||||||
+ <feature name='clflush'/>
|
|
||||||
+ <feature name='clflushopt'/>
|
|
||||||
+ <feature name='clwb'/>
|
|
||||||
+ <feature name='clzero'/>
|
|
||||||
+ <feature name='cmov'/>
|
|
||||||
+ <feature name='cr8legacy'/>
|
|
||||||
+ <feature name='cx16'/>
|
|
||||||
+ <feature name='cx8'/>
|
|
||||||
+ <feature name='de'/>
|
|
||||||
+ <feature name='erms'/>
|
|
||||||
+ <feature name='f16c'/>
|
|
||||||
+ <feature name='fma'/>
|
|
||||||
+ <feature name='fpu'/>
|
|
||||||
+ <feature name='fsgsbase'/>
|
|
||||||
+ <feature name='fsrm'/>
|
|
||||||
+ <feature name='fxsr'/>
|
|
||||||
+ <feature name='fxsr_opt'/>
|
|
||||||
+ <feature name='gfni'/>
|
|
||||||
+ <feature name='ibpb'/>
|
|
||||||
+ <feature name='ibrs'/>
|
|
||||||
+ <feature name='invpcid'/>
|
|
||||||
+ <feature name='la57'/>
|
|
||||||
+ <feature name='lahf_lm'/>
|
|
||||||
+ <feature name='lfence-always-serializing'/>
|
|
||||||
+ <feature name='lm'/>
|
|
||||||
+ <feature name='mca'/>
|
|
||||||
+ <feature name='mce'/>
|
|
||||||
+ <feature name='misalignsse'/>
|
|
||||||
+ <feature name='mmx'/>
|
|
||||||
+ <feature name='mmxext'/>
|
|
||||||
+ <feature name='movbe'/>
|
|
||||||
+ <feature name='msr'/>
|
|
||||||
+ <feature name='mtrr'/>
|
|
||||||
+ <feature name='no-nested-data-bp'/>
|
|
||||||
+ <feature name='npt'/>
|
|
||||||
+ <feature name='nrip-save'/>
|
|
||||||
+ <feature name='null-sel-clr-base'/>
|
|
||||||
+ <feature name='nx'/>
|
|
||||||
+ <feature name='osvw'/>
|
|
||||||
+ <feature name='pae'/>
|
|
||||||
+ <feature name='pat'/>
|
|
||||||
+ <feature name='pcid'/>
|
|
||||||
+ <feature name='pclmuldq'/>
|
|
||||||
+ <feature name='pdpe1gb'/>
|
|
||||||
+ <feature name='perfctr_core'/>
|
|
||||||
+ <feature name='pge'/>
|
|
||||||
+ <feature name='pku'/>
|
|
||||||
+ <feature name='pni'/>
|
|
||||||
+ <feature name='popcnt'/>
|
|
||||||
+ <feature name='pse'/>
|
|
||||||
+ <feature name='pse36'/>
|
|
||||||
+ <feature name='rdpid'/>
|
|
||||||
+ <feature name='rdrand'/>
|
|
||||||
+ <feature name='rdseed'/>
|
|
||||||
+ <feature name='rdtscp'/>
|
|
||||||
+ <feature name='sep'/>
|
|
||||||
+ <feature name='sha-ni'/>
|
|
||||||
+ <feature name='smap'/>
|
|
||||||
+ <feature name='smep'/>
|
|
||||||
+ <feature name='sse'/>
|
|
||||||
+ <feature name='sse2'/>
|
|
||||||
+ <feature name='sse4.1'/>
|
|
||||||
+ <feature name='sse4.2'/>
|
|
||||||
+ <feature name='sse4a'/>
|
|
||||||
+ <feature name='ssse3'/>
|
|
||||||
+ <feature name='stibp-always-on'/>
|
|
||||||
+ <feature name='svm'/>
|
|
||||||
+ <feature name='svme-addr-chk'/>
|
|
||||||
+ <feature name='syscall'/>
|
|
||||||
+ <feature name='tsc'/>
|
|
||||||
+ <feature name='umip'/>
|
|
||||||
+ <feature name='vaes'/>
|
|
||||||
+ <feature name='vme'/>
|
|
||||||
+ <feature name='vnmi'/>
|
|
||||||
+ <feature name='vpclmulqdq'/>
|
|
||||||
+ <feature name='wbnoinvd'/>
|
|
||||||
+ <feature name='xgetbv1'/>
|
|
||||||
+ <feature name='xsave'/>
|
|
||||||
+ <feature name='xsavec'/>
|
|
||||||
+ <feature name='xsaveerptr'/>
|
|
||||||
+ <feature name='xsaveopt'/>
|
|
||||||
+ <feature name='xsaves'/>
|
|
||||||
+ </model>
|
|
||||||
+</cpus>
|
|
||||||
diff --git a/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml
|
|
||||||
index 9a9e84e6138..4d438efdf75 100644
|
|
||||||
--- a/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml
|
|
||||||
+++ b/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml
|
|
||||||
@@ -116,6 +116,7 @@
|
|
||||||
<model usable='no' vendor='AMD'>EPYC-Rome</model>
|
|
||||||
<model usable='no' vendor='AMD'>EPYC-Milan</model>
|
|
||||||
<model usable='yes' vendor='AMD'>EPYC-IBPB</model>
|
|
||||||
+ <model usable='no' vendor='AMD'>EPYC-Genoa</model>
|
|
||||||
<model usable='yes' vendor='AMD'>EPYC</model>
|
|
||||||
<model usable='yes' vendor='Hygon'>Dhyana</model>
|
|
||||||
<model usable='no' vendor='Intel'>Cooperlake</model>
|
|
||||||
diff --git a/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml
|
|
||||||
index f898149a3c1..e32cd80c178 100644
|
|
||||||
--- a/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml
|
|
||||||
+++ b/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml
|
|
||||||
@@ -115,6 +115,7 @@
|
|
||||||
<model usable='no' vendor='AMD'>EPYC-Rome</model>
|
|
||||||
<model usable='no' vendor='AMD'>EPYC-Milan</model>
|
|
||||||
<model usable='no' vendor='AMD'>EPYC-IBPB</model>
|
|
||||||
+ <model usable='no' vendor='AMD'>EPYC-Genoa</model>
|
|
||||||
<model usable='no' vendor='AMD'>EPYC</model>
|
|
||||||
<model usable='no' vendor='Hygon'>Dhyana</model>
|
|
||||||
<model usable='no' vendor='Intel'>Cooperlake</model>
|
|
||||||
diff --git a/tests/domaincapsdata/qemu_8.1.0.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0.x86_64.xml
|
|
||||||
index dbe1af68cbc..919357e577c 100644
|
|
||||||
--- a/tests/domaincapsdata/qemu_8.1.0.x86_64.xml
|
|
||||||
+++ b/tests/domaincapsdata/qemu_8.1.0.x86_64.xml
|
|
||||||
@@ -115,6 +115,7 @@
|
|
||||||
<model usable='no' vendor='AMD'>EPYC-Rome</model>
|
|
||||||
<model usable='no' vendor='AMD'>EPYC-Milan</model>
|
|
||||||
<model usable='yes' vendor='AMD'>EPYC-IBPB</model>
|
|
||||||
+ <model usable='no' vendor='AMD'>EPYC-Genoa</model>
|
|
||||||
<model usable='yes' vendor='AMD'>EPYC</model>
|
|
||||||
<model usable='yes' vendor='Hygon'>Dhyana</model>
|
|
||||||
<model usable='no' vendor='Intel'>Cooperlake</model>
|
|
358
SOURCES/libvirt-Add-vmx-features-to-Broadwell.patch
Normal file
358
SOURCES/libvirt-Add-vmx-features-to-Broadwell.patch
Normal file
@ -0,0 +1,358 @@
|
|||||||
|
From ce330dd7e5405573c77801a418345804049315ab Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Thu, 7 Mar 2024 14:00:15 +0100
|
||||||
|
Subject: [PATCH] Add vmx-* features to Broadwell*
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
---
|
||||||
|
src/cpu_map/x86_Broadwell-IBRS.xml | 75 ++++++++++++++++++++++++
|
||||||
|
src/cpu_map/x86_Broadwell-noTSX-IBRS.xml | 75 ++++++++++++++++++++++++
|
||||||
|
src/cpu_map/x86_Broadwell-noTSX.xml | 75 ++++++++++++++++++++++++
|
||||||
|
src/cpu_map/x86_Broadwell.xml | 75 ++++++++++++++++++++++++
|
||||||
|
4 files changed, 300 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/cpu_map/x86_Broadwell-IBRS.xml b/src/cpu_map/x86_Broadwell-IBRS.xml
|
||||||
|
index 9033d5fcd51..14849032981 100644
|
||||||
|
--- a/src/cpu_map/x86_Broadwell-IBRS.xml
|
||||||
|
+++ b/src/cpu_map/x86_Broadwell-IBRS.xml
|
||||||
|
@@ -59,6 +59,81 @@
|
||||||
|
<feature name='syscall'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptp-switching' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pml' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdseed-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xsave'/>
|
||||||
|
</model>
|
||||||
|
diff --git a/src/cpu_map/x86_Broadwell-noTSX-IBRS.xml b/src/cpu_map/x86_Broadwell-noTSX-IBRS.xml
|
||||||
|
index c044b60e36e..13f08435b76 100644
|
||||||
|
--- a/src/cpu_map/x86_Broadwell-noTSX-IBRS.xml
|
||||||
|
+++ b/src/cpu_map/x86_Broadwell-noTSX-IBRS.xml
|
||||||
|
@@ -57,6 +57,81 @@
|
||||||
|
<feature name='syscall'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptp-switching' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pml' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdseed-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xsave'/>
|
||||||
|
</model>
|
||||||
|
diff --git a/src/cpu_map/x86_Broadwell-noTSX.xml b/src/cpu_map/x86_Broadwell-noTSX.xml
|
||||||
|
index 637f29ba1cf..4293b3aeee3 100644
|
||||||
|
--- a/src/cpu_map/x86_Broadwell-noTSX.xml
|
||||||
|
+++ b/src/cpu_map/x86_Broadwell-noTSX.xml
|
||||||
|
@@ -56,6 +56,81 @@
|
||||||
|
<feature name='syscall'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptp-switching' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pml' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdseed-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xsave'/>
|
||||||
|
</model>
|
||||||
|
diff --git a/src/cpu_map/x86_Broadwell.xml b/src/cpu_map/x86_Broadwell.xml
|
||||||
|
index 82939a45091..37dd1dabcfb 100644
|
||||||
|
--- a/src/cpu_map/x86_Broadwell.xml
|
||||||
|
+++ b/src/cpu_map/x86_Broadwell.xml
|
||||||
|
@@ -58,6 +58,81 @@
|
||||||
|
<feature name='syscall'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptp-switching' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pml' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdseed-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xsave'/>
|
||||||
|
</model>
|
184
SOURCES/libvirt-Add-vmx-features-to-Cascadelake.patch
Normal file
184
SOURCES/libvirt-Add-vmx-features-to-Cascadelake.patch
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
From 5db61952252fa2ab88cc79f064f8f1b61b6c95cb Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Thu, 7 Mar 2024 14:01:25 +0100
|
||||||
|
Subject: [PATCH] Add vmx-* features to Cascadelake*
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
---
|
||||||
|
src/cpu_map/x86_Cascadelake-Server-noTSX.xml | 76 ++++++++++++++++++++
|
||||||
|
src/cpu_map/x86_Cascadelake-Server.xml | 74 +++++++++++++++++++
|
||||||
|
2 files changed, 150 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/cpu_map/x86_Cascadelake-Server-noTSX.xml b/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
|
||||||
|
index bfd4629836b..056f43d0887 100644
|
||||||
|
--- a/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
|
||||||
|
+++ b/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
|
||||||
|
@@ -70,6 +70,82 @@
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
<feature name='vme'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptp-switching' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pml' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdseed-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-xsaves' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xgetbv1'/>
|
||||||
|
<feature name='xsave'/>
|
||||||
|
diff --git a/src/cpu_map/x86_Cascadelake-Server.xml b/src/cpu_map/x86_Cascadelake-Server.xml
|
||||||
|
index 335e9cb5841..88e51c20678 100644
|
||||||
|
--- a/src/cpu_map/x86_Cascadelake-Server.xml
|
||||||
|
+++ b/src/cpu_map/x86_Cascadelake-Server.xml
|
||||||
|
@@ -72,6 +72,80 @@
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
<feature name='vme'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pml' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdseed-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xgetbv1'/>
|
||||||
|
<feature name='xsave'/>
|
47
SOURCES/libvirt-Add-vmx-features-to-Conroe.patch
Normal file
47
SOURCES/libvirt-Add-vmx-features-to-Conroe.patch
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
From 9cb8c372cd75647e09fac96e6995adab5e8dde79 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Thu, 7 Mar 2024 14:04:45 +0100
|
||||||
|
Subject: [PATCH] Add vmx-* features to Conroe
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
---
|
||||||
|
src/cpu_map/x86_Conroe.xml | 26 ++++++++++++++++++++++++++
|
||||||
|
1 file changed, 26 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/cpu_map/x86_Conroe.xml b/src/cpu_map/x86_Conroe.xml
|
||||||
|
index 4cacee6142e..955297ffc30 100644
|
||||||
|
--- a/src/cpu_map/x86_Conroe.xml
|
||||||
|
+++ b/src/cpu_map/x86_Conroe.xml
|
||||||
|
@@ -31,5 +31,31 @@
|
||||||
|
<feature name='ssse3'/>
|
||||||
|
<feature name='syscall'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
</model>
|
||||||
|
</cpus>
|
98
SOURCES/libvirt-Add-vmx-features-to-Cooperlake.patch
Normal file
98
SOURCES/libvirt-Add-vmx-features-to-Cooperlake.patch
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
From cbee851581fc82ea95d7b6309b85e22f9d1ba0d3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Thu, 7 Mar 2024 14:05:01 +0100
|
||||||
|
Subject: [PATCH] Add vmx-* features to Cooperlake
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
---
|
||||||
|
src/cpu_map/x86_Cooperlake.xml | 76 ++++++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 76 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/cpu_map/x86_Cooperlake.xml b/src/cpu_map/x86_Cooperlake.xml
|
||||||
|
index ceca687334f..af428f2781c 100644
|
||||||
|
--- a/src/cpu_map/x86_Cooperlake.xml
|
||||||
|
+++ b/src/cpu_map/x86_Cooperlake.xml
|
||||||
|
@@ -81,6 +81,82 @@
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
<feature name='vme'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptp-switching' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pml' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdseed-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-xsaves' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xgetbv1'/>
|
||||||
|
<feature name='xsave'/>
|
350
SOURCES/libvirt-Add-vmx-features-to-Haswell.patch
Normal file
350
SOURCES/libvirt-Add-vmx-features-to-Haswell.patch
Normal file
@ -0,0 +1,350 @@
|
|||||||
|
From b44679c31f2d46e88ce655c03aef4c3e9ab621ac Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Thu, 7 Mar 2024 14:01:50 +0100
|
||||||
|
Subject: [PATCH] Add vmx-* features to Haswell*
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
---
|
||||||
|
src/cpu_map/x86_Haswell-IBRS.xml | 73 ++++++++++++++++++++++++++
|
||||||
|
src/cpu_map/x86_Haswell-noTSX-IBRS.xml | 73 ++++++++++++++++++++++++++
|
||||||
|
src/cpu_map/x86_Haswell-noTSX.xml | 73 ++++++++++++++++++++++++++
|
||||||
|
src/cpu_map/x86_Haswell.xml | 73 ++++++++++++++++++++++++++
|
||||||
|
4 files changed, 292 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/cpu_map/x86_Haswell-IBRS.xml b/src/cpu_map/x86_Haswell-IBRS.xml
|
||||||
|
index 0ffe2bae0d4..57b980d14fe 100644
|
||||||
|
--- a/src/cpu_map/x86_Haswell-IBRS.xml
|
||||||
|
+++ b/src/cpu_map/x86_Haswell-IBRS.xml
|
||||||
|
@@ -55,6 +55,79 @@
|
||||||
|
<feature name='syscall'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptp-switching' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xsave'/>
|
||||||
|
</model>
|
||||||
|
diff --git a/src/cpu_map/x86_Haswell-noTSX-IBRS.xml b/src/cpu_map/x86_Haswell-noTSX-IBRS.xml
|
||||||
|
index 75d709c0098..fcae023ffb5 100644
|
||||||
|
--- a/src/cpu_map/x86_Haswell-noTSX-IBRS.xml
|
||||||
|
+++ b/src/cpu_map/x86_Haswell-noTSX-IBRS.xml
|
||||||
|
@@ -53,6 +53,79 @@
|
||||||
|
<feature name='syscall'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptp-switching' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xsave'/>
|
||||||
|
</model>
|
||||||
|
diff --git a/src/cpu_map/x86_Haswell-noTSX.xml b/src/cpu_map/x86_Haswell-noTSX.xml
|
||||||
|
index b0a0faa856d..7404052065a 100644
|
||||||
|
--- a/src/cpu_map/x86_Haswell-noTSX.xml
|
||||||
|
+++ b/src/cpu_map/x86_Haswell-noTSX.xml
|
||||||
|
@@ -52,6 +52,79 @@
|
||||||
|
<feature name='syscall'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptp-switching' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xsave'/>
|
||||||
|
</model>
|
||||||
|
diff --git a/src/cpu_map/x86_Haswell.xml b/src/cpu_map/x86_Haswell.xml
|
||||||
|
index ee16b30f198..99986c5c45c 100644
|
||||||
|
--- a/src/cpu_map/x86_Haswell.xml
|
||||||
|
+++ b/src/cpu_map/x86_Haswell.xml
|
||||||
|
@@ -54,6 +54,79 @@
|
||||||
|
<feature name='syscall'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptp-switching' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xsave'/>
|
||||||
|
</model>
|
183
SOURCES/libvirt-Add-vmx-features-to-Icelake.patch
Normal file
183
SOURCES/libvirt-Add-vmx-features-to-Icelake.patch
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
From a6f3eafc402fbaf18b2e23e93c8c7339317c7d97 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Thu, 7 Mar 2024 14:02:47 +0100
|
||||||
|
Subject: [PATCH] Add vmx-* features to Icelake*
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
---
|
||||||
|
src/cpu_map/x86_Icelake-Server-noTSX.xml | 77 ++++++++++++++++++++++++
|
||||||
|
src/cpu_map/x86_Icelake-Server.xml | 72 ++++++++++++++++++++++
|
||||||
|
2 files changed, 149 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/cpu_map/x86_Icelake-Server-noTSX.xml b/src/cpu_map/x86_Icelake-Server-noTSX.xml
|
||||||
|
index 7c9c32c9776..072f8145c42 100644
|
||||||
|
--- a/src/cpu_map/x86_Icelake-Server-noTSX.xml
|
||||||
|
+++ b/src/cpu_map/x86_Icelake-Server-noTSX.xml
|
||||||
|
@@ -80,6 +80,83 @@
|
||||||
|
<feature name='umip'/>
|
||||||
|
<feature name='vaes'/>
|
||||||
|
<feature name='vme'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptp-switching' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-5' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pml' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdseed-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-xsaves' added='yes'/>
|
||||||
|
<feature name='vpclmulqdq'/>
|
||||||
|
<feature name='wbnoinvd'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
diff --git a/src/cpu_map/x86_Icelake-Server.xml b/src/cpu_map/x86_Icelake-Server.xml
|
||||||
|
index b4685bead05..3a35145d7f0 100644
|
||||||
|
--- a/src/cpu_map/x86_Icelake-Server.xml
|
||||||
|
+++ b/src/cpu_map/x86_Icelake-Server.xml
|
||||||
|
@@ -82,6 +82,78 @@
|
||||||
|
<feature name='umip'/>
|
||||||
|
<feature name='vaes'/>
|
||||||
|
<feature name='vme'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
<feature name='vpclmulqdq'/>
|
||||||
|
<feature name='wbnoinvd'/>
|
||||||
|
<feature name='x2apic'/>
|
168
SOURCES/libvirt-Add-vmx-features-to-IvyBridge.patch
Normal file
168
SOURCES/libvirt-Add-vmx-features-to-IvyBridge.patch
Normal file
@ -0,0 +1,168 @@
|
|||||||
|
From 4b707f8bb0003b87f67474bfac02a2feac26c96f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Thu, 7 Mar 2024 14:04:01 +0100
|
||||||
|
Subject: [PATCH] Add vmx-* features to IvyBridge*
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
---
|
||||||
|
src/cpu_map/x86_IvyBridge-IBRS.xml | 67 ++++++++++++++++++++++++++++++
|
||||||
|
src/cpu_map/x86_IvyBridge.xml | 67 ++++++++++++++++++++++++++++++
|
||||||
|
2 files changed, 134 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/cpu_map/x86_IvyBridge-IBRS.xml b/src/cpu_map/x86_IvyBridge-IBRS.xml
|
||||||
|
index 430bc3232db..27d85d86c4e 100644
|
||||||
|
--- a/src/cpu_map/x86_IvyBridge-IBRS.xml
|
||||||
|
+++ b/src/cpu_map/x86_IvyBridge-IBRS.xml
|
||||||
|
@@ -47,6 +47,73 @@
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
<feature name='vme'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xsave'/>
|
||||||
|
</model>
|
||||||
|
diff --git a/src/cpu_map/x86_IvyBridge.xml b/src/cpu_map/x86_IvyBridge.xml
|
||||||
|
index eaf5d02e827..72031cfdc62 100644
|
||||||
|
--- a/src/cpu_map/x86_IvyBridge.xml
|
||||||
|
+++ b/src/cpu_map/x86_IvyBridge.xml
|
||||||
|
@@ -46,6 +46,73 @@
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
<feature name='vme'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xsave'/>
|
||||||
|
</model>
|
154
SOURCES/libvirt-Add-vmx-features-to-Nehalem.patch
Normal file
154
SOURCES/libvirt-Add-vmx-features-to-Nehalem.patch
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
From a539910c942f5993b967f8265756e3a10363e4f4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Thu, 7 Mar 2024 14:04:21 +0100
|
||||||
|
Subject: [PATCH] Add vmx-* features to Nehalem*
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
---
|
||||||
|
src/cpu_map/x86_Nehalem-IBRS.xml | 61 ++++++++++++++++++++++++++++++++
|
||||||
|
src/cpu_map/x86_Nehalem.xml | 61 ++++++++++++++++++++++++++++++++
|
||||||
|
2 files changed, 122 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/cpu_map/x86_Nehalem-IBRS.xml b/src/cpu_map/x86_Nehalem-IBRS.xml
|
||||||
|
index 00d0d2fe51a..0cfee14c0f7 100644
|
||||||
|
--- a/src/cpu_map/x86_Nehalem-IBRS.xml
|
||||||
|
+++ b/src/cpu_map/x86_Nehalem-IBRS.xml
|
||||||
|
@@ -38,5 +38,66 @@
|
||||||
|
<feature name='ssse3'/>
|
||||||
|
<feature name='syscall'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
</model>
|
||||||
|
</cpus>
|
||||||
|
diff --git a/src/cpu_map/x86_Nehalem.xml b/src/cpu_map/x86_Nehalem.xml
|
||||||
|
index 9968001fe79..74ee64ce1c3 100644
|
||||||
|
--- a/src/cpu_map/x86_Nehalem.xml
|
||||||
|
+++ b/src/cpu_map/x86_Nehalem.xml
|
||||||
|
@@ -37,5 +37,66 @@
|
||||||
|
<feature name='ssse3'/>
|
||||||
|
<feature name='syscall'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
</model>
|
||||||
|
</cpus>
|
50
SOURCES/libvirt-Add-vmx-features-to-Penryn.patch
Normal file
50
SOURCES/libvirt-Add-vmx-features-to-Penryn.patch
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
From c6fadbb2807c80bd2b812eebd932eb4a34067ccd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Thu, 7 Mar 2024 14:05:20 +0100
|
||||||
|
Subject: [PATCH] Add vmx-* features to Penryn
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
---
|
||||||
|
src/cpu_map/x86_Penryn.xml | 29 +++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 29 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/cpu_map/x86_Penryn.xml b/src/cpu_map/x86_Penryn.xml
|
||||||
|
index 29d4cd635b8..b31f96fa431 100644
|
||||||
|
--- a/src/cpu_map/x86_Penryn.xml
|
||||||
|
+++ b/src/cpu_map/x86_Penryn.xml
|
||||||
|
@@ -33,5 +33,34 @@
|
||||||
|
<feature name='ssse3'/>
|
||||||
|
<feature name='syscall'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
</model>
|
||||||
|
</cpus>
|
160
SOURCES/libvirt-Add-vmx-features-to-SandyBridge.patch
Normal file
160
SOURCES/libvirt-Add-vmx-features-to-SandyBridge.patch
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
From 29d492d6488e35db2e96a017ac3fb2712dcb638c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Thu, 7 Mar 2024 14:03:18 +0100
|
||||||
|
Subject: [PATCH] Add vmx-* features to SandyBridge*
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
---
|
||||||
|
src/cpu_map/x86_SandyBridge-IBRS.xml | 63 ++++++++++++++++++++++++++++
|
||||||
|
src/cpu_map/x86_SandyBridge.xml | 63 ++++++++++++++++++++++++++++
|
||||||
|
2 files changed, 126 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/cpu_map/x86_SandyBridge-IBRS.xml b/src/cpu_map/x86_SandyBridge-IBRS.xml
|
||||||
|
index fbdb4f2bf64..297eea8e882 100644
|
||||||
|
--- a/src/cpu_map/x86_SandyBridge-IBRS.xml
|
||||||
|
+++ b/src/cpu_map/x86_SandyBridge-IBRS.xml
|
||||||
|
@@ -41,6 +41,69 @@
|
||||||
|
<feature name='syscall'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xsave'/>
|
||||||
|
</model>
|
||||||
|
diff --git a/src/cpu_map/x86_SandyBridge.xml b/src/cpu_map/x86_SandyBridge.xml
|
||||||
|
index 7c85ed42df1..20ea378c471 100644
|
||||||
|
--- a/src/cpu_map/x86_SandyBridge.xml
|
||||||
|
+++ b/src/cpu_map/x86_SandyBridge.xml
|
||||||
|
@@ -40,6 +40,69 @@
|
||||||
|
<feature name='syscall'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xsave'/>
|
||||||
|
</model>
|
99
SOURCES/libvirt-Add-vmx-features-to-SapphireRapids.patch
Normal file
99
SOURCES/libvirt-Add-vmx-features-to-SapphireRapids.patch
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
From e67004ec1cec850baa65177d88c6db09376869d3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Thu, 7 Mar 2024 14:05:34 +0100
|
||||||
|
Subject: [PATCH] Add vmx-* features to SapphireRapids
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
---
|
||||||
|
src/cpu_map/x86_SapphireRapids.xml | 77 ++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 77 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/cpu_map/x86_SapphireRapids.xml b/src/cpu_map/x86_SapphireRapids.xml
|
||||||
|
index 2297feeeca2..40164a47e2a 100644
|
||||||
|
--- a/src/cpu_map/x86_SapphireRapids.xml
|
||||||
|
+++ b/src/cpu_map/x86_SapphireRapids.xml
|
||||||
|
@@ -103,6 +103,83 @@
|
||||||
|
<feature name='umip'/>
|
||||||
|
<feature name='vaes'/>
|
||||||
|
<feature name='vme'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptp-switching' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-5' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pml' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdseed-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-xsaves' added='yes'/>
|
||||||
|
<feature name='vpclmulqdq'/>
|
||||||
|
<feature name='wbnoinvd'/>
|
||||||
|
<feature name='x2apic'/>
|
520
SOURCES/libvirt-Add-vmx-features-to-Skylake.patch
Normal file
520
SOURCES/libvirt-Add-vmx-features-to-Skylake.patch
Normal file
@ -0,0 +1,520 @@
|
|||||||
|
From aa064b38fdbafd39d296a0933b7d1b8987eb4cb5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Thu, 7 Mar 2024 14:00:53 +0100
|
||||||
|
Subject: [PATCH] Add vmx-* features to Skylake*
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
---
|
||||||
|
src/cpu_map/x86_Skylake-Client-IBRS.xml | 71 +++++++++++++++++
|
||||||
|
src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml | 72 ++++++++++++++++++
|
||||||
|
src/cpu_map/x86_Skylake-Client.xml | 71 +++++++++++++++++
|
||||||
|
src/cpu_map/x86_Skylake-Server-IBRS.xml | 74 ++++++++++++++++++
|
||||||
|
src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml | 76 +++++++++++++++++++
|
||||||
|
src/cpu_map/x86_Skylake-Server.xml | 74 ++++++++++++++++++
|
||||||
|
6 files changed, 438 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/cpu_map/x86_Skylake-Client-IBRS.xml b/src/cpu_map/x86_Skylake-Client-IBRS.xml
|
||||||
|
index 5709e7c2f95..1c77f9595b6 100644
|
||||||
|
--- a/src/cpu_map/x86_Skylake-Client-IBRS.xml
|
||||||
|
+++ b/src/cpu_map/x86_Skylake-Client-IBRS.xml
|
||||||
|
@@ -67,6 +67,77 @@
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
<feature name='vme'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptp-switching' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pml' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdseed-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xgetbv1'/>
|
||||||
|
<feature name='xsave'/>
|
||||||
|
diff --git a/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml b/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml
|
||||||
|
index ffba34502a4..dca117028cd 100644
|
||||||
|
--- a/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml
|
||||||
|
+++ b/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml
|
||||||
|
@@ -65,6 +65,78 @@
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
<feature name='vme'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptp-switching' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pml' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdseed-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-xsaves' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xgetbv1'/>
|
||||||
|
<feature name='xsave'/>
|
||||||
|
diff --git a/src/cpu_map/x86_Skylake-Client.xml b/src/cpu_map/x86_Skylake-Client.xml
|
||||||
|
index 14cd57e1768..68e5d2d0388 100644
|
||||||
|
--- a/src/cpu_map/x86_Skylake-Client.xml
|
||||||
|
+++ b/src/cpu_map/x86_Skylake-Client.xml
|
||||||
|
@@ -66,6 +66,77 @@
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
<feature name='vme'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptp-switching' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pml' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdseed-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xgetbv1'/>
|
||||||
|
<feature name='xsave'/>
|
||||||
|
diff --git a/src/cpu_map/x86_Skylake-Server-IBRS.xml b/src/cpu_map/x86_Skylake-Server-IBRS.xml
|
||||||
|
index 9fb34888094..e467b76242b 100644
|
||||||
|
--- a/src/cpu_map/x86_Skylake-Server-IBRS.xml
|
||||||
|
+++ b/src/cpu_map/x86_Skylake-Server-IBRS.xml
|
||||||
|
@@ -69,6 +69,80 @@
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
<feature name='vme'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pml' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdseed-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xgetbv1'/>
|
||||||
|
<feature name='xsave'/>
|
||||||
|
diff --git a/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml b/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml
|
||||||
|
index c162c0acc31..b8601da0cbc 100644
|
||||||
|
--- a/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml
|
||||||
|
+++ b/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml
|
||||||
|
@@ -67,6 +67,82 @@
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
<feature name='vme'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptp-switching' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pml' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdseed-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-xsaves' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xgetbv1'/>
|
||||||
|
<feature name='xsave'/>
|
||||||
|
diff --git a/src/cpu_map/x86_Skylake-Server.xml b/src/cpu_map/x86_Skylake-Server.xml
|
||||||
|
index e022d94c847..cc1e9ddd7f7 100644
|
||||||
|
--- a/src/cpu_map/x86_Skylake-Server.xml
|
||||||
|
+++ b/src/cpu_map/x86_Skylake-Server.xml
|
||||||
|
@@ -68,6 +68,80 @@
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
<feature name='vme'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pml' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdseed-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xgetbv1'/>
|
||||||
|
<feature name='xsave'/>
|
98
SOURCES/libvirt-Add-vmx-features-to-Snowridge.patch
Normal file
98
SOURCES/libvirt-Add-vmx-features-to-Snowridge.patch
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
From 64e3c1138a81b98f14e5f1aa1e8e2bb85cfdd1e5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Thu, 7 Mar 2024 14:05:53 +0100
|
||||||
|
Subject: [PATCH] Add vmx-* features to Snowridge
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
---
|
||||||
|
src/cpu_map/x86_Snowridge.xml | 76 +++++++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 76 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/cpu_map/x86_Snowridge.xml b/src/cpu_map/x86_Snowridge.xml
|
||||||
|
index 383a24d367c..bc410bd8f80 100644
|
||||||
|
--- a/src/cpu_map/x86_Snowridge.xml
|
||||||
|
+++ b/src/cpu_map/x86_Snowridge.xml
|
||||||
|
@@ -62,6 +62,82 @@
|
||||||
|
<feature name='tsc-deadline'/>
|
||||||
|
<feature name='umip'/>
|
||||||
|
<feature name='vme'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-register' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-vid' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptad' added='yes'/>
|
||||||
|
+ <feature name='vmx-eptp-switching' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invpcid-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pml' added='yes'/>
|
||||||
|
+ <feature name='vmx-posted-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdrand-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdseed-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-shadow-vmcs' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmfunc' added='yes'/>
|
||||||
|
+ <feature name='vmx-vmwrite-vmexit-fields' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-xsaves' added='yes'/>
|
||||||
|
<feature name='x2apic'/>
|
||||||
|
<feature name='xgetbv1'/>
|
||||||
|
<feature name='xsave'/>
|
158
SOURCES/libvirt-Add-vmx-features-to-Westmere.patch
Normal file
158
SOURCES/libvirt-Add-vmx-features-to-Westmere.patch
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
From 6898b7cd8d61d46db7e92f6cf81daf085b85f724 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Thu, 7 Mar 2024 14:03:38 +0100
|
||||||
|
Subject: [PATCH] Add vmx-* features to Westmere*
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
---
|
||||||
|
src/cpu_map/x86_Westmere-IBRS.xml | 63 +++++++++++++++++++++++++++++++
|
||||||
|
src/cpu_map/x86_Westmere.xml | 63 +++++++++++++++++++++++++++++++
|
||||||
|
2 files changed, 126 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/cpu_map/x86_Westmere-IBRS.xml b/src/cpu_map/x86_Westmere-IBRS.xml
|
||||||
|
index c7898f0c226..a5abe8a1e18 100644
|
||||||
|
--- a/src/cpu_map/x86_Westmere-IBRS.xml
|
||||||
|
+++ b/src/cpu_map/x86_Westmere-IBRS.xml
|
||||||
|
@@ -36,5 +36,68 @@
|
||||||
|
<feature name='ssse3'/>
|
||||||
|
<feature name='syscall'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
</model>
|
||||||
|
</cpus>
|
||||||
|
diff --git a/src/cpu_map/x86_Westmere.xml b/src/cpu_map/x86_Westmere.xml
|
||||||
|
index 16e4ad6c309..161f1a078e3 100644
|
||||||
|
--- a/src/cpu_map/x86_Westmere.xml
|
||||||
|
+++ b/src/cpu_map/x86_Westmere.xml
|
||||||
|
@@ -37,5 +37,68 @@
|
||||||
|
<feature name='ssse3'/>
|
||||||
|
<feature name='syscall'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-x2apic' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-load-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr3-store-noexit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-desc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-noload-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-1gb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-2mb' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-execonly' added='yes'/>
|
||||||
|
+ <feature name='vmx-ept-wb' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-load-perf-global-ctrl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-nosave-debugctl' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-efer' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-pat' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-save-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invept-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-all-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-addr' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context' added='yes'/>
|
||||||
|
+ <feature name='vmx-invvpid-single-context-noglobals' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mtf' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-page-walk-4' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-preemption-timer' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtscp-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-store-lma' added='yes'/>
|
||||||
|
+ <feature name='vmx-true-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-unrestricted-guest' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vpid' added='yes'/>
|
||||||
|
+ <feature name='vmx-wbinvd-exit' added='yes'/>
|
||||||
|
</model>
|
||||||
|
</cpus>
|
76
SOURCES/libvirt-Add-vmx-features-to-core2duo.patch
Normal file
76
SOURCES/libvirt-Add-vmx-features-to-core2duo.patch
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
From 823c7005a3b0d5275b30ca811479995bfa5820e9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Thu, 7 Mar 2024 14:06:13 +0100
|
||||||
|
Subject: [PATCH] Add vmx-* features to core{,2}duo
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
---
|
||||||
|
src/cpu_map/x86_core2duo.xml | 26 ++++++++++++++++++++++++++
|
||||||
|
src/cpu_map/x86_coreduo.xml | 18 ++++++++++++++++++
|
||||||
|
2 files changed, 44 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/cpu_map/x86_core2duo.xml b/src/cpu_map/x86_core2duo.xml
|
||||||
|
index 412039fe559..ea23a6c6629 100644
|
||||||
|
--- a/src/cpu_map/x86_core2duo.xml
|
||||||
|
+++ b/src/cpu_map/x86_core2duo.xml
|
||||||
|
@@ -30,5 +30,31 @@
|
||||||
|
<feature name='syscall'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='vme'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-apicv-xapic' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-ins-outs' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-secondary-ctls' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi' added='yes'/>
|
||||||
|
+ <feature name='vmx-vnmi-pending' added='yes'/>
|
||||||
|
</model>
|
||||||
|
</cpus>
|
||||||
|
diff --git a/src/cpu_map/x86_coreduo.xml b/src/cpu_map/x86_coreduo.xml
|
||||||
|
index e2fda9a1d48..24900e637fa 100644
|
||||||
|
--- a/src/cpu_map/x86_coreduo.xml
|
||||||
|
+++ b/src/cpu_map/x86_coreduo.xml
|
||||||
|
@@ -26,5 +26,23 @@
|
||||||
|
<feature name='sse2'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
<feature name='vme'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
</model>
|
||||||
|
</cpus>
|
70
SOURCES/libvirt-Add-vmx-features-to-kvm.patch
Normal file
70
SOURCES/libvirt-Add-vmx-features-to-kvm.patch
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
From 1d03f78c5d0fa2d3422e76bef4c9369ab623bd52 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Thu, 7 Mar 2024 14:06:37 +0100
|
||||||
|
Subject: [PATCH] Add vmx-* features to kvm*
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
---
|
||||||
|
src/cpu_map/x86_kvm32.xml | 18 ++++++++++++++++++
|
||||||
|
src/cpu_map/x86_kvm64.xml | 20 ++++++++++++++++++++
|
||||||
|
2 files changed, 38 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/cpu_map/x86_kvm32.xml b/src/cpu_map/x86_kvm32.xml
|
||||||
|
index 9dd96d5b569..ac28c53bd0b 100644
|
||||||
|
--- a/src/cpu_map/x86_kvm32.xml
|
||||||
|
+++ b/src/cpu_map/x86_kvm32.xml
|
||||||
|
@@ -23,5 +23,23 @@
|
||||||
|
<feature name='sse'/>
|
||||||
|
<feature name='sse2'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-msr-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
</model>
|
||||||
|
</cpus>
|
||||||
|
diff --git a/src/cpu_map/x86_kvm64.xml b/src/cpu_map/x86_kvm64.xml
|
||||||
|
index 185af06f784..970a8e73d50 100644
|
||||||
|
--- a/src/cpu_map/x86_kvm64.xml
|
||||||
|
+++ b/src/cpu_map/x86_kvm64.xml
|
||||||
|
@@ -27,5 +27,25 @@
|
||||||
|
<feature name='sse2'/>
|
||||||
|
<feature name='syscall'/>
|
||||||
|
<feature name='tsc'/>
|
||||||
|
+ <feature name='vmx-activity-hlt' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-load-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-cr8-store-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-entry-ia32e-mode' added='yes'/>
|
||||||
|
+ <feature name='vmx-exit-ack-intr' added='yes'/>
|
||||||
|
+ <feature name='vmx-flexpriority' added='yes'/>
|
||||||
|
+ <feature name='vmx-hlt-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-intr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-invlpg-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-bitmap' added='yes'/>
|
||||||
|
+ <feature name='vmx-io-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-monitor-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-movdr-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-mwait-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-nmi-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-pause-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdpmc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-rdtsc-exit' added='yes'/>
|
||||||
|
+ <feature name='vmx-tsc-offset' added='yes'/>
|
||||||
|
+ <feature name='vmx-vintr-pending' added='yes'/>
|
||||||
|
</model>
|
||||||
|
</cpus>
|
@ -1,53 +0,0 @@
|
|||||||
From bbfcf18f504b0eb165c0bbfe2f34b4e20d11c355 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Laine Stump <laine@redhat.com>
|
|
||||||
Date: Fri, 25 Aug 2023 00:09:54 -0400
|
|
||||||
Subject: [PATCH] docs: update description of virsh nodedev-detach --driver
|
|
||||||
option
|
|
||||||
|
|
||||||
--driver can now be used to specify a specific driver to bind to the
|
|
||||||
device being detached from the host driver (e.g. vfio-pci-igbvf), not
|
|
||||||
just the *type* of driver (e.g. "vfio" or "xen", which are unnecessary
|
|
||||||
anyway, since they are implicit in which hypervisor driver is in use)
|
|
||||||
|
|
||||||
Signed-off-by: Laine Stump <laine@redhat.com>
|
|
||||||
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
docs/manpages/virsh.rst | 25 +++++++++++++++++--------
|
|
||||||
1 file changed, 17 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
|
|
||||||
index 673812036d3..91e1d5de37d 100644
|
|
||||||
--- a/docs/manpages/virsh.rst
|
|
||||||
+++ b/docs/manpages/virsh.rst
|
|
||||||
@@ -5388,14 +5388,23 @@ nodedev-detach
|
|
||||||
|
|
||||||
nodedev-detach nodedev [--driver backend_driver]
|
|
||||||
|
|
||||||
-Detach *nodedev* from the host, so that it can safely be used by
|
|
||||||
-guests via <hostdev> passthrough. This is reversed with
|
|
||||||
-``nodedev-reattach``, and is done automatically for managed devices.
|
|
||||||
-
|
|
||||||
-Different backend drivers expect the device to be bound to different
|
|
||||||
-dummy devices. For example, QEMU's "vfio" backend driver expects the
|
|
||||||
-device to be bound to vfio-pci. The *--driver* parameter can be used
|
|
||||||
-to specify the desired backend driver.
|
|
||||||
+Detach *nodedev* from the host driver and bind it to a special driver
|
|
||||||
+that provides the API needed by the hypervisor for assigning the
|
|
||||||
+device to a virtual machine (using <hostdev> in the domain XML
|
|
||||||
+definition). This is reversed with ``nodedev-reattach``, and is done
|
|
||||||
+automatically by the hypervisor driver for managed devices (those
|
|
||||||
+devices with "managed='yes'" in their XML definition).
|
|
||||||
+
|
|
||||||
+Different hypervisors expect the device being assigned to be bound to
|
|
||||||
+different drivers. For example, QEMU's "vfio" backend requires the
|
|
||||||
+device to be bound to the driver "vfio-pci" or to a "VFIO variant"
|
|
||||||
+driver (this is a driver that supports the full API provided by
|
|
||||||
+vfio-pci, plus some other APIs to support things like live
|
|
||||||
+migration). The *--driver* parameter can be used to specify a
|
|
||||||
+particular driver (e.g. a device-specific VFIO variant driver) the
|
|
||||||
+device should be bound to. When *--driver* is omitted, the default
|
|
||||||
+driver for the hypervisor is used ("vfio-pci" for QEMU, "pciback" for
|
|
||||||
+Xen).
|
|
||||||
|
|
||||||
|
|
||||||
nodedev-dumpxml
|
|
@ -1,178 +0,0 @@
|
|||||||
From 24beaffec33efa3fa077d7b8596d97aa9a038a01 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Laine Stump <laine@redhat.com>
|
|
||||||
Date: Sun, 9 Jul 2023 00:37:45 -0400
|
|
||||||
Subject: [PATCH] node_device: support binding other drivers with
|
|
||||||
virNodeDeviceDetachFlags()
|
|
||||||
|
|
||||||
In the past, the only allowable values for the "driver" field of
|
|
||||||
virNodeDeviceDetachFlags() were "kvm" or "vfio" for the QEMU driver,
|
|
||||||
and "xen" for the libxl driver. Then "kvm" was deprecated and removed,
|
|
||||||
so the driver name became essentially irrelevant (because it is always
|
|
||||||
called via a particular hypervisor driver, and so the "xen" or "vfio"
|
|
||||||
can be (and almost always is) implied.
|
|
||||||
|
|
||||||
With the advent of VFIO variant drivers, the ability to explicitly
|
|
||||||
specify a driver name once again becomes useful - it can be used to
|
|
||||||
name the exact VFIO driver that we want bound to the device in place
|
|
||||||
of vfio-pci, so this patch allows those other names to be passed down
|
|
||||||
the call chain, where the code in virpci.c can make use of them.
|
|
||||||
|
|
||||||
The names "vfio", "kvm", and "xen" retain their special meaning, though:
|
|
||||||
|
|
||||||
1) because there may be some application or configuration that still
|
|
||||||
calls virNodeDeviceDetachFlags() with driverName="vfio", this
|
|
||||||
single value is substituted with the synonym of NULL, which means
|
|
||||||
"bind the default driver for this device and hypervisor". This
|
|
||||||
will currently result in the vfio-pci driver being bound to the
|
|
||||||
device.
|
|
||||||
|
|
||||||
2) in the case of the libxl driver, "xen" means to use the standard
|
|
||||||
driver used in the case of Xen ("pciback").
|
|
||||||
|
|
||||||
3) "kvm" as a driver name always results in an error, as legacy KVM
|
|
||||||
device assignment was removed from the kernel around 10 years ago.
|
|
||||||
|
|
||||||
Signed-off-by: Laine Stump <laine@redhat.com>
|
|
||||||
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
src/hypervisor/domain_driver.c | 11 ++++++-----
|
|
||||||
src/hypervisor/domain_driver.h | 2 ++
|
|
||||||
src/libxl/libxl_driver.c | 3 ++-
|
|
||||||
src/qemu/qemu_driver.c | 33 +++++++++++++++++++--------------
|
|
||||||
4 files changed, 29 insertions(+), 20 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/hypervisor/domain_driver.c b/src/hypervisor/domain_driver.c
|
|
||||||
index a70f75f3ae8..d9469ad6f96 100644
|
|
||||||
--- a/src/hypervisor/domain_driver.c
|
|
||||||
+++ b/src/hypervisor/domain_driver.c
|
|
||||||
@@ -462,6 +462,7 @@ virDomainDriverNodeDeviceReAttach(virNodeDevicePtr dev,
|
|
||||||
int
|
|
||||||
virDomainDriverNodeDeviceDetachFlags(virNodeDevicePtr dev,
|
|
||||||
virHostdevManager *hostdevMgr,
|
|
||||||
+ virPCIStubDriver driverType,
|
|
||||||
const char *driverName)
|
|
||||||
{
|
|
||||||
g_autoptr(virPCIDevice) pci = NULL;
|
|
||||||
@@ -471,8 +472,10 @@ virDomainDriverNodeDeviceDetachFlags(virNodeDevicePtr dev,
|
|
||||||
g_autoptr(virConnect) nodeconn = NULL;
|
|
||||||
g_autoptr(virNodeDevice) nodedev = NULL;
|
|
||||||
|
|
||||||
- if (!driverName)
|
|
||||||
+ if (driverType == VIR_PCI_STUB_DRIVER_NONE) {
|
|
||||||
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("driver type not set"));
|
|
||||||
return -1;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (!(nodeconn = virGetConnectNodeDev()))
|
|
||||||
return -1;
|
|
||||||
@@ -504,10 +507,8 @@ virDomainDriverNodeDeviceDetachFlags(virNodeDevicePtr dev,
|
|
||||||
if (!pci)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
- if (STREQ(driverName, "vfio"))
|
|
||||||
- virPCIDeviceSetStubDriverType(pci, VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
- else if (STREQ(driverName, "xen"))
|
|
||||||
- virPCIDeviceSetStubDriverType(pci, VIR_PCI_STUB_DRIVER_XEN);
|
|
||||||
+ virPCIDeviceSetStubDriverType(pci, driverType);
|
|
||||||
+ virPCIDeviceSetStubDriverName(pci, driverName);
|
|
||||||
|
|
||||||
return virHostdevPCINodeDeviceDetach(hostdevMgr, pci);
|
|
||||||
}
|
|
||||||
diff --git a/src/hypervisor/domain_driver.h b/src/hypervisor/domain_driver.h
|
|
||||||
index 4241c869320..9942f58fda1 100644
|
|
||||||
--- a/src/hypervisor/domain_driver.h
|
|
||||||
+++ b/src/hypervisor/domain_driver.h
|
|
||||||
@@ -22,6 +22,7 @@
|
|
||||||
|
|
||||||
#include "node_device_conf.h"
|
|
||||||
#include "virhostdev.h"
|
|
||||||
+#include "virpci.h"
|
|
||||||
|
|
||||||
char *
|
|
||||||
virDomainDriverGenerateRootHash(const char *drivername,
|
|
||||||
@@ -58,6 +59,7 @@ int virDomainDriverNodeDeviceReAttach(virNodeDevicePtr dev,
|
|
||||||
|
|
||||||
int virDomainDriverNodeDeviceDetachFlags(virNodeDevicePtr dev,
|
|
||||||
virHostdevManager *hostdevMgr,
|
|
||||||
+ virPCIStubDriver driverType,
|
|
||||||
const char *driverName);
|
|
||||||
|
|
||||||
int virDomainDriverAddIOThreadCheck(virDomainDef *def,
|
|
||||||
diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
|
|
||||||
index 3d10f458508..079922dd32a 100644
|
|
||||||
--- a/src/libxl/libxl_driver.c
|
|
||||||
+++ b/src/libxl/libxl_driver.c
|
|
||||||
@@ -5876,7 +5876,8 @@ libxlNodeDeviceDetachFlags(virNodeDevicePtr dev,
|
|
||||||
|
|
||||||
/* virNodeDeviceDetachFlagsEnsureACL() is being called by
|
|
||||||
* virDomainDriverNodeDeviceDetachFlags() */
|
|
||||||
- return virDomainDriverNodeDeviceDetachFlags(dev, hostdev_mgr, driverName);
|
|
||||||
+ return virDomainDriverNodeDeviceDetachFlags(dev, hostdev_mgr,
|
|
||||||
+ VIR_PCI_STUB_DRIVER_XEN, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
|
|
||||||
index 73fa499e40d..5128b643642 100644
|
|
||||||
--- a/src/qemu/qemu_driver.c
|
|
||||||
+++ b/src/qemu/qemu_driver.c
|
|
||||||
@@ -70,7 +70,6 @@
|
|
||||||
#include "domain_driver.h"
|
|
||||||
#include "domain_postparse.h"
|
|
||||||
#include "domain_validate.h"
|
|
||||||
-#include "virpci.h"
|
|
||||||
#include "virpidfile.h"
|
|
||||||
#include "virprocess.h"
|
|
||||||
#include "libvirt_internal.h"
|
|
||||||
@@ -11407,24 +11406,28 @@ qemuNodeDeviceDetachFlags(virNodeDevicePtr dev,
|
|
||||||
|
|
||||||
virCheckFlags(0, -1);
|
|
||||||
|
|
||||||
- if (!driverName)
|
|
||||||
- driverName = "vfio";
|
|
||||||
-
|
|
||||||
- /* Only the 'vfio' driver is supported and a special error message for
|
|
||||||
- * the previously supported 'kvm' driver is provided below. */
|
|
||||||
- if (STRNEQ(driverName, "vfio") && STRNEQ(driverName, "kvm")) {
|
|
||||||
- virReportError(VIR_ERR_INVALID_ARG,
|
|
||||||
- _("unknown driver name '%1$s'"), driverName);
|
|
||||||
- return -1;
|
|
||||||
- }
|
|
||||||
+ /* For historical reasons, if driverName is "vfio", that is the
|
|
||||||
+ * same as NULL, i.e. the default vfio driver for this device
|
|
||||||
+ */
|
|
||||||
+ if (STREQ_NULLABLE(driverName, "vfio"))
|
|
||||||
+ driverName = NULL;
|
|
||||||
|
|
||||||
- if (STREQ(driverName, "kvm")) {
|
|
||||||
+ /* the "kvm" driver name was used a very long time ago to force
|
|
||||||
+ * "legacy KVM device assignment", which hasn't been supported in
|
|
||||||
+ * over 10 years.
|
|
||||||
+ */
|
|
||||||
+ if (STREQ_NULLABLE(driverName, "kvm")) {
|
|
||||||
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
|
|
||||||
- _("KVM device assignment is no longer "
|
|
||||||
+ _("'legacy KVM' device assignment is no longer "
|
|
||||||
"supported on this system"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /* for any other driver, we can't know whether or not it is a VFIO
|
|
||||||
+ * driver until the device has been bound to it, so we will defer
|
|
||||||
+ * further validation until then.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
if (!qemuHostdevHostSupportsPassthroughVFIO()) {
|
|
||||||
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
|
|
||||||
_("VFIO device assignment is currently not "
|
|
||||||
@@ -11434,7 +11437,9 @@ qemuNodeDeviceDetachFlags(virNodeDevicePtr dev,
|
|
||||||
|
|
||||||
/* virNodeDeviceDetachFlagsEnsureACL() is being called by
|
|
||||||
* virDomainDriverNodeDeviceDetachFlags() */
|
|
||||||
- return virDomainDriverNodeDeviceDetachFlags(dev, hostdev_mgr, driverName);
|
|
||||||
+ return virDomainDriverNodeDeviceDetachFlags(dev, hostdev_mgr,
|
|
||||||
+ VIR_PCI_STUB_DRIVER_VFIO,
|
|
||||||
+ driverName);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
@ -1,38 +0,0 @@
|
|||||||
From 10e8a518a05922d5592d1405054aed3195aebf06 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Laine Stump <laine@redhat.com>
|
|
||||||
Date: Fri, 18 Aug 2023 16:13:16 -0400
|
|
||||||
Subject: [PATCH] qemu: turn two multiline log messages into single line
|
|
||||||
|
|
||||||
Normally I wouldn't bother with a change like this, but I was touching
|
|
||||||
the function anyway, and wanted to leave it looking nice and tidy.
|
|
||||||
|
|
||||||
Signed-off-by: Laine Stump <laine@redhat.com>
|
|
||||||
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
src/qemu/qemu_driver.c | 6 ++----
|
|
||||||
1 file changed, 2 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
|
|
||||||
index 5128b643642..5db42f07533 100644
|
|
||||||
--- a/src/qemu/qemu_driver.c
|
|
||||||
+++ b/src/qemu/qemu_driver.c
|
|
||||||
@@ -11418,8 +11418,7 @@ qemuNodeDeviceDetachFlags(virNodeDevicePtr dev,
|
|
||||||
*/
|
|
||||||
if (STREQ_NULLABLE(driverName, "kvm")) {
|
|
||||||
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
|
|
||||||
- _("'legacy KVM' device assignment is no longer "
|
|
||||||
- "supported on this system"));
|
|
||||||
+ _("'legacy KVM' device assignment is no longer supported on this system"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -11430,8 +11429,7 @@ qemuNodeDeviceDetachFlags(virNodeDevicePtr dev,
|
|
||||||
|
|
||||||
if (!qemuHostdevHostSupportsPassthroughVFIO()) {
|
|
||||||
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
|
|
||||||
- _("VFIO device assignment is currently not "
|
|
||||||
- "supported on this system"));
|
|
||||||
+ _("VFIO device assignment is currently not supported on this system"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
|||||||
From c9056e682a8a67dc29e39eb01392fcf8ee978c31 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jonathan Wright <jonathan@almalinux.org>
|
|
||||||
Date: Wed, 3 Jan 2024 09:26:59 -0600
|
|
||||||
Subject: [PATCH] conf: Restore setting default bus for input devices
|
|
||||||
|
|
||||||
Prior to v9.3.0-rc1~30 we used to set default bus for <input/>
|
|
||||||
devices, during XML parsing. In the commit this code was moved to
|
|
||||||
a post parse callback. But somehow the line that sets the bus in
|
|
||||||
one specific case disappeared. Bring it back.
|
|
||||||
|
|
||||||
Resolves: https://gitlab.com/libvirt/libvirt/-/issues/577
|
|
||||||
Fixes: c4bc4d3b82fbe22e03c986ca896090f481df5c10
|
|
||||||
Signed-off-by: Jonathan Wright <jonathan@almalinux.org>
|
|
||||||
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
src/conf/domain_postparse.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/src/conf/domain_postparse.c b/src/conf/domain_postparse.c
|
|
||||||
index e79913b73f..ee27023f3e 100644
|
|
||||||
--- a/src/conf/domain_postparse.c
|
|
||||||
+++ b/src/conf/domain_postparse.c
|
|
||||||
@@ -657,6 +657,7 @@ virDomainInputDefPostParse(virDomainInputDef *input,
|
|
||||||
if ((input->type == VIR_DOMAIN_INPUT_TYPE_MOUSE ||
|
|
||||||
input->type == VIR_DOMAIN_INPUT_TYPE_KBD) &&
|
|
||||||
(ARCH_IS_X86(def->os.arch) || def->os.arch == VIR_ARCH_NONE)) {
|
|
||||||
+ input->bus = VIR_DOMAIN_INPUT_BUS_PS2;
|
|
||||||
} else if (ARCH_IS_S390(def->os.arch) ||
|
|
||||||
input->type == VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH) {
|
|
||||||
input->bus = VIR_DOMAIN_INPUT_BUS_VIRTIO;
|
|
||||||
--
|
|
@ -1,99 +0,0 @@
|
|||||||
From 1bb961797153a92a40a3c517114e4920c65672d4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Laine Stump <laine@redhat.com>
|
|
||||||
Date: Sat, 8 Jul 2023 22:20:39 -0400
|
|
||||||
Subject: [PATCH] util: add stub driver name to virPCIDevice object
|
|
||||||
|
|
||||||
There can be many different drivers that are of the type "VFIO", so
|
|
||||||
add the driver name to the object and allow getting/setting it.
|
|
||||||
|
|
||||||
Signed-off-by: Laine Stump <laine@redhat.com>
|
|
||||||
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
src/libvirt_private.syms | 2 ++
|
|
||||||
src/util/virpci.c | 17 +++++++++++++++++
|
|
||||||
src/util/virpci.h | 3 +++
|
|
||||||
3 files changed, 22 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
|
|
||||||
index 190bebdd625..0ca63f09552 100644
|
|
||||||
--- a/src/libvirt_private.syms
|
|
||||||
+++ b/src/libvirt_private.syms
|
|
||||||
@@ -3082,6 +3082,7 @@ virPCIDeviceGetManaged;
|
|
||||||
virPCIDeviceGetName;
|
|
||||||
virPCIDeviceGetRemoveSlot;
|
|
||||||
virPCIDeviceGetReprobe;
|
|
||||||
+virPCIDeviceGetStubDriverName;
|
|
||||||
virPCIDeviceGetStubDriverType;
|
|
||||||
virPCIDeviceGetUnbindFromStub;
|
|
||||||
virPCIDeviceGetUsedBy;
|
|
||||||
@@ -3108,6 +3109,7 @@ virPCIDeviceReset;
|
|
||||||
virPCIDeviceSetManaged;
|
|
||||||
virPCIDeviceSetRemoveSlot;
|
|
||||||
virPCIDeviceSetReprobe;
|
|
||||||
+virPCIDeviceSetStubDriverName;
|
|
||||||
virPCIDeviceSetStubDriverType;
|
|
||||||
virPCIDeviceSetUnbindFromStub;
|
|
||||||
virPCIDeviceSetUsedBy;
|
|
||||||
diff --git a/src/util/virpci.c b/src/util/virpci.c
|
|
||||||
index d86a81c2b1d..a53a51d55e2 100644
|
|
||||||
--- a/src/util/virpci.c
|
|
||||||
+++ b/src/util/virpci.c
|
|
||||||
@@ -88,6 +88,7 @@ struct _virPCIDevice {
|
|
||||||
bool managed;
|
|
||||||
|
|
||||||
virPCIStubDriver stubDriverType;
|
|
||||||
+ char *stubDriverName; /* if blank, use default for type */
|
|
||||||
|
|
||||||
/* used by reattach function */
|
|
||||||
bool unbind_from_stub;
|
|
||||||
@@ -1508,6 +1509,7 @@ virPCIDeviceCopy(virPCIDevice *dev)
|
|
||||||
copy->path = g_strdup(dev->path);
|
|
||||||
copy->used_by_drvname = g_strdup(dev->used_by_drvname);
|
|
||||||
copy->used_by_domname = g_strdup(dev->used_by_domname);
|
|
||||||
+ copy->stubDriverName = g_strdup(dev->stubDriverName);
|
|
||||||
return copy;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1522,6 +1524,7 @@ virPCIDeviceFree(virPCIDevice *dev)
|
|
||||||
g_free(dev->path);
|
|
||||||
g_free(dev->used_by_drvname);
|
|
||||||
g_free(dev->used_by_domname);
|
|
||||||
+ g_free(dev->stubDriverName);
|
|
||||||
g_free(dev);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1581,6 +1584,20 @@ virPCIDeviceGetStubDriverType(virPCIDevice *dev)
|
|
||||||
return dev->stubDriverType;
|
|
||||||
}
|
|
||||||
|
|
||||||
+void
|
|
||||||
+virPCIDeviceSetStubDriverName(virPCIDevice *dev,
|
|
||||||
+ const char *driverName)
|
|
||||||
+{
|
|
||||||
+ g_free(dev->stubDriverName);
|
|
||||||
+ dev->stubDriverName = g_strdup(driverName);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+const char *
|
|
||||||
+virPCIDeviceGetStubDriverName(virPCIDevice *dev)
|
|
||||||
+{
|
|
||||||
+ return dev->stubDriverName;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
bool
|
|
||||||
virPCIDeviceGetUnbindFromStub(virPCIDevice *dev)
|
|
||||||
{
|
|
||||||
diff --git a/src/util/virpci.h b/src/util/virpci.h
|
|
||||||
index 485f535bc91..f8f98f39de7 100644
|
|
||||||
--- a/src/util/virpci.h
|
|
||||||
+++ b/src/util/virpci.h
|
|
||||||
@@ -137,6 +137,9 @@ bool virPCIDeviceGetManaged(virPCIDevice *dev);
|
|
||||||
void virPCIDeviceSetStubDriverType(virPCIDevice *dev,
|
|
||||||
virPCIStubDriver driverType);
|
|
||||||
virPCIStubDriver virPCIDeviceGetStubDriverType(virPCIDevice *dev);
|
|
||||||
+void virPCIDeviceSetStubDriverName(virPCIDevice *dev,
|
|
||||||
+ const char *driverName);
|
|
||||||
+const char *virPCIDeviceGetStubDriverName(virPCIDevice *dev);
|
|
||||||
virPCIDeviceAddress *virPCIDeviceGetAddress(virPCIDevice *dev);
|
|
||||||
int virPCIDeviceSetUsedBy(virPCIDevice *dev,
|
|
||||||
const char *drv_name,
|
|
@ -1,40 +0,0 @@
|
|||||||
From 928296b044647fd3cbe409db6903afc791863a90 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Laine Stump <laine@redhat.com>
|
|
||||||
Date: Sat, 8 Jul 2023 23:05:44 -0400
|
|
||||||
Subject: [PATCH] util: honor stubDriverName when probing/binding stub driver
|
|
||||||
for a device
|
|
||||||
|
|
||||||
Signed-off-by: Laine Stump <laine@redhat.com>
|
|
||||||
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
src/util/virpci.c | 9 ++++++---
|
|
||||||
1 file changed, 6 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/util/virpci.c b/src/util/virpci.c
|
|
||||||
index f1936795da7..1158e468bf9 100644
|
|
||||||
--- a/src/util/virpci.c
|
|
||||||
+++ b/src/util/virpci.c
|
|
||||||
@@ -1290,17 +1290,20 @@ virPCIDeviceUnbindFromStub(virPCIDevice *dev)
|
|
||||||
static int
|
|
||||||
virPCIDeviceBindToStub(virPCIDevice *dev)
|
|
||||||
{
|
|
||||||
- const char *stubDriverName;
|
|
||||||
+ const char *stubDriverName = dev->stubDriverName;
|
|
||||||
g_autofree char *stubDriverPath = NULL;
|
|
||||||
g_autofree char *driverLink = NULL;
|
|
||||||
|
|
||||||
- /* Check the device is configured to use one of the known stub drivers */
|
|
||||||
+
|
|
||||||
if (dev->stubDriverType == VIR_PCI_STUB_DRIVER_NONE) {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
||||||
_("No stub driver configured for PCI device %1$s"),
|
|
||||||
dev->name);
|
|
||||||
return -1;
|
|
||||||
- } else if (!(stubDriverName = virPCIStubDriverTypeToString(dev->stubDriverType))) {
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (!stubDriverName
|
|
||||||
+ && !(stubDriverName = virPCIStubDriverTypeToString(dev->stubDriverType))) {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
||||||
_("Unknown stub driver configured for PCI device %1$s"),
|
|
||||||
dev->name);
|
|
@ -1,250 +0,0 @@
|
|||||||
From 6ce071f6097d9e96892d5a6c7bd3040f43cc925b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Laine Stump <laine@redhat.com>
|
|
||||||
Date: Fri, 2 Jun 2023 14:34:51 -0400
|
|
||||||
Subject: [PATCH] util: permit existing binding to VFIO variant driver
|
|
||||||
|
|
||||||
Before a PCI device can be assigned to a guest with VFIO, that device
|
|
||||||
must be bound to the vfio-pci driver rather than to the device's
|
|
||||||
normal host driver. The vfio-pci driver provides APIs that permit QEMU
|
|
||||||
to perform all the necessary operations to make the device accessible
|
|
||||||
to the guest.
|
|
||||||
|
|
||||||
In the past vfio-pci was the only driver that supplied these APIs, but
|
|
||||||
there are now vendor/device-specific "VFIO variant" drivers that
|
|
||||||
provide the basic vfio-pci driver functionality/API while adding
|
|
||||||
support for device-specific operations (for example these
|
|
||||||
device-specific drivers may support live migration of certain
|
|
||||||
devices). All that is needed to make this functionality available is
|
|
||||||
to bind the vendor-specific "VFIO variant" driver to the device
|
|
||||||
(rather than the generic vfio-pci driver, which will continue to work,
|
|
||||||
just without the extra functionality).
|
|
||||||
|
|
||||||
But until now libvirt has required that all PCI devices being assigned
|
|
||||||
to a guest with VFIO specifically have the "vfio-pci" driver bound to
|
|
||||||
the device. So even if the user manually binds a shiny new
|
|
||||||
vendor-specific VFIO variant driver to the device (and puts
|
|
||||||
"managed='no'" in the config to prevent libvirt from changing the
|
|
||||||
binding), libvirt will just fail during startup of the guest (or
|
|
||||||
during hotplug) because the driver bound to the device isn't exactly
|
|
||||||
"vfio-pci".
|
|
||||||
|
|
||||||
Beginning with kernel 6.1, it's possible to determine from the sysfs
|
|
||||||
directory for a device whether the currently-bound driver is the
|
|
||||||
vfio-pci driver or a VFIO variant - the device directory will have a
|
|
||||||
subdirectory called "vfio-dev". We can use that to appropriately widen
|
|
||||||
the list of drivers that libvirt will allow for VFIO device
|
|
||||||
assignment.
|
|
||||||
|
|
||||||
This patch doesn't remove the explicit check for the exact "vfio-pci"
|
|
||||||
driver (since that would cause systems with pre-6.1 kernels to behave
|
|
||||||
incorrectly), but adds an additional check for the vfio-dev directory,
|
|
||||||
so that any VFIO variant driver is acceptable for libvirt to continue
|
|
||||||
setting up for VFIO device assignment.
|
|
||||||
|
|
||||||
Signed-off-by: Laine Stump <laine@redhat.com>
|
|
||||||
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
src/hypervisor/virhostdev.c | 28 +++++--------
|
|
||||||
src/libvirt_private.syms | 1 +
|
|
||||||
src/util/virpci.c | 78 ++++++++++++++++++++++++++++++++++---
|
|
||||||
src/util/virpci.h | 3 ++
|
|
||||||
4 files changed, 87 insertions(+), 23 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/hypervisor/virhostdev.c b/src/hypervisor/virhostdev.c
|
|
||||||
index 244f057c6ce..b95d6bf3d61 100644
|
|
||||||
--- a/src/hypervisor/virhostdev.c
|
|
||||||
+++ b/src/hypervisor/virhostdev.c
|
|
||||||
@@ -743,9 +743,8 @@ virHostdevPreparePCIDevicesImpl(virHostdevManager *mgr,
|
|
||||||
mgr->inactivePCIHostdevs) < 0)
|
|
||||||
goto reattachdevs;
|
|
||||||
} else {
|
|
||||||
- g_autofree char *driverPath = NULL;
|
|
||||||
- g_autofree char *driverName = NULL;
|
|
||||||
- int stub;
|
|
||||||
+ g_autofree char *drvName = NULL;
|
|
||||||
+ virPCIStubDriver drvType;
|
|
||||||
|
|
||||||
/* Unmanaged devices should already have been marked as
|
|
||||||
* inactive: if that's the case, we can simply move on */
|
|
||||||
@@ -765,19 +764,17 @@ virHostdevPreparePCIDevicesImpl(virHostdevManager *mgr,
|
|
||||||
* information about active / inactive device across
|
|
||||||
* daemon restarts has been implemented */
|
|
||||||
|
|
||||||
- if (virPCIDeviceGetCurrentDriverPathAndName(pci, &driverPath,
|
|
||||||
- &driverName) < 0) {
|
|
||||||
+ if (virPCIDeviceGetCurrentDriverNameAndType(pci, &drvName,
|
|
||||||
+ &drvType) < 0) {
|
|
||||||
goto reattachdevs;
|
|
||||||
}
|
|
||||||
|
|
||||||
- stub = virPCIStubDriverTypeFromString(driverName);
|
|
||||||
-
|
|
||||||
- if (stub > VIR_PCI_STUB_DRIVER_NONE &&
|
|
||||||
- stub < VIR_PCI_STUB_DRIVER_LAST) {
|
|
||||||
+ if (drvType > VIR_PCI_STUB_DRIVER_NONE) {
|
|
||||||
|
|
||||||
/* The device is bound to a known stub driver: store this
|
|
||||||
* information and add a copy to the inactive list */
|
|
||||||
- virPCIDeviceSetStubDriverType(pci, stub);
|
|
||||||
+ virPCIDeviceSetStubDriverType(pci, drvType);
|
|
||||||
+ virPCIDeviceSetStubDriverName(pci, drvName);
|
|
||||||
|
|
||||||
VIR_DEBUG("Adding PCI device %s to inactive list",
|
|
||||||
virPCIDeviceGetName(pci));
|
|
||||||
@@ -2291,18 +2288,13 @@ virHostdevPrepareOneNVMeDevice(virHostdevManager *hostdev_mgr,
|
|
||||||
/* Let's check if all PCI devices are NVMe disks. */
|
|
||||||
for (i = 0; i < virPCIDeviceListCount(pciDevices); i++) {
|
|
||||||
virPCIDevice *pci = virPCIDeviceListGet(pciDevices, i);
|
|
||||||
- g_autofree char *drvPath = NULL;
|
|
||||||
g_autofree char *drvName = NULL;
|
|
||||||
- int stub = VIR_PCI_STUB_DRIVER_NONE;
|
|
||||||
+ virPCIStubDriver drvType;
|
|
||||||
|
|
||||||
- if (virPCIDeviceGetCurrentDriverPathAndName(pci, &drvPath, &drvName) < 0)
|
|
||||||
+ if (virPCIDeviceGetCurrentDriverNameAndType(pci, &drvName, &drvType) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
- if (drvName)
|
|
||||||
- stub = virPCIStubDriverTypeFromString(drvName);
|
|
||||||
-
|
|
||||||
- if (stub == VIR_PCI_STUB_DRIVER_VFIO ||
|
|
||||||
- STREQ_NULLABLE(drvName, "nvme"))
|
|
||||||
+ if (drvType == VIR_PCI_STUB_DRIVER_VFIO || STREQ_NULLABLE(drvName, "nvme"))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
VIR_WARN("Suspicious NVMe disk assignment. PCI device "
|
|
||||||
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
|
|
||||||
index cc564928170..ab049b38584 100644
|
|
||||||
--- a/src/libvirt_private.syms
|
|
||||||
+++ b/src/libvirt_private.syms
|
|
||||||
@@ -3074,6 +3074,7 @@ virPCIDeviceFileIterate;
|
|
||||||
virPCIDeviceFree;
|
|
||||||
virPCIDeviceGetAddress;
|
|
||||||
virPCIDeviceGetConfigPath;
|
|
||||||
+virPCIDeviceGetCurrentDriverNameAndType;
|
|
||||||
virPCIDeviceGetCurrentDriverPathAndName;
|
|
||||||
virPCIDeviceGetIOMMUGroupDev;
|
|
||||||
virPCIDeviceGetIOMMUGroupList;
|
|
||||||
diff --git a/src/util/virpci.c b/src/util/virpci.c
|
|
||||||
index e6f7554b232..253ddccabdd 100644
|
|
||||||
--- a/src/util/virpci.c
|
|
||||||
+++ b/src/util/virpci.c
|
|
||||||
@@ -280,6 +280,73 @@ virPCIDeviceGetCurrentDriverPathAndName(virPCIDevice *dev,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
+/**
|
|
||||||
+ * virPCIDeviceGetCurrentDriverNameAndType:
|
|
||||||
+ * @dev: virPCIDevice object to examine
|
|
||||||
+ * @drvName: returns name of driver bound to this device (if any)
|
|
||||||
+ * @drvType: returns type of driver if it is a known stub driver type
|
|
||||||
+ *
|
|
||||||
+ * Find the name of the driver bound to @dev (if any) and the type of
|
|
||||||
+ * the driver if it is a known/recognized "stub" driver (based on the
|
|
||||||
+ * driver name).
|
|
||||||
+ *
|
|
||||||
+ * There are vfio "variant" drivers that provide all the basic
|
|
||||||
+ * functionality of the standard vfio-pci driver as well as additional
|
|
||||||
+ * stuff. As of kernel 6.1, the vfio-pci driver and all vfio variant
|
|
||||||
+ * drivers can be identified (once the driver has been bound to a
|
|
||||||
+ * device) by looking for the subdirectory "vfio-dev" in the device's
|
|
||||||
+ * sysfs directory; for example, if the directory
|
|
||||||
+ * /sys/bus/pci/devices/0000:04:11.4/vfio-dev exists, then the driver
|
|
||||||
+ * that is currently bound to PCI device 0000:04:11.4 is either
|
|
||||||
+ * vfio-pci, or a vfio-pci variant driver.
|
|
||||||
+ *
|
|
||||||
+ * Return 0 on success, -1 on failure. If -1 is returned, then an error
|
|
||||||
+ * message has been logged.
|
|
||||||
+ */
|
|
||||||
+int
|
|
||||||
+virPCIDeviceGetCurrentDriverNameAndType(virPCIDevice *dev,
|
|
||||||
+ char **drvName,
|
|
||||||
+ virPCIStubDriver *drvType)
|
|
||||||
+{
|
|
||||||
+ g_autofree char *drvPath = NULL;
|
|
||||||
+ g_autofree char *vfioDevDir = NULL;
|
|
||||||
+ int tmpType;
|
|
||||||
+
|
|
||||||
+ if (virPCIDeviceGetCurrentDriverPathAndName(dev, &drvPath, drvName) < 0)
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
+ if (!*drvName) {
|
|
||||||
+ *drvType = VIR_PCI_STUB_DRIVER_NONE;
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ tmpType = virPCIStubDriverTypeFromString(*drvName);
|
|
||||||
+
|
|
||||||
+ if (tmpType > VIR_PCI_STUB_DRIVER_NONE) {
|
|
||||||
+ *drvType = tmpType;
|
|
||||||
+ return 0; /* exact match of a known driver name (or no name) */
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* If the sysfs directory of this device contains a directory
|
|
||||||
+ * named "vfio-dev" then the currently-bound driver is a vfio
|
|
||||||
+ * variant driver.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ vfioDevDir = virPCIFile(dev->name, "vfio-dev");
|
|
||||||
+
|
|
||||||
+ if (virFileIsDir(vfioDevDir)) {
|
|
||||||
+ VIR_DEBUG("Driver %s is a vfio_pci driver", *drvName);
|
|
||||||
+ *drvType = VIR_PCI_STUB_DRIVER_VFIO;
|
|
||||||
+ } else {
|
|
||||||
+ VIR_DEBUG("Driver %s is NOT a vfio_pci driver, or kernel is too old",
|
|
||||||
+ *drvName);
|
|
||||||
+ *drvType = VIR_PCI_STUB_DRIVER_NONE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
static int
|
|
||||||
virPCIDeviceConfigOpenInternal(virPCIDevice *dev, bool readonly, bool fatal)
|
|
||||||
{
|
|
||||||
@@ -1007,8 +1074,8 @@ virPCIDeviceReset(virPCIDevice *dev,
|
|
||||||
virPCIDeviceList *activeDevs,
|
|
||||||
virPCIDeviceList *inactiveDevs)
|
|
||||||
{
|
|
||||||
- g_autofree char *drvPath = NULL;
|
|
||||||
g_autofree char *drvName = NULL;
|
|
||||||
+ virPCIStubDriver drvType;
|
|
||||||
int ret = -1;
|
|
||||||
int fd = -1;
|
|
||||||
int hdrType = -1;
|
|
||||||
@@ -1034,15 +1101,16 @@ virPCIDeviceReset(virPCIDevice *dev,
|
|
||||||
* reset it whenever appropriate, so doing it ourselves would just
|
|
||||||
* be redundant.
|
|
||||||
*/
|
|
||||||
- if (virPCIDeviceGetCurrentDriverPathAndName(dev, &drvPath, &drvName) < 0)
|
|
||||||
+ if (virPCIDeviceGetCurrentDriverNameAndType(dev, &drvName, &drvType) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
- if (virPCIStubDriverTypeFromString(drvName) == VIR_PCI_STUB_DRIVER_VFIO) {
|
|
||||||
- VIR_DEBUG("Device %s is bound to vfio-pci - skip reset",
|
|
||||||
- dev->name);
|
|
||||||
+ if (drvType == VIR_PCI_STUB_DRIVER_VFIO) {
|
|
||||||
+
|
|
||||||
+ VIR_DEBUG("Device %s is bound to %s - skip reset", dev->name, drvName);
|
|
||||||
ret = 0;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
VIR_DEBUG("Resetting device %s", dev->name);
|
|
||||||
|
|
||||||
if ((fd = virPCIDeviceConfigOpenWrite(dev)) < 0)
|
|
||||||
diff --git a/src/util/virpci.h b/src/util/virpci.h
|
|
||||||
index 19c910202a2..faca6cf6f99 100644
|
|
||||||
--- a/src/util/virpci.h
|
|
||||||
+++ b/src/util/virpci.h
|
|
||||||
@@ -283,6 +283,9 @@ int virPCIDeviceRebind(virPCIDevice *dev);
|
|
||||||
int virPCIDeviceGetCurrentDriverPathAndName(virPCIDevice *dev,
|
|
||||||
char **path,
|
|
||||||
char **name);
|
|
||||||
+int virPCIDeviceGetCurrentDriverNameAndType(virPCIDevice *dev,
|
|
||||||
+ char **drvName,
|
|
||||||
+ virPCIStubDriver *drvType);
|
|
||||||
|
|
||||||
int virPCIDeviceIsPCIExpress(virPCIDevice *dev);
|
|
||||||
int virPCIDeviceHasPCIExpressLink(virPCIDevice *dev);
|
|
@ -1,107 +0,0 @@
|
|||||||
From 2d9c9445b9cc093c870f101eb884ddeac3ae40f7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Laine Stump <laine@redhat.com>
|
|
||||||
Date: Sun, 9 Jul 2023 15:00:26 -0400
|
|
||||||
Subject: [PATCH] util: probe stub driver from within function that binds to
|
|
||||||
stub driver
|
|
||||||
|
|
||||||
virPCIProbeStubDriver() and virPCIDeviceBindToStub() both have
|
|
||||||
very similar code that locally sets a driver name (based on
|
|
||||||
stubDriverType). These two functions are each also called in just one
|
|
||||||
place (virPCIDeviceDetach()), with just a small bit of validation code
|
|
||||||
in between.
|
|
||||||
|
|
||||||
To eliminate the "duplicated" code (which is going to be expanded
|
|
||||||
slightly in upcoming patches to support manually or automatically
|
|
||||||
picking a VFIO variant driver), this patch modifies
|
|
||||||
virPCIProbeStubDriver() to take the driver name as an argument
|
|
||||||
(rather than the virPCIDevice object), and calls it from within
|
|
||||||
virPCIDeviceBindToStub() (rather than from that function's caller),
|
|
||||||
using the driverName it has just figured out with the
|
|
||||||
now-not-duplicated code.
|
|
||||||
|
|
||||||
(NB: Since it could be used to probe *any* driver module, the name is
|
|
||||||
changed to virPCIProbeDriver()).
|
|
||||||
|
|
||||||
Signed-off-by: Laine Stump <laine@redhat.com>
|
|
||||||
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
src/util/virpci.c | 33 ++++++++++++---------------------
|
|
||||||
1 file changed, 12 insertions(+), 21 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/util/virpci.c b/src/util/virpci.c
|
|
||||||
index 253ddccabdd..f1936795da7 100644
|
|
||||||
--- a/src/util/virpci.c
|
|
||||||
+++ b/src/util/virpci.c
|
|
||||||
@@ -1154,28 +1154,19 @@ virPCIDeviceReset(virPCIDevice *dev,
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
-virPCIProbeStubDriver(virPCIStubDriver driver)
|
|
||||||
+virPCIProbeDriver(const char *driverName)
|
|
||||||
{
|
|
||||||
- const char *drvname = NULL;
|
|
||||||
g_autofree char *drvpath = NULL;
|
|
||||||
g_autofree char *errbuf = NULL;
|
|
||||||
|
|
||||||
- if (driver == VIR_PCI_STUB_DRIVER_NONE ||
|
|
||||||
- !(drvname = virPCIStubDriverTypeToString(driver))) {
|
|
||||||
- virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
||||||
- "%s",
|
|
||||||
- _("Attempting to use unknown stub driver"));
|
|
||||||
- return -1;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- drvpath = virPCIDriverDir(drvname);
|
|
||||||
+ drvpath = virPCIDriverDir(driverName);
|
|
||||||
|
|
||||||
/* driver previously loaded, return */
|
|
||||||
if (virFileExists(drvpath))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
- if ((errbuf = virKModLoad(drvname))) {
|
|
||||||
- VIR_WARN("failed to load driver %s: %s", drvname, errbuf);
|
|
||||||
+ if ((errbuf = virKModLoad(driverName))) {
|
|
||||||
+ VIR_WARN("failed to load driver %s: %s", driverName, errbuf);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1187,14 +1178,14 @@ virPCIProbeStubDriver(virPCIStubDriver driver)
|
|
||||||
/* If we know failure was because of admin config, let's report that;
|
|
||||||
* otherwise, report a more generic failure message
|
|
||||||
*/
|
|
||||||
- if (virKModIsProhibited(drvname)) {
|
|
||||||
+ if (virKModIsProhibited(driverName)) {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
||||||
- _("Failed to load PCI stub module %1$s: administratively prohibited"),
|
|
||||||
- drvname);
|
|
||||||
+ _("Failed to load PCI driver module %1$s: administratively prohibited"),
|
|
||||||
+ driverName);
|
|
||||||
} else {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
||||||
- _("Failed to load PCI stub module %1$s"),
|
|
||||||
- drvname);
|
|
||||||
+ _("Failed to load PCI driver module %1$s"),
|
|
||||||
+ driverName);
|
|
||||||
}
|
|
||||||
|
|
||||||
return -1;
|
|
||||||
@@ -1316,6 +1307,9 @@ virPCIDeviceBindToStub(virPCIDevice *dev)
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (virPCIProbeDriver(stubDriverName) < 0)
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
stubDriverPath = virPCIDriverDir(stubDriverName);
|
|
||||||
driverLink = virPCIFile(dev->name, "driver");
|
|
||||||
|
|
||||||
@@ -1359,9 +1353,6 @@ virPCIDeviceDetach(virPCIDevice *dev,
|
|
||||||
virPCIDeviceList *activeDevs,
|
|
||||||
virPCIDeviceList *inactiveDevs)
|
|
||||||
{
|
|
||||||
- if (virPCIProbeStubDriver(dev->stubDriverType) < 0)
|
|
||||||
- return -1;
|
|
||||||
-
|
|
||||||
if (activeDevs && virPCIDeviceListFind(activeDevs, &dev->address)) {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
||||||
_("Not detaching active device %1$s"), dev->name);
|
|
@ -1,132 +0,0 @@
|
|||||||
From 222b66974e8256965c089fb0f244dc1e01f708e7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Laine Stump <laine@redhat.com>
|
|
||||||
Date: Sat, 8 Jul 2023 23:12:09 -0400
|
|
||||||
Subject: [PATCH] util: rename virPCIDeviceGetDriverPathAndName
|
|
||||||
|
|
||||||
Instead, call it virPCIDeviceGetCurrentDriverPathAndName() to avoid
|
|
||||||
confusion with the device name that is stored in the virPCIDevice
|
|
||||||
object - that one is not necessarily the name of the current driver
|
|
||||||
for the device, but could instead be the driver that we want to be
|
|
||||||
bound to the device in the future.
|
|
||||||
|
|
||||||
Signed-off-by: Laine Stump <laine@redhat.com>
|
|
||||||
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
src/hypervisor/virhostdev.c | 7 ++++---
|
|
||||||
src/libvirt_private.syms | 2 +-
|
|
||||||
src/util/virpci.c | 10 ++++++----
|
|
||||||
src/util/virpci.h | 6 +++---
|
|
||||||
tests/virpcitest.c | 2 +-
|
|
||||||
5 files changed, 15 insertions(+), 12 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/hypervisor/virhostdev.c b/src/hypervisor/virhostdev.c
|
|
||||||
index c437ca9d22d..244f057c6ce 100644
|
|
||||||
--- a/src/hypervisor/virhostdev.c
|
|
||||||
+++ b/src/hypervisor/virhostdev.c
|
|
||||||
@@ -765,9 +765,10 @@ virHostdevPreparePCIDevicesImpl(virHostdevManager *mgr,
|
|
||||||
* information about active / inactive device across
|
|
||||||
* daemon restarts has been implemented */
|
|
||||||
|
|
||||||
- if (virPCIDeviceGetDriverPathAndName(pci,
|
|
||||||
- &driverPath, &driverName) < 0)
|
|
||||||
+ if (virPCIDeviceGetCurrentDriverPathAndName(pci, &driverPath,
|
|
||||||
+ &driverName) < 0) {
|
|
||||||
goto reattachdevs;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
stub = virPCIStubDriverTypeFromString(driverName);
|
|
||||||
|
|
||||||
@@ -2294,7 +2295,7 @@ virHostdevPrepareOneNVMeDevice(virHostdevManager *hostdev_mgr,
|
|
||||||
g_autofree char *drvName = NULL;
|
|
||||||
int stub = VIR_PCI_STUB_DRIVER_NONE;
|
|
||||||
|
|
||||||
- if (virPCIDeviceGetDriverPathAndName(pci, &drvPath, &drvName) < 0)
|
|
||||||
+ if (virPCIDeviceGetCurrentDriverPathAndName(pci, &drvPath, &drvName) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if (drvName)
|
|
||||||
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
|
|
||||||
index 0ca63f09552..cc564928170 100644
|
|
||||||
--- a/src/libvirt_private.syms
|
|
||||||
+++ b/src/libvirt_private.syms
|
|
||||||
@@ -3074,7 +3074,7 @@ virPCIDeviceFileIterate;
|
|
||||||
virPCIDeviceFree;
|
|
||||||
virPCIDeviceGetAddress;
|
|
||||||
virPCIDeviceGetConfigPath;
|
|
||||||
-virPCIDeviceGetDriverPathAndName;
|
|
||||||
+virPCIDeviceGetCurrentDriverPathAndName;
|
|
||||||
virPCIDeviceGetIOMMUGroupDev;
|
|
||||||
virPCIDeviceGetIOMMUGroupList;
|
|
||||||
virPCIDeviceGetLinkCapSta;
|
|
||||||
diff --git a/src/util/virpci.c b/src/util/virpci.c
|
|
||||||
index a53a51d55e2..e6f7554b232 100644
|
|
||||||
--- a/src/util/virpci.c
|
|
||||||
+++ b/src/util/virpci.c
|
|
||||||
@@ -228,7 +228,7 @@ virPCIFile(const char *device, const char *file)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
-/* virPCIDeviceGetDriverPathAndName - put the path to the driver
|
|
||||||
+/* virPCIDeviceGetCurrentDriverPathAndName - put the path to the driver
|
|
||||||
* directory of the driver in use for this device in @path and the
|
|
||||||
* name of the driver in @name. Both could be NULL if it's not bound
|
|
||||||
* to any driver.
|
|
||||||
@@ -236,7 +236,9 @@ virPCIFile(const char *device, const char *file)
|
|
||||||
* Return 0 for success, -1 for error.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
-virPCIDeviceGetDriverPathAndName(virPCIDevice *dev, char **path, char **name)
|
|
||||||
+virPCIDeviceGetCurrentDriverPathAndName(virPCIDevice *dev,
|
|
||||||
+ char **path,
|
|
||||||
+ char **name)
|
|
||||||
{
|
|
||||||
int ret = -1;
|
|
||||||
g_autofree char *drvlink = NULL;
|
|
||||||
@@ -1032,7 +1034,7 @@ virPCIDeviceReset(virPCIDevice *dev,
|
|
||||||
* reset it whenever appropriate, so doing it ourselves would just
|
|
||||||
* be redundant.
|
|
||||||
*/
|
|
||||||
- if (virPCIDeviceGetDriverPathAndName(dev, &drvPath, &drvName) < 0)
|
|
||||||
+ if (virPCIDeviceGetCurrentDriverPathAndName(dev, &drvPath, &drvName) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if (virPCIStubDriverTypeFromString(drvName) == VIR_PCI_STUB_DRIVER_VFIO) {
|
|
||||||
@@ -1137,7 +1139,7 @@ virPCIDeviceUnbind(virPCIDevice *dev)
|
|
||||||
g_autofree char *drvpath = NULL;
|
|
||||||
g_autofree char *driver = NULL;
|
|
||||||
|
|
||||||
- if (virPCIDeviceGetDriverPathAndName(dev, &drvpath, &driver) < 0)
|
|
||||||
+ if (virPCIDeviceGetCurrentDriverPathAndName(dev, &drvpath, &driver) < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (!driver)
|
|
||||||
diff --git a/src/util/virpci.h b/src/util/virpci.h
|
|
||||||
index f8f98f39de7..19c910202a2 100644
|
|
||||||
--- a/src/util/virpci.h
|
|
||||||
+++ b/src/util/virpci.h
|
|
||||||
@@ -280,9 +280,9 @@ virPCIVPDResource * virPCIDeviceGetVPD(virPCIDevice *dev);
|
|
||||||
|
|
||||||
int virPCIDeviceUnbind(virPCIDevice *dev);
|
|
||||||
int virPCIDeviceRebind(virPCIDevice *dev);
|
|
||||||
-int virPCIDeviceGetDriverPathAndName(virPCIDevice *dev,
|
|
||||||
- char **path,
|
|
||||||
- char **name);
|
|
||||||
+int virPCIDeviceGetCurrentDriverPathAndName(virPCIDevice *dev,
|
|
||||||
+ char **path,
|
|
||||||
+ char **name);
|
|
||||||
|
|
||||||
int virPCIDeviceIsPCIExpress(virPCIDevice *dev);
|
|
||||||
int virPCIDeviceHasPCIExpressLink(virPCIDevice *dev);
|
|
||||||
diff --git a/tests/virpcitest.c b/tests/virpcitest.c
|
|
||||||
index 92cc8c07c6f..d69a1b51183 100644
|
|
||||||
--- a/tests/virpcitest.c
|
|
||||||
+++ b/tests/virpcitest.c
|
|
||||||
@@ -37,7 +37,7 @@ testVirPCIDeviceCheckDriver(virPCIDevice *dev, const char *expected)
|
|
||||||
g_autofree char *path = NULL;
|
|
||||||
g_autofree char *driver = NULL;
|
|
||||||
|
|
||||||
- if (virPCIDeviceGetDriverPathAndName(dev, &path, &driver) < 0)
|
|
||||||
+ if (virPCIDeviceGetCurrentDriverPathAndName(dev, &path, &driver) < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (STRNEQ_NULLABLE(driver, expected)) {
|
|
@ -1,251 +0,0 @@
|
|||||||
From cd2843f5463d93eee00fab31fe259ad1b5b27a27 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Laine Stump <laine@redhat.com>
|
|
||||||
Date: Sat, 8 Jul 2023 22:11:06 -0400
|
|
||||||
Subject: [PATCH] util: use "stubDriverType" instead of just "stubDriver"
|
|
||||||
|
|
||||||
In the past we just kept track of the type of the "stub driver" (the
|
|
||||||
driver that is bound to a device in order to assign it to a
|
|
||||||
guest). The next commit will add a stubDriverName to go along with
|
|
||||||
type, so lets use stubDriverType for the existing enum to make it
|
|
||||||
easier to keep track of whether we're talking about the name or the
|
|
||||||
type.
|
|
||||||
|
|
||||||
Signed-off-by: Laine Stump <laine@redhat.com>
|
|
||||||
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
|
||||||
---
|
|
||||||
src/hypervisor/domain_driver.c | 4 ++--
|
|
||||||
src/hypervisor/virhostdev.c | 8 ++++----
|
|
||||||
src/libvirt_private.syms | 4 ++--
|
|
||||||
src/util/virnvme.c | 2 +-
|
|
||||||
src/util/virpci.c | 23 ++++++++++++-----------
|
|
||||||
src/util/virpci.h | 6 +++---
|
|
||||||
tests/virhostdevtest.c | 2 +-
|
|
||||||
tests/virpcitest.c | 8 ++++----
|
|
||||||
8 files changed, 29 insertions(+), 28 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/hypervisor/domain_driver.c b/src/hypervisor/domain_driver.c
|
|
||||||
index 66e09ffb04f..a70f75f3ae8 100644
|
|
||||||
--- a/src/hypervisor/domain_driver.c
|
|
||||||
+++ b/src/hypervisor/domain_driver.c
|
|
||||||
@@ -505,9 +505,9 @@ virDomainDriverNodeDeviceDetachFlags(virNodeDevicePtr dev,
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (STREQ(driverName, "vfio"))
|
|
||||||
- virPCIDeviceSetStubDriver(pci, VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
+ virPCIDeviceSetStubDriverType(pci, VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
else if (STREQ(driverName, "xen"))
|
|
||||||
- virPCIDeviceSetStubDriver(pci, VIR_PCI_STUB_DRIVER_XEN);
|
|
||||||
+ virPCIDeviceSetStubDriverType(pci, VIR_PCI_STUB_DRIVER_XEN);
|
|
||||||
|
|
||||||
return virHostdevPCINodeDeviceDetach(hostdevMgr, pci);
|
|
||||||
}
|
|
||||||
diff --git a/src/hypervisor/virhostdev.c b/src/hypervisor/virhostdev.c
|
|
||||||
index eac34747836..c437ca9d22d 100644
|
|
||||||
--- a/src/hypervisor/virhostdev.c
|
|
||||||
+++ b/src/hypervisor/virhostdev.c
|
|
||||||
@@ -244,9 +244,9 @@ virHostdevGetPCIHostDevice(const virDomainHostdevDef *hostdev,
|
|
||||||
virPCIDeviceSetManaged(actual, hostdev->managed);
|
|
||||||
|
|
||||||
if (pcisrc->backend == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO) {
|
|
||||||
- virPCIDeviceSetStubDriver(actual, VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
+ virPCIDeviceSetStubDriverType(actual, VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
} else if (pcisrc->backend == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_XEN) {
|
|
||||||
- virPCIDeviceSetStubDriver(actual, VIR_PCI_STUB_DRIVER_XEN);
|
|
||||||
+ virPCIDeviceSetStubDriverType(actual, VIR_PCI_STUB_DRIVER_XEN);
|
|
||||||
} else {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
|
||||||
_("pci backend driver '%1$s' is not supported"),
|
|
||||||
@@ -679,7 +679,7 @@ virHostdevPreparePCIDevicesImpl(virHostdevManager *mgr,
|
|
||||||
for (i = 0; i < virPCIDeviceListCount(pcidevs); i++) {
|
|
||||||
virPCIDevice *pci = virPCIDeviceListGet(pcidevs, i);
|
|
||||||
bool strict_acs_check = !!(flags & VIR_HOSTDEV_STRICT_ACS_CHECK);
|
|
||||||
- bool usesVFIO = (virPCIDeviceGetStubDriver(pci) == VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
+ bool usesVFIO = (virPCIDeviceGetStubDriverType(pci) == VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
struct virHostdevIsPCINodeDeviceUsedData data = {mgr, drv_name, dom_name, false};
|
|
||||||
int hdrType = -1;
|
|
||||||
|
|
||||||
@@ -776,7 +776,7 @@ virHostdevPreparePCIDevicesImpl(virHostdevManager *mgr,
|
|
||||||
|
|
||||||
/* The device is bound to a known stub driver: store this
|
|
||||||
* information and add a copy to the inactive list */
|
|
||||||
- virPCIDeviceSetStubDriver(pci, stub);
|
|
||||||
+ virPCIDeviceSetStubDriverType(pci, stub);
|
|
||||||
|
|
||||||
VIR_DEBUG("Adding PCI device %s to inactive list",
|
|
||||||
virPCIDeviceGetName(pci));
|
|
||||||
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
|
|
||||||
index 00cf32d49e8..190bebdd625 100644
|
|
||||||
--- a/src/libvirt_private.syms
|
|
||||||
+++ b/src/libvirt_private.syms
|
|
||||||
@@ -3082,7 +3082,7 @@ virPCIDeviceGetManaged;
|
|
||||||
virPCIDeviceGetName;
|
|
||||||
virPCIDeviceGetRemoveSlot;
|
|
||||||
virPCIDeviceGetReprobe;
|
|
||||||
-virPCIDeviceGetStubDriver;
|
|
||||||
+virPCIDeviceGetStubDriverType;
|
|
||||||
virPCIDeviceGetUnbindFromStub;
|
|
||||||
virPCIDeviceGetUsedBy;
|
|
||||||
virPCIDeviceGetVPD;
|
|
||||||
@@ -3108,7 +3108,7 @@ virPCIDeviceReset;
|
|
||||||
virPCIDeviceSetManaged;
|
|
||||||
virPCIDeviceSetRemoveSlot;
|
|
||||||
virPCIDeviceSetReprobe;
|
|
||||||
-virPCIDeviceSetStubDriver;
|
|
||||||
+virPCIDeviceSetStubDriverType;
|
|
||||||
virPCIDeviceSetUnbindFromStub;
|
|
||||||
virPCIDeviceSetUsedBy;
|
|
||||||
virPCIDeviceUnbind;
|
|
||||||
diff --git a/src/util/virnvme.c b/src/util/virnvme.c
|
|
||||||
index f7f8dc5ea91..37333d515b4 100644
|
|
||||||
--- a/src/util/virnvme.c
|
|
||||||
+++ b/src/util/virnvme.c
|
|
||||||
@@ -292,7 +292,7 @@ virNVMeDeviceCreatePCIDevice(const virNVMeDevice *nvme)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
/* NVMe devices must be bound to vfio */
|
|
||||||
- virPCIDeviceSetStubDriver(pci, VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
+ virPCIDeviceSetStubDriverType(pci, VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
virPCIDeviceSetManaged(pci, nvme->managed);
|
|
||||||
|
|
||||||
return g_steal_pointer(&pci);
|
|
||||||
diff --git a/src/util/virpci.c b/src/util/virpci.c
|
|
||||||
index cc2b07bbba0..d86a81c2b1d 100644
|
|
||||||
--- a/src/util/virpci.c
|
|
||||||
+++ b/src/util/virpci.c
|
|
||||||
@@ -87,7 +87,7 @@ struct _virPCIDevice {
|
|
||||||
|
|
||||||
bool managed;
|
|
||||||
|
|
||||||
- virPCIStubDriver stubDriver;
|
|
||||||
+ virPCIStubDriver stubDriverType;
|
|
||||||
|
|
||||||
/* used by reattach function */
|
|
||||||
bool unbind_from_stub;
|
|
||||||
@@ -1233,12 +1233,12 @@ virPCIDeviceBindToStub(virPCIDevice *dev)
|
|
||||||
g_autofree char *driverLink = NULL;
|
|
||||||
|
|
||||||
/* Check the device is configured to use one of the known stub drivers */
|
|
||||||
- if (dev->stubDriver == VIR_PCI_STUB_DRIVER_NONE) {
|
|
||||||
+ if (dev->stubDriverType == VIR_PCI_STUB_DRIVER_NONE) {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
||||||
_("No stub driver configured for PCI device %1$s"),
|
|
||||||
dev->name);
|
|
||||||
return -1;
|
|
||||||
- } else if (!(stubDriverName = virPCIStubDriverTypeToString(dev->stubDriver))) {
|
|
||||||
+ } else if (!(stubDriverName = virPCIStubDriverTypeToString(dev->stubDriverType))) {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
||||||
_("Unknown stub driver configured for PCI device %1$s"),
|
|
||||||
dev->name);
|
|
||||||
@@ -1267,9 +1267,10 @@ virPCIDeviceBindToStub(virPCIDevice *dev)
|
|
||||||
/* virPCIDeviceDetach:
|
|
||||||
*
|
|
||||||
* Detach this device from the host driver, attach it to the stub
|
|
||||||
- * driver (previously set with virPCIDeviceSetStubDriver(), and add *a
|
|
||||||
- * copy* of the object to the inactiveDevs list (if provided). This
|
|
||||||
- * function will *never* consume dev, so the caller should free it.
|
|
||||||
+ * driver (previously set with virPCIDeviceSetStubDriverType(), and
|
|
||||||
+ * add *a copy* of the object to the inactiveDevs list (if provided).
|
|
||||||
+ * This function will *never* consume dev, so the caller should free
|
|
||||||
+ * it.
|
|
||||||
*
|
|
||||||
* Returns 0 on success, -1 on failure (will fail if the device is
|
|
||||||
* already in the activeDevs list, but will be a NOP if the device is
|
|
||||||
@@ -1287,7 +1288,7 @@ virPCIDeviceDetach(virPCIDevice *dev,
|
|
||||||
virPCIDeviceList *activeDevs,
|
|
||||||
virPCIDeviceList *inactiveDevs)
|
|
||||||
{
|
|
||||||
- if (virPCIProbeStubDriver(dev->stubDriver) < 0)
|
|
||||||
+ if (virPCIProbeStubDriver(dev->stubDriverType) < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (activeDevs && virPCIDeviceListFind(activeDevs, &dev->address)) {
|
|
||||||
@@ -1569,15 +1570,15 @@ virPCIDeviceGetManaged(virPCIDevice *dev)
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
-virPCIDeviceSetStubDriver(virPCIDevice *dev, virPCIStubDriver driver)
|
|
||||||
+virPCIDeviceSetStubDriverType(virPCIDevice *dev, virPCIStubDriver driverType)
|
|
||||||
{
|
|
||||||
- dev->stubDriver = driver;
|
|
||||||
+ dev->stubDriverType = driverType;
|
|
||||||
}
|
|
||||||
|
|
||||||
virPCIStubDriver
|
|
||||||
-virPCIDeviceGetStubDriver(virPCIDevice *dev)
|
|
||||||
+virPCIDeviceGetStubDriverType(virPCIDevice *dev)
|
|
||||||
{
|
|
||||||
- return dev->stubDriver;
|
|
||||||
+ return dev->stubDriverType;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool
|
|
||||||
diff --git a/src/util/virpci.h b/src/util/virpci.h
|
|
||||||
index 4d9193f24e5..485f535bc91 100644
|
|
||||||
--- a/src/util/virpci.h
|
|
||||||
+++ b/src/util/virpci.h
|
|
||||||
@@ -134,9 +134,9 @@ int virPCIDeviceReset(virPCIDevice *dev,
|
|
||||||
void virPCIDeviceSetManaged(virPCIDevice *dev,
|
|
||||||
bool managed);
|
|
||||||
bool virPCIDeviceGetManaged(virPCIDevice *dev);
|
|
||||||
-void virPCIDeviceSetStubDriver(virPCIDevice *dev,
|
|
||||||
- virPCIStubDriver driver);
|
|
||||||
-virPCIStubDriver virPCIDeviceGetStubDriver(virPCIDevice *dev);
|
|
||||||
+void virPCIDeviceSetStubDriverType(virPCIDevice *dev,
|
|
||||||
+ virPCIStubDriver driverType);
|
|
||||||
+virPCIStubDriver virPCIDeviceGetStubDriverType(virPCIDevice *dev);
|
|
||||||
virPCIDeviceAddress *virPCIDeviceGetAddress(virPCIDevice *dev);
|
|
||||||
int virPCIDeviceSetUsedBy(virPCIDevice *dev,
|
|
||||||
const char *drv_name,
|
|
||||||
diff --git a/tests/virhostdevtest.c b/tests/virhostdevtest.c
|
|
||||||
index ee0d1c1e6b8..04e6c009081 100644
|
|
||||||
--- a/tests/virhostdevtest.c
|
|
||||||
+++ b/tests/virhostdevtest.c
|
|
||||||
@@ -142,7 +142,7 @@ myInit(void)
|
|
||||||
if (!(dev[i] = virPCIDeviceNew(&subsys->u.pci.addr)))
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
- virPCIDeviceSetStubDriver(dev[i], VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
+ virPCIDeviceSetStubDriverType(dev[i], VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < ndisks; i++) {
|
|
||||||
diff --git a/tests/virpcitest.c b/tests/virpcitest.c
|
|
||||||
index 769175d7c46..92cc8c07c6f 100644
|
|
||||||
--- a/tests/virpcitest.c
|
|
||||||
+++ b/tests/virpcitest.c
|
|
||||||
@@ -107,7 +107,7 @@ testVirPCIDeviceDetach(const void *opaque G_GNUC_UNUSED)
|
|
||||||
if (!(dev[i] = virPCIDeviceNew(&devAddr)))
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
- virPCIDeviceSetStubDriver(dev[i], VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
+ virPCIDeviceSetStubDriverType(dev[i], VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
|
|
||||||
if (virPCIDeviceDetach(dev[i], activeDevs, inactiveDevs) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
@@ -149,7 +149,7 @@ testVirPCIDeviceReset(const void *opaque G_GNUC_UNUSED)
|
|
||||||
if (!(dev[i] = virPCIDeviceNew(&devAddr)))
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
- virPCIDeviceSetStubDriver(dev[i], VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
+ virPCIDeviceSetStubDriverType(dev[i], VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
|
|
||||||
if (virPCIDeviceReset(dev[i], activeDevs, inactiveDevs) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
@@ -190,7 +190,7 @@ testVirPCIDeviceReattach(const void *opaque G_GNUC_UNUSED)
|
|
||||||
CHECK_LIST_COUNT(activeDevs, 0);
|
|
||||||
CHECK_LIST_COUNT(inactiveDevs, i + 1);
|
|
||||||
|
|
||||||
- virPCIDeviceSetStubDriver(dev[i], VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
+ virPCIDeviceSetStubDriverType(dev[i], VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
}
|
|
||||||
|
|
||||||
CHECK_LIST_COUNT(activeDevs, 0);
|
|
||||||
@@ -249,7 +249,7 @@ testVirPCIDeviceDetachSingle(const void *opaque)
|
|
||||||
if (!dev)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
- virPCIDeviceSetStubDriver(dev, VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
+ virPCIDeviceSetStubDriverType(dev, VIR_PCI_STUB_DRIVER_VFIO);
|
|
||||||
|
|
||||||
if (virPCIDeviceDetach(dev, NULL, NULL) < 0)
|
|
||||||
goto cleanup;
|
|
@ -0,0 +1,77 @@
|
|||||||
|
From 909564c3652d6f6fb5b68ebc5830c6cb524ac713 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Mon, 11 Mar 2024 15:34:37 +0100
|
||||||
|
Subject: [PATCH] qemu: domain: Check arch in qemuDomainMakeCPUMigratable
|
||||||
|
|
||||||
|
The content is arch specific and checking for Icelake-Server CPU model
|
||||||
|
on non-x86 architectures does not make sense.
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_domain.c | 14 ++++++++++----
|
||||||
|
src/qemu/qemu_domain.h | 3 ++-
|
||||||
|
src/qemu/qemu_migration_cookie.c | 2 +-
|
||||||
|
3 files changed, 13 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
|
||||||
|
index 8c85446c3de..31a6509166d 100644
|
||||||
|
--- a/src/qemu/qemu_domain.c
|
||||||
|
+++ b/src/qemu/qemu_domain.c
|
||||||
|
@@ -6588,10 +6588,15 @@ qemuDomainDefCopy(virQEMUDriver *driver,
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
-qemuDomainMakeCPUMigratable(virCPUDef *cpu)
|
||||||
|
+qemuDomainMakeCPUMigratable(virArch arch,
|
||||||
|
+ virCPUDef *cpu)
|
||||||
|
{
|
||||||
|
- if (cpu->mode == VIR_CPU_MODE_CUSTOM &&
|
||||||
|
- STREQ_NULLABLE(cpu->model, "Icelake-Server")) {
|
||||||
|
+ if (cpu->mode != VIR_CPU_MODE_CUSTOM ||
|
||||||
|
+ !cpu->model ||
|
||||||
|
+ !ARCH_IS_X86(arch))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ if (STREQ(cpu->model, "Icelake-Server")) {
|
||||||
|
/* Originally Icelake-Server CPU model contained pconfig CPU feature.
|
||||||
|
* It was never actually enabled and thus it was removed. To enable
|
||||||
|
* migration to QEMU 3.1.0 (with both new and old libvirt), we
|
||||||
|
@@ -6781,7 +6786,8 @@ qemuDomainDefFormatBufInternal(virQEMUDriver *driver,
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (def->cpu && qemuDomainMakeCPUMigratable(def->cpu) < 0)
|
||||||
|
+ if (def->cpu &&
|
||||||
|
+ qemuDomainMakeCPUMigratable(def->os.arch, def->cpu) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
/* Old libvirt doesn't understand <audio> elements so
|
||||||
|
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
|
||||||
|
index 98c188cc8f6..07b03182587 100644
|
||||||
|
--- a/src/qemu/qemu_domain.h
|
||||||
|
+++ b/src/qemu/qemu_domain.h
|
||||||
|
@@ -1045,7 +1045,8 @@ qemuDomainSupportsCheckpointsBlockjobs(virDomainObj *vm)
|
||||||
|
G_GNUC_WARN_UNUSED_RESULT;
|
||||||
|
|
||||||
|
int
|
||||||
|
-qemuDomainMakeCPUMigratable(virCPUDef *cpu);
|
||||||
|
+qemuDomainMakeCPUMigratable(virArch arch,
|
||||||
|
+ virCPUDef *cpu);
|
||||||
|
|
||||||
|
int
|
||||||
|
qemuDomainInitializePflashStorageSource(virDomainObj *vm,
|
||||||
|
diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_cookie.c
|
||||||
|
index 4361949cca4..c53d42a0184 100644
|
||||||
|
--- a/src/qemu/qemu_migration_cookie.c
|
||||||
|
+++ b/src/qemu/qemu_migration_cookie.c
|
||||||
|
@@ -545,7 +545,7 @@ qemuMigrationCookieAddCPU(qemuMigrationCookie *mig,
|
||||||
|
|
||||||
|
mig->cpu = virCPUDefCopy(vm->def->cpu);
|
||||||
|
|
||||||
|
- if (qemuDomainMakeCPUMigratable(mig->cpu) < 0)
|
||||||
|
+ if (qemuDomainMakeCPUMigratable(vm->def->os.arch, mig->cpu) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
mig->flags |= QEMU_MIGRATION_COOKIE_CPU;
|
@ -0,0 +1,146 @@
|
|||||||
|
From 14d3517410021d59cb53fb4c841a5d9922e814d1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Date: Mon, 11 Mar 2024 17:04:48 +0100
|
||||||
|
Subject: [PATCH] qemu: domain: Drop added features from migratable CPU
|
||||||
|
|
||||||
|
Features marked with added='yes' in CPU model definitions have to be
|
||||||
|
removed before migration, otherwise older libvirt would complain about
|
||||||
|
unknown CPU features. We only do this for features that were enabled for
|
||||||
|
a given CPU model even with older libvirt, which just ignored the
|
||||||
|
features. And only for features we added ourselves when updating CPU
|
||||||
|
definition during domain startup, that is we do not remove features
|
||||||
|
which were explicitly mentioned by a user.
|
||||||
|
|
||||||
|
That said, this is not the safest thing we could do, but it's
|
||||||
|
effectively the same thing we did before the affected features were
|
||||||
|
added: we ignored them completely on both sides of migration.
|
||||||
|
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||||||
|
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_domain.c | 50 ++++++++++++++++++++++++++++++--
|
||||||
|
src/qemu/qemu_domain.h | 3 +-
|
||||||
|
src/qemu/qemu_migration_cookie.c | 5 +++-
|
||||||
|
3 files changed, 54 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
|
||||||
|
index 31a6509166d..bc6cf133d4c 100644
|
||||||
|
--- a/src/qemu/qemu_domain.c
|
||||||
|
+++ b/src/qemu/qemu_domain.c
|
||||||
|
@@ -66,6 +66,7 @@
|
||||||
|
#include "backup_conf.h"
|
||||||
|
#include "virutil.h"
|
||||||
|
#include "virsecureerase.h"
|
||||||
|
+#include "cpu/cpu_x86.h"
|
||||||
|
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
@@ -6587,10 +6588,36 @@ qemuDomainDefCopy(virQEMUDriver *driver,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
+typedef struct {
|
||||||
|
+ const char * const *added;
|
||||||
|
+ GStrv keep;
|
||||||
|
+} qemuDomainDropAddedCPUFeaturesData;
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+static bool
|
||||||
|
+qemuDomainDropAddedCPUFeatures(const char *name,
|
||||||
|
+ virCPUFeaturePolicy policy G_GNUC_UNUSED,
|
||||||
|
+ void *opaque)
|
||||||
|
+{
|
||||||
|
+ qemuDomainDropAddedCPUFeaturesData *data = opaque;
|
||||||
|
+
|
||||||
|
+ if (!g_strv_contains(data->added, name))
|
||||||
|
+ return true;
|
||||||
|
+
|
||||||
|
+ if (data->keep && g_strv_contains((const char **) data->keep, name))
|
||||||
|
+ return true;
|
||||||
|
+
|
||||||
|
+ return false;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
int
|
||||||
|
qemuDomainMakeCPUMigratable(virArch arch,
|
||||||
|
- virCPUDef *cpu)
|
||||||
|
+ virCPUDef *cpu,
|
||||||
|
+ virCPUDef *origCPU)
|
||||||
|
{
|
||||||
|
+ qemuDomainDropAddedCPUFeaturesData data = { 0 };
|
||||||
|
+
|
||||||
|
if (cpu->mode != VIR_CPU_MODE_CUSTOM ||
|
||||||
|
!cpu->model ||
|
||||||
|
!ARCH_IS_X86(arch))
|
||||||
|
@@ -6608,6 +6635,25 @@ qemuDomainMakeCPUMigratable(virArch arch,
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (virCPUx86GetAddedFeatures(cpu->model, &data.added) < 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ /* Drop features marked as added in a cpu model, but only
|
||||||
|
+ * when they are not mentioned in origCPU, i.e., when they were not
|
||||||
|
+ * explicitly mentioned by the user.
|
||||||
|
+ */
|
||||||
|
+ if (data.added) {
|
||||||
|
+ g_auto(GStrv) keep = NULL;
|
||||||
|
+
|
||||||
|
+ if (origCPU) {
|
||||||
|
+ keep = virCPUDefListExplicitFeatures(origCPU);
|
||||||
|
+ data.keep = keep;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (virCPUDefFilterFeatures(cpu, qemuDomainDropAddedCPUFeatures, &data) < 0)
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -6787,7 +6833,7 @@ qemuDomainDefFormatBufInternal(virQEMUDriver *driver,
|
||||||
|
}
|
||||||
|
|
||||||
|
if (def->cpu &&
|
||||||
|
- qemuDomainMakeCPUMigratable(def->os.arch, def->cpu) < 0)
|
||||||
|
+ qemuDomainMakeCPUMigratable(def->os.arch, def->cpu, origCPU) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
/* Old libvirt doesn't understand <audio> elements so
|
||||||
|
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
|
||||||
|
index 07b03182587..626df6338f1 100644
|
||||||
|
--- a/src/qemu/qemu_domain.h
|
||||||
|
+++ b/src/qemu/qemu_domain.h
|
||||||
|
@@ -1046,7 +1046,8 @@ qemuDomainSupportsCheckpointsBlockjobs(virDomainObj *vm)
|
||||||
|
|
||||||
|
int
|
||||||
|
qemuDomainMakeCPUMigratable(virArch arch,
|
||||||
|
- virCPUDef *cpu);
|
||||||
|
+ virCPUDef *cpu,
|
||||||
|
+ virCPUDef *origCPU);
|
||||||
|
|
||||||
|
int
|
||||||
|
qemuDomainInitializePflashStorageSource(virDomainObj *vm,
|
||||||
|
diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_cookie.c
|
||||||
|
index c53d42a0184..90cc079c1a2 100644
|
||||||
|
--- a/src/qemu/qemu_migration_cookie.c
|
||||||
|
+++ b/src/qemu/qemu_migration_cookie.c
|
||||||
|
@@ -540,12 +540,15 @@ static int
|
||||||
|
qemuMigrationCookieAddCPU(qemuMigrationCookie *mig,
|
||||||
|
virDomainObj *vm)
|
||||||
|
{
|
||||||
|
+ qemuDomainObjPrivate *priv = vm->privateData;
|
||||||
|
+
|
||||||
|
if (mig->cpu)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
mig->cpu = virCPUDefCopy(vm->def->cpu);
|
||||||
|
|
||||||
|
- if (qemuDomainMakeCPUMigratable(vm->def->os.arch, mig->cpu) < 0)
|
||||||
|
+ if (qemuDomainMakeCPUMigratable(vm->def->os.arch, mig->cpu,
|
||||||
|
+ priv->origCPU) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
mig->flags |= QEMU_MIGRATION_COOKIE_CPU;
|
@ -0,0 +1,34 @@
|
|||||||
|
From a9da0092198ba2f278cea370f8251f2e29f57c7d Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@redhat.com>
|
||||||
|
Date: Tue, 5 Mar 2024 14:55:26 +0100
|
||||||
|
Subject: [PATCH] qemu: virtiofs: do not crash if cgroups are missing
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
On domain startup, qemuSetupCgroupForExtDevices checks
|
||||||
|
if a cgroup controller is present and skips the setup if not.
|
||||||
|
|
||||||
|
Add a similar check to qemuVirtioFSSetupCgroup to prevent
|
||||||
|
crashing when hotplugging a virtiofs filesystem.
|
||||||
|
|
||||||
|
Signed-off-by: Ján Tomko <jtomko@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_virtiofs.c | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_virtiofs.c b/src/qemu/qemu_virtiofs.c
|
||||||
|
index d539d0a192e..15dea3bb57f 100644
|
||||||
|
--- a/src/qemu/qemu_virtiofs.c
|
||||||
|
+++ b/src/qemu/qemu_virtiofs.c
|
||||||
|
@@ -353,6 +353,9 @@ qemuVirtioFSSetupCgroup(virDomainObj *vm,
|
||||||
|
pid_t pid = -1;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
+ if (!cgroup)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
if (!(pidfile = qemuVirtioFSCreatePidFilename(vm, fs->info.alias)))
|
||||||
|
return -1;
|
||||||
|
|
@ -0,0 +1,29 @@
|
|||||||
|
From c9de7a1c3bca9f0732205f2c2b84526781dbf5e5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@redhat.com>
|
||||||
|
Date: Thu, 7 Mar 2024 13:36:45 +0100
|
||||||
|
Subject: [PATCH] qemu: virtiofs: error out if getting the group or user name
|
||||||
|
fails
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Signed-off-by: Ján Tomko <jtomko@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_virtiofs.c | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_virtiofs.c b/src/qemu/qemu_virtiofs.c
|
||||||
|
index d80cddd3ba9..78897d81778 100644
|
||||||
|
--- a/src/qemu/qemu_virtiofs.c
|
||||||
|
+++ b/src/qemu/qemu_virtiofs.c
|
||||||
|
@@ -388,6 +388,9 @@ qemuVirtioFSPrepareIdMap(virDomainFSDef *fs)
|
||||||
|
username = virGetUserName(euid);
|
||||||
|
groupname = virGetGroupName(egid);
|
||||||
|
|
||||||
|
+ if (!username || !groupname)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
fs->idmap.uidmap = g_new0(virDomainIdMapEntry, 2);
|
||||||
|
fs->idmap.gidmap = g_new0(virDomainIdMapEntry, 2);
|
||||||
|
|
@ -0,0 +1,31 @@
|
|||||||
|
From 4c5b2e1e0d0d0cbbf8c6ed28ce77d055d5974f7f Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@redhat.com>
|
||||||
|
Date: Wed, 6 Mar 2024 17:26:40 +0100
|
||||||
|
Subject: [PATCH] qemu: virtiofs: set correct label when creating the socket
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Use svirt_t instead of virtd_t, since virtd_t is not available in the
|
||||||
|
session mode and qemu with svirt_t won't be able to talk to unconfined_t
|
||||||
|
socket.
|
||||||
|
|
||||||
|
Signed-off-by: Ján Tomko <jtomko@redhat.com>
|
||||||
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_virtiofs.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_virtiofs.c b/src/qemu/qemu_virtiofs.c
|
||||||
|
index 15dea3bb57f..d80cddd3ba9 100644
|
||||||
|
--- a/src/qemu/qemu_virtiofs.c
|
||||||
|
+++ b/src/qemu/qemu_virtiofs.c
|
||||||
|
@@ -102,7 +102,7 @@ qemuVirtioFSOpenChardev(virQEMUDriver *driver,
|
||||||
|
chrdev->data.nix.listen = true;
|
||||||
|
chrdev->data.nix.path = g_strdup(socket_path);
|
||||||
|
|
||||||
|
- if (qemuSecuritySetDaemonSocketLabel(driver->securityManager, vm->def) < 0)
|
||||||
|
+ if (qemuSecuritySetSocketLabel(driver->securityManager, vm->def) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
fd = qemuOpenChrChardevUNIXSocket(chrdev);
|
||||||
|
if (fd < 0) {
|
@ -1,31 +0,0 @@
|
|||||||
From edaa1112ffef253013dcc3318794cebfaa2a6cb7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Mon, 29 Jan 2024 16:12:09 +0100
|
|
||||||
Subject: [PATCH] schema: nodedev: Adjust allowed characters in
|
|
||||||
'vpdFieldValueFormat'
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
The check in 'virPCIVPDResourceIsValidTextValue' allows any printable
|
|
||||||
characters, thus the XML schema should do the same.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
||||||
---
|
|
||||||
src/conf/schemas/nodedev.rng | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/conf/schemas/nodedev.rng b/src/conf/schemas/nodedev.rng
|
|
||||||
index fba40217540..ff073139681 100644
|
|
||||||
--- a/src/conf/schemas/nodedev.rng
|
|
||||||
+++ b/src/conf/schemas/nodedev.rng
|
|
||||||
@@ -869,7 +869,7 @@
|
|
||||||
|
|
||||||
<define name="vpdFieldValueFormat">
|
|
||||||
<data type="string">
|
|
||||||
- <param name="pattern">[0-9a-zA-F -_,.:;=]{0,255}</param>
|
|
||||||
+ <param name="pattern">.{0,255}</param>
|
|
||||||
</data>
|
|
||||||
</define>
|
|
||||||
|
|
@ -1,80 +0,0 @@
|
|||||||
From 9eda33161f49fcf3ba07d648bd80d2a9a2388479 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Tue, 23 Jan 2024 16:40:34 +0100
|
|
||||||
Subject: [PATCH] tests: Test the previously mishandled PCI VPD characters
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
Modify the test data to validate '<>' and other characters.
|
|
||||||
Unfortunately the test suite doesn't have a proper end-to-end test, thus
|
|
||||||
we just add a XML->XML variant and also add data to the binary parser.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
||||||
---
|
|
||||||
tests/nodedevschemadata/pci_0000_42_00_0_vpd.xml | 4 ++--
|
|
||||||
tests/virpcimock.c | 4 ++--
|
|
||||||
tests/virpcivpdtest.c | 4 ++--
|
|
||||||
3 files changed, 6 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/tests/nodedevschemadata/pci_0000_42_00_0_vpd.xml b/tests/nodedevschemadata/pci_0000_42_00_0_vpd.xml
|
|
||||||
index 8b56e4f6b41..c9a2901381a 100644
|
|
||||||
--- a/tests/nodedevschemadata/pci_0000_42_00_0_vpd.xml
|
|
||||||
+++ b/tests/nodedevschemadata/pci_0000_42_00_0_vpd.xml
|
|
||||||
@@ -15,7 +15,7 @@
|
|
||||||
<change_level>B1</change_level>
|
|
||||||
<manufacture_id>foobar</manufacture_id>
|
|
||||||
<part_number>MBF2H332A-AEEOT</part_number>
|
|
||||||
- <serial_number>MT2113X00000</serial_number>
|
|
||||||
+ <serial_number>MT2113X00000><</serial_number>
|
|
||||||
<vendor_field index='0'>PCIeGen4 x8</vendor_field>
|
|
||||||
<vendor_field index='2'>MBF2H332A-AEEOT</vendor_field>
|
|
||||||
<vendor_field index='3'>3c53d07eec484d8aab34dabd24fe575aa</vendor_field>
|
|
||||||
@@ -25,7 +25,7 @@
|
|
||||||
<asset_tag>fooasset</asset_tag>
|
|
||||||
<vendor_field index='0'>vendorfield0</vendor_field>
|
|
||||||
<vendor_field index='2'>vendorfield2</vendor_field>
|
|
||||||
- <vendor_field index='A'>vendorfieldA</vendor_field>
|
|
||||||
+ <vendor_field index='A'>!@#$./><</vendor_field>
|
|
||||||
<system_field index='B'>systemfieldB</system_field>
|
|
||||||
<system_field index='0'>systemfield0</system_field>
|
|
||||||
</fields>
|
|
||||||
diff --git a/tests/virpcimock.c b/tests/virpcimock.c
|
|
||||||
index 13b37bb23d4..2f98b0cf13e 100644
|
|
||||||
--- a/tests/virpcimock.c
|
|
||||||
+++ b/tests/virpcimock.c
|
|
||||||
@@ -957,9 +957,9 @@ init_env(void)
|
|
||||||
't', 'e', 's', 't', 'n', 'a', 'm', 'e',
|
|
||||||
PCI_VPD_LARGE_RESOURCE_FLAG | PCI_VPD_READ_ONLY_LARGE_RESOURCE_FLAG, 0x16, 0x00,
|
|
||||||
'P', 'N', 0x02, '4', '2',
|
|
||||||
- 'E', 'C', 0x04, '4', '2', '4', '2',
|
|
||||||
+ 'E', 'C', 0x04, '4', '<', '>', '2',
|
|
||||||
'V', 'A', 0x02, 'E', 'X',
|
|
||||||
- 'R', 'V', 0x02, 0x31, 0x00,
|
|
||||||
+ 'R', 'V', 0x02, 0x1D, 0x00,
|
|
||||||
PCI_VPD_RESOURCE_END_VAL
|
|
||||||
};
|
|
||||||
struct pciVPD exampleVPD = {
|
|
||||||
diff --git a/tests/virpcivpdtest.c b/tests/virpcivpdtest.c
|
|
||||||
index b4dd68b7aa8..ae5772d3f56 100644
|
|
||||||
--- a/tests/virpcivpdtest.c
|
|
||||||
+++ b/tests/virpcivpdtest.c
|
|
||||||
@@ -424,7 +424,7 @@ testPCIVPDGetFieldValueFormat(const void *data G_GNUC_UNUSED)
|
|
||||||
|
|
||||||
# define VPD_W_EXAMPLE_FIELDS \
|
|
||||||
'V', 'Z', 0x02, '4', '2', \
|
|
||||||
- 'Y', 'A', 0x04, 'I', 'D', '4', '2', \
|
|
||||||
+ 'Y', 'A', 0x04, '!', '<', '>', ':', \
|
|
||||||
'Y', 'F', 0x02, 'E', 'X', \
|
|
||||||
'Y', 'E', 0x00, \
|
|
||||||
'R', 'W', 0x02, 0x00, 0x00
|
|
||||||
@@ -579,7 +579,7 @@ testVirPCIVPDParseFullVPD(const void *opaque G_GNUC_UNUSED)
|
|
||||||
if (testVirPCIVPDValidateExampleReadOnlyFields(res))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
- if (STRNEQ_NULLABLE(res->rw->asset_tag, "ID42"))
|
|
||||||
+ if (STRNEQ_NULLABLE(res->rw->asset_tag, "!<>:"))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (!res->rw->vendor_specific)
|
|
@ -1,54 +0,0 @@
|
|||||||
From eb3844009dc3bdd50274954618b8cd9962218317 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Wed, 24 Jan 2024 15:53:39 +0100
|
|
||||||
Subject: [PATCH] util: pcivpd: Refactor virPCIVPDResourceIsValidTextValue
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
The function is never called with NULL argument. Remove the check and
|
|
||||||
refactor the rest including the debug statement.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
||||||
---
|
|
||||||
src/util/virpcivpd.c | 23 +++++++++--------------
|
|
||||||
1 file changed, 9 insertions(+), 14 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/util/virpcivpd.c b/src/util/virpcivpd.c
|
|
||||||
index 248a9b2790e..81c7c317b34 100644
|
|
||||||
--- a/src/util/virpcivpd.c
|
|
||||||
+++ b/src/util/virpcivpd.c
|
|
||||||
@@ -175,23 +175,18 @@ virPCIVPDResourceGetFieldValueFormat(const char *keyword)
|
|
||||||
bool
|
|
||||||
virPCIVPDResourceIsValidTextValue(const char *value)
|
|
||||||
{
|
|
||||||
- size_t i = 0;
|
|
||||||
+ const char *v;
|
|
||||||
+ bool ret = true;
|
|
||||||
|
|
||||||
- if (value == NULL)
|
|
||||||
- return false;
|
|
||||||
-
|
|
||||||
- /* An empty string is a valid value. */
|
|
||||||
- if (STREQ(value, ""))
|
|
||||||
- return true;
|
|
||||||
-
|
|
||||||
- while (i < strlen(value)) {
|
|
||||||
- if (!g_ascii_isprint(value[i])) {
|
|
||||||
- VIR_DEBUG("The provided value contains non-ASCII printable characters: %s", value);
|
|
||||||
- return false;
|
|
||||||
+ for (v = value; *v; v++) {
|
|
||||||
+ if (!g_ascii_isprint(*v)) {
|
|
||||||
+ ret = false;
|
|
||||||
+ break;
|
|
||||||
}
|
|
||||||
- ++i;
|
|
||||||
}
|
|
||||||
- return true;
|
|
||||||
+
|
|
||||||
+ VIR_DEBUG("val='%s' ret='%d'", value, ret);
|
|
||||||
+ return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
@ -1,86 +0,0 @@
|
|||||||
From 2ccac1e42f34404e3a5af22671a31fa1dca94e94 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Tue, 30 Jan 2024 17:11:37 +0100
|
|
||||||
Subject: [PATCH] virNodeDeviceCapVPDFormat: Properly escape system-originated
|
|
||||||
strings
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
Similarly to previous commit other specific fields which come from the
|
|
||||||
system data and aren't sanitized enough to be safe for XML were also
|
|
||||||
formatted via virBufferAsprintf.
|
|
||||||
|
|
||||||
Other static and safe strings used virBufferEscapeString instead of
|
|
||||||
virBufferAddLit.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
||||||
---
|
|
||||||
src/conf/node_device_conf.c | 32 +++++++++++++-------------------
|
|
||||||
1 file changed, 13 insertions(+), 19 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c
|
|
||||||
index 87c046e571d..95de77abe9d 100644
|
|
||||||
--- a/src/conf/node_device_conf.c
|
|
||||||
+++ b/src/conf/node_device_conf.c
|
|
||||||
@@ -270,14 +270,6 @@ virNodeDeviceCapVPDFormatCustomSystemField(virPCIVPDResourceCustom *field, virBu
|
|
||||||
virNodeDeviceCapVPDFormatCustomField(buf, "system_field", field);
|
|
||||||
}
|
|
||||||
|
|
||||||
-static inline void
|
|
||||||
-virNodeDeviceCapVPDFormatRegularField(virBuffer *buf, const char *keyword, const char *value)
|
|
||||||
-{
|
|
||||||
- if (keyword == NULL || value == NULL)
|
|
||||||
- return;
|
|
||||||
-
|
|
||||||
- virBufferAsprintf(buf, "<%s>%s</%s>\n", keyword, value, keyword);
|
|
||||||
-}
|
|
||||||
|
|
||||||
static void
|
|
||||||
virNodeDeviceCapVPDFormat(virBuffer *buf, virPCIVPDResource *res)
|
|
||||||
@@ -290,31 +282,33 @@ virNodeDeviceCapVPDFormat(virBuffer *buf, virPCIVPDResource *res)
|
|
||||||
virBufferEscapeString(buf, "<name>%s</name>\n", res->name);
|
|
||||||
|
|
||||||
if (res->ro != NULL) {
|
|
||||||
- virBufferEscapeString(buf, "<fields access='%s'>\n", "readonly");
|
|
||||||
-
|
|
||||||
+ virBufferAddLit(buf, "<fields access='readonly'>\n");
|
|
||||||
virBufferAdjustIndent(buf, 2);
|
|
||||||
- virNodeDeviceCapVPDFormatRegularField(buf, "change_level", res->ro->change_level);
|
|
||||||
- virNodeDeviceCapVPDFormatRegularField(buf, "manufacture_id", res->ro->manufacture_id);
|
|
||||||
- virNodeDeviceCapVPDFormatRegularField(buf, "part_number", res->ro->part_number);
|
|
||||||
- virNodeDeviceCapVPDFormatRegularField(buf, "serial_number", res->ro->serial_number);
|
|
||||||
+
|
|
||||||
+ virBufferEscapeString(buf, "<change_level>%s</change_level>\n", res->ro->change_level);
|
|
||||||
+ virBufferEscapeString(buf, "<manufacture_id>%s</manufacture_id>\n", res->ro->manufacture_id);
|
|
||||||
+ virBufferEscapeString(buf, "<part_number>%s</part_number>\n", res->ro->part_number);
|
|
||||||
+ virBufferEscapeString(buf, "<serial_number>%s</serial_number>\n", res->ro->serial_number);
|
|
||||||
+
|
|
||||||
g_ptr_array_foreach(res->ro->vendor_specific,
|
|
||||||
(GFunc)virNodeDeviceCapVPDFormatCustomVendorField, buf);
|
|
||||||
- virBufferAdjustIndent(buf, -2);
|
|
||||||
|
|
||||||
+ virBufferAdjustIndent(buf, -2);
|
|
||||||
virBufferAddLit(buf, "</fields>\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (res->rw != NULL) {
|
|
||||||
- virBufferEscapeString(buf, "<fields access='%s'>\n", "readwrite");
|
|
||||||
-
|
|
||||||
+ virBufferAddLit(buf, "<fields access='readwrite'>\n");
|
|
||||||
virBufferAdjustIndent(buf, 2);
|
|
||||||
- virNodeDeviceCapVPDFormatRegularField(buf, "asset_tag", res->rw->asset_tag);
|
|
||||||
+
|
|
||||||
+ virBufferEscapeString(buf, "<asset_tag>%s</asset_tag>\n", res->rw->asset_tag);
|
|
||||||
+
|
|
||||||
g_ptr_array_foreach(res->rw->vendor_specific,
|
|
||||||
(GFunc)virNodeDeviceCapVPDFormatCustomVendorField, buf);
|
|
||||||
g_ptr_array_foreach(res->rw->system_specific,
|
|
||||||
(GFunc)virNodeDeviceCapVPDFormatCustomSystemField, buf);
|
|
||||||
- virBufferAdjustIndent(buf, -2);
|
|
||||||
|
|
||||||
+ virBufferAdjustIndent(buf, -2);
|
|
||||||
virBufferAddLit(buf, "</fields>\n");
|
|
||||||
}
|
|
||||||
|
|
@ -1,72 +0,0 @@
|
|||||||
From 5373b8c02ce44d0284bc9c60b3b7bc12bff2f867 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Mon, 29 Jan 2024 15:15:03 +0100
|
|
||||||
Subject: [PATCH] virNodeDeviceCapVPDFormatCustom*: Escape unsanitized strings
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
The custom field data is taken from PCI device data which can contain
|
|
||||||
any printable characters, and thus must be escaped when putting into
|
|
||||||
XML.
|
|
||||||
|
|
||||||
Originally, based on the comment and XML schema which was fixed in
|
|
||||||
previous commits the idea seemed to be that the parser would validate
|
|
||||||
that only characters which don't break the XML would be present but that
|
|
||||||
didn't seem to materialize.
|
|
||||||
|
|
||||||
Switch to proper escaping of the XML.
|
|
||||||
|
|
||||||
Fixes: 3954378d06a
|
|
||||||
Resolves: https://issues.redhat.com/browse/RHEL-22314
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
||||||
---
|
|
||||||
src/conf/node_device_conf.c | 25 +++++++++++++++++--------
|
|
||||||
1 file changed, 17 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c
|
|
||||||
index 4826be6f423..87c046e571d 100644
|
|
||||||
--- a/src/conf/node_device_conf.c
|
|
||||||
+++ b/src/conf/node_device_conf.c
|
|
||||||
@@ -242,23 +242,32 @@ virNodeDeviceCapMdevTypesFormat(virBuffer *buf,
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
-virNodeDeviceCapVPDFormatCustomVendorField(virPCIVPDResourceCustom *field, virBuffer *buf)
|
|
||||||
+virNodeDeviceCapVPDFormatCustomField(virBuffer *buf,
|
|
||||||
+ const char *fieldtype,
|
|
||||||
+ virPCIVPDResourceCustom *field)
|
|
||||||
{
|
|
||||||
+ g_auto(virBuffer) attrBuf = VIR_BUFFER_INITIALIZER;
|
|
||||||
+ g_auto(virBuffer) content = VIR_BUFFER_INITIALIZER;
|
|
||||||
+
|
|
||||||
if (field == NULL || field->value == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
- virBufferAsprintf(buf, "<vendor_field index='%c'>%s</vendor_field>\n", field->idx,
|
|
||||||
- field->value);
|
|
||||||
+ virBufferAsprintf(&attrBuf, " index='%c'", field->idx);
|
|
||||||
+ virBufferEscapeString(&content, "%s", field->value);
|
|
||||||
+
|
|
||||||
+ virXMLFormatElementInternal(buf, fieldtype, &attrBuf, &content, false, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
-virNodeDeviceCapVPDFormatCustomSystemField(virPCIVPDResourceCustom *field, virBuffer *buf)
|
|
||||||
+virNodeDeviceCapVPDFormatCustomVendorField(virPCIVPDResourceCustom *field, virBuffer *buf)
|
|
||||||
{
|
|
||||||
- if (field == NULL || field->value == NULL)
|
|
||||||
- return;
|
|
||||||
+ virNodeDeviceCapVPDFormatCustomField(buf, "vendor_field", field);
|
|
||||||
+}
|
|
||||||
|
|
||||||
- virBufferAsprintf(buf, "<system_field index='%c'>%s</system_field>\n", field->idx,
|
|
||||||
- field->value);
|
|
||||||
+static void
|
|
||||||
+virNodeDeviceCapVPDFormatCustomSystemField(virPCIVPDResourceCustom *field, virBuffer *buf)
|
|
||||||
+{
|
|
||||||
+ virNodeDeviceCapVPDFormatCustomField(buf, "system_field", field);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void
|
|
@ -1,46 +0,0 @@
|
|||||||
From 42df6cc1b4acc40d05ff6bc8e85587e4faec6cac Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Date: Wed, 24 Jan 2024 15:24:27 +0100
|
|
||||||
Subject: [PATCH] virPCIVPDResourceIsValidTextValue: Adjust comment to reflect
|
|
||||||
actual code
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
The function does not reject '&', '<', '>' contrary to what it actually
|
|
||||||
states. Move and adjust the comment.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
||||||
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
||||||
---
|
|
||||||
src/util/virpcivpd.c | 12 ++++--------
|
|
||||||
1 file changed, 4 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/util/virpcivpd.c b/src/util/virpcivpd.c
|
|
||||||
index 39557c73479..248a9b2790e 100644
|
|
||||||
--- a/src/util/virpcivpd.c
|
|
||||||
+++ b/src/util/virpcivpd.c
|
|
||||||
@@ -167,19 +167,15 @@ virPCIVPDResourceGetFieldValueFormat(const char *keyword)
|
|
||||||
* value or text field value. The expectations are based on the keywords specified
|
|
||||||
* in relevant sections of PCI(e) specifications
|
|
||||||
* ("I.3. VPD Definitions" in PCI specs, "6.28.1 VPD Format" PCIe 4.0).
|
|
||||||
+ *
|
|
||||||
+ * The PCI(e) specs mention alphanumeric characters when talking about text fields
|
|
||||||
+ * and the string resource but also include spaces and dashes in the provided example.
|
|
||||||
+ * Dots, commas, equal signs have also been observed in values used by major device vendors.
|
|
||||||
*/
|
|
||||||
bool
|
|
||||||
virPCIVPDResourceIsValidTextValue(const char *value)
|
|
||||||
{
|
|
||||||
size_t i = 0;
|
|
||||||
- /*
|
|
||||||
- * The PCI(e) specs mention alphanumeric characters when talking about text fields
|
|
||||||
- * and the string resource but also include spaces and dashes in the provided example.
|
|
||||||
- * Dots, commas, equal signs have also been observed in values used by major device vendors.
|
|
||||||
- * The specs do not specify a full set of allowed code points and for Libvirt it is important
|
|
||||||
- * to keep values in the ranges allowed within XML elements (mainly excluding less-than,
|
|
||||||
- * greater-than and ampersand).
|
|
||||||
- */
|
|
||||||
|
|
||||||
if (value == NULL)
|
|
||||||
return false;
|
|
@ -270,7 +270,7 @@
|
|||||||
Summary: Library providing a simple virtualization API
|
Summary: Library providing a simple virtualization API
|
||||||
Name: libvirt
|
Name: libvirt
|
||||||
Version: 10.0.0
|
Version: 10.0.0
|
||||||
Release: 4%{?dist}%{?extra_release}
|
Release: 6%{?dist}%{?extra_release}.alma.1
|
||||||
License: GPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND OFL-1.1
|
License: GPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND OFL-1.1
|
||||||
URL: https://libvirt.org/
|
URL: https://libvirt.org/
|
||||||
|
|
||||||
@ -340,43 +340,52 @@ Patch58: libvirt-qemuMigrationDstPrepareStorage-Properly-consider-path-for-vdpa-
|
|||||||
Patch59: libvirt-domain_validate-Account-for-NVDIMM-label-size-properly-when-checking-for-memory-conflicts.patch
|
Patch59: libvirt-domain_validate-Account-for-NVDIMM-label-size-properly-when-checking-for-memory-conflicts.patch
|
||||||
|
|
||||||
# Patches were taken from:
|
# Patches were taken from:
|
||||||
# https://github.com/libvirt/libvirt/commit/cd2843f5463d93eee00fab31fe259ad1b5b27a27.patch
|
# https://github.com/libvirt/libvirt/commit/5fbfa5ab8a3bf914d2deacd0d281b16aafd593b5.patch
|
||||||
Patch35: libvirt-util-use-stubDriverType-instead-of-just-stubDriver.patch
|
Patch60: cpu-x86-Add-support-for-adding-features-to-existing-CPU-models.patch
|
||||||
# https://github.com/libvirt/libvirt/commit/1bb961797153a92a40a3c517114e4920c65672d4.patch
|
# https://github.com/libvirt/libvirt/commit/909564c3652d6f6fb5b68ebc5830c6cb524ac713.patch
|
||||||
Patch36: libvirt-util-add-stub-driver-name-to-virPCIDevice-object.patch
|
Patch61: qemu-domain-Check-arch-in-qemuDomainMakeCPUMigratable.patch
|
||||||
# https://github.com/libvirt/libvirt/commit/222b66974e8256965c089fb0f244dc1e01f708e7.patch
|
# https://github.com/libvirt/libvirt/commit/577c4ca414b26c8586f2586978e55c948bec0a32.patch
|
||||||
Patch37: libvirt-util-rename-virPCIDeviceGetDriverPathAndName.patch
|
Patch62: conf-cpu-Introduce-virCPUDefListFeatures.patch
|
||||||
# https://github.com/libvirt/libvirt/commit/6ce071f6097d9e96892d5a6c7bd3040f43cc925b.patch
|
# https://github.com/libvirt/libvirt/commit/14d3517410021d59cb53fb4c841a5d9922e814d1.patch
|
||||||
Patch38: libvirt-util-permit-existing-binding-to-VFIO-variant-driver.patch
|
Patch63: qemu-domain-Drop-added-features-from-migratable-CPU.patch
|
||||||
# https://github.com/libvirt/libvirt/commit/2d9c9445b9cc093c870f101eb884ddeac3ae40f7.patch
|
# https://github.com/libvirt/libvirt/commit/ce330dd7e5405573c77801a418345804049315ab.patch
|
||||||
Patch39: libvirt-util-probe-stub-driver-from-within-function-that-binds-to-stub-driver.patch
|
Patch64: libvirt-Add-vmx-features-to-Broadwell.patch
|
||||||
# https://github.com/libvirt/libvirt/commit/928296b044647fd3cbe409db6903afc791863a90.patch
|
# https://github.com/libvirt/libvirt/commit/5db61952252fa2ab88cc79f064f8f1b61b6c95cb.patch
|
||||||
Patch40: libvirt-util-honor-stubDriverName-when-probing.patch
|
Patch65: libvirt-Add-vmx-features-to-Cascadelake.patch
|
||||||
# https://github.com/libvirt/libvirt/commit/24beaffec33efa3fa077d7b8596d97aa9a038a01.patch
|
# https://github.com/libvirt/libvirt/commit/9cb8c372cd75647e09fac96e6995adab5e8dde79.patch
|
||||||
Patch41: libvirt-node_device-support-binding-other-drivers-with-virNodeDevice.patch
|
Patch66: libvirt-Add-vmx-features-to-Conroe.patch
|
||||||
# https://github.com/libvirt/libvirt/commit/10e8a518a05922d5592d1405054aed3195aebf06.patch
|
# https://github.com/libvirt/libvirt/commit/cbee851581fc82ea95d7b6309b85e22f9d1ba0d3.patch
|
||||||
Patch42: libvirt-qemu-turn-two-multiline-log-messages-into-single-line.patch
|
Patch67: libvirt-Add-vmx-features-to-Cooperlake.patch
|
||||||
# https://github.com/libvirt/libvirt/commit/bbfcf18f504b0eb165c0bbfe2f34b4e20d11c355.patch
|
# https://github.com/libvirt/libvirt/commit/823c7005a3b0d5275b30ca811479995bfa5820e9.patch
|
||||||
Patch43: libvirt-docs-update-description-of-virsh-nodedev-detach.patch
|
Patch68: libvirt-Add-vmx-features-to-core2duo.patch
|
||||||
|
# https://github.com/libvirt/libvirt/commit/b44679c31f2d46e88ce655c03aef4c3e9ab621ac.patch
|
||||||
# https://gitlab.com/libvirt/libvirt/-/issues/577
|
Patch69: libvirt-Add-vmx-features-to-Haswell.patch
|
||||||
# https://gitlab.com/libvirt/libvirt/-/commit/c9056e682a8a67dc29e39eb01392fcf8ee978c31
|
# https://github.com/libvirt/libvirt/commit/a6f3eafc402fbaf18b2e23e93c8c7339317c7d97.patch
|
||||||
Patch44: libvirt-regression-input-default-bus.patch
|
Patch70: libvirt-Add-vmx-features-to-Icelake.patch
|
||||||
|
# https://github.com/libvirt/libvirt/commit/4b707f8bb0003b87f67474bfac02a2feac26c96f.patch
|
||||||
# https://github.com/libvirt/libvirt/commit/42df6cc1b4acc40d05ff6bc8e85587e4faec6cac
|
Patch71: libvirt-Add-vmx-features-to-IvyBridge.patch
|
||||||
Patch45: virPCIVPDResourceIsValidTextValue-Adjust-comment-to-reflect-actual-code.patch
|
# https://github.com/libvirt/libvirt/commit/1d03f78c5d0fa2d3422e76bef4c9369ab623bd52.patch
|
||||||
# https://github.com/libvirt/libvirt/commit/eb3844009dc3bdd50274954618b8cd9962218317
|
Patch72: libvirt-Add-vmx-features-to-kvm.patch
|
||||||
Patch46: util-pcivpd-Refactor-virPCIVPDResourceIsValidTextValue.patch
|
# https://github.com/libvirt/libvirt/commit/a539910c942f5993b967f8265756e3a10363e4f4.patch
|
||||||
# https://github.com/libvirt/libvirt/commit/5373b8c02ce44d0284bc9c60b3b7bc12bff2f867
|
Patch73: libvirt-Add-vmx-features-to-Nehalem.patch
|
||||||
Patch47: virNodeDeviceCapVPDFormatCustom-Escape-unsanitized-strings.patch
|
# https://github.com/libvirt/libvirt/commit/c6fadbb2807c80bd2b812eebd932eb4a34067ccd.patch
|
||||||
# https://github.com/libvirt/libvirt/commit/2ccac1e42f34404e3a5af22671a31fa1dca94e94
|
Patch74: libvirt-Add-vmx-features-to-Penryn.patch
|
||||||
Patch48: virNodeDeviceCapVPDFormat-Properly-escape-system-originated.patch
|
# https://github.com/libvirt/libvirt/commit/29d492d6488e35db2e96a017ac3fb2712dcb638c.patch
|
||||||
# https://github.com/libvirt/libvirt/commit/edaa1112ffef253013dcc3318794cebfaa2a6cb7
|
Patch75: libvirt-Add-vmx-features-to-SandyBridge.patch
|
||||||
Patch49: schema-nodedev-Adjust-allowed-characters-in-vpdFieldValueFormat.patch
|
# https://github.com/libvirt/libvirt/commit/e67004ec1cec850baa65177d88c6db09376869d3.patch
|
||||||
# https://github.com/libvirt/libvirt/commit/9eda33161f49fcf3ba07d648bd80d2a9a2388479
|
Patch76: libvirt-Add-vmx-features-to-SapphireRapids.patch
|
||||||
Patch50: tests-Test-the-previously-mishandled-PCI-VPD-characters.patch
|
# https://github.com/libvirt/libvirt/commit/aa064b38fdbafd39d296a0933b7d1b8987eb4cb5.patch
|
||||||
# https://github.com/libvirt/libvirt/commit/bfe53e9145cd5996a791c5caff0686572b850f82
|
Patch77: libvirt-Add-vmx-features-to-Skylake.patch
|
||||||
Patch51: cpu_map-Add-cpu-model-EPYC-Genoa.patch
|
# https://github.com/libvirt/libvirt/commit/64e3c1138a81b98f14e5f1aa1e8e2bb85cfdd1e5.patch
|
||||||
|
Patch78: libvirt-Add-vmx-features-to-Snowridge.patch
|
||||||
|
# https://github.com/libvirt/libvirt/commit/6898b7cd8d61d46db7e92f6cf81daf085b85f724.patch
|
||||||
|
Patch79: libvirt-Add-vmx-features-to-Westmere.patch
|
||||||
|
# https://github.com/libvirt/libvirt/commit/a9da0092198ba2f278cea370f8251f2e29f57c7d.patch
|
||||||
|
Patch80: qemu-virtiofs-do-not-crash-if-cgroups-are-missing.patch
|
||||||
|
# https://github.com/libvirt/libvirt/commit/4c5b2e1e0d0d0cbbf8c6ed28ce77d055d5974f7f.patch
|
||||||
|
Patch81: qemu-virtiofs-set-correct-label-when-creating-the-socket.patch
|
||||||
|
# https://github.com/libvirt/libvirt/commit/c9de7a1c3bca9f0732205f2c2b84526781dbf5e5.patch
|
||||||
|
Patch82: qemu-virtiofs-error-out-if-getting-the-group-or-user-namefails.patch
|
||||||
|
|
||||||
Requires: libvirt-daemon = %{version}-%{release}
|
Requires: libvirt-daemon = %{version}-%{release}
|
||||||
Requires: libvirt-daemon-config-network = %{version}-%{release}
|
Requires: libvirt-daemon-config-network = %{version}-%{release}
|
||||||
@ -583,46 +592,10 @@ Requires: libvirt-daemon-plugin-lockd = %{version}-%{release}
|
|||||||
Requires: libvirt-daemon-log = %{version}-%{release}
|
Requires: libvirt-daemon-log = %{version}-%{release}
|
||||||
Requires: libvirt-daemon-proxy = %{version}-%{release}
|
Requires: libvirt-daemon-proxy = %{version}-%{release}
|
||||||
|
|
||||||
%description daemon-common
|
%description daemon
|
||||||
Miscellaneous files and utilities used by other libvirt daemons
|
Server side daemon required to manage the virtualization capabilities
|
||||||
|
of recent versions of Linux. Requires a hypervisor specific sub-RPM
|
||||||
%package daemon-lock
|
for specific drivers.
|
||||||
Summary: Server side daemon for managing locks
|
|
||||||
Requires: libvirt-libs = %{version}-%{release}
|
|
||||||
|
|
||||||
%description daemon-lock
|
|
||||||
Server side daemon used to manage locks held against virtual machine
|
|
||||||
resources
|
|
||||||
|
|
||||||
%package daemon-plugin-lockd
|
|
||||||
Summary: lockd client plugin for virtlockd
|
|
||||||
Requires: libvirt-libs = %{version}-%{release}
|
|
||||||
Requires: libvirt-daemon-lock = %{version}-%{release}
|
|
||||||
|
|
||||||
%description daemon-plugin-lockd
|
|
||||||
A client-side plugin that implements disk locking using POSIX fcntl advisory
|
|
||||||
locks via communication with the virtlockd daemon
|
|
||||||
|
|
||||||
%package daemon-log
|
|
||||||
Summary: Server side daemon for managing logs
|
|
||||||
Requires: libvirt-libs = %{version}-%{release}
|
|
||||||
|
|
||||||
%description daemon-log
|
|
||||||
Server side daemon used to manage logs from virtual machine consoles
|
|
||||||
|
|
||||||
%package daemon-proxy
|
|
||||||
Summary: Server side daemon providing libvirtd proxy
|
|
||||||
Requires: libvirt-libs = %{version}-%{release}
|
|
||||||
# netcat is needed on the server side so that clients that have
|
|
||||||
# libvirt < 6.9.0 can connect, but newer versions will prefer
|
|
||||||
# virt-ssh-helper. Making this a Recommends means that it gets
|
|
||||||
# installed by default, but can still be removed if compatibility
|
|
||||||
# with old clients is not required
|
|
||||||
Recommends: /usr/bin/nc
|
|
||||||
|
|
||||||
%description daemon-proxy
|
|
||||||
Server side daemon providing functionality previously provided by
|
|
||||||
the monolithic libvirtd
|
|
||||||
|
|
||||||
%package daemon-common
|
%package daemon-common
|
||||||
Summary: Files and utilities used by daemons
|
Summary: Files and utilities used by daemons
|
||||||
@ -2051,10 +2024,6 @@ exit 0
|
|||||||
%libvirt_systemd_config_pre libvirtd
|
%libvirt_systemd_config_pre libvirtd
|
||||||
%libvirt_systemd_config_pre virtnetworkd
|
%libvirt_systemd_config_pre virtnetworkd
|
||||||
|
|
||||||
%pre daemon-config-network
|
|
||||||
%libvirt_systemd_config_pre libvirtd
|
|
||||||
%libvirt_systemd_config_pre virtnetworkd
|
|
||||||
|
|
||||||
%post daemon-config-network
|
%post daemon-config-network
|
||||||
if test $1 -eq 1 && test ! -f %{_sysconfdir}/libvirt/qemu/networks/default.xml ; then
|
if test $1 -eq 1 && test ! -f %{_sysconfdir}/libvirt/qemu/networks/default.xml ; then
|
||||||
# see if the network used by default network creates a conflict,
|
# see if the network used by default network creates a conflict,
|
||||||
@ -2499,6 +2468,8 @@ exit 0
|
|||||||
%config(noreplace) %{_sysconfdir}/libvirt/libxl-sanlock.conf
|
%config(noreplace) %{_sysconfdir}/libvirt/libxl-sanlock.conf
|
||||||
%endif
|
%endif
|
||||||
%dir %attr(0755, root, root) %{_libdir}/libvirt/lock-driver/
|
%dir %attr(0755, root, root) %{_libdir}/libvirt/lock-driver/
|
||||||
|
%attr(0755, root, root) %{_libdir}/libvirt/lock-driver/sanlock.so
|
||||||
|
%{_datadir}/augeas/lenses/libvirt_sanlock.aug
|
||||||
%{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug
|
%{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug
|
||||||
%dir %attr(0770, root, sanlock) %{_localstatedir}/lib/libvirt/sanlock
|
%dir %attr(0770, root, sanlock) %{_localstatedir}/lib/libvirt/sanlock
|
||||||
%{_sbindir}/virt-sanlock-cleanup
|
%{_sbindir}/virt-sanlock-cleanup
|
||||||
@ -2512,6 +2483,7 @@ exit 0
|
|||||||
%{_mandir}/man1/virt-pki-query-dn.1*
|
%{_mandir}/man1/virt-pki-query-dn.1*
|
||||||
%{_mandir}/man1/virt-pki-validate.1*
|
%{_mandir}/man1/virt-pki-validate.1*
|
||||||
%{_mandir}/man7/virkey*.7*
|
%{_mandir}/man7/virkey*.7*
|
||||||
|
%{_bindir}/virsh
|
||||||
%{_bindir}/virt-xml-validate
|
%{_bindir}/virt-xml-validate
|
||||||
%{_bindir}/virt-pki-query-dn
|
%{_bindir}/virt-pki-query-dn
|
||||||
%{_bindir}/virt-pki-validate
|
%{_bindir}/virt-pki-validate
|
||||||
@ -2716,6 +2688,31 @@ exit 0
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Apr 30 2024 Eduard Abdullin <eabdullin@almalinu.org> - 10.0.0-6.alma.1
|
||||||
|
- cpu: x86: Add support for adding features to existing CPU models
|
||||||
|
- qemu: domain: Check arch in qemuDomainMakeCPUMigratable
|
||||||
|
- conf: cpu: Introduce virCPUDefListFeatures
|
||||||
|
- qemu: domain: Drop added features from migratable CPU
|
||||||
|
- Add vmx-* features to Broadwell*
|
||||||
|
- Add vmx-* features to Cascadelake*
|
||||||
|
- Add vmx-* features to Conroe
|
||||||
|
- Add vmx-* features to Cooperlake
|
||||||
|
- Add vmx-* features to core2duo
|
||||||
|
- Add vmx-* features to Haswell*
|
||||||
|
- Add vmx-* features to Icelake*
|
||||||
|
- Add vmx-* features to IvyBridge*
|
||||||
|
- Add vmx-* features to kvm*
|
||||||
|
- Add vmx-* features to Nehalem*
|
||||||
|
- Add vmx-* features to Penryn
|
||||||
|
- Add vmx-* features to SandyBridge*
|
||||||
|
- Add vmx-* features to SapphireRapids
|
||||||
|
- Add vmx-* features to Skylake*
|
||||||
|
- Add vmx-* features to Snowridge
|
||||||
|
- Add vmx-* features to Westmere*
|
||||||
|
- qemu: virtiofs: do not crash if cgroups are missing
|
||||||
|
- qemu: virtiofs: set correct label when creating the socket
|
||||||
|
- qemu: virtiofs: error out if getting the group or user name fails
|
||||||
|
|
||||||
* Thu Feb 22 2024 Jiri Denemark <jdenemar@redhat.com> - 10.0.0-4
|
* Thu Feb 22 2024 Jiri Denemark <jdenemar@redhat.com> - 10.0.0-4
|
||||||
- Set stubDriverName from hostdev driver model attribute during pci device setup (RHEL-25858)
|
- Set stubDriverName from hostdev driver model attribute during pci device setup (RHEL-25858)
|
||||||
- qemuMigrationDstPrepareStorage: Use 'switch' statement to include all storage types (RHEL-24825)
|
- qemuMigrationDstPrepareStorage: Use 'switch' statement to include all storage types (RHEL-24825)
|
||||||
|
Loading…
Reference in New Issue
Block a user