gem5
v20.1.0.0
|
#include <smmu_v3_transl.hh>
Classes | |
struct | TranslContext |
struct | TranslResult |
Public Member Functions | |
SMMUTranslationProcess (const std::string &name, SMMUv3 &_smmu, SMMUv3DeviceInterface &_ifc) | |
virtual | ~SMMUTranslationProcess () |
void | beginTransaction (const SMMUTranslRequest &req) |
void | resumeTransaction () |
Public Member Functions inherited from SMMUProcess | |
SMMUProcess (const std::string &name, SMMUv3 &_smmu) | |
virtual | ~SMMUProcess () |
SMMUAction | run (PacketPtr pkt) |
const std::string | name () const |
Public Member Functions inherited from Packet::SenderState | |
SenderState () | |
virtual | ~SenderState () |
Private Types | |
enum | FaultType { FAULT_NONE, FAULT_TRANSLATION, FAULT_PERMISSION } |
Private Member Functions | |
virtual void | main (Yield &yield) |
TranslResult | bypass (Addr addr) const |
TranslResult | smmuTranslation (Yield &yield) |
bool | microTLBLookup (Yield &yield, TranslResult &tr) |
bool | ifcTLBLookup (Yield &yield, TranslResult &tr, bool &wasPrefetched) |
bool | smmuTLBLookup (Yield &yield, TranslResult &tr) |
void | microTLBUpdate (Yield &yield, const TranslResult &tr) |
void | ifcTLBUpdate (Yield &yield, const TranslResult &tr) |
void | smmuTLBUpdate (Yield &yield, const TranslResult &tr) |
bool | configCacheLookup (Yield &yield, TranslContext &tc) |
void | configCacheUpdate (Yield &yield, const TranslContext &tc) |
bool | findConfig (Yield &yield, TranslContext &tc, TranslResult &tr) |
void | walkCacheLookup (Yield &yield, const WalkCache::Entry *&walkEntry, Addr addr, uint16_t asid, uint16_t vmid, unsigned stage, unsigned level) |
void | walkCacheUpdate (Yield &yield, Addr va, Addr vaMask, Addr pa, unsigned stage, unsigned level, bool leaf, uint8_t permissions) |
TranslResult | walkStage1And2 (Yield &yield, Addr addr, const PageTableOps *pt_ops, unsigned level, Addr walkPtr) |
TranslResult | walkStage2 (Yield &yield, Addr addr, bool final_tr, const PageTableOps *pt_ops, unsigned level, Addr walkPtr) |
TranslResult | translateStage1And2 (Yield &yield, Addr addr) |
TranslResult | translateStage2 (Yield &yield, Addr addr, bool final_tr) |
TranslResult | combineTranslations (const TranslResult &s1tr, const TranslResult &s2tr) const |
bool | hazard4kCheck () |
Used to force ordering on transactions with same (SID, SSID, 4k page) to avoid multiple identical page-table walks. More... | |
void | hazard4kRegister () |
void | hazard4kHold (Yield &yield) |
void | hazard4kRelease () |
void | hazardIdRegister () |
Used to force ordering on transactions with the same orderId. More... | |
void | hazardIdHold (Yield &yield) |
void | hazardIdRelease () |
void | issuePrefetch (Addr addr) |
void | completeTransaction (Yield &yield, const TranslResult &tr) |
void | completePrefetch (Yield &yield) |
void | sendEvent (Yield &yield, const SMMUEvent &ev) |
void | doReadSTE (Yield &yield, StreamTableEntry &ste, uint32_t sid) |
void | doReadCD (Yield &yield, ContextDescriptor &cd, const StreamTableEntry &ste, uint32_t sid, uint32_t ssid) |
void | doReadConfig (Yield &yield, Addr addr, void *ptr, size_t size, uint32_t sid, uint32_t ssid) |
void | doReadPTE (Yield &yield, Addr va, Addr addr, void *ptr, unsigned stage, unsigned level) |
Private Attributes | |
SMMUv3DeviceInterface & | ifc |
SMMUTranslRequest | request |
TranslContext | context |
Tick | recvTick |
Tick M5_CLASS_VAR_USED | faultTick |
Additional Inherited Members | |
Public Attributes inherited from Packet::SenderState | |
SenderState * | predecessor |
Protected Types inherited from SMMUProcess | |
typedef Coroutine::CallerType | Yield |
Protected Member Functions inherited from SMMUProcess | |
void | reinit () |
void | doRead (Yield &yield, Addr addr, void *ptr, size_t size) |
void | doWrite (Yield &yield, Addr addr, const void *ptr, size_t size) |
void | doDelay (Yield &yield, Cycles cycles) |
void | doSleep (Yield &yield) |
void | doSemaphoreDown (Yield &yield, SMMUSemaphore &sem) |
void | doSemaphoreUp (SMMUSemaphore &sem) |
void | doWaitForSignal (Yield &yield, SMMUSignal &sig) |
void | doBroadcastSignal (SMMUSignal &sig) |
void | scheduleWakeup (Tick when) |
Protected Attributes inherited from SMMUProcess | |
SMMUv3 & | smmu |
Definition at line 63 of file smmu_v3_transl.hh.
|
private |
Enumerator | |
---|---|
FAULT_NONE | |
FAULT_TRANSLATION | |
FAULT_PERMISSION |
Definition at line 79 of file smmu_v3_transl.hh.
SMMUTranslationProcess::SMMUTranslationProcess | ( | const std::string & | name, |
SMMUv3 & | _smmu, | ||
SMMUv3DeviceInterface & | _ifc | ||
) |
Definition at line 79 of file smmu_v3_transl.cc.
References ifc, SMMUv3DeviceInterface::pendingMemAccesses, SMMUProcess::reinit(), and SMMUv3DeviceInterface::xlateSlotsRemaining.
Referenced by issuePrefetch().
|
virtual |
Definition at line 93 of file smmu_v3_transl.cc.
References ifc, SMMUv3DeviceInterface::pendingMemAccesses, and Drainable::signalDrainDone().
void SMMUTranslationProcess::beginTransaction | ( | const SMMUTranslRequest & | req | ) |
Definition at line 107 of file smmu_v3_transl.cc.
References SMMUProcess::reinit(), and request.
Referenced by SMMUv3DeviceInterface::atsRecvAtomic(), SMMUv3DeviceInterface::atsRecvTimingReq(), issuePrefetch(), SMMUv3DeviceInterface::recvAtomic(), SMMUv3DeviceInterface::recvTimingReq(), and resumeTransaction().
|
private |
Definition at line 237 of file smmu_v3_transl.cc.
References SMMUTranslationProcess::TranslResult::addr, addr, SMMUTranslationProcess::TranslResult::addrMask, SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, and SMMUTranslationProcess::TranslResult::writable.
Referenced by main(), and smmuTranslation().
|
private |
Definition at line 1025 of file smmu_v3_transl.cc.
References SMMUTranslationProcess::TranslResult::addr, SMMUTranslationProcess::TranslResult::addrMask, SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, and SMMUTranslationProcess::TranslResult::writable.
Referenced by walkStage1And2().
|
private |
Definition at line 1286 of file smmu_v3_transl.cc.
References ArmISA::a, ACTION_TERMINATE, ifc, and SMMUv3DeviceInterface::xlateSlotsRemaining.
Referenced by main().
|
private |
Definition at line 1224 of file smmu_v3_transl.cc.
References ArmISA::a, ACTION_SEND_REQ_FINAL, ACTION_SEND_RESP, ACTION_SEND_RESP_ATS, SMMUTranslRequest::addr, SMMUTranslationProcess::TranslResult::addr, curTick(), SMMUProcess::doDelay(), SMMUProcess::doSemaphoreDown(), SMMUProcess::doSemaphoreUp(), SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, m5::Coroutine< Arg, Ret >::CallerType::get(), ifc, System::isAtomicMode(), SMMUTranslRequest::isAtsRequest, System::isTimingMode(), SMMUTranslRequest::isWrite, Packet::makeAtomicResponse(), Packet::makeTimingResponse(), panic, SMMUTranslRequest::pkt, SMMUv3DeviceInterface::portWidth, recvTick, request, SMMUv3::requestPortSem, SMMUv3::requestPortWidth, Stats::DistBase< Derived, Stor >::sample(), SMMUv3::scheduleDeviceRetries(), Packet::setAddr(), SMMUTranslRequest::size, SMMUProcess::smmu, SMMUv3::system, SMMUv3::translationTimeDist, SMMUv3DeviceInterface::wrBufSlotsRemaining, and SMMUv3DeviceInterface::xlateSlotsRemaining.
Referenced by main().
|
private |
Definition at line 506 of file smmu_v3_transl.cc.
References SMMUTranslationProcess::TranslContext::asid, SMMUv3::configCache, SMMUv3::configCacheEnable, SMMUv3::configLat, SMMUv3::configSem, SMMUProcess::doDelay(), SMMUProcess::doSemaphoreDown(), SMMUProcess::doSemaphoreUp(), DPRINTF, ArmISA::e, SMMUTranslationProcess::TranslContext::httb, ConfigCache::lookup(), request, SMMUTranslationProcess::TranslContext::s2t0sz, SMMUTranslRequest::sid, SMMUProcess::smmu, SMMUTranslRequest::ssid, SMMUTranslationProcess::TranslContext::stage1Enable, SMMUTranslationProcess::TranslContext::stage1TranslGranule, SMMUTranslationProcess::TranslContext::stage2Enable, SMMUTranslationProcess::TranslContext::stage2TranslGranule, SMMUTranslationProcess::TranslContext::t0sz, SMMUTranslationProcess::TranslContext::ttb0, SMMUTranslationProcess::TranslContext::ttb1, and SMMUTranslationProcess::TranslContext::vmid.
Referenced by smmuTranslation().
|
private |
Definition at line 546 of file smmu_v3_transl.cc.
References SMMUTranslationProcess::TranslContext::asid, SMMUv3::configCache, SMMUv3::configCacheEnable, SMMUv3::configSem, SMMUProcess::doSemaphoreDown(), SMMUProcess::doSemaphoreUp(), DPRINTF, ArmISA::e, SMMUTranslationProcess::TranslContext::httb, request, SMMUTranslationProcess::TranslContext::s2t0sz, SMMUTranslRequest::sid, SMMUProcess::smmu, SMMUTranslRequest::ssid, SMMUTranslationProcess::TranslContext::stage1Enable, SMMUTranslationProcess::TranslContext::stage1TranslGranule, SMMUTranslationProcess::TranslContext::stage2Enable, SMMUTranslationProcess::TranslContext::stage2TranslGranule, ConfigCache::store(), SMMUTranslationProcess::TranslContext::t0sz, SMMUTranslationProcess::TranslContext::ttb0, SMMUTranslationProcess::TranslContext::ttb1, and SMMUTranslationProcess::TranslContext::vmid.
Referenced by smmuTranslation().
|
private |
Definition at line 1396 of file smmu_v3_transl.cc.
References SMMUTranslationProcess::TranslResult::addr, bits(), ArmISA::cd, SMMUv3::cdFetches, SMMUv3::cdL1Fetches, context, doReadConfig(), DPRINTF, panic, StreamTableEntry::s1cdmax, StreamTableEntry::s1ctxptr, StreamTableEntry::s1fmt, SMMUProcess::smmu, ST_CD_ADDR_SHIFT, STAGE1_CFG_1L, STAGE1_CFG_2L_4K, STAGE1_CFG_2L_64K, SMMUTranslationProcess::TranslContext::stage2Enable, and translateStage2().
Referenced by findConfig().
|
private |
Definition at line 1460 of file smmu_v3_transl.cc.
References addr, and SMMUProcess::doRead().
Referenced by doReadCD(), and doReadSTE().
|
private |
Definition at line 1468 of file smmu_v3_transl.cc.
References addr, X86ISA::base, SMMUProcess::doRead(), and ArmISA::mask.
Referenced by walkStage1And2(), and walkStage2().
|
private |
Definition at line 1329 of file smmu_v3_transl.cc.
References StreamTableEntry::_pad, bits(), doReadConfig(), DPRINTF, MipsISA::index, panic, SMMUv3::regs, SMMUProcess::smmu, ArmISA::span, ST_CFG_FMT_2LEVEL, ST_CFG_FMT_LINEAR, ST_CFG_FMT_MASK, ST_CFG_SIZE_MASK, ST_CFG_SPLIT_MASK, ST_CFG_SPLIT_SHIFT, ST_L2_ADDR_MASK, ST_L2_SPAN_MASK, SMMUv3::steFetches, SMMUv3::steL1Fetches, SMMURegs::strtab_base, SMMURegs::strtab_base_cfg, and VMT_BASE_ADDR_MASK.
Referenced by findConfig().
|
private |
Definition at line 578 of file smmu_v3_transl.cc.
References SMMUTranslationProcess::TranslContext::asid, ArmISA::cd, CD_TTB_SHIFT, StreamTableEntry::config, context, doReadCD(), doReadSTE(), SMMUTranslationProcess::TranslContext::httb, panic, request, SMMUTranslationProcess::TranslContext::s2t0sz, StreamTableEntry::s2t0sz, StreamTableEntry::s2tg, StreamTableEntry::s2ttb, StreamTableEntry::s2vmid, SMMUTranslRequest::sid, SMMUTranslRequest::ssid, SMMUTranslationProcess::TranslContext::stage1Enable, SMMUTranslationProcess::TranslContext::stage1TranslGranule, SMMUTranslationProcess::TranslContext::stage2Enable, SMMUTranslationProcess::TranslContext::stage2TranslGranule, STE_CONFIG_BYPASS, STE_CONFIG_STAGE1_AND_2, STE_CONFIG_STAGE1_ONLY, STE_CONFIG_STAGE2_ONLY, STE_S2TTB_SHIFT, SMMUTranslationProcess::TranslContext::t0sz, TRANS_GRANULE_INVALID, SMMUTranslationProcess::TranslContext::ttb0, SMMUTranslationProcess::TranslContext::ttb1, and SMMUTranslationProcess::TranslContext::vmid.
Referenced by smmuTranslation().
|
private |
Used to force ordering on transactions with same (SID, SSID, 4k page) to avoid multiple identical page-table walks.
Definition at line 1043 of file smmu_v3_transl.cc.
References SMMUTranslRequest::addr, SMMUv3DeviceInterface::duplicateReqs, ifc, request, and ULL.
Referenced by main().
|
private |
Definition at line 1069 of file smmu_v3_transl.cc.
References SMMUTranslRequest::addr, SMMUProcess::doWaitForSignal(), DPRINTF, SMMUv3DeviceInterface::duplicateReqRemoved, SMMUv3DeviceInterface::duplicateReqs, ifc, request, and ULL.
Referenced by main().
|
private |
Definition at line 1060 of file smmu_v3_transl.cc.
References SMMUTranslRequest::addr, DPRINTF, SMMUv3DeviceInterface::duplicateReqs, ifc, and request.
Referenced by main().
|
private |
Definition at line 1107 of file smmu_v3_transl.cc.
References SMMUTranslRequest::addr, SMMUProcess::doBroadcastSignal(), DPRINTF, SMMUv3DeviceInterface::duplicateReqRemoved, SMMUv3DeviceInterface::duplicateReqs, ifc, panic, and request.
Referenced by main().
|
private |
Definition at line 1142 of file smmu_v3_transl.cc.
References SMMUv3DeviceInterface::dependentReads, SMMUv3DeviceInterface::dependentReqRemoved, SMMUv3DeviceInterface::dependentWrites, SMMUProcess::doWaitForSignal(), DPRINTF, ifc, SMMUTranslRequest::isWrite, AMBA::orderId(), SMMUTranslRequest::pkt, and request.
Referenced by main().
|
private |
Used to force ordering on transactions with the same orderId.
This attempts to model AXI IDs.
Definition at line 1127 of file smmu_v3_transl.cc.
References SMMUv3DeviceInterface::dependentReads, SMMUv3DeviceInterface::dependentWrites, DPRINTF, ifc, SMMUTranslRequest::isWrite, AMBA::orderId(), SMMUTranslRequest::pkt, request, and SMMU_MAX_TRANS_ID.
Referenced by main().
|
private |
Definition at line 1181 of file smmu_v3_transl.cc.
References SMMUv3DeviceInterface::dependentReads, SMMUv3DeviceInterface::dependentReqRemoved, SMMUv3DeviceInterface::dependentWrites, SMMUProcess::doBroadcastSignal(), DPRINTF, ifc, SMMUTranslRequest::isWrite, AMBA::orderId(), panic, SMMUTranslRequest::pkt, and request.
Referenced by main().
|
private |
Definition at line 342 of file smmu_v3_transl.cc.
References SMMUTranslRequest::addr, SMMUTranslationProcess::TranslResult::addr, SMMUTranslationProcess::TranslResult::addrMask, SMMUProcess::doDelay(), SMMUProcess::doSemaphoreDown(), SMMUProcess::doSemaphoreUp(), DPRINTF, ArmISA::e, SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, ifc, SMMUTLB::lookup(), SMMUv3DeviceInterface::mainTLB, SMMUv3DeviceInterface::mainTLBEnable, SMMUv3DeviceInterface::mainTLBLat, SMMUv3DeviceInterface::mainTLBSem, request, SMMUTranslRequest::sid, SMMUTranslRequest::ssid, and SMMUTranslationProcess::TranslResult::writable.
Referenced by main().
|
private |
Definition at line 440 of file smmu_v3_transl.cc.
References SMMUTranslRequest::addr, SMMUTranslationProcess::TranslResult::addr, SMMUTranslationProcess::TranslResult::addrMask, SMMUTLB::ALLOC_ANY_BUT_LAST_WAY, SMMUTLB::ALLOC_ANY_WAY, SMMUTLB::ALLOC_LAST_WAY, SMMUTranslationProcess::TranslContext::asid, context, SMMUProcess::doSemaphoreDown(), SMMUProcess::doSemaphoreUp(), DPRINTF, ArmISA::e, SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, ifc, SMMUTranslRequest::isPrefetch, SMMUv3DeviceInterface::mainTLB, SMMUv3DeviceInterface::mainTLBEnable, SMMUv3DeviceInterface::mainTLBSem, SMMUv3DeviceInterface::prefetchEnable, SMMUv3DeviceInterface::prefetchReserveLastWay, request, SMMUTranslRequest::sid, SMMUTranslRequest::ssid, SMMUTLB::store(), SMMUTranslationProcess::TranslContext::vmid, and SMMUTranslationProcess::TranslResult::writable.
Referenced by main().
|
private |
Definition at line 1206 of file smmu_v3_transl.cc.
References addr, beginTransaction(), Clocked::clockEdge(), csprintf(), ifc, System::isTimingMode(), SMMUProcess::name(), SMMUTranslRequest::prefetch(), SMMUv3DeviceInterface::prefetchEnable, request, SMMUProcess::scheduleWakeup(), SMMUTranslRequest::sid, SMMUProcess::smmu, SMMUTranslationProcess(), SMMUTranslRequest::ssid, SMMUv3::system, and SMMUv3DeviceInterface::xlateSlotsRemaining.
Referenced by main().
|
privatevirtual |
Implements SMMUProcess.
Definition at line 133 of file smmu_v3_transl.cc.
References ArmISA::a, ACTION_INITIAL_NOP, SMMUTranslRequest::addr, bypass(), completePrefetch(), completeTransaction(), SMMURegs::cr0, CR0_SMMUEN_MASK, curTick(), SMMUv3DeviceInterface::devicePortSem, SMMUProcess::doDelay(), SMMUProcess::doSemaphoreDown(), SMMUProcess::doSemaphoreUp(), SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, hazard4kCheck(), hazard4kHold(), hazard4kRegister(), hazard4kRelease(), hazardIdHold(), hazardIdRegister(), hazardIdRelease(), ifc, ifcTLBLookup(), ifcTLBUpdate(), SMMUTranslRequest::isAtsRequest, SMMUTranslRequest::isPrefetch, issuePrefetch(), SMMUTranslRequest::isWrite, microTLBLookup(), microTLBUpdate(), panic, SMMUv3DeviceInterface::portWidth, recvTick, SMMUv3::regs, request, SMMUTranslRequest::sid, SMMUTranslRequest::size, SMMUProcess::smmu, smmuTranslation(), SMMUTranslRequest::ssid, and ULL.
|
private |
Definition at line 311 of file smmu_v3_transl.cc.
References SMMUTranslRequest::addr, SMMUTranslationProcess::TranslResult::addr, SMMUTranslationProcess::TranslResult::addrMask, SMMUProcess::doDelay(), SMMUProcess::doSemaphoreDown(), SMMUProcess::doSemaphoreUp(), DPRINTF, ArmISA::e, SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, ifc, SMMUTLB::lookup(), SMMUv3DeviceInterface::microTLB, SMMUv3DeviceInterface::microTLBEnable, SMMUv3DeviceInterface::microTLBLat, SMMUv3DeviceInterface::microTLBSem, request, SMMUTranslRequest::sid, SMMUTranslRequest::ssid, and SMMUTranslationProcess::TranslResult::writable.
Referenced by main().
|
private |
Definition at line 408 of file smmu_v3_transl.cc.
References SMMUTranslRequest::addr, SMMUTranslationProcess::TranslResult::addr, SMMUTranslationProcess::TranslResult::addrMask, SMMUTLB::ALLOC_ANY_WAY, SMMUTranslationProcess::TranslContext::asid, context, SMMUProcess::doSemaphoreDown(), SMMUProcess::doSemaphoreUp(), DPRINTF, ArmISA::e, SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, ifc, SMMUv3DeviceInterface::microTLB, SMMUv3DeviceInterface::microTLBEnable, SMMUv3DeviceInterface::microTLBSem, request, SMMUTranslRequest::sid, SMMUTranslRequest::ssid, SMMUTLB::store(), SMMUTranslationProcess::TranslContext::vmid, and SMMUTranslationProcess::TranslResult::writable.
Referenced by main().
void SMMUTranslationProcess::resumeTransaction | ( | ) |
Definition at line 115 of file smmu_v3_transl.cc.
References beginTransaction(), curTick(), DPRINTF, faultTick, System::isTimingMode(), SMMUTranslRequest::pkt, request, SMMUv3::runProcessTiming(), SMMUProcess::smmu, and SMMUv3::system.
Definition at line 1299 of file smmu_v3_transl.cc.
References SMMUProcess::doWrite(), DPRINTF, E_BASE_ADDR_MASK, E_BASE_ENABLE_MASK, SMMURegs::eventq_base, SMMURegs::eventq_cons, SMMURegs::eventq_irq_cfg0, SMMURegs::eventq_irq_cfg1, SMMURegs::eventq_prod, SMMUEvent::flags, SMMUEvent::ipa, ArmISA::mask, panic, Q_BASE_ADDR_MASK, Q_BASE_SIZE_MASK, SMMUv3::regs, SMMUProcess::smmu, SMMUEvent::stag, SMMUEvent::streamId, SMMUEvent::substreamId, SMMUEvent::type, and SMMUEvent::va.
|
private |
Definition at line 377 of file smmu_v3_transl.cc.
References SMMUTranslRequest::addr, SMMUTranslationProcess::TranslResult::addr, SMMUTranslationProcess::TranslResult::addrMask, SMMUTranslationProcess::TranslContext::asid, context, SMMUProcess::doDelay(), SMMUProcess::doSemaphoreDown(), SMMUProcess::doSemaphoreUp(), DPRINTF, ArmISA::e, SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, ARMArchTLB::lookup(), request, SMMUProcess::smmu, SMMUv3::tlb, SMMUv3::tlbEnable, SMMUv3::tlbLat, SMMUv3::tlbSem, SMMUTranslationProcess::TranslContext::vmid, and SMMUTranslationProcess::TranslResult::writable.
Referenced by smmuTranslation().
|
private |
Definition at line 477 of file smmu_v3_transl.cc.
References SMMUTranslRequest::addr, SMMUTranslationProcess::TranslResult::addr, SMMUTranslationProcess::TranslResult::addrMask, SMMUTranslationProcess::TranslContext::asid, context, SMMUProcess::doSemaphoreDown(), SMMUProcess::doSemaphoreUp(), DPRINTF, ArmISA::e, SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, request, SMMUProcess::smmu, ARMArchTLB::store(), SMMUv3::tlb, SMMUv3::tlbEnable, SMMUv3::tlbSem, SMMUTranslationProcess::TranslContext::vmid, and SMMUTranslationProcess::TranslResult::writable.
Referenced by smmuTranslation().
|
private |
Definition at line 249 of file smmu_v3_transl.cc.
References SMMUTranslRequest::addr, bypass(), configCacheLookup(), configCacheUpdate(), context, curTick(), SMMUProcess::doDelay(), SMMUProcess::doSemaphoreDown(), SMMUProcess::doSemaphoreUp(), SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, findConfig(), SMMUv3::ifcSmmuLat, SMMUv3::ifcSmmuSem, SMMUv3::ptwSem, SMMUv3::ptwTimeDist, request, Stats::DistBase< Derived, Stor >::sample(), SMMUProcess::smmu, SMMUv3::smmuIfcLat, SMMUv3::smmuIfcSem, smmuTLBLookup(), smmuTLBUpdate(), SMMUTranslationProcess::TranslContext::stage1Enable, SMMUTranslationProcess::TranslContext::stage2Enable, translateStage1And2(), translateStage2(), and SMMUv3::transSem.
Referenced by main().
|
private |
Definition at line 880 of file smmu_v3_transl.cc.
References SMMUTranslationProcess::TranslResult::addr, addr, SMMUTranslationProcess::TranslResult::addrMask, SMMUTranslationProcess::TranslContext::asid, context, DPRINTF, SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, PageTableOps::firstLevel(), SMMUv3::getPageTableOps(), PageTableOps::lastLevel(), WalkCache::Entry::leaf, X86ISA::level, WalkCache::Entry::pa, WalkCache::Entry::permissions, SMMUProcess::smmu, SMMUTranslationProcess::TranslContext::stage1TranslGranule, SMMUTranslationProcess::TranslContext::stage2Enable, SMMUTranslationProcess::TranslContext::t0sz, translateStage2(), SMMUTranslationProcess::TranslContext::ttb0, WalkCache::Entry::vaMask, SMMUTranslationProcess::TranslContext::vmid, walkCacheLookup(), walkStage1And2(), and SMMUTranslationProcess::TranslResult::writable.
Referenced by smmuTranslation().
|
private |
Definition at line 936 of file smmu_v3_transl.cc.
References SMMUTranslationProcess::TranslResult::addr, addr, SMMUTranslationProcess::TranslResult::addrMask, context, SMMUProcess::doDelay(), SMMUProcess::doSemaphoreDown(), SMMUProcess::doSemaphoreUp(), DPRINTF, ArmISA::e, SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, PageTableOps::firstLevel(), SMMUv3::getPageTableOps(), SMMUTranslationProcess::TranslContext::httb, SMMUv3::ipaCache, SMMUv3::ipaCacheEnable, SMMUv3::ipaLat, IPACache::Entry::ipaMask, SMMUv3::ipaSem, PageTableOps::lastLevel(), WalkCache::Entry::leaf, X86ISA::level, IPACache::lookup(), IPACache::Entry::pa, WalkCache::Entry::pa, IPACache::Entry::permissions, WalkCache::Entry::permissions, SMMUTranslationProcess::TranslContext::s2t0sz, SMMUProcess::smmu, SMMUTranslationProcess::TranslContext::stage1Enable, SMMUTranslationProcess::TranslContext::stage2TranslGranule, IPACache::store(), WalkCache::Entry::vaMask, SMMUTranslationProcess::TranslContext::vmid, walkCacheLookup(), SMMUv3::walkCacheNonfinalEnable, walkStage2(), and SMMUTranslationProcess::TranslResult::writable.
Referenced by doReadCD(), smmuTranslation(), translateStage1And2(), and walkStage1And2().
|
private |
Definition at line 648 of file smmu_v3_transl.cc.
References addr, ArmISA::asid, context, SMMUProcess::doDelay(), SMMUProcess::doSemaphoreDown(), SMMUProcess::doSemaphoreUp(), DPRINTF, SMMUv3::getPageTableOps(), X86ISA::level, WalkCache::lookup(), WalkCache::Entry::pa, SMMUProcess::smmu, SMMUTranslationProcess::TranslContext::stage1TranslGranule, SMMUTranslationProcess::TranslContext::stage2TranslGranule, SMMUv3::walkCache, SMMUv3::walkCacheEnable, SMMUv3::walkCacheS1Levels, SMMUv3::walkCacheS2Levels, SMMUv3::walkLat, PageTableOps::walkMask(), and SMMUv3::walkSem.
Referenced by translateStage1And2(), and translateStage2().
|
private |
Definition at line 689 of file smmu_v3_transl.cc.
References SMMUTranslationProcess::TranslContext::asid, context, SMMUProcess::doSemaphoreDown(), SMMUProcess::doSemaphoreUp(), DPRINTF, ArmISA::e, X86ISA::level, ArmISA::pa, SMMUProcess::smmu, WalkCache::store(), ArmISA::va, SMMUTranslationProcess::TranslContext::vmid, SMMUv3::walkCache, SMMUv3::walkCacheEnable, SMMUv3::walkCacheS1Levels, SMMUv3::walkCacheS2Levels, and SMMUv3::walkSem.
Referenced by walkStage1And2(), and walkStage2().
|
private |
Definition at line 730 of file smmu_v3_transl.cc.
References SMMUTranslationProcess::TranslResult::addr, addr, SMMUTranslationProcess::TranslResult::addrMask, combineTranslations(), context, SMMUv3::cycleSem, SMMUProcess::doDelay(), doReadPTE(), SMMUProcess::doSemaphoreDown(), SMMUProcess::doSemaphoreUp(), DPRINTF, SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, FAULT_PERMISSION, FAULT_TRANSLATION, PageTableOps::index(), PageTableOps::isLeaf(), PageTableOps::isValid(), PageTableOps::isWritable(), SMMUTranslRequest::isWrite, PageTableOps::lastLevel(), X86ISA::level, PageTableOps::nextLevelPointer(), PageTableOps::pageMask(), request, SMMUProcess::smmu, SMMUTranslationProcess::TranslContext::stage2Enable, translateStage2(), walkCacheUpdate(), PageTableOps::walkMask(), and SMMUTranslationProcess::TranslResult::writable.
Referenced by translateStage1And2().
|
private |
Definition at line 814 of file smmu_v3_transl.cc.
References SMMUTranslationProcess::TranslResult::addr, addr, SMMUTranslationProcess::TranslResult::addrMask, SMMUv3::cycleSem, SMMUProcess::doDelay(), doReadPTE(), SMMUProcess::doSemaphoreDown(), SMMUProcess::doSemaphoreUp(), DPRINTF, SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, FAULT_PERMISSION, FAULT_TRANSLATION, PageTableOps::index(), PageTableOps::isLeaf(), PageTableOps::isValid(), PageTableOps::isWritable(), SMMUTranslRequest::isWrite, PageTableOps::lastLevel(), X86ISA::level, PageTableOps::nextLevelPointer(), PageTableOps::pageMask(), request, SMMUProcess::smmu, SMMUv3::walkCacheNonfinalEnable, walkCacheUpdate(), PageTableOps::walkMask(), and SMMUTranslationProcess::TranslResult::writable.
Referenced by translateStage2().
|
private |
Definition at line 97 of file smmu_v3_transl.hh.
Referenced by doReadCD(), findConfig(), ifcTLBUpdate(), microTLBUpdate(), smmuTLBLookup(), smmuTLBUpdate(), smmuTranslation(), translateStage1And2(), translateStage2(), walkCacheLookup(), walkCacheUpdate(), and walkStage1And2().
|
private |
Definition at line 100 of file smmu_v3_transl.hh.
Referenced by resumeTransaction().
|
private |
Definition at line 94 of file smmu_v3_transl.hh.
Referenced by completePrefetch(), completeTransaction(), hazard4kCheck(), hazard4kHold(), hazard4kRegister(), hazard4kRelease(), hazardIdHold(), hazardIdRegister(), hazardIdRelease(), ifcTLBLookup(), ifcTLBUpdate(), issuePrefetch(), main(), microTLBLookup(), microTLBUpdate(), SMMUTranslationProcess(), and ~SMMUTranslationProcess().
|
private |
Definition at line 99 of file smmu_v3_transl.hh.
Referenced by completeTransaction(), and main().
|
private |
Definition at line 96 of file smmu_v3_transl.hh.
Referenced by beginTransaction(), completeTransaction(), configCacheLookup(), configCacheUpdate(), findConfig(), hazard4kCheck(), hazard4kHold(), hazard4kRegister(), hazard4kRelease(), hazardIdHold(), hazardIdRegister(), hazardIdRelease(), ifcTLBLookup(), ifcTLBUpdate(), issuePrefetch(), main(), microTLBLookup(), microTLBUpdate(), resumeTransaction(), smmuTLBLookup(), smmuTLBUpdate(), smmuTranslation(), walkStage1And2(), and walkStage2().