ruby: Check all VNETs for injection in garnet NetworkInterface
authorMatthew Poremba <matthew.poremba@amd.com>
Thu, 19 Jan 2017 16:58:49 +0000 (11:58 -0500)
committerMatthew Poremba <matthew.poremba@amd.com>
Thu, 19 Jan 2017 16:58:49 +0000 (11:58 -0500)
commit501f1709240f51d4debbdacb388f2d939aef9ca0
tree781adce12edee43c4514f8e0a3d34c0afcb8debf
parent1ced08c85055d5da845ca549c0f5fcea65ee3e08
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.
src/mem/ruby/network/garnet2.0/NetworkInterface.cc