]> Git Repo - qemu.git/commitdiff
hw/arm/virt: Add a control for the the highmem redistributors
authorMarc Zyngier <[email protected]>
Fri, 14 Jan 2022 14:07:37 +0000 (14:07 +0000)
committerPeter Maydell <[email protected]>
Thu, 20 Jan 2022 11:47:52 +0000 (11:47 +0000)
Just like we can control the enablement of the highmem PCIe region
using highmem_ecam, let's add a control for the highmem GICv3
redistributor region.

Similarily to highmem_ecam, these redistributors are disabled when
highmem is off.

Reviewed-by: Andrew Jones <[email protected]>
Signed-off-by: Marc Zyngier <[email protected]>
Reviewed-by: Eric Auger <[email protected]>
Message-id: 20220114140741.1358263[email protected]
Signed-off-by: Peter Maydell <[email protected]>
hw/arm/virt-acpi-build.c
hw/arm/virt.c
include/hw/arm/virt.h

index 449fab00805a4404ea73b6fa189f7090890b9fd0..0757c28f69c02c74a4ad95e2f05e270aa38f7adc 100644 (file)
@@ -947,6 +947,8 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables)
     acpi_add_table(table_offsets, tables_blob);
     build_fadt_rev5(tables_blob, tables->linker, vms, dsdt);
 
+    vms->highmem_redists &= vms->highmem;
+
     acpi_add_table(table_offsets, tables_blob);
     build_madt(tables_blob, tables->linker, vms);
 
index 16369ce10e4ee210ed5280c7b794f93d83405b35..62bdce1eb4bd4e355bde85cf1d0970c979318656 100644 (file)
@@ -2113,6 +2113,7 @@ static void machvirt_init(MachineState *machine)
     virt_flash_fdt(vms, sysmem, secure_sysmem ?: sysmem);
 
     vms->highmem_mmio &= vms->highmem;
+    vms->highmem_redists &= vms->highmem;
 
     create_gic(vms, sysmem);
 
@@ -2902,6 +2903,7 @@ static void virt_instance_init(Object *obj)
 
     vms->highmem_ecam = !vmc->no_highmem_ecam;
     vms->highmem_mmio = true;
+    vms->highmem_redists = true;
 
     if (vmc->no_its) {
         vms->its = false;
index cf5d8b83ded34ea2caf0ea24c302d510f82b29fe..c1ea17d0def058019571a0d2f90d567cbd076b00 100644 (file)
@@ -144,6 +144,7 @@ struct VirtMachineState {
     bool highmem;
     bool highmem_ecam;
     bool highmem_mmio;
+    bool highmem_redists;
     bool its;
     bool tcg_its;
     bool virt;
@@ -191,7 +192,8 @@ static inline int virt_gicv3_redist_region_count(VirtMachineState *vms)
 
     assert(vms->gic_version == VIRT_GIC_VERSION_3);
 
-    return MACHINE(vms)->smp.cpus > redist0_capacity ? 2 : 1;
+    return (MACHINE(vms)->smp.cpus > redist0_capacity &&
+            vms->highmem_redists) ? 2 : 1;
 }
 
 #endif /* QEMU_ARM_VIRT_H */
This page took 0.039527 seconds and 4 git commands to generate.