[gem5-dev] [S] Change in gem5/gem5[develop]: systemc: Enable DMI in the non-blocking/timing mode bridge.

2022-12-07 Thread Gabe Black (Gerrit) via gem5-dev
Gabe Black has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/65754?usp=email )


Change subject: systemc: Enable DMI in the non-blocking/timing mode bridge.
..

systemc: Enable DMI in the non-blocking/timing mode bridge.

Change-Id: Ia618081e2dbf8b49f62480ac5dc29f87100cd4f1
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/65754
Maintainer: Gabe Black 
Tested-by: kokoro 
Reviewed-by: Gabe Black 
---
M src/systemc/tlm_bridge/tlm_to_gem5.cc
1 file changed, 38 insertions(+), 2 deletions(-)

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




diff --git a/src/systemc/tlm_bridge/tlm_to_gem5.cc  
b/src/systemc/tlm_bridge/tlm_to_gem5.cc

index 47a2fba..c02efe7 100644
--- a/src/systemc/tlm_bridge/tlm_to_gem5.cc
+++ b/src/systemc/tlm_bridge/tlm_to_gem5.cc
@@ -207,6 +207,29 @@
 TlmToGem5Bridge::sendBeginResp(tlm::tlm_generic_payload ,
  sc_core::sc_time )
 {
+MemBackdoor::Flags flags;
+switch (trans.get_command()) {
+  case tlm::TLM_READ_COMMAND:
+flags = MemBackdoor::Readable;
+break;
+  case tlm::TLM_WRITE_COMMAND:
+flags = MemBackdoor::Writeable;
+break;
+  default:
+panic("TlmToGem5Bridge: "
+"received transaction with unsupported command");
+}
+Addr start_addr = trans.get_address();
+Addr length = trans.get_data_length();
+
+MemBackdoorReq req({start_addr, start_addr + length}, flags);
+MemBackdoorPtr backdoor = nullptr;
+
+bmp.sendMemBackdoorReq(req, backdoor);
+
+if (backdoor)
+trans.set_dmi_allowed(true);
+
 tlm::tlm_phase phase = tlm::BEGIN_RESP;

 auto status = socket->nb_transport_bw(trans, phase, delay);
@@ -574,12 +597,12 @@
 DPRINTF(TlmBridge, "register blocking interface");
 socket.register_b_transport(
 this, ::b_transport);
-socket.register_get_direct_mem_ptr(
-this, ::get_direct_mem_ptr);
 } else {
 panic("gem5 operates neither in Timing nor in Atomic mode");
 }

+socket.register_get_direct_mem_ptr(
+this, ::get_direct_mem_ptr);
 socket.register_transport_dbg(
 this, ::transport_dbg);


--
To view, visit  
https://gem5-review.googlesource.com/c/public/gem5/+/65754?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: Ia618081e2dbf8b49f62480ac5dc29f87100cd4f1
Gerrit-Change-Number: 65754
Gerrit-PatchSet: 4
Gerrit-Owner: Gabe Black 
Gerrit-Reviewer: Earl Ou 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Jui-min Lee 
Gerrit-Reviewer: Yu-hsin Wang 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org


[gem5-dev] [S] Change in gem5/gem5[develop]: systemc: Enable DMI in the non-blocking/timing mode bridge.

2022-11-18 Thread Gabe Black (Gerrit) via gem5-dev
Gabe Black has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/65754?usp=email )



Change subject: systemc: Enable DMI in the non-blocking/timing mode bridge.
..

systemc: Enable DMI in the non-blocking/timing mode bridge.

Change-Id: Ia618081e2dbf8b49f62480ac5dc29f87100cd4f1
---
M src/systemc/tlm_bridge/tlm_to_gem5.cc
1 file changed, 34 insertions(+), 2 deletions(-)



diff --git a/src/systemc/tlm_bridge/tlm_to_gem5.cc  
b/src/systemc/tlm_bridge/tlm_to_gem5.cc

index 468ea83..bb8d578 100644
--- a/src/systemc/tlm_bridge/tlm_to_gem5.cc
+++ b/src/systemc/tlm_bridge/tlm_to_gem5.cc
@@ -241,6 +241,29 @@

 trans.acquire();

+MemBackdoor::Flags flags;
+switch (trans.get_command()) {
+  case tlm::TLM_READ_COMMAND:
+flags = MemBackdoor::Readable;
+break;
+  case tlm::TLM_WRITE_COMMAND:
+flags = MemBackdoor::Writeable;
+break;
+  default:
+panic("TlmToGem5Bridge: "
+"received transaction with unsupported command");
+}
+Addr start_addr = trans.get_address();
+Addr length = trans.get_data_length();
+
+MemBackdoorReq req({start_addr, start_addr + length}, flags);
+MemBackdoorPtr backdoor = nullptr;
+
+bmp.sendMemBackdoorReq(req, backdoor);
+
+if (backdoor)
+trans.set_dmi_allowed(true);
+
 auto res = payload2packet(_id, trans);
 auto pkt = res.first;
 pkt->pushSenderState(new Gem5SystemC::TlmSenderState(trans));
@@ -580,12 +603,12 @@
 DPRINTF(TlmBridge, "register blocking interface");
 socket.register_b_transport(
 this, ::b_transport);
-socket.register_get_direct_mem_ptr(
-this, ::get_direct_mem_ptr);
 } else {
 panic("gem5 operates neither in Timing nor in Atomic mode");
 }

+socket.register_get_direct_mem_ptr(
+this, ::get_direct_mem_ptr);
 socket.register_transport_dbg(
 this, ::transport_dbg);


--
To view, visit  
https://gem5-review.googlesource.com/c/public/gem5/+/65754?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: Ia618081e2dbf8b49f62480ac5dc29f87100cd4f1
Gerrit-Change-Number: 65754
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black 
Gerrit-CC: Gabe Black 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org