clr_trbe_status() clears the buffer status and syndrome fields, but leaves TRBSR_EL1.EA unchanged. After an external abort, this indication can survive into a later perf session on the same CPU.
Clear EA along with the other status fields while TRBE is disabled. The status captured for the current fault remains available for classification, so external aborts are still handled as fatal.
Fixes: 3fbf7f011f24 ("coresight: sink: Add TRBE driver") Signed-off-by: Leo Yan leo.yan@arm.com --- drivers/hwtracing/coresight/coresight-trbe.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/drivers/hwtracing/coresight/coresight-trbe.c b/drivers/hwtracing/coresight/coresight-trbe.c index 9dfc6bb7afb4c42dfdec643ee7e4f2f193e2b70c..26e7554d6bdd31f8a55a8bc3a7b6d4c49b984b9b 100644 --- a/drivers/hwtracing/coresight/coresight-trbe.c +++ b/drivers/hwtracing/coresight/coresight-trbe.c @@ -608,6 +608,7 @@ static void clr_trbe_status(void) trbsr &= ~TRBSR_EL1_IRQ; trbsr &= ~TRBSR_EL1_TRG; trbsr &= ~TRBSR_EL1_WRAP; + trbsr &= ~TRBSR_EL1_EA; trbsr &= ~TRBSR_EL1_EC_MASK; trbsr &= ~TRBSR_EL1_BSC_MASK; trbsr &= ~TRBSR_EL1_S;