Yu-hsin Wang has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/63772?usp=email )

Change subject: systemc: associate tlm payload and gem5 packet in blocking interfaces
......................................................................

systemc: associate tlm payload and gem5 packet in blocking interfaces

TlmToGem5Bridge only associates the tlm payload and gem5 packet in
nb_transport case. We should also do the samething in blocking
interfaces. Otherwise, the downstream Gem5ToTlmBridge cannot get the
correct payload.

Change-Id: I85b213402d58d68641615a6cea04961f4a15f1ba
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/63772
Reviewed-by: Gabe Black <gabe.bl...@gmail.com>
Maintainer: Gabe Black <gabe.bl...@gmail.com>
Tested-by: kokoro <noreply+kok...@google.com>
---
M src/systemc/tlm_bridge/tlm_to_gem5.cc
1 file changed, 44 insertions(+), 2 deletions(-)

Approvals:
  Gabe Black: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass




diff --git a/src/systemc/tlm_bridge/tlm_to_gem5.cc b/src/systemc/tlm_bridge/tlm_to_gem5.cc
index 4cb8194..c3313da 100644
--- a/src/systemc/tlm_bridge/tlm_to_gem5.cc
+++ b/src/systemc/tlm_bridge/tlm_to_gem5.cc
@@ -219,8 +219,7 @@
     trans.acquire();

     auto [pkt, pkt_created] = payload2packet(_id, trans);
-    auto *tlmSenderState = new Gem5SystemC::TlmSenderState(trans);
-    pkt->pushSenderState(tlmSenderState);
+    pkt->pushSenderState(new Gem5SystemC::TlmSenderState(trans));

     // If the packet doesn't need a response, we should send BEGIN_RESP by
     // ourselves.
@@ -331,6 +330,7 @@
                                        sc_core::sc_time &t)
 {
     auto [pkt, pkt_created] = payload2packet(_id, trans);
+    pkt->pushSenderState(new Gem5SystemC::TlmSenderState(trans));

     MemBackdoorPtr backdoor = nullptr;
     Tick ticks = bmp.sendAtomicBackdoor(pkt, backdoor);
@@ -348,6 +348,13 @@
     // update time
     t += delay;

+    gem5::Packet::SenderState *senderState = pkt->popSenderState();
+    sc_assert(
+ nullptr != dynamic_cast<Gem5SystemC::TlmSenderState*>(senderState));
+
+    // clean up
+    delete senderState;
+
     if (pkt_created)
         destroyPacket(pkt);

@@ -360,8 +367,17 @@
 {
     auto [pkt, pkt_created] = payload2packet(_id, trans);
     if (pkt != nullptr) {
+        pkt->pushSenderState(new Gem5SystemC::TlmSenderState(trans));
+
         bmp.sendFunctional(pkt);

+        gem5::Packet::SenderState *senderState = pkt->popSenderState();
+        sc_assert(
+ nullptr != dynamic_cast<Gem5SystemC::TlmSenderState*>(senderState));
+
+        // clean up
+        delete senderState;
+
         if (pkt_created)
             destroyPacket(pkt);
     }
@@ -375,6 +391,7 @@
                                               tlm::tlm_dmi &dmi_data)
 {
     auto [pkt, pkt_created] = payload2packet(_id, trans);
+    pkt->pushSenderState(new Gem5SystemC::TlmSenderState(trans));

     MemBackdoorPtr backdoor = nullptr;
     bmp.sendAtomicBackdoor(pkt, backdoor);
@@ -400,6 +417,13 @@
         );
     }

+    gem5::Packet::SenderState *senderState = pkt->popSenderState();
+    sc_assert(
+ nullptr != dynamic_cast<Gem5SystemC::TlmSenderState*>(senderState));
+
+    // clean up
+    delete senderState;
+
     if (!pkt_created)
         destroyPacket(pkt);


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/63772?usp=email To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I85b213402d58d68641615a6cea04961f4a15f1ba
Gerrit-Change-Number: 63772
Gerrit-PatchSet: 8
Gerrit-Owner: Yu-hsin Wang <yuhsi...@google.com>
Gerrit-Reviewer: Earl Ou <shunhsin...@google.com>
Gerrit-Reviewer: Gabe Black <gabe.bl...@gmail.com>
Gerrit-Reviewer: Gabe Black <gabebl...@google.com>
Gerrit-Reviewer: Jui-min Lee <f...@google.com>
Gerrit-Reviewer: Yu-hsin Wang <yuhsi...@google.com>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-CC: Philip Metzler <cpm...@google.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org

Reply via email to