dev-amdgpu: Implement SDMA RLC queue unmapping
The unmap queues packet specifies all non-static queues should be unmapped which includes RLC queues in the SMDA. This functionality did not exist before and is added in this changeset. Fixes bug with rodinia_3.0/hip/bfs. Change-Id: I80ca8cf8d89559625b5870745889b0a27916635e Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/63173 Tested-by: kokoro <noreply+kokoro@google.com> Maintainer: Matt Sinclair <mattdsinclair@gmail.com> Reviewed-by: Matt Sinclair <mattdsinclair@gmail.com>
This commit is contained in:
@@ -643,6 +643,9 @@ AMDGPUDevice::deallocateAllQueues()
|
||||
{
|
||||
idMap.erase(idMap.begin(), idMap.end());
|
||||
usedVMIDs.erase(usedVMIDs.begin(), usedVMIDs.end());
|
||||
|
||||
sdma0->deallocateRLCQueues();
|
||||
sdma1->deallocateRLCQueues();
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -202,6 +202,14 @@ SDMAEngine::unregisterRLCQueue(Addr doorbell)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
SDMAEngine::deallocateRLCQueues()
|
||||
{
|
||||
for (auto doorbell: rlcInfo) {
|
||||
unregisterRLCQueue(doorbell);
|
||||
}
|
||||
}
|
||||
|
||||
/* Start decoding packets from the Gfx queue. */
|
||||
void
|
||||
SDMAEngine::processGfx(Addr wptrOffset)
|
||||
|
||||
@@ -266,6 +266,7 @@ class SDMAEngine : public DmaVirtDevice
|
||||
*/
|
||||
void registerRLCQueue(Addr doorbell, Addr rb_base);
|
||||
void unregisterRLCQueue(Addr doorbell);
|
||||
void deallocateRLCQueues();
|
||||
|
||||
int cur_vmid = 0;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user