summaryrefslogtreecommitdiff
path: root/SConstruct
diff options
context:
space:
mode:
authorGiacomo Travaglini <giacomo.travaglini@arm.com>2019-08-27 11:38:55 +0100
committerGiacomo Travaglini <giacomo.travaglini@arm.com>2019-09-06 11:53:49 +0000
commit3093d65ad37a820681ea88cbb70c2e70c4b1957c (patch)
treec5d24e20d25fc979b7bf515a8273aa368b2a59c2 /SConstruct
parentc1458b5d583f6e1eca90c2246f3f2429a02383f4 (diff)
downloadgem5-3093d65ad37a820681ea88cbb70c2e70c4b1957c.tar.xz
dev-arm: Rewrite GICv3 update
The GICv3 update methods are method which are invoked anytime the model needs to evaluate a change in its state, which most of the time means managing the state of an interrupt (forwarding it to a PE, deasserting it, etc). The way it is currently done is a little bit obscure and doesn't handle correctly IRQ prioritization. Example: An IRQ which is handled by the redistributor (PPI or LPI) was not competing with any pending interrupts coming from the distributor (SPIs) once raised by a peripheral. Also the way the pending state of an interrupt was removed at the cpu interface level wasn't happening in place where this was actually happening (E.g. when activating it), but happened with a weird fullUpdate semantic, where if there was a pending interrupt in a cpu interface, all cpu interfaces had their pending interrupt (if any) been disabled. With this patch, state update always starts at the distributor, and it goes down until the cpu interface where a Gicv3CPUInterface::update method selects the winning interrupt coming from distributor/redistributor to be forwarded to the PE. Change-Id: I1c517cbc4bf107cc2d7ae7beb2692e3cf5187a40 Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20614 Maintainer: Andreas Sandberg <andreas.sandberg@arm.com> Tested-by: kokoro <noreply+kokoro@google.com>
Diffstat (limited to 'SConstruct')
0 files changed, 0 insertions, 0 deletions