From 1a00d967351b58462cbcf75982848fa917720707 Mon Sep 17 00:00:00 2001 From: Slawomir Milczarek Date: Fri, 16 Feb 2024 11:09:34 +0000 Subject: [PATCH] fix: Fixed timeout resolution for zeCommandQueueSynchronize According to Level Zero specification: timeout [in] if non-zero, then indicates the maximum time (in nanoseconds) to yield before returning ZE_RESULT_SUCCESS or ZE_RESULT_NOT_READY Related-To: NEO-8927 Signed-off-by: Slawomir Milczarek --- level_zero/core/source/cmdqueue/cmdqueue.cpp | 6 +++--- level_zero/core/source/cmdqueue/cmdqueue_imp.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/level_zero/core/source/cmdqueue/cmdqueue.cpp b/level_zero/core/source/cmdqueue/cmdqueue.cpp index 61e3abc805..7dafc94d43 100644 --- a/level_zero/core/source/cmdqueue/cmdqueue.cpp +++ b/level_zero/core/source/cmdqueue/cmdqueue.cpp @@ -165,13 +165,13 @@ ze_result_t CommandQueueImp::synchronize(uint64_t timeout) { } } -ze_result_t CommandQueueImp::synchronizeByPollingForTaskCount(uint64_t timeout) { +ze_result_t CommandQueueImp::synchronizeByPollingForTaskCount(uint64_t timeoutNanoseconds) { UNRECOVERABLE_IF(csr == nullptr); auto taskCountToWait = getTaskCount(); bool enableTimeout = true; - int64_t timeoutMicroseconds = static_cast(timeout); - if (timeout == std::numeric_limits::max()) { + int64_t timeoutMicroseconds = static_cast(timeoutNanoseconds / 1000); + if (timeoutNanoseconds == std::numeric_limits::max()) { enableTimeout = false; timeoutMicroseconds = NEO::TimeoutControls::maxTimeout; } diff --git a/level_zero/core/source/cmdqueue/cmdqueue_imp.h b/level_zero/core/source/cmdqueue/cmdqueue_imp.h index 3f6e1a78b9..d745ea0398 100644 --- a/level_zero/core/source/cmdqueue/cmdqueue_imp.h +++ b/level_zero/core/source/cmdqueue/cmdqueue_imp.h @@ -107,7 +107,7 @@ struct CommandQueueImp : public CommandQueue { MOCKABLE_VIRTUAL NEO::SubmissionStatus submitBatchBuffer(size_t offset, NEO::ResidencyContainer &residencyContainer, void *endingCmdPtr, bool isCooperative); - ze_result_t synchronizeByPollingForTaskCount(uint64_t timeout); + ze_result_t synchronizeByPollingForTaskCount(uint64_t timeoutNanoseconds); void postSyncOperations(bool hangDetected);