aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2022-04-08 15:15:44 +0100
committerPeter Maydell <peter.maydell@linaro.org>2022-04-22 14:44:53 +0100
commite031346d98f7b45d33e68d9650e44d4f86e81627 (patch)
treeff040ce7bf6c532d8752dc8356f005fab40a6ee0
parentc6f797d519aa1c4dd2736b3ffc1f7722f2d3c3c3 (diff)
hw/intc/arm_gicv3_redist: Implement gicv3_redist_vinvall()
Implement the gicv3_redist_vinvall() function (previously left as a stub). This function handles the work of a VINVALL command: it must invalidate any cached information associated with a specific vCPU. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20220408141550.1271295-36-peter.maydell@linaro.org
-rw-r--r--hw/intc/arm_gicv3_redist.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/hw/intc/arm_gicv3_redist.c b/hw/intc/arm_gicv3_redist.c
index 78dcdcc762..34f4308e98 100644
--- a/hw/intc/arm_gicv3_redist.c
+++ b/hw/intc/arm_gicv3_redist.c
@@ -1090,7 +1090,13 @@ void gicv3_redist_mov_vlpi(GICv3CPUState *src, uint64_t src_vptaddr,
void gicv3_redist_vinvall(GICv3CPUState *cs, uint64_t vptaddr)
{
- /* The redistributor handling will be added in a subsequent commit */
+ if (!vcpu_resident(cs, vptaddr)) {
+ /* We don't have anything cached if the vCPU isn't resident */
+ return;
+ }
+
+ /* Otherwise, our only cached information is the HPPVLPI info */
+ gicv3_redist_update_vlpi(cs);
}
void gicv3_redist_inv_vlpi(GICv3CPUState *cs, int irq, uint64_t vptaddr)