From: Markus Armbruster Date: Wed, 22 Oct 2025 10:14:20 +0000 (+0200) Subject: qdev: Legacy properties are now unused internally, drop X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a61383f7ab6fd05657cf21a6eb4d5a6982cd6f8a;p=thirdparty%2Fqemu.git qdev: Legacy properties are now unused internally, drop Legacy properties are an accidental and undocumented external interface. qom-set doesn't work for them (no .set() method). qom-get and qom-list-get work only when the underlying qdev property has a .print() method, i.e. the PCI address properties, as explained in the previous commit. Here's one that works: (qemu) qom-get /machine/unattached/device[3]/pm addr 11 (qemu) qom-get /machine/unattached/device[3]/pm legacy-addr "01.3" And here's one that doesn't: (qemu) qom-get /machine/unattached/device[3]/pm bus "/machine/i440fx/pci.0" (qemu) qom-get /machine/unattached/device[3]/pm legacy-bus Error: Property 'PIIX4_PM.legacy-bus' is not readable Actual use of this undocumented interface seems quite unlikely. A deprecation period seems unnecessary. Drop it. Signed-off-by: Markus Armbruster Message-ID: <20251022101420.36059-4-armbru@redhat.com> Acked-by: Marc-André Lureau [Commit message improved] --- diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c index 05489c8fbb..c96ccfb263 100644 --- a/hw/core/qdev-properties.c +++ b/hw/core/qdev-properties.c @@ -1110,51 +1110,6 @@ static void qdev_class_add_property(DeviceClass *klass, const char *name, object_class_property_set_description(oc, name, prop->info->description); } -/** - * Legacy property handling - */ - -static void qdev_get_legacy_property(Object *obj, Visitor *v, - const char *name, void *opaque, - Error **errp) -{ - const Property *prop = opaque; - char *s; - - s = prop->info->print(obj, prop); - visit_type_str(v, name, &s, errp); - g_free(s); -} - -/** - * qdev_class_add_legacy_property: - * @dev: Device to add the property to. - * @prop: The qdev property definition. - * - * Add a legacy QOM property to @dev for qdev property @prop. - * - * Legacy properties are string versions of QOM properties. The format of - * the string depends on the property type. Legacy properties are only - * needed for "info qtree". - * - * Do not use this in new code! QOM Properties added through this interface - * will be given names in the "legacy" namespace. - */ -static void qdev_class_add_legacy_property(DeviceClass *dc, const Property *prop) -{ - g_autofree char *name = NULL; - - /* Register pointer properties as legacy properties */ - if (!prop->info->print && prop->info->get) { - return; - } - - name = g_strdup_printf("legacy-%s", prop->name); - object_class_property_add(OBJECT_CLASS(dc), name, "str", - prop->info->print ? qdev_get_legacy_property : prop->info->get, - NULL, NULL, (Property *)prop); -} - void device_class_set_props_n(DeviceClass *dc, const Property *props, size_t n) { /* We used a hole in DeviceClass because that's still a lot. */ @@ -1167,7 +1122,6 @@ void device_class_set_props_n(DeviceClass *dc, const Property *props, size_t n) for (size_t i = 0; i < n; ++i) { const Property *prop = &props[i]; assert(prop->name); - qdev_class_add_legacy_property(dc, prop); qdev_class_add_property(dc, prop->name, prop); } }