]> git.ipfire.org Git - thirdparty/qemu.git/commit
hw/intc/arm_gicv3_its: Implement INV command properly
authorPeter Maydell <peter.maydell@linaro.org>
Fri, 8 Apr 2022 14:15:27 +0000 (15:15 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 22 Apr 2022 13:44:52 +0000 (14:44 +0100)
commita686e85d2b4a3b95d97d01dfa3fd4607f1216cf0
tree561e7e710e4be26e1734adf6c1de2683f3800add
parentf76ba95a03921b71c2a2f2069e1ddf890796f1e5
hw/intc/arm_gicv3_its: Implement INV command properly

We were previously implementing INV (like INVALL) to just blow away
cached highest-priority-pending-LPI information on all connected
redistributors.  For GICv4.0, this isn't going to be sufficient,
because the LPI we are invalidating cached information for might be
either physical or virtual, and the required action is different for
those two cases.  So we need to do the full process of looking up the
ITE from the devid and eventid.  This also means we can do the error
checks that the spec lists for this command.

Split out INV handling into a process_inv() function like our other
command-processing functions.  For the moment, stick to handling only
physical LPIs; we will add the vLPI parts later.

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