From: Yu-hsin Wang Date: Wed, 27 Jan 2021 03:15:43 +0000 (+0800) Subject: systemc: set Gem5ToTlmBridge blockingRrequest with TLM_UPDATE returning X-Git-Tag: develop-gem5-snapshot~181 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f840d13c78d2346cef3240da9d9530e29bd025f8;p=gem5.git systemc: set Gem5ToTlmBridge blockingRrequest with TLM_UPDATE returning In Gem5ToTlmBridge::pec, the function expects blockingRequest should be set no matter the tlm peer returns TLM_UPDATE or TLM_ACCEPTED. However, current implementation only sets blockingRequest when the tlm peer returns TLM_ACCEPTED. We should also set blockingRequest when the tlm peer returns TLM_UPDATE. Change-Id: I87bba3201cd68d52ded93c9c200f4fa4a40bdf5b Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/39815 Reviewed-by: Earl Ou Maintainer: Gabe Black Tested-by: kokoro --- diff --git a/src/systemc/tlm_bridge/gem5_to_tlm.cc b/src/systemc/tlm_bridge/gem5_to_tlm.cc index 9d108761b..b80a083ac 100644 --- a/src/systemc/tlm_bridge/gem5_to_tlm.cc +++ b/src/systemc/tlm_bridge/gem5_to_tlm.cc @@ -364,6 +364,8 @@ Gem5ToTlmBridge::recvTimingReq(PacketPtr packet) } else if (status == tlm::TLM_UPDATED) { // The Timing annotation must be honored: sc_assert(phase == tlm::END_REQ || phase == tlm::BEGIN_RESP); + // Accepted but is now blocking until END_REQ (exclusion rule). + blockingRequest = trans; auto cb = [this, trans, phase]() { pec(*trans, phase); }; system->schedule(new EventFunctionWrapper(cb, "pec", true), curTick() + delay.value());