|
gem5 v25.0.0.1
|
#include <pagetable_walker.hh>
Classes | |
| struct | WalkFlags |
Public Member Functions | |
| WalkerState (Walker *_walker, BaseMMU::Translation *_translation, const RequestPtr &_req, bool _isFunctional=false) | |
| void | initState (ThreadContext *_tc, BaseMMU::Mode _mode, bool _isTiming=false) |
| Fault | walk () |
| Fault | startFunctional (Addr &addr, unsigned &logBytes) |
| bool | recvPacket (PacketPtr pkt) |
| unsigned | numInflight () const |
| bool | isRetrying () |
| bool | wasStarted () |
| bool | isTiming () |
| void | retry () |
| void | squash () |
| std::string | name () const |
Protected Attributes | |
| Walker * | walker |
| WalkType | walkType |
| ThreadContext * | tc |
| RequestPtr | req |
| State | state |
| State | nextState |
| State | gstate |
| State | nextgState |
| int | level |
| int | glevel |
| unsigned | inflight |
| TlbEntry | gresult |
| TlbEntry | entry |
| PacketPtr | read |
| std::vector< PacketPtr > | writes |
| Fault | timingFault |
| BaseMMU::Translation * | translation |
| BaseMMU::Mode | mode |
| MemAccessInfo | memaccess |
| XlateStage | curstage |
| SATP | satp |
| SATP | hgatp |
| STATUS | status |
| PrivilegeMode | pmode |
| bool | functional |
| bool | timing |
| bool | retrying |
| bool | started |
| bool | squashed |
Private Types | |
| enum | WalkType { OneStage , TwoStage , GstageOnly } |
| enum | State { Ready , Waiting , Translate } |
Private Member Functions | |
| Fault | checkPTEPermissions (PTESv39 pte, WalkFlags &stepWalkFlags, int level) |
| Addr | setupWalk (Addr vaddr) |
| Fault | stepWalk (PacketPtr &write) |
| Fault | stepWalkGStage (PacketPtr &write) |
| Fault | walkGStage (Addr guest_paddr, Addr &host_paddr) |
| Fault | walkOneStage (Addr vaddr) |
| Fault | walkTwoStage (Addr vaddr) |
| void | sendPackets () |
| void | endWalk () |
| Fault | pageFault () |
| Fault | guestToHostPage (Addr vaddr) |
| PacketPtr | createReqPacket (Addr paddr, MemCmd cmd, size_t bytes) |
Friends | |
| class | Walker |
Definition at line 86 of file pagetable_walker.hh.
|
private |
| Enumerator | |
|---|---|
| Ready | |
| Waiting | |
| Translate | |
Definition at line 106 of file pagetable_walker.hh.
|
private |
| Enumerator | |
|---|---|
| OneStage | |
| TwoStage | |
| GstageOnly | |
Definition at line 99 of file pagetable_walker.hh.
|
inline |
|
private |
Definition at line 649 of file pagetable_walker.cc.
References curstage, gem5::RiscvISA::Walker::WalkerState::WalkFlags::doEndWalk, gem5::RiscvISA::Walker::WalkerState::WalkFlags::doWrite, DPRINTF, entry, gresult, level, gem5::RiscvISA::mask, memaccess, mode, gem5::RiscvISA::NapotShift, gem5::NoFault, pageFault(), gem5::RiscvISA::Walker::WalkerState::WalkFlags::pteIsLeaf, tc, walker, and gem5::BaseMMU::Write.
Referenced by stepWalk(), and stepWalkGStage().
|
private |
Definition at line 1182 of file pagetable_walker.cc.
References gem5::Packet::allocate(), gem5::Request::PHYSICAL, and walker.
Referenced by walkGStage(), walkOneStage(), and walkTwoStage().
|
private |
Definition at line 1036 of file pagetable_walker.cc.
References nextState, read, and Ready.
Referenced by stepWalk(), and stepWalkGStage().
Definition at line 602 of file pagetable_walker.cc.
References curstage, entry, gem5::RiscvISA::FIRST_STAGE, gem5::ArmISA::gpa, gresult, level, gem5::RiscvISA::mask, gem5::NoFault, gem5::RiscvISA::PageShift, gem5::RiscvISA::SV39_LEVEL_BITS, gem5::RiscvISA::vaddr, and walkGStage().
Referenced by walkTwoStage().
| void gem5::RiscvISA::Walker::WalkerState::initState | ( | ThreadContext * | _tc, |
| BaseMMU::Mode | _mode, | ||
| bool | _isTiming = false ) |
Definition at line 193 of file pagetable_walker.cc.
References entry, functional, hgatp, memaccess, gem5::RiscvISA::MISCREG_HGATP, gem5::RiscvISA::MISCREG_ISA, gem5::RiscvISA::MISCREG_SATP, gem5::RiscvISA::MISCREG_STATUS, gem5::RiscvISA::MISCREG_VSATP, mode, pmode, Ready, req, satp, started, state, status, tc, timing, and walker.
Referenced by gem5::RiscvISA::Walker::start().
| bool gem5::RiscvISA::Walker::WalkerState::isRetrying | ( | ) |
Definition at line 1199 of file pagetable_walker.cc.
References retrying.
Referenced by gem5::RiscvISA::Walker::recvReqRetry().
| bool gem5::RiscvISA::Walker::WalkerState::isTiming | ( | ) |
Definition at line 1205 of file pagetable_walker.cc.
References timing.
Referenced by gem5::RiscvISA::Walker::start().
|
inline |
Definition at line 165 of file pagetable_walker.hh.
References walker.
| unsigned gem5::RiscvISA::Walker::WalkerState::numInflight | ( | ) | const |
Definition at line 1193 of file pagetable_walker.cc.
References inflight.
Referenced by gem5::RiscvISA::Walker::startWalkWrapper().
|
private |
Definition at line 1230 of file pagetable_walker.cc.
References curstage, entry, gresult, gem5::RiscvISA::GSTAGE, memaccess, mode, and walker.
Referenced by checkPTEPermissions(), stepWalk(), stepWalkGStage(), walkGStage(), walkOneStage(), and walkTwoStage().
| bool gem5::RiscvISA::Walker::WalkerState::recvPacket | ( | PacketPtr | pkt | ) |
Definition at line 1075 of file pagetable_walker.cc.
References gem5::Packet::headerDelay, inflight, gem5::Packet::isRead(), gem5::Packet::isResponse(), mode, nextState, gem5::NoFault, gem5::Packet::payloadDelay, pmode, read, Ready, req, satp, sendPackets(), gem5::sext(), squashed, state, stepWalk(), tc, timingFault, translation, gem5::RiscvISA::vaddr, Waiting, walker, and writes.
Referenced by gem5::RiscvISA::Walker::recvTimingResp().
| void gem5::RiscvISA::Walker::WalkerState::retry | ( | ) |
Definition at line 1223 of file pagetable_walker.cc.
References retrying, and sendPackets().
Referenced by gem5::RiscvISA::Walker::recvReqRetry().
|
private |
Definition at line 1149 of file pagetable_walker.cc.
References inflight, read, retrying, walker, and writes.
Referenced by recvPacket(), retry(), walkGStage(), walkOneStage(), and walkTwoStage().
Definition at line 1044 of file pagetable_walker.cc.
References curstage, gem5::RiscvISA::FIRST_STAGE, gresult, gem5::RiscvISA::GSTAGE, hgatp, gem5::RiscvISA::mask, gem5::RiscvISA::PageShift, panic, satp, gem5::ArmISA::shift, gem5::RiscvISA::SV39_LEVEL_BITS, gem5::RiscvISA::SV39X4_WIDENED_BITS, and gem5::RiscvISA::vaddr.
Referenced by walkGStage(), walkOneStage(), and walkTwoStage().
| void gem5::RiscvISA::Walker::WalkerState::squash | ( | ) |
Definition at line 1217 of file pagetable_walker.cc.
References squashed.
Referenced by gem5::RiscvISA::Walker::startWalkWrapper().
Definition at line 632 of file pagetable_walker.cc.
References gem5::X86ISA::addr, entry, gem5::RiscvISA::PageShift, and walk().
Definition at line 705 of file pagetable_walker.cc.
References checkPTEPermissions(), gem5::Packet::cmd, curstage, gem5::RiscvISA::Walker::WalkerState::WalkFlags::doEndWalk, gem5::RiscvISA::Walker::WalkerState::WalkFlags::doTLBInsert, gem5::RiscvISA::Walker::WalkerState::WalkFlags::doWrite, DPRINTF, endWalk(), entry, gem5::RiscvISA::FIRST_STAGE, functional, gem5::Packet::getSize(), gem5::RiscvISA::getVPNFromVAddr(), level, gem5::RiscvISA::mask, memaccess, mode, gem5::RiscvISA::NapotShift, nextState, gem5::NoFault, OneStage, pageFault(), gem5::RiscvISA::PageShift, pmode, gem5::RiscvISA::PRV_S, gem5::RiscvISA::Walker::WalkerState::WalkFlags::pteIsLeaf, gem5::BaseMMU::Read, read, gem5::MemCmd::ReadReq, Ready, gem5::Packet::req, satp, gem5::Packet::setLE(), gem5::ArmISA::shift, state, gem5::RiscvISA::SV39_LEVEL_BITS, tc, Translate, TwoStage, Waiting, walker, walkType, gem5::BaseMMU::Write, and gem5::MemCmd::WriteReq.
Referenced by recvPacket(), walkOneStage(), and walkTwoStage().
Definition at line 868 of file pagetable_walker.cc.
References checkPTEPermissions(), gem5::Packet::cmd, gem5::RiscvISA::Walker::WalkerState::WalkFlags::doEndWalk, gem5::RiscvISA::Walker::WalkerState::WalkFlags::doTLBInsert, gem5::RiscvISA::Walker::WalkerState::WalkFlags::doWrite, DPRINTF, endWalk(), entry, functional, gem5::Packet::getSize(), gem5::RiscvISA::getVPNFromVAddr(), glevel, gresult, GstageOnly, gstate, gem5::RiscvISA::mask, memaccess, mode, gem5::RiscvISA::NapotShift, nextgState, gem5::NoFault, pageFault(), gem5::RiscvISA::PageShift, pmode, gem5::RiscvISA::PRV_S, gem5::RiscvISA::Walker::WalkerState::WalkFlags::pteIsLeaf, gem5::BaseMMU::Read, read, gem5::MemCmd::ReadReq, Ready, gem5::Packet::req, satp, gem5::Packet::setLE(), gem5::ArmISA::shift, gem5::RiscvISA::SV39_LEVEL_BITS, tc, Translate, Waiting, walker, walkType, gem5::BaseMMU::Write, and gem5::MemCmd::WriteReq.
Referenced by walkGStage().
| Fault gem5::RiscvISA::Walker::WalkerState::walk | ( | ) |
Definition at line 391 of file pagetable_walker.cc.
References entry, GstageOnly, memaccess, nextState, gem5::NoFault, OneStage, Ready, satp, started, state, Translate, TwoStage, gem5::RiscvISA::vaddr, walkGStage(), walkOneStage(), walkTwoStage(), and walkType.
Referenced by gem5::RiscvISA::Walker::start(), startFunctional(), and gem5::RiscvISA::Walker::startWalkWrapper().
|
private |
Definition at line 311 of file pagetable_walker.cc.
References createReqPacket(), curstage, entry, glevel, gresult, gem5::RiscvISA::GSTAGE, GstageOnly, gstate, gem5::RiscvISA::mask, nextgState, gem5::NoFault, pageFault(), gem5::RiscvISA::PageShift, panic, gem5::RiscvISA::ppn, read, gem5::MemCmd::ReadReq, Ready, sendPackets(), setupWalk(), stepWalkGStage(), gem5::RiscvISA::SV39_LEVEL_BITS, gem5::RiscvISA::SV39_LEVELS, gem5::RiscvISA::SV39X4_WIDENED_BITS, timing, timingFault, Translate, Waiting, walker, and walkType.
Referenced by guestToHostPage(), walk(), and walkTwoStage().
Definition at line 425 of file pagetable_walker.cc.
References gem5::bits(), createReqPacket(), curstage, gem5::RiscvISA::FIRST_STAGE, functional, level, gem5::RiscvISA::mask, gem5::RiscvISA::MISCREG_ISA, nextState, gem5::NoFault, pageFault(), panic_if, read, gem5::MemCmd::ReadReq, Ready, sendPackets(), setupWalk(), state, stepWalk(), gem5::RiscvISA::SV39_LEVELS, gem5::RiscvISA::SV39_VADDR_BITS, tc, timing, timingFault, gem5::RiscvISA::vaddr, Waiting, and walker.
Referenced by walk().
Definition at line 491 of file pagetable_walker.cc.
References gem5::bits(), createReqPacket(), curstage, entry, gem5::RiscvISA::FIRST_STAGE, functional, gem5::RiscvISA::getVPNFromVAddr(), guestToHostPage(), level, gem5::RiscvISA::mask, memaccess, gem5::RiscvISA::MISCREG_ISA, nextState, gem5::NoFault, pageFault(), panic_if, read, gem5::MemCmd::ReadReq, Ready, satp, sendPackets(), setupWalk(), state, stepWalk(), gem5::RiscvISA::SV39_LEVELS, gem5::RiscvISA::SV39_VADDR_BITS, tc, timing, timingFault, gem5::RiscvISA::vaddr, Waiting, walker, and walkGStage().
Referenced by walk().
| bool gem5::RiscvISA::Walker::WalkerState::wasStarted | ( | ) |
Definition at line 1211 of file pagetable_walker.cc.
References started.
Referenced by gem5::RiscvISA::Walker::startWalkWrapper().
|
friend |
Definition at line 88 of file pagetable_walker.hh.
References Walker.
Referenced by Walker, and WalkerState().
|
protected |
Definition at line 133 of file pagetable_walker.hh.
Referenced by checkPTEPermissions(), guestToHostPage(), pageFault(), setupWalk(), stepWalk(), walkGStage(), walkOneStage(), and walkTwoStage().
|
protected |
Definition at line 126 of file pagetable_walker.hh.
Referenced by checkPTEPermissions(), guestToHostPage(), initState(), pageFault(), gem5::RiscvISA::Walker::start(), startFunctional(), stepWalk(), stepWalkGStage(), walk(), walkGStage(), and walkTwoStage().
|
protected |
Definition at line 138 of file pagetable_walker.hh.
Referenced by initState(), stepWalk(), stepWalkGStage(), WalkerState(), walkOneStage(), and walkTwoStage().
|
protected |
Definition at line 123 of file pagetable_walker.hh.
Referenced by stepWalkGStage(), WalkerState(), and walkGStage().
|
protected |
Definition at line 125 of file pagetable_walker.hh.
Referenced by checkPTEPermissions(), guestToHostPage(), pageFault(), setupWalk(), stepWalkGStage(), and walkGStage().
|
protected |
Definition at line 120 of file pagetable_walker.hh.
Referenced by stepWalkGStage(), and walkGStage().
|
protected |
Definition at line 135 of file pagetable_walker.hh.
Referenced by initState(), and setupWalk().
|
protected |
Definition at line 124 of file pagetable_walker.hh.
Referenced by numInflight(), recvPacket(), sendPackets(), and WalkerState().
|
protected |
Definition at line 122 of file pagetable_walker.hh.
Referenced by checkPTEPermissions(), guestToHostPage(), stepWalk(), WalkerState(), walkOneStage(), and walkTwoStage().
|
protected |
Definition at line 132 of file pagetable_walker.hh.
Referenced by checkPTEPermissions(), initState(), pageFault(), gem5::RiscvISA::Walker::startWalkWrapper(), stepWalk(), stepWalkGStage(), walk(), and walkTwoStage().
|
protected |
Definition at line 131 of file pagetable_walker.hh.
Referenced by checkPTEPermissions(), initState(), pageFault(), recvPacket(), gem5::RiscvISA::Walker::startWalkWrapper(), stepWalk(), and stepWalkGStage().
|
protected |
Definition at line 121 of file pagetable_walker.hh.
Referenced by stepWalkGStage(), and walkGStage().
|
protected |
Definition at line 119 of file pagetable_walker.hh.
Referenced by endWalk(), recvPacket(), stepWalk(), walk(), WalkerState(), walkOneStage(), and walkTwoStage().
|
protected |
Definition at line 137 of file pagetable_walker.hh.
Referenced by initState(), recvPacket(), stepWalk(), and stepWalkGStage().
|
protected |
Definition at line 127 of file pagetable_walker.hh.
Referenced by endWalk(), recvPacket(), sendPackets(), stepWalk(), stepWalkGStage(), walkGStage(), walkOneStage(), and walkTwoStage().
|
protected |
Definition at line 117 of file pagetable_walker.hh.
Referenced by initState(), recvPacket(), gem5::RiscvISA::Walker::startWalkWrapper(), and WalkerState().
|
protected |
Definition at line 140 of file pagetable_walker.hh.
Referenced by isRetrying(), retry(), sendPackets(), and WalkerState().
|
protected |
Definition at line 134 of file pagetable_walker.hh.
Referenced by initState(), recvPacket(), setupWalk(), gem5::RiscvISA::Walker::startWalkWrapper(), stepWalk(), stepWalkGStage(), walk(), and walkTwoStage().
|
protected |
Definition at line 142 of file pagetable_walker.hh.
Referenced by recvPacket(), squash(), and WalkerState().
|
protected |
Definition at line 141 of file pagetable_walker.hh.
Referenced by initState(), walk(), WalkerState(), and wasStarted().
|
protected |
Definition at line 118 of file pagetable_walker.hh.
Referenced by initState(), recvPacket(), stepWalk(), walk(), WalkerState(), walkOneStage(), and walkTwoStage().
|
protected |
Definition at line 136 of file pagetable_walker.hh.
Referenced by initState().
|
protected |
Definition at line 116 of file pagetable_walker.hh.
Referenced by checkPTEPermissions(), initState(), recvPacket(), gem5::RiscvISA::Walker::startWalkWrapper(), stepWalk(), stepWalkGStage(), walkOneStage(), and walkTwoStage().
|
protected |
Definition at line 139 of file pagetable_walker.hh.
Referenced by initState(), isTiming(), WalkerState(), walkGStage(), walkOneStage(), and walkTwoStage().
|
protected |
Definition at line 129 of file pagetable_walker.hh.
Referenced by recvPacket(), walkGStage(), walkOneStage(), and walkTwoStage().
|
protected |
Definition at line 130 of file pagetable_walker.hh.
Referenced by recvPacket(), gem5::RiscvISA::Walker::startWalkWrapper(), and WalkerState().
|
protected |
Definition at line 114 of file pagetable_walker.hh.
Referenced by checkPTEPermissions(), createReqPacket(), initState(), name(), pageFault(), recvPacket(), sendPackets(), stepWalk(), stepWalkGStage(), WalkerState(), walkGStage(), walkOneStage(), and walkTwoStage().
|
protected |
Definition at line 115 of file pagetable_walker.hh.
Referenced by stepWalk(), stepWalkGStage(), walk(), and walkGStage().
|
protected |
Definition at line 128 of file pagetable_walker.hh.
Referenced by recvPacket(), and sendPackets().