From c83846cd45d5640a8bd2a20f361bb74e3a5cd290 Mon Sep 17 00:00:00 2001 From: Jay Cornwall Date: Fri, 14 Oct 2016 09:21:39 -0500 Subject: [PATCH] Fix AQL packet lookup in dynamic scratch event handler Read index was not wrapped correctly. Change-Id: I25c901b61e4760990871e22468ffd0391abef244 --- runtime/hsa-runtime/core/runtime/amd_aql_queue.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/runtime/hsa-runtime/core/runtime/amd_aql_queue.cpp b/runtime/hsa-runtime/core/runtime/amd_aql_queue.cpp index a1e57a5272..551dbed5df 100644 --- a/runtime/hsa-runtime/core/runtime/amd_aql_queue.cpp +++ b/runtime/hsa-runtime/core/runtime/amd_aql_queue.cpp @@ -670,9 +670,10 @@ bool AqlQueue::DynamicScratchHandler(hsa_signal_value_t error_code, void* arg) { queue->agent_->ReleaseQueueScratch(scratch.queue_base); + uint64_t pkt_slot_idx = queue->amd_queue_.read_dispatch_id % queue->amd_queue_.hsa_queue.size; + const core::AqlPacket& pkt = - ((core::AqlPacket*)queue->amd_queue_.hsa_queue - .base_address)[queue->amd_queue_.read_dispatch_id]; + ((core::AqlPacket*)queue->amd_queue_.hsa_queue.base_address)[pkt_slot_idx]; uint32_t scratch_request = pkt.dispatch.private_segment_size;