gem5  v22.1.0.0
Public Member Functions | Private Attributes | List of all members
gem5::PM4Queue Class Reference

Class defining a PM4 queue. More...

#include <pm4_queues.hh>

Public Member Functions

 PM4Queue ()
 
 PM4Queue (int id, QueueDesc *queue, Addr offset)
 
 PM4Queue (int id, QueueDesc *queue, Addr offset, PM4MapQueues *pkt)
 
QueueDescgetMQD ()
 
int id ()
 
Addr mqdBase ()
 
Addr base ()
 
Addr ibBase ()
 
Addr rptr ()
 
Addr wptr ()
 
Addr getRptr ()
 
Addr getWptr ()
 
Addr offset ()
 
bool processing ()
 
bool ib ()
 
void id (int value)
 
void base (Addr value)
 
void ibBase (Addr value)
 
void fastforwardRptr ()
 It seems that PM4 nop packets with count 0x3fff, not only do not consider the count value, they also fast forward the read pointer. More...
 
void incRptr (Addr value)
 
void rptr (Addr value)
 
void wptr (Addr value)
 
void offset (Addr value)
 
void processing (bool value)
 
void ib (bool value)
 
uint32_t me ()
 
uint32_t pipe ()
 
uint32_t queue ()
 
bool privileged ()
 
uint64_t size ()
 

Private Attributes

int _id
 
QueueDescq
 
Addr _wptr
 Most important fields of a PM4 queue are stored in the queue descriptor (i.e., QueueDesc). More...
 
Addr _ibWptr
 
Addr _offset
 
bool _processing
 
bool _ib
 
const PM4MapQueues _pkt
 

Detailed Description

Class defining a PM4 queue.

Definition at line 361 of file pm4_queues.hh.

Constructor & Destructor Documentation

◆ PM4Queue() [1/3]

gem5::PM4Queue::PM4Queue ( )
inline

Definition at line 380 of file pm4_queues.hh.

◆ PM4Queue() [2/3]

gem5::PM4Queue::PM4Queue ( int  id,
QueueDesc queue,
Addr  offset 
)
inline

Definition at line 382 of file pm4_queues.hh.

◆ PM4Queue() [3/3]

gem5::PM4Queue::PM4Queue ( int  id,
QueueDesc queue,
Addr  offset,
PM4MapQueues pkt 
)
inline

Definition at line 385 of file pm4_queues.hh.

Member Function Documentation

◆ base() [1/2]

Addr gem5::PM4Queue::base ( )
inline

Definition at line 392 of file pm4_queues.hh.

References gem5::GEM5_PACKED::base, and q.

◆ base() [2/2]

void gem5::PM4Queue::base ( Addr  value)
inline

Definition at line 428 of file pm4_queues.hh.

References gem5::GEM5_PACKED::base, and q.

◆ fastforwardRptr()

void gem5::PM4Queue::fastforwardRptr ( )
inline

It seems that PM4 nop packets with count 0x3fff, not only do not consider the count value, they also fast forward the read pointer.

Without proper sync packets this can potentially be dangerous, since more useful packets can be enqueued in the time between nop enqueu and nop processing.

Definition at line 439 of file pm4_queues.hh.

References _ibWptr, _wptr, ib(), gem5::GEM5_PACKED::ibRptr, q, and gem5::GEM5_PACKED::rptr.

◆ getMQD()

QueueDesc* gem5::PM4Queue::getMQD ( )
inline

Definition at line 389 of file pm4_queues.hh.

References q.

◆ getRptr()

Addr gem5::PM4Queue::getRptr ( )
inline

Definition at line 410 of file pm4_queues.hh.

References ib(), gem5::GEM5_PACKED::ibRptr, q, and gem5::GEM5_PACKED::rptr.

◆ getWptr()

Addr gem5::PM4Queue::getWptr ( )
inline

Definition at line 417 of file pm4_queues.hh.

References _ibWptr, _wptr, and ib().

◆ ib() [1/2]

bool gem5::PM4Queue::ib ( )
inline

Definition at line 425 of file pm4_queues.hh.

References _ib.

Referenced by fastforwardRptr(), getRptr(), getWptr(), incRptr(), rptr(), and wptr().

◆ ib() [2/2]

void gem5::PM4Queue::ib ( bool  value)
inline

Definition at line 468 of file pm4_queues.hh.

References _ib.

◆ ibBase() [1/2]

Addr gem5::PM4Queue::ibBase ( )
inline

Definition at line 393 of file pm4_queues.hh.

References gem5::GEM5_PACKED::ibBase, and q.

◆ ibBase() [2/2]

void gem5::PM4Queue::ibBase ( Addr  value)
inline

Definition at line 429 of file pm4_queues.hh.

References gem5::GEM5_PACKED::ibBase, and q.

◆ id() [1/2]

int gem5::PM4Queue::id ( )
inline

Definition at line 390 of file pm4_queues.hh.

References _id.

