From 5652edb92fd7801b5b97a0f69839abf4600026f5 Mon Sep 17 00:00:00 2001 From: Compute-Runtime-Validation Date: Fri, 23 Dec 2022 10:53:47 +0100 Subject: [PATCH] Revert "Remove tlb flush from CCS" This reverts commit 797f56bed46caba23260fb9746a8ad495d773ff5. Signed-off-by: Compute-Runtime-Validation --- .../source/direct_submission/linux/drm_direct_submission.inl | 2 +- shared/source/os_interface/linux/drm_neo.cpp | 2 +- .../direct_submission/linux/drm_direct_submission_tests.cpp | 5 +++-- .../linux/drm_residency_handler_prelim_tests.cpp | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/shared/source/direct_submission/linux/drm_direct_submission.inl b/shared/source/direct_submission/linux/drm_direct_submission.inl index 783763aaa8..2aa533f9bb 100644 --- a/shared/source/direct_submission/linux/drm_direct_submission.inl +++ b/shared/source/direct_submission/linux/drm_direct_submission.inl @@ -162,7 +162,7 @@ bool DrmDirectSubmission::handleResidency() { template bool DrmDirectSubmission::isNewResourceHandleNeeded() { auto osContextLinux = static_cast(&this->osContext); - auto newResourcesBound = EngineHelpers::isBcs(osContextLinux->getEngineType()) && osContextLinux->isTlbFlushRequired(); + auto newResourcesBound = osContextLinux->isTlbFlushRequired(); if (DebugManager.flags.DirectSubmissionNewResourceTlbFlush.get() != -1) { newResourcesBound = DebugManager.flags.DirectSubmissionNewResourceTlbFlush.get(); diff --git a/shared/source/os_interface/linux/drm_neo.cpp b/shared/source/os_interface/linux/drm_neo.cpp index aa66d91cfd..6deeab0908 100644 --- a/shared/source/os_interface/linux/drm_neo.cpp +++ b/shared/source/os_interface/linux/drm_neo.cpp @@ -659,7 +659,7 @@ uint32_t Drm::getVirtualMemoryAddressSpace(uint32_t vmId) const { void Drm::setNewResourceBoundToVM(uint32_t vmHandleId) { const auto &engines = this->rootDeviceEnvironment.executionEnvironment.memoryManager->getRegisteredEngines(); for (const auto &engine : engines) { - if (engine.osContext->getDeviceBitfield().test(vmHandleId) && EngineHelpers::isBcs(engine.osContext->getEngineType())) { + if (engine.osContext->getDeviceBitfield().test(vmHandleId)) { auto osContextLinux = static_cast(engine.osContext); if (&osContextLinux->getDrm() == this) { diff --git a/shared/test/unit_test/direct_submission/linux/drm_direct_submission_tests.cpp b/shared/test/unit_test/direct_submission/linux/drm_direct_submission_tests.cpp index 146080c33d..7d15f2d7df 100644 --- a/shared/test/unit_test/direct_submission/linux/drm_direct_submission_tests.cpp +++ b/shared/test/unit_test/direct_submission/linux/drm_direct_submission_tests.cpp @@ -584,8 +584,9 @@ HWTEST_F(DrmDirectSubmissionTest, givenNewResourceBoundWhenDispatchCommandBuffer hwParse.parseCommands(directSubmission.ringCommandStream, 0); hwParse.findHardwareCommands(); auto *pipeControl = hwParse.getCommand(); - EXPECT_EQ(pipeControl, nullptr); - EXPECT_TRUE(osContext->isTlbFlushRequired()); + EXPECT_TRUE(pipeControl->getTlbInvalidate()); + EXPECT_TRUE(pipeControl->getTextureCacheInvalidationEnable()); + EXPECT_FALSE(osContext->isTlbFlushRequired()); EXPECT_EQ(directSubmission.getSizeNewResourceHandler(), sizeof(PIPE_CONTROL)); } diff --git a/shared/test/unit_test/os_interface/linux/drm_residency_handler_prelim_tests.cpp b/shared/test/unit_test/os_interface/linux/drm_residency_handler_prelim_tests.cpp index 312dd3e3d6..c2c7a45e75 100644 --- a/shared/test/unit_test/os_interface/linux/drm_residency_handler_prelim_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/drm_residency_handler_prelim_tests.cpp @@ -121,7 +121,7 @@ TEST_F(DrmMemoryOperationsHandlerBindMultiRootDeviceTest, whenSetNewResourceBoun for (const auto &engine : device->getAllEngines()) { auto osContexLinux = static_cast(engine.osContext); - if (osContexLinux->getDeviceBitfield().test(1u) && EngineHelpers::isBcs(osContexLinux->getEngineType())) { + if (osContexLinux->getDeviceBitfield().test(1u)) { EXPECT_TRUE(osContexLinux->isTlbFlushRequired()); } else { EXPECT_FALSE(osContexLinux->isTlbFlushRequired()); @@ -139,7 +139,7 @@ TEST_F(DrmMemoryOperationsHandlerBindMultiRootDeviceTest, whenSetNewResourceBoun for (const auto &engine : devices[1]->getAllEngines()) { auto osContexLinux = static_cast(engine.osContext); - if (osContexLinux->getDeviceBitfield().test(0u) && EngineHelpers::isBcs(osContexLinux->getEngineType())) { + if (osContexLinux->getDeviceBitfield().test(0u)) { EXPECT_TRUE(osContexLinux->isTlbFlushRequired()); } else { EXPECT_FALSE(osContexLinux->isTlbFlushRequired());