dev, arm: Add draining to the GIC model
authorAndreas Sandberg <andreas.sandberg@arm.com>
Wed, 17 Feb 2016 14:50:41 +0000 (08:50 -0600)
committerAndreas Sandberg <andreas.sandberg@arm.com>
Mon, 13 Mar 2017 12:10:52 +0000 (12:10 +0000)
commit3e200455bd9c9360812d4f6eeef7bf60b70ea213
treea3c2125341a00a7b9fdb69bd49aa06253966a56e
parent35cb11f14e620aabbe1ab40a61748d5948a447b7
dev, arm: Add draining to the GIC model

The GIC model currently adds a delay to interrupts when posting them
to a target CPU. This means that an interrupt signal will be
represented by an event for a short period of time. We currently
ignore this when draining and serialize the tick when the interrupt
will fire. Upon loading the checkpoint, the simulated GIC reschedules
the pending events. This behaviour is undesirable when we implement
support for switching between in-kernel GIC emulation and gem5 GIC
emulation. In that case, the (kernel) GIC model gets a lot simpler if
we don't need to worry about in-flight interrupts from the gem5 GIC.

This changeset adds a draining check to force the GIC into a state
where all interrupts have been delivered prior to checkpointing/CPU
switching. It also removes the now redundant serialization of
interrupt events.

Change-Id: I8b8b080aa291ca029a3a7bdd1777f1fcd5b01179
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2331
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
src/dev/arm/gic_pl390.cc
src/dev/arm/gic_pl390.hh