diff options
author | Jieming Yin <jieming.yin@amd.com> | 2016-12-15 16:59:17 -0500 |
---|---|---|
committer | Jieming Yin <jieming.yin@amd.com> | 2016-12-15 16:59:17 -0500 |
commit | b9c7b8190c27ad161689934fa780859860cfd74f (patch) | |
tree | d619f13f20590cc41fbce7dd15e91758a4c0cf80 /src/mem/ruby/network/garnet2.0/NetworkInterface.hh | |
parent | cc1f5a4d1607a02246244b7a805cdb3b24bb259a (diff) | |
download | gem5-b9c7b8190c27ad161689934fa780859860cfd74f.tar.xz |
ruby: Detect garnet network-level deadlock.
This patch detects garnet network deadlock by monitoring
network interfaces. If a network interface continuously
fails to allocate virtual channels for a message, a
possible deadlock is detected.
Diffstat (limited to 'src/mem/ruby/network/garnet2.0/NetworkInterface.hh')
-rw-r--r-- | src/mem/ruby/network/garnet2.0/NetworkInterface.hh | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/mem/ruby/network/garnet2.0/NetworkInterface.hh b/src/mem/ruby/network/garnet2.0/NetworkInterface.hh index 85e0145af..f1d1fd505 100644 --- a/src/mem/ruby/network/garnet2.0/NetworkInterface.hh +++ b/src/mem/ruby/network/garnet2.0/NetworkInterface.hh @@ -83,6 +83,7 @@ class NetworkInterface : public ClockedObject, public Consumer int m_vc_round_robin; // For round robin scheduling flitBuffer *outFlitQueue; // For modeling link contention flitBuffer *outCreditQueue; + int m_deadlock_threshold; NetworkLink *inNetLink; NetworkLink *outNetLink; @@ -98,6 +99,8 @@ class NetworkInterface : public ClockedObject, public Consumer std::vector<MessageBuffer *> inNode_ptr; // The Message buffers that provides messages to the protocol std::vector<MessageBuffer *> outNode_ptr; + // When a vc stays busy for a long time, it indicates a deadlock + std::vector<int> vc_busy_counter; bool flitisizeMessage(MsgPtr msg_ptr, int vnet); int calculateVC(int vnet); |