SWDEV-272496 - Add marker if notification was the last command.

If MT is enabled, then a new callback can be received before the previous
command is processed, causing a conflict of 2 callbacks.

Change-Id: I5ff8f231208e8d62824d590d3c8e791e8e36affb
This commit is contained in:
German Andryeyev
2021-02-22 23:22:44 -05:00
parent b9cf12e920
commit fe7501a64b
+5 -1
View File
@@ -368,7 +368,11 @@ hipError_t hipStreamAddCallback(hipStream_t stream, hipStreamCallback_t callback
}
amd::HostQueue* hostQueue = hip::getQueue(stream);
amd::Command* command = hostQueue->getLastQueuedCommand(true);
if (command == nullptr) {
if (command == nullptr ||
// Add a marker if the last command is a notification,
// since with multithreading AddCallback may occur before the previous
// command can be processed
(command->type() == 0)) {
amd::Command::EventWaitList eventWaitList;
command = new amd::Marker(*hostQueue, kMarkerDisableFlush, eventWaitList);
command->enqueue();