fix: dont use event fence wait in tbx mode

Related-To: HSD-18040280103

Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
This commit is contained in:
Bartosz Dunajski
2024-10-23 09:38:35 +00:00
committed by Compute-Runtime-Automation
parent e687e11ab1
commit e60f3d931b
2 changed files with 27 additions and 1 deletions

View File

@@ -656,8 +656,11 @@ ze_result_t EventImp<TagSizeT>::hostSynchronize(uint64_t timeout) {
waitStartTime = std::chrono::high_resolution_clock::now();
lastHangCheckTime = waitStartTime;
const bool fenceWait = isKmdWaitModeEnabled() && isCounterBased() && !this->tbxMode;
do {
if (isKmdWaitModeEnabled() && isCounterBased()) {
if (fenceWait) {
ret = waitForUserFence(timeout);
} else {
ret = queryStatus();

View File

@@ -578,6 +578,29 @@ HWTEST2_F(InOrderCmdListTests, givenUserInterruptEventWhenWaitingThenWaitForUser
EXPECT_TRUE(ultCsr->waitUserFenecParams.userInterrupt);
}
HWTEST2_F(InOrderCmdListTests, givenUserInterruptEventAndTbxModeWhenWaitingThenDontWaitForUserFence, IsAtLeastXeHpCore) {
auto immCmdList = createImmCmdList<gfxCoreFamily>();
auto ultCsr = static_cast<UltCommandStreamReceiver<FamilyType> *>(device->getNEODevice()->getDefaultEngine().commandStreamReceiver);
ultCsr->waitUserFenecParams.forceRetStatusEnabled = true;
ultCsr->commandStreamReceiverType = CommandStreamReceiverType::tbx;
auto eventPool = createEvents<FamilyType>(2, false);
events[0]->enableKmdWaitMode();
events[0]->enableInterruptMode();
events[1]->enableKmdWaitMode();
events[1]->enableInterruptMode();
events[1]->externalInterruptId = 0x123;
immCmdList->appendLaunchKernel(kernel->toHandle(), groupCount, events[0]->toHandle(), 0, nullptr, launchParams, false);
immCmdList->appendLaunchKernel(kernel->toHandle(), groupCount, events[1]->toHandle(), 0, nullptr, launchParams, false);
events[0]->hostSynchronize(2);
events[1]->hostSynchronize(2);
EXPECT_EQ(0u, ultCsr->waitUserFenecParams.callCount);
}
HWTEST2_F(InOrderCmdListTests, givenUserInterruptEventWhenWaitingThenPassCorrectAllocation, IsAtLeastXeHpCore) {
debugManager.flags.InOrderDuplicatedCounterStorageEnabled.set(0);