summaryrefslogtreecommitdiff
path: root/src/mem
diff options
context:
space:
mode:
authorMatthew Poremba <matthew.poremba@amd.com>2017-01-19 11:58:49 -0500
committerMatthew Poremba <matthew.poremba@amd.com>2017-01-19 11:58:49 -0500
commit501f1709240f51d4debbdacb388f2d939aef9ca0 (patch)
tree781adce12edee43c4514f8e0a3d34c0afcb8debf /src/mem
parent1ced08c85055d5da845ca549c0f5fcea65ee3e08 (diff)
downloadgem5-501f1709240f51d4debbdacb388f2d939aef9ca0.tar.xz
ruby: Check all VNETs for injection in garnet NetworkInterface
The NetworkInterface wakeup currently iterates over all VNETs and breaks the loop if a VNET is unable to allocate a VC. This can cause a deadlock if a lower numbered VNET is unable to allocate a VC while a higher numbered VNET has idle VCs. This seems like a bug as Garnet 1.0 uses a while loop over an if-statement, suggesting the break was intended for this while loop. This patch removes the break statement, which allows up to one message to be dequeued from a VNET and injected into the network.
Diffstat (limited to 'src/mem')
-rw-r--r--src/mem/ruby/network/garnet2.0/NetworkInterface.cc2
1 files changed, 0 insertions, 2 deletions
diff --git a/src/mem/ruby/network/garnet2.0/NetworkInterface.cc b/src/mem/ruby/network/garnet2.0/NetworkInterface.cc
index 0ac55d260..fe9f1b87e 100644
--- a/src/mem/ruby/network/garnet2.0/NetworkInterface.cc
+++ b/src/mem/ruby/network/garnet2.0/NetworkInterface.cc
@@ -159,8 +159,6 @@ NetworkInterface::wakeup()
msg_ptr = b->peekMsgPtr();
if (flitisizeMessage(msg_ptr, vnet)) {
b->dequeue(curTime);
- } else {
- break;
}
}
}