This series is not for 9.2, but for 10.0. It is intended to replace this previous patchset:
[PATCH 0/5] QOM: Enforce container_get() to operate on containers only https://lore.kernel.org/r/20241118221330.3480246-1-pet...@redhat.com Since it's a different patchset, the versioning starts from v1. The series is about container_get() and its removal. Meanwhile after the whole series applied, all the containers will be created explicitly. No lookup code will implicitly create container anymore. In general, container_get() is a flaky interface in a few things. Firstly, some of the users use it without getting a container object. Secondly, it can implicitly create containers on the fly. As Dan (mostly) pointed out, we don't have a super complicated container layout. It looks like this: /objects /chardevs /backend (conditional, ui/ only) /dr-connector (conditional, ppc/ only) /machine /peripheral /peripheral-anon /unattached This series create these containers explicitly. There's a side benefit of dropping container_get(), which is to avoid complicated string operations, as container_get() is never used in more than one depth. It means switching to object_resolve_path_component() should make existing code even tiny little faster. To achieve this, some test needs to be fixed first. For that, "tests: Fix test-qdev-global-props on anonymous qdev realize()". Comments welcomed, thanks. Peter Xu (12): qom: Add TYPE_CONTAINER macro qom: New container_create() tests: Fix test-qdev-global-props on anonymous qdev realize() tests: Explicitly create containers in test_qom_partial_path() ui/console: Explicitly create "/backend" container hw/ppc: Explicitly create the drc container ppc/e500: Avoid abuse of container_get() qdev: Make qdev_get_machine() not use container_get() qdev: Add machine_get_container() qom: Create system containers explicitly qom: Add object_get_container() qom: Drop container_get() include/hw/qdev-core.h | 10 ++++++++ include/qom/object.h | 25 +++++++++++++----- backends/cryptodev.c | 4 +-- chardev/char.c | 2 +- hw/arm/stellaris.c | 2 +- hw/core/gpio.c | 3 +-- hw/core/machine.c | 19 +++++++++++--- hw/core/qdev.c | 28 +++++++++++++++++--- hw/core/sysbus.c | 4 +-- hw/i386/pc.c | 4 +-- hw/pci-host/ppce500.c | 4 +-- hw/ppc/spapr_drc.c | 40 +++++++++++++++++++++-------- qom/container.c | 31 ++++++++-------------- qom/object.c | 30 +++++++++++++++++++--- scsi/pr-manager.c | 4 +-- system/ioport.c | 2 +- system/memory.c | 2 +- system/qdev-monitor.c | 6 ++--- system/vl.c | 3 +-- tests/unit/check-qom-proplist.c | 2 +- tests/unit/test-qdev-global-props.c | 21 +++++++++++++++ ui/console.c | 4 +-- ui/dbus-chardev.c | 2 +- 23 files changed, 180 insertions(+), 72 deletions(-) -- 2.45.0