diff options
author | Matthew Poremba <matthew.poremba@amd.com> | 2017-01-19 11:58:49 -0500 |
---|---|---|
committer | Matthew Poremba <matthew.poremba@amd.com> | 2017-01-19 11:58:49 -0500 |
commit | 501f1709240f51d4debbdacb388f2d939aef9ca0 (patch) | |
tree | 781adce12edee43c4514f8e0a3d34c0afcb8debf /src/mem/ruby | |
parent | 1ced08c85055d5da845ca549c0f5fcea65ee3e08 (diff) | |
download | gem5-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/ruby')
-rw-r--r-- | src/mem/ruby/network/garnet2.0/NetworkInterface.cc | 2 |
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; } } } |