From d7a78db32865268bd5ad6db0fb2aaf976963673f Mon Sep 17 00:00:00 2001 From: Aravind Gopalakrishnan Date: Tue, 31 Jan 2023 01:39:49 +0000 Subject: [PATCH] debug: Add debug key for custom event timeout - This helps to investigate tests using debug key Related-To: LOCI-3673 Signed-off-by: Aravind Gopalakrishnan --- level_zero/core/source/event/event_impl.inl | 4 ++++ .../test/unit_tests/sources/event/test_event.cpp | 14 ++++++++++++++ .../source/debug_settings/debug_variables_base.inl | 1 + shared/test/common/test_files/igdrcl.config | 1 + 4 files changed, 20 insertions(+) diff --git a/level_zero/core/source/event/event_impl.inl b/level_zero/core/source/event/event_impl.inl index 6531a3ed94..dfd4635c0c 100644 --- a/level_zero/core/source/event/event_impl.inl +++ b/level_zero/core/source/event/event_impl.inl @@ -295,6 +295,10 @@ ze_result_t EventImp::hostSynchronize(uint64_t timeout) { return ZE_RESULT_SUCCESS; } + if (NEO::DebugManager.flags.OverrideEventSynchronizeTimeout.get() != -1) { + timeout = NEO::DebugManager.flags.OverrideEventSynchronizeTimeout.get(); + } + if (timeout == 0) { return queryStatus(); } diff --git a/level_zero/core/test/unit_tests/sources/event/test_event.cpp b/level_zero/core/test/unit_tests/sources/event/test_event.cpp index 9744fa40e1..b6f5d7bae9 100644 --- a/level_zero/core/test/unit_tests/sources/event/test_event.cpp +++ b/level_zero/core/test/unit_tests/sources/event/test_event.cpp @@ -1265,6 +1265,20 @@ TEST_F(EventSynchronizeTest, givenCallToEventHostSynchronizeWithNonZeroTimeoutAn EXPECT_EQ(ZE_RESULT_NOT_READY, result); } +TEST_F(EventSynchronizeTest, givenCallToEventHostSynchronizeWithTimeoutNonZeroAndOverrideTimeoutSetAndStateInitialThenHostSynchronizeReturnsNotReady) { + DebugManagerStateRestore restore; + NEO::DebugManager.flags.OverrideEventSynchronizeTimeout.set(100); + std::chrono::high_resolution_clock::time_point waitStartTime, currentTime; + waitStartTime = std::chrono::high_resolution_clock::now(); + ze_result_t result = event->hostSynchronize(0); + currentTime = std::chrono::high_resolution_clock::now(); + EXPECT_EQ(ZE_RESULT_NOT_READY, result); + + uint64_t timeDiff = std::chrono::duration_cast(currentTime - waitStartTime).count(); + uint64_t minTimeoutCheck = 80; + EXPECT_GT(timeDiff, minTimeoutCheck); +} + TEST_F(EventSynchronizeTest, givenCallToEventHostSynchronizeWithTimeoutZeroWhenStateSignaledThenHostSynchronizeReturnsSuccess) { uint32_t *hostAddr = static_cast(event->getHostAddress()); *hostAddr = Event::STATE_SIGNALED; diff --git a/shared/source/debug_settings/debug_variables_base.inl b/shared/source/debug_settings/debug_variables_base.inl index 906efbffc0..74d7c4e6c1 100644 --- a/shared/source/debug_settings/debug_variables_base.inl +++ b/shared/source/debug_settings/debug_variables_base.inl @@ -227,6 +227,7 @@ DECLARE_DEBUG_VARIABLE(int32_t, ForceComputeWalkerPostSyncFlush, -1, "-1: defaul DECLARE_DEBUG_VARIABLE(int32_t, NumberOfRegularContextsPerEngine, -1, "-1: default, >0: Create more than 1 Regular contexts for the same engine") DECLARE_DEBUG_VARIABLE(int32_t, EnableMultipleRegularContextForBcs, -1, "-1: default, 0: disabled, 1: Use NumberOfRegularContextsPerEngine to create multiple Regular contexts on the same engine") DECLARE_DEBUG_VARIABLE(int32_t, AppendAubStreamContextFlags, -1, "-1: default, >0: Append flags passed during HardwareContext creation.") +DECLARE_DEBUG_VARIABLE(int64_t, OverrideEventSynchronizeTimeout, -1, "-1: default - user provided timeout value, >0: timeout in nanoseconds") /*LOGGING FLAGS*/ DECLARE_DEBUG_VARIABLE(int32_t, PrintDriverDiagnostics, -1, "prints driver diagnostics messages to standard output, value corresponds to hint level") diff --git a/shared/test/common/test_files/igdrcl.config b/shared/test/common/test_files/igdrcl.config index ee7677d74a..51d8385c46 100644 --- a/shared/test/common/test_files/igdrcl.config +++ b/shared/test/common/test_files/igdrcl.config @@ -265,6 +265,7 @@ GpuScratchRegWriteRegisterData = 0 GpuScratchRegWriteRegisterOffset = 0 UseBindlessDebugSip = 0 OverrideTimestampEvents= -1 +OverrideEventSynchronizeTimeout = -1 OverrideSlmAllocationSize = -1 OverrideSlmSize = -1 UseCyclesPerSecondTimer = 0