|
gem5 [DEVELOP-FOR-25.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.
| using gem5::ItsProcess::Yield = Coroutine::CallerType |
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.
References coroutine, and its.
Referenced by gem5::ItsCommand::ItsCommand(), and gem5::ItsTranslation::ItsTranslation().
|
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::Packet::getSize(), its, gem5::MemCmd::ReadReq, and gem5::SEND_REQ.
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::Packet::getSize(), its, gem5::SEND_REQ, and gem5::MemCmd::WriteReq.
Referenced by writeDeviceTable(), writeIrqCollectionTable(), and writeIrqTranslationTable().
|
protectedpure virtual |
Implemented in gem5::ItsCommand, and gem5::ItsTranslation.
References gem5::X86ISA::addr.
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.
|
protected |
Definition at line 186 of file gic_v3_its.cc.
References gem5::RiscvISA::base, gem5::Gicv3Its::DEVICE_TABLE, doRead(), DPRINTF, and its.
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::RiscvISA::base, gem5::Gicv3Its::COLLECTION_TABLE, doRead(), DPRINTF, and its.
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, and gem5::TERMINATE.
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::RiscvISA::base, gem5::Gicv3Its::DEVICE_TABLE, doWrite(), DPRINTF, and its.
Referenced by gem5::ItsCommand::mapd().
|
protected |
Definition at line 174 of file gic_v3_its.cc.
References gem5::RiscvISA::base, gem5::Gicv3Its::COLLECTION_TABLE, doWrite(), DPRINTF, and its.
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.
Referenced by ItsProcess(), reinit(), and run().
|
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(), ItsProcess(), 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().