target/ppc: Remove "compat" property of server class POWER CPUs
This property has been deprecated since QEMU 5.0 by commit 22062e54bb
.
We only kept a legacy hack that internally converts "compat" into the
official "max-cpu-compat" property of the pseries machine type.
According to our deprecation policy, we could have removed it for QEMU 5.2
already. Do it now ; since ppc_cpu_parse_featurestr() now just calls the
generic parent_parse_features handler, drop it as well.
Users are supposed to use the "max-cpu-compat" property of the pseries
machine type instead.
Signed-off-by: Greg Kurz <groug@kaod.org>
Message-Id: <20201201131103.897430-1-groug@kaod.org>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
bc370a659a
commit
f518be3aa3
@ -281,13 +281,6 @@ a future version of QEMU. It's unclear whether anybody is still using
|
||||
CPU emulation in QEMU, and there are no test images available to make
|
||||
sure that the code is still working.
|
||||
|
||||
``compat`` property of server class POWER CPUs (since 5.0)
|
||||
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
The ``compat`` property used to set backwards compatibility modes for
|
||||
the processor has been deprecated. The ``max-cpu-compat`` property of
|
||||
the ``pseries`` machine type should be used instead.
|
||||
|
||||
``lm32`` CPUs (since 5.2.0)
|
||||
'''''''''''''''''''''''''''
|
||||
|
||||
|
@ -10470,63 +10470,6 @@ static ObjectClass *ppc_cpu_class_by_name(const char *name)
|
||||
return oc;
|
||||
}
|
||||
|
||||
static void ppc_cpu_parse_featurestr(const char *type, char *features,
|
||||
Error **errp)
|
||||
{
|
||||
Object *machine = qdev_get_machine();
|
||||
const PowerPCCPUClass *pcc = POWERPC_CPU_CLASS(object_class_by_name(type));
|
||||
|
||||
if (!features) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (object_property_find(machine, "max-cpu-compat")) {
|
||||
int i;
|
||||
char **inpieces;
|
||||
char *s = features;
|
||||
Error *local_err = NULL;
|
||||
char *compat_str = NULL;
|
||||
|
||||
/*
|
||||
* Backwards compatibility hack:
|
||||
*
|
||||
* CPUs had a "compat=" property which didn't make sense for
|
||||
* anything except pseries. It was replaced by "max-cpu-compat"
|
||||
* machine option. This supports old command lines like
|
||||
* -cpu POWER8,compat=power7
|
||||
* By stripping the compat option and applying it to the machine
|
||||
* before passing it on to the cpu level parser.
|
||||
*/
|
||||
inpieces = g_strsplit(features, ",", 0);
|
||||
*s = '\0';
|
||||
for (i = 0; inpieces[i]; i++) {
|
||||
if (g_str_has_prefix(inpieces[i], "compat=")) {
|
||||
warn_report_once("CPU 'compat' property is deprecated; "
|
||||
"use max-cpu-compat machine property instead");
|
||||
compat_str = inpieces[i];
|
||||
continue;
|
||||
}
|
||||
if ((i != 0) && (s != features)) {
|
||||
s = g_stpcpy(s, ",");
|
||||
}
|
||||
s = g_stpcpy(s, inpieces[i]);
|
||||
}
|
||||
|
||||
if (compat_str) {
|
||||
char *v = compat_str + strlen("compat=");
|
||||
object_property_set_str(machine, "max-cpu-compat", v, &local_err);
|
||||
}
|
||||
g_strfreev(inpieces);
|
||||
if (local_err) {
|
||||
error_propagate(errp, local_err);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* do property processing with generic handler */
|
||||
pcc->parent_parse_features(type, features, errp);
|
||||
}
|
||||
|
||||
PowerPCCPUClass *ppc_cpu_get_family_class(PowerPCCPUClass *pcc)
|
||||
{
|
||||
ObjectClass *oc = OBJECT_CLASS(pcc);
|
||||
@ -10905,8 +10848,6 @@ static void ppc_cpu_class_init(ObjectClass *oc, void *data)
|
||||
device_class_set_parent_reset(dc, ppc_cpu_reset, &pcc->parent_reset);
|
||||
|
||||
cc->class_by_name = ppc_cpu_class_by_name;
|
||||
pcc->parent_parse_features = cc->parse_features;
|
||||
cc->parse_features = ppc_cpu_parse_featurestr;
|
||||
cc->has_work = ppc_cpu_has_work;
|
||||
cc->do_interrupt = ppc_cpu_do_interrupt;
|
||||
cc->cpu_exec_interrupt = ppc_cpu_exec_interrupt;
|
||||
|
Loading…
Reference in New Issue
Block a user