From 1d2ed7e5340781b13e92914648575565adb97531 Mon Sep 17 00:00:00 2001 From: Lukasz Jobczyk Date: Mon, 31 Jul 2023 16:34:45 +0000 Subject: [PATCH] fix: invalidate tlb when dispatch monitor fence Related-To: NEO-8067 Signed-off-by: Lukasz Jobczyk --- .../source/direct_submission/dispatchers/render_dispatcher.inl | 1 + .../direct_submission/dispatchers/render_dispatcher_tests.cpp | 3 +++ 2 files changed, 4 insertions(+) diff --git a/shared/source/direct_submission/dispatchers/render_dispatcher.inl b/shared/source/direct_submission/dispatchers/render_dispatcher.inl index 85100db48a..87d28221e2 100644 --- a/shared/source/direct_submission/dispatchers/render_dispatcher.inl +++ b/shared/source/direct_submission/dispatchers/render_dispatcher.inl @@ -36,6 +36,7 @@ inline void RenderDispatcher::dispatchMonitorFence(LinearStream &cmdB args.dcFlushEnable = dcFlushRequired; args.workloadPartitionOffset = partitionedWorkload; args.notifyEnable = useNotifyEnable; + args.tlbInvalidation = true; MemorySynchronizationCommands::addBarrierWithPostSyncOperation( cmdBuffer, diff --git a/shared/test/unit_test/direct_submission/dispatchers/render_dispatcher_tests.cpp b/shared/test/unit_test/direct_submission/dispatchers/render_dispatcher_tests.cpp index 0377bf7f09..0c91db8546 100644 --- a/shared/test/unit_test/direct_submission/dispatchers/render_dispatcher_tests.cpp +++ b/shared/test/unit_test/direct_submission/dispatchers/render_dispatcher_tests.cpp @@ -142,6 +142,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, RenderDispatcherTest, EXPECT_EQ(gpuVa, NEO::UnitTestHelper::getPipeControlPostSyncAddress(*pipeControl)); EXPECT_EQ(value, pipeControl->getImmediateData()); EXPECT_TRUE(pipeControl->getWorkloadPartitionIdOffsetEnable()); + EXPECT_TRUE(pipeControl->getTlbInvalidate()); break; } } @@ -175,6 +176,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, RenderDispatcherTest, EXPECT_EQ(gpuAddress, NEO::UnitTestHelper::getPipeControlPostSyncAddress(*pipeControl)); EXPECT_EQ(value, pipeControl->getImmediateData()); EXPECT_TRUE(pipeControl->getNotifyEnable()); + EXPECT_TRUE(pipeControl->getTlbInvalidate()); break; } } @@ -203,6 +205,7 @@ HWTEST_F(RenderDispatcherTest, givenRenderWithDcFlushFlagTrueWhenAddingMonitorFe (pipeControl->getImmediateData() == value); if (foundMonitorFence) { EXPECT_TRUE(pipeControl->getDcFlushEnable()); + EXPECT_TRUE(pipeControl->getTlbInvalidate()); break; } }