From 9d943e484e03b39fdb53b311109a5f2f5b7fabc8 Mon Sep 17 00:00:00 2001 From: "Dunajski, Bartosz" Date: Fri, 18 Aug 2023 13:15:45 +0000 Subject: [PATCH] fix: stall RelaxedOrdering when submitting regular cmd list Signed-off-by: Dunajski, Bartosz --- level_zero/core/source/cmdqueue/cmdqueue.cpp | 2 +- .../sources/cmdlist/test_cmdlist_2.cpp | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/level_zero/core/source/cmdqueue/cmdqueue.cpp b/level_zero/core/source/cmdqueue/cmdqueue.cpp index 7511f0687b..6e2611ba76 100644 --- a/level_zero/core/source/cmdqueue/cmdqueue.cpp +++ b/level_zero/core/source/cmdqueue/cmdqueue.cpp @@ -123,7 +123,7 @@ NEO::SubmissionStatus CommandQueueImp::submitBatchBuffer(size_t offset, NEO::Res NEO::BatchBuffer batchBuffer(this->startingCmdBuffer->getGraphicsAllocation(), offset, 0, 0, nullptr, false, false, NEO::QueueThrottle::HIGH, NEO::QueueSliceCount::defaultSliceCount, - this->startingCmdBuffer->getUsed(), this->startingCmdBuffer, endingCmdPtr, csr->getNumClients(), false, false); + this->startingCmdBuffer->getUsed(), this->startingCmdBuffer, endingCmdPtr, csr->getNumClients(), true, false); batchBuffer.disableFlatRingBuffer = true; if (this->startingCmdBuffer != &this->commandStream) { diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_2.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_2.cpp index e4b985d8e3..40b27e3818 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_2.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_cmdlist_2.cpp @@ -1534,6 +1534,22 @@ HWTEST_F(PrimaryBatchBufferCmdListTest, givenPrimaryBatchBufferWhenCommandListHa EXPECT_EQ(expectedEndPtr, cmdContainer.getEndCmdPtr()); } +HWTEST_F(PrimaryBatchBufferCmdListTest, givenRegularCmdListWhenFlushingThenPassStallingCmdsInfo) { + auto ultCsr = static_cast *>(commandQueue->getCsr()); + ultCsr->recordFlusheBatchBuffer = true; + + ze_group_count_t groupCount{1, 1, 1}; + CmdListKernelLaunchParams launchParams = {}; + EXPECT_EQ(ZE_RESULT_SUCCESS, commandList->appendLaunchKernel(kernel->toHandle(), &groupCount, nullptr, 0, nullptr, launchParams, false)); + + EXPECT_EQ(ZE_RESULT_SUCCESS, commandList->close()); + + auto cmdListHandle = commandList->toHandle(); + EXPECT_EQ(ZE_RESULT_SUCCESS, commandQueue->executeCommandLists(1, &cmdListHandle, nullptr, true)); + + EXPECT_TRUE(ultCsr->latestFlushedBatchBuffer.hasStallingCmds); +} + HWTEST_F(PrimaryBatchBufferCmdListTest, givenPrimaryBatchBufferWhenCopyCommandListAndQueueAreCreatedThenFirstDispatchCreatesGlobalInitPreambleAndLaterDispatchProvideCmdListBuffer) { using MI_BATCH_BUFFER_START = typename FamilyType::MI_BATCH_BUFFER_START;