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