mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 10:13:56 -06:00
QOM & QDev patches
- Remove DeviceState::opts (Akihiko) - Replace container_get by machine/object_get_container (Peter) - Remove InterfaceInfo::concrete_class field (Paolo) - Reduce machine_containers[] scope (Philippe) -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEE+qvnXhKRciHc/Wuy4+MsLN6twN4FAmeABNgACgkQ4+MsLN6t wN4XtQ/+NyXEK9vjq+yXnk7LRxTDQBrXxNc71gLqNA8rGwXTuELIXOthNW+UM2a9 CdnVbrIX/FRfQLXTHx0C2ENteafrR1oXDQmEOz1UeYgaCWJsNdVe3r1MYUdHcwVM 90JcSbYhrvxFE/p/6WhTjjv2DXn4E8witsPwRc8EBi5bHeFz6cNPzhdF59A3ljZF 0zr1MLHJHhwR6OoBbm9HM8x8i4Zw4LoKEjo8cCgcBfPQIMKf0HQ4XsinIDwn0VXN S3jIysNyGHlptHOiJuErILZtzrm4F2lGwYan89jxuElfWjC7SVB2z4CQkQtPceIJ HRBrE7VPwJ566OAThoSwPG3jXT1yCDOYmNCX1kJOMo9rYh3MwG0VrbMr5iwfYk8Z wO+8IyMAx7m8FibdsoMmxtI1PYTf0JQaCB6MSwdoAMMQVp1FDWBun2g+swLjQgO4 15iSB+PMIZe7Ywd0b63VZrUMHKwMxd9RFYEbbsdA8DRI50W3HMQPZAJiGXt7RxJ9 p9qxqg0WGpVjgTnInt/KH4axiWPD5cru+THVYk6dvOdtTM5wj2jEswWy2vQ6LkEF MgxaUXfja8E20AXvdr6uXKwcKOIJ9+TaU5AhUmjpvacjJhy5eQdoFt9OnIMQt25U KTtapCVsong5JzYZWhITNCMf5w2YGCJGJJekxdrqBvFk+FkMR38= =+TLu -----END PGP SIGNATURE----- Merge tag 'qom-qdev-20250109' of https://github.com/philmd/qemu into staging QOM & QDev patches - Remove DeviceState::opts (Akihiko) - Replace container_get by machine/object_get_container (Peter) - Remove InterfaceInfo::concrete_class field (Paolo) - Reduce machine_containers[] scope (Philippe) # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCAAdFiEE+qvnXhKRciHc/Wuy4+MsLN6twN4FAmeABNgACgkQ4+MsLN6t # wN4XtQ/+NyXEK9vjq+yXnk7LRxTDQBrXxNc71gLqNA8rGwXTuELIXOthNW+UM2a9 # CdnVbrIX/FRfQLXTHx0C2ENteafrR1oXDQmEOz1UeYgaCWJsNdVe3r1MYUdHcwVM # 90JcSbYhrvxFE/p/6WhTjjv2DXn4E8witsPwRc8EBi5bHeFz6cNPzhdF59A3ljZF # 0zr1MLHJHhwR6OoBbm9HM8x8i4Zw4LoKEjo8cCgcBfPQIMKf0HQ4XsinIDwn0VXN # S3jIysNyGHlptHOiJuErILZtzrm4F2lGwYan89jxuElfWjC7SVB2z4CQkQtPceIJ # HRBrE7VPwJ566OAThoSwPG3jXT1yCDOYmNCX1kJOMo9rYh3MwG0VrbMr5iwfYk8Z # wO+8IyMAx7m8FibdsoMmxtI1PYTf0JQaCB6MSwdoAMMQVp1FDWBun2g+swLjQgO4 # 15iSB+PMIZe7Ywd0b63VZrUMHKwMxd9RFYEbbsdA8DRI50W3HMQPZAJiGXt7RxJ9 # p9qxqg0WGpVjgTnInt/KH4axiWPD5cru+THVYk6dvOdtTM5wj2jEswWy2vQ6LkEF # MgxaUXfja8E20AXvdr6uXKwcKOIJ9+TaU5AhUmjpvacjJhy5eQdoFt9OnIMQt25U # KTtapCVsong5JzYZWhITNCMf5w2YGCJGJJekxdrqBvFk+FkMR38= # =+TLu # -----END PGP SIGNATURE----- # gpg: Signature made Thu 09 Jan 2025 12:18:16 EST # gpg: using RSA key FAABE75E12917221DCFD6BB2E3E32C2CDEADC0DE # gpg: Good signature from "Philippe Mathieu-Daudé (F4BUG) <f4bug@amsat.org>" [full] # Primary key fingerprint: FAAB E75E 1291 7221 DCFD 6BB2 E3E3 2C2C DEAD C0DE * tag 'qom-qdev-20250109' of https://github.com/philmd/qemu: system: Inline machine_containers[] in qemu_create_machine_containers() qom: remove unused InterfaceInfo::concrete_class field qom: Remove container_get() qom: Use object_get_container() qom: Add object_get_container() qdev: Use machine_get_container() qdev: Add machine_get_container() qdev: Make qdev_get_machine() not use container_get() qdev: Implement qdev_create_fake_machine() for user emulation qdev: Remove opts member hw/pci: Use -1 as the default value for rombar Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
290f950361
23 changed files with 126 additions and 85 deletions
|
@ -121,8 +121,7 @@ void qdev_connect_gpio_out_named(DeviceState *dev, const char *name, int n,
|
|||
name ? name : "unnamed-gpio-out", n);
|
||||
if (input_pin && !OBJECT(input_pin)->parent) {
|
||||
/* We need a name for object_property_set_link to work */
|
||||
object_property_add_child(container_get(qdev_get_machine(),
|
||||
"/unattached"),
|
||||
object_property_add_child(machine_get_container("unattached"),
|
||||
"non-qdev-gpio[*]", OBJECT(input_pin));
|
||||
}
|
||||
object_property_set_link(OBJECT(dev), propname,
|
||||
|
|
|
@ -46,3 +46,4 @@ system_ss.add(files(
|
|||
'vm-change-state-handler.c',
|
||||
'clock-vmstate.c',
|
||||
))
|
||||
user_ss.add(files('qdev-user.c'))
|
||||
|
|
19
hw/core/qdev-user.c
Normal file
19
hw/core/qdev-user.c
Normal file
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* QDev helpers specific to user emulation.
|
||||
*
|
||||
* Copyright 2025 Linaro, Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
#include "qemu/osdep.h"
|
||||
#include "qom/object.h"
|
||||
#include "hw/qdev-core.h"
|
||||
|
||||
void qdev_create_fake_machine(void)
|
||||
{
|
||||
Object *fake_machine_obj;
|
||||
|
||||
fake_machine_obj = object_property_add_new_container(object_get_root(),
|
||||
"machine");
|
||||
object_property_add_new_container(fake_machine_obj, "unattached");
|
||||
}
|
|
@ -476,8 +476,7 @@ static void device_set_realized(Object *obj, bool value, Error **errp)
|
|||
if (!obj->parent) {
|
||||
gchar *name = g_strdup_printf("device[%d]", unattached_count++);
|
||||
|
||||
object_property_add_child(container_get(qdev_get_machine(),
|
||||
"/unattached"),
|
||||
object_property_add_child(machine_get_container("unattached"),
|
||||
name, obj);
|
||||
unattached_parent = true;
|
||||
g_free(name);
|
||||
|
@ -691,7 +690,6 @@ static void device_finalize(Object *obj)
|
|||
dev->canonical_path = NULL;
|
||||
}
|
||||
|
||||
qobject_unref(dev->opts);
|
||||
g_free(dev->id);
|
||||
}
|
||||
|
||||
|
@ -818,12 +816,28 @@ Object *qdev_get_machine(void)
|
|||
static Object *dev;
|
||||
|
||||
if (dev == NULL) {
|
||||
dev = container_get(object_get_root(), "/machine");
|
||||
dev = object_resolve_path_component(object_get_root(), "machine");
|
||||
/*
|
||||
* Any call to this function before machine is created is treated
|
||||
* as a programming error as of now.
|
||||
*/
|
||||
assert(dev);
|
||||
}
|
||||
|
||||
return dev;
|
||||
}
|
||||
|
||||
Object *machine_get_container(const char *name)
|
||||
{
|
||||
Object *container, *machine;
|
||||
|
||||
machine = qdev_get_machine();
|
||||
container = object_resolve_path_component(machine, name);
|
||||
assert(object_dynamic_cast(container, TYPE_CONTAINER));
|
||||
|
||||
return container;
|
||||
}
|
||||
|
||||
char *qdev_get_human_name(DeviceState *dev)
|
||||
{
|
||||
g_assert(dev != NULL);
|
||||
|
|
|
@ -65,9 +65,9 @@ void foreach_dynamic_sysbus_device(FindSysbusDeviceFunc *func, void *opaque)
|
|||
};
|
||||
|
||||
/* Loop through all sysbus devices that were spawned outside the machine */
|
||||
container = container_get(qdev_get_machine(), "/peripheral");
|
||||
container = machine_get_container("peripheral");
|
||||
find_sysbus_device(container, &find);
|
||||
container = container_get(qdev_get_machine(), "/peripheral-anon");
|
||||
container = machine_get_container("peripheral-anon");
|
||||
find_sysbus_device(container, &find);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue