On Wed, Jul 08, 2026 at 02:50:54PM +0200, Markus Armbruster wrote: > Daniel P. Berrangé <[email protected]> writes: > > > On Wed, Jul 08, 2026 at 01:21:49PM +0200, Markus Armbruster wrote: > >> Daniel P. Berrangé <[email protected]> writes: > >> > >> > On Wed, Jul 08, 2026 at 11:16:30AM +0100, Peter Maydell wrote: > >> >> On Fri, 3 Jul 2026 at 10:09, Mark Cave-Ayland > >> >> <[email protected]> wrote: > >> >> > > >> >> > Signed-off-by: Mark Cave-Ayland <[email protected]> > >> >> > --- > >> >> > include/hw/i386/pc.h | 2 ++ > >> >> > hw/i386/pc.c | 8 ++++++++ > >> >> > hw/i386/pc_sysfw.c | 7 +------ > >> >> > 3 files changed, 11 insertions(+), 6 deletions(-) > >> >> > > >> >> > diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h > >> >> > index 309de2eda1..16cb0ec01f 100644 > >> >> > --- a/include/hw/i386/pc.h > >> >> > +++ b/include/hw/i386/pc.h > >> >> > @@ -40,6 +40,8 @@ typedef struct PCMachineState { > >> >> > > >> >> > Object *alias_pcspk; > >> >> > Object *alias_rtc_time; > >> >> > + Object *alias_pflash0; > >> >> > + Object *alias_pflash1; > >> >> > > >> >> > /* Configuration options: */ > >> >> > uint64_t max_ram_below_4g; > >> >> > diff --git a/hw/i386/pc.c b/hw/i386/pc.c > >> >> > index 13c9c1bfc8..11eef176f4 100644 > >> >> > --- a/hw/i386/pc.c > >> >> > +++ b/hw/i386/pc.c > >> >> > @@ -1762,6 +1762,14 @@ static void pc_machine_class_init(ObjectClass > >> >> > *oc, const void *data) > >> >> > offsetof(X86MachineState, > >> >> > acpi_dev), > >> >> > object_property_allow_set_link, > >> >> > OBJ_PROP_LINK_STRONG); > >> >> > + object_class_property_add_alias(oc, "pflash0", > >> >> > + offsetof(PCMachineState, > >> >> > alias_pflash0), > >> >> > + TYPE_PFLASH_CFI01, > >> >> > + "drive"); > >> >> > + object_class_property_add_alias(oc, "pflash1", > >> >> > + offsetof(PCMachineState, > >> >> > alias_pflash1), > >> >> > + TYPE_PFLASH_CFI01, > >> >> > + "drive"); > >> >> > >> >> Does making these class properties fix > >> >> https://gitlab.com/qemu-project/qemu/-/work_items/3254 > >> >> (which is a report that "qemu-system-x86_64 -machine pc-q35,help" > >> >> doesn't list these properties) ? > >> > >> Not showing object properties is a bug. > >> > >> Cannot be fixed for object properties that are created outside the > >> object's instance_init(). > >> > >> Now, object properties created in instance_init() should almost > >> certainly be class properties instead. Converting them all fixes the > >> fixable part of the bug: > >> > >> > Yes, it ought to, as that CLI logic iterates over class properties. > >> > >> One property conversion at a time. > >> > >> There's a quicker fix, though. > >> > >> -machine TYPE.help uses type_print_class_properties() to show > >> properties. Here's its loop: > >> > >> object_class_property_iter_init(&iter, klass); > >> while ((prop = object_property_iter_next(&iter))) { > >> if (!prop->set) { > >> continue; > >> } > >> > >> g_ptr_array_add(array, > >> object_property_help(prop->name, prop->type, > >> prop->defval, > >> prop->description)); > >> } > >> > >> -device TYPE,help uses qmp_device_list_properties() to show both. > >> Here's its loop: > >> > >> obj = object_new_with_class(klass); > >> > >> object_property_iter_init(&iter, obj); > >> while ((prop = object_property_iter_next(&iter))) { > >> ObjectPropertyInfo *info; > >> > >> [...] > >> > >> info = g_new0(ObjectPropertyInfo, 1); > >> info->name = g_strdup(prop->name); > >> info->type = g_strdup(prop->type); > >> info->description = g_strdup(prop->description); > >> info->default_value = qobject_ref(prop->defval); > >> > >> QAPI_LIST_PREPEND(prop_list, info); > >> } > >> > >> object_unref(obj); > >> > >> Is there any excuse not to do it this way? > > > > Something would need to validate that instantiating a machine type > > for help usage won't trip over any edge cases. Could be done with > > unit tests. > > tests/qtest/device-introspect-test.c covers this for devices.
Ah, good, I was misled by its name into thinking it was only devices, not machine types too. With regards, Daniel -- |: https://berrange.com ~~ https://hachyderm.io/@berrange :| |: https://libvirt.org ~~ https://entangle-photo.org :| |: https://pixelfed.art/berrange ~~ https://fstop138.berrange.com :|
