i386: "unavailable-features" QOM property
Add a "unavailable-features" QOM property to X86CPU objects that have the same semantics of "unavailable-features" on query-cpu-definitions. The new property has the same goal of "filtered-features", but is generic enough to let any kind of CPU feature to be listed there without relying on low level details like CPUID leaves or MSR numbers. Message-Id: <20190422234742.15780-3-ehabkost@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
parent
5a853fc57a
commit
506174bf82
@ -3692,6 +3692,17 @@ static void x86_cpu_list_feature_names(FeatureWordArray features,
|
||||
}
|
||||
}
|
||||
|
||||
static void x86_cpu_get_unavailable_features(Object *obj, Visitor *v,
|
||||
const char *name, void *opaque,
|
||||
Error **errp)
|
||||
{
|
||||
X86CPU *xc = X86_CPU(obj);
|
||||
strList *result = NULL;
|
||||
|
||||
x86_cpu_list_feature_names(xc->filtered_features, &result);
|
||||
visit_type_strList(v, "unavailable-features", &result, errp);
|
||||
}
|
||||
|
||||
/* Check for missing features that may prevent the CPU class from
|
||||
* running using the current machine and accelerator.
|
||||
*/
|
||||
@ -5632,6 +5643,15 @@ static void x86_cpu_initfn(Object *obj)
|
||||
object_property_add(obj, "filtered-features", "X86CPUFeatureWordInfo",
|
||||
x86_cpu_get_feature_words,
|
||||
NULL, NULL, (void *)cpu->filtered_features, NULL);
|
||||
/*
|
||||
* The "unavailable-features" property has the same semantics as
|
||||
* CpuDefinitionInfo.unavailable-features on the "query-cpu-definitions"
|
||||
* QMP command: they list the features that would have prevented the
|
||||
* CPU from running if the "enforce" flag was set.
|
||||
*/
|
||||
object_property_add(obj, "unavailable-features", "strList",
|
||||
x86_cpu_get_unavailable_features,
|
||||
NULL, NULL, NULL, &error_abort);
|
||||
|
||||
object_property_add(obj, "crash-information", "GuestPanicInformation",
|
||||
x86_cpu_get_crash_info_qom, NULL, NULL, NULL, NULL);
|
||||
|
Loading…
Reference in New Issue
Block a user