I noticed while working on the new-in-GICv4 ITS commands
that we'd forgotten to implement the GICv3 MOVI and MOVALL
commands. These move interrupts from one redistributor to
another; Linux doesn't use MOVALL but does use MOVI if
it wants to power down a CPU (when it needs to migrate
interrupts formerly targeting that CPU to a different one).
This patchseries starts with a couple of patches that I
found useful to improve the debug logging when I was
writing this. It then has a collection of fixes for various
minor bugs that I noticed while I was in the code (including
yet another fix to the table lookup bounds checking...).
Finally the last two patches implement the two new commands.
thanks
-- PMM
Peter Maydell (14):
target/arm: Log CPU index in 'Taking exception' log
hw/intc/arm_gicv3_its: Add tracepoints
hw/intc/arm_gicv3: Initialise dma_as in GIC, not ITS
hw/intc/arm_gicv3_its: Don't clear GITS_CREADR when GITS_CTLR.ENABLED
is set
hw/intc/arm_gicv3_its: Don't clear GITS_CWRITER on writes to
GITS_CBASER
hw/intc/arm_gicv3: Honour GICD_CTLR.EnableGrp1NS for LPIs
hw/intc/arm_gicv3_its: Sort ITS command list into numeric order
hw/intc/arm_gicv3_redist: Remove unnecessary zero checks
hw/intc/arm_gicv3: Set GICR_CTLR.CES if LPIs are supported
hw/intc/arm_gicv3_its: Provide read accessor for translation_ops
hw/intc/arm_gicv3_its: Make GITS_BASER<n> RAZ/WI for unimplemented
registers
hw/intc/arm_gicv3_its: Check table bounds against correct limit
hw/intc/arm_gicv3_its: Implement MOVALL
hw/intc/arm_gicv3_its: Implement MOVI
hw/intc/gicv3_internal.h | 43 ++++-
include/hw/intc/arm_gicv3_its_common.h | 1 -
target/arm/internals.h | 2 +-
hw/intc/arm_gicv3.c | 1 +
hw/intc/arm_gicv3_common.c | 9 +
hw/intc/arm_gicv3_its.c | 258 +++++++++++++++++++++++--
hw/intc/arm_gicv3_redist.c | 115 ++++++++++-
target/arm/helper.c | 9 +-
target/arm/m_helper.c | 2 +-
hw/intc/trace-events | 8 +
10 files changed, 416 insertions(+), 32 deletions(-)
--
2.25.1