changeset ebd44da818d5 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=ebd44da818d5
description:
        ruby: Fixed a deadlock when restoring a checkpoint with garnet
        This patch fixes a problem where in Garnet, the enqueue time in the
        VCallocator and the SWallocator which is of type Cycles was being stored
        inside a variable with int type.

        This lead to a known problem restoring checkpoints with garnet & the 
fixed
        pipeline enabled. That value was really big and didn't fit in the 
variable
        overflowing it, therefore some conditions on the VC allocation stage & 
the
        SW allocation stage were not met and the packets didn't advance through 
the
        network, leading to a deadlock panic right after the checkpoint was 
restored.

        Committed by: Nilay Vaish <[email protected]>

diffstat:

 src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc |  2 +-
 src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc |  2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diffs (24 lines):

diff -r cd0a9c975c8c -r ebd44da818d5 
src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc
--- a/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc       Thu Oct 
17 10:20:45 2013 -0500
+++ b/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc       Wed Oct 
30 10:35:05 2013 -0500
@@ -133,7 +133,7 @@
 SWallocator_d::is_candidate_inport(int inport, int invc)
 {
     int outport = m_input_unit[inport]->get_route(invc);
-    int t_enqueue_time = m_input_unit[inport]->get_enqueue_time(invc);
+    Cycles t_enqueue_time = m_input_unit[inport]->get_enqueue_time(invc);
     int t_vnet = get_vnet(invc);
     int vc_base = t_vnet*m_vc_per_vnet;
     if ((m_router->get_net_ptr())->isVNetOrdered(t_vnet)) {
diff -r cd0a9c975c8c -r ebd44da818d5 
src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc
--- a/src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc       Thu Oct 
17 10:20:45 2013 -0500
+++ b/src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc       Wed Oct 
30 10:35:05 2013 -0500
@@ -124,7 +124,7 @@
 {
     int outport = m_input_unit[inport_iter]->get_route(invc_iter);
     int vnet = get_vnet(invc_iter);
-    int t_enqueue_time =
+    Cycles t_enqueue_time =
         m_input_unit[inport_iter]->get_enqueue_time(invc_iter);
 
     int invc_base = vnet*m_vc_per_vnet;
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to