gem5 v24.0.0.0
|
ItsProcess is a base coroutine wrapper which is spawned by the Gicv3Its module when the latter needs to perform different actions, like translating a peripheral's MSI into an LPI (See derived ItsTranslation) or processing a Command from the ITS queue (ItsCommand). More...
#include <gic_v3_its.hh>
Public Types | |
using | DTE = Gicv3Its::DTE |
using | ITTE = Gicv3Its::ITTE |
using | CTE = Gicv3Its::CTE |
using | Coroutine = gem5::Coroutine<PacketPtr, ItsAction> |
using | Yield = Coroutine::CallerType |
Public Member Functions | |
ItsProcess (Gicv3Its &_its) | |
virtual | ~ItsProcess () |
const std::string | name () const |
Returns the Gicv3Its name. | |
ItsAction | run (PacketPtr pkt) |
Public Member Functions inherited from gem5::Packet::SenderState | |
SenderState () | |
virtual | ~SenderState () |
Protected Member Functions | |
void | reinit () |
virtual void | main (Yield &yield)=0 |
void | writeDeviceTable (Yield &yield, uint32_t device_id, DTE dte) |
void | writeIrqTranslationTable (Yield &yield, const Addr itt_base, uint32_t event_id, ITTE itte) |
void | writeIrqCollectionTable (Yield &yield, uint32_t collection_id, CTE cte) |
uint64_t | readDeviceTable (Yield &yield, uint32_t device_id) |
uint64_t | readIrqTranslationTable (Yield &yield, const Addr itt_base, uint32_t event_id) |
uint64_t | readIrqCollectionTable (Yield &yield, uint32_t collection_id) |
void | doRead (Yield &yield, Addr addr, void *ptr, size_t size) |
void | doWrite (Yield &yield, Addr addr, void *ptr, size_t size) |
void | terminate (Yield &yield) |
Protected Attributes | |
Gicv3Its & | its |
Private Attributes | |
std::unique_ptr< Coroutine > | coroutine |
Additional Inherited Members | |
Public Attributes inherited from gem5::Packet::SenderState | |
SenderState * | predecessor |
ItsProcess is a base coroutine wrapper which is spawned by the Gicv3Its module when the latter needs to perform different actions, like translating a peripheral's MSI into an LPI (See derived ItsTranslation) or processing a Command from the ITS queue (ItsCommand).
The action to take is implemented by the method:
virtual void main(Yield &yield) = 0; It's inheriting from Packet::SenderState since the generic process will be stopped (we are using coroutines) and sent with the packet to memory when doing table walks. When Gicv3Its receives a response, it will resume the coroutine from the point it stopped when yielding.
Definition at line 355 of file gic_v3_its.hh.
Definition at line 361 of file gic_v3_its.hh.
using gem5::ItsProcess::CTE = Gicv3Its::CTE |
Definition at line 360 of file gic_v3_its.hh.
using gem5::ItsProcess::DTE = Gicv3Its::DTE |
Definition at line 358 of file gic_v3_its.hh.
using gem5::ItsProcess::ITTE = Gicv3Its::ITTE |
Definition at line 359 of file gic_v3_its.hh.
Definition at line 362 of file gic_v3_its.hh.
gem5::ItsProcess::ItsProcess | ( | Gicv3Its & | _its | ) |
Definition at line 63 of file gic_v3_its.cc.
|
virtual |
Definition at line 68 of file gic_v3_its.cc.
Definition at line 94 of file gic_v3_its.cc.
References gem5::ArmISA::a, gem5::X86ISA::addr, gem5::context_switch_task_id::DMA, gem5::Coroutine< Arg, Ret >::CallerType::get(), gem5::Packet::getSize(), its, gem5::MemCmd::ReadReq, gem5::Gicv3Its::requestorId, gem5::SEND_REQ, and gem5::ItsAction::type.
Referenced by gem5::ItsCommand::readCommand(), readDeviceTable(), readIrqCollectionTable(), and readIrqTranslationTable().
Definition at line 118 of file gic_v3_its.cc.
References gem5::ArmISA::a, gem5::X86ISA::addr, gem5::context_switch_task_id::DMA, gem5::Coroutine< Arg, Ret >::CallerType::get(), gem5::Packet::getSize(), its, gem5::Gicv3Its::requestorId, gem5::SEND_REQ, gem5::ItsAction::type, and gem5::MemCmd::WriteReq.
Referenced by writeDeviceTable(), writeIrqCollectionTable(), and writeIrqTranslationTable().
|
protectedpure virtual |
Implemented in gem5::ItsCommand, and gem5::ItsTranslation.
Referenced by reinit().
const std::string gem5::ItsProcess::name | ( | ) | const |
Returns the Gicv3Its name.
Mainly used for DPRINTS
Definition at line 80 of file gic_v3_its.cc.
References its, and gem5::Named::name().
|
protected |
Definition at line 186 of file gic_v3_its.cc.
References gem5::X86ISA::base, gem5::Gicv3Its::DEVICE_TABLE, doRead(), DPRINTF, its, and gem5::Gicv3Its::pageAddress().
Referenced by gem5::ItsCommand::clear(), gem5::ItsCommand::discard(), gem5::ItsCommand::doInt(), gem5::ItsCommand::inv(), gem5::ItsCommand::mapi(), gem5::ItsCommand::mapti(), gem5::ItsCommand::movi(), and gem5::ItsTranslation::translateLPI().
|
protected |
Definition at line 212 of file gic_v3_its.cc.
References gem5::X86ISA::base, gem5::Gicv3Its::COLLECTION_TABLE, doRead(), DPRINTF, its, and gem5::Gicv3Its::pageAddress().
Referenced by gem5::ItsCommand::clear(), gem5::ItsCommand::discard(), gem5::ItsCommand::doInt(), gem5::ItsCommand::inv(), gem5::ItsCommand::invall(), gem5::ItsCommand::movi(), and gem5::ItsTranslation::translateLPI().
|
protected |
Definition at line 199 of file gic_v3_its.cc.
References doRead(), and DPRINTF.
Referenced by gem5::ItsCommand::clear(), gem5::ItsCommand::discard(), gem5::ItsCommand::doInt(), gem5::ItsCommand::inv(), gem5::ItsCommand::mapi(), gem5::ItsCommand::mapti(), gem5::ItsCommand::movi(), and gem5::ItsTranslation::translateLPI().
|
protected |
Definition at line 73 of file gic_v3_its.cc.
References coroutine, and main().
Referenced by gem5::ItsCommand::ItsCommand(), and gem5::ItsTranslation::ItsTranslation().
Definition at line 86 of file gic_v3_its.cc.
References coroutine.
Referenced by gem5::Gicv3Its::runProcessAtomic(), and gem5::Gicv3Its::runProcessTiming().
|
protected |
Definition at line 142 of file gic_v3_its.cc.
References gem5::ArmISA::a, gem5::TERMINATE, and gem5::ItsAction::type.
Referenced by gem5::ItsCommand::clear(), gem5::ItsCommand::discard(), gem5::ItsCommand::doInt(), gem5::ItsCommand::inv(), gem5::ItsCommand::invall(), gem5::ItsCommand::main(), gem5::ItsTranslation::main(), gem5::ItsCommand::mapc(), gem5::ItsCommand::mapd(), gem5::ItsCommand::mapi(), gem5::ItsCommand::mapti(), gem5::ItsCommand::movi(), and gem5::ItsTranslation::translateLPI().
Definition at line 152 of file gic_v3_its.cc.
References gem5::X86ISA::base, gem5::Gicv3Its::DEVICE_TABLE, doWrite(), DPRINTF, its, and gem5::Gicv3Its::pageAddress().
Referenced by gem5::ItsCommand::mapd().
|
protected |
Definition at line 174 of file gic_v3_its.cc.
References gem5::X86ISA::base, gem5::Gicv3Its::COLLECTION_TABLE, doWrite(), DPRINTF, its, and gem5::Gicv3Its::pageAddress().
Referenced by gem5::ItsCommand::mapc().
|
protected |
Definition at line 163 of file gic_v3_its.cc.
References doWrite(), and DPRINTF.
Referenced by gem5::ItsCommand::discard(), gem5::ItsCommand::mapi(), gem5::ItsCommand::mapti(), and gem5::ItsCommand::movi().
|
private |
Definition at line 400 of file gic_v3_its.hh.
|
protected |
Definition at line 397 of file gic_v3_its.hh.
Referenced by gem5::ItsCommand::clear(), gem5::ItsCommand::collectionOutOfRange(), gem5::ItsCommand::deviceOutOfRange(), gem5::ItsCommand::discard(), gem5::ItsCommand::doInt(), doRead(), doWrite(), gem5::ItsCommand::idOutOfRange(), gem5::ItsCommand::inv(), gem5::ItsCommand::invall(), gem5::ItsCommand::ItsCommand(), gem5::ItsTranslation::ItsTranslation(), gem5::ItsCommand::main(), gem5::ItsTranslation::main(), gem5::ItsCommand::mapc(), gem5::ItsCommand::mapd(), gem5::ItsCommand::mapi(), gem5::ItsCommand::mapti(), gem5::ItsCommand::movall(), gem5::ItsCommand::movi(), name(), gem5::ItsCommand::readCommand(), readDeviceTable(), readIrqCollectionTable(), gem5::ItsCommand::sizeOutOfRange(), gem5::ItsTranslation::translateLPI(), writeDeviceTable(), writeIrqCollectionTable(), gem5::ItsCommand::~ItsCommand(), and gem5::ItsTranslation::~ItsTranslation().