Message ID | 1528879723-24675-7-git-send-email-eric.auger@redhat.com |
---|---|
State | New |
Headers | show |
Series | KVM/ARM: virt-3.0: Multiple redistributor regions and 256MB ECAM region | expand |
On Wed, Jun 13, 2018 at 10:48:40AM +0200, Eric Auger wrote: > Depending on the number of smp_cpus we now register one or two > GICR structures. > > Signed-off-by: Eric Auger <eric.auger@redhat.com> > --- > hw/arm/virt-acpi-build.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c > index 74f5744..eefd1d4 100644 > --- a/hw/arm/virt-acpi-build.c > +++ b/hw/arm/virt-acpi-build.c > @@ -670,6 +670,7 @@ build_madt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) > > if (vms->gic_version == 3) { > AcpiMadtGenericTranslator *gic_its; > + int nb_redist_regions = virt_gicv3_redist_region_count(vms); > AcpiMadtGenericRedistributor *gicr = acpi_data_push(table_data, > sizeof *gicr); > > @@ -678,6 +679,14 @@ build_madt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) > gicr->base_address = cpu_to_le64(memmap[VIRT_GIC_REDIST].base); > gicr->range_length = cpu_to_le32(memmap[VIRT_GIC_REDIST].size); > > + if (nb_redist_regions == 2) { > + gicr = acpi_data_push(table_data, sizeof(*gicr)); > + gicr->type = ACPI_APIC_GENERIC_REDISTRIBUTOR; > + gicr->length = sizeof(*gicr); > + gicr->base_address = cpu_to_le64(memmap[VIRT_GIC_REDIST2].base); > + gicr->range_length = cpu_to_le32(memmap[VIRT_GIC_REDIST2].size); > + } > + > if (its_class_name() && !vmc->no_its) { > gic_its = acpi_data_push(table_data, sizeof *gic_its); > gic_its->type = ACPI_APIC_GENERIC_TRANSLATOR; > -- > 2.5.5 > > Reviewed-by: Andrew Jones <drjones@redhat.com>
diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 74f5744..eefd1d4 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -670,6 +670,7 @@ build_madt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) if (vms->gic_version == 3) { AcpiMadtGenericTranslator *gic_its; + int nb_redist_regions = virt_gicv3_redist_region_count(vms); AcpiMadtGenericRedistributor *gicr = acpi_data_push(table_data, sizeof *gicr); @@ -678,6 +679,14 @@ build_madt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) gicr->base_address = cpu_to_le64(memmap[VIRT_GIC_REDIST].base); gicr->range_length = cpu_to_le32(memmap[VIRT_GIC_REDIST].size); + if (nb_redist_regions == 2) { + gicr = acpi_data_push(table_data, sizeof(*gicr)); + gicr->type = ACPI_APIC_GENERIC_REDISTRIBUTOR; + gicr->length = sizeof(*gicr); + gicr->base_address = cpu_to_le64(memmap[VIRT_GIC_REDIST2].base); + gicr->range_length = cpu_to_le32(memmap[VIRT_GIC_REDIST2].size); + } + if (its_class_name() && !vmc->no_its) { gic_its = acpi_data_push(table_data, sizeof *gic_its); gic_its->type = ACPI_APIC_GENERIC_TRANSLATOR;
Depending on the number of smp_cpus we now register one or two GICR structures. Signed-off-by: Eric Auger <eric.auger@redhat.com> --- hw/arm/virt-acpi-build.c | 9 +++++++++ 1 file changed, 9 insertions(+)