From: Javier Bueno Date: Tue, 2 Apr 2019 21:34:20 +0000 (+0200) Subject: mem-cache: AMPM Prefetcher fails when restoring from a checkpoint X-Git-Tag: v19.0.0.0~987 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c2c1a976ee76cf3064045a21187ca985ca88a347;p=gem5.git mem-cache: AMPM Prefetcher fails when restoring from a checkpoint The preriodic event triggers an assertion due to an incorrect tick value to schedule when restoring from a checkpoint. Change-Id: I9454dd0c97d5a098f8a409886e63f7a7e990947c Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17732 Reviewed-by: Daniel Carvalho Reviewed-by: Andreas Sandberg Reviewed-by: Nikos Nikoleris Maintainer: Nikos Nikoleris --- diff --git a/src/mem/cache/prefetch/access_map_pattern_matching.cc b/src/mem/cache/prefetch/access_map_pattern_matching.cc index df2a9f7ec..731d6069c 100644 --- a/src/mem/cache/prefetch/access_map_pattern_matching.cc +++ b/src/mem/cache/prefetch/access_map_pattern_matching.cc @@ -57,9 +57,12 @@ AccessMapPatternMatching::AccessMapPatternMatching( { fatal_if(!isPowerOf2(hotZoneSize), "the hot zone size must be a power of 2"); - if (!epochEvent.scheduled()) { - schedule(epochEvent, clockEdge(epochCycles)); - } +} + +void +AccessMapPatternMatching::startup() +{ + schedule(epochEvent, clockEdge(epochCycles)); } void @@ -153,6 +156,7 @@ AccessMapPatternMatching::calculatePrefetch( std::vector &addresses) { assert(addresses.empty()); + bool is_secure = pfi.isSecure(); Addr am_addr = pfi.getAddr() / hotZoneSize; Addr current_block = (pfi.getAddr() % hotZoneSize) / blkSize; diff --git a/src/mem/cache/prefetch/access_map_pattern_matching.hh b/src/mem/cache/prefetch/access_map_pattern_matching.hh index 0968e6475..397bc788a 100644 --- a/src/mem/cache/prefetch/access_map_pattern_matching.hh +++ b/src/mem/cache/prefetch/access_map_pattern_matching.hh @@ -180,6 +180,7 @@ class AccessMapPatternMatching : public ClockedObject AccessMapPatternMatching(const AccessMapPatternMatchingParams* p); ~AccessMapPatternMatching() {} + void startup() override; void calculatePrefetch(const BasePrefetcher::PrefetchInfo &pfi, std::vector &addresses); };