From: Peter Maydell Date: Fri, 8 Apr 2022 14:15:44 +0000 (+0100) Subject: hw/intc/arm_gicv3_redist: Implement gicv3_redist_vinvall() X-Git-Tag: v7.1.0-rc0~133^2~26 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=e031346d98f7b45d33e68d9650e44d4f86e81627;p=users%2Fdwmw2%2Fqemu.git 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 Reviewed-by: Richard Henderson Message-id: 20220408141550.1271295-36-peter.maydell@linaro.org --- 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)