From d19d6fc31ed2255d83fba42cbceb679c49fa5ac4 Mon Sep 17 00:00:00 2001 From: Vishnu Ramadas Date: Thu, 16 Nov 2023 17:12:01 -0600 Subject: [PATCH] dev-amdgpu: Add PM4 queue ID to GPU used VMID map When restoring checkpoints for certain applications, gem5 tries to create new doorbells with a pre-existing queue ID and simulation crashes shortly after. This commit adds existing IDs to the GPU device's used VMID map so that new doorbells are aware of existing queue IDs and use a new ID. This ensures that queue IDs are unique after checkpoint restoration Change-Id: I9bf89a2769db26ceab4441634ff2da936eea6d6f --- src/dev/amdgpu/pm4_packet_processor.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/dev/amdgpu/pm4_packet_processor.cc b/src/dev/amdgpu/pm4_packet_processor.cc index 352af400b0..1e889799ef 100644 --- a/src/dev/amdgpu/pm4_packet_processor.cc +++ b/src/dev/amdgpu/pm4_packet_processor.cc @@ -1197,6 +1197,8 @@ PM4PacketProcessor::unserialize(CheckpointIn &cp) PM4MapQueues* pkt = new PM4MapQueues; memset(pkt, 0, sizeof(PM4MapQueues)); newQueue(mqd, offset[i], pkt, id[i]); + PM4Queue *new_q = queuesMap[offset[i]]; + gpuDevice->insertQId(gpuDevice->lastVMID(), new_q->id()); if (ib[i]) { queues[id[i]]->wptr(ib_wptr[i]);