gem5 v24.0.0.0
|
#include <smmu_v3_transl.hh>
Classes | |
struct | Fault |
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 gem5::SMMUProcess | |
SMMUProcess (const std::string &name, SMMUv3 &_smmu) | |
virtual | ~SMMUProcess () |
SMMUAction | run (PacketPtr pkt) |
const std::string | name () const |
Public Member Functions inherited from gem5::Packet::SenderState | |
SenderState () | |
virtual | ~SenderState () |
Private Types | |
enum | FaultType : uint8_t { FAULT_NONE , FAULT_UUT = 0x1 , FAULT_BAD_STREAMID = 0x2 , FAULT_STE_FETCH = 0x3 , FAULT_BAD_STE = 0x4 , FAULT_BAD_ATS_TREQ = 0x5 , FAULT_STREAM_DISABLED = 0x6 , FAULT_TRANSL_FORBIDDEN = 0x7 , FAULT_BAD_SUBSTREAMID = 0x8 , FAULT_CD_FETCH = 0x9 , FAULT_BAD_CD = 0xa , FAULT_WALK_EABT = 0xb , FAULT_TRANSLATION = 0x10 , FAULT_ADDR_SIZE = 0x11 , FAULT_ACCESS = 0x12 , FAULT_PERMISSION = 0x13 , FAULT_TLB_CONFLICT = 0x20 , FAULT_CFG_CONFLICT = 0x21 , FAULT_PAGE_REQUEST = 0x24 , FAULT_VMS_FETCH = 0x25 } |
enum | FaultClass { CD = 0x0 , TT = 0x1 , IN = 0x2 , RESERVED = 0x3 } |
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 ArmISA::PageTableOps *pt_ops, unsigned level, Addr walkPtr) |
TranslResult | walkStage2 (Yield &yield, Addr addr, bool final_tr, const ArmISA::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. | |
void | hazard4kRegister () |
void | hazard4kHold (Yield &yield) |
void | hazard4kRelease () |
void | hazardIdRegister () |
Used to force ordering on transactions with the same orderId. | |
void | hazardIdHold (Yield &yield) |
void | hazardIdRelease () |
void | issuePrefetch (Addr addr) |
void | abortTransaction (Yield &yield, const TranslResult &tr) |
void | completeTransaction (Yield &yield, const TranslResult &tr) |
void | completePrefetch (Yield &yield) |
SMMUEvent | generateEvent (const TranslResult &tr) |
void | sendEvent (Yield &yield, const SMMUEvent &ev) |
void | sendEventInterrupt (Yield &yield) |
void | doReadSTE (Yield &yield, StreamTableEntry &ste, uint32_t sid) |
TranslResult | 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 |
GEM5_CLASS_VAR_USED Tick | faultTick |
Additional Inherited Members | |
Public Attributes inherited from gem5::Packet::SenderState | |
SenderState * | predecessor |
Protected Types inherited from gem5::SMMUProcess | |
typedef Coroutine::CallerType | Yield |
Protected Member Functions inherited from gem5::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 gem5::SMMUProcess | |
SMMUv3 & | smmu |
Definition at line 70 of file smmu_v3_transl.hh.
|
private |
Enumerator | |
---|---|
CD | |
TT | |
IN | |
RESERVED |
Definition at line 111 of file smmu_v3_transl.hh.
|
private |
Definition at line 86 of file smmu_v3_transl.hh.
gem5::SMMUTranslationProcess::SMMUTranslationProcess | ( | const std::string & | name, |
SMMUv3 & | _smmu, | ||
SMMUv3DeviceInterface & | _ifc ) |
Definition at line 86 of file smmu_v3_transl.cc.
References ifc, gem5::SMMUv3DeviceInterface::pendingMemAccesses, gem5::SMMUProcess::reinit(), and gem5::SMMUv3DeviceInterface::xlateSlotsRemaining.
Referenced by issuePrefetch().
|
virtual |
Definition at line 100 of file smmu_v3_transl.cc.
References ifc, gem5::SMMUv3DeviceInterface::pendingMemAccesses, and gem5::Drainable::signalDrainDone().
|
private |
Definition at line 1235 of file smmu_v3_transl.cc.
References gem5::ArmISA::a, gem5::ACTION_SEND_RESP, gem5::SMMUTranslRequest::addr, gem5::CR0_EVENTQEN_MASK, DPRINTF, gem5::MipsISA::event, generateEvent(), ifc, gem5::System::isAtomicMode(), gem5::SMMUTranslRequest::isAtsRequest, gem5::SMMUTranslRequest::isPrefetch, gem5::System::isTimingMode(), gem5::SMMUTranslRequest::isWrite, gem5::Packet::makeAtomicResponse(), gem5::Packet::makeTimingResponse(), panic, gem5::SMMUTranslRequest::pkt, gem5::SMMUv3::regs, request, gem5::SMMUv3::scheduleDeviceRetries(), sendEvent(), gem5::Packet::setBadAddress(), gem5::SMMUTranslRequest::sid, gem5::SMMUTranslRequest::size, gem5::SMMUProcess::smmu, gem5::SMMUTranslRequest::ssid, gem5::SMMUv3::system, gem5::SMMUAction::type, and gem5::SMMUv3DeviceInterface::xlateSlotsRemaining.
Referenced by main().
void gem5::SMMUTranslationProcess::beginTransaction | ( | const SMMUTranslRequest & | req | ) |
Definition at line 114 of file smmu_v3_transl.cc.
References gem5::SMMUProcess::reinit(), and request.
Referenced by gem5::SMMUv3DeviceInterface::atsRecvAtomic(), gem5::SMMUv3DeviceInterface::atsRecvTimingReq(), issuePrefetch(), gem5::SMMUv3DeviceInterface::recvAtomic(), gem5::SMMUv3DeviceInterface::recvTimingReq(), and resumeTransaction().
|
private |
Definition at line 242 of file smmu_v3_transl.cc.
References gem5::SMMUTranslationProcess::TranslResult::addr, gem5::X86ISA::addr, gem5::SMMUTranslationProcess::TranslResult::addrMask, gem5::SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, and gem5::SMMUTranslationProcess::TranslResult::writable.
Referenced by main(), and smmuTranslation().
|
private |
Definition at line 1036 of file smmu_v3_transl.cc.
References gem5::SMMUTranslationProcess::TranslResult::addr, gem5::SMMUTranslationProcess::TranslResult::addrMask, gem5::SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, gem5::SMMUTranslationProcess::TranslResult::isFaulting(), and gem5::SMMUTranslationProcess::TranslResult::writable.
Referenced by walkStage1And2().
|
private |
Definition at line 1337 of file smmu_v3_transl.cc.
References gem5::ArmISA::a, gem5::ACTION_TERMINATE, ifc, gem5::SMMUAction::type, and gem5::SMMUv3DeviceInterface::xlateSlotsRemaining.
Referenced by main().
|
private |
Definition at line 1275 of file smmu_v3_transl.cc.
References gem5::ArmISA::a, gem5::ACTION_SEND_REQ_FINAL, gem5::ACTION_SEND_RESP, gem5::ACTION_SEND_RESP_ATS, gem5::SMMUTranslationProcess::TranslResult::addr, gem5::SMMUTranslRequest::addr, gem5::curTick(), gem5::SMMUProcess::doDelay(), gem5::SMMUProcess::doSemaphoreDown(), gem5::SMMUProcess::doSemaphoreUp(), gem5::Coroutine< Arg, Ret >::CallerType::get(), ifc, gem5::System::isAtomicMode(), gem5::SMMUTranslRequest::isAtsRequest, gem5::SMMUTranslationProcess::TranslResult::isFaulting(), gem5::System::isTimingMode(), gem5::SMMUTranslRequest::isWrite, gem5::Packet::makeAtomicResponse(), gem5::Packet::makeTimingResponse(), panic, gem5::SMMUTranslRequest::pkt, gem5::SMMUv3DeviceInterface::portWidth, recvTick, request, gem5::SMMUv3::requestPortSem, gem5::SMMUv3::requestPortWidth, gem5::statistics::DistBase< Derived, Stor >::sample(), gem5::SMMUv3::scheduleDeviceRetries(), gem5::Packet::setAddr(), gem5::SMMUTranslRequest::size, gem5::SMMUProcess::smmu, gem5::SMMUv3::stats, gem5::SMMUv3::system, gem5::SMMUv3::SMMUv3Stats::translationTimeDist, gem5::SMMUAction::type, gem5::SMMUv3DeviceInterface::wrBufSlotsRemaining, and gem5::SMMUv3DeviceInterface::xlateSlotsRemaining.
Referenced by main().
|
private |
Definition at line 511 of file smmu_v3_transl.cc.
References gem5::SMMUTranslationProcess::TranslContext::asid, gem5::SMMUv3::configCache, gem5::SMMUv3::configCacheEnable, gem5::SMMUv3::configLat, gem5::SMMUv3::configSem, gem5::SMMUProcess::doDelay(), gem5::SMMUProcess::doSemaphoreDown(), gem5::SMMUProcess::doSemaphoreUp(), DPRINTF, gem5::ArmISA::e, gem5::SMMUTranslationProcess::TranslContext::httb, gem5::ConfigCache::lookup(), request, gem5::SMMUTranslationProcess::TranslContext::s2t0sz, gem5::SMMUTranslRequest::sid, gem5::SMMUProcess::smmu, gem5::SMMUTranslRequest::ssid, gem5::SMMUTranslationProcess::TranslContext::stage1Enable, gem5::SMMUTranslationProcess::TranslContext::stage1TranslGranule, gem5::SMMUTranslationProcess::TranslContext::stage2Enable, gem5::SMMUTranslationProcess::TranslContext::stage2TranslGranule, gem5::SMMUTranslationProcess::TranslContext::t0sz, gem5::SMMUTranslationProcess::TranslContext::ttb0, gem5::SMMUTranslationProcess::TranslContext::ttb1, and gem5::SMMUTranslationProcess::TranslContext::vmid.
Referenced by smmuTranslation().
|
private |
Definition at line 551 of file smmu_v3_transl.cc.
References gem5::SMMUTranslationProcess::TranslContext::asid, gem5::SMMUv3::configCache, gem5::SMMUv3::configCacheEnable, gem5::SMMUv3::configSem, gem5::SMMUProcess::doSemaphoreDown(), gem5::SMMUProcess::doSemaphoreUp(), DPRINTF, gem5::ArmISA::e, gem5::SMMUTranslationProcess::TranslContext::httb, request, gem5::SMMUTranslationProcess::TranslContext::s2t0sz, gem5::SMMUTranslRequest::sid, gem5::SMMUProcess::smmu, gem5::SMMUTranslRequest::ssid, gem5::SMMUTranslationProcess::TranslContext::stage1Enable, gem5::SMMUTranslationProcess::TranslContext::stage1TranslGranule, gem5::SMMUTranslationProcess::TranslContext::stage2Enable, gem5::SMMUTranslationProcess::TranslContext::stage2TranslGranule, gem5::ConfigCache::store(), gem5::SMMUTranslationProcess::TranslContext::t0sz, gem5::SMMUTranslationProcess::TranslContext::ttb0, gem5::SMMUTranslationProcess::TranslContext::ttb1, gem5::ConfigCache::Entry::valid, and gem5::SMMUTranslationProcess::TranslContext::vmid.
Referenced by smmuTranslation().
|
private |
Definition at line 1496 of file smmu_v3_transl.cc.
References gem5::SMMUTranslationProcess::TranslResult::addr, gem5::bits(), CD, gem5::ArmISA::cd, gem5::SMMUv3::SMMUv3Stats::cdFetches, gem5::SMMUv3::SMMUv3Stats::cdL1Fetches, gem5::SMMUTranslationProcess::Fault::clss, context, doReadConfig(), DPRINTF, gem5::SMMUTranslationProcess::TranslResult::fault, gem5::SMMUTranslationProcess::TranslResult::isFaulting(), panic, gem5::StreamTableEntry::s1cdmax, gem5::StreamTableEntry::s1ctxptr, gem5::StreamTableEntry::s1fmt, gem5::SMMUProcess::smmu, gem5::ST_CD_ADDR_SHIFT, gem5::STAGE1_CFG_1L, gem5::STAGE1_CFG_2L_4K, gem5::STAGE1_CFG_2L_64K, gem5::SMMUTranslationProcess::TranslContext::stage2Enable, gem5::SMMUv3::stats, and translateStage2().
Referenced by findConfig().
|
private |
Definition at line 1576 of file smmu_v3_transl.cc.
References gem5::X86ISA::addr, and gem5::SMMUProcess::doRead().
Referenced by doReadCD(), and doReadSTE().
|
private |
Definition at line 1584 of file smmu_v3_transl.cc.
References gem5::X86ISA::addr, gem5::X86ISA::base, gem5::SMMUProcess::doRead(), and gem5::ArmISA::mask.
Referenced by walkStage1And2(), and walkStage2().
|
private |
Definition at line 1428 of file smmu_v3_transl.cc.
References gem5::StreamTableEntry::_pad, gem5::bits(), doReadConfig(), DPRINTF, gem5::MipsISA::index, panic, gem5::SMMUv3::regs, gem5::SMMUProcess::smmu, gem5::ArmISA::span, gem5::ST_CFG_FMT_2LEVEL, gem5::ST_CFG_FMT_LINEAR, gem5::ST_CFG_FMT_MASK, gem5::ST_CFG_SIZE_MASK, gem5::ST_CFG_SPLIT_MASK, gem5::ST_CFG_SPLIT_SHIFT, gem5::ST_L2_ADDR_MASK, gem5::ST_L2_SPAN_MASK, gem5::SMMUv3::stats, gem5::SMMUv3::SMMUv3Stats::steFetches, gem5::SMMUv3::SMMUv3Stats::steL1Fetches, and gem5::VMT_BASE_ADDR_MASK.
Referenced by findConfig().
|
private |
Definition at line 583 of file smmu_v3_transl.cc.
References gem5::SMMUTranslationProcess::TranslContext::asid, gem5::ArmISA::cd, gem5::CD_TTB_SHIFT, gem5::StreamTableEntry::config, context, doReadCD(), doReadSTE(), gem5::SMMUTranslationProcess::TranslContext::httb, gem5::SMMUTranslationProcess::TranslResult::isFaulting(), panic, request, gem5::SMMUTranslationProcess::TranslContext::s2t0sz, gem5::StreamTableEntry::s2t0sz, gem5::StreamTableEntry::s2tg, gem5::StreamTableEntry::s2ttb, gem5::StreamTableEntry::s2vmid, gem5::SMMUTranslRequest::sid, gem5::SMMUTranslRequest::ssid, gem5::SMMUTranslationProcess::TranslContext::stage1Enable, gem5::SMMUTranslationProcess::TranslContext::stage1TranslGranule, gem5::SMMUTranslationProcess::TranslContext::stage2Enable, gem5::SMMUTranslationProcess::TranslContext::stage2TranslGranule, gem5::STE_CONFIG_BYPASS, gem5::STE_CONFIG_STAGE1_AND_2, gem5::STE_CONFIG_STAGE1_ONLY, gem5::STE_CONFIG_STAGE2_ONLY, gem5::STE_S2TTB_SHIFT, gem5::SMMUTranslationProcess::TranslContext::t0sz, gem5::TRANS_GRANULE_INVALID, gem5::SMMUTranslationProcess::TranslContext::ttb0, gem5::SMMUTranslationProcess::TranslContext::ttb1, and gem5::SMMUTranslationProcess::TranslContext::vmid.
Referenced by smmuTranslation().
|
private |
Definition at line 1350 of file smmu_v3_transl.cc.
References gem5::SMMUTranslRequest::addr, gem5::SMMUTranslationProcess::Fault::clss, gem5::SMMUEvent::data, gem5::MipsISA::event, gem5::SMMUTranslationProcess::TranslResult::fault, FAULT_PERMISSION, FAULT_TRANSLATION, gem5::SMMUTranslationProcess::Fault::ipa, gem5::SMMUTranslRequest::isWrite, panic, request, gem5::SMMUTranslRequest::sid, gem5::SMMUTranslRequest::ssid, gem5::SMMUTranslationProcess::Fault::stage2, gem5::SMMUEvent::Data::streamId, and gem5::SMMUTranslationProcess::Fault::type.
Referenced by abortTransaction().
|
private |
Used to force ordering on transactions with same (SID, SSID, 4k page) to avoid multiple identical page-table walks.
Definition at line 1054 of file smmu_v3_transl.cc.
References gem5::SMMUTranslRequest::addr, gem5::SMMUv3DeviceInterface::duplicateReqs, ifc, and request.
Referenced by main().
|
private |
Definition at line 1080 of file smmu_v3_transl.cc.
References gem5::SMMUTranslRequest::addr, gem5::SMMUProcess::doWaitForSignal(), DPRINTF, gem5::SMMUv3DeviceInterface::duplicateReqRemoved, gem5::SMMUv3DeviceInterface::duplicateReqs, ifc, and request.
Referenced by main().
|
private |
Definition at line 1071 of file smmu_v3_transl.cc.
References gem5::SMMUTranslRequest::addr, DPRINTF, gem5::SMMUv3DeviceInterface::duplicateReqs, ifc, and request.
Referenced by main().
|
private |
Definition at line 1118 of file smmu_v3_transl.cc.
References gem5::SMMUTranslRequest::addr, gem5::SMMUProcess::doBroadcastSignal(), DPRINTF, gem5::SMMUv3DeviceInterface::duplicateReqRemoved, gem5::SMMUv3DeviceInterface::duplicateReqs, ifc, panic, and request.
Referenced by main().
|
private |
Definition at line 1153 of file smmu_v3_transl.cc.
References gem5::SMMUv3DeviceInterface::dependentReads, gem5::SMMUv3DeviceInterface::dependentReqRemoved, gem5::SMMUv3DeviceInterface::dependentWrites, gem5::SMMUProcess::doWaitForSignal(), DPRINTF, ifc, gem5::SMMUTranslRequest::isWrite, gem5::AMBA::orderId(), gem5::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 1138 of file smmu_v3_transl.cc.
References gem5::SMMUv3DeviceInterface::dependentReads, gem5::SMMUv3DeviceInterface::dependentWrites, DPRINTF, ifc, gem5::SMMUTranslRequest::isWrite, gem5::AMBA::orderId(), gem5::SMMUTranslRequest::pkt, request, and gem5::SMMU_MAX_TRANS_ID.
Referenced by main().
|
private |
Definition at line 1192 of file smmu_v3_transl.cc.
References gem5::SMMUv3DeviceInterface::dependentReads, gem5::SMMUv3DeviceInterface::dependentReqRemoved, gem5::SMMUv3DeviceInterface::dependentWrites, gem5::SMMUProcess::doBroadcastSignal(), DPRINTF, ifc, gem5::SMMUTranslRequest::isWrite, gem5::AMBA::orderId(), panic, gem5::SMMUTranslRequest::pkt, and request.
Referenced by main().
|
private |
Definition at line 347 of file smmu_v3_transl.cc.
References gem5::SMMUTranslationProcess::TranslResult::addr, gem5::SMMUTranslRequest::addr, gem5::SMMUTranslationProcess::TranslResult::addrMask, gem5::SMMUProcess::doDelay(), gem5::SMMUProcess::doSemaphoreDown(), gem5::SMMUProcess::doSemaphoreUp(), DPRINTF, gem5::ArmISA::e, gem5::SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, ifc, gem5::SMMUTLB::lookup(), gem5::SMMUv3DeviceInterface::mainTLB, gem5::SMMUv3DeviceInterface::mainTLBEnable, gem5::SMMUv3DeviceInterface::mainTLBLat, gem5::SMMUv3DeviceInterface::mainTLBSem, request, gem5::SMMUTranslRequest::sid, gem5::SMMUTranslRequest::ssid, and gem5::SMMUTranslationProcess::TranslResult::writable.
Referenced by main().
|
private |
Definition at line 445 of file smmu_v3_transl.cc.
References gem5::SMMUTranslationProcess::TranslResult::addr, gem5::SMMUTranslRequest::addr, gem5::SMMUTranslationProcess::TranslResult::addrMask, gem5::SMMUTLB::ALLOC_ANY_BUT_LAST_WAY, gem5::SMMUTLB::ALLOC_ANY_WAY, gem5::SMMUTLB::ALLOC_LAST_WAY, gem5::SMMUTranslationProcess::TranslContext::asid, context, gem5::SMMUProcess::doSemaphoreDown(), gem5::SMMUProcess::doSemaphoreUp(), DPRINTF, gem5::ArmISA::e, ifc, gem5::SMMUTranslationProcess::TranslResult::isFaulting(), gem5::SMMUTranslRequest::isPrefetch, gem5::SMMUv3DeviceInterface::mainTLB, gem5::SMMUv3DeviceInterface::mainTLBEnable, gem5::SMMUv3DeviceInterface::mainTLBSem, gem5::SMMUv3DeviceInterface::prefetchEnable, gem5::SMMUv3DeviceInterface::prefetchReserveLastWay, request, gem5::SMMUTranslRequest::sid, gem5::SMMUTranslRequest::ssid, gem5::SMMUTLB::store(), gem5::SMMUTLB::Entry::valid, gem5::SMMUTranslationProcess::TranslContext::vmid, and gem5::SMMUTranslationProcess::TranslResult::writable.
Referenced by main().
|
private |
Definition at line 1217 of file smmu_v3_transl.cc.
References gem5::X86ISA::addr, beginTransaction(), gem5::Clocked::clockEdge(), gem5::csprintf(), ifc, gem5::System::isTimingMode(), gem5::SMMUProcess::name(), gem5::SMMUTranslRequest::prefetch(), gem5::SMMUv3DeviceInterface::prefetchEnable, request, gem5::SMMUProcess::scheduleWakeup(), gem5::SMMUTranslRequest::sid, gem5::SMMUProcess::smmu, SMMUTranslationProcess(), gem5::SMMUTranslRequest::ssid, gem5::SMMUv3::system, and gem5::SMMUv3DeviceInterface::xlateSlotsRemaining.
Referenced by main().
|
privatevirtual |
Implements gem5::SMMUProcess.
Definition at line 140 of file smmu_v3_transl.cc.
References gem5::ArmISA::a, abortTransaction(), gem5::ACTION_INITIAL_NOP, gem5::SMMUTranslRequest::addr, bypass(), completePrefetch(), completeTransaction(), gem5::CR0_SMMUEN_MASK, gem5::curTick(), gem5::SMMUv3DeviceInterface::devicePortSem, gem5::SMMUProcess::doDelay(), gem5::SMMUProcess::doSemaphoreDown(), gem5::SMMUProcess::doSemaphoreUp(), hazard4kCheck(), hazard4kHold(), hazard4kRegister(), hazard4kRelease(), hazardIdHold(), hazardIdRegister(), hazardIdRelease(), ifc, ifcTLBLookup(), ifcTLBUpdate(), gem5::SMMUTranslationProcess::TranslResult::isFaulting(), gem5::SMMUTranslRequest::isPrefetch, issuePrefetch(), gem5::SMMUTranslRequest::isWrite, microTLBLookup(), microTLBUpdate(), panic, gem5::SMMUv3DeviceInterface::portWidth, recvTick, gem5::SMMUv3::regs, request, gem5::SMMUTranslRequest::size, gem5::SMMUProcess::smmu, smmuTranslation(), and gem5::SMMUAction::type.
|
private |
Definition at line 316 of file smmu_v3_transl.cc.
References gem5::SMMUTranslationProcess::TranslResult::addr, gem5::SMMUTranslRequest::addr, gem5::SMMUTranslationProcess::TranslResult::addrMask, gem5::SMMUProcess::doDelay(), gem5::SMMUProcess::doSemaphoreDown(), gem5::SMMUProcess::doSemaphoreUp(), DPRINTF, gem5::ArmISA::e, gem5::SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, ifc, gem5::SMMUTLB::lookup(), gem5::SMMUv3DeviceInterface::microTLB, gem5::SMMUv3DeviceInterface::microTLBEnable, gem5::SMMUv3DeviceInterface::microTLBLat, gem5::SMMUv3DeviceInterface::microTLBSem, request, gem5::SMMUTranslRequest::sid, gem5::SMMUTranslRequest::ssid, and gem5::SMMUTranslationProcess::TranslResult::writable.
Referenced by main().
|
private |
Definition at line 413 of file smmu_v3_transl.cc.
References gem5::SMMUTranslationProcess::TranslResult::addr, gem5::SMMUTranslRequest::addr, gem5::SMMUTranslationProcess::TranslResult::addrMask, gem5::SMMUTLB::ALLOC_ANY_WAY, gem5::SMMUTranslationProcess::TranslContext::asid, context, gem5::SMMUProcess::doSemaphoreDown(), gem5::SMMUProcess::doSemaphoreUp(), DPRINTF, gem5::ArmISA::e, ifc, gem5::SMMUTranslationProcess::TranslResult::isFaulting(), gem5::SMMUv3DeviceInterface::microTLB, gem5::SMMUv3DeviceInterface::microTLBEnable, gem5::SMMUv3DeviceInterface::microTLBSem, request, gem5::SMMUTranslRequest::sid, gem5::SMMUTranslRequest::ssid, gem5::SMMUTLB::store(), gem5::SMMUTLB::Entry::valid, gem5::SMMUTranslationProcess::TranslContext::vmid, and gem5::SMMUTranslationProcess::TranslResult::writable.
Referenced by main().
void gem5::SMMUTranslationProcess::resumeTransaction | ( | ) |
Definition at line 122 of file smmu_v3_transl.cc.
References beginTransaction(), gem5::curTick(), DPRINTF, faultTick, gem5::System::isTimingMode(), gem5::SMMUTranslRequest::pkt, request, gem5::SMMUv3::runProcessTiming(), gem5::SMMUProcess::smmu, and gem5::SMMUv3::system.
Definition at line 1376 of file smmu_v3_transl.cc.
References gem5::SMMUEvent::data, gem5::SMMUProcess::doWrite(), DPRINTF, gem5::ArmISA::mask, panic, gem5::SMMUEvent::print(), gem5::Q_BASE_ADDR_MASK, gem5::Q_BASE_SIZE_MASK, gem5::SMMUv3::regs, sendEventInterrupt(), and gem5::SMMUProcess::smmu.
Referenced by abortTransaction().
|
private |
Definition at line 1409 of file smmu_v3_transl.cc.
References gem5::SMMUProcess::doWrite(), DPRINTF, gem5::E_BASE_ADDR_MASK, gem5::SMMUv3::eventqInterrupt, gem5::ArmInterruptPin::raise(), gem5::SMMUv3::regs, and gem5::SMMUProcess::smmu.
Referenced by sendEvent().
|
private |
Definition at line 382 of file smmu_v3_transl.cc.
References gem5::SMMUTranslationProcess::TranslResult::addr, gem5::SMMUTranslRequest::addr, gem5::SMMUTranslationProcess::TranslResult::addrMask, gem5::SMMUTranslationProcess::TranslContext::asid, context, gem5::SMMUProcess::doDelay(), gem5::SMMUProcess::doSemaphoreDown(), gem5::SMMUProcess::doSemaphoreUp(), DPRINTF, gem5::ArmISA::e, gem5::SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, gem5::ARMArchTLB::lookup(), request, gem5::SMMUProcess::smmu, gem5::SMMUv3::tlb, gem5::SMMUv3::tlbEnable, gem5::SMMUv3::tlbLat, gem5::SMMUv3::tlbSem, gem5::SMMUTranslationProcess::TranslContext::vmid, and gem5::SMMUTranslationProcess::TranslResult::writable.
Referenced by smmuTranslation().
|
private |
Definition at line 482 of file smmu_v3_transl.cc.
References gem5::SMMUTranslationProcess::TranslResult::addr, gem5::SMMUTranslRequest::addr, gem5::SMMUTranslationProcess::TranslResult::addrMask, gem5::SMMUTranslationProcess::TranslContext::asid, context, gem5::SMMUProcess::doSemaphoreDown(), gem5::SMMUProcess::doSemaphoreUp(), DPRINTF, gem5::ArmISA::e, gem5::SMMUTranslationProcess::TranslResult::isFaulting(), request, gem5::SMMUProcess::smmu, gem5::ARMArchTLB::store(), gem5::SMMUv3::tlb, gem5::SMMUv3::tlbEnable, gem5::SMMUv3::tlbSem, gem5::ARMArchTLB::Entry::valid, gem5::SMMUTranslationProcess::TranslContext::vmid, and gem5::SMMUTranslationProcess::TranslResult::writable.
Referenced by smmuTranslation().
|
private |
Definition at line 254 of file smmu_v3_transl.cc.
References gem5::SMMUTranslRequest::addr, bypass(), configCacheLookup(), configCacheUpdate(), context, gem5::curTick(), gem5::SMMUProcess::doDelay(), gem5::SMMUProcess::doSemaphoreDown(), gem5::SMMUProcess::doSemaphoreUp(), findConfig(), gem5::SMMUv3::ifcSmmuLat, gem5::SMMUv3::ifcSmmuSem, gem5::SMMUTranslationProcess::TranslResult::isFaulting(), gem5::SMMUv3::ptwSem, gem5::SMMUv3::SMMUv3Stats::ptwTimeDist, request, gem5::statistics::DistBase< Derived, Stor >::sample(), gem5::SMMUProcess::smmu, gem5::SMMUv3::smmuIfcLat, gem5::SMMUv3::smmuIfcSem, smmuTLBLookup(), smmuTLBUpdate(), gem5::SMMUTranslationProcess::TranslContext::stage1Enable, gem5::SMMUTranslationProcess::TranslContext::stage2Enable, gem5::SMMUv3::stats, translateStage1And2(), translateStage2(), and gem5::SMMUv3::transSem.
Referenced by main().
|
private |
Definition at line 890 of file smmu_v3_transl.cc.
References gem5::SMMUTranslationProcess::TranslResult::addr, gem5::X86ISA::addr, gem5::SMMUTranslationProcess::TranslResult::addrMask, gem5::SMMUTranslationProcess::TranslContext::asid, context, DPRINTF, gem5::SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, gem5::ArmISA::getPageTableOps(), gem5::ArmISA::GrainMap_tg0, gem5::SMMUTranslationProcess::TranslResult::isFaulting(), gem5::WalkCache::Entry::leaf, gem5::X86ISA::level, gem5::WalkCache::Entry::pa, gem5::WalkCache::Entry::permissions, gem5::SMMUTranslationProcess::TranslContext::stage1TranslGranule, gem5::SMMUTranslationProcess::TranslContext::stage2Enable, gem5::SMMUTranslationProcess::TranslContext::t0sz, translateStage2(), gem5::SMMUTranslationProcess::TranslContext::ttb0, gem5::WalkCache::Entry::vaMask, gem5::SMMUTranslationProcess::TranslContext::vmid, walkCacheLookup(), walkStage1And2(), and gem5::SMMUTranslationProcess::TranslResult::writable.
Referenced by smmuTranslation().
|
private |
Definition at line 947 of file smmu_v3_transl.cc.
References gem5::SMMUTranslationProcess::TranslResult::addr, gem5::X86ISA::addr, gem5::SMMUTranslationProcess::TranslResult::addrMask, context, gem5::SMMUProcess::doDelay(), gem5::SMMUProcess::doSemaphoreDown(), gem5::SMMUProcess::doSemaphoreUp(), DPRINTF, gem5::ArmISA::e, gem5::SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, gem5::ArmISA::getPageTableOps(), gem5::ArmISA::GrainMap_tg0, gem5::SMMUTranslationProcess::TranslContext::httb, gem5::SMMUv3::ipaCache, gem5::SMMUv3::ipaCacheEnable, gem5::SMMUv3::ipaLat, gem5::IPACache::Entry::ipaMask, gem5::SMMUv3::ipaSem, gem5::SMMUTranslationProcess::TranslResult::isFaulting(), gem5::WalkCache::Entry::leaf, gem5::X86ISA::level, gem5::IPACache::lookup(), gem5::IPACache::Entry::pa, gem5::WalkCache::Entry::pa, gem5::IPACache::Entry::permissions, gem5::WalkCache::Entry::permissions, gem5::SMMUTranslationProcess::TranslContext::s2t0sz, gem5::SMMUProcess::smmu, gem5::SMMUTranslationProcess::TranslContext::stage1Enable, gem5::SMMUTranslationProcess::TranslContext::stage2TranslGranule, gem5::IPACache::store(), gem5::IPACache::Entry::valid, gem5::WalkCache::Entry::vaMask, gem5::SMMUTranslationProcess::TranslContext::vmid, walkCacheLookup(), gem5::SMMUv3::walkCacheNonfinalEnable, walkStage2(), and gem5::SMMUTranslationProcess::TranslResult::writable.
Referenced by doReadCD(), smmuTranslation(), translateStage1And2(), and walkStage1And2().
|
private |
Definition at line 653 of file smmu_v3_transl.cc.
References gem5::X86ISA::addr, gem5::ArmISA::asid, context, gem5::SMMUProcess::doDelay(), gem5::SMMUProcess::doSemaphoreDown(), gem5::SMMUProcess::doSemaphoreUp(), DPRINTF, gem5::ArmISA::getPageTableOps(), gem5::ArmISA::GrainMap_tg0, gem5::X86ISA::level, gem5::WalkCache::lookup(), gem5::WalkCache::Entry::pa, gem5::SMMUProcess::smmu, gem5::SMMUTranslationProcess::TranslContext::stage1TranslGranule, gem5::SMMUTranslationProcess::TranslContext::stage2TranslGranule, gem5::SMMUv3::walkCache, gem5::SMMUv3::walkCacheEnable, gem5::SMMUv3::walkCacheS1Levels, gem5::SMMUv3::walkCacheS2Levels, gem5::SMMUv3::walkLat, and gem5::SMMUv3::walkSem.
Referenced by translateStage1And2(), and translateStage2().
|
private |
Definition at line 695 of file smmu_v3_transl.cc.
References gem5::SMMUTranslationProcess::TranslContext::asid, context, gem5::SMMUProcess::doSemaphoreDown(), gem5::SMMUProcess::doSemaphoreUp(), DPRINTF, gem5::ArmISA::e, gem5::X86ISA::level, gem5::ArmISA::pa, gem5::SMMUProcess::smmu, gem5::WalkCache::store(), gem5::ArmISA::va, gem5::WalkCache::Entry::valid, gem5::SMMUTranslationProcess::TranslContext::vmid, gem5::SMMUv3::walkCache, gem5::SMMUv3::walkCacheEnable, gem5::SMMUv3::walkCacheS1Levels, gem5::SMMUv3::walkCacheS2Levels, and gem5::SMMUv3::walkSem.
Referenced by walkStage1And2(), and walkStage2().
|
private |
Definition at line 736 of file smmu_v3_transl.cc.
References gem5::SMMUTranslationProcess::TranslResult::addr, gem5::X86ISA::addr, gem5::SMMUTranslationProcess::TranslResult::addrMask, gem5::SMMUTranslationProcess::Fault::clss, combineTranslations(), context, gem5::SMMUv3::cycleSem, gem5::SMMUProcess::doDelay(), doReadPTE(), gem5::SMMUProcess::doSemaphoreDown(), gem5::SMMUProcess::doSemaphoreUp(), DPRINTF, gem5::SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, FAULT_PERMISSION, FAULT_TRANSLATION, IN, gem5::ArmISA::PageTableOps::index(), gem5::SMMUTranslationProcess::TranslResult::isFaulting(), gem5::ArmISA::PageTableOps::isLeaf(), gem5::ArmISA::PageTableOps::isValid(), gem5::ArmISA::PageTableOps::isWritable(), gem5::SMMUTranslRequest::isWrite, gem5::ArmISA::PageTableOps::lastLevel(), gem5::X86ISA::level, gem5::ArmISA::PageTableOps::nextLevelPointer(), gem5::ArmISA::PageTableOps::pageMask(), request, gem5::SMMUProcess::smmu, gem5::SMMUTranslationProcess::TranslContext::stage2Enable, gem5::SMMUTranslationProcess::TranslContext::t0sz, translateStage2(), walkCacheUpdate(), gem5::ArmISA::PageTableOps::walkMask(), and gem5::SMMUTranslationProcess::TranslResult::writable.
Referenced by translateStage1And2().
|
private |
Definition at line 823 of file smmu_v3_transl.cc.
References gem5::SMMUTranslationProcess::TranslResult::addr, gem5::X86ISA::addr, gem5::SMMUTranslationProcess::TranslResult::addrMask, context, gem5::SMMUv3::cycleSem, gem5::SMMUProcess::doDelay(), doReadPTE(), gem5::SMMUProcess::doSemaphoreDown(), gem5::SMMUProcess::doSemaphoreUp(), DPRINTF, gem5::SMMUTranslationProcess::TranslResult::fault, FAULT_NONE, FAULT_PERMISSION, FAULT_TRANSLATION, gem5::ArmISA::PageTableOps::index(), gem5::ArmISA::PageTableOps::isLeaf(), gem5::ArmISA::PageTableOps::isValid(), gem5::ArmISA::PageTableOps::isWritable(), gem5::SMMUTranslRequest::isWrite, gem5::ArmISA::PageTableOps::lastLevel(), gem5::X86ISA::level, gem5::ArmISA::PageTableOps::nextLevelPointer(), gem5::ArmISA::PageTableOps::pageMask(), request, gem5::SMMUTranslationProcess::TranslContext::s2t0sz, gem5::SMMUProcess::smmu, TT, gem5::SMMUv3::walkCacheNonfinalEnable, walkCacheUpdate(), gem5::ArmISA::PageTableOps::walkMask(), and gem5::SMMUTranslationProcess::TranslResult::writable.
Referenced by translateStage2().
|
private |
Definition at line 159 of file smmu_v3_transl.hh.
Referenced by doReadCD(), findConfig(), ifcTLBUpdate(), microTLBUpdate(), smmuTLBLookup(), smmuTLBUpdate(), smmuTranslation(), translateStage1And2(), translateStage2(), walkCacheLookup(), walkCacheUpdate(), walkStage1And2(), and walkStage2().
|
private |
Definition at line 162 of file smmu_v3_transl.hh.
Referenced by resumeTransaction().
|
private |
Definition at line 156 of file smmu_v3_transl.hh.
Referenced by abortTransaction(), completePrefetch(), completeTransaction(), hazard4kCheck(), hazard4kHold(), hazard4kRegister(), hazard4kRelease(), hazardIdHold(), hazardIdRegister(), hazardIdRelease(), ifcTLBLookup(), ifcTLBUpdate(), issuePrefetch(), main(), microTLBLookup(), microTLBUpdate(), SMMUTranslationProcess(), and ~SMMUTranslationProcess().
|
private |
Definition at line 161 of file smmu_v3_transl.hh.
Referenced by completeTransaction(), and main().
|
private |
Definition at line 158 of file smmu_v3_transl.hh.
Referenced by abortTransaction(), beginTransaction(), completeTransaction(), configCacheLookup(), configCacheUpdate(), findConfig(), generateEvent(), hazard4kCheck(), hazard4kHold(), hazard4kRegister(), hazard4kRelease(), hazardIdHold(), hazardIdRegister(), hazardIdRelease(), ifcTLBLookup(), ifcTLBUpdate(), issuePrefetch(), main(), microTLBLookup(), microTLBUpdate(), resumeTransaction(), smmuTLBLookup(), smmuTLBUpdate(), smmuTranslation(), walkStage1And2(), and walkStage2().