[PATCH 0/3] arm_gicv3: Support multiple redistributor regions

Peter Maydell posted 3 patches 4 years, 4 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210930150842.3810-1-peter.maydell@linaro.org
Maintainers: Peter Maydell <peter.maydell@linaro.org>
include/hw/intc/arm_gicv3_common.h | 14 ++++++--
hw/intc/arm_gicv3.c                | 12 +------
hw/intc/arm_gicv3_common.c         | 56 +++++++++++++++++++-----------
hw/intc/arm_gicv3_kvm.c            | 10 ++----
hw/intc/arm_gicv3_redist.c         | 40 +++++++++++----------
5 files changed, 73 insertions(+), 59 deletions(-)
[PATCH 0/3] arm_gicv3: Support multiple redistributor regions
Posted by Peter Maydell 4 years, 4 months ago
Our GICv3 QOM interface includes an array property
redist-region-count which allows board models to specify that the
registributor registers are not in a single contiguous range, but
split into multiple pieces.  We implemented this for KVM, but
currently the TCG GICv3 model insists that there is only one region.
You can see the limit being hit with a setup like:
  qemu-system-aarch64 -machine virt,gic-version=3 -smp 124

This patchset adds support for multiple regions to the emulated
GICv3, which means that the virt board now supports more than
123 CPUs for TCG as well as for KVM.

Patches 1 and 2 are smaller initial cleanup; patch 3 is the
bulk of the feature work.

(This turned out to be pretty simple; we should probably have
done it before...)

-- PMM

Peter Maydell (3):
  hw/intc/arm_gicv3: Move checking of redist-region-count to
    arm_gicv3_common_realize
  hw/intc/arm_gicv3: Set GICR_TYPER.Last correctly when
    nb_redist_regions > 1
  hw/intc/arm_gicv3: Support multiple redistributor regions

 include/hw/intc/arm_gicv3_common.h | 14 ++++++--
 hw/intc/arm_gicv3.c                | 12 +------
 hw/intc/arm_gicv3_common.c         | 56 +++++++++++++++++++-----------
 hw/intc/arm_gicv3_kvm.c            | 10 ++----
 hw/intc/arm_gicv3_redist.c         | 40 +++++++++++----------
 5 files changed, 73 insertions(+), 59 deletions(-)

-- 
2.20.1