Referenced by gem5::PM4PacketProcessor::processMQD().

◆ id() [2/2]

void gem5::PM4Queue::id ( int  value)
inline

Definition at line 427 of file pm4_queues.hh.

References _id.

◆ incRptr()

void gem5::PM4Queue::incRptr ( Addr  value)
inline

Definition at line 446 of file pm4_queues.hh.

References ib(), gem5::GEM5_PACKED::ibRptr, q, and gem5::GEM5_PACKED::rptr.

◆ me()

uint32_t gem5::PM4Queue::me ( )
inline

Definition at line 469 of file pm4_queues.hh.

References _pkt, and gem5::GEM5_PACKED::me.

◆ mqdBase()

Addr gem5::PM4Queue::mqdBase ( )
inline

Definition at line 391 of file pm4_queues.hh.

References gem5::GEM5_PACKED::mqdBase, and q.

◆ offset() [1/2]

Addr gem5::PM4Queue::offset ( )
inline

Definition at line 423 of file pm4_queues.hh.

References _offset.

◆ offset() [2/2]

void gem5::PM4Queue::offset ( Addr  value)
inline

Definition at line 466 of file pm4_queues.hh.

References _offset.

◆ pipe()

uint32_t gem5::PM4Queue::pipe ( )
inline

Definition at line 470 of file pm4_queues.hh.

References _pkt, and gem5::GEM5_PACKED::pipe.

◆ privileged()

bool gem5::PM4Queue::privileged ( )
inline

Definition at line 472 of file pm4_queues.hh.

References _pkt, and gem5::GEM5_PACKED::queueSel.

◆ processing() [1/2]

bool gem5::PM4Queue::processing ( )
inline

Definition at line 424 of file pm4_queues.hh.

References _processing.

◆ processing() [2/2]

void gem5::PM4Queue::processing ( bool  value)
inline

Definition at line 467 of file pm4_queues.hh.

References _processing.

◆ queue()

uint32_t gem5::PM4Queue::queue ( )
inline

Definition at line 471 of file pm4_queues.hh.

References _pkt, and gem5::GEM5_PACKED::queueSlot.

◆ rptr() [1/2]

Addr gem5::PM4Queue::rptr ( )
inline

◆ rptr() [2/2]

void gem5::PM4Queue::rptr ( Addr  value)
inline

Definition at line 453 of file pm4_queues.hh.

References ib(), gem5::GEM5_PACKED::ibRptr, q, and gem5::GEM5_PACKED::rptr.

◆ size()

uint64_t gem5::PM4Queue::size ( )
inline

Definition at line 475 of file pm4_queues.hh.

References gem5::GEM5_PACKED::hqd_pq_control, and q.

Referenced by rptr(), and wptr().

◆ wptr() [1/2]

Addr gem5::PM4Queue::wptr ( )
inline

Definition at line 403 of file pm4_queues.hh.

References _ibWptr, _wptr, gem5::GEM5_PACKED::base, ib(), gem5::GEM5_PACKED::ibBase, q, and size().

◆ wptr() [2/2]

void gem5::PM4Queue::wptr ( Addr  value)
inline

Definition at line 460 of file pm4_queues.hh.

References _ibWptr, _wptr, and ib().

Member Data Documentation

◆ _ib

bool gem5::PM4Queue::_ib
private

Definition at line 377 of file pm4_queues.hh.

Referenced by ib().

◆ _ibWptr

Addr gem5::PM4Queue::_ibWptr
private

Definition at line 374 of file pm4_queues.hh.

Referenced by fastforwardRptr(), getWptr(), and wptr().

◆ _id

int gem5::PM4Queue::_id
private

Definition at line 363 of file pm4_queues.hh.

Referenced by id().

◆ _offset

Addr gem5::PM4Queue::_offset
private

Definition at line 375 of file pm4_queues.hh.

Referenced by offset().

◆ _pkt

const PM4MapQueues gem5::PM4Queue::_pkt
private

Definition at line 378 of file pm4_queues.hh.

Referenced by me(), pipe(), privileged(), and queue().

◆ _processing

bool gem5::PM4Queue::_processing
private

Definition at line 376 of file pm4_queues.hh.

Referenced by processing().

◆ _wptr

Addr gem5::PM4Queue::_wptr
private

Most important fields of a PM4 queue are stored in the queue descriptor (i.e., QueueDesc).

However, since the write pointers are communicated through the doorbell value, we will add separate atributes for them.

Definition at line 373 of file pm4_queues.hh.

Referenced by fastforwardRptr(), getWptr(), and wptr().

◆ q

QueueDesc* gem5::PM4Queue::q
private

Definition at line 366 of file pm4_queues.hh.

Referenced by base(), fastforwardRptr(), getMQD(), getRptr(), ibBase(), incRptr(), mqdBase(), rptr(), size(), and wptr().


The documentation for this class was generated from the following file:

Generated on Wed Dec 21 2022 10:23:16 for gem5 by doxygen 1.9.1