diff --git a/hipamd/src/hip_stream.cpp b/hipamd/src/hip_stream.cpp index b47ed8fa26..19fb6fc0ad 100644 --- a/hipamd/src/hip_stream.cpp +++ b/hipamd/src/hip_stream.cpp @@ -587,10 +587,21 @@ hipError_t streamCallback_common(hipStream_t stream, StreamCallback* cbo, void* if (last_command != nullptr) { last_command->release(); } + // Extra marker is required for HW event check, which is done before the callback is finished. + // Add the new barrier to stall the stream, until the callback is done + eventWaitList.clear(); + eventWaitList.push_back(command); + amd::Command* block_command = new amd::Marker(*hostQueue, !kMarkerDisableFlush, eventWaitList); + if (block_command == nullptr) { + return hipErrorInvalidValue; + } + block_command->enqueue(); + block_command->release(); + // Release the callback marker command->release(); // Notify the command queue about a possible waiter for the calback - command->notifyCmdQueue(); + block_command->notifyCmdQueue(); return hipSuccess; }