With the multi-target work, the goal is to move to a single unified QOM tree that applies universally across all targets. This complements the migration away from instance level properties to class level properties, which again aims to ensure a fixed QOM object model for each class.
This requires that properties are either unconditionally registered in the class, with invalid options rejected at runtime (for example, during realize()), or that distinct subclasses are used for specialized use cases that need a distinct impl for some targets. It is harmless to have the "unplugged-inaccessible" property registered unconditionally so take the simple option. Done by merge virtio_mem_legacy_guests_properties into virtio_mem_properties. And the rejection handled in virtio_mem_device_realize Reviewed-by: Daniel P. Berrangé <[email protected]> Signed-off-by: Yonggang Luo <[email protected]> --- hw/virtio/virtio-mem.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/hw/virtio/virtio-mem.c b/hw/virtio/virtio-mem.c index 546ea18b7c..fb02958102 100644 --- a/hw/virtio/virtio-mem.c +++ b/hw/virtio/virtio-mem.c @@ -880,7 +880,11 @@ static void virtio_mem_device_realize(DeviceState *dev, Error **errp) break; } } else { - vmem->unplugged_inaccessible = ON_OFF_AUTO_ON; + if (vmem->unplugged_inaccessible != ON_OFF_AUTO_ON) { + error_setg(errp, "'%s' must be 'on' on non-x86 targets", + VIRTIO_MEM_UNPLUGGED_INACCESSIBLE_PROP); + return; + } } if (vmem->dynamic_memslots && @@ -1573,9 +1577,6 @@ static const Property virtio_mem_properties[] = { early_migration, true), DEFINE_PROP_BOOL(VIRTIO_MEM_DYNAMIC_MEMSLOTS_PROP, VirtIOMEM, dynamic_memslots, false), -}; - -static const Property virtio_mem_legacy_guests_properties[] = { DEFINE_PROP_ON_OFF_AUTO(VIRTIO_MEM_UNPLUGGED_INACCESSIBLE_PROP, VirtIOMEM, unplugged_inaccessible, ON_OFF_AUTO_ON), }; @@ -1640,9 +1641,6 @@ static void virtio_mem_class_init(ObjectClass *klass, const void *data) RamDiscardSourceClass *rdsc = RAM_DISCARD_SOURCE_CLASS(klass); device_class_set_props(dc, virtio_mem_properties); - if (virtio_mem_has_legacy_guests()) { - device_class_set_props(dc, virtio_mem_legacy_guests_properties); - } dc->vmsd = &vmstate_virtio_mem; set_bit(DEVICE_CATEGORY_MISC, dc->categories); -- 2.55.0.windows.3
