Now that the pflash0 and pflash1 machine properties are class properties, if they are unspecified then QOM returns an empty string as opposed to returning a property not found error.
Before this patch: $ ./build/qemu-system-x86_64 -M q35 -monitor stdio QEMU 11.1.50 monitor - type 'help' for more information (qemu) qom-get /machine pflash0 Error: Property 'pc-q35-11.1-machine.pflash0' not found After this patch: $ ./build/qemu-system-x86_64 -M q35 -monitor stdio QEMU 11.1.50 monitor - type 'help' for more information (qemu) qom-get /machine pflash0 "" Signed-off-by: Mark Cave-Ayland <[email protected]> Reviewed-by: Philippe Mathieu-Daudé <[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 0b925ccd8f..8369263691 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 876ebaadb8..ddb75a2ec0 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1800,6 +1800,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"); } static const TypeInfo pc_machine_info = { diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c index 1a41a5972b..441e777191 100644 --- a/hw/i386/pc_sysfw.c +++ b/hw/i386/pc_sysfw.c @@ -85,8 +85,7 @@ static PFlashCFI01 *pc_pflash_create(PCMachineState *pcms, qdev_prop_set_uint8(dev, "width", 1); qdev_prop_set_string(dev, "name", name); object_property_add_child(OBJECT(pcms), name, OBJECT(dev)); - object_property_add_alias(OBJECT(pcms), alias_prop_name, - OBJECT(dev), "drive"); + object_property_set_alias(OBJECT(pcms), alias_prop_name, OBJECT(dev)); /* * The returned reference is tied to the child property and * will be removed with object_unparent. @@ -109,16 +108,12 @@ void pc_system_flash_create(PCMachineState *pcms) void pc_system_flash_cleanup_unused(PCMachineState *pcms) { - char *prop_name; int i; assert(PC_MACHINE_GET_CLASS(pcms)->pci_enabled); for (i = 0; i < ARRAY_SIZE(pcms->flash); i++) { if (!qdev_is_realized(DEVICE(pcms->flash[i]))) { - prop_name = g_strdup_printf("pflash%d", i); - object_property_del(OBJECT(pcms), prop_name); - g_free(prop_name); object_unparent(OBJECT(pcms->flash[i])); pcms->flash[i] = NULL; } -- 2.43.0
