Prevent unnecessary SDMA queue creation on copy on status

Unless SDMA blits have actually been used for copies, prevent the DMA
copy status from querying the blit's pending byte status to avoid
creating an unnecessary HW queue.

Change-Id: Ied1fbed73c08f0408f0e3583f9b56f2768c71708
This commit is contained in:
Jonathan Kim
2023-06-16 14:52:48 -04:00
parent 8c60f04a99
commit 92467fd282
2 changed files with 40 additions and 26 deletions
@@ -550,6 +550,10 @@ class GpuAgent : public GpuAgentInt {
// Bind the Blit object that will drive the copy operation
lazy_ptr<core::Blit>& GetBlitObject(const core::Agent& dst_agent, const core::Agent& src_agent,
const size_t size);
// Bind the Blit object that will drive the copy operation by engine ID
lazy_ptr<core::Blit>& GetBlitObject(uint32_t engine_id);
// @brief Alternative aperture base address. Only on KV.
uintptr_t ape1_base_;
@@ -569,6 +573,9 @@ class GpuAgent : public GpuAgentInt {
int pending_copy_req_ref_;
int pending_copy_stat_check_ref_;
// Tracks what SDMA blits have been used since initialization.
uint32_t sdma_blit_used_mask_;
ScratchCache scratch_cache_;
// System memory allocator in the nearest NUMA node.
@@ -578,6 +585,9 @@ class GpuAgent : public GpuAgentInt {
std::function<void(void*)> system_deallocator_;
DISALLOW_COPY_AND_ASSIGN(GpuAgent);
// Check if SDMA engine by ID is free
bool DmaEngineIsFree(uint32_t engine_id);
};
} // namespace amd