mirror of https://github.com/xemu-project/xemu.git
hw/arm/virt: Use qdev_prop_set_array()
Instead of manually setting "foo-len" and "foo[i]" properties, build a QList and use the new qdev_prop_set_array() helper to set the whole array property with a single call. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-ID: <20231109174240.72376-7-kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
50ab8648c0
commit
3c86b9dadc
hw/arm
|
@ -69,6 +69,7 @@
|
|||
#include "hw/firmware/smbios.h"
|
||||
#include "qapi/visitor.h"
|
||||
#include "qapi/qapi-visit-common.h"
|
||||
#include "qapi/qmp/qlist.h"
|
||||
#include "standard-headers/linux/input.h"
|
||||
#include "hw/arm/smmuv3.h"
|
||||
#include "hw/acpi/acpi.h"
|
||||
|
@ -752,14 +753,23 @@ static void create_gic(VirtMachineState *vms, MemoryRegion *mem)
|
|||
}
|
||||
|
||||
if (vms->gic_version != VIRT_GIC_VERSION_2) {
|
||||
QList *redist_region_count;
|
||||
uint32_t redist0_capacity = virt_redist_capacity(vms, VIRT_GIC_REDIST);
|
||||
uint32_t redist0_count = MIN(smp_cpus, redist0_capacity);
|
||||
|
||||
nb_redist_regions = virt_gicv3_redist_region_count(vms);
|
||||
|
||||
qdev_prop_set_uint32(vms->gic, "len-redist-region-count",
|
||||
nb_redist_regions);
|
||||
qdev_prop_set_uint32(vms->gic, "redist-region-count[0]", redist0_count);
|
||||
redist_region_count = qlist_new();
|
||||
qlist_append_int(redist_region_count, redist0_count);
|
||||
if (nb_redist_regions == 2) {
|
||||
uint32_t redist1_capacity =
|
||||
virt_redist_capacity(vms, VIRT_HIGH_GIC_REDIST2);
|
||||
|
||||
qlist_append_int(redist_region_count,
|
||||
MIN(smp_cpus - redist0_count, redist1_capacity));
|
||||
}
|
||||
qdev_prop_set_array(vms->gic, "redist-region-count",
|
||||
redist_region_count);
|
||||
|
||||
if (!kvm_irqchip_in_kernel()) {
|
||||
if (vms->tcg_its) {
|
||||
|
@ -768,14 +778,6 @@ static void create_gic(VirtMachineState *vms, MemoryRegion *mem)
|
|||
qdev_prop_set_bit(vms->gic, "has-lpi", true);
|
||||
}
|
||||
}
|
||||
|
||||
if (nb_redist_regions == 2) {
|
||||
uint32_t redist1_capacity =
|
||||
virt_redist_capacity(vms, VIRT_HIGH_GIC_REDIST2);
|
||||
|
||||
qdev_prop_set_uint32(vms->gic, "redist-region-count[1]",
|
||||
MIN(smp_cpus - redist0_count, redist1_capacity));
|
||||
}
|
||||
} else {
|
||||
if (!kvm_irqchip_in_kernel()) {
|
||||
qdev_prop_set_bit(vms->gic, "has-virtualization-extensions",
|
||||
|
@ -2748,6 +2750,7 @@ static void virt_machine_device_pre_plug_cb(HotplugHandler *hotplug_dev,
|
|||
virtio_md_pci_pre_plug(VIRTIO_MD_PCI(dev), MACHINE(hotplug_dev), errp);
|
||||
} else if (object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_IOMMU_PCI)) {
|
||||
hwaddr db_start = 0, db_end = 0;
|
||||
QList *reserved_regions;
|
||||
char *resv_prop_str;
|
||||
|
||||
if (vms->iommu != VIRT_IOMMU_NONE) {
|
||||
|
@ -2774,9 +2777,9 @@ static void virt_machine_device_pre_plug_cb(HotplugHandler *hotplug_dev,
|
|||
db_start, db_end,
|
||||
VIRTIO_IOMMU_RESV_MEM_T_MSI);
|
||||
|
||||
object_property_set_uint(OBJECT(dev), "len-reserved-regions", 1, errp);
|
||||
object_property_set_str(OBJECT(dev), "reserved-regions[0]",
|
||||
resv_prop_str, errp);
|
||||
reserved_regions = qlist_new();
|
||||
qlist_append_str(reserved_regions, resv_prop_str);
|
||||
qdev_prop_set_array(dev, "reserved-regions", reserved_regions);
|
||||
g_free(resv_prop_str);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue