gem5 v24.0.0.0
|
A Packet is used to encapsulate a transfer between two objects in the memory system (e.g., the L1 and L2 cache). More...
#include <packet.hh>
Classes | |
class | PrintReqState |
Object used to maintain state of a PrintReq. More... | |
struct | SenderState |
A virtual base opaque structure used to hold state associated with the packet (e.g., an MSHR), specific to a SimObject that sees the packet. More... | |
Public Types | |
typedef uint32_t | FlagsType |
typedef gem5::Flags< FlagsType > | Flags |
typedef MemCmd::Command | Command |
Public Member Functions | |
void | pushSenderState (SenderState *sender_state) |
Push a new sender state to the packet and make the current sender state the predecessor of the new one. | |
SenderState * | popSenderState () |
Pop the top of the state stack and return a pointer to it. | |
template<typename T > | |
T * | findNextSenderState () const |
Go through the sender state stack and return the first instance that is of type T (as determined by a dynamic_cast). | |
const std::string & | cmdString () const |
Return the string name of the cmd field (for debugging and tracing). | |
int | cmdToIndex () const |
Return the index of this command. | |
bool | isRead () const |
bool | isWrite () const |
bool | isDemand () const |
bool | isUpgrade () const |
bool | isRequest () const |
bool | isResponse () const |
bool | needsWritable () const |
bool | needsResponse () const |
bool | isInvalidate () const |
bool | isEviction () const |
bool | isClean () const |
bool | fromCache () const |
bool | isWriteback () const |
bool | hasData () const |
bool | hasRespData () const |
bool | isLLSC () const |
bool | isLockedRMW () const |
bool | isError () const |
bool | isPrint () const |
bool | isFlush () const |
bool | isWholeLineWrite (unsigned blk_size) |
void | setCacheResponding () |
Snoop flags. | |
bool | cacheResponding () const |
void | setHasSharers () |
On fills, the hasSharers flag is used by the caches in combination with the cacheResponding flag, as clarified above. | |
bool | hasSharers () const |
void | setExpressSnoop () |
The express snoop flag is used for two purposes. | |
bool | isExpressSnoop () const |
void | setResponderHadWritable () |
On responding to a snoop request (which only happens for Modified or Owned lines), make sure that we can transform an Owned response to a Modified one. | |
bool | responderHadWritable () const |
void | copyResponderFlags (const PacketPtr pkt) |
Copy the reponse flags from an input packet to this packet. | |
void | setWriteThrough () |
A writeback/writeclean cmd gets propagated further downstream by the receiver when the flag is set. | |
void | clearWriteThrough () |
bool | writeThrough () const |
void | setSatisfied () |
Set when a request hits in a cache and the cache is not going to respond. | |
bool | satisfied () const |
void | setSuppressFuncError () |
bool | suppressFuncError () const |
void | setBlockCached () |
bool | isBlockCached () const |
void | clearBlockCached () |
uint8_t | qosValue () const |
QoS Value getter Returns 0 if QoS value was never set (constructor default). | |
void | qosValue (const uint8_t qos_value) |
QoS Value setter Interface for setting QoS priority value of the packet. | |
RequestorID | requestorId () const |
void | setBadAddress () |
void | setBadCommand () |
void | copyError (Packet *pkt) |
Addr | getAddr () const |
void | setAddr (Addr _addr) |
Update the address of this packet mid-transaction. | |
unsigned | getSize () const |
AddrRange | getAddrRange () const |
Get address range to which this packet belongs. | |
Addr | getOffset (unsigned int blk_size) const |
Addr | getBlockAddr (unsigned int blk_size) const |
bool | isSecure () const |
AtomicOpFunctor * | getAtomicOp () const |
Accessor function to atomic op. | |
bool | isAtomicOp () const |
void | convertScToWrite () |
It has been determined that the SC packet should successfully update memory. | |
void | convertLlToRead () |
When ruby is in use, Ruby will monitor the cache line and the phys memory should treat LL ops as normal reads. | |
Packet (const RequestPtr &_req, MemCmd _cmd) | |
Constructor. | |
Packet (const RequestPtr &_req, MemCmd _cmd, int _blkSize, PacketId _id=0) | |
Alternate constructor if you are trying to create a packet with a request that is for a whole block, not the address from the req. | |
Packet (const PacketPtr pkt, bool clear_flags, bool alloc_data) | |
Alternate constructor for copying a packet. | |
~Packet () | |
clean up packet variables | |
void | makeResponse () |
Take a request packet and modify it in place to be suitable for returning as a response to that request. | |
void | makeAtomicResponse () |
void | makeTimingResponse () |
void | setFunctionalResponseStatus (bool success) |
void | setSize (unsigned size) |
bool | isGLCSet () const |
Accessor functions for the cache bypass flags. | |
bool | isSLCSet () const |
bool | matchBlockAddr (const Addr addr, const bool is_secure, const int blk_size) const |
Check if packet corresponds to a given block-aligned address and address space. | |
bool | matchBlockAddr (const PacketPtr pkt, const int blk_size) const |
Check if this packet refers to the same block-aligned address and address space as another packet. | |
bool | matchAddr (const Addr addr, const bool is_secure) const |
Check if packet corresponds to a given address and address space. | |
bool | matchAddr (const PacketPtr pkt) const |
Check if this packet refers to the same address and address space as another packet. | |
template<typename T > | |
T | getRaw () const |
Get the data in the packet without byte swapping. | |
template<typename T > | |
void | setRaw (T v) |
Set the value in the data pointer to v without byte swapping. | |
bool | trySatisfyFunctional (PacketPtr other) |
Check a functional request against a memory value stored in another packet (i.e. | |
bool | mustCheckAbove () const |
Does the request need to check for cached copies of the same block in the memory hierarchy above. | |
bool | isCleanEviction () const |
Is this packet a clean eviction, including both actual clean evict packets, but also clean writebacks. | |
bool | isCleanInvalidateRequest () const |
Is this packet a clean invalidate request, e.g., clflush/clflushopt? | |
bool | isMaskedWrite () const |
bool | trySatisfyFunctional (Printable *obj, Addr base, bool is_secure, int size, uint8_t *_data) |
Check a functional request against a memory value represented by a base/size pair and an associated data array. | |
void | pushLabel (const std::string &lbl) |
Push label for PrintReq (safe to call unconditionally). | |
void | popLabel () |
Pop label for PrintReq (safe to call unconditionally). | |
void | print (std::ostream &o, int verbosity=0, const std::string &prefix="") const |
std::string | print () const |
A no-args wrapper of print(std::ostream...) meant to be invoked from DPRINTFs avoiding string overheads in fast mode. | |
void | makeHtmTransactionalReqResponse (const HtmCacheFailure ret_code) |
Communicates to the core that a packet was processed by the memory subsystem while running in transactional mode. | |
void | setHtmTransactional (uint64_t val) |
Stipulates that this packet/request originates in the CPU executing in transactional mode, i.e. | |
bool | isHtmTransactional () const |
Returns whether or not this packet/request originates in the CPU executing in transactional mode, i.e. | |
uint64_t | getHtmTransactionUid () const |
If a packet/request originates in a CPU executing in transactional mode, i.e. | |
void | setHtmTransactionFailedInCache (const HtmCacheFailure ret_code) |
Stipulates that this packet/request has returned from the cache hierarchy in a failed transaction. | |
bool | htmTransactionFailedInCache () const |
Returns whether or not this packet/request has returned from the cache hierarchy in a failed transaction. | |
HtmCacheFailure | getHtmTransactionFailedInCacheRC () const |
If a packet/request has returned from the cache hierarchy in a failed transaction, this function returns the failure reason. | |
Data accessor methods | |
template<typename T > | |
void | dataStatic (T *p) |
Set the data pointer to the following value that should not be freed. | |
template<typename T > | |
void | dataStaticConst (const T *p) |
Set the data pointer to the following value that should not be freed. | |
template<typename T > | |
void | dataDynamic (T *p) |
Set the data pointer to a value that should have delete [] called on it. | |
template<typename T > | |
T * | getPtr () |
get a pointer to the data ptr. | |
template<typename T > | |
const T * | getConstPtr () const |
template<typename T > | |
T | getBE () const |
Get the data in the packet byte swapped from big endian to host endian. | |
template<typename T > | |
T | getLE () const |
Get the data in the packet byte swapped from little endian to host endian. | |
template<typename T > | |
T | get (ByteOrder endian) const |
Get the data in the packet byte swapped from the specified endianness. | |
template<typename T > | |
void | setBE (T v) |
Set the value in the data pointer to v as big endian. | |
template<typename T > | |
void | setLE (T v) |
Set the value in the data pointer to v as little endian. | |
template<typename T > | |
void | set (T v, ByteOrder endian) |
Set the value in the data pointer to v using the specified endianness. | |
uint64_t | getUintX (ByteOrder endian) const |
Get the data in the packet byte swapped from the specified endianness and zero-extended to 64 bits. | |
void | setUintX (uint64_t w, ByteOrder endian) |
Set the value in the word w after truncating it to the length of the packet and then byteswapping it to the desired endianness. | |
void | setData (const uint8_t *p) |
Copy data into the packet from the provided pointer. | |
void | setDataFromBlock (const uint8_t *blk_data, int blkSize) |
Copy data into the packet from the provided block pointer, which is aligned to the given block size. | |
void | writeData (uint8_t *p) const |
Copy data from the packet to the memory at the provided pointer. | |
void | writeDataToBlock (uint8_t *blk_data, int blkSize) const |
Copy data from the packet to the provided block pointer, which is aligned to the given block size. | |
void | deleteData () |
delete the data pointed to in the data pointer. | |
void | allocate () |
Allocate memory for the packet. | |
Public Member Functions inherited from gem5::Printable | |
Printable () | |
virtual | ~Printable () |
Public Member Functions inherited from gem5::Extensible< Packet > | |
Extensible ()=default | |
Extensible (const Extensible &other) | |
virtual | ~Extensible ()=default |
void | setExtension (std::shared_ptr< T > ext) |
Set a new extension to the packet and replace the old one, if there already exists the same type of extension in this packet. | |
void | removeExtension (void) |
Remove the extension based on its type. | |
std::shared_ptr< T > | getExtension () |
Get the extension pointer by linear search with the extensionID. | |
Static Public Member Functions | |
static MemCmd | makeReadCmd (const RequestPtr &req) |
Generate the appropriate read MemCmd based on the Request flags. | |
static MemCmd | makeWriteCmd (const RequestPtr &req) |
Generate the appropriate write MemCmd based on the Request flags. | |
static PacketPtr | createRead (const RequestPtr &req) |
Constructor-like methods that return Packets based on Request objects. | |
static PacketPtr | createWrite (const RequestPtr &req) |
Public Attributes | |
MemCmd | cmd |
The command field of the packet. | |
const PacketId | id |
RequestPtr | req |
A pointer to the original request. | |
uint32_t | headerDelay |
The extra delay from seeing the packet until the header is transmitted. | |
uint32_t | snoopDelay |
Keep track of the extra delay incurred by snooping upwards before sending a request down the memory system. | |
uint32_t | payloadDelay |
The extra pipelining delay from seeing the packet until the end of payload is transmitted by the component that provided it (if any). | |
SenderState * | senderState |
This packet's sender state. | |
Private Types | |
enum | : FlagsType { COPY_FLAGS = 0x000000FF , RESPONDER_FLAGS = 0x00000009 , HAS_SHARERS = 0x00000001 , EXPRESS_SNOOP = 0x00000002 , RESPONDER_HAD_WRITABLE = 0x00000004 , CACHE_RESPONDING = 0x00000008 , WRITE_THROUGH = 0x00000010 , SATISFIED = 0x00000020 , FAILS_TRANSACTION = 0x00000040 , FROM_TRANSACTION = 0x00000080 , VALID_ADDR = 0x00000100 , VALID_SIZE = 0x00000200 , STATIC_DATA = 0x00001000 , DYNAMIC_DATA = 0x00002000 , SUPPRESS_FUNC_ERROR = 0x00008000 , BLOCK_CACHED = 0x00010000 } |
Private Attributes | |
Flags | flags |
PacketDataPtr | data |
A pointer to the data being transferred. | |
Addr | addr |
The address of the request. | |
bool | _isSecure |
True if the request targets the secure memory space. | |
unsigned | size |
The size of the request or transfer. | |
std::vector< bool > | bytesValid |
Track the bytes found that satisfy a functional read. | |
uint8_t | _qosValue |
HtmCacheFailure | htmReturnReason |
Holds the return status of the transaction. | |
uint64_t | htmTransactionUid |
A global unique identifier of the transaction. | |
Additional Inherited Members | |
Protected Member Functions inherited from gem5::Extensible< Packet > | |
std::list< std::shared_ptr< ExtensionBase > >::iterator | findExtension () |
Go through the extension list and return the iterator to the instance of the type of extension. | |
Protected Attributes inherited from gem5::Extensible< Packet > | |
std::list< std::shared_ptr< ExtensionBase > > | extensions |
A Packet is used to encapsulate a transfer between two objects in the memory system (e.g., the L1 and L2 cache).
(In contrast, a single Request travels all the way from the requestor to the ultimate destination and back, possibly being conveyed by several different Packets along the way.)
typedef MemCmd::Command gem5::Packet::Command |
typedef gem5::Flags<FlagsType> gem5::Packet::Flags |
typedef uint32_t gem5::Packet::FlagsType |
|
private |
|
inline |
Constructor.
Note that a Request object must be constructed first, but the Requests's physical address and size fields need not be valid. The command must be supplied.
hardware transactional memory
This is a bit of a hack! Technically the address of a HTM command is set to zero but is not valid. The reason that we pretend it's valid is to void the getAddr() function from failing. It would be cumbersome to add control flow in many places to check if the packet represents a HTM command before calling getAddr().
Definition at line 877 of file packet.hh.
References _isSecure, addr, gem5::Flags< T >::clear(), flags, req, gem5::Flags< T >::set(), size, VALID_ADDR, and VALID_SIZE.
Referenced by createRead(), and createWrite().
|
inline |
Alternate constructor if you are trying to create a packet with a request that is for a whole block, not the address from the req.
this allows for overriding the size/addr of the req.
Definition at line 918 of file packet.hh.
References _isSecure, addr, gem5::Flags< T >::clear(), flags, req, gem5::Flags< T >::set(), size, VALID_ADDR, and VALID_SIZE.
|
inline |
Alternate constructor for copying a packet.
Copy all fields except if the original packet's data was dynamic, don't copy that, as we can't guarantee that the new packet's lifetime is less than that of the original packet. In this case the new packet should allocate its own data.
Definition at line 944 of file packet.hh.
References allocate(), COPY_FLAGS, data, flags, getHtmTransactionFailedInCacheRC(), getHtmTransactionUid(), htmTransactionFailedInCache(), isHtmTransactional(), gem5::Flags< T >::isSet(), gem5::Flags< T >::set(), setHtmTransactional(), setHtmTransactionFailedInCache(), STATIC_DATA, VALID_ADDR, and VALID_SIZE.
|
inline |
|
inline |
Allocate memory for the packet.
Definition at line 1367 of file packet.hh.
References data, DYNAMIC_DATA, flags, getSize(), hasData(), hasRespData(), gem5::Flags< T >::noneSet(), gem5::Flags< T >::set(), and STATIC_DATA.
Referenced by gem5::SimpleCache::accessTiming(), gem5::X86ISA::buildIntAcknowledgePacket(), gem5::X86ISA::buildIntPacket(), gem5::Cache::cleanEvictBlk(), gem5::Cache::createMissPacket(), gem5::NoncoherentCache::createMissPacket(), gem5::prefetch::Queued::DeferredPacket::createPkt(), gem5::GUPSGen::getReadPacket(), gem5::GUPSGen::getWritePacket(), gem5::InvalidateGenerator::initiate(), gem5::SeriesRequestGenerator::initiate(), gem5::minor::Fetch1::FetchRequest::makePacket(), gem5::minor::makePacketForRequest(), Packet(), gem5::replaceUpgrade(), gem5::ruby::AbstractController::serviceMemoryQueue(), gem5::BaseCache::writebackBlk(), and gem5::BaseCache::writecleanBlk().
|
inline |
Definition at line 659 of file packet.hh.
References CACHE_RESPONDING, flags, and gem5::Flags< T >::isSet().
Referenced by gem5::memory::AbstractMemory::access(), copyResponderFlags(), gem5::CoherentXBar::forwardAtomic(), gem5::BaseCache::handleFill(), gem5::Cache::handleSnoop(), gem5::Cache::isCachedAbove(), gem5::SnoopFilter::lookupRequest(), gem5::Bridge::BridgeResponsePort::recvAtomic(), gem5::Cache::recvAtomic(), gem5::CommMonitor::recvAtomic(), gem5::memory::CfiMemory::recvAtomic(), gem5::memory::DRAMSim2::recvAtomic(), gem5::memory::DRAMsim3::recvAtomic(), gem5::memory::qos::MemSinkCtrl::recvAtomic(), gem5::memory::SimpleMemory::recvAtomic(), gem5::NoncoherentCache::recvAtomic(), sc_gem5::Gem5ToTlmBridge< BITWIDTH >::recvAtomic(), sc_gem5::Gem5ToTlmBridge< BITWIDTH >::recvAtomicBackdoor(), gem5::memory::MemCtrl::recvAtomicLogic(), gem5::AddrMapper::recvTimingReq(), gem5::Bridge::BridgeResponsePort::recvTimingReq(), gem5::Cache::recvTimingReq(), gem5::CoherentXBar::recvTimingReq(), gem5::CommMonitor::recvTimingReq(), gem5::HMCController::recvTimingReq(), gem5::MemCheckerMonitor::recvTimingReq(), gem5::memory::CfiMemory::recvTimingReq(), gem5::memory::DRAMSim2::recvTimingReq(), gem5::memory::DRAMsim3::recvTimingReq(), gem5::memory::HBMCtrl::recvTimingReq(), gem5::memory::HeteroMemCtrl::recvTimingReq(), gem5::memory::MemCtrl::recvTimingReq(), gem5::memory::qos::MemSinkCtrl::recvTimingReq(), gem5::memory::SimpleMemory::recvTimingReq(), gem5::NoncoherentCache::recvTimingReq(), gem5::NoncoherentXBar::recvTimingReq(), gem5::ruby::RubyPort::MemResponsePort::recvTimingReq(), gem5::SerialLink::SerialLinkResponsePort::recvTimingReq(), gem5::SimpleTimingPort::recvTimingReq(), sc_gem5::Gem5ToTlmBridge< BITWIDTH >::recvTimingReq(), gem5::ArmISA::TableWalker::Port::recvTimingResp(), gem5::DmaPort::recvTimingResp(), gem5::o3::Fetch::IcachePort::recvTimingResp(), gem5::CoherentXBar::recvTimingSnoopReq(), gem5::BaseCache::sendMSHRQueuePacket(), gem5::Cache::sendMSHRQueuePacket(), setResponderHadWritable(), gem5::CoherentXBar::sinkPacket(), gem5::SnoopFilter::updateSnoopForward(), and gem5::SnoopFilter::updateSnoopResponse().
|
inline |
Definition at line 761 of file packet.hh.
References BLOCK_CACHED, gem5::Flags< T >::clear(), and flags.
Referenced by gem5::BaseCache::access().
|
inline |
Definition at line 741 of file packet.hh.
References gem5::Flags< T >::clear(), flags, and WRITE_THROUGH.
Referenced by gem5::CoherentXBar::recvAtomicBackdoor(), and gem5::CoherentXBar::recvTimingReq().
|
inline |
Return the string name of the cmd field (for debugging and tracing).
Definition at line 588 of file packet.hh.
References cmd, and gem5::MemCmd::toString().
Referenced by gem5::memory::AbstractMemory::functionalAccess(), gem5::ruby::Sequencer::hitCallback(), print(), gem5::NoncoherentXBar::recvAtomicBackdoor(), gem5::memory::MemCtrl::recvAtomicLogic(), gem5::AtomicSimpleCPU::AtomicCPUDPort::recvAtomicSnoop(), gem5::NoncoherentXBar::recvFunctional(), gem5::ruby::RubyPort::MemResponsePort::recvFunctional(), gem5::AtomicSimpleCPU::AtomicCPUDPort::recvFunctionalSnoop(), gem5::Bridge::BridgeResponsePort::recvTimingReq(), gem5::HMCController::recvTimingReq(), gem5::memory::CfiMemory::recvTimingReq(), gem5::memory::HBMCtrl::recvTimingReq(), gem5::memory::HeteroMemCtrl::recvTimingReq(), gem5::memory::MemCtrl::recvTimingReq(), gem5::memory::qos::MemSinkCtrl::recvTimingReq(), gem5::memory::SimpleMemory::recvTimingReq(), gem5::NoncoherentXBar::recvTimingReq(), gem5::ruby::RubyPort::MemResponsePort::recvTimingReq(), gem5::SerialLink::SerialLinkResponsePort::recvTimingReq(), gem5::Bridge::BridgeRequestPort::recvTimingResp(), gem5::NoncoherentXBar::recvTimingResp(), gem5::SerialLink::SerialLinkRequestPort::recvTimingResp(), gem5::o3::LSQ::recvTimingSnoopReq(), gem5::ruby::RubyPort::ruby_hit_callback(), gem5::ruby::RubyPort::ruby_unaddressed_callback(), gem5::PacketQueue::schedSendTiming(), gem5::AtomicSimpleCPU::threadSnoop(), trySatisfyFunctional(), gem5::DmaPort::trySendTimingReq(), and gem5::BaseTrafficGen::update().
|
inline |
Return the index of this command.
Definition at line 591 of file packet.hh.
References cmd, and gem5::MemCmd::toInt().
Referenced by gem5::CoherentXBar::recvAtomicBackdoor(), gem5::NoncoherentXBar::recvAtomicBackdoor(), gem5::CoherentXBar::recvTimingReq(), gem5::HMCController::recvTimingReq(), gem5::NoncoherentXBar::recvTimingReq(), gem5::CoherentXBar::recvTimingResp(), gem5::NoncoherentXBar::recvTimingResp(), gem5::CoherentXBar::recvTimingSnoopReq(), and gem5::CoherentXBar::recvTimingSnoopResp().
|
inline |
When ruby is in use, Ruby will monitor the cache line and the phys memory should treat LL ops as normal reads.
Definition at line 865 of file packet.hh.
References cmd, isLLSC(), isRead(), and gem5::MemCmd::ReadReq.
Referenced by gem5::ruby::RubyPort::MemResponsePort::hitCallback().
|
inline |
It has been determined that the SC packet should successfully update memory.
Therefore, convert this SC packet to a normal write.
Definition at line 853 of file packet.hh.
References cmd, isLLSC(), isWrite(), and gem5::MemCmd::WriteReq.
Referenced by gem5::ruby::RubyPort::MemResponsePort::hitCallback().
|
inline |
Definition at line 805 of file packet.hh.
References cmd, and isError().
Referenced by gem5::Cache::handleAtomicReqMiss(), gem5::NoncoherentCache::handleAtomicReqMiss(), gem5::Cache::serviceMSHRTargets(), and gem5::NoncoherentCache::serviceMSHRTargets().
void gem5::Packet::copyResponderFlags | ( | const PacketPtr | pkt | ) |
Copy the reponse flags from an input packet to this packet.
The reponse flags determine whether a responder has been found and the state at which the block will be at the destination.
@pkt The packet that we will copy flags from
Definition at line 324 of file packet.cc.
References cacheResponding(), flags, isRequest(), RESPONDER_FLAGS, and gem5::Flags< T >::set().
Referenced by gem5::Cache::handleSnoop(), and gem5::Cache::serviceMSHRTargets().
|
inlinestatic |
Constructor-like methods that return Packets based on Request objects.
Fine-tune the MemCmd type if it's not a vanilla read or write.
Definition at line 1038 of file packet.hh.
References makeReadCmd(), Packet(), and req.
Referenced by gem5::TimingSimpleCPU::buildPacket(), gem5::o3::LSQ::SingleDataRequest::buildPackets(), gem5::o3::LSQ::SplitDataRequest::buildPackets(), gem5::o3::LSQ::checkStaleTranslations(), gem5::TraceCPU::ElasticDataGen::executeMemReq(), gem5::AMDGPUDevice::getRegVal(), gem5::o3::CPU::htmSendAbortSignal(), gem5::minor::makePacketForRequest(), gem5::AMDGPUDevice::readFrame(), gem5::CheckerCPU::readMem(), gem5::AMDGPUMemoryManager::readRequest(), gem5::o3::LSQ::SplitDataRequest::recvTimingResp(), gem5::TimingSimpleCPU::DcachePort::recvTimingSnoopReq(), and gem5::ruby::AbstractController::serviceMemoryQueue().
|
inlinestatic |
Definition at line 1044 of file packet.hh.
References makeWriteCmd(), Packet(), and req.
Referenced by gem5::TimingSimpleCPU::buildPacket(), gem5::o3::LSQ::SingleDataRequest::buildPackets(), gem5::o3::LSQ::SplitDataRequest::buildPackets(), gem5::TraceCPU::ElasticDataGen::executeMemReq(), gem5::minor::makePacketForRequest(), gem5::AMDGPUSystemHub::AtomicResponseEvent::process(), gem5::o3::LSQ::SplitDataRequest::recvTimingResp(), gem5::ruby::AbstractController::serviceMemoryQueue(), gem5::AMDGPUDevice::setRegVal(), gem5::AMDGPUDevice::writeDoorbell(), gem5::AMDGPUDevice::writeFrame(), and gem5::AMDGPUMemoryManager::writeRequest().
|
inline |
Set the data pointer to a value that should have delete [] called on it.
Dynamic data is local to this packet, and as the packet travels from source to destination, forwarded packets will allocate their own data. When a packet reaches the final destination it will populate the dynamic data of that specific packet, and on the way back towards the source, memcpy will be invoked in every step where a new packet was created e.g. in the caches. Ultimately when the response reaches the source a final memcpy is needed to extract the data from the packet before it is deallocated.
Definition at line 1213 of file packet.hh.
References data, DYNAMIC_DATA, flags, gem5::Flags< T >::noneSet(), gem5::MipsISA::p, gem5::Flags< T >::set(), and STATIC_DATA.
Referenced by gem5::o3::LSQ::SplitDataRequest::buildPackets(), gem5::TimingSimpleCPU::buildSplitPacket(), gem5::SpatterAccess::createPacket(), gem5::TraceCPU::ElasticDataGen::executeMemReq(), gem5::o3::Fetch::finishTranslation(), gem5::GarnetSyntheticTraffic::generatePkt(), gem5::BaseGen::getPacket(), gem5::Check::initiateAction(), gem5::Check::initiateCheck(), gem5::Check::initiatePrefetch(), gem5::SimpleCache::insert(), gem5::GpuWavefront::issueAtomicOps(), gem5::DmaThread::issueLoadOps(), gem5::GpuWavefront::issueLoadOps(), gem5::DmaThread::issueStoreOps(), gem5::GpuWavefront::issueStoreOps(), gem5::minor::makePacketForRequest(), gem5::AMDGPUSystemHub::AtomicResponseEvent::process(), gem5::AMDGPUDevice::readFrame(), gem5::TraceCPU::FixedRetryGen::send(), gem5::TimingSimpleCPU::sendData(), gem5::ruby::AbstractController::serviceMemoryQueue(), gem5::MemTest::tick(), gem5::AMDGPUDevice::writeDoorbell(), gem5::AMDGPUDevice::writeFrame(), and gem5::AMDGPUMemoryManager::writeRequest().
|
inline |
Set the data pointer to the following value that should not be freed.
Static data allows us to do a single memcpy even if multiple packets are required to get from source to destination and back. In essence the pointer is set calling dataStatic on the original packet, and whenever this packet is copied and forwarded the same pointer is passed on. When a packet eventually reaches the destination holding the data, it is copied once into the location originally set. On the way back to the source, no copies are necessary.
Definition at line 1175 of file packet.hh.
References data, DYNAMIC_DATA, flags, gem5::Flags< T >::noneSet(), gem5::MipsISA::p, gem5::Flags< T >::set(), and STATIC_DATA.
Referenced by gem5::AtomicSimpleCPU::amoMem(), gem5::o3::LSQ::SingleDataRequest::buildPackets(), gem5::o3::LSQ::SplitDataRequest::buildPackets(), gem5::TimingSimpleCPU::buildSplitPacket(), gem5::ArmISA::TableWalker::Port::createPacket(), gem5::DmaPort::DmaReqState::createPacket(), gem5::Shader::doFunctionalAccess(), gem5::ruby::CacheRecorder::enqueueNextFetchRequest(), gem5::FetchUnit::fetch(), gem5::AtomicSimpleCPU::fetchInstMem(), gem5::AMDGPUDevice::getRegVal(), gem5::X86KvmCPU::handleKvmExitIO(), gem5::o3::LSQ::SplitDataRequest::handleLocalAccess(), gem5::o3::CPU::htmSendAbortSignal(), gem5::initMemReqHelper(), gem5::initMemReqScalarHelper(), gem5::o3::LSQUnit::read(), gem5::PortProxy::readBlobPhys(), gem5::ArmISA::TableWalker::readDataUntimed(), gem5::AtomicSimpleCPU::readMem(), gem5::CheckerCPU::readMem(), gem5::AMDGPUMemoryManager::readRequest(), gem5::ComputeUnit::DTLBPort::recvTimingResp(), gem5::ComputeUnit::ScalarDTLBPort::recvTimingResp(), gem5::o3::LSQ::SplitDataRequest::recvTimingResp(), gem5::TimingSimpleCPU::sendFetch(), gem5::ComputeUnit::sendRequest(), gem5::AMDGPUDevice::setRegVal(), gem5::GPUCommandProcessor::submitDispatchPkt(), gem5::Checker< class >::verify(), gem5::o3::LSQUnit::writebackStores(), gem5::BaseCache::writebackVisitor(), and gem5::AtomicSimpleCPU::writeMem().
|
inline |
Set the data pointer to the following value that should not be freed.
This version of the function allows the pointer passed to us to be const. To avoid issues down the line we cast the constness away, the alternative would be to keep both a const and non-const data pointer and cleverly choose between them. Note that this is only allowed for static data.
Definition at line 1192 of file packet.hh.
References data, DYNAMIC_DATA, flags, gem5::Flags< T >::noneSet(), gem5::MipsISA::p, gem5::Flags< T >::set(), and STATIC_DATA.
Referenced by gem5::ruby::RubyPrefetcherProxy::notifyPfFill(), gem5::ruby::RubyPrefetcherProxy::notifyPfHit(), gem5::ruby::RubyPrefetcherProxy::notifyPfMiss(), and gem5::PortProxy::writeBlobPhys().
|
inline |
delete the data pointed to in the data pointer.
Ok to call to matter how data was allocted.
Definition at line 1356 of file packet.hh.
References gem5::Flags< T >::clear(), data, DYNAMIC_DATA, flags, gem5::Flags< T >::isSet(), and STATIC_DATA.
Referenced by ~Packet().
|
inline |
Go through the sender state stack and return the first instance that is of type T (as determined by a dynamic_cast).
If there is no sender state of type T, NULL is returned.
Definition at line 575 of file packet.hh.
References gem5::Packet::SenderState::predecessor, senderState, and gem5::ArmISA::t.
Referenced by gem5::MSHR::TargetList::add(), gem5::ruby::Sequencer::hitCallback(), sc_gem5::packet2payload(), gem5::SpatterGen::recvTimingResp(), and gem5::minor::LSQ::tryToSend().
|
inline |
Definition at line 612 of file packet.hh.
References cmd, and gem5::MemCmd::fromCache().
Referenced by gem5::BaseCache::access(), gem5::memory::AbstractMemory::access(), gem5::Cache::handleAtomicReqMiss(), gem5::SnoopFilter::lookupRequest(), gem5::Cache::satisfyRequest(), and gem5::MSHR::TargetList::updateFlags().
|
inline |
Get the data in the packet byte swapped from the specified endianness.
Definition at line 85 of file packet_access.hh.
References getBE(), getLE(), and panic.
Referenced by gem5::getMem(), and gem5::VirtIO9PBase::readConfig().
|
inline |
Definition at line 807 of file packet.hh.
References addr, flags, gem5::Flags< T >::isSet(), and VALID_ADDR.
Referenced by gem5::BaseCache::access(), gem5::Cache::access(), gem5::memory::AbstractMemory::access(), gem5::memory::DRAMSim2::accessAndRespond(), gem5::memory::DRAMsim3::accessAndRespond(), gem5::memory::MemCtrl::accessAndRespond(), gem5::BaseSetAssoc::accessBlock(), gem5::FALRU::accessBlock(), gem5::SectorTags::accessBlock(), gem5::SimpleCache::accessTiming(), gem5::memory::MemCtrl::addToReadQueue(), gem5::memory::MemCtrl::addToWriteQueue(), gem5::RequestPort::addTrace(), gem5::BaseCache::allocateBlock(), gem5::SMMUv3DeviceInterface::atsRecvAtomic(), gem5::SMMUv3DeviceInterface::atsRecvTimingReq(), gem5::SMMUv3DeviceInterface::atsRecvTimingResp(), gem5::o3::LSQUnit::checkSnoop(), gem5::ruby::GPUCoalescer::coalescePacket(), gem5::o3::LSQUnit::completeDataAccess(), gem5::TimingSimpleCPU::completeIfetch(), gem5::Cache::createMissPacket(), gem5::NoncoherentCache::createMissPacket(), gem5::GUPSGen::createNextReq(), gem5::AMDGPUDevice::dispatchAccess(), gem5::IdeController::dispatchAccess(), gem5::SparcISA::TLB::doMmuRegRead(), gem5::SparcISA::TLB::doMmuRegWrite(), gem5::AddressMonitor::doMonitor(), gem5::memory::CfiMemory::BlockData::erase(), gem5::SMMUTranslRequest::fromPacket(), gem5::BaseCache::functionalAccess(), gem5::memory::AbstractMemory::functionalAccess(), gem5::ruby::MessageBuffer::functionalAccess(), gem5::ruby::RubySystem::functionalRead(), gem5::ruby::RubyRequest::functionalWrite(), gem5::ruby::RubySystem::functionalWrite(), getAddrRange(), getBlockAddr(), getOffset(), gem5::prefetch::Queued::getPacket(), gem5::replacement_policy::SHiPMem::getSignature(), gem5::NoncoherentCache::handleAtomicReqMiss(), gem5::BaseCache::handleFill(), gem5::RiscvISA::ISA::handleLockedSnoop(), gem5::minor::Execute::handleMemResponse(), gem5::OutgoingRequestBridge::handleRecvFunctional(), gem5::SimpleCache::handleRequest(), gem5::SimpleMemobj::handleRequest(), gem5::SimpleCache::handleResponse(), gem5::SimpleMemobj::handleResponse(), gem5::ArmISA::TableWalker::Port::handleRespPacket(), gem5::DmaPort::handleRespPacket(), gem5::Cache::handleSnoop(), gem5::BaseCache::handleTimingReqMiss(), gem5::DmaThread::hitCallback(), gem5::GpuWavefront::hitCallback(), gem5::ruby::GPUCoalescer::hitCallback(), gem5::ruby::RubyPort::MemResponsePort::hitCallback(), gem5::ruby::Sequencer::hitCallback(), gem5::SimpleCache::insert(), gem5::BaseTags::insertBlock(), gem5::ruby::UncoalescedTable::insertPacket(), gem5::ruby::Sequencer::insertRequest(), gem5::I2CBus::isClockSet(), gem5::I2CBus::isEnd(), gem5::ruby::RubyPort::MemResponsePort::isPhysMemAddress(), gem5::I2CBus::isStart(), gem5::ruby::RubyPrefetcherProxy::issuePrefetch(), gem5::ruby::Sequencer::issueRequest(), gem5::ruby::VIPERCoalescer::issueRequest(), gem5::ArmISA::lockedSnoopHandler(), gem5::ruby::DMASequencer::makeRequest(), gem5::ruby::GPUCoalescer::makeRequest(), gem5::ruby::Sequencer::makeRequest(), matchAddr(), matchAddr(), gem5::BaseCPU::mwait(), gem5::prefetch::Queued::notify(), gem5::prefetch::BOP::notifyFill(), gem5::prefetch::SBOOE::notifyFill(), sc_gem5::packet2payload(), gem5::prefetch::Base::PrefetchInfo::PrefetchInfo(), print(), gem5::prefetch::Base::probeNotify(), gem5::AMDGPUSystemHub::AtomicResponseEvent::process(), gem5::memory::qos::MemSinkCtrl::processNextReqEvent(), gem5::A9SCU::read(), gem5::AmbaFake::read(), gem5::AMDGPUDevice::read(), gem5::Clint::read(), gem5::CopyEngine::read(), gem5::CpuLocalTimer::read(), gem5::DumbTOD::read(), gem5::EnergyCtrl::read(), gem5::FVPBasePwrCtrl::read(), gem5::GenericPciHost::read(), gem5::GenericTimerFrame::read(), gem5::GenericTimerMem::read(), gem5::GenericWatchdog::read(), gem5::GicV2::read(), gem5::Gicv2m::read(), gem5::Gicv3::read(), gem5::Gicv3Its::read(), gem5::HDLcd::read(), gem5::I2CBus::read(), gem5::IGbE::read(), gem5::Iob::read(), gem5::IsaFake::read(), gem5::LupioBLK::read(), gem5::LupioIPI::read(), gem5::LupioPIC::read(), gem5::LupioRNG::read(), gem5::LupioRTC::read(), gem5::LupioSYS::read(), gem5::LupioTMR::read(), gem5::LupioTTY::read(), gem5::memory::CfiMemory::read(), gem5::MHU::read(), gem5::MmDisk::read(), gem5::MmioVirtIO::read(), gem5::NoMaliGpu::read(), gem5::NSGigE::read(), gem5::o3::LSQUnit::read(), gem5::PciVirtIO::read(), gem5::Pl011::read(), gem5::PL031::read(), gem5::Pl050::read(), gem5::Pl111::read(), gem5::Plic::read(), gem5::qemu::FwCfgIo::read(), gem5::qemu::FwCfgMmio::read(), gem5::RealViewCtrl::read(), gem5::RiscvISA::MmioVirtIO::read(), gem5::SimpleUart::read(), gem5::sinic::Device::read(), gem5::Sp804::read(), gem5::Sp805::read(), gem5::SysSecCtrl::read(), gem5::Uart8250::read(), gem5::UFSHostDevice::read(), gem5::VGic::read(), gem5::X86ISA::Cmos::read(), gem5::X86ISA::I8042::read(), gem5::X86ISA::I82094AA::read(), gem5::X86ISA::I8237::read(), gem5::X86ISA::I8254::read(), gem5::X86ISA::I8259::read(), gem5::X86ISA::Interrupts::read(), gem5::X86ISA::Speaker::read(), gem5::AMDGPUDevice::readConfig(), gem5::IdeController::readConfig(), gem5::PciDevice::readConfig(), gem5::SMMUv3::readControl(), gem5::GicV2::readCpu(), gem5::VGic::readCtrl(), gem5::GicV2::readDistributor(), gem5::AmbaDevice::readId(), gem5::Iob::readIob(), gem5::Iob::readJBus(), gem5::AMDGPUNbio::readMMIO(), gem5::AMDGPUDevice::readROM(), gem5::VGic::readVCpu(), gem5::ruby::Sequencer::recordMissLatency(), gem5::AddrMapper::recvAtomic(), gem5::memory::HBMCtrl::recvAtomic(), gem5::memory::HeteroMemCtrl::recvAtomic(), gem5::memory::MemCtrl::recvAtomic(), gem5::ruby::RubyPort::MemResponsePort::recvAtomic(), gem5::ruby::RubyPort::PioResponsePort::recvAtomic(), gem5::SMMUControlPort::recvAtomic(), gem5::SMMUv3DeviceInterface::recvAtomic(), gem5::StubSlavePort::recvAtomic(), gem5::AddrMapper::recvAtomicBackdoor(), gem5::CoherentXBar::recvAtomicBackdoor(), gem5::memory::HBMCtrl::recvAtomicBackdoor(), gem5::NoncoherentXBar::recvAtomicBackdoor(), gem5::memory::MemCtrl::recvAtomicLogic(), gem5::AddrMapper::recvAtomicSnoop(), gem5::AtomicSimpleCPU::AtomicCPUDPort::recvAtomicSnoop(), gem5::Cache::recvAtomicSnoop(), gem5::AddrMapper::recvFunctional(), gem5::MemCheckerMonitor::recvFunctional(), gem5::NoncoherentXBar::recvFunctional(), gem5::ruby::RubyPort::MemResponsePort::recvFunctional(), gem5::memory::MemCtrl::recvFunctionalLogic(), gem5::AddrMapper::recvFunctionalSnoop(), gem5::AtomicSimpleCPU::AtomicCPUDPort::recvFunctionalSnoop(), gem5::MemCheckerMonitor::recvFunctionalSnoop(), gem5::X86ISA::Interrupts::recvMessage(), gem5::AddrMapper::recvTimingReq(), gem5::BaseCache::recvTimingReq(), gem5::Bridge::BridgeResponsePort::recvTimingReq(), gem5::CoherentXBar::recvTimingReq(), gem5::HMCController::recvTimingReq(), gem5::MemCheckerMonitor::recvTimingReq(), gem5::memory::CfiMemory::recvTimingReq(), gem5::memory::DRAMSim2::recvTimingReq(), gem5::memory::DRAMsim3::recvTimingReq(), gem5::memory::HBMCtrl::recvTimingReq(), gem5::memory::HeteroMemCtrl::recvTimingReq(), gem5::memory::MemCtrl::recvTimingReq(), gem5::memory::qos::MemSinkCtrl::recvTimingReq(), gem5::memory::SimpleMemory::recvTimingReq(), gem5::NoncoherentXBar::recvTimingReq(), gem5::ruby::RubyPort::MemResponsePort::recvTimingReq(), gem5::ruby::RubyPort::PioResponsePort::recvTimingReq(), gem5::SerialLink::SerialLinkResponsePort::recvTimingReq(), gem5::SMMUv3DeviceInterface::recvTimingReq(), gem5::AddrMapper::recvTimingResp(), gem5::BaseCache::recvTimingResp(), gem5::Bridge::BridgeRequestPort::recvTimingResp(), gem5::MemCheckerMonitor::recvTimingResp(), gem5::minor::LSQ::recvTimingResp(), gem5::NoncoherentXBar::recvTimingResp(), gem5::o3::LSQ::recvTimingResp(), gem5::ruby::AbstractController::recvTimingResp(), gem5::ruby::RubyPort::MemRequestPort::recvTimingResp(), gem5::ruby::RubyPort::PioRequestPort::recvTimingResp(), gem5::RubyDirectedTester::CpuPort::recvTimingResp(), gem5::SerialLink::SerialLinkRequestPort::recvTimingResp(), gem5::SMMUv3::recvTimingResp(), gem5::TimingSimpleCPU::DcachePort::recvTimingResp(), gem5::TimingSimpleCPU::IcachePort::recvTimingResp(), gem5::VegaISA::Walker::recvTimingResp(), gem5::Cache::recvTimingSnoopReq(), gem5::o3::LSQ::recvTimingSnoopReq(), gem5::Cache::recvTimingSnoopResp(), gem5::ruby::RubyPort::ruby_hit_callback(), gem5::ruby::HTMSequencer::rubyHtmCallback(), gem5::SMMUv3::runProcessTiming(), gem5::BaseCache::satisfyRequest(), gem5::PacketQueue::schedSendTiming(), gem5::AMDGPUSystemHub::sendDeferredRequest(), gem5::TimingSimpleCPU::sendFetch(), gem5::fastmodel::CortexR52TC::sendFunctional(), gem5::Iris::ThreadContext::sendFunctional(), gem5::Cache::sendMSHRQueuePacket(), gem5::AMDGPUSystemHub::sendNextRequest(), gem5::AMDGPUSystemHub::sendRequest(), gem5::ComputeUnit::sendRequest(), gem5::SimpleCache::sendResponse(), gem5::VegaISA::Walker::sendTiming(), gem5::ruby::DataBlock::setData(), gem5::VegaISA::Walker::WalkerState::startFunctional(), gem5::RiscvISA::Walker::WalkerState::stepWalk(), gem5::SMMUv3::tableWalkRecvTimingResp(), gem5::ruby::testAndRead(), gem5::ruby::testAndReadMask(), gem5::ruby::testAndWrite(), gem5::AtomicSimpleCPU::threadSnoop(), trySatisfyFunctional(), trySatisfyFunctional(), gem5::Bridge::BridgeRequestPort::trySendTiming(), gem5::Bridge::BridgeResponsePort::trySendTiming(), gem5::SerialLink::SerialLinkRequestPort::trySendTiming(), gem5::SerialLink::SerialLinkResponsePort::trySendTiming(), gem5::DmaPort::trySendTimingReq(), gem5::BaseTrafficGen::update(), gem5::I2CBus::updateSignals(), gem5::A9SCU::write(), gem5::AmbaFake::write(), gem5::AMDGPUDevice::write(), gem5::Clint::write(), gem5::CopyEngine::write(), gem5::CpuLocalTimer::write(), gem5::EnergyCtrl::write(), gem5::fastmodel::ResetControllerExample::write(), gem5::FVPBasePwrCtrl::write(), gem5::GenericPciHost::write(), gem5::GenericTimerFrame::write(), gem5::GenericTimerMem::write(), gem5::GenericWatchdog::write(), gem5::GicV2::write(), gem5::Gicv2m::write(), gem5::Gicv3::write(), gem5::Gicv3Its::write(), gem5::HDLcd::write(), gem5::HSAPacketProcessor::write(), gem5::I2CBus::write(), gem5::IGbE::write(), gem5::Iob::write(), gem5::IsaFake::write(), gem5::LupioBLK::write(), gem5::LupioIPI::write(), gem5::LupioPIC::write(), gem5::LupioRNG::write(), gem5::LupioSYS::write(), gem5::LupioTMR::write(), gem5::LupioTTY::write(), gem5::memory::CfiMemory::write(), gem5::MHU::write(), gem5::MmDisk::write(), gem5::MmioVirtIO::write(), gem5::NoMaliGpu::write(), gem5::NSGigE::write(), gem5::PciVirtIO::write(), gem5::Pl011::write(), gem5::PL031::write(), gem5::Pl050::write(), gem5::Pl111::write(), gem5::Plic::write(), gem5::qemu::FwCfgIo::write(), gem5::qemu::FwCfgMmio::write(), gem5::RealViewCtrl::write(), gem5::RiscvISA::MmioVirtIO::write(), gem5::SimpleUart::write(), gem5::sinic::Device::write(), gem5::Sp804::write(), gem5::Sp805::write(), gem5::SysSecCtrl::write(), gem5::Uart8250::write(), gem5::UFSHostDevice::write(), gem5::VGic::write(), gem5::X86ISA::Cmos::write(), gem5::X86ISA::I8042::write(), gem5::X86ISA::I82094AA::write(), gem5::X86ISA::I8237::write(), gem5::X86ISA::I8254::write(), gem5::X86ISA::I8259::write(), gem5::X86ISA::Interrupts::write(), gem5::X86ISA::Speaker::write(), gem5::ruby::VIPERCoalescer::writeCompleteCallback(), gem5::AMDGPUDevice::writeConfig(), gem5::IdeController::writeConfig(), gem5::IGbE::writeConfig(), gem5::NSGigE::writeConfig(), gem5::PciDevice::writeConfig(), gem5::SMMUv3::writeControl(), gem5::GicV2::writeCpu(), gem5::VGic::writeCtrl(), gem5::GicV2::writeDistributor(), gem5::Iob::writeIob(), gem5::Iob::writeJBus(), gem5::AMDGPUDevice::writeROM(), and gem5::VGic::writeVCpu().
AddrRange gem5::Packet::getAddrRange | ( | ) | const |
Get address range to which this packet belongs.
Definition at line 243 of file packet.cc.
References getAddr(), getSize(), and gem5::RangeSize().
Referenced by gem5::memory::AbstractMemory::access(), gem5::memory::PhysicalMemory::access(), gem5::AtomicSimpleCPU::amoMem(), gem5::TimingSimpleCPU::completeDataAccess(), gem5::TimingSimpleCPU::completeIfetch(), gem5::GUPSGen::createNextReq(), gem5::AtomicSimpleCPU::fetchInstMem(), gem5::BaseXBar::findPort(), gem5::memory::AbstractMemory::functionalAccess(), gem5::memory::PhysicalMemory::functionalAccess(), gem5::System::getDeviceMemory(), gem5::GUPSGen::handleResponse(), gem5::RiscvISA::PMAChecker::isUncacheable(), gem5::AtomicSimpleCPU::readMem(), gem5::AddrMapper::recvAtomicBackdoor(), gem5::GUPSGen::sendNextReq(), and gem5::AtomicSimpleCPU::writeMem().
|
inline |
Accessor function to atomic op.
Definition at line 845 of file packet.hh.
References req.
Referenced by gem5::memory::AbstractMemory::access(), gem5::ruby::Sequencer::hitCallback(), gem5::ruby::Sequencer::issueRequest(), gem5::ruby::VIPERCoalescer::issueRequest(), gem5::ruby::DMASequencer::makeRequest(), gem5::Clint::read(), gem5::Plic::read(), and gem5::BaseCache::satisfyRequest().
|
inline |
Get the data in the packet byte swapped from big endian to host endian.
Definition at line 71 of file packet_access.hh.
References gem5::betoh(), and getRaw().
Referenced by gem5::SparcISA::TLB::doMmuRegWrite(), get(), gem5::qemu::FwCfgMmio::write(), gem5::Iob::writeIob(), and gem5::Iob::writeJBus().
|
inline |
Definition at line 831 of file packet.hh.
References getAddr().
Referenced by gem5::SimpleCache::accessFunctional(), gem5::SimpleCache::accessTiming(), gem5::BaseCache::allocateMissBuffer(), gem5::BaseCache::allocateWriteBuffer(), gem5::Cache::createMissPacket(), gem5::NoncoherentCache::createMissPacket(), gem5::BaseCache::functionalAccess(), gem5::BaseCache::getNextQueueEntry(), gem5::BaseCache::handleFill(), gem5::BaseCache::handleTimingReqHit(), gem5::BaseCache::handleTimingReqMiss(), gem5::Cache::handleTimingReqMiss(), gem5::NoncoherentCache::handleTimingReqMiss(), gem5::SimpleCache::insert(), gem5::ruby::RubyPrefetcherProxy::issuePrefetch(), gem5::SnoopFilter::lookupRequest(), gem5::SnoopFilter::lookupSnoop(), matchBlockAddr(), matchBlockAddr(), gem5::Cache::recvTimingSnoopReq(), gem5::SnoopFilter::updateResponse(), gem5::SnoopFilter::updateSnoopForward(), and gem5::SnoopFilter::updateSnoopResponse().
|
inline |
Definition at line 1234 of file packet.hh.
References data, DYNAMIC_DATA, flags, gem5::Flags< T >::isSet(), and STATIC_DATA.
Referenced by gem5::BaseCache::access(), gem5::SimpleCache::accessTiming(), gem5::BaseCache::allocateBlock(), gem5::MemTest::completeRequest(), gem5::ruby::RubyRequest::functionalWrite(), getUintX(), gem5::minor::Execute::handleMemResponse(), gem5::Check::initiateAction(), gem5::SimpleCache::insert(), gem5::prefetch::Base::PrefetchInfo::PrefetchInfo(), gem5::o3::Fetch::processCacheCompletion(), gem5::StubSlavePort::recvAtomic(), gem5::Cache::recvTimingSnoopReq(), gem5::minor::LSQ::SplitDataRequest::retireResponse(), gem5::Cache::serviceMSHRTargets(), gem5::ruby::testAndWrite(), trySatisfyFunctional(), gem5::AMDGPUDevice::writeConfig(), gem5::IdeController::writeConfig(), writeData(), and gem5::AtomicSimpleCPU::writeMem().
HtmCacheFailure gem5::Packet::getHtmTransactionFailedInCacheRC | ( | ) | const |
If a packet/request has returned from the cache hierarchy in a failed transaction, this function returns the failure reason.
Definition at line 509 of file packet.cc.
References htmReturnReason, and htmTransactionFailedInCache().
Referenced by gem5::o3::LSQUnit::completeDataAccess(), gem5::TimingSimpleCPU::completeDataAccess(), and Packet().
uint64_t gem5::Packet::getHtmTransactionUid | ( | ) | const |
If a packet/request originates in a CPU executing in transactional mode, i.e.
within a transaction, this function returns the unique ID of the transaction. This is used for verifying correctness and debugging.
Definition at line 529 of file packet.cc.
References flags, FROM_TRANSACTION, htmTransactionUid, and gem5::Flags< T >::isSet().
Referenced by gem5::o3::LSQUnit::completeDataAccess(), gem5::TimingSimpleCPU::completeDataAccess(), gem5::ruby::HTMSequencer::htmCallback(), gem5::ruby::Sequencer::issueRequest(), and Packet().
|
inline |
Get the data in the packet byte swapped from little endian to host endian.
Definition at line 78 of file packet_access.hh.
References getRaw(), and gem5::letoh().
Referenced by gem5::CopyEngine::CopyEngineChannel::channelWrite(), gem5::IdeController::dispatchAccess(), get(), gem5::X86ISA::getMem(), gem5::X86ISA::getPackedMem(), gem5::AMDGPUDevice::getRegVal(), gem5::ItsTranslation::main(), gem5::AMDGPUSystemHub::AtomicResponseEvent::process(), gem5::X86ISA::Interrupts::raiseInterruptPin(), gem5::Sp804::Timer::read(), gem5::AMDGPUDevice::readConfig(), gem5::PciDevice::readConfig(), gem5::AMDGPUVM::readMMIO(), gem5::VegaISA::Walker::recvTimingResp(), gem5::X86ISA::I82094AA::requestInterrupt(), gem5::RiscvISA::Walker::WalkerState::stepWalk(), gem5::CopyEngine::write(), gem5::CpuLocalTimer::Timer::write(), gem5::EnergyCtrl::write(), gem5::Gicv2m::write(), gem5::Gicv3Its::write(), gem5::HDLcd::write(), gem5::HSAPacketProcessor::write(), gem5::IGbE::write(), gem5::IsaFake::write(), gem5::MHU::write(), gem5::MmioVirtIO::write(), gem5::NoMaliGpu::write(), gem5::NSGigE::write(), gem5::PciVirtIO::write(), gem5::Pl011::write(), gem5::PL031::write(), gem5::Pl111::write(), gem5::qemu::FwCfgIo::write(), gem5::RealViewCtrl::write(), gem5::RiscvISA::MmioVirtIO::write(), gem5::sinic::Device::write(), gem5::Sp804::Timer::write(), gem5::X86ISA::Cmos::write(), gem5::X86ISA::I8042::write(), gem5::X86ISA::I82094AA::write(), gem5::X86ISA::I8254::write(), gem5::X86ISA::I8259::write(), gem5::X86ISA::Speaker::write(), gem5::PciDevice::writeConfig(), gem5::SMMUv3::writeControl(), gem5::GicV2::writeCpu(), gem5::VGic::writeCtrl(), gem5::GicV2::writeDistributor(), gem5::AMDGPUDevice::writeDoorbell(), gem5::AMDGPUNbio::writeFrame(), gem5::AMDGPUDevice::writeMMIO(), gem5::AMDGPUGfx::writeMMIO(), gem5::AMDGPUInterruptHandler::writeMMIO(), gem5::AMDGPUNbio::writeMMIO(), gem5::AMDGPUVM::writeMMIO(), gem5::PM4PacketProcessor::writeMMIO(), gem5::SDMAEngine::writeMMIO(), and gem5::VGic::writeVCpu().
|
inline |
Definition at line 826 of file packet.hh.
References getAddr().
Referenced by gem5::BaseCache::cmpAndSwap(), isWholeLineWrite(), gem5::Cache::promoteWholeLineWrites(), gem5::BaseCache::satisfyRequest(), gem5::Cache::serviceMSHRTargets(), gem5::NoncoherentCache::serviceMSHRTargets(), setDataFromBlock(), gem5::MSHR::TargetList::updateWriteFlags(), and writeDataToBlock().
|
inline |
get a pointer to the data ptr.
Definition at line 1225 of file packet.hh.
References data, DYNAMIC_DATA, flags, isMaskedWrite(), gem5::Flags< T >::isSet(), and STATIC_DATA.
Referenced by gem5::minor::ForwardLineData::adoptPacketData(), gem5::ruby::DMASequencer::atomicCallback(), gem5::GUPSGen::createNextReq(), gem5::IdeController::dispatchAccess(), gem5::minor::LSQ::StoreBuffer::forwardStoreData(), gem5::ruby::RubyRequest::functionalWrite(), gem5::o3::LSQ::SplitDataRequest::handleLocalAccess(), gem5::OutgoingRequestBridge::handleRecvFunctional(), gem5::GUPSGen::handleResponse(), gem5::DmaThread::hitCallback(), gem5::GpuWavefront::hitCallback(), gem5::ruby::GPUCoalescer::hitCallback(), gem5::ruby::HTMSequencer::htmCallback(), gem5::ruby::VIPERCoalescer::issueRequest(), gem5::ruby::DMASequencer::makeRequest(), sc_gem5::packet2payload(), gem5::AMDGPUSystemHub::AtomicResponseEvent::process(), gem5::Clint::read(), gem5::fastmodel::ResetControllerExample::read(), gem5::GenericPciHost::read(), gem5::IsaFake::read(), gem5::NSGigE::read(), gem5::Plic::read(), gem5::qemu::FwCfgIo::read(), gem5::qemu::FwCfgMmio::read(), gem5::SysSecCtrl::read(), gem5::Uart8250::read(), gem5::X86ISA::I8237::read(), gem5::IdeController::readConfig(), gem5::ComputeUnit::DTLBPort::recvTimingResp(), gem5::ComputeUnit::ScalarDTLBPort::recvTimingResp(), gem5::ruby::AbstractController::recvTimingResp(), gem5::AMDGPUSystemHub::sendDeferredRequest(), gem5::fastmodel::CortexR52TC::sendFunctional(), gem5::Iris::ThreadContext::sendFunctional(), gem5::GUPSGen::sendNextReq(), gem5::ComputeUnit::sendRequest(), setData(), setUintX(), gem5::ruby::testAndRead(), gem5::ruby::testAndReadMask(), trySatisfyFunctional(), trySatisfyFunctional(), gem5::Clint::write(), gem5::fastmodel::ResetControllerExample::write(), gem5::memory::CfiMemory::write(), gem5::Plic::write(), gem5::SysSecCtrl::write(), gem5::Uart8250::write(), gem5::X86ISA::I8237::write(), gem5::AMDGPUDevice::writeDoorbell(), and gem5::AMDGPUDevice::writeFrame().
|
inline |
Get the data in the packet without byte swapping.
Definition at line 52 of file packet_access.hh.
References data, DYNAMIC_DATA, flags, gem5::Flags< T >::isSet(), size, and STATIC_DATA.
Referenced by getBE(), getLE(), gem5::I2CBus::isClockSet(), gem5::I2CBus::isEnd(), gem5::I2CBus::isStart(), gem5::X86ISA::Interrupts::recvMessage(), gem5::I2CBus::updateSignals(), gem5::MmDisk::write(), and gem5::Uart8250::write().
|
inline |
Definition at line 817 of file packet.hh.
References flags, gem5::Flags< T >::isSet(), size, and VALID_SIZE.
Referenced by gem5::BaseCache::access(), gem5::memory::AbstractMemory::access(), gem5::SimpleCache::accessTiming(), gem5::memory::MemCtrl::addToReadQueue(), gem5::memory::MemCtrl::addToWriteQueue(), allocate(), gem5::ruby::DMASequencer::atomicCallback(), gem5::SMMUv3DeviceInterface::atsRecvAtomic(), gem5::SMMUv3DeviceInterface::atsRecvTimingReq(), gem5::SMMUv3DeviceInterface::atsRecvTimingResp(), gem5::BaseCache::cmpAndSwap(), gem5::AMDGPUDevice::dispatchAccess(), gem5::IdeController::dispatchAccess(), gem5::ItsProcess::doRead(), gem5::SMMUProcess::doRead(), gem5::ItsProcess::doWrite(), gem5::SMMUTranslRequest::fromPacket(), gem5::ruby::RubyRequest::functionalWrite(), getAddrRange(), getUintX(), gem5::BaseCache::handleFill(), gem5::minor::Execute::handleMemResponse(), gem5::OutgoingRequestBridge::handleRecvFunctional(), gem5::BaseCache::handleTimingReqMiss(), gem5::Cache::handleTimingReqMiss(), gem5::ruby::GPUCoalescer::hitCallback(), gem5::ruby::Sequencer::hitCallback(), gem5::ruby::HTMSequencer::htmCallback(), gem5::ruby::Sequencer::issueRequest(), gem5::ruby::VIPERCoalescer::issueRequest(), isWholeLineWrite(), gem5::ruby::DMASequencer::makeRequest(), gem5::ruby::RubyPrefetcherProxy::notifyPfFill(), gem5::ruby::RubyPrefetcherProxy::notifyPfHit(), gem5::ruby::RubyPrefetcherProxy::notifyPfMiss(), sc_gem5::packet2payload(), print(), gem5::AMDGPUSystemHub::AtomicResponseEvent::process(), gem5::memory::qos::MemSinkCtrl::processNextReqEvent(), gem5::Cache::promoteWholeLineWrites(), gem5::A9SCU::read(), gem5::Clint::read(), gem5::CopyEngine::read(), gem5::CpuLocalTimer::read(), gem5::DumbTOD::read(), gem5::EnergyCtrl::read(), gem5::fastmodel::ResetControllerExample::read(), gem5::FVPBasePwrCtrl::read(), gem5::GenericPciHost::read(), gem5::GenericTimerFrame::read(), gem5::GenericTimerMem::read(), gem5::GenericWatchdog::read(), gem5::Gicv3::read(), gem5::HDLcd::read(), gem5::IGbE::read(), gem5::IsaFake::read(), gem5::LupioBLK::read(), gem5::LupioIPI::read(), gem5::LupioPIC::read(), gem5::LupioRNG::read(), gem5::LupioRTC::read(), gem5::LupioSYS::read(), gem5::LupioTMR::read(), gem5::LupioTTY::read(), gem5::MmDisk::read(), gem5::MmioVirtIO::read(), gem5::NoMaliGpu::read(), gem5::NSGigE::read(), gem5::PciVirtIO::read(), gem5::Pl011::read(), gem5::PL031::read(), gem5::Pl111::read(), gem5::Plic::read(), gem5::qemu::FwCfgIo::read(), gem5::qemu::FwCfgMmio::read(), gem5::RealViewCtrl::read(), gem5::RiscvISA::MmioVirtIO::read(), gem5::sinic::Device::read(), gem5::Sp804::read(), gem5::Sp805::read(), gem5::SysSecCtrl::read(), gem5::Uart8250::read(), gem5::X86ISA::Cmos::read(), gem5::X86ISA::I8042::read(), gem5::X86ISA::I82094AA::read(), gem5::X86ISA::I8237::read(), gem5::X86ISA::I8254::read(), gem5::X86ISA::I8259::read(), gem5::X86ISA::Interrupts::read(), gem5::X86ISA::Speaker::read(), gem5::AMDGPUDevice::readConfig(), gem5::IdeController::readConfig(), gem5::PciDevice::readConfig(), gem5::VirtIODeviceBase::readConfigBlob(), gem5::SMMUv3::readControl(), gem5::GicV2::readDistributor(), gem5::AMDGPUDevice::readFrame(), gem5::AMDGPUDevice::readROM(), gem5::ruby::RubyPort::MemResponsePort::recvAtomic(), gem5::SMMUControlPort::recvAtomic(), gem5::SMMUv3DeviceInterface::recvAtomic(), gem5::StubSlavePort::recvAtomic(), gem5::CoherentXBar::recvAtomicBackdoor(), gem5::NoncoherentXBar::recvAtomicBackdoor(), gem5::CoherentXBar::recvAtomicSnoop(), gem5::MemCheckerMonitor::recvFunctional(), gem5::ruby::RubyPort::MemResponsePort::recvFunctional(), gem5::MemCheckerMonitor::recvFunctionalSnoop(), gem5::CoherentXBar::recvTimingReq(), gem5::HMCController::recvTimingReq(), gem5::MemCheckerMonitor::recvTimingReq(), gem5::memory::CfiMemory::recvTimingReq(), gem5::memory::HBMCtrl::recvTimingReq(), gem5::memory::HeteroMemCtrl::recvTimingReq(), gem5::memory::MemCtrl::recvTimingReq(), gem5::memory::qos::MemSinkCtrl::recvTimingReq(), gem5::memory::SimpleMemory::recvTimingReq(), gem5::NoncoherentXBar::recvTimingReq(), gem5::SerialLink::SerialLinkResponsePort::recvTimingReq(), gem5::SMMUv3DeviceInterface::recvTimingReq(), gem5::CoherentXBar::recvTimingResp(), gem5::MemCheckerMonitor::recvTimingResp(), gem5::NoncoherentXBar::recvTimingResp(), gem5::SerialLink::SerialLinkRequestPort::recvTimingResp(), gem5::SMMUv3::recvTimingResp(), gem5::SpatterGen::recvTimingResp(), gem5::CoherentXBar::recvTimingSnoopReq(), gem5::CoherentXBar::recvTimingSnoopResp(), gem5::minor::LSQ::SplitDataRequest::retireResponse(), gem5::SMMUv3::runProcessTiming(), gem5::BaseCache::satisfyRequest(), gem5::Cache::satisfyRequest(), gem5::PacketQueue::schedSendTiming(), gem5::memory::qos::MemCtrl::schedule(), gem5::memory::qos::Policy::schedule(), gem5::AMDGPUSystemHub::sendDeferredRequest(), gem5::fastmodel::CortexR52TC::sendFunctional(), gem5::Iris::ThreadContext::sendFunctional(), gem5::BaseCache::sendMSHRQueuePacket(), gem5::ComputeUnit::sendRequest(), gem5::Cache::serviceMSHRTargets(), setData(), gem5::ruby::DataBlock::setData(), setUintX(), gem5::RiscvISA::Walker::WalkerState::stepWalk(), gem5::VegaISA::Walker::WalkerState::stepWalk(), gem5::X86ISA::Walker::WalkerState::stepWalk(), gem5::SMMUv3::tableWalkRecvTimingResp(), gem5::ruby::testAndRead(), gem5::ruby::testAndReadMask(), gem5::ruby::testAndWrite(), trySatisfyFunctional(), trySatisfyFunctional(), gem5::SerialLink::SerialLinkRequestPort::trySendTiming(), gem5::SerialLink::SerialLinkResponsePort::trySendTiming(), gem5::MSHR::TargetList::updateWriteFlags(), gem5::Clint::write(), gem5::CopyEngine::write(), gem5::CpuLocalTimer::write(), gem5::EnergyCtrl::write(), gem5::fastmodel::ResetControllerExample::write(), gem5::FVPBasePwrCtrl::write(), gem5::GenericPciHost::write(), gem5::GenericTimerFrame::write(), gem5::GenericTimerMem::write(), gem5::GenericWatchdog::write(), gem5::Gicv3::write(), gem5::Gicv3Its::write(), gem5::HDLcd::write(), gem5::HSAPacketProcessor::write(), gem5::IGbE::write(), gem5::IsaFake::write(), gem5::LupioIPI::write(), gem5::LupioTMR::write(), gem5::memory::CfiMemory::write(), gem5::MHU::write(), gem5::MmDisk::write(), gem5::MmioVirtIO::write(), gem5::NoMaliGpu::write(), gem5::NSGigE::write(), gem5::PciVirtIO::write(), gem5::Pl011::write(), gem5::PL031::write(), gem5::Pl050::write(), gem5::Pl111::write(), gem5::Plic::write(), gem5::qemu::FwCfgIo::write(), gem5::qemu::FwCfgMmio::write(), gem5::RiscvISA::MmioVirtIO::write(), gem5::sinic::Device::write(), gem5::Sp804::write(), gem5::Sp805::write(), gem5::SysSecCtrl::write(), gem5::Uart8250::write(), gem5::UFSHostDevice::write(), gem5::X86ISA::Cmos::write(), gem5::X86ISA::I8042::write(), gem5::X86ISA::I82094AA::write(), gem5::X86ISA::I8237::write(), gem5::X86ISA::I8254::write(), gem5::X86ISA::I8259::write(), gem5::X86ISA::Interrupts::write(), gem5::X86ISA::Speaker::write(), gem5::AMDGPUDevice::writeConfig(), gem5::IdeController::writeConfig(), gem5::PciDevice::writeConfig(), gem5::VirtIODeviceBase::writeConfigBlob(), gem5::SMMUv3::writeControl(), writeData(), gem5::GicV2::writeDistributor(), gem5::AMDGPUDevice::writeDoorbell(), gem5::AMDGPUDevice::writeFrame(), gem5::AMDGPUNbio::writeFrame(), gem5::AMDGPUNbio::writeMMIO(), and gem5::AMDGPUDevice::writeROM().
uint64_t gem5::Packet::getUintX | ( | ByteOrder | endian | ) | const |
Get the data in the packet byte swapped from the specified endianness and zero-extended to 64 bits.
Definition at line 352 of file packet.cc.
References getConstPtr(), getSize(), gem5::getUintX(), panic_if, and gem5::X86ISA::val.
Referenced by gem5::AMDGPUDevice::dispatchAccess(), gem5::memory::CfiMemory::read(), gem5::Pl011::read(), gem5::PL031::read(), gem5::Pl050::read(), gem5::Pl111::read(), gem5::Sp805::read(), gem5::IdeController::readConfig(), gem5::AMDGPUDevice::readFrame(), gem5::AMDGPUDevice::write(), gem5::FVPBasePwrCtrl::write(), gem5::GenericTimerFrame::write(), gem5::GenericTimerMem::write(), gem5::GenericWatchdog::write(), gem5::Gicv3::write(), gem5::LupioBLK::write(), gem5::LupioIPI::write(), gem5::LupioPIC::write(), gem5::LupioRNG::write(), gem5::LupioSYS::write(), gem5::LupioTMR::write(), gem5::LupioTTY::write(), gem5::memory::CfiMemory::write(), gem5::Pl011::write(), gem5::Pl050::write(), gem5::Pl111::write(), gem5::SimpleUart::write(), gem5::Sp805::write(), gem5::UFSHostDevice::write(), gem5::AMDGPUDevice::writeConfig(), gem5::IdeController::writeConfig(), gem5::AMDGPUDevice::writeFrame(), gem5::AMDGPUNbio::writeFrame(), and gem5::AMDGPUDevice::writeROM().
|
inline |
Definition at line 614 of file packet.hh.
References cmd, and gem5::MemCmd::hasData().
Referenced by allocate(), gem5::BaseCache::allocateBlock(), gem5::ruby::RubyRequest::functionalWrite(), gem5::BaseCache::handleFill(), gem5::Cache::handleSnoop(), gem5::prefetch::Base::PrefetchInfo::PrefetchInfo(), gem5::CoherentXBar::recvAtomicBackdoor(), gem5::NoncoherentXBar::recvAtomicBackdoor(), gem5::memory::MemCtrl::recvAtomicLogic(), gem5::CoherentXBar::recvAtomicSnoop(), gem5::CoherentXBar::recvTimingReq(), gem5::HMCController::recvTimingReq(), gem5::NoncoherentXBar::recvTimingReq(), gem5::CoherentXBar::recvTimingResp(), gem5::NoncoherentXBar::recvTimingResp(), gem5::CoherentXBar::recvTimingSnoopReq(), gem5::CoherentXBar::recvTimingSnoopResp(), gem5::replaceUpgrade(), gem5::Cache::serviceMSHRTargets(), and trySatisfyFunctional().
|
inline |
Definition at line 615 of file packet.hh.
References cmd, gem5::MemCmd::hasData(), and gem5::MemCmd::responseCommand().
Referenced by allocate(), gem5::replaceUpgrade(), gem5::BaseCache::satisfyRequest(), and gem5::Cache::serviceMSHRTargets().
|
inline |
Definition at line 686 of file packet.hh.
References flags, HAS_SHARERS, and gem5::Flags< T >::isSet().
Referenced by gem5::BaseCache::access(), gem5::Cache::createMissPacket(), gem5::Cache::doTimingSupplyResponse(), gem5::NoncoherentCache::handleAtomicReqMiss(), gem5::BaseCache::handleFill(), gem5::Cache::handleSnoop(), gem5::ArmISA::TableWalker::Port::recvTimingResp(), gem5::DmaPort::recvTimingResp(), gem5::NoncoherentCache::recvTimingResp(), gem5::o3::Fetch::IcachePort::recvTimingResp(), gem5::Cache::recvTimingSnoopReq(), gem5::BaseCache::satisfyRequest(), gem5::Cache::satisfyRequest(), gem5::BaseCache::sendMSHRQueuePacket(), gem5::Cache::sendMSHRQueuePacket(), gem5::SnoopFilter::updateSnoopForward(), and gem5::SnoopFilter::updateSnoopResponse().
bool gem5::Packet::htmTransactionFailedInCache | ( | ) | const |
Returns whether or not this packet/request has returned from the cache hierarchy in a failed transaction.
The core is notified liked this.
Definition at line 503 of file packet.cc.
References FAILS_TRANSACTION, flags, and gem5::Flags< T >::isSet().
Referenced by gem5::o3::LSQUnit::completeDataAccess(), gem5::TimingSimpleCPU::completeDataAccess(), getHtmTransactionFailedInCacheRC(), Packet(), gem5::ruby::RubyPort::MemRequestPort::recvTimingResp(), gem5::TimingSimpleCPU::IcachePort::recvTimingResp(), and gem5::o3::LSQUnit::writeback().
|
inline |
Definition at line 846 of file packet.hh.
References req.
Referenced by gem5::memory::AbstractMemory::access(), gem5::MemTest::completeRequest(), gem5::ruby::GPUCoalescer::hitCallback(), gem5::ruby::Sequencer::hitCallback(), gem5::ruby::Sequencer::issueRequest(), gem5::ruby::VIPERCoalescer::issueRequest(), gem5::ruby::Sequencer::makeRequest(), gem5::ruby::VIPERCoalescer::makeRequest(), sc_gem5::packet2payload(), gem5::Clint::read(), gem5::LupioRTC::read(), gem5::Plic::read(), gem5::BaseCache::satisfyRequest(), and gem5::AMDGPUSystemHub::sendDeferredRequest().
|
inline |
Definition at line 760 of file packet.hh.
References BLOCK_CACHED, flags, and gem5::Flags< T >::isSet().
Referenced by gem5::Cache::handleSnoop(), gem5::Cache::isCachedAbove(), gem5::SnoopFilter::lookupRequest(), gem5::Cache::sendMSHRQueuePacket(), and gem5::CoherentXBar::sinkPacket().
|
inline |
Definition at line 611 of file packet.hh.
References cmd, and gem5::MemCmd::isClean().
Referenced by gem5::memory::AbstractMemory::access(), gem5::Cache::createMissPacket(), gem5::CoherentXBar::forwardPacket(), gem5::Cache::handleSnoop(), gem5::MSHR::handleSnoop(), gem5::MSHR::isCleaning(), gem5::BaseCache::recvAtomic(), gem5::CoherentXBar::recvAtomicBackdoor(), gem5::CoherentXBar::recvTimingReq(), gem5::BaseCache::recvTimingResp(), gem5::BaseCache::satisfyRequest(), and gem5::BaseCache::sendMSHRQueuePacket().
|
inline |
Is this packet a clean eviction, including both actual clean evict packets, but also clean writebacks.
Definition at line 1435 of file packet.hh.
References gem5::MemCmd::CleanEvict, cmd, and gem5::MemCmd::WritebackClean.
Referenced by gem5::BaseCache::access(), gem5::prefetch::Base::probeNotify(), and gem5::CoherentXBar::sinkPacket().
|
inline |
Is this packet a clean invalidate request, e.g., clflush/clflushopt?
Definition at line 1444 of file packet.hh.
References gem5::MemCmd::CleanInvalidReq, and cmd.
Referenced by gem5::Cache::handleTimingReqMiss().
|
inline |
Definition at line 595 of file packet.hh.
References cmd, and gem5::MemCmd::isDemand().
Referenced by gem5::BaseCache::handleTimingReqMiss().
|
inline |
Definition at line 622 of file packet.hh.
References cmd, and gem5::MemCmd::isError().
Referenced by gem5::AtomicSimpleCPU::amoMem(), gem5::TimingSimpleCPU::completeDataAccess(), gem5::TimingSimpleCPU::completeIfetch(), gem5::MemTest::completeRequest(), copyError(), gem5::AtomicSimpleCPU::fetchInstMem(), gem5::Cache::handleAtomicReqMiss(), gem5::NoncoherentCache::handleAtomicReqMiss(), gem5::minor::Execute::handleMemResponse(), gem5::DmaPort::handleRespPacket(), gem5::minor::Fetch1::minorTraceResponseLine(), gem5::ArmISA::TableWalker::readDataUntimed(), gem5::AtomicSimpleCPU::readMem(), gem5::PioPort< Device >::recvAtomic(), gem5::BaseCache::recvTimingResp(), gem5::minor::Fetch1::recvTimingResp(), gem5::minor::LSQ::recvTimingResp(), gem5::o3::LSQ::recvTimingResp(), gem5::minor::LSQ::SplitDataRequest::retireResponse(), gem5::Cache::serviceMSHRTargets(), gem5::NoncoherentCache::serviceMSHRTargets(), sc_gem5::setPayloadResponse(), and gem5::AtomicSimpleCPU::writeMem().
|
inline |
Definition at line 610 of file packet.hh.
References cmd, and gem5::MemCmd::isEviction().
Referenced by gem5::BaseCache::access(), gem5::WriteQueueEntry::allocate(), gem5::Cache::createMissPacket(), gem5::Cache::handleAtomicReqMiss(), gem5::BaseCache::handleTimingReqMiss(), gem5::Cache::isCachedAbove(), gem5::SnoopFilter::lookupRequest(), mustCheckAbove(), gem5::CoherentXBar::recvAtomicBackdoor(), gem5::CoherentXBar::recvTimingReq(), and gem5::Cache::recvTimingSnoopReq().
|
inline |
Definition at line 702 of file packet.hh.
References EXPRESS_SNOOP, flags, and gem5::Flags< T >::isSet().
Referenced by gem5::MSHR::handleSnoop(), print(), gem5::CoherentXBar::recvTimingReq(), gem5::HMCController::recvTimingReq(), gem5::NoncoherentXBar::recvTimingReq(), gem5::CoherentXBar::recvTimingSnoopReq(), gem5::CoherentXBar::recvTimingSnoopResp(), gem5::PacketQueue::schedSendTiming(), and gem5::BaseCache::CpuSidePort::tryTiming().
|
inline |
Definition at line 624 of file packet.hh.
References cmd, and gem5::MemCmd::isFlush().
Referenced by gem5::ruby::GPUCoalescer::getRequestType(), gem5::ruby::RubyPort::MemResponsePort::hitCallback(), gem5::ruby::Sequencer::hitCallback(), gem5::ruby::GPUCoalescer::makeRequest(), and gem5::ruby::Sequencer::makeRequest().
|
inline |
Accessor functions for the cache bypass flags.
The cache bypass can specify which levels in the hierarchy to bypass. If GLC_BIT is set, the requests are globally coherent and bypass TCP. If SLC_BIT is set, then the requests are system level coherent and bypass both TCP and TCC.
Definition at line 1113 of file packet.hh.
References req.
bool gem5::Packet::isHtmTransactional | ( | ) | const |
Returns whether or not this packet/request originates in the CPU executing in transactional mode, i.e.
within a transaction.
Definition at line 523 of file packet.cc.
References flags, FROM_TRANSACTION, and gem5::Flags< T >::isSet().
Referenced by gem5::o3::LSQUnit::completeDataAccess(), gem5::TimingSimpleCPU::completeDataAccess(), gem5::ruby::Sequencer::issueRequest(), and Packet().
|
inline |
Definition at line 609 of file packet.hh.
References cmd, and gem5::MemCmd::isInvalidate().
Referenced by gem5::memory::AbstractMemory::access(), gem5::o3::LSQUnit::checkSnoop(), gem5::Cache::doTimingSupplyResponse(), gem5::Cache::handleAtomicReqMiss(), gem5::NoncoherentCache::handleAtomicReqMiss(), gem5::Cache::handleSnoop(), gem5::MSHR::handleSnoop(), gem5::ArmISA::lockedSnoopHandler(), gem5::SnoopFilter::lookupSnoop(), gem5::prefetch::Base::observeAccess(), gem5::AtomicSimpleCPU::AtomicCPUDPort::recvAtomicSnoop(), gem5::AtomicSimpleCPU::AtomicCPUDPort::recvFunctionalSnoop(), gem5::BaseCache::recvTimingResp(), gem5::NoncoherentCache::recvTimingResp(), gem5::o3::LSQ::recvTimingResp(), gem5::Cache::recvTimingSnoopReq(), gem5::minor::LSQ::recvTimingSnoopReq(), gem5::o3::LSQ::recvTimingSnoopReq(), gem5::TimingSimpleCPU::DcachePort::recvTimingSnoopReq(), gem5::BaseCache::satisfyRequest(), gem5::Cache::serviceMSHRTargets(), gem5::minor::LSQ::threadSnoop(), and gem5::SnoopFilter::updateResponse().
|
inline |
Definition at line 620 of file packet.hh.
References cmd, and gem5::MemCmd::isLLSC().
Referenced by gem5::BaseCache::access(), gem5::memory::AbstractMemory::access(), gem5::memory::AbstractMemory::checkLockedAddrList(), gem5::CacheBlk::checkWrite(), convertLlToRead(), convertScToWrite(), gem5::Cache::createMissPacket(), gem5::ruby::RubyPort::MemResponsePort::hitCallback(), gem5::ruby::Sequencer::makeRequest(), gem5::MemCheckerMonitor::recvTimingResp(), gem5::BaseCache::satisfyRequest(), gem5::CacheBlk::trackLoadLocked(), and gem5::memory::AbstractMemory::writeOK().
|
inline |
Definition at line 621 of file packet.hh.
References cmd, and gem5::MemCmd::isLockedRMW().
Referenced by gem5::BaseCache::handleTimingReqHit().
|
inline |
Definition at line 1450 of file packet.hh.
References cmd, req, and gem5::MemCmd::WriteReq.
Referenced by gem5::ruby::RubyRequest::functionalWrite(), getPtr(), gem5::ruby::Sequencer::hitCallback(), isWholeLineWrite(), gem5::ruby::DMASequencer::makeRequest(), gem5::Cache::promoteWholeLineWrites(), trySatisfyFunctional(), gem5::MSHR::TargetList::updateWriteFlags(), and writeData().
|
inline |
Definition at line 623 of file packet.hh.
References cmd, and gem5::MemCmd::isPrint().
Referenced by gem5::memory::AbstractMemory::functionalAccess(), popLabel(), pushLabel(), gem5::CoherentXBar::recvFunctional(), gem5::NoncoherentXBar::recvFunctional(), gem5::CoherentXBar::recvFunctionalSnoop(), gem5::MSHR::trySatisfyFunctional(), trySatisfyFunctional(), and gem5::WriteQueueEntry::trySatisfyFunctional().
|
inline |
Definition at line 593 of file packet.hh.
References cmd, and gem5::MemCmd::isRead().
Referenced by gem5::BaseCache::access(), gem5::memory::AbstractMemory::access(), gem5::SimpleCache::accessFunctional(), gem5::SimpleCache::accessTiming(), gem5::MemTest::completeRequest(), convertLlToRead(), gem5::SimpleMemDelay::delayReq(), gem5::SimpleMemDelay::delayResp(), gem5::Cache::doTimingSupplyResponse(), gem5::CoherentXBar::forwardPacket(), gem5::memory::AbstractMemory::functionalAccess(), gem5::ruby::GPUCoalescer::getRequestType(), gem5::Cache::handleAtomicReqMiss(), gem5::NoncoherentCache::handleAtomicReqMiss(), gem5::BaseCache::handleFill(), gem5::TimingSimpleCPU::handleReadPacket(), gem5::ComputeUnit::ScalarDataPort::handleResponse(), gem5::Cache::handleSnoop(), gem5::BaseCache::handleTimingReqHit(), gem5::Cache::handleTimingReqMiss(), gem5::ruby::DMASequencer::makeRequest(), gem5::ruby::GPUCoalescer::makeRequest(), gem5::ruby::Sequencer::makeRequest(), gem5::prefetch::Base::observeAccess(), sc_gem5::packet2payload(), gem5::ComputeUnit::DataPort::processMemRespEvent(), gem5::memory::qos::MemSinkCtrl::processNextReqEvent(), gem5::NoncoherentCache::recvAtomic(), gem5::PioPort< Device >::recvAtomic(), gem5::SMMUControlPort::recvAtomic(), gem5::ruby::RubyPort::MemResponsePort::recvFunctional(), gem5::RiscvISA::Walker::WalkerState::recvPacket(), gem5::X86ISA::Walker::WalkerState::recvPacket(), gem5::TimingSimpleCPU::DcachePort::recvReqRetry(), gem5::CommMonitor::recvTimingReq(), gem5::MemCheckerMonitor::recvTimingReq(), gem5::memory::CfiMemory::recvTimingReq(), gem5::memory::DRAMSim2::recvTimingReq(), gem5::memory::DRAMsim3::recvTimingReq(), gem5::memory::HBMCtrl::recvTimingReq(), gem5::memory::HeteroMemCtrl::recvTimingReq(), gem5::memory::MemCtrl::recvTimingReq(), gem5::memory::qos::MemSinkCtrl::recvTimingReq(), gem5::memory::SimpleMemory::recvTimingReq(), gem5::NoncoherentCache::recvTimingReq(), gem5::BaseCache::recvTimingResp(), gem5::CommMonitor::recvTimingResp(), gem5::MemCheckerMonitor::recvTimingResp(), gem5::NoncoherentCache::recvTimingResp(), gem5::ruby::AbstractController::recvTimingResp(), gem5::Cache::recvTimingSnoopReq(), gem5::BaseCache::satisfyRequest(), gem5::Cache::satisfyRequest(), gem5::NoncoherentCache::satisfyRequest(), gem5::AMDGPUSystemHub::sendDeferredRequest(), gem5::fastmodel::CortexR52TC::sendFunctional(), gem5::Iris::ThreadContext::sendFunctional(), gem5::ComputeUnit::sendRequest(), gem5::ComputeUnit::sendScalarRequest(), gem5::Cache::serviceMSHRTargets(), sc_gem5::setPayloadResponse(), gem5::CoherentXBar::sinkPacket(), and trySatisfyFunctional().
|
inline |
Definition at line 597 of file packet.hh.
References cmd, and gem5::MemCmd::isRequest().
Referenced by gem5::BaseCache::access(), gem5::Cache::access(), gem5::memory::PhysicalMemory::access(), gem5::BaseCache::cmpAndSwap(), copyResponderFlags(), gem5::Cache::doTimingSupplyResponse(), gem5::memory::PhysicalMemory::functionalAccess(), gem5::Cache::handleSnoop(), gem5::VegaISA::GpuTLB::handleTranslationReturn(), gem5::X86ISA::GpuTLB::handleTranslationReturn(), gem5::SnoopFilter::lookupSnoop(), makeHtmTransactionalReqResponse(), makeResponse(), needsWritable(), gem5::BaseCache::CpuSidePort::recvTimingReq(), gem5::CommMonitor::recvTimingReq(), gem5::MemCheckerMonitor::recvTimingReq(), gem5::ruby::RubyPort::ruby_hit_callback(), gem5::ruby::RubyPort::ruby_unaddressed_callback(), gem5::ruby::HTMSequencer::rubyHtmCallback(), gem5::BaseCache::satisfyRequest(), gem5::AtomicRequestProtocol::send(), gem5::FunctionalRequestProtocol::send(), gem5::AtomicRequestProtocol::sendBackdoor(), gem5::TimingRequestProtocol::sendReq(), gem5::AtomicResponseProtocol::sendSnoop(), gem5::FunctionalResponseProtocol::sendSnoop(), gem5::TimingResponseProtocol::sendSnoopReq(), setCacheResponding(), gem5::TimingRequestProtocol::trySend(), gem5::TLBCoalescer::updatePhysAddresses(), and gem5::VegaTLBCoalescer::updatePhysAddresses().
|
inline |
Definition at line 598 of file packet.hh.
References cmd, and gem5::MemCmd::isResponse().
Referenced by gem5::memory::DRAMSim2::accessAndRespond(), gem5::memory::DRAMsim3::accessAndRespond(), gem5::memory::MemCtrl::accessAndRespond(), gem5::GarnetSyntheticTraffic::completeRequest(), gem5::CoherentXBar::forwardAtomic(), gem5::CoherentXBar::forwardFunctional(), gem5::Cache::handleAtomicReqMiss(), gem5::NoncoherentCache::handleAtomicReqMiss(), gem5::BaseCache::handleFill(), gem5::ArmISA::TableWalker::Port::handleRespPacket(), gem5::DmaPort::handleRespPacket(), gem5::Cache::handleSnoop(), gem5::ruby::RubyPort::MemResponsePort::hitCallback(), gem5::SimpleCache::insert(), sc_gem5::Gem5ToTlmBridge< BITWIDTH >::pec(), gem5::CommMonitor::recvAtomic(), gem5::PioPort< Device >::recvAtomic(), gem5::CoherentXBar::recvAtomicBackdoor(), gem5::NoncoherentXBar::recvAtomicBackdoor(), gem5::CoherentXBar::recvAtomicSnoop(), gem5::CoherentXBar::recvFunctional(), gem5::ruby::RubyPort::MemResponsePort::recvFunctional(), gem5::RiscvISA::Walker::WalkerState::recvPacket(), gem5::X86ISA::Walker::WalkerState::recvPacket(), gem5::memory::CfiMemory::recvTimingReq(), gem5::memory::SimpleMemory::recvTimingReq(), gem5::SimpleTimingPort::recvTimingReq(), gem5::BaseCache::recvTimingResp(), gem5::CommMonitor::recvTimingResp(), gem5::MemCheckerMonitor::recvTimingResp(), gem5::NoncoherentCache::recvTimingResp(), gem5::ruby::AbstractController::recvTimingResp(), gem5::ruby::RubyPort::MemRequestPort::recvTimingResp(), gem5::SpatterGen::recvTimingResp(), gem5::X86ISA::IntRequestPort< Device >::recvTimingResp(), sc_gem5::TlmToGem5Bridge< BITWIDTH >::recvTimingResp(), gem5::BaseCache::CpuSidePort::recvTimingSnoopResp(), gem5::TimingResponseProtocol::sendResp(), gem5::TimingRequestProtocol::sendSnoopResp(), setBadAddress(), setBadCommand(), gem5::SnoopFilter::updateResponse(), gem5::SnoopFilter::updateSnoopForward(), and gem5::SnoopFilter::updateSnoopResponse().
|
inline |
Definition at line 836 of file packet.hh.
References _isSecure, flags, gem5::Flags< T >::isSet(), and VALID_ADDR.
Referenced by gem5::BaseCache::access(), gem5::Cache::access(), gem5::BaseSetAssoc::accessBlock(), gem5::FALRU::accessBlock(), gem5::SectorTags::accessBlock(), gem5::MSHR::allocate(), gem5::WriteQueueEntry::allocate(), gem5::BaseCache::allocateBlock(), gem5::BaseCache::allocateWriteBuffer(), gem5::BaseCache::functionalAccess(), gem5::BaseCache::getNextQueueEntry(), gem5::BaseCache::handleFill(), gem5::BaseCache::handleTimingReqHit(), gem5::Cache::handleTimingReqMiss(), gem5::NoncoherentCache::handleTimingReqMiss(), gem5::BaseTags::insertBlock(), gem5::SnoopFilter::lookupRequest(), gem5::SnoopFilter::lookupSnoop(), matchAddr(), matchAddr(), matchBlockAddr(), matchBlockAddr(), gem5::prefetch::Queued::notify(), gem5::prefetch::Base::probeNotify(), gem5::GenericTimerFrame::read(), gem5::GenericTimerMem::read(), gem5::Gicv3::read(), gem5::MHU::read(), gem5::CoherentXBar::recvAtomicBackdoor(), gem5::Cache::recvAtomicSnoop(), gem5::BaseCache::recvTimingReq(), gem5::CoherentXBar::recvTimingReq(), gem5::BaseCache::recvTimingResp(), gem5::Cache::recvTimingSnoopReq(), gem5::Cache::recvTimingSnoopResp(), gem5::Cache::sendMSHRQueuePacket(), trySatisfyFunctional(), gem5::SnoopFilter::updateResponse(), gem5::SnoopFilter::updateSnoopForward(), gem5::SnoopFilter::updateSnoopResponse(), gem5::GenericTimerFrame::write(), gem5::GenericTimerMem::write(), and gem5::Gicv3::write().
|
inline |
|
inline |
Definition at line 596 of file packet.hh.
References cmd, and gem5::MemCmd::isUpgrade().
Referenced by gem5::Cache::createMissPacket(), gem5::BaseCache::satisfyRequest(), and gem5::MSHR::TargetList::updateFlags().
|
inline |
Definition at line 626 of file packet.hh.
References cmd, getOffset(), getSize(), isMaskedWrite(), gem5::MemCmd::WriteLineReq, and gem5::MemCmd::WriteReq.
Referenced by gem5::Cache::handleAtomicReqMiss(), and gem5::NoncoherentCache::handleAtomicReqMiss().
|
inline |
Definition at line 594 of file packet.hh.
References cmd, and gem5::MemCmd::isWrite().
Referenced by gem5::BaseCache::access(), gem5::Cache::access(), gem5::memory::AbstractMemory::access(), gem5::SimpleCache::accessFunctional(), gem5::SimpleCache::accessTiming(), gem5::memory::MemCtrl::addToReadQueue(), gem5::memory::MemCtrl::addToWriteQueue(), gem5::WriteQueueEntry::allocate(), gem5::BaseCache::allocateWriteBuffer(), gem5::memory::CfiMemory::cfiAccess(), gem5::CacheBlk::checkWrite(), gem5::o3::LSQUnit::completeDataAccess(), gem5::TimingSimpleCPU::completeDataAccess(), gem5::TraceCPU::ElasticDataGen::completeMemAccess(), gem5::GarnetSyntheticTraffic::completeRequest(), gem5::MemTest::completeRequest(), convertScToWrite(), gem5::SimpleMemDelay::delayReq(), gem5::SimpleMemDelay::delayResp(), gem5::CoherentXBar::forwardPacket(), gem5::SMMUTranslRequest::fromPacket(), gem5::memory::AbstractMemory::functionalAccess(), gem5::ruby::SequencerRequest::functionalWrite(), gem5::ruby::GPUCoalescer::getRequestType(), gem5::Cache::handleAtomicReqMiss(), gem5::ComputeUnit::ScalarDataPort::handleResponse(), gem5::GUPSGen::handleResponse(), gem5::BaseCache::handleTimingReqHit(), gem5::BaseCache::handleTimingReqMiss(), gem5::Cache::handleTimingReqMiss(), gem5::ruby::RubyPort::MemResponsePort::hitCallback(), gem5::ruby::VIPERCoalescer::issueRequest(), gem5::ArmISA::lockedSnoopHandler(), gem5::ruby::DMASequencer::makeRequest(), gem5::ruby::GPUCoalescer::makeRequest(), gem5::ruby::Sequencer::makeRequest(), sc_gem5::packet2payload(), gem5::prefetch::Base::probeNotify(), gem5::NoncoherentCache::recvAtomic(), gem5::CoherentXBar::recvAtomicBackdoor(), gem5::AtomicSimpleCPU::AtomicCPUDPort::recvAtomicSnoop(), gem5::ruby::RubyPort::MemResponsePort::recvFunctional(), gem5::TimingSimpleCPU::DcachePort::recvReqRetry(), gem5::CoherentXBar::recvTimingReq(), gem5::CommMonitor::recvTimingReq(), gem5::MemCheckerMonitor::recvTimingReq(), gem5::memory::CfiMemory::recvTimingReq(), gem5::memory::DRAMSim2::recvTimingReq(), gem5::memory::DRAMsim3::recvTimingReq(), gem5::memory::HBMCtrl::recvTimingReq(), gem5::memory::HeteroMemCtrl::recvTimingReq(), gem5::memory::MemCtrl::recvTimingReq(), gem5::memory::qos::MemSinkCtrl::recvTimingReq(), gem5::memory::SimpleMemory::recvTimingReq(), gem5::NoncoherentCache::recvTimingReq(), gem5::SMMUv3DeviceInterface::recvTimingReq(), gem5::BaseCache::recvTimingResp(), gem5::BaseTrafficGen::recvTimingResp(), gem5::CommMonitor::recvTimingResp(), gem5::MemCheckerMonitor::recvTimingResp(), gem5::ruby::AbstractController::recvTimingResp(), gem5::minor::LSQ::recvTimingSnoopReq(), gem5::TimingSimpleCPU::DcachePort::recvTimingSnoopReq(), gem5::BaseCache::satisfyRequest(), gem5::NoncoherentCache::satisfyRequest(), gem5::AMDGPUSystemHub::sendDeferredRequest(), gem5::BaseCache::sendMSHRQueuePacket(), gem5::GUPSGen::sendNextReq(), gem5::ComputeUnit::sendRequest(), gem5::ComputeUnit::sendScalarRequest(), setBadCommand(), setFunctionalResponseStatus(), sc_gem5::setPayloadResponse(), gem5::CoherentXBar::sinkPacket(), gem5::minor::LSQ::threadSnoop(), trySatisfyFunctional(), and gem5::MSHR::TargetList::updateWriteFlags().
|
inline |
Definition at line 613 of file packet.hh.
References cmd, and gem5::MemCmd::isWriteback().
Referenced by gem5::BaseCache::access(), gem5::NoncoherentCache::access(), gem5::NoncoherentCache::handleAtomicReqMiss(), gem5::BaseCache::handleTimingReqMiss(), gem5::SnoopFilter::lookupSnoop(), and gem5::SnoopFilter::updateSnoopResponse().
|
inline |
Definition at line 1074 of file packet.hh.
References makeResponse().
Referenced by gem5::SMMUTranslationProcess::abortTransaction(), gem5::SMMUTranslationProcess::completeTransaction(), gem5::AMDGPUDevice::dispatchAccess(), gem5::IdeController::dispatchAccess(), gem5::SparcISA::TLB::doMmuRegRead(), gem5::SparcISA::TLB::doMmuRegWrite(), gem5::Cache::handleAtomicReqMiss(), gem5::NoncoherentCache::handleAtomicReqMiss(), gem5::Cache::handleSnoop(), gem5::A9SCU::read(), gem5::AmbaFake::read(), gem5::CopyEngine::read(), gem5::CpuLocalTimer::read(), gem5::DumbTOD::read(), gem5::EnergyCtrl::read(), gem5::GenericPciHost::read(), gem5::Gicv2m::read(), gem5::Gicv3::read(), gem5::Gicv3Its::read(), gem5::HDLcd::read(), gem5::HSAPacketProcessor::read(), gem5::I2CBus::read(), gem5::Iob::read(), gem5::IsaFake::read(), gem5::LupioRTC::read(), gem5::MHU::read(), gem5::MmDisk::read(), gem5::NSGigE::read(), gem5::Pl011::read(), gem5::PL031::read(), gem5::Pl050::read(), gem5::Pl111::read(), gem5::RealViewCtrl::read(), gem5::SimpleUart::read(), gem5::Sp804::read(), gem5::SysSecCtrl::read(), gem5::Uart8250::read(), gem5::X86ISA::Cmos::read(), gem5::X86ISA::I8042::read(), gem5::X86ISA::I82094AA::read(), gem5::X86ISA::I8237::read(), gem5::X86ISA::I8254::read(), gem5::X86ISA::I8259::read(), gem5::X86ISA::Interrupts::read(), gem5::X86ISA::Speaker::read(), gem5::AMDGPUDevice::readConfig(), gem5::IdeController::readConfig(), gem5::PciDevice::readConfig(), gem5::SMMUv3::readControl(), gem5::GicV2::readCpu(), gem5::VGic::readCtrl(), gem5::GicV2::readDistributor(), gem5::VGic::readVCpu(), gem5::BaseCache::recvAtomic(), gem5::X86ISA::Interrupts::recvMessage(), gem5::A9SCU::write(), gem5::AmbaFake::write(), gem5::CopyEngine::write(), gem5::CpuLocalTimer::write(), gem5::EnergyCtrl::write(), gem5::Gicv2m::write(), gem5::Gicv3::write(), gem5::Gicv3Its::write(), gem5::HDLcd::write(), gem5::HSAPacketProcessor::write(), gem5::IGbE::write(), gem5::Iob::write(), gem5::IsaFake::write(), gem5::MHU::write(), gem5::MmDisk::write(), gem5::NoMaliGpu::write(), gem5::NSGigE::write(), gem5::Pl011::write(), gem5::PL031::write(), gem5::Pl050::write(), gem5::Pl111::write(), gem5::RealViewCtrl::write(), gem5::SimpleUart::write(), gem5::Sp804::write(), gem5::SysSecCtrl::write(), gem5::Uart8250::write(), gem5::X86ISA::Cmos::write(), gem5::X86ISA::I8042::write(), gem5::X86ISA::I82094AA::write(), gem5::X86ISA::I8237::write(), gem5::X86ISA::I8254::write(), gem5::X86ISA::I8259::write(), gem5::X86ISA::Interrupts::write(), gem5::X86ISA::Speaker::write(), gem5::AMDGPUDevice::writeConfig(), gem5::IdeController::writeConfig(), gem5::PciDevice::writeConfig(), gem5::SMMUv3::writeControl(), gem5::GicV2::writeCpu(), gem5::VGic::writeCtrl(), gem5::GicV2::writeDistributor(), and gem5::VGic::writeVCpu().
void gem5::Packet::makeHtmTransactionalReqResponse | ( | const HtmCacheFailure | ret_code | ) |
Communicates to the core that a packet was processed by the memory subsystem while running in transactional mode.
It may happen that the transaction has failed at the memory subsystem and this needs to be communicated to the core somehow. This function decorates the response packet with flags to indicate such a situation has occurred.
Definition at line 477 of file packet.cc.
References gem5::Flags< T >::clear(), cmd, EXPRESS_SNOOP, flags, isRequest(), needsResponse(), gem5::MemCmd::responseCommand(), and setHtmTransactionFailedInCache().
Referenced by gem5::ruby::HTMSequencer::rubyHtmCallback().
|
inlinestatic |
Generate the appropriate read MemCmd based on the Request flags.
Definition at line 993 of file packet.hh.
References gem5::MemCmd::HTMAbort, gem5::MemCmd::HTMReq, gem5::MemCmd::LoadLockedReq, gem5::MemCmd::LockedRMWReadReq, gem5::MemCmd::ReadReq, req, gem5::MemCmd::SoftPFExReq, and gem5::MemCmd::SoftPFReq.
Referenced by createRead(), gem5::ruby::RubyPrefetcherProxy::notifyPfFill(), gem5::ruby::RubyPrefetcherProxy::notifyPfHit(), gem5::ruby::RubyPrefetcherProxy::notifyPfMiss(), and gem5::AtomicSimpleCPU::readMem().
|
inline |
Take a request packet and modify it in place to be suitable for returning as a response to that request.
Definition at line 1062 of file packet.hh.
References gem5::Flags< T >::clear(), cmd, EXPRESS_SNOOP, flags, isRequest(), needsResponse(), and gem5::MemCmd::responseCommand().
Referenced by gem5::memory::AbstractMemory::access(), gem5::SimpleCache::accessTiming(), gem5::BaseCache::functionalAccess(), gem5::memory::AbstractMemory::functionalAccess(), gem5::SimpleCache::handleFunctional(), gem5::SimpleCache::handleResponse(), gem5::ruby::RubyPort::MemResponsePort::hitCallback(), makeAtomicResponse(), makeTimingResponse(), gem5::ComputeUnit::DataPort::SystemHubEvent::process(), gem5::ComputeUnit::ScalarDataPort::SystemHubEvent::process(), gem5::StubSlavePort::processResponseEvent(), gem5::Clint::read(), gem5::fastmodel::ResetControllerExample::read(), gem5::FVPBasePwrCtrl::read(), gem5::GenericTimerFrame::read(), gem5::GenericTimerMem::read(), gem5::GenericWatchdog::read(), gem5::LupioBLK::read(), gem5::LupioIPI::read(), gem5::LupioPIC::read(), gem5::LupioRNG::read(), gem5::LupioRTC::read(), gem5::LupioSYS::read(), gem5::LupioTMR::read(), gem5::LupioTTY::read(), gem5::memory::CfiMemory::read(), gem5::MmioVirtIO::read(), gem5::NoMaliGpu::read(), gem5::PciVirtIO::read(), gem5::Plic::read(), gem5::qemu::FwCfgIo::read(), gem5::qemu::FwCfgMmio::read(), gem5::RiscvISA::MmioVirtIO::read(), gem5::Sp805::read(), gem5::UFSHostDevice::read(), gem5::VirtIORng::readConfig(), gem5::VirtIODeviceBase::readConfigBlob(), gem5::CoherentXBar::recvAtomicBackdoor(), sc_gem5::Gem5ToTlmBridge< BITWIDTH >::recvAtomicBackdoor(), gem5::Bridge::BridgeResponsePort::recvFunctional(), gem5::CoherentXBar::recvFunctional(), gem5::MemDelay::ResponsePort::recvFunctional(), gem5::memory::MemCtrl::MemoryPort::recvFunctional(), gem5::NoncoherentXBar::recvFunctional(), gem5::ruby::RubyPort::MemResponsePort::recvFunctional(), gem5::SerialLink::SerialLinkResponsePort::recvFunctional(), gem5::CoherentXBar::recvFunctionalSnoop(), gem5::MemDelay::RequestPort::recvFunctionalSnoop(), gem5::CoherentXBar::recvTimingReq(), gem5::ruby::RubyPort::MemResponsePort::recvTimingReq(), gem5::TimingSimpleCPU::sendData(), gem5::fastmodel::CortexR52TC::sendFunctional(), gem5::Iris::ThreadContext::sendFunctional(), gem5::TimingSimpleCPU::sendSplitData(), sc_gem5::setPacketResponse(), gem5::Bridge::BridgeRequestPort::trySatisfyFunctional(), gem5::SerialLink::SerialLinkRequestPort::trySatisfyFunctional(), gem5::minor::LSQ::tryToSendToTransfers(), gem5::Clint::write(), gem5::fastmodel::ResetControllerExample::write(), gem5::FVPBasePwrCtrl::write(), gem5::GenericTimerFrame::write(), gem5::GenericTimerMem::write(), gem5::GenericWatchdog::write(), gem5::LupioBLK::write(), gem5::LupioIPI::write(), gem5::LupioPIC::write(), gem5::LupioRNG::write(), gem5::LupioSYS::write(), gem5::LupioTMR::write(), gem5::LupioTTY::write(), gem5::memory::CfiMemory::write(), gem5::MmioVirtIO::write(), gem5::PciVirtIO::write(), gem5::Plic::write(), gem5::qemu::FwCfgIo::write(), gem5::qemu::FwCfgMmio::write(), gem5::RiscvISA::MmioVirtIO::write(), gem5::Sp805::write(), gem5::UFSHostDevice::write(), and gem5::VirtIODeviceBase::writeConfigBlob().
|
inline |
Definition at line 1080 of file packet.hh.
References makeResponse().
Referenced by gem5::SMMUTranslationProcess::abortTransaction(), gem5::SMMUTranslationProcess::completeTransaction(), gem5::Cache::doTimingSupplyResponse(), gem5::BaseCache::handleTimingReqHit(), gem5::Cache::handleTimingReqMiss(), gem5::VegaISA::GpuTLB::handleTranslationReturn(), gem5::X86ISA::GpuTLB::handleTranslationReturn(), gem5::LdsState::process(), gem5::Cache::serviceMSHRTargets(), gem5::NoncoherentCache::serviceMSHRTargets(), gem5::TLBCoalescer::updatePhysAddresses(), and gem5::VegaTLBCoalescer::updatePhysAddresses().
|
inlinestatic |
Generate the appropriate write MemCmd based on the Request flags.
Definition at line 1016 of file packet.hh.
References gem5::MemCmd::CleanInvalidReq, gem5::MemCmd::CleanSharedReq, gem5::MemCmd::InvalidateReq, gem5::MemCmd::LockedRMWWriteReq, req, gem5::MemCmd::StoreCondReq, gem5::MemCmd::SwapReq, and gem5::MemCmd::WriteReq.
Referenced by gem5::AtomicSimpleCPU::amoMem(), createWrite(), gem5::ruby::RubyPrefetcherProxy::notifyPfHit(), gem5::ruby::RubyPrefetcherProxy::notifyPfMiss(), and gem5::AtomicSimpleCPU::writeMem().
bool gem5::Packet::matchAddr | ( | const Addr | addr, |
const bool | is_secure ) const |
Check if packet corresponds to a given address and address space.
addr | The address to compare against. |
is_secure | Whether addr belongs to the secure address space. |
Definition at line 403 of file packet.cc.
References addr, getAddr(), and isSecure().
Referenced by matchAddr(), and gem5::Cache::serviceMSHRTargets().
bool gem5::Packet::matchAddr | ( | const PacketPtr | pkt | ) | const |
Check if this packet refers to the same address and address space as another packet.
pkt | The packet to compare against. |
Definition at line 409 of file packet.cc.
References getAddr(), isSecure(), and matchAddr().
bool gem5::Packet::matchBlockAddr | ( | const Addr | addr, |
const bool | is_secure, | ||
const int | blk_size ) const |
Check if packet corresponds to a given block-aligned address and address space.
addr | The address to compare against. |
is_secure | Whether addr belongs to the secure address space. |
blk_size | Block size in bytes. |
Definition at line 389 of file packet.cc.
References addr, getBlockAddr(), and isSecure().
Referenced by gem5::MSHR::allocate(), gem5::WriteQueueEntry::allocate(), gem5::MSHR::matchBlockAddr(), matchBlockAddr(), and gem5::WriteQueueEntry::matchBlockAddr().
bool gem5::Packet::matchBlockAddr | ( | const PacketPtr | pkt, |
const int | blk_size ) const |
Check if this packet refers to the same block-aligned address and address space as another packet.
pkt | The packet to compare against. |
blk_size | Block size in bytes. |
Definition at line 396 of file packet.cc.
References getBlockAddr(), isSecure(), and matchBlockAddr().
|
inline |
Does the request need to check for cached copies of the same block in the memory hierarchy above.
Definition at line 1425 of file packet.hh.
References cmd, gem5::MemCmd::HardPFReq, and isEviction().
Referenced by gem5::Cache::handleSnoop(), and gem5::Cache::recvTimingSnoopReq().
|
inline |
Definition at line 608 of file packet.hh.
References cmd, and gem5::MemCmd::needsResponse().
Referenced by gem5::BaseCache::access(), gem5::memory::AbstractMemory::access(), gem5::memory::DRAMSim2::accessAndRespond(), gem5::memory::DRAMsim3::accessAndRespond(), gem5::memory::MemCtrl::accessAndRespond(), gem5::SimpleCache::accessTiming(), gem5::BaseTrafficGen::allocateWaitingRespSlot(), gem5::Cache::createMissPacket(), gem5::NoncoherentCache::createMissPacket(), gem5::Cache::doTimingSupplyResponse(), gem5::Cache::handleAtomicReqMiss(), gem5::NoncoherentCache::handleAtomicReqMiss(), gem5::Cache::handleSnoop(), gem5::MSHR::handleSnoop(), gem5::BaseCache::handleTimingReqHit(), gem5::Cache::handleTimingReqMiss(), gem5::ruby::RubyPort::MemResponsePort::hitCallback(), gem5::SnoopFilter::lookupRequest(), makeHtmTransactionalReqResponse(), makeResponse(), sc_gem5::Gem5ToTlmBridge< BITWIDTH >::pec(), gem5::memory::qos::MemSinkCtrl::processNextReqEvent(), gem5::BaseCache::recvAtomic(), gem5::CommMonitor::recvAtomic(), sc_gem5::Gem5ToTlmBridge< BITWIDTH >::recvAtomic(), gem5::CoherentXBar::recvAtomicBackdoor(), sc_gem5::Gem5ToTlmBridge< BITWIDTH >::recvAtomicBackdoor(), gem5::CoherentXBar::recvFunctional(), gem5::NoncoherentXBar::recvFunctional(), gem5::ruby::RubyPort::MemResponsePort::recvFunctional(), gem5::CoherentXBar::recvFunctionalSnoop(), gem5::AddrMapper::recvTimingReq(), gem5::Bridge::BridgeResponsePort::recvTimingReq(), gem5::CoherentXBar::recvTimingReq(), gem5::CommMonitor::recvTimingReq(), gem5::HMCController::recvTimingReq(), gem5::MemCheckerMonitor::recvTimingReq(), gem5::memory::CfiMemory::recvTimingReq(), gem5::memory::SimpleMemory::recvTimingReq(), gem5::NoncoherentXBar::recvTimingReq(), gem5::SerialLink::SerialLinkResponsePort::recvTimingReq(), gem5::SimpleTimingPort::recvTimingReq(), gem5::Cache::recvTimingSnoopReq(), gem5::ruby::HTMSequencer::rubyHtmCallback(), gem5::CoherentXBar::sinkPacket(), and gem5::minor::Fetch1::tryToSendToTransfers().
|
inline |
Definition at line 599 of file packet.hh.
References cmd, isRequest(), and gem5::MemCmd::needsWritable().
Referenced by gem5::BaseCache::access(), gem5::MSHR::allocateTarget(), gem5::Cache::handleAtomicReqMiss(), gem5::Cache::handleSnoop(), gem5::MSHR::handleSnoop(), gem5::BaseCache::handleTimingReqMiss(), gem5::ruby::RubyPrefetcherProxy::issuePrefetch(), gem5::SnoopFilter::lookupSnoop(), gem5::Cache::recvAtomic(), gem5::Cache::recvTimingReq(), gem5::Cache::recvTimingSnoopReq(), gem5::Cache::satisfyRequest(), gem5::Cache::serviceMSHRTargets(), gem5::CoherentXBar::sinkPacket(), and gem5::MSHR::TargetList::updateFlags().
|
inline |
Pop label for PrintReq (safe to call unconditionally).
Definition at line 1480 of file packet.hh.
References isPrint(), gem5::safe_cast(), and senderState.
Referenced by gem5::BaseCache::functionalAccess(), gem5::Bridge::BridgeResponsePort::recvFunctional(), gem5::memory::CfiMemory::recvFunctional(), gem5::memory::DRAMSim2::recvFunctional(), gem5::memory::DRAMsim3::recvFunctional(), gem5::memory::MemCtrl::MemoryPort::recvFunctional(), gem5::memory::qos::MemSinkCtrl::MemoryPort::recvFunctional(), gem5::memory::qos::MemSinkCtrl::recvFunctional(), gem5::memory::SimpleMemory::recvFunctional(), gem5::SerialLink::SerialLinkResponsePort::recvFunctional(), gem5::PacketQueue::trySatisfyFunctional(), and gem5::Queue< Entry >::trySatisfyFunctional().
Packet::SenderState * gem5::Packet::popSenderState | ( | ) |
Pop the top of the state stack and return a pointer to it.
This assumes the current sender state is not NULL. This should be preferred over direct manipulation of the senderState member variable.
Definition at line 342 of file packet.cc.
References gem5::Packet::SenderState::predecessor, and senderState.
Referenced by gem5::SMMUv3DeviceInterface::atsRecvTimingResp(), gem5::AddrMapper::recvTimingReq(), gem5::CommMonitor::recvTimingReq(), gem5::MemCheckerMonitor::recvTimingReq(), gem5::ruby::RubyPort::MemResponsePort::recvTimingReq(), gem5::SysBridge::SysBridgeSourcePort::recvTimingReq(), gem5::BaseCache::recvTimingResp(), gem5::Gicv3Its::recvTimingResp(), gem5::minor::Fetch1::recvTimingResp(), gem5::minor::LSQ::recvTimingResp(), gem5::RiscvISA::Walker::recvTimingResp(), gem5::ruby::RubyPort::MemRequestPort::recvTimingResp(), gem5::SMMUv3::recvTimingResp(), gem5::SysBridge::SysBridgeTargetPort::recvTimingResp(), gem5::VegaISA::Walker::recvTimingResp(), gem5::X86ISA::IntRequestPort< Device >::recvTimingResp(), gem5::X86ISA::Walker::recvTimingResp(), sc_gem5::TlmToGem5Bridge< BITWIDTH >::recvTimingResp(), gem5::SysBridge::SysBridgeSourcePort::recvTimingSnoopResp(), gem5::ruby::RubyPort::ruby_hit_callback(), gem5::ruby::RubyPort::ruby_unaddressed_callback(), gem5::ruby::HTMSequencer::rubyHtmCallback(), gem5::RiscvISA::Walker::sendTiming(), gem5::VegaISA::Walker::sendTiming(), gem5::X86ISA::Walker::sendTiming(), and gem5::SMMUv3::tableWalkRecvTimingResp().
std::string gem5::Packet::print | ( | ) | const |
|
virtual |
Implements gem5::Printable.
Definition at line 368 of file packet.cc.
References gem5::ccprintf(), cmdString(), getAddr(), getSize(), isExpressSnoop(), and req.
Referenced by gem5::BaseCache::access(), gem5::Cache::access(), gem5::memory::AbstractMemory::access(), gem5::memory::MemCtrl::accessAndRespond(), gem5::SimpleCache::accessTiming(), gem5::MSHR::TargetList::add(), gem5::BaseCache::allocateWriteBuffer(), gem5::AtomicSimpleCPU::amoMem(), gem5::Cache::cleanEvictBlk(), gem5::TimingSimpleCPU::completeDataAccess(), gem5::TimingSimpleCPU::completeIfetch(), gem5::Cache::createMissPacket(), gem5::NoncoherentCache::createMissPacket(), gem5::Cache::doTimingSupplyResponse(), gem5::AtomicSimpleCPU::fetchInstMem(), gem5::CoherentXBar::forwardTiming(), gem5::BaseCache::functionalAccess(), gem5::Cache::handleAtomicReqMiss(), gem5::NoncoherentCache::handleAtomicReqMiss(), gem5::Cache::handleSnoop(), gem5::MSHR::handleSnoop(), gem5::BaseCache::handleTimingReqHit(), gem5::BaseCache::handleTimingReqMiss(), gem5::SimpleCache::insert(), gem5::ruby::RubyPrefetcherProxy::issuePrefetch(), gem5::SnoopFilter::lookupRequest(), gem5::SnoopFilter::lookupSnoop(), gem5::ruby::RubyPrefetcherProxy::notifyPfFill(), gem5::ruby::RubyPrefetcherProxy::notifyPfHit(), gem5::ruby::RubyPrefetcherProxy::notifyPfMiss(), gem5::SpatterGen::processNextGenEvent(), gem5::SpatterGen::processNextSendEvent(), gem5::AtomicSimpleCPU::readMem(), gem5::BaseCache::recvAtomic(), gem5::Cache::recvAtomic(), gem5::memory::HBMCtrl::recvAtomic(), gem5::memory::HeteroMemCtrl::recvAtomic(), gem5::memory::MemCtrl::recvAtomic(), gem5::CoherentXBar::recvAtomicBackdoor(), gem5::memory::HBMCtrl::recvAtomicBackdoor(), gem5::CoherentXBar::recvAtomicSnoop(), gem5::NoncoherentCache::recvAtomicSnoop(), gem5::CoherentXBar::recvFunctional(), gem5::memory::HBMCtrl::recvFunctional(), gem5::memory::HeteroMemCtrl::recvFunctional(), gem5::memory::MemCtrl::recvFunctional(), gem5::CoherentXBar::recvFunctionalSnoop(), gem5::SimpleCache::CPUSidePort::recvRespRetry(), gem5::Cache::recvTimingReq(), gem5::CoherentXBar::recvTimingReq(), gem5::memory::HeteroMemCtrl::recvTimingReq(), gem5::memory::MemCtrl::recvTimingReq(), gem5::SimpleCache::CPUSidePort::recvTimingReq(), gem5::BaseCache::recvTimingResp(), gem5::BaseTrafficGen::recvTimingResp(), gem5::CoherentXBar::recvTimingResp(), gem5::SpatterGen::recvTimingResp(), gem5::Cache::recvTimingSnoopReq(), gem5::CoherentXBar::recvTimingSnoopReq(), gem5::NoncoherentCache::recvTimingSnoopReq(), gem5::Cache::recvTimingSnoopResp(), gem5::CoherentXBar::recvTimingSnoopResp(), gem5::NoncoherentCache::recvTimingSnoopResp(), gem5::BaseCache::satisfyRequest(), gem5::BaseCache::sendMSHRQueuePacket(), gem5::Cache::sendMSHRQueuePacket(), gem5::SimpleCache::CPUSidePort::sendPacket(), gem5::SpatterGen::SpatterGenPort::sendPacket(), gem5::BaseCache::sendWriteQueuePacket(), gem5::Cache::serviceMSHRTargets(), gem5::o3::LSQUnit::trySendPacket(), gem5::SnoopFilter::updateResponse(), gem5::SnoopFilter::updateSnoopForward(), gem5::SnoopFilter::updateSnoopResponse(), gem5::BaseCache::writebackBlk(), gem5::BaseCache::writecleanBlk(), and gem5::AtomicSimpleCPU::writeMem().
|
inline |
Push label for PrintReq (safe to call unconditionally).
Definition at line 1470 of file packet.hh.
References isPrint(), gem5::safe_cast(), and senderState.
Referenced by gem5::BaseCache::functionalAccess(), gem5::Bridge::BridgeResponsePort::recvFunctional(), gem5::memory::CfiMemory::recvFunctional(), gem5::memory::DRAMSim2::recvFunctional(), gem5::memory::DRAMsim3::recvFunctional(), gem5::memory::MemCtrl::MemoryPort::recvFunctional(), gem5::memory::qos::MemSinkCtrl::MemoryPort::recvFunctional(), gem5::memory::qos::MemSinkCtrl::recvFunctional(), gem5::memory::SimpleMemory::recvFunctional(), gem5::SerialLink::SerialLinkResponsePort::recvFunctional(), gem5::PacketQueue::trySatisfyFunctional(), and gem5::Queue< Entry >::trySatisfyFunctional().
void gem5::Packet::pushSenderState | ( | Packet::SenderState * | sender_state | ) |
Push a new sender state to the packet and make the current sender state the predecessor of the new one.
This should be prefered over direct manipulation of the senderState member variable.
sender_state | SenderState to push at the top of the stack |
Definition at line 334 of file packet.cc.
References gem5::Packet::SenderState::predecessor, and senderState.
Referenced by gem5::ComputeUnit::injectGlobalMemFence(), gem5::ScalarMemPipeline::injectScalarMemFence(), gem5::minor::Fetch1::FetchRequest::makePacket(), gem5::minor::makePacketForRequest(), gem5::SpatterGen::processNextGenEvent(), gem5::AMDGPUMemoryManager::readRequest(), gem5::ruby::RubyPort::MemResponsePort::recvAtomic(), gem5::AddrMapper::recvTimingReq(), gem5::CommMonitor::recvTimingReq(), gem5::MemCheckerMonitor::recvTimingReq(), gem5::ruby::RubyPort::MemResponsePort::recvTimingReq(), gem5::SysBridge::SysBridgeSourcePort::recvTimingReq(), gem5::SysBridge::SysBridgeTargetPort::recvTimingResp(), gem5::SysBridge::SysBridgeTargetPort::recvTimingSnoopReq(), gem5::Gicv3Its::runProcessTiming(), gem5::SMMUv3::runProcessTiming(), gem5::X86ISA::IntRequestPort< Device >::sendMessage(), gem5::BaseCache::sendMSHRQueuePacket(), gem5::RiscvISA::Walker::sendTiming(), gem5::VegaISA::Walker::sendTiming(), gem5::X86ISA::Walker::sendTiming(), gem5::ruby::AbstractController::serviceMemoryQueue(), and gem5::AMDGPUMemoryManager::writeRequest().
|
inline |
QoS Value getter Returns 0 if QoS value was never set (constructor default).
Definition at line 769 of file packet.hh.
References _qosValue.
Referenced by gem5::memory::MemCtrl::addToReadQueue(), gem5::memory::MemCtrl::addToWriteQueue(), gem5::memory::qos::MemSinkCtrl::processNextReqEvent(), gem5::memory::qos::MemCtrl::qosSchedule(), gem5::memory::qos::MemSinkCtrl::recvTimingReq(), and gem5::memory::qos::MemCtrl::schedule().
|
inline |
|
inline |
Definition at line 780 of file packet.hh.
References req.
Referenced by gem5::memory::MemCtrl::addToReadQueue(), gem5::memory::MemCtrl::addToWriteQueue(), gem5::memory::qos::LrgQueuePolicy::enqueuePacket(), gem5::ruby::RubySystem::functionalRead(), gem5::ruby::RubySystem::functionalWrite(), gem5::System::getDeviceMemory(), gem5::System::isDeviceMemAddr(), gem5::memory::qos::MemCtrl::qosSchedule(), gem5::SysBridge::SysBridgeSourcePort::recvAtomic(), gem5::SysBridge::SysBridgeSourcePort::recvAtomicBackdoor(), gem5::SysBridge::SysBridgeTargetPort::recvAtomicSnoop(), gem5::SysBridge::SysBridgeSourcePort::recvFunctional(), gem5::SysBridge::SysBridgeTargetPort::recvFunctionalSnoop(), gem5::SysBridge::SysBridgeSourcePort::recvTimingReq(), gem5::SysBridge::SysBridgeTargetPort::recvTimingResp(), gem5::SysBridge::SysBridgeTargetPort::recvTimingSnoopReq(), gem5::SysBridge::SysBridgeSourcePort::recvTimingSnoopResp(), and gem5::SysBridge::SysBridgeSourcePort::tryTiming().
|
inline |
Definition at line 719 of file packet.hh.
References flags, gem5::Flags< T >::isSet(), and RESPONDER_HAD_WRITABLE.
Referenced by gem5::Cache::recvAtomic(), gem5::Cache::recvTimingReq(), setResponderHadWritable(), and gem5::CoherentXBar::sinkPacket().
|
inline |
Definition at line 755 of file packet.hh.
References flags, gem5::Flags< T >::isSet(), and SATISFIED.
Referenced by gem5::Cache::handleSnoop(), gem5::CoherentXBar::recvAtomicBackdoor(), and gem5::CoherentXBar::recvTimingReq().
|
inline |
Set the value in the data pointer to v using the specified endianness.
Definition at line 115 of file packet_access.hh.
References panic, setBE(), setLE(), and gem5::ArmISA::v.
|
inline |
Update the address of this packet mid-transaction.
This is used by the address mapper to change an already set address to a new one based on the system configuration. It is intended to remap an existing address, so it asserts that the current address is valid.
Definition at line 815 of file packet.hh.
References addr, flags, gem5::Flags< T >::isSet(), and VALID_ADDR.
Referenced by gem5::SMMUTranslationProcess::completeTransaction(), gem5::ruby::VIPERCoalescer::makeWriteCompletePkts(), sc_gem5::payload2packet(), gem5::AddrMapper::recvAtomic(), gem5::AddrMapper::recvAtomicBackdoor(), gem5::AddrMapper::recvAtomicSnoop(), gem5::AddrMapper::recvFunctional(), gem5::AddrMapper::recvFunctionalSnoop(), gem5::AddrMapper::recvTimingReq(), and gem5::AddrMapper::recvTimingResp().
|
inline |
Definition at line 786 of file packet.hh.
References gem5::MemCmd::BadAddressError, cmd, and isResponse().
Referenced by gem5::SMMUTranslationProcess::abortTransaction(), gem5::HSAPacketProcessor::read(), gem5::IsaFake::read(), sc_gem5::setPacketResponse(), gem5::fastmodel::ResetControllerExample::write(), and gem5::IsaFake::write().
|
inline |
Definition at line 795 of file packet.hh.
References cmd, isResponse(), isWrite(), gem5::MemCmd::ReadError, and gem5::MemCmd::WriteError.
Referenced by sc_gem5::setPacketResponse().
|
inline |
Set the value in the data pointer to v as big endian.
Definition at line 101 of file packet_access.hh.
References gem5::htobe(), setRaw(), and gem5::ArmISA::v.
Referenced by gem5::SparcISA::TLB::doMmuRegRead(), gem5::DumbTOD::read(), gem5::Iob::readIob(), gem5::Iob::readJBus(), and set().
|
inline |
Definition at line 759 of file packet.hh.
References BLOCK_CACHED, flags, and gem5::Flags< T >::set().
Referenced by gem5::Cache::doWritebacks(), gem5::Cache::handleSnoop(), gem5::CoherentXBar::recvAtomicBackdoor(), gem5::CoherentXBar::recvTimingReq(), and gem5::Cache::recvTimingSnoopReq().
|
inline |
Snoop flags.
Set the cacheResponding flag. This is used by the caches to signal another cache that they are responding to a request. A cache will only respond to snoops if it has the line in either Modified or Owned state. Note that on snoop hits we always pass the line as Modified and never Owned. In the case of an Owned line we proceed to invalidate all other copies.
On a cache fill (see Cache::handleFill), we check hasSharers first, ignoring the cacheResponding flag if hasSharers is set. A line is consequently allocated as:
hasSharers cacheResponding state true false Shared true true Shared false false Exclusive false true Modified
Definition at line 653 of file packet.hh.
References CACHE_RESPONDING, flags, isRequest(), gem5::Flags< T >::isSet(), and gem5::Flags< T >::set().
Referenced by gem5::Cache::handleSnoop(), gem5::MSHR::handleSnoop(), gem5::Cache::recvTimingReq(), gem5::Cache::recvTimingSnoopReq(), gem5::BaseCache::satisfyRequest(), and gem5::Cache::satisfyRequest().
|
inline |
Copy data into the packet from the provided pointer.
Definition at line 1293 of file packet.hh.
References flags, getPtr(), getSize(), gem5::Flags< T >::isSet(), gem5::MipsISA::p, and STATIC_DATA.
Referenced by gem5::memory::AbstractMemory::access(), gem5::BaseCache::cmpAndSwap(), gem5::memory::AbstractMemory::functionalAccess(), gem5::GUPSGen::getWritePacket(), gem5::ruby::GPUCoalescer::hitCallback(), gem5::ruby::Sequencer::hitCallback(), gem5::LupioRTC::read(), gem5::X86ISA::Interrupts::read(), gem5::VirtIODeviceBase::readConfigBlob(), gem5::BaseCache::satisfyRequest(), gem5::ruby::AbstractController::serviceMemoryQueue(), gem5::Cache::serviceMSHRTargets(), and setDataFromBlock().
|
inline |
Copy data into the packet from the provided block pointer, which is aligned to the given block size.
Definition at line 1312 of file packet.hh.
References getOffset(), and setData().
Referenced by gem5::SimpleCache::accessFunctional(), gem5::Cache::doTimingSupplyResponse(), gem5::Cache::handleSnoop(), gem5::BaseCache::satisfyRequest(), gem5::BaseCache::writebackBlk(), and gem5::BaseCache::writecleanBlk().
|
inline |
The express snoop flag is used for two purposes.
Firstly, it is used to bypass flow control for normal (non-snoop) requests going downstream in the memory system. In cases where a cache is responding to a snoop from another cache (it had a dirty line), but the line is not writable (and there are possibly other copies), the express snoop flag is set by the downstream cache to invalidate all other copies in zero time. Secondly, the express snoop flag is also set to be able to distinguish snoop packets that came from a downstream cache, rather than snoop packets from neighbouring caches.
Definition at line 701 of file packet.hh.
References EXPRESS_SNOOP, flags, and gem5::Flags< T >::set().
Referenced by gem5::Cache::handleSnoop(), gem5::Cache::isCachedAbove(), gem5::Cache::recvTimingReq(), gem5::CoherentXBar::recvTimingReq(), and gem5::Cache::sendMSHRQueuePacket().
|
inline |
Definition at line 1086 of file packet.hh.
References cmd, gem5::MemCmd::FunctionalReadError, gem5::MemCmd::FunctionalWriteError, and isWrite().
Referenced by gem5::ruby::RubyPort::MemResponsePort::recvFunctional().
|
inline |
On fills, the hasSharers flag is used by the caches in combination with the cacheResponding flag, as clarified above.
If the hasSharers flag is not set, the packet is passing writable. Thus, a response from a memory passes the line as writable by default.
The hasSharers flag is also used by upstream caches to inform a downstream cache that they have the block (by calling setHasSharers on snoop request packets that hit in upstream cachs tags or MSHRs). If the snoop packet has sharers, a downstream cache is prevented from passing a dirty line upwards if it was not explicitly asked for a writable copy. See Cache::satisfyCpuSideRequest.
The hasSharers flag is also used on writebacks, in combination with the WritbackClean or WritebackDirty commands, to allocate the block downstream either as:
command hasSharers state WritebackDirty false Modified WritebackDirty true Owned WritebackClean false Exclusive WritebackClean true Shared
Definition at line 685 of file packet.hh.
References flags, HAS_SHARERS, and gem5::Flags< T >::set().
Referenced by gem5::Cache::createMissPacket(), gem5::Cache::handleSnoop(), gem5::MSHR::handleSnoop(), gem5::Cache::recvTimingSnoopReq(), gem5::Cache::satisfyRequest(), gem5::BaseCache::writebackBlk(), and gem5::BaseCache::writecleanBlk().
void gem5::Packet::setHtmTransactional | ( | uint64_t | val | ) |
Stipulates that this packet/request originates in the CPU executing in transactional mode, i.e.
within a transaction.
Definition at line 516 of file packet.cc.
References flags, FROM_TRANSACTION, htmTransactionUid, and gem5::Flags< T >::set().
Referenced by gem5::TimingSimpleCPU::completeDataAccess(), gem5::o3::CPU::htmSendAbortSignal(), Packet(), gem5::o3::LSQUnit::read(), gem5::TimingSimpleCPU::sendData(), and gem5::TimingSimpleCPU::sendSplitData().
void gem5::Packet::setHtmTransactionFailedInCache | ( | const HtmCacheFailure | ret_code | ) |
Stipulates that this packet/request has returned from the cache hierarchy in a failed transaction.
The core is notified like this.
Definition at line 493 of file packet.cc.
References FAILS_TRANSACTION, flags, htmReturnReason, gem5::NO_FAIL, and gem5::Flags< T >::set().
Referenced by gem5::o3::LSQUnit::completeDataAccess(), gem5::TimingSimpleCPU::completeDataAccess(), makeHtmTransactionalReqResponse(), and Packet().
|
inline |
Set the value in the data pointer to v as little endian.
Definition at line 108 of file packet_access.hh.
References gem5::htole(), setRaw(), and gem5::ArmISA::v.
Referenced by gem5::CopyEngine::CopyEngineChannel::channelRead(), gem5::ArmISA::MMU::finalizePhysical(), gem5::X86ISA::TLB::finalizePhysical(), gem5::A9SCU::read(), gem5::AmbaFake::read(), gem5::CopyEngine::read(), gem5::CpuLocalTimer::Timer::read(), gem5::EnergyCtrl::read(), gem5::Gicv2m::read(), gem5::HDLcd::read(), gem5::IGbE::read(), gem5::IsaFake::read(), gem5::MmioVirtIO::read(), gem5::NoMaliGpu::read(), gem5::NSGigE::read(), gem5::PciVirtIO::read(), gem5::RealViewCtrl::read(), gem5::RiscvISA::MmioVirtIO::read(), gem5::sinic::Device::read(), gem5::Sp804::Timer::read(), gem5::UFSHostDevice::read(), gem5::X86ISA::Cmos::read(), gem5::X86ISA::I8042::read(), gem5::X86ISA::I82094AA::read(), gem5::X86ISA::I8254::read(), gem5::X86ISA::I8259::read(), gem5::X86ISA::Speaker::read(), gem5::AMDGPUDevice::readConfig(), gem5::PciDevice::readConfig(), gem5::SMMUv3::readControl(), gem5::GicV2::readCpu(), gem5::VGic::readCtrl(), gem5::GicV2::readDistributor(), gem5::AMDGPUGfx::readMMIO(), gem5::AMDGPUNbio::readMMIO(), gem5::AMDGPUVM::readMMIO(), gem5::VGic::readVCpu(), set(), gem5::RiscvISA::Walker::WalkerState::stepWalk(), and gem5::X86ISA::Walker::WalkerState::stepWalk().
|
inline |
Set the value in the data pointer to v without byte swapping.
Definition at line 61 of file packet_access.hh.
References data, DYNAMIC_DATA, flags, gem5::Flags< T >::isSet(), size, STATIC_DATA, and gem5::ArmISA::v.
Referenced by gem5::X86ISA::buildIntPacket(), gem5::I2CBus::read(), gem5::MmDisk::read(), setBE(), and setLE().
|
inline |
On responding to a snoop request (which only happens for Modified or Owned lines), make sure that we can transform an Owned response to a Modified one.
If this flag is not set, the responding cache had the line in the Owned state, and there are possibly other Shared copies in the memory system. A downstream cache helps in orchestrating the invalidation of these copies by sending out the appropriate express snoops.
Definition at line 713 of file packet.hh.
References cacheResponding(), flags, RESPONDER_HAD_WRITABLE, responderHadWritable(), and gem5::Flags< T >::set().
Referenced by gem5::Cache::handleSnoop(), gem5::MSHR::handleSnoop(), and gem5::Cache::recvTimingSnoopReq().
|
inline |
Set when a request hits in a cache and the cache is not going to respond.
This is used by the crossbar to coordinate responses for cache maintenance operations.
Definition at line 749 of file packet.hh.
References cmd, flags, gem5::MemCmd::isClean(), gem5::Flags< T >::isSet(), SATISFIED, and gem5::Flags< T >::set().
Referenced by gem5::Cache::handleSnoop(), gem5::MSHR::handleSnoop(), gem5::BaseCache::recvAtomic(), and gem5::BaseCache::sendMSHRQueuePacket().
|
inline |
Definition at line 1098 of file packet.hh.
References flags, gem5::Flags< T >::isSet(), gem5::Flags< T >::set(), size, and VALID_SIZE.
|
inline |
Definition at line 757 of file packet.hh.
References flags, gem5::Flags< T >::set(), and SUPPRESS_FUNC_ERROR.
Referenced by gem5::Shader::doFunctionalAccess(), and gem5::MemTest::tick().
void gem5::Packet::setUintX | ( | uint64_t | w, |
ByteOrder | endian ) |
Set the value in the word w after truncating it to the length of the packet and then byteswapping it to the desired endianness.
Definition at line 361 of file packet.cc.
References getPtr(), getSize(), panic_if, gem5::setUintX(), and gem5::MipsISA::w.
Referenced by gem5::FVPBasePwrCtrl::read(), gem5::GenericTimerFrame::read(), gem5::GenericTimerMem::read(), gem5::GenericWatchdog::read(), gem5::Gicv3::read(), gem5::Gicv3Its::read(), gem5::LupioBLK::read(), gem5::LupioIPI::read(), gem5::LupioPIC::read(), gem5::LupioRNG::read(), gem5::LupioSYS::read(), gem5::LupioTMR::read(), gem5::LupioTTY::read(), gem5::memory::CfiMemory::read(), gem5::MHU::read(), gem5::Pl011::read(), gem5::PL031::read(), gem5::Pl050::read(), gem5::Pl111::read(), gem5::SimpleUart::read(), gem5::Sp805::read(), gem5::AMDGPUDevice::readFrame(), gem5::AMDGPUNbio::readFrame(), gem5::AMDMMIOReader::readFromTrace(), gem5::AmbaDevice::readId(), and gem5::AMDGPUDevice::readROM().
|
inline |
A writeback/writeclean cmd gets propagated further downstream by the receiver when the flag is set.
Definition at line 735 of file packet.hh.
References cmd, flags, gem5::MemCmd::isEviction(), gem5::MemCmd::isWrite(), gem5::Flags< T >::set(), WRITE_THROUGH, and gem5::MemCmd::WriteClean.
Referenced by gem5::BaseCache::writecleanBlk().
|
inline |
Definition at line 758 of file packet.hh.
References flags, gem5::Flags< T >::isSet(), and SUPPRESS_FUNC_ERROR.
Referenced by gem5::MemTest::completeRequest(), and gem5::ruby::RubyPort::MemResponsePort::recvFunctional().
|
inline |
Check a functional request against a memory value stored in another packet (i.e.
an in-transit request or response). Returns true if the current packet is a read, and the other packet provides the data, which is then copied to the current packet. If the current packet is a write, and the other packet intersects this one, then we update the data accordingly.
Definition at line 1399 of file packet.hh.
References _isSecure, getAddr(), getPtr(), getSize(), hasData(), isMaskedWrite(), isSecure(), trySatisfyFunctional(), and warn.
Referenced by gem5::BaseCache::functionalAccess(), gem5::ruby::SequencerRequest::functionalWrite(), gem5::Bridge::BridgeResponsePort::recvFunctional(), gem5::memory::CfiMemory::recvFunctional(), gem5::memory::DRAMSim2::recvFunctional(), gem5::memory::DRAMsim3::recvFunctional(), gem5::memory::SimpleMemory::recvFunctional(), gem5::SerialLink::SerialLinkResponsePort::recvFunctional(), gem5::Bridge::BridgeRequestPort::trySatisfyFunctional(), gem5::MSHR::TargetList::trySatisfyFunctional(), gem5::MSHR::trySatisfyFunctional(), trySatisfyFunctional(), gem5::PacketQueue::trySatisfyFunctional(), gem5::SerialLink::SerialLinkRequestPort::trySatisfyFunctional(), gem5::WriteQueueEntry::TargetList::trySatisfyFunctional(), and gem5::WriteQueueEntry::trySatisfyFunctional().
bool gem5::Packet::trySatisfyFunctional | ( | Printable * | obj, |
Addr | base, | ||
bool | is_secure, | ||
int | size, | ||
uint8_t * | _data ) |
Check a functional request against a memory value represented by a base/size pair and an associated data array.
If the current packet is a read, it may be satisfied by the memory value. If the current packet is a write, it may update the memory value.
Definition at line 249 of file packet.cc.
References _isSecure, addr, bytesValid, cmdString(), getAddr(), getConstPtr(), getPtr(), getSize(), gem5::ArmISA::i, isPrint(), isRead(), isWrite(), panic, gem5::safe_cast(), senderState, and size.
|
inline |
Copy data from the packet to the memory at the provided pointer.
p | Pointer to which data will be copied. |
Definition at line 1322 of file packet.hh.
References gem5::X86ISA::base, getConstPtr(), getSize(), gem5::ArmISA::i, isMaskedWrite(), gem5::MipsISA::p, and req.
Referenced by gem5::memory::AbstractMemory::access(), gem5::BaseCache::cmpAndSwap(), gem5::memory::AbstractMemory::functionalAccess(), gem5::ruby::Sequencer::hitCallback(), gem5::MemCheckerMonitor::recvTimingReq(), gem5::MemCheckerMonitor::recvTimingResp(), gem5::ruby::DataBlock::setData(), gem5::X86ISA::Interrupts::write(), gem5::VirtIODeviceBase::writeConfigBlob(), and writeDataToBlock().
|
inline |
Copy data from the packet to the provided block pointer, which is aligned to the given block size.
blk_data | Pointer to block to which data will be copied. |
blkSize | Block size in bytes. |
Definition at line 1346 of file packet.hh.
References getOffset(), and writeData().
Referenced by gem5::SimpleCache::accessFunctional(), gem5::SimpleCache::insert(), and gem5::BaseCache::updateBlockData().
|
inline |
Definition at line 742 of file packet.hh.
References flags, gem5::Flags< T >::isSet(), and WRITE_THROUGH.
Referenced by gem5::BaseCache::access().
|
private |
True if the request targets the secure memory space.
Definition at line 394 of file packet.hh.
Referenced by isSecure(), Packet(), Packet(), trySatisfyFunctional(), and trySatisfyFunctional().
|
private |
Definition at line 405 of file packet.hh.
Referenced by qosValue(), and qosValue().
|
private |
The address of the request.
This address could be virtual or physical, depending on the system configuration.
Definition at line 391 of file packet.hh.
Referenced by getAddr(), gem5::initMemReqHelper(), matchAddr(), matchBlockAddr(), Packet(), Packet(), setAddr(), and trySatisfyFunctional().
|
private |
Track the bytes found that satisfy a functional read.
Definition at line 402 of file packet.hh.
Referenced by trySatisfyFunctional().
MemCmd gem5::Packet::cmd |
The command field of the packet.
Definition at line 372 of file packet.hh.
Referenced by gem5::BaseCache::access(), gem5::memory::AbstractMemory::access(), gem5::NoncoherentCache::access(), gem5::MSHR::allocate(), gem5::WriteQueueEntry::allocate(), gem5::BaseCache::allocateMissBuffer(), gem5::MSHR::allocateTarget(), gem5::BaseCache::allocateWriteBuffer(), gem5::TimingSimpleCPU::buildSplitPacket(), cmdString(), cmdToIndex(), gem5::ruby::GPUCoalescer::coalescePacket(), convertLlToRead(), convertScToWrite(), copyError(), gem5::Cache::createMissPacket(), gem5::Cache::doTimingSupplyResponse(), gem5::Cache::doWritebacks(), gem5::Cache::doWritebacksAtomic(), gem5::MSHR::extractServiceableTargets(), gem5::FetchUnit::fetch(), gem5::FetchUnit::FetchBufDesc::fetchDone(), gem5::CoherentXBar::forwardAtomic(), fromCache(), gem5::Cache::handleAtomicReqMiss(), gem5::NoncoherentCache::handleAtomicReqMiss(), gem5::BaseCache::handleFill(), gem5::ComputeUnit::DataPort::handleResponse(), gem5::MSHR::handleSnoop(), gem5::BaseCache::handleTimingReqHit(), gem5::BaseCache::handleTimingReqMiss(), gem5::Cache::handleTimingReqMiss(), hasData(), hasRespData(), gem5::DmaThread::hitCallback(), gem5::GpuWavefront::hitCallback(), gem5::ruby::RubyPort::MemResponsePort::hitCallback(), gem5::ruby::Sequencer::insertRequest(), gem5::Cache::isCachedAbove(), isClean(), isCleanEviction(), isCleanInvalidateRequest(), isDemand(), isError(), isEviction(), isFlush(), isInvalidate(), isLLSC(), isLockedRMW(), isMaskedWrite(), isPrint(), isRead(), isRequest(), isResponse(), gem5::ruby::VIPERCoalescer::issueRequest(), isUpgrade(), isWholeLineWrite(), isWrite(), isWriteback(), makeHtmTransactionalReqResponse(), gem5::ruby::GPUCoalescer::makeRequest(), gem5::ruby::Sequencer::makeRequest(), gem5::ruby::VIPERCoalescer::makeRequest(), makeResponse(), mustCheckAbove(), needsResponse(), needsWritable(), gem5::prefetch::BOP::notifyFill(), gem5::ruby::RubyPrefetcherProxy::notifyPfFill(), gem5::prefetch::Base::observeAccess(), gem5::prefetch::Base::probeNotify(), gem5::ComputeUnit::DataPort::processMemRespEvent(), gem5::Cache::promoteWholeLineWrites(), gem5::Clint::read(), gem5::LupioRTC::read(), gem5::Plic::read(), gem5::ruby::RubyPort::MemResponsePort::recvAtomic(), gem5::X86ISA::IntResponsePort< Device >::recvAtomic(), gem5::CoherentXBar::recvAtomicBackdoor(), gem5::CoherentXBar::recvAtomicSnoop(), gem5::X86ISA::Interrupts::recvMessage(), gem5::BaseCache::recvTimingReq(), gem5::CoherentXBar::recvTimingReq(), gem5::ruby::RubyPort::MemResponsePort::recvTimingReq(), gem5::BaseCache::recvTimingResp(), gem5::ComputeUnit::DTLBPort::recvTimingResp(), gem5::ComputeUnit::ITLBPort::recvTimingResp(), gem5::ComputeUnit::ScalarDTLBPort::recvTimingResp(), gem5::minor::LSQ::recvTimingResp(), gem5::NoncoherentCache::recvTimingResp(), gem5::Cache::recvTimingSnoopReq(), gem5::Cache::recvTimingSnoopResp(), gem5::replaceUpgrade(), gem5::BaseCache::satisfyRequest(), gem5::Cache::satisfyRequest(), gem5::Cache::sendMSHRQueuePacket(), gem5::ComputeUnit::sendRequest(), gem5::Cache::serviceMSHRTargets(), gem5::NoncoherentCache::serviceMSHRTargets(), setBadAddress(), setBadCommand(), setFunctionalResponseStatus(), setSatisfied(), setWriteThrough(), gem5::RiscvISA::Walker::WalkerState::stepWalk(), gem5::X86ISA::Walker::WalkerState::stepWalk(), and gem5::MSHR::TargetList::updateFlags().
|
private |
A pointer to the data being transferred.
It can be different sizes at each level of the hierarchy so it belongs to the packet, not request. This may or may not be populated when a responder receives the packet. If not populated memory should be allocated.
Definition at line 387 of file packet.hh.
Referenced by allocate(), dataDynamic(), dataStatic(), dataStaticConst(), deleteData(), getConstPtr(), getPtr(), getRaw(), Packet(), gem5::SysBridge::SysBridgeSourcePort::recvTimingReq(), gem5::SysBridge::SysBridgeTargetPort::recvTimingResp(), gem5::SysBridge::SysBridgeSourcePort::recvTimingSnoopResp(), and setRaw().
|
private |
Definition at line 366 of file packet.hh.
Referenced by allocate(), cacheResponding(), clearBlockCached(), clearWriteThrough(), copyResponderFlags(), dataDynamic(), dataStatic(), dataStaticConst(), deleteData(), getAddr(), getConstPtr(), getHtmTransactionUid(), getPtr(), getRaw(), getSize(), hasSharers(), htmTransactionFailedInCache(), isBlockCached(), isExpressSnoop(), isHtmTransactional(), isSecure(), makeHtmTransactionalReqResponse(), makeResponse(), Packet(), Packet(), Packet(), responderHadWritable(), satisfied(), setAddr(), setBlockCached(), setCacheResponding(), setData(), setExpressSnoop(), setHasSharers(), setHtmTransactional(), setHtmTransactionFailedInCache(), setRaw(), setResponderHadWritable(), setSatisfied(), setSize(), setSuppressFuncError(), setWriteThrough(), suppressFuncError(), and writeThrough().
uint32_t gem5::Packet::headerDelay |
The extra delay from seeing the packet until the header is transmitted.
This delay is used to communicate the crossbar forwarding latency to the neighbouring object (e.g. a cache) that actually makes the packet wait. As the delay is relative, a 32-bit unsigned should be sufficient.
Definition at line 431 of file packet.hh.
Referenced by gem5::BaseCache::access(), gem5::memory::DRAMSim2::accessAndRespond(), gem5::memory::DRAMsim3::accessAndRespond(), gem5::memory::MemCtrl::accessAndRespond(), gem5::SMMUv3DeviceInterface::atsRecvTimingReq(), gem5::SMMUv3DeviceInterface::atsRecvTimingResp(), gem5::Cache::doTimingSupplyResponse(), gem5::BaseCache::handleFill(), gem5::Cache::handleSnoop(), gem5::BaseCache::handleTimingReqHit(), gem5::BaseCache::handleUncacheableWriteResp(), gem5::StubSlavePort::processResponseEvent(), gem5::GenericPciHost::read(), gem5::PioPort< Device >::recvAtomic(), gem5::SMMUControlPort::recvAtomic(), gem5::X86ISA::IntResponsePort< Device >::recvAtomic(), gem5::RiscvISA::Walker::WalkerState::recvPacket(), gem5::X86ISA::Walker::WalkerState::recvPacket(), gem5::BaseCache::recvTimingReq(), gem5::Bridge::BridgeResponsePort::recvTimingReq(), gem5::Cache::recvTimingReq(), gem5::CoherentXBar::recvTimingReq(), gem5::HMCController::recvTimingReq(), gem5::MemDelay::ResponsePort::recvTimingReq(), gem5::memory::CfiMemory::recvTimingReq(), gem5::memory::SimpleMemory::recvTimingReq(), gem5::NoncoherentXBar::recvTimingReq(), gem5::SerialLink::SerialLinkResponsePort::recvTimingReq(), gem5::SMMUv3DeviceInterface::recvTimingReq(), sc_gem5::Gem5ToTlmBridge< BITWIDTH >::recvTimingReq(), gem5::BaseCache::recvTimingResp(), gem5::Bridge::BridgeRequestPort::recvTimingResp(), gem5::CoherentXBar::recvTimingResp(), gem5::Gicv3Its::recvTimingResp(), gem5::MemDelay::RequestPort::recvTimingResp(), gem5::NoncoherentXBar::recvTimingResp(), gem5::SerialLink::SerialLinkRequestPort::recvTimingResp(), gem5::SMMUv3::recvTimingResp(), sc_gem5::TlmToGem5Bridge< BITWIDTH >::recvTimingResp(), gem5::CoherentXBar::recvTimingSnoopReq(), gem5::Cache::recvTimingSnoopResp(), gem5::CoherentXBar::recvTimingSnoopResp(), gem5::SMMUv3::runProcessTiming(), gem5::Cache::serviceMSHRTargets(), gem5::NoncoherentCache::serviceMSHRTargets(), gem5::SMMUv3::tableWalkRecvTimingResp(), and gem5::GenericPciHost::write().
|
private |
Holds the return status of the transaction.
The default case will be NO_FAIL, otherwise this will specify the reason for the transaction's failure in the memory subsystem.
Definition at line 414 of file packet.hh.
Referenced by getHtmTransactionFailedInCacheRC(), and setHtmTransactionFailedInCache().
|
private |
A global unique identifier of the transaction.
This is used for correctness/debugging only.
Definition at line 420 of file packet.hh.
Referenced by getHtmTransactionUid(), and setHtmTransactional().
const PacketId gem5::Packet::id |
Definition at line 374 of file packet.hh.
Referenced by gem5::Cache::handleSnoop(), gem5::MSHR::handleSnoop(), gem5::BaseCache::recvAtomic(), gem5::CoherentXBar::recvAtomicBackdoor(), gem5::CoherentXBar::recvTimingReq(), and gem5::BaseCache::sendMSHRQueuePacket().
uint32_t gem5::Packet::payloadDelay |
The extra pipelining delay from seeing the packet until the end of payload is transmitted by the component that provided it (if any).
This includes the header delay. Similar to the header delay, this is used to make up for the fact that the crossbar does not make the packet wait. As the delay is relative, a 32-bit unsigned should be sufficient.
Definition at line 449 of file packet.hh.
Referenced by gem5::BaseCache::access(), gem5::memory::DRAMSim2::accessAndRespond(), gem5::memory::DRAMsim3::accessAndRespond(), gem5::memory::MemCtrl::accessAndRespond(), gem5::BaseCache::allocateWriteBuffer(), gem5::SMMUv3DeviceInterface::atsRecvTimingReq(), gem5::SMMUv3DeviceInterface::atsRecvTimingResp(), gem5::Cache::doTimingSupplyResponse(), gem5::BaseCache::handleFill(), gem5::Cache::handleSnoop(), gem5::BaseCache::handleTimingReqHit(), gem5::BaseCache::handleUncacheableWriteResp(), gem5::StubSlavePort::processResponseEvent(), gem5::GenericPciHost::read(), gem5::PioPort< Device >::recvAtomic(), gem5::SMMUControlPort::recvAtomic(), gem5::X86ISA::IntResponsePort< Device >::recvAtomic(), gem5::CoherentXBar::recvAtomicBackdoor(), gem5::NoncoherentXBar::recvAtomicBackdoor(), gem5::CoherentXBar::recvAtomicSnoop(), gem5::RiscvISA::Walker::WalkerState::recvPacket(), gem5::X86ISA::Walker::WalkerState::recvPacket(), gem5::BaseCache::recvTimingReq(), gem5::Bridge::BridgeResponsePort::recvTimingReq(), gem5::Cache::recvTimingReq(), gem5::CoherentXBar::recvTimingReq(), gem5::HMCController::recvTimingReq(), gem5::MemDelay::ResponsePort::recvTimingReq(), gem5::memory::CfiMemory::recvTimingReq(), gem5::memory::SimpleMemory::recvTimingReq(), gem5::NoncoherentXBar::recvTimingReq(), gem5::SerialLink::SerialLinkResponsePort::recvTimingReq(), gem5::SMMUv3DeviceInterface::recvTimingReq(), sc_gem5::Gem5ToTlmBridge< BITWIDTH >::recvTimingReq(), gem5::BaseCache::recvTimingResp(), gem5::Bridge::BridgeRequestPort::recvTimingResp(), gem5::CoherentXBar::recvTimingResp(), gem5::Gicv3Its::recvTimingResp(), gem5::MemDelay::RequestPort::recvTimingResp(), gem5::NoncoherentXBar::recvTimingResp(), gem5::SerialLink::SerialLinkRequestPort::recvTimingResp(), gem5::SMMUv3::recvTimingResp(), sc_gem5::TlmToGem5Bridge< BITWIDTH >::recvTimingResp(), gem5::Cache::recvTimingSnoopResp(), gem5::CoherentXBar::recvTimingSnoopResp(), gem5::SMMUv3::runProcessTiming(), gem5::Cache::serviceMSHRTargets(), gem5::NoncoherentCache::serviceMSHRTargets(), gem5::SMMUv3::tableWalkRecvTimingResp(), gem5::GenericPciHost::write(), gem5::BaseCache::writebackBlk(), and gem5::BaseCache::writecleanBlk().
RequestPtr gem5::Packet::req |
A pointer to the original request.
Definition at line 377 of file packet.hh.
Referenced by gem5::BaseCache::access(), gem5::Cache::access(), gem5::memory::AbstractMemory::access(), gem5::SimpleCache::accessTiming(), gem5::TraceCPU::ElasticDataGen::addToSortedReadyList(), gem5::minor::ForwardLineData::adoptPacketData(), gem5::MSHR::allocate(), gem5::WriteQueueEntry::allocate(), gem5::MSHR::allocateTarget(), gem5::BaseTrafficGen::allocateWaitingRespSlot(), gem5::TLBCoalescer::canCoalesce(), gem5::VegaTLBCoalescer::canCoalesce(), gem5::minor::LSQ::StoreBuffer::canForwardDataToLoad(), gem5::memory::AbstractMemory::checkLockedAddrList(), gem5::CacheBlk::checkWrite(), gem5::BaseCache::cmpAndSwap(), gem5::ruby::GPUCoalescer::coalescePacket(), gem5::o3::DynInst::completeAcc(), gem5::TimingSimpleCPU::completeDataAccess(), gem5::TimingSimpleCPU::completeIfetch(), gem5::TraceCPU::ElasticDataGen::completeMemAccess(), gem5::GarnetSyntheticTraffic::completeRequest(), gem5::MemTest::completeRequest(), gem5::Cache::createMissPacket(), gem5::NoncoherentCache::createMissPacket(), gem5::GUPSGen::createNextReq(), gem5::prefetch::Queued::DeferredPacket::createPkt(), gem5::prefetch::Queued::createPrefetchRequest(), createRead(), createWrite(), gem5::Shader::doFunctionalAccess(), gem5::SparcISA::TLB::doMmuRegRead(), gem5::SparcISA::TLB::doMmuRegWrite(), gem5::AddressMonitor::doMonitor(), gem5::Cache::doTimingSupplyResponse(), gem5::ruby::CacheRecorder::enqueueNextFetchRequest(), gem5::ruby::CacheRecorder::enqueueNextFlushRequest(), gem5::TraceCPU::ElasticDataGen::execute(), gem5::FetchUnit::fetch(), gem5::FetchUnit::FetchBufDesc::fetchDone(), gem5::SMMUTranslRequest::fromPacket(), getAtomicOp(), gem5::BaseCache::getNextQueueEntry(), gem5::ruby::RubyRequest::getRequestPtr(), gem5::ruby::GPUCoalescer::getRequestType(), gem5::replacement_policy::SHiPPC::getSignature(), gem5::Cache::handleAtomicReqMiss(), gem5::VegaISA::GpuTLB::handleFuncTranslationReturn(), gem5::X86ISA::GpuTLB::handleFuncTranslationReturn(), gem5::o3::LSQ::SingleDataRequest::handleLocalAccess(), gem5::TimingSimpleCPU::handleReadPacket(), gem5::ComputeUnit::DataPort::handleResponse(), gem5::ComputeUnit::ScalarDataPort::handleResponse(), gem5::GUPSGen::handleResponse(), gem5::SimpleMemobj::handleResponse(), gem5::ArmISA::TableWalker::Port::handleRespPacket(), gem5::DmaPort::handleRespPacket(), gem5::Cache::handleSnoop(), gem5::MSHR::handleSnoop(), gem5::BaseCache::handleTimingReqHit(), gem5::Cache::handleTimingReqHit(), gem5::BaseCache::handleTimingReqMiss(), gem5::Cache::handleTimingReqMiss(), gem5::VegaISA::GpuTLB::handleTranslationReturn(), gem5::X86ISA::GpuTLB::handleTranslationReturn(), gem5::TimingSimpleCPU::handleWritePacket(), gem5::ruby::RubyPort::MemResponsePort::hitCallback(), gem5::ruby::Sequencer::hitCallback(), gem5::ruby::HTMSequencer::htmCallback(), gem5::ruby::htmCmdToRubyRequestType(), gem5::BaseCache::incHitCount(), gem5::BaseCache::incMissCount(), gem5::FetchUnit::initiateFetch(), gem5::ComputeUnit::injectGlobalMemFence(), gem5::prefetch::Queued::insert(), gem5::BaseTags::insertBlock(), gem5::ruby::UncoalescedTable::insertPacket(), gem5::ruby::UncoalescedTable::insertReqType(), gem5::ruby::HTMSequencer::insertRequest(), gem5::ruby::VIPERCoalescer::invTCC(), isAtomicOp(), gem5::CoherentXBar::isDestination(), isGLCSet(), isMaskedWrite(), isSLCSet(), gem5::ruby::Sequencer::issueRequest(), gem5::ruby::VIPERCoalescer::issueRequest(), gem5::VegaISA::GpuTLB::issueTLBLookup(), gem5::X86ISA::GpuTLB::issueTLBLookup(), gem5::SnoopFilter::lookupRequest(), gem5::SnoopFilter::lookupSnoop(), gem5::ItsTranslation::main(), makeReadCmd(), gem5::ruby::DMASequencer::makeRequest(), gem5::ruby::GPUCoalescer::makeRequest(), gem5::ruby::Sequencer::makeRequest(), gem5::ruby::VIPERCoalescer::makeRequest(), makeWriteCmd(), gem5::BaseCPU::mwait(), gem5::prefetch::Base::observeAccess(), gem5::AMBA::orderId(), Packet(), Packet(), sc_gem5::packet2payload(), gem5::VegaISA::GpuTLB::pagingProtectionChecks(), gem5::X86ISA::GpuTLB::pagingProtectionChecks(), gem5::prefetch::Base::PrefetchInfo::PrefetchInfo(), print(), gem5::prefetch::Base::probeNotify(), gem5::o3::Fetch::processCacheCompletion(), gem5::FetchStage::processFetchReturn(), gem5::FetchUnit::processFetchReturn(), gem5::ComputeUnit::DataPort::processMemReqEvent(), gem5::ComputeUnit::DataPort::processMemRespEvent(), gem5::memory::qos::MemSinkCtrl::processNextReqEvent(), gem5::SpatterGen::processNextSendEvent(), gem5::TLBCoalescer::processProbeTLBEvent(), gem5::VegaTLBCoalescer::processProbeTLBEvent(), gem5::MSHR::promoteWritable(), gem5::CpuLocalTimer::read(), gem5::Gicv3::read(), gem5::o3::LSQUnit::read(), gem5::sinic::Device::read(), gem5::GicV2::readCpu(), gem5::VGic::readCtrl(), gem5::GicV2::readDistributor(), gem5::Iob::readJBus(), gem5::mpam::MSC::readPacketPartitionID(), gem5::VGic::readVCpu(), gem5::BaseCache::recvAtomic(), gem5::Cache::recvAtomic(), gem5::TLBCoalescer::CpuSidePort::recvFunctional(), gem5::VegaISA::GpuTLB::CpuSidePort::recvFunctional(), gem5::VegaTLBCoalescer::CpuSidePort::recvFunctional(), gem5::X86ISA::GpuTLB::CpuSidePort::recvFunctional(), gem5::ComputeUnit::DataPort::recvReqRetry(), gem5::ComputeUnit::DTLBPort::recvReqRetry(), gem5::ComputeUnit::ITLBPort::recvReqRetry(), gem5::ComputeUnit::SQCPort::recvReqRetry(), gem5::o3::Fetch::recvReqRetry(), gem5::CoherentXBar::recvTimingReq(), gem5::HMCController::recvTimingReq(), gem5::MemCheckerMonitor::recvTimingReq(), gem5::memory::qos::MemSinkCtrl::recvTimingReq(), gem5::NoncoherentXBar::recvTimingReq(), gem5::ruby::RubyPort::MemResponsePort::recvTimingReq(), gem5::VegaISA::GpuTLB::CpuSidePort::recvTimingReq(), gem5::ArmISA::TableWalker::Port::recvTimingResp(), gem5::BaseCache::recvTimingResp(), gem5::BaseTrafficGen::recvTimingResp(), gem5::CoherentXBar::recvTimingResp(), gem5::ComputeUnit::DTLBPort::recvTimingResp(), gem5::ComputeUnit::ITLBPort::recvTimingResp(), gem5::ComputeUnit::ScalarDTLBPort::recvTimingResp(), gem5::DmaPort::recvTimingResp(), gem5::MemCheckerMonitor::recvTimingResp(), gem5::NoncoherentXBar::recvTimingResp(), gem5::o3::Fetch::IcachePort::recvTimingResp(), gem5::SpatterGen::recvTimingResp(), gem5::VegaISA::GpuTLB::MemSidePort::recvTimingResp(), gem5::X86ISA::GpuTLB::MemSidePort::recvTimingResp(), gem5::Cache::recvTimingSnoopReq(), gem5::CoherentXBar::recvTimingSnoopReq(), gem5::o3::LSQ::recvTimingSnoopReq(), gem5::TimingSimpleCPU::DcachePort::recvTimingSnoopReq(), gem5::Cache::recvTimingSnoopResp(), gem5::CoherentXBar::recvTimingSnoopResp(), gem5::SysBridge::BridgingPort::replaceReqID(), requestorId(), gem5::SysBridge::BridgingPort::restoreReqID(), gem5::SysBridge::BridgingPort::restoreReqID(), gem5::minor::LSQ::SplitDataRequest::retireResponse(), gem5::ruby::HTMSequencer::rubyHtmCallback(), gem5::ruby::RubyRequest::RubyRequest(), gem5::ruby::RubyRequest::RubyRequest(), gem5::ruby::RubyRequest::RubyRequest(), gem5::ruby::RubyRequest::RubyRequest(), gem5::memory::qos::MemCtrl::schedule(), gem5::memory::qos::Policy::schedule(), gem5::BaseCache::sendMSHRQueuePacket(), gem5::Cache::sendMSHRQueuePacket(), gem5::GUPSGen::sendNextReq(), gem5::ComputeUnit::sendRequest(), gem5::ComputeUnit::sendScalarRequest(), gem5::ComputeUnit::LDSPort::sendTimingReq(), gem5::Cache::serviceMSHRTargets(), gem5::NoncoherentCache::serviceMSHRTargets(), gem5::RiscvISA::Walker::WalkerState::stepWalk(), gem5::VegaISA::Walker::WalkerState::stepWalk(), gem5::X86ISA::Walker::WalkerState::stepWalk(), gem5::ruby::tlbiCmdToRubyRequestType(), gem5::CacheBlk::trackLoadLocked(), gem5::memory::AbstractMemory::trackLoadLocked(), gem5::VegaISA::GpuTLB::translationReturn(), gem5::X86ISA::GpuTLB::translationReturn(), gem5::minor::LSQ::tryToSend(), gem5::BaseTrafficGen::update(), gem5::MSHR::updateLockedRMWReadTarget(), gem5::TLBCoalescer::updatePhysAddresses(), gem5::VegaTLBCoalescer::updatePhysAddresses(), gem5::SnoopFilter::updateResponse(), gem5::SnoopFilter::updateSnoopResponse(), gem5::MSHR::TargetList::updateWriteFlags(), gem5::VegaISA::GpuTLB::walkerResponse(), gem5::CpuLocalTimer::write(), gem5::Gicv3::write(), gem5::sinic::Device::write(), gem5::ruby::Sequencer::writeCallback(), gem5::GicV2::writeCpu(), gem5::VGic::writeCtrl(), writeData(), gem5::GicV2::writeDistributor(), gem5::AMDGPUDevice::writeDoorbell(), gem5::Iob::writeJBus(), gem5::memory::AbstractMemory::writeOK(), and gem5::VGic::writeVCpu().
SenderState* gem5::Packet::senderState |
This packet's sender state.
Devices should use dynamic_cast<> to cast to the state appropriate to the sender. The intent of this variable is to allow a device to attach extra information to a request. A response packet must return the sender state that was attached to the original request (even if a new packet is created).
Definition at line 545 of file packet.hh.
Referenced by gem5::ruby::PendingWriteInst::ackWriteCompletion(), gem5::o3::LSQ::SplitDataRequest::buildPackets(), gem5::TimingSimpleCPU::buildSplitPacket(), gem5::TLBCoalescer::canCoalesce(), gem5::VegaTLBCoalescer::canCoalesce(), gem5::TimingSimpleCPU::SplitFragmentSenderState::clearFromParent(), gem5::ruby::GPUCoalescer::coalescePacket(), gem5::o3::LSQ::completeDataAccess(), gem5::o3::LSQUnit::completeDataAccess(), gem5::TimingSimpleCPU::completeDataAccess(), gem5::LdsState::countBankConflicts(), gem5::ArmISA::TableWalker::Port::createPacket(), gem5::DmaPort::DmaReqState::createPacket(), gem5::FetchUnit::fetch(), findNextSenderState(), gem5::memory::AbstractMemory::functionalAccess(), gem5::Shader::functionalTLBAccess(), gem5::GarnetSyntheticTraffic::generatePkt(), gem5::ruby::GPUCoalescer::getDynInst(), gem5::LdsState::getDynInstr(), gem5::VegaISA::GpuTLB::handleFuncTranslationReturn(), gem5::X86ISA::GpuTLB::handleFuncTranslationReturn(), gem5::ComputeUnit::DataPort::handleResponse(), gem5::ComputeUnit::ScalarDataPort::handleResponse(), gem5::ArmISA::TableWalker::Port::handleRespPacket(), gem5::DmaPort::handleRespPacket(), gem5::BaseCache::handleTimingReqHit(), gem5::VegaISA::GpuTLB::handleTranslationReturn(), gem5::X86ISA::GpuTLB::handleTranslationReturn(), gem5::DmaThread::hitCallback(), gem5::GpuWavefront::hitCallback(), gem5::Check::initiateAction(), gem5::Check::initiateCheck(), gem5::FetchUnit::initiateFetch(), gem5::Check::initiateFlush(), gem5::Check::initiatePrefetch(), gem5::Cache::isCachedAbove(), gem5::GpuWavefront::issueAcquireOp(), gem5::GpuWavefront::issueAtomicOps(), gem5::DmaThread::issueLoadOps(), gem5::GpuWavefront::issueLoadOps(), gem5::DmaThread::issueStoreOps(), gem5::GpuWavefront::issueStoreOps(), gem5::VegaISA::GpuTLB::issueTLBLookup(), gem5::X86ISA::GpuTLB::issueTLBLookup(), gem5::ruby::VIPERCoalescer::makeWriteCompletePkts(), popLabel(), popSenderState(), gem5::RequestPort::printAddr(), gem5::LdsState::process(), gem5::FetchStage::processFetchReturn(), gem5::FetchUnit::processFetchReturn(), gem5::ComputeUnit::DataPort::processMemReqEvent(), gem5::ComputeUnit::DataPort::processMemRespEvent(), gem5::TLBCoalescer::processProbeTLBEvent(), gem5::VegaTLBCoalescer::processProbeTLBEvent(), pushLabel(), pushSenderState(), gem5::TLBCoalescer::CpuSidePort::recvFunctional(), gem5::VegaISA::GpuTLB::CpuSidePort::recvFunctional(), gem5::VegaTLBCoalescer::CpuSidePort::recvFunctional(), gem5::X86ISA::GpuTLB::CpuSidePort::recvFunctional(), gem5::TimingSimpleCPU::DcachePort::recvReqRetry(), gem5::TLBCoalescer::CpuSidePort::recvTimingReq(), gem5::VegaTLBCoalescer::CpuSidePort::recvTimingReq(), gem5::AddrMapper::recvTimingResp(), gem5::AMDGPUMemoryManager::GPUMemPort::recvTimingResp(), gem5::CommMonitor::recvTimingResp(), gem5::ComputeUnit::DTLBPort::recvTimingResp(), gem5::ComputeUnit::ITLBPort::recvTimingResp(), gem5::ComputeUnit::LDSPort::recvTimingResp(), gem5::ComputeUnit::ScalarDTLBPort::recvTimingResp(), gem5::ComputeUnit::SQCPort::recvTimingResp(), gem5::MemCheckerMonitor::recvTimingResp(), gem5::o3::LSQ::recvTimingResp(), gem5::o3::LSQ::SplitDataRequest::recvTimingResp(), gem5::o3::LSQUnit::recvTimingResp(), gem5::ProtocolTester::SeqPort::recvTimingResp(), gem5::ruby::AbstractController::recvTimingResp(), gem5::RubyTester::CpuPort::recvTimingResp(), gem5::Cache::sendMSHRQueuePacket(), gem5::ComputeUnit::sendRequest(), gem5::ComputeUnit::sendScalarRequest(), gem5::TimingSimpleCPU::sendSplitData(), gem5::ComputeUnit::LDSPort::sendTimingReq(), gem5::ComputeUnit::sendToLds(), gem5::VegaISA::GpuTLB::translationReturn(), gem5::X86ISA::GpuTLB::translationReturn(), trySatisfyFunctional(), gem5::o3::LSQUnit::trySendPacket(), gem5::TLBCoalescer::updatePhysAddresses(), gem5::VegaTLBCoalescer::updatePhysAddresses(), and gem5::VegaISA::GpuTLB::walkerResponse().
|
private |
The size of the request or transfer.
Definition at line 397 of file packet.hh.
Referenced by gem5::prefetch::Multi::getPacket(), getRaw(), getSize(), Packet(), Packet(), gem5::ComputeUnit::DataPort::recvReqRetry(), setRaw(), setSize(), and trySatisfyFunctional().
uint32_t gem5::Packet::snoopDelay |
Keep track of the extra delay incurred by snooping upwards before sending a request down the memory system.
This is used by the coherent crossbar to account for the additional request delay.
Definition at line 439 of file packet.hh.
Referenced by gem5::CoherentXBar::recvTimingReq(), gem5::Cache::recvTimingSnoopReq(), and gem5::CoherentXBar::recvTimingSnoopReq().