]> git.ipfire.org Git - thirdparty/qemu.git/commit - hw/intc/trace-events
hw/intc/arm_gicv3_cpuif: Support vLPIs
authorPeter Maydell <peter.maydell@linaro.org>
Fri, 8 Apr 2022 14:15:34 +0000 (15:15 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 22 Apr 2022 13:44:52 +0000 (14:44 +0100)
commitc3f21b065a41c14b6a18a38e417379ac75b9fc0e
tree27f4f0e28975392aea0b56b4f7ba829d3ae55f84
parent10337638bbaffa03f280a83ed23940aedc2de9ce
hw/intc/arm_gicv3_cpuif: Support vLPIs

The CPU interface changes to support vLPIs are fairly minor:
in the parts of the code that currently look at the list registers
to determine the highest priority pending virtual interrupt, we
must also look at the highest priority pending vLPI. To do this
we change hppvi_index() to check the vLPI and return a special-case
value if that is the right virtual interrupt to take. The callsites
(which handle HPPIR and IAR registers and the "raise vIRQ and vFIQ
lines" code) then have to handle this special-case value.

This commit includes two interfaces with the as-yet-unwritten
redistributor code:
 * the new GICv3CPUState::hppvlpi will be set by the redistributor
   (in the same way as the existing hpplpi does for physical LPIs)
 * when the CPU interface acknowledges a vLPI it needs to set it
   to non-pending; the new gicv3_redist_vlpi_pending() function
   (which matches the existing gicv3_redist_lpi_pending() used
   for physical LPIs) is a stub that will be filled in later

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220408141550.1271295-26-peter.maydell@linaro.org
hw/intc/arm_gicv3_common.c
hw/intc/arm_gicv3_cpuif.c
hw/intc/arm_gicv3_redist.c
hw/intc/gicv3_internal.h
hw/intc/trace-events
include/hw/intc/arm_gicv3_common.h