changeset c35b47fd0df8 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=c35b47fd0df8
description:
mem: Cancel cache retry event when blocking port
This patch solves the corner case scenario where the sendRetryEvent
could be
scheduled twice, when an io device stresses the IOcache in the system.
This
should not be possible in the cache system.
diffstat:
src/mem/cache/base.cc | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
diffs (24 lines):
diff -r 0245dca0f2a2 -r c35b47fd0df8 src/mem/cache/base.cc
--- a/src/mem/cache/base.cc Tue Mar 26 14:46:49 2013 -0400
+++ b/src/mem/cache/base.cc Tue Mar 26 14:46:51 2013 -0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 ARM Limited
+ * Copyright (c) 2012-2013 ARM Limited
* All rights reserved.
*
* The license below extends only to copyright in the software and shall
@@ -88,6 +88,13 @@
assert(!blocked);
DPRINTF(CachePort, "Cache port %s blocking new requests\n", name());
blocked = true;
+ // if we already scheduled a retry in this cycle, but it has not yet
+ // happened, cancel it
+ if (sendRetryEvent.scheduled()) {
+ owner.deschedule(sendRetryEvent);
+ DPRINTF(CachePort, "Cache port %s deschedule retry\n", name());
+ mustSendRetry = true;
+ }
}
void
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev