mirror of https://gitee.com/openkylin/qemu.git
Revert "machine: Convert abstract typename on compat_props to subclass names"
This reverts commit 0bcba41fe3
.
The bug addressed by that commit is now fixed in a better way by the
commit "qdev: fix the order compat and global properties are applied".
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20170711004303.3902-4-ehabkost@redhat.com>
Acked-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Halil Pasic <pasic@linux.vnet.ibm.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
parent
3caca55558
commit
6d1e30c4ac
|
@ -770,18 +770,11 @@ static void machine_class_finalize(ObjectClass *klass, void *data)
|
||||||
g_free(mc->name);
|
g_free(mc->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void machine_register_compat_for_subclass(ObjectClass *oc, void *opaque)
|
|
||||||
{
|
|
||||||
GlobalProperty *p = opaque;
|
|
||||||
register_compat_prop(object_class_get_name(oc), p->property, p->value);
|
|
||||||
}
|
|
||||||
|
|
||||||
void machine_register_compat_props(MachineState *machine)
|
void machine_register_compat_props(MachineState *machine)
|
||||||
{
|
{
|
||||||
MachineClass *mc = MACHINE_GET_CLASS(machine);
|
MachineClass *mc = MACHINE_GET_CLASS(machine);
|
||||||
int i;
|
int i;
|
||||||
GlobalProperty *p;
|
GlobalProperty *p;
|
||||||
ObjectClass *oc;
|
|
||||||
|
|
||||||
if (!mc->compat_props) {
|
if (!mc->compat_props) {
|
||||||
return;
|
return;
|
||||||
|
@ -789,22 +782,9 @@ void machine_register_compat_props(MachineState *machine)
|
||||||
|
|
||||||
for (i = 0; i < mc->compat_props->len; i++) {
|
for (i = 0; i < mc->compat_props->len; i++) {
|
||||||
p = g_array_index(mc->compat_props, GlobalProperty *, i);
|
p = g_array_index(mc->compat_props, GlobalProperty *, i);
|
||||||
oc = object_class_by_name(p->driver);
|
/* Machine compat_props must never cause errors: */
|
||||||
if (oc && object_class_is_abstract(oc)) {
|
p->errp = &error_abort;
|
||||||
/* temporary hack to make sure we do not override
|
qdev_prop_register_global(p);
|
||||||
* globals set explicitly on -global: if an abstract class
|
|
||||||
* is on compat_props, register globals for all its
|
|
||||||
* non-abstract subtypes instead.
|
|
||||||
*
|
|
||||||
* This doesn't solve the problem for cases where
|
|
||||||
* a non-abstract typename mentioned on compat_props
|
|
||||||
* has subclasses, like spapr-pci-host-bridge.
|
|
||||||
*/
|
|
||||||
object_class_foreach(machine_register_compat_for_subclass,
|
|
||||||
p->driver, false, p);
|
|
||||||
} else {
|
|
||||||
register_compat_prop(p->driver, p->property, p->value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue