Shivani Parekh has uploaded this change for review. (
https://gem5-review.googlesource.com/c/public/gem5/+/33521 )
Change subject: dev-arm: Update master/slave variables -smmu
......................................................................
dev-arm: Update master/slave variables -smmu
Change-Id: I9fcb9374e5de4daa2212f8d9a441010878d015bf
---
M src/dev/arm/smmu_v3.cc
M src/dev/arm/smmu_v3.hh
M src/dev/arm/smmu_v3_proc.cc
M src/dev/arm/smmu_v3_slaveifc.cc
M src/dev/arm/smmu_v3_slaveifc.hh
M src/dev/arm/smmu_v3_transl.cc
6 files changed, 49 insertions(+), 47 deletions(-)
diff --git a/src/dev/arm/smmu_v3.cc b/src/dev/arm/smmu_v3.cc
index f9d99da..d3d8a53 100644
--- a/src/dev/arm/smmu_v3.cc
+++ b/src/dev/arm/smmu_v3.cc
@@ -54,9 +54,9 @@
SMMUv3::SMMUv3(SMMUv3Params *params) :
ClockedObject(params),
system(*params->system),
- masterId(params->system->getMasterId(this)),
- masterPort(name() + ".master", *this),
- masterTableWalkPort(name() + ".master_walker", *this),
+ _id(params->system->getMasterId(this)),
+ requestPort(name() + ".requestor", *this),
+ requestTableWalkPort(name() + ".requestor_walker", *this),
controlPort(name() + ".control", *this, params->reg_map),
tlb(params->tlb_entries, params->tlb_assoc, params->tlb_policy),
configCache(params->cfg_entries, params->cfg_assoc,
params->cfg_policy),
@@ -74,14 +74,14 @@
walkCacheNonfinalEnable(params->wc_nonfinal_enable),
walkCacheS1Levels(params->wc_s1_levels),
walkCacheS2Levels(params->wc_s2_levels),
- masterPortWidth(params->master_port_width),
+ requestPortWidth(params->request_port_width),
tlbSem(params->tlb_slots),
ifcSmmuSem(1),
smmuIfcSem(1),
configSem(params->cfg_slots),
ipaSem(params->ipa_slots),
walkSem(params->walk_slots),
- masterPortSem(1),
+ requestPortSem(1),
transSem(params->xlate_slots),
ptwSem(params->ptw_slots),
cycleSem(1),
@@ -91,7 +91,7 @@
configLat(params->cfg_lat),
ipaLat(params->ipa_lat),
walkLat(params->walk_lat),
- slaveInterfaces(params->slave_interfaces),
+ respInterfaces(params->responder_interfaces),
commandExecutor(name() + ".cmd_exec", *this),
regsMap(params->reg_map),
processCommandsEvent(this)
@@ -153,7 +153,7 @@
DPRINTF(SMMUv3, "[t] master retr addr=%#x size=%#x\n",
a.pkt->getAddr(), a.pkt->getSize());
- if (!masterPort.sendTimingReq(a.pkt))
+ if (!requestPort.sendTimingReq(a.pkt))
break;
packetsToRetry.pop();
@@ -249,7 +249,7 @@
}
M5_FALLTHROUGH;
case ACTION_SEND_REQ_FINAL:
- delay += masterPort.sendAtomic(action.pkt);
+ delay += requestPort.sendAtomic(action.pkt);
pkt = action.pkt;
break;
@@ -310,7 +310,8 @@
DPRINTF(SMMUv3, "[t] master req addr=%#x size=%#x\n",
action.pkt->getAddr(), action.pkt->getSize());
- if (packetsToRetry.empty() &&
masterPort.sendTimingReq(action.pkt)) {
+ if (packetsToRetry.empty() &&
+ requestPort.sendTimingReq(action.pkt)) {
scheduleSlaveRetries();
} else {
DPRINTF(SMMUv3, "[t] master req needs retry, qlen=%d\n",
@@ -717,7 +718,7 @@
SMMUv3::init()
{
// make sure both sides are connected and have the same block size
- if (!masterPort.isConnected())
+ if (!requestPort.isConnected())
fatal("Master port is not connected.\n");
// If the second master port is connected for the table walks, enable
@@ -816,9 +817,9 @@
SMMUv3::getPort(const std::string &name, PortID id)
{
if (name == "master") {
- return masterPort;
- } else if (name == "master_walker") {
- return masterTableWalkPort;
+ return requestPort;
+ } else if (name == "requestor_walker") {
+ return requestTableWalkPort;
} else if (name == "control") {
return controlPort;
} else {
diff --git a/src/dev/arm/smmu_v3.hh b/src/dev/arm/smmu_v3.hh
index 8f35cdf..76a8c8f 100644
--- a/src/dev/arm/smmu_v3.hh
+++ b/src/dev/arm/smmu_v3.hh
@@ -90,7 +90,7 @@
const System &system;
const MasterID masterId;
- SMMUMasterPort masterPort;
+ SMMUMasterPort requestPort;
SMMUMasterTableWalkPort masterTableWalkPort;
SMMUControlPort controlPort;
@@ -108,7 +108,7 @@
const bool walkCacheNonfinalEnable;
const unsigned walkCacheS1Levels;
const unsigned walkCacheS2Levels;
- const unsigned masterPortWidth; // in bytes
+ const unsigned requestPortWidth; // in bytes
SMMUSemaphore tlbSem;
SMMUSemaphore ifcSmmuSem;
@@ -116,7 +116,7 @@
SMMUSemaphore configSem;
SMMUSemaphore ipaSem;
SMMUSemaphore walkSem;
- SMMUSemaphore masterPortSem;
+ SMMUSemaphore requestPortSem;
SMMUSemaphore transSem; // max N transactions in SMMU
SMMUSemaphore ptwSem; // max N concurrent PTWs
@@ -138,7 +138,7 @@
Stats::Distribution translationTimeDist;
Stats::Distribution ptwTimeDist;
- std::vector<SMMUv3SlaveInterface *> slaveInterfaces;
+ std::vector<SMMUv3SlaveInterface *> respInterfaces;
SMMUCommandExecProcess commandExecutor;
diff --git a/src/dev/arm/smmu_v3_proc.cc b/src/dev/arm/smmu_v3_proc.cc
index 9dec2cb..5da7f26 100644
--- a/src/dev/arm/smmu_v3_proc.cc
+++ b/src/dev/arm/smmu_v3_proc.cc
@@ -68,9 +68,9 @@
void
SMMUProcess::doRead(Yield &yield, Addr addr, void *ptr, size_t size)
{
- doSemaphoreDown(yield, smmu.masterPortSem);
+ doSemaphoreDown(yield, smmu.requestPortSem);
doDelay(yield, Cycles(1)); // request - assume 1 cycle
- doSemaphoreUp(smmu.masterPortSem);
+ doSemaphoreUp(smmu.requestPortSem);
SMMUAction a;
a.type = ACTION_SEND_REQ;
@@ -97,11 +97,12 @@
void
SMMUProcess::doWrite(Yield &yield, Addr addr, const void *ptr, size_t size)
{
- unsigned nbeats = (size + (smmu.masterPortWidth-1)) /
smmu.masterPortWidth;
+ unsigned nbeats = (size + (smmu.requestPortWidth-1))
+ / smmu.requestPortWidth;
- doSemaphoreDown(yield, smmu.masterPortSem);
+ doSemaphoreDown(yield, smmu.requestPortSem);
doDelay(yield, Cycles(nbeats));
- doSemaphoreUp(smmu.masterPortSem);
+ doSemaphoreUp(smmu.requestPortSem);
SMMUAction a;
diff --git a/src/dev/arm/smmu_v3_slaveifc.cc
b/src/dev/arm/smmu_v3_slaveifc.cc
index 5b3dd98..88f190f 100644
--- a/src/dev/arm/smmu_v3_slaveifc.cc
+++ b/src/dev/arm/smmu_v3_slaveifc.cc
@@ -54,14 +54,14 @@
p->tlb_policy)),
microTLBEnable(p->utlb_enable),
mainTLBEnable(p->tlb_enable),
- slavePortSem(1),
+ responsePortSem(1),
microTLBSem(p->utlb_slots),
mainTLBSem(p->tlb_slots),
microTLBLat(p->utlb_lat),
mainTLBLat(p->tlb_lat),
- slavePort(new SMMUSlavePort(csprintf("%s.slave", name()), *this)),
- atsSlavePort(name() + ".atsSlave", *this),
- atsMasterPort(name() + ".atsMaster", *this),
+ responsePort(new SMMUSlavePort(csprintf("%s.responder", name()),
*this)),
+ atsResponsePort(name() + ".ats_cpu_side", *this),
+ atsRequestPort(name() + ".ats_mem_side", *this),
portWidth(p->port_width),
wrBufSlotsRemaining(p->wrbuf_slots),
xlateSlotsRemaining(p->xlate_slots),
@@ -78,10 +78,10 @@
void
SMMUv3SlaveInterface::sendRange()
{
- if (slavePort->isConnected()) {
- inform("Slave port is connected to %s\n", slavePort->getPeer());
+ if (responsePort->isConnected()) {
+ inform("Slave port is connected to %s\n", responsePort->getPeer());
- slavePort->sendRangeChange();
+ responsePort->sendRangeChange();
} else {
fatal("Slave port is not connected.\n");
}
@@ -90,12 +90,12 @@
Port&
SMMUv3SlaveInterface::getPort(const std::string &name, PortID id)
{
- if (name == "ats_master") {
- return atsMasterPort;
- } else if (name == "slave") {
- return *slavePort;
- } else if (name == "ats_slave") {
- return atsSlavePort;
+ if (name == "ats_mem_side") {
+ return atsRequestPort;
+ } else if (name == "responder") {
+ return *responsePort;
+ } else if (name == "ats_mem_side") {
+ return atsResponsePort;
} else {
return ClockedObject::getPort(name, id);
}
@@ -104,7 +104,7 @@
void
SMMUv3SlaveInterface::schedTimingResp(PacketPtr pkt)
{
- slavePort->schedTimingResp(pkt, nextCycle());
+ responsePort->schedTimingResp(pkt, nextCycle());
}
void
@@ -122,7 +122,7 @@
SMMUv3SlaveInterface::recvAtomic(PacketPtr pkt)
{
DPRINTF(SMMUv3, "[a] req from %s addr=%#x size=%#x\n",
- slavePort->getPeer(), pkt->getAddr(), pkt->getSize());
+ responsePort->getPeer(), pkt->getAddr(), pkt->getSize());
std::string proc_name = csprintf("%s.port", name());
SMMUTranslationProcess proc(proc_name, *smmu, *this);
@@ -138,7 +138,7 @@
SMMUv3SlaveInterface::recvTimingReq(PacketPtr pkt)
{
DPRINTF(SMMUv3, "[t] req from %s addr=%#x size=%#x\n",
- slavePort->getPeer(), pkt->getAddr(), pkt->getSize());
+ responsePort->getPeer(), pkt->getAddr(), pkt->getSize());
// @todo: We need to pay for this and not just zero it out
pkt->headerDelay = pkt->payloadDelay = 0;
@@ -229,7 +229,7 @@
void
SMMUv3SlaveInterface::sendDeviceRetry()
{
- slavePort->sendRetryReq();
+ responsePort->sendRetryReq();
}
void
diff --git a/src/dev/arm/smmu_v3_slaveifc.hh
b/src/dev/arm/smmu_v3_slaveifc.hh
index e1f8ef2..b4a5df9 100644
--- a/src/dev/arm/smmu_v3_slaveifc.hh
+++ b/src/dev/arm/smmu_v3_slaveifc.hh
@@ -65,14 +65,14 @@
const bool microTLBEnable;
const bool mainTLBEnable;
- SMMUSemaphore slavePortSem;
+ SMMUSemaphore responsePortSem;
SMMUSemaphore microTLBSem;
SMMUSemaphore mainTLBSem;
const Cycles microTLBLat;
const Cycles mainTLBLat;
- SMMUSlavePort *slavePort;
+ SMMUSlavePort *responsePort;
SMMUATSSlavePort atsSlavePort;
SMMUATSMasterPort atsMasterPort;
diff --git a/src/dev/arm/smmu_v3_transl.cc b/src/dev/arm/smmu_v3_transl.cc
index c7b20f9..1b54506 100644
--- a/src/dev/arm/smmu_v3_transl.cc
+++ b/src/dev/arm/smmu_v3_transl.cc
@@ -150,9 +150,9 @@
unsigned numSlaveBeats = request.isWrite ?
(request.size + (ifc.portWidth - 1)) / ifc.portWidth : 1;
- doSemaphoreDown(yield, ifc.slavePortSem);
+ doSemaphoreDown(yield, ifc.responsePortSem);
doDelay(yield, Cycles(numSlaveBeats));
- doSemaphoreUp(ifc.slavePortSem);
+ doSemaphoreUp(ifc.responsePortSem);
recvTick = curTick();
@@ -1227,13 +1227,13 @@
assert(tr.fault == FAULT_NONE);
unsigned numMasterBeats = request.isWrite ?
- (request.size + (smmu.masterPortWidth-1))
- / smmu.masterPortWidth :
+ (request.size + (smmu.requestPortWidth-1))
+ / smmu.requestPortWidth :
1;
- doSemaphoreDown(yield, smmu.masterPortSem);
+ doSemaphoreDown(yield, smmu.requestPortSem);
doDelay(yield, Cycles(numMasterBeats));
- doSemaphoreUp(smmu.masterPortSem);
+ doSemaphoreUp(smmu.requestPortSem);
smmu.translationTimeDist.sample(curTick() - recvTick);
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33521
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: I9fcb9374e5de4daa2212f8d9a441010878d015bf
Gerrit-Change-Number: 33521
Gerrit-PatchSet: 1
Gerrit-Owner: Shivani Parekh <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s