dev-arm: Don't panic when EOIR a non active PPI
authorAdrien Pesle <adrien.pesle@arm.com>
Fri, 12 Oct 2018 10:42:33 +0000 (12:42 +0200)
committerGiacomo Travaglini <giacomo.travaglini@arm.com>
Wed, 17 Oct 2018 14:47:14 +0000 (14:47 +0000)
GIC architecture specification says that writing EOIR with
a not active irq it is an unpredictable behavior.
So, just warn when it happens for a PPI case, like it is
already done in SPI case.

Change-Id: Icb1b8f5690d5e87b15c3b0fe2ca0d37fdd4085ee
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13556
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

src/dev/arm/gic_v2.cc

index a24e5639106f783f2defcf64ab7a96aa3b35a6ae..293c72f1fadf0aa4fd7ed9424f0eea6882c369fc 100644 (file)
@@ -601,7 +601,7 @@ GicV2::writeCpu(ContextID ctx, Addr daddr, uint32_t data)
         } else if (iar.ack_id < (SGI_MAX + PPI_MAX) ) {
             uint32_t int_num = 1 << (iar.ack_id - SGI_MAX);
             if (!(cpuPpiActive[ctx] & int_num))
-                panic("CPU %d Done handling a PPI interrupt "
+                warn("CPU %d Done handling a PPI interrupt "
                       "that isn't active?\n", ctx);
             cpuPpiActive[ctx] &= ~int_num;
         } else {