changeset 588a45268ce4 in /z/repo/gem5 details: http://repo.gem5.org/gem5?cmd=changeset;node=588a45268ce4 description: 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: src/mem/ruby/network/garnet2.0/NetworkInterface.cc | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) diffs (12 lines): diff -r 97eebddaae84 -r 588a45268ce4 src/mem/ruby/network/garnet2.0/NetworkInterface.cc --- a/src/mem/ruby/network/garnet2.0/NetworkInterface.cc Wed Nov 09 14:27:40 2016 -0600 +++ b/src/mem/ruby/network/garnet2.0/NetworkInterface.cc Thu Jan 19 11:58:49 2017 -0500 @@ -159,8 +159,6 @@ msg_ptr = b->peekMsgPtr(); if (flitisizeMessage(msg_ptr, vnet)) { b->dequeue(curTime); - } else { - break; } } } _______________________________________________ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev