From b81a66d7751124cb78d521bc259742c39a28b902 Mon Sep 17 00:00:00 2001 From: Gabor Dozsa Date: Thu, 15 Feb 2018 11:46:19 +0000 Subject: cpu-o3: Reset fault status for mem access in pushRequest Reset the fault status always before translation is initiated in pushRequest() in the LSQ. This avoids the problem when a strictly ordered load needs to be re-executed multiple times. If the translation is delayed at one of those attempts then the internal panicFault (from the previous execution attempt) can get fired at commit. Change-Id: I0c22b2f7afd6e2cb00bc359a4a01042efd2d01d2 Signed-off-by: Gabor Dozsa Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19388 Reviewed-by: Ciro Santilli Maintainer: Andreas Sandberg Tested-by: kokoro --- src/cpu/o3/lsq_impl.hh | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/cpu/o3') diff --git a/src/cpu/o3/lsq_impl.hh b/src/cpu/o3/lsq_impl.hh index 70621a523..d4e0a289e 100644 --- a/src/cpu/o3/lsq_impl.hh +++ b/src/cpu/o3/lsq_impl.hh @@ -724,6 +724,10 @@ LSQ::pushRequest(const DynInstPtr& inst, bool isLoad, uint8_t *data, inst->setRequest(); req->taskId(cpu->taskId()); + // There might be fault from a previous execution attempt if this is + // a strictly ordered load + inst->getFault() = NoFault; + req->initiateTranslation(); } -- cgit v1.2.3