ruby: set SenderMachine in messages of MOESI_CMP_directory
authorLluc Alvarez <lluc.alvarez@bsc.es>
Wed, 30 Oct 2013 15:35:06 +0000 (10:35 -0500)
committerLluc Alvarez <lluc.alvarez@bsc.es>
Wed, 30 Oct 2013 15:35:06 +0000 (10:35 -0500)
This patch adds missing initializations of the SenderMachine field of
out_msg's when thery are created in the L2 cache controller of the
MOESI_CMP_directory coherence protocol. When an out_msg is created and this
field is left uninitialized, it is set to the default value MachineType_NUM.
This causes a panic in the MachineType_to_string function when gem5 is
executed with the Ruby debug flag on and it tries to print the message.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

src/mem/protocol/MOESI_CMP_directory-L2cache.sm

index de776192dcb34e254f613132203df4da326201da..232f359ad474dcc373a68e89cf84351fded47f72 100644 (file)
@@ -747,6 +747,7 @@ machine(L2Cache, "Token protocol")
       out_msg.Addr := address;
       out_msg.Type := CoherenceResponseType:DATA;
       out_msg.Sender := machineID;
+      out_msg.SenderMachine := MachineType:L2Cache;
       out_msg.Destination.addNetDest(tbe.L1_GetS_IDs);
       out_msg.DataBlk := tbe.DataBlk;
       // out_msg.Dirty := tbe.Dirty;
@@ -811,6 +812,7 @@ machine(L2Cache, "Token protocol")
         out_msg.Addr := address;
         out_msg.Type := CoherenceResponseType:DATA;
         out_msg.Sender := machineID;
+        out_msg.SenderMachine := MachineType:L2Cache;
         out_msg.Destination.add(in_msg.Requestor);
         out_msg.DataBlk := tbe.DataBlk;
         // out_msg.Dirty := tbe.Dirty;
@@ -830,6 +832,7 @@ machine(L2Cache, "Token protocol")
       out_msg.Addr := address;
       out_msg.Type := CoherenceResponseType:DATA;
       out_msg.Sender := machineID;
+      out_msg.SenderMachine := MachineType:L2Cache;
       out_msg.Destination.addNetDest(tbe.Fwd_GetS_IDs);
       out_msg.DataBlk := tbe.DataBlk;
       // out_msg.Dirty := tbe.Dirty;
@@ -866,6 +869,7 @@ machine(L2Cache, "Token protocol")
         out_msg.Addr := address;
         out_msg.Type := CoherenceResponseType:DATA;
         out_msg.Sender := machineID;
+        out_msg.SenderMachine := MachineType:L2Cache;
         out_msg.Destination.add(in_msg.Requestor);
         out_msg.DataBlk := cache_entry.DataBlk;
         // out_msg.Dirty := cache_entry.Dirty;
@@ -925,6 +929,7 @@ machine(L2Cache, "Token protocol")
         out_msg.Addr := address;
         out_msg.Type := CoherenceResponseType:DATA;
         out_msg.Sender := machineID;
+        out_msg.SenderMachine := MachineType:L2Cache;
         out_msg.Destination.add(in_msg.Requestor);
         out_msg.DataBlk := cache_entry.DataBlk;
         // out_msg.Dirty := cache_entry.Dirty;
@@ -944,6 +949,7 @@ machine(L2Cache, "Token protocol")
         out_msg.Addr := address;
         out_msg.Type := CoherenceResponseType:DATA_EXCLUSIVE;
         out_msg.Sender := machineID;
+        out_msg.SenderMachine := MachineType:L2Cache;
         out_msg.Destination.add(in_msg.Requestor);
         out_msg.DataBlk := cache_entry.DataBlk;
         out_msg.Dirty := cache_entry.Dirty;