Lines Matching refs:dev

46 const VMStateDescription *qdev_get_vmsd(DeviceState *dev)  in qdev_get_vmsd()  argument
48 DeviceClass *dc = DEVICE_GET_CLASS(dev); in qdev_get_vmsd()
108 bool qdev_set_parent_bus(DeviceState *dev, BusState *bus, Error **errp) in qdev_set_parent_bus() argument
110 BusState *old_parent_bus = dev->parent_bus; in qdev_set_parent_bus()
111 DeviceClass *dc = DEVICE_GET_CLASS(dev); in qdev_set_parent_bus()
115 if (!bus_check_address(bus, dev, errp)) { in qdev_set_parent_bus()
120 trace_qdev_update_parent_bus(dev, object_get_typename(OBJECT(dev)), in qdev_set_parent_bus()
130 object_ref(OBJECT(dev)); in qdev_set_parent_bus()
131 bus_remove_child(dev->parent_bus, dev); in qdev_set_parent_bus()
133 dev->parent_bus = bus; in qdev_set_parent_bus()
135 bus_add_child(bus, dev); in qdev_set_parent_bus()
136 if (dev->realized) { in qdev_set_parent_bus()
137 resettable_change_parent(OBJECT(dev), OBJECT(bus), in qdev_set_parent_bus()
142 object_unref(OBJECT(dev)); in qdev_set_parent_bus()
206 static int device_listener_add(DeviceState *dev, void *opaque) in device_listener_add() argument
208 DEVICE_LISTENER_CALL(realize, Forward, dev); in device_listener_add()
244 void qdev_set_legacy_instance_id(DeviceState *dev, int alias_id, in qdev_set_legacy_instance_id() argument
247 assert(!dev->realized); in qdev_set_legacy_instance_id()
248 dev->instance_id_alias = alias_id; in qdev_set_legacy_instance_id()
249 dev->alias_required_for_version = required_for_version; in qdev_set_legacy_instance_id()
252 void device_cold_reset(DeviceState *dev) in device_cold_reset() argument
254 resettable_reset(OBJECT(dev), RESET_TYPE_COLD); in device_cold_reset()
257 bool device_is_in_reset(DeviceState *dev) in device_is_in_reset() argument
259 return resettable_is_in_reset(OBJECT(dev)); in device_is_in_reset()
264 DeviceState *dev = DEVICE(obj); in device_get_reset_state() local
265 return &dev->reset; in device_get_reset_state()
271 DeviceState *dev = DEVICE(obj); in device_reset_child_foreach() local
274 QLIST_FOREACH(bus, &dev->child_bus, sibling) { in device_reset_child_foreach()
279 bool qdev_realize(DeviceState *dev, BusState *bus, Error **errp) in qdev_realize() argument
281 assert(!dev->realized && !dev->parent_bus); in qdev_realize()
284 if (!qdev_set_parent_bus(dev, bus, errp)) { in qdev_realize()
288 assert(!DEVICE_GET_CLASS(dev)->bus_type); in qdev_realize()
291 return object_property_set_bool(OBJECT(dev), "realized", true, errp); in qdev_realize()
294 bool qdev_realize_and_unref(DeviceState *dev, BusState *bus, Error **errp) in qdev_realize_and_unref() argument
298 ret = qdev_realize(dev, bus, errp); in qdev_realize_and_unref()
299 object_unref(OBJECT(dev)); in qdev_realize_and_unref()
303 void qdev_unrealize(DeviceState *dev) in qdev_unrealize() argument
305 object_property_set_bool(OBJECT(dev), "realized", false, &error_abort); in qdev_unrealize()
310 DeviceState *dev = DEVICE(object_dynamic_cast(obj, TYPE_DEVICE)); in qdev_assert_realized_properly_cb() local
313 if (dev) { in qdev_assert_realized_properly_cb()
314 dc = DEVICE_GET_CLASS(dev); in qdev_assert_realized_properly_cb()
315 assert(dev->realized); in qdev_assert_realized_properly_cb()
316 assert(dev->parent_bus || !dc->bus_type); in qdev_assert_realized_properly_cb()
332 BusState *qdev_get_parent_bus(const DeviceState *dev) in qdev_get_parent_bus() argument
334 return dev->parent_bus; in qdev_get_parent_bus()
337 BusState *qdev_get_child_bus(DeviceState *dev, const char *name) in qdev_get_child_bus() argument
340 Object *child = object_resolve_path_component(OBJECT(dev), name); in qdev_get_child_bus()
347 QLIST_FOREACH(bus, &dev->child_bus, sibling) { in qdev_get_child_bus()
355 int qdev_walk_children(DeviceState *dev, in qdev_walk_children() argument
364 err = pre_devfn(dev, opaque); in qdev_walk_children()
370 QLIST_FOREACH(bus, &dev->child_bus, sibling) { in qdev_walk_children()
379 err = post_devfn(dev, opaque); in qdev_walk_children()
396 DeviceState *dev = kid->child; in qdev_find_recursive() local
398 if (dev->id && strcmp(dev->id, id) == 0) { in qdev_find_recursive()
399 return dev; in qdev_find_recursive()
402 QLIST_FOREACH(child, &dev->child_bus, sibling) { in qdev_find_recursive()
413 char *qdev_get_dev_path(DeviceState *dev) in qdev_get_dev_path() argument
417 if (!dev || !dev->parent_bus) { in qdev_get_dev_path()
421 bc = BUS_GET_CLASS(dev->parent_bus); in qdev_get_dev_path()
423 return bc->get_dev_path(dev); in qdev_get_dev_path()
429 void qdev_add_unplug_blocker(DeviceState *dev, Error *reason) in qdev_add_unplug_blocker() argument
431 dev->unplug_blockers = g_slist_prepend(dev->unplug_blockers, reason); in qdev_add_unplug_blocker()
434 void qdev_del_unplug_blocker(DeviceState *dev, Error *reason) in qdev_del_unplug_blocker() argument
436 dev->unplug_blockers = g_slist_remove(dev->unplug_blockers, reason); in qdev_del_unplug_blocker()
439 bool qdev_unplug_blocked(DeviceState *dev, Error **errp) in qdev_unplug_blocked() argument
441 if (dev->unplug_blockers) { in qdev_unplug_blocked()
442 error_propagate(errp, error_copy(dev->unplug_blockers->data)); in qdev_unplug_blocked()
451 DeviceState *dev = DEVICE(obj); in device_get_realized() local
452 return dev->realized; in device_get_realized()
471 DeviceState *dev = DEVICE(obj); in device_set_realized() local
472 DeviceClass *dc = DEVICE_GET_CLASS(dev); in device_set_realized()
480 if (dev->hotplugged && !dc->hotpluggable) { in device_set_realized()
486 if (value && !dev->realized) { in device_set_realized()
501 hotplug_ctrl = qdev_get_hotplug_handler(dev); in device_set_realized()
503 hotplug_handler_pre_plug(hotplug_ctrl, dev, &local_err); in device_set_realized()
510 dc->realize(dev, &local_err); in device_set_realized()
516 DEVICE_LISTENER_CALL(realize, Forward, dev); in device_set_realized()
522 g_free(dev->canonical_path); in device_set_realized()
523 dev->canonical_path = object_get_canonical_path(OBJECT(dev)); in device_set_realized()
524 QLIST_FOREACH(ncl, &dev->clocks, node) { in device_set_realized()
532 if (qdev_get_vmsd(dev)) { in device_set_realized()
533 if (vmstate_register_with_alias_id(VMSTATE_IF(dev), in device_set_realized()
535 qdev_get_vmsd(dev), dev, in device_set_realized()
536 dev->instance_id_alias, in device_set_realized()
537 dev->alias_required_for_version, in device_set_realized()
547 resettable_state_clear(&dev->reset); in device_set_realized()
549 QLIST_FOREACH(bus, &dev->child_bus, sibling) { in device_set_realized()
554 if (dev->hotplugged) { in device_set_realized()
559 resettable_assert_reset(OBJECT(dev), RESET_TYPE_COLD); in device_set_realized()
560 resettable_change_parent(OBJECT(dev), OBJECT(dev->parent_bus), in device_set_realized()
562 resettable_release_reset(OBJECT(dev), RESET_TYPE_COLD); in device_set_realized()
564 dev->pending_deleted_event = false; in device_set_realized()
567 hotplug_handler_plug(hotplug_ctrl, dev, &local_err); in device_set_realized()
573 qatomic_store_release(&dev->realized, value); in device_set_realized()
575 } else if (!value && dev->realized) { in device_set_realized()
585 qatomic_set(&dev->realized, value); in device_set_realized()
592 QLIST_FOREACH(bus, &dev->child_bus, sibling) { in device_set_realized()
595 if (qdev_get_vmsd(dev)) { in device_set_realized()
596 vmstate_unregister(VMSTATE_IF(dev), qdev_get_vmsd(dev), dev); in device_set_realized()
599 dc->unrealize(dev); in device_set_realized()
601 dev->pending_deleted_event = true; in device_set_realized()
602 DEVICE_LISTENER_CALL(unrealize, Reverse, dev); in device_set_realized()
609 QLIST_FOREACH(bus, &dev->child_bus, sibling) { in device_set_realized()
613 if (qdev_get_vmsd(dev)) { in device_set_realized()
614 vmstate_unregister(VMSTATE_IF(dev), qdev_get_vmsd(dev), dev); in device_set_realized()
618 g_free(dev->canonical_path); in device_set_realized()
619 dev->canonical_path = NULL; in device_set_realized()
621 dc->unrealize(dev); in device_set_realized()
631 object_unparent(OBJECT(dev)); in device_set_realized()
639 DeviceState *dev = DEVICE(obj); in device_get_hotpluggable() local
641 return dc->hotpluggable && (dev->parent_bus == NULL || in device_get_hotpluggable()
642 qbus_is_hotpluggable(dev->parent_bus)); in device_get_hotpluggable()
647 DeviceState *dev = DEVICE(obj); in device_get_hotplugged() local
649 return dev->hotplugged; in device_get_hotplugged()
654 DeviceState *dev = DEVICE(obj); in device_initfn() local
657 dev->hotplugged = 1; in device_initfn()
661 dev->instance_id_alias = -1; in device_initfn()
662 dev->realized = false; in device_initfn()
663 dev->allow_unplug_during_migration = false; in device_initfn()
665 QLIST_INIT(&dev->gpios); in device_initfn()
666 QLIST_INIT(&dev->clocks); in device_initfn()
684 DeviceState *dev = DEVICE(obj); in device_finalize() local
686 g_assert(!dev->unplug_blockers); in device_finalize()
688 QLIST_FOREACH_SAFE(ngl, &dev->gpios, node, next) { in device_finalize()
698 qdev_finalize_clocklist(dev); in device_finalize()
701 if (dev->pending_deleted_event) { in device_finalize()
702 g_assert(dev->canonical_path); in device_finalize()
704 qapi_event_send_device_deleted(dev->id, dev->canonical_path); in device_finalize()
705 g_free(dev->canonical_path); in device_finalize()
706 dev->canonical_path = NULL; in device_finalize()
709 qobject_unref(dev->opts); in device_finalize()
710 g_free(dev->id); in device_finalize()
725 DeviceState *dev = DEVICE(obj); in device_unparent() local
728 if (dev->realized) { in device_unparent()
729 qdev_unrealize(dev); in device_unparent()
731 while (dev->num_child_bus) { in device_unparent()
732 bus = QLIST_FIRST(&dev->child_bus); in device_unparent()
735 if (dev->parent_bus) { in device_unparent()
736 bus_remove_child(dev->parent_bus, dev); in device_unparent()
737 object_unref(OBJECT(dev->parent_bus)); in device_unparent()
738 dev->parent_bus = NULL; in device_unparent()
745 DeviceState *dev = DEVICE(obj); in device_vmstate_if_get_id() local
747 return qdev_get_dev_path(dev); in device_vmstate_if_get_id()
755 static void device_phases_reset(DeviceState *dev) in device_phases_reset() argument
757 ResettableClass *rc = RESETTABLE_GET_CLASS(dev); in device_phases_reset()
760 rc->phases.enter(OBJECT(dev), RESET_TYPE_COLD); in device_phases_reset()
763 rc->phases.hold(OBJECT(dev), RESET_TYPE_COLD); in device_phases_reset()
766 rc->phases.exit(OBJECT(dev), RESET_TYPE_COLD); in device_phases_reset()
873 static Object *dev; in qdev_get_machine() local
875 if (dev == NULL) { in qdev_get_machine()
876 dev = container_get(object_get_root(), "/machine"); in qdev_get_machine()
879 return dev; in qdev_get_machine()
882 char *qdev_get_human_name(DeviceState *dev) in qdev_get_human_name() argument
884 g_assert(dev != NULL); in qdev_get_human_name()
886 return dev->id ? in qdev_get_human_name()
887 g_strdup(dev->id) : object_get_canonical_path(OBJECT(dev)); in qdev_get_human_name()