summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnouk Van Laer <anouk.vanlaer@arm.com>2018-10-24 09:49:53 +0100
committerAnouk Van Laer <anouk.vanlaer@arm.com>2018-11-05 09:56:37 +0000
commit33dc762d67b0337e12c1cfcdbbd14916c84d92de (patch)
treeea1380dfee16a739316a3bf6b7dec079f86e3d5f
parent0e9da43cb63cb6876da608bef980d763d58e4381 (diff)
downloadgem5-33dc762d67b0337e12c1cfcdbbd14916c84d92de.tar.xz
arch, arm: Return s1Req upon fault in s2Lookup
When a s2Lookup object is created, a new request is created, based upon the original, stage 1 request sent out by the CPU. When a fault occurs during the second stage of translation, this new request is returned. This can lead to issues with the O3 CPU. The O3 fetch stage will not acknowledge the fault as it is a different request than the one it sent out and does not contain a contextID. This commit rectifies this. Change-Id: I21cb7377a59aed9d90d99f048b2106eaf219e93a Reviewed-by: Ciro Santilli <ciro.santilli@arm.com> Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/13782 Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
-rw-r--r--src/arch/arm/stage2_lookup.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/arch/arm/stage2_lookup.cc b/src/arch/arm/stage2_lookup.cc
index e74ec9071..b5e11638b 100644
--- a/src/arch/arm/stage2_lookup.cc
+++ b/src/arch/arm/stage2_lookup.cc
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010-2013, 2016 ARM Limited
+ * Copyright (c) 2010-2013, 2016, 2018 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -191,7 +191,8 @@ Stage2LookUp::finish(const Fault &_fault, const RequestPtr &req,
mergeTe(req, mode);
if (fault != NoFault) {
- transState->finish(fault, req, tc, mode);
+ // Returning with a fault requires the original request
+ transState->finish(fault, s1Req, tc, mode);
} else if (timing) {
// Now notify the original stage 1 translation that we finally have
// a result