From e53eae6e5f92bdf06ebd8e44fba3b426fcff341d Mon Sep 17 00:00:00 2001 From: Compute-Runtime-Validation Date: Wed, 11 Jan 2023 18:53:39 +0100 Subject: [PATCH] Revert "[PVC] Remove tlb flush" This reverts commit 181d2021ed4ed858d8646075563a2ff1d0262daf. Signed-off-by: Compute-Runtime-Validation --- .../direct_submission/linux/drm_direct_submission.h | 1 - .../direct_submission/linux/drm_direct_submission.inl | 4 +--- shared/source/os_interface/hw_info_config.h | 3 +-- shared/source/os_interface/hw_info_config.inl | 5 ----- shared/source/os_interface/linux/drm_neo.cpp | 3 --- .../os_agnostic_hw_info_config_xe_hpc_core.inl | 5 ----- .../linux/drm_direct_submission_tests.cpp | 9 +++------ .../linux/drm_residency_handler_prelim_tests.cpp | 4 ++-- .../xe_hpc_core/pvc/test_hw_info_config_pvc.cpp | 4 ---- 9 files changed, 7 insertions(+), 31 deletions(-) diff --git a/shared/source/direct_submission/linux/drm_direct_submission.h b/shared/source/direct_submission/linux/drm_direct_submission.h index 672c182ee4..b1f6e6147a 100644 --- a/shared/source/direct_submission/linux/drm_direct_submission.h +++ b/shared/source/direct_submission/linux/drm_direct_submission.h @@ -42,6 +42,5 @@ class DrmDirectSubmission : public DirectSubmissionHw { TagData currentTagData{}; volatile TagAddressType *tagAddress; TaskCountType completionFenceValue{}; - bool tlbFlushRequired = true; }; } // namespace NEO diff --git a/shared/source/direct_submission/linux/drm_direct_submission.inl b/shared/source/direct_submission/linux/drm_direct_submission.inl index b6375cf8e5..61f4599be9 100644 --- a/shared/source/direct_submission/linux/drm_direct_submission.inl +++ b/shared/source/direct_submission/linux/drm_direct_submission.inl @@ -35,8 +35,6 @@ DrmDirectSubmission::DrmDirectSubmission(const DirectSubm this->completionFenceValue = static_cast(DebugManager.flags.OverrideUserFenceStartValue.get()); } - this->tlbFlushRequired = inputParams.rootDeviceEnvironment.getProductHelper().isTlbFlushRequired(); - auto osContextLinux = static_cast(&this->osContext); auto subDevices = osContextLinux->getDeviceBitfield(); @@ -164,7 +162,7 @@ bool DrmDirectSubmission::handleResidency() { template bool DrmDirectSubmission::isNewResourceHandleNeeded() { auto osContextLinux = static_cast(&this->osContext); - auto newResourcesBound = this->tlbFlushRequired && osContextLinux->isTlbFlushRequired(); + auto newResourcesBound = osContextLinux->isTlbFlushRequired(); if (DebugManager.flags.DirectSubmissionNewResourceTlbFlush.get() != -1) { newResourcesBound = DebugManager.flags.DirectSubmissionNewResourceTlbFlush.get(); diff --git a/shared/source/os_interface/hw_info_config.h b/shared/source/os_interface/hw_info_config.h index 52c0578c88..a0bc9d8c8d 100644 --- a/shared/source/os_interface/hw_info_config.h +++ b/shared/source/os_interface/hw_info_config.h @@ -151,7 +151,6 @@ class ProductHelper { virtual bool isMidThreadPreemptionDisallowedForRayTracingKernels() const = 0; virtual bool isBufferPoolAllocatorSupported() const = 0; virtual uint64_t overridePatIndex(AllocationType allocationType, uint64_t patIndex) const = 0; - virtual bool isTlbFlushRequired() const = 0; virtual bool getFrontEndPropertyScratchSizeSupport() const = 0; virtual bool getFrontEndPropertyPrivateScratchSizeSupport() const = 0; virtual bool getFrontEndPropertyComputeDispatchAllWalkerSupport() const = 0; @@ -296,7 +295,7 @@ class ProductHelperHw : public ProductHelper { bool isMidThreadPreemptionDisallowedForRayTracingKernels() const override; bool isBufferPoolAllocatorSupported() const override; uint64_t overridePatIndex(AllocationType allocationType, uint64_t patIndex) const override; - bool isTlbFlushRequired() const override; + bool getFrontEndPropertyScratchSizeSupport() const override; bool getFrontEndPropertyPrivateScratchSizeSupport() const override; bool getFrontEndPropertyComputeDispatchAllWalkerSupport() const override; diff --git a/shared/source/os_interface/hw_info_config.inl b/shared/source/os_interface/hw_info_config.inl index f24581b8ac..a9a8e3844b 100644 --- a/shared/source/os_interface/hw_info_config.inl +++ b/shared/source/os_interface/hw_info_config.inl @@ -50,11 +50,6 @@ void ProductHelperHw::adjustPlatformForProductFamily(HardwareInfo *h template void ProductHelperHw::adjustSamplerState(void *sampler, const HardwareInfo &hwInfo) const {} -template -bool ProductHelperHw::isTlbFlushRequired() const { - return true; -} - template void ProductHelperHw::enableBlitterOperationsSupport(HardwareInfo *hwInfo) const { hwInfo->capabilityTable.blitterOperationsSupported = obtainBlitterPreference(*hwInfo); diff --git a/shared/source/os_interface/linux/drm_neo.cpp b/shared/source/os_interface/linux/drm_neo.cpp index dd0b5d6146..c7553bb014 100644 --- a/shared/source/os_interface/linux/drm_neo.cpp +++ b/shared/source/os_interface/linux/drm_neo.cpp @@ -655,9 +655,6 @@ uint32_t Drm::getVirtualMemoryAddressSpace(uint32_t vmId) const { } void Drm::setNewResourceBoundToVM(uint32_t vmHandleId) { - if (!this->rootDeviceEnvironment.getProductHelper().isTlbFlushRequired()) { - return; - } const auto &engines = this->rootDeviceEnvironment.executionEnvironment.memoryManager->getRegisteredEngines(); for (const auto &engine : engines) { if (engine.osContext->getDeviceBitfield().test(vmHandleId)) { diff --git a/shared/source/xe_hpc_core/os_agnostic_hw_info_config_xe_hpc_core.inl b/shared/source/xe_hpc_core/os_agnostic_hw_info_config_xe_hpc_core.inl index 8e634985ef..44ef5e1773 100644 --- a/shared/source/xe_hpc_core/os_agnostic_hw_info_config_xe_hpc_core.inl +++ b/shared/source/xe_hpc_core/os_agnostic_hw_info_config_xe_hpc_core.inl @@ -43,11 +43,6 @@ std::pair ProductHelperHw::isPipeControlPriorToNonPipeli return {isBasicWARequired, isExtendedWARequired}; } -template <> -bool ProductHelperHw::isTlbFlushRequired() const { - return false; -} - template <> void ProductHelperHw::adjustSamplerState(void *sampler, const HardwareInfo &hwInfo) const { using SAMPLER_STATE = typename XeHpcCoreFamily::SAMPLER_STATE; 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 a35077c4ca..82f4b77e25 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 @@ -607,12 +607,9 @@ HWTEST_F(DrmDirectSubmissionTest, givenNewResourceBoundWhenDispatchCommandBuffer hwParse.parseCommands(directSubmission.ringCommandStream, 0); hwParse.findHardwareCommands(); auto *pipeControl = hwParse.getCommand(); - if (executionEnvironment.rootDeviceEnvironments[0]->getProductHelper().isTlbFlushRequired()) { - auto *pipeControl = hwParse.getCommand(); - EXPECT_TRUE(pipeControl->getTlbInvalidate()); - } else { - EXPECT_EQ(pipeControl, nullptr); - } + 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 179385692b..95ccb796ec 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 @@ -123,7 +123,7 @@ TEST_F(DrmMemoryOperationsHandlerBindMultiRootDeviceTest, whenSetNewResourceBoun for (const auto &engine : device->getAllEngines()) { auto osContexLinux = static_cast(engine.osContext); - if (osContexLinux->getDeviceBitfield().test(1u) && executionEnvironment->rootDeviceEnvironments[device->getRootDeviceIndex()]->getProductHelper().isTlbFlushRequired()) { + if (osContexLinux->getDeviceBitfield().test(1u)) { EXPECT_TRUE(osContexLinux->isTlbFlushRequired()); } else { EXPECT_FALSE(osContexLinux->isTlbFlushRequired()); @@ -141,7 +141,7 @@ TEST_F(DrmMemoryOperationsHandlerBindMultiRootDeviceTest, whenSetNewResourceBoun for (const auto &engine : devices[1]->getAllEngines()) { auto osContexLinux = static_cast(engine.osContext); - if (osContexLinux->getDeviceBitfield().test(0u) && executionEnvironment->rootDeviceEnvironments[1]->getProductHelper().isTlbFlushRequired()) { + if (osContexLinux->getDeviceBitfield().test(0u)) { EXPECT_TRUE(osContexLinux->isTlbFlushRequired()); } else { EXPECT_FALSE(osContexLinux->isTlbFlushRequired()); diff --git a/shared/test/unit_test/xe_hpc_core/pvc/test_hw_info_config_pvc.cpp b/shared/test/unit_test/xe_hpc_core/pvc/test_hw_info_config_pvc.cpp index f3b70a1867..5f2d1d91ef 100644 --- a/shared/test/unit_test/xe_hpc_core/pvc/test_hw_info_config_pvc.cpp +++ b/shared/test/unit_test/xe_hpc_core/pvc/test_hw_info_config_pvc.cpp @@ -27,10 +27,6 @@ PVCTEST_F(PvcProductHelper, whenGettingAubstreamProductFamilyThenProperEnumValue EXPECT_EQ(aub_stream::ProductFamily::Pvc, productHelper->getAubStreamProductFamily()); } -PVCTEST_F(PvcProductHelper, whenCheckIsTlbFlushRequiredThenReturnProperValue) { - EXPECT_FALSE(productHelper->isTlbFlushRequired()); -} - PVCTEST_F(PvcProductHelper, givenPVCRevId3AndAboveWhenGettingThreadEuRatioForScratchThen16IsReturned) { auto hwInfo = *defaultHwInfo; hwInfo.platform.usRevId = 3;