On Mon, 21 Sep 2020 18:10:36 -0400 Eduardo Habkost <ehabk...@redhat.com> wrote:
> Class properties make QOM introspection simpler and easier, as > they don't require an object to be instantiated. > > Signed-off-by: Eduardo Habkost <ehabk...@redhat.com> Reviewed-by: Igor Mammedov <imamm...@redhat.com> > --- > Cc: Peter Maydell <peter.mayd...@linaro.org> > Cc: qemu-...@nongnu.org > Cc: qemu-devel@nongnu.org > --- > hw/arm/virt.c | 76 +++++++++++++++++++++++++++------------------------ > 1 file changed, 41 insertions(+), 35 deletions(-) > > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > index acf9bfbecea..d1ab660fa60 100644 > --- a/hw/arm/virt.c > +++ b/hw/arm/virt.c > @@ -2443,6 +2443,47 @@ static void virt_machine_class_init(ObjectClass *oc, > void *data) > NULL, NULL); > object_class_property_set_description(oc, "acpi", > "Enable ACPI"); > + object_class_property_add_bool(oc, "secure", virt_get_secure, > + virt_set_secure); > + object_class_property_set_description(oc, "secure", > + "Set on/off to > enable/disable the ARM " > + "Security Extensions > (TrustZone)"); > + > + object_class_property_add_bool(oc, "virtualization", virt_get_virt, > + virt_set_virt); > + object_class_property_set_description(oc, "virtualization", > + "Set on/off to enable/disable > emulating a " > + "guest CPU which implements the > ARM " > + "Virtualization Extensions"); > + > + object_class_property_add_bool(oc, "highmem", virt_get_highmem, > + virt_set_highmem); > + object_class_property_set_description(oc, "highmem", > + "Set on/off to enable/disable > using " > + "physical address space above 32 > bits"); > + > + object_class_property_add_str(oc, "gic-version", virt_get_gic_version, > + virt_set_gic_version); > + object_class_property_set_description(oc, "gic-version", > + "Set GIC version. " > + "Valid values are 2, 3, host and > max"); > + > + object_class_property_add_str(oc, "iommu", virt_get_iommu, > virt_set_iommu); > + object_class_property_set_description(oc, "iommu", > + "Set the IOMMU type. " > + "Valid values are none and > smmuv3"); > + > + object_class_property_add_bool(oc, "ras", virt_get_ras, > + virt_set_ras); > + object_class_property_set_description(oc, "ras", > + "Set on/off to enable/disable > reporting host memory errors " > + "to a KVM guest using ACPI and > guest external abort exceptions"); > + > + object_class_property_add_bool(oc, "mte", virt_get_mte, virt_set_mte); > + object_class_property_set_description(oc, "mte", > + "Set on/off to enable/disable > emulating a " > + "guest CPU which implements the > ARM " > + "Memory Tagging Extension"); > } > > static void virt_instance_init(Object *obj) > @@ -2455,34 +2496,13 @@ static void virt_instance_init(Object *obj) > * boot UEFI blobs which assume no TrustZone support. > */ > vms->secure = false; > - object_property_add_bool(obj, "secure", virt_get_secure, > - virt_set_secure); > - object_property_set_description(obj, "secure", > - "Set on/off to enable/disable the ARM " > - "Security Extensions (TrustZone)"); > > /* EL2 is also disabled by default, for similar reasons */ > vms->virt = false; > - object_property_add_bool(obj, "virtualization", virt_get_virt, > - virt_set_virt); > - object_property_set_description(obj, "virtualization", > - "Set on/off to enable/disable emulating > a " > - "guest CPU which implements the ARM " > - "Virtualization Extensions"); > > /* High memory is enabled by default */ > vms->highmem = true; > - object_property_add_bool(obj, "highmem", virt_get_highmem, > - virt_set_highmem); > - object_property_set_description(obj, "highmem", > - "Set on/off to enable/disable using " > - "physical address space above 32 bits"); > vms->gic_version = VIRT_GIC_VERSION_NOSEL; > - object_property_add_str(obj, "gic-version", virt_get_gic_version, > - virt_set_gic_version); > - object_property_set_description(obj, "gic-version", > - "Set GIC version. " > - "Valid values are 2, 3, host and max"); > > vms->highmem_ecam = !vmc->no_highmem_ecam; > > @@ -2500,26 +2520,12 @@ static void virt_instance_init(Object *obj) > > /* Default disallows iommu instantiation */ > vms->iommu = VIRT_IOMMU_NONE; > - object_property_add_str(obj, "iommu", virt_get_iommu, virt_set_iommu); > - object_property_set_description(obj, "iommu", > - "Set the IOMMU type. " > - "Valid values are none and smmuv3"); > > /* Default disallows RAS instantiation */ > vms->ras = false; > - object_property_add_bool(obj, "ras", virt_get_ras, > - virt_set_ras); > - object_property_set_description(obj, "ras", > - "Set on/off to enable/disable reporting > host memory errors " > - "to a KVM guest using ACPI and guest > external abort exceptions"); > > /* MTE is disabled by default. */ > vms->mte = false; > - object_property_add_bool(obj, "mte", virt_get_mte, virt_set_mte); > - object_property_set_description(obj, "mte", > - "Set on/off to enable/disable emulating > a " > - "guest CPU which implements the ARM " > - "Memory Tagging Extension"); > > vms->irqmap = a15irqmap; >