diff --git a/level_zero/core/source/cmdlist/cmdlist_hw.inl b/level_zero/core/source/cmdlist/cmdlist_hw.inl index 962ac46f69..be69d3e4b8 100644 --- a/level_zero/core/source/cmdlist/cmdlist_hw.inl +++ b/level_zero/core/source/cmdlist/cmdlist_hw.inl @@ -2646,16 +2646,16 @@ ze_result_t CommandListCoreFamily::appendWaitOnEvents(uint32_t nu for (uint32_t i = 0; i < numEvents; i++) { auto event = Event::fromHandle(phEvent[i]); + if (event->isCounterBased() && !event->getInOrderExecInfo().get()) { + return ZE_RESULT_ERROR_INVALID_ARGUMENT; // in-order event not signaled yet + } + if ((isImmediateType() && event->isAlreadyCompleted()) || canSkipInOrderEventWait(*event, this->allowCbWaitEventsNoopDispatch)) { continue; } if (event->isCounterBased()) { - if (!event->getInOrderExecInfo().get()) { - return ZE_RESULT_ERROR_INVALID_ARGUMENT; // in-order event not signaled yet - } - // 1. Regular CmdList adds submission counter to base value on each Execute // 2. Immediate CmdList takes current value (with submission counter) auto waitValue = !isImmediateType() ? event->getInOrderExecBaseSignalValue() : event->getInOrderExecSignalValueWithSubmissionCounter(); diff --git a/level_zero/core/source/event/event_impl.inl b/level_zero/core/source/event/event_impl.inl index 71327c415a..2130e61810 100644 --- a/level_zero/core/source/event/event_impl.inl +++ b/level_zero/core/source/event/event_impl.inl @@ -220,7 +220,7 @@ void EventImp::assignKernelEventCompletionData(void *address) { template ze_result_t EventImp::queryCounterBasedEventStatus() { if (!this->inOrderExecInfo.get()) { - return ZE_RESULT_NOT_READY; + return ZE_RESULT_SUCCESS; } auto waitValue = getInOrderExecSignalValueWithSubmissionCounter(); @@ -520,7 +520,7 @@ ze_result_t EventImp::waitForUserFence(uint64_t timeout) { } if (!inOrderExecInfo) { - return ZE_RESULT_NOT_READY; + return ZE_RESULT_SUCCESS; } uint64_t waitAddress = castToUint64(ptrOffset(inOrderExecInfo->getBaseHostAddress(), this->inOrderAllocationOffset)); diff --git a/level_zero/core/test/unit_tests/fixtures/in_order_cmd_list_fixture.h b/level_zero/core/test/unit_tests/fixtures/in_order_cmd_list_fixture.h index d55cabbf1e..64bdbf79ab 100644 --- a/level_zero/core/test/unit_tests/fixtures/in_order_cmd_list_fixture.h +++ b/level_zero/core/test/unit_tests/fixtures/in_order_cmd_list_fixture.h @@ -36,11 +36,13 @@ struct InOrderCmdListFixture : public ::Test { void makeCounterBasedInitiallyDisabled() { counterBasedMode = CounterBasedMode::initiallyDisabled; + resetCompletionStatus(); counterBasedFlags = 0; } void makeCounterBasedImplicitlyDisabled() { counterBasedMode = CounterBasedMode::implicitlyDisabled; + resetCompletionStatus(); counterBasedFlags = 0; } }; diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist.cpp index b8892e290d..3a5566e1e1 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist.cpp @@ -235,11 +235,11 @@ HWTEST2_F(InOrderCmdListTests, givenIpcPoolEventWhenTryingToImplicitlyConverToCo EXPECT_EQ(Event::CounterBasedMode::implicitlyDisabled, event1->counterBasedMode); } -HWTEST2_F(InOrderCmdListTests, givenNotSignaledInOrderWhenWhenCallingQueryStatusThenReturnNotReady, IsAtLeastSkl) { +HWTEST2_F(InOrderCmdListTests, givenNotSignaledInOrderWhenWhenCallingQueryStatusThenReturnSuccess, IsAtLeastSkl) { auto eventPool = createEvents(1, false); events[0]->enableCounterBasedMode(true, eventPool->getCounterBasedFlags()); - EXPECT_EQ(ZE_RESULT_NOT_READY, events[0]->queryStatus()); + EXPECT_EQ(ZE_RESULT_SUCCESS, events[0]->queryStatus()); } HWTEST2_F(InOrderCmdListTests, givenCmdListsWhenDispatchingThenUseInternalTaskCountForWaits, IsAtLeastSkl) { @@ -347,7 +347,7 @@ HWTEST2_F(InOrderCmdListTests, givenDebugFlagSetWhenEventHostSyncCalledThenCallW EXPECT_TRUE(events[1]->isKmdWaitModeEnabled()); EXPECT_TRUE(events[1]->isInterruptModeEnabled()); - EXPECT_EQ(ZE_RESULT_NOT_READY, events[0]->hostSynchronize(2)); + EXPECT_EQ(ZE_RESULT_SUCCESS, events[0]->hostSynchronize(2)); immCmdList->appendLaunchKernel(kernel->toHandle(), groupCount, events[0]->toHandle(), 0, nullptr, launchParams, false);