]> Git Repo - qemu.git/commitdiff
Revert "machine: Convert abstract typename on compat_props to subclass names"
authorEduardo Habkost <[email protected]>
Tue, 11 Jul 2017 00:43:03 +0000 (21:43 -0300)
committerEduardo Habkost <[email protected]>
Mon, 17 Jul 2017 18:41:30 +0000 (15:41 -0300)
This reverts commit 0bcba41fe379e4c6834adcf1456d9099db31a5b2.

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 <[email protected]>
Message-Id: <20170711004303[email protected]>
Acked-by: Cornelia Huck <[email protected]>
Reviewed-by: Greg Kurz <[email protected]>
Reviewed-by: Halil Pasic <[email protected]>
Signed-off-by: Eduardo Habkost <[email protected]>
hw/core/machine.c

index dc431fabf5b3cc3c5e8e8f9e845d062fd8778e42..41b53a17ad3220d1b3b3b28a79f8fe673cc2193e 100644 (file)
@@ -770,18 +770,11 @@ static void machine_class_finalize(ObjectClass *klass, void *data)
     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)
 {
     MachineClass *mc = MACHINE_GET_CLASS(machine);
     int i;
     GlobalProperty *p;
-    ObjectClass *oc;
 
     if (!mc->compat_props) {
         return;
@@ -789,22 +782,9 @@ void machine_register_compat_props(MachineState *machine)
 
     for (i = 0; i < mc->compat_props->len; i++) {
         p = g_array_index(mc->compat_props, GlobalProperty *, i);
-        oc = object_class_by_name(p->driver);
-        if (oc && object_class_is_abstract(oc)) {
-            /* temporary hack to make sure we do not override
-             * 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);
-        }
+        /* Machine compat_props must never cause errors: */
+        p->errp = &error_abort;
+        qdev_prop_register_global(p);
     }
 }
 
This page took 0.027189 seconds and 4 git commands to generate.