32#ifndef __DEV_HSA_HW_SCHEDULER_HH__
33#define __DEV_HSA_HW_SCHEDULER_HH__
40#include "enums/GfxVersion.hh"
45#define MAX_ACTIVE_QUEUES (PAGE_SIZE/8)
57 void write(
Addr db_addr, uint64_t doorbell_reg);
61 uint32_t size,
int doorbellSize,
62 GfxVersion gfxVersion,
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,...
Internal ring buffer which is used to prefetch/store copies of the in-memory HSA ring buffer.
virtual const char * description() const
Return a C string describing the event.
SchedulerWakeupEvent(HWScheduler *hw_schdlr)
HWScheduler(HSAPacketProcessor *hsa_pp, Tick wakeup_delay)
void unregisterQueue(uint64_t queue_id, int doorbellSize)
SchedulerWakeupEvent schedWakeupEvent
void addQCntxt(uint32_t al_idx, AQLRingBuffer *aql_buf, HSAQueueDescriptor *q_desc)
void updateRRVars(uint32_t al_idx, uint32_t rl_idx)
void registerNewQueue(uint64_t hostReadIndexPointer, uint64_t basePointer, uint64_t queue_id, uint32_t size, int doorbellSize, GfxVersion gfxVersion, Addr offset=0, uint64_t rd_idx=0)
std::map< uint32_t, uint32_t > regdListMap
void scheduleAndWakeupMappedQ()
std::map< Addr, uint32_t > dbMap
std::map< uint32_t, QCntxt > activeList
bool isRLQIdle(uint32_t rl_idx)
void write(Addr db_addr, uint64_t doorbell_reg)
HSAPacketProcessor * hsaPP
std::map< uint64_t, Addr > qidMap
bool mapQIfSlotAvlbl(uint32_t al_idx, AQLRingBuffer *aql_buf, HSAQueueDescriptor *q_desc)
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
uint64_t Tick
Tick count type.