gem5 v24.0.0.0
Loading...
Searching...
No Matches
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.
 
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 ()
 
PM4MapQueuesgetPkt ()
 
void setPkt (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).
 
Addr _ibWptr
 
Addr _offset
 
bool _processing
 
bool _ib
 
PM4MapQueues _pkt
 

Detailed Description

Class defining a PM4 queue.

Definition at line 377 of file pm4_queues.hh.

Constructor & Destructor Documentation

◆ PM4Queue() [1/3]

gem5::PM4Queue::PM4Queue ( )
inline

Definition at line 396 of file pm4_queues.hh.

◆ PM4Queue() [2/3]

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

Definition at line 398 of file pm4_queues.hh.

◆ PM4Queue() [3/3]

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

Definition at line 401 of file pm4_queues.hh.

Member Function Documentation

◆ base() [1/2]

Addr gem5::PM4Queue::base ( )
inline

Definition at line 408 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 444 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 455 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 405 of file pm4_queues.hh.

References q.

◆ getPkt()

PM4MapQueues * gem5::PM4Queue::getPkt ( )
inline

Definition at line 489 of file pm4_queues.hh.

References _pkt.

◆ getRptr()

Addr gem5::PM4Queue::getRptr ( )
inline

Definition at line 426 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 433 of file pm4_queues.hh.

References _ibWptr, _wptr, and ib().

◆ ib() [1/2]

bool gem5::PM4Queue::ib ( )
inline

Definition at line 441 of file pm4_queues.hh.

References _ib.

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

◆ ib() [2/2]

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

Definition at line 484 of file pm4_queues.hh.

References _ib.

◆ ibBase() [1/2]

Addr gem5::PM4Queue::ibBase ( )
inline

Definition at line 409 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 445 of file pm4_queues.hh.

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

◆ id() [1/2]

int gem5::PM4Queue::id ( )
inline

Definition at line 406 of file pm4_queues.hh.

References _id.

Referenced by gem5::PM4PacketProcessor::processMQD(), and gem5::PM4PacketProcessor::serialize().

◆ id() [2/2]

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

Definition at line 443 of file pm4_queues.hh.

References _id.

◆ incRptr()

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

Definition at line 462 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 485 of file pm4_queues.hh.

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

Referenced by setPkt().

◆ mqdBase()

Addr gem5::PM4Queue::mqdBase ( )
inline

Definition at line 407 of file pm4_queues.hh.

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

◆ offset() [1/2]

Addr gem5::PM4Queue::offset ( )
inline

Definition at line 439 of file pm4_queues.hh.

References _offset.

◆ offset() [2/2]

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

Definition at line 482 of file pm4_queues.hh.

References _offset.

◆ pipe()

uint32_t gem5::PM4Queue::pipe ( )
inline

Definition at line 486 of file pm4_queues.hh.

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

Referenced by setPkt().

◆ privileged()

bool gem5::PM4Queue::privileged ( )
inline

Definition at line 488 of file pm4_queues.hh.

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

Referenced by setPkt().

◆ processing() [1/2]

bool gem5::PM4Queue::processing ( )
inline

Definition at line 440 of file pm4_queues.hh.

References _processing.

◆ processing() [2/2]

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

Definition at line 483 of file pm4_queues.hh.

References _processing.

◆ queue()

uint32_t gem5::PM4Queue::queue ( )
inline

Definition at line 487 of file pm4_queues.hh.

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

Referenced by setPkt().

◆ rptr() [1/2]

Addr gem5::PM4Queue::rptr ( )
inline

◆ rptr() [2/2]

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

Definition at line 469 of file pm4_queues.hh.

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

◆ setPkt()

void gem5::PM4Queue::setPkt ( uint32_t me,
uint32_t pipe,
uint32_t queue,
bool privileged )
inline

◆ size()

uint64_t gem5::PM4Queue::size ( )
inline

Definition at line 498 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 419 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 476 of file pm4_queues.hh.

References _ibWptr, _wptr, and ib().

Member Data Documentation

◆ _ib

bool gem5::PM4Queue::_ib
private

Definition at line 393 of file pm4_queues.hh.

Referenced by ib(), and ib().

◆ _ibWptr

Addr gem5::PM4Queue::_ibWptr
private

Definition at line 390 of file pm4_queues.hh.

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

◆ _id

int gem5::PM4Queue::_id
private

Definition at line 379 of file pm4_queues.hh.

Referenced by id(), and id().

◆ _offset

Addr gem5::PM4Queue::_offset
private

Definition at line 391 of file pm4_queues.hh.

Referenced by offset(), and offset().

◆ _pkt

PM4MapQueues gem5::PM4Queue::_pkt
private

Definition at line 394 of file pm4_queues.hh.

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

◆ _processing

bool gem5::PM4Queue::_processing
private

Definition at line 392 of file pm4_queues.hh.

Referenced by processing(), and 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 389 of file pm4_queues.hh.

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

◆ q

QueueDesc* gem5::PM4Queue::q
private

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

Generated on Tue Jun 18 2024 16:24:13 for gem5 by doxygen 1.11.0