diff options
author | Anouk Van Laer <anouk.vanlaer@arm.com> | 2018-10-24 09:49:53 +0100 |
---|---|---|
committer | Anouk Van Laer <anouk.vanlaer@arm.com> | 2018-11-05 09:56:37 +0000 |
commit | 33dc762d67b0337e12c1cfcdbbd14916c84d92de (patch) | |
tree | ea1380dfee16a739316a3bf6b7dec079f86e3d5f /src/arch | |
parent | 0e9da43cb63cb6876da608bef980d763d58e4381 (diff) | |
download | gem5-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>
Diffstat (limited to 'src/arch')
-rw-r--r-- | src/arch/arm/stage2_lookup.cc | 5 |
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 |