diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2024-10-29 10:41:58 +0100 |
|---|---|---|
| committer | Paolo Bonzini <pbonzini@redhat.com> | 2024-10-31 18:28:32 +0100 |
| commit | 02009a12bcd7927a968df7641eaa609b659b3470 (patch) | |
| tree | b8075f8edf7124686c666393af194a54020aa845 | |
| parent | 144d80f69e9ee614bf7fb06ad586cef610cec0f7 (diff) | |
| download | focaccia-qemu-02009a12bcd7927a968df7641eaa609b659b3470.tar.gz focaccia-qemu-02009a12bcd7927a968df7641eaa609b659b3470.zip | |
qom: let object_new use a module if the type is not present
object_initialize() can use modules (it was added there because virtio-gpu-device is a child device of virtio-gpu-pci; commit 64f7aece8ea, "object_initialize: try module load", 2020-09-15). object_new() cannot; make things consistent. qdev_new() is now just a simple wrapper that returns DeviceState. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
| -rw-r--r-- | hw/core/qdev.c | 16 | ||||
| -rw-r--r-- | qom/object.c | 2 |
2 files changed, 1 insertions, 17 deletions
diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 2f740fa55e..5f13111b77 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -146,22 +146,6 @@ bool qdev_set_parent_bus(DeviceState *dev, BusState *bus, Error **errp) DeviceState *qdev_new(const char *name) { - ObjectClass *oc = object_class_by_name(name); -#ifdef CONFIG_MODULES - if (!oc) { - int rv = module_load_qom(name, &error_fatal); - if (rv > 0) { - oc = object_class_by_name(name); - } else { - error_report("could not find a module for type '%s'", name); - exit(1); - } - } -#endif - if (!oc) { - error_report("unknown type '%s'", name); - abort(); - } return DEVICE(object_new(name)); } diff --git a/qom/object.c b/qom/object.c index 29155c6463..9edc06d391 100644 --- a/qom/object.c +++ b/qom/object.c @@ -790,7 +790,7 @@ Object *object_new_with_class(ObjectClass *klass) Object *object_new(const char *typename) { - TypeImpl *ti = type_get_by_name_noload(typename); + TypeImpl *ti = type_get_or_load_by_name(typename, &error_fatal); return object_new_with_type(ti); } |