From 763fe6ff866670246c90365611d1c617c548272b Mon Sep 17 00:00:00 2001 From: Compute-Runtime-Validation Date: Tue, 17 Jun 2025 05:53:38 +0200 Subject: [PATCH] Revert "feature: Enable defer backing by default" This reverts commit bf8de245d9cdd768ed2d13829d8cdc39b0e72e57. Signed-off-by: Compute-Runtime-Validation --- .../debug_settings/debug_variables_base.inl | 2 +- .../os_interface/linux/xe/ioctl_helper_xe.cpp | 15 ++++--- .../os_interface/linux/xe/ioctl_helper_xe.h | 2 - shared/test/common/test_files/igdrcl.config | 2 +- .../linux/xe/ioctl_helper_xe_tests.cpp | 42 ++++++------------- 5 files changed, 21 insertions(+), 42 deletions(-) diff --git a/shared/source/debug_settings/debug_variables_base.inl b/shared/source/debug_settings/debug_variables_base.inl index 79274b73d0..91e800e2dc 100644 --- a/shared/source/debug_settings/debug_variables_base.inl +++ b/shared/source/debug_settings/debug_variables_base.inl @@ -493,8 +493,8 @@ DECLARE_DEBUG_VARIABLE(bool, ForceSamplerLowFilteringPrecision, false, "Force Lo DECLARE_DEBUG_VARIABLE(bool, EnablePrivateBO, false, "Enable PRELIM_I915_GEM_CREATE_EXT_VM_PRIVATE extension creating VM_PRIVATE BOs") DECLARE_DEBUG_VARIABLE(bool, EnableAIL, true, "Enables AIL") DECLARE_DEBUG_VARIABLE(bool, EnableReservingInSvmRange, true, "Enables reserving virtual memory in the SVM range") +DECLARE_DEBUG_VARIABLE(bool, EnableDeferBacking, false, "Enables defer backing on xe kmd") DECLARE_DEBUG_VARIABLE(bool, DisableProgrammableMetricsSupport, false, "Disable Programmable Metrics support") -DECLARE_DEBUG_VARIABLE(int32_t, EnableDeferBacking, -1, "Enables defer backing on xe kmd, -1:default(enabled), 0:disable, 1:enable") DECLARE_DEBUG_VARIABLE(int64_t, VmBindWaitUserFenceTimeout, -1, "-1: default, >0: time in ns for wait function timeout") DECLARE_DEBUG_VARIABLE(int32_t, ForceRunAloneContext, -1, "Control creation of run-alone HW context, -1:default, 0:disable, 1:enable") DECLARE_DEBUG_VARIABLE(int32_t, AddClGlSharing, -1, "Add cl-gl extension") diff --git a/shared/source/os_interface/linux/xe/ioctl_helper_xe.cpp b/shared/source/os_interface/linux/xe/ioctl_helper_xe.cpp index 2cd76347cd..f38ab4c089 100644 --- a/shared/source/os_interface/linux/xe/ioctl_helper_xe.cpp +++ b/shared/source/os_interface/linux/xe/ioctl_helper_xe.cpp @@ -256,11 +256,6 @@ bool IoctlHelperXe::initialize() { assignValue(tileIdToMediaGtId, gt.tile_id, gt.gt_id); } } - - if (debugManager.flags.EnableDeferBacking.get() != -1) { - enableDeferBacking = debugManager.flags.EnableDeferBacking.get(); - } - return true; } @@ -717,7 +712,7 @@ int IoctlHelperXe::createGemExt(const MemRegionsVec &memClassInstances, size_t a create.placement = static_cast(memoryInstances.to_ulong()); create.cpu_caching = this->getCpuCachingMode(isCoherent, isSysMemOnly); - if (enableDeferBacking) { + if (debugManager.flags.EnableDeferBacking.get()) { create.flags |= DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING; } @@ -763,7 +758,7 @@ uint32_t IoctlHelperXe::createGem(uint64_t size, uint32_t memoryBanks, std::opti create.placement = static_cast(memoryInstances.to_ulong()); create.cpu_caching = this->getCpuCachingMode(isCoherent, isSysMemOnly); - if (enableDeferBacking) { + if (debugManager.flags.EnableDeferBacking.get()) { create.flags |= DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING; } @@ -1674,7 +1669,11 @@ bool IoctlHelperXe::isImmediateVmBindRequired() const { } bool IoctlHelperXe::makeResidentBeforeLockNeeded() const { - return enableDeferBacking; + auto makeResidentBeforeLockNeeded = false; + if (debugManager.flags.EnableDeferBacking.get()) { + makeResidentBeforeLockNeeded = true; + } + return makeResidentBeforeLockNeeded; } void IoctlHelperXe::insertEngineToContextParams(ContextParamEngines<> &contextParamEngines, uint32_t engineId, const EngineClassInstance *engineClassInstance, uint32_t tileId, bool hasVirtualEngines) { diff --git a/shared/source/os_interface/linux/xe/ioctl_helper_xe.h b/shared/source/os_interface/linux/xe/ioctl_helper_xe.h index d66b773ef4..f995eebe85 100644 --- a/shared/source/os_interface/linux/xe/ioctl_helper_xe.h +++ b/shared/source/os_interface/linux/xe/ioctl_helper_xe.h @@ -224,8 +224,6 @@ class IoctlHelperXe : public IoctlHelper { }; std::unique_ptr euDebugInterface; - - bool enableDeferBacking = true; }; template diff --git a/shared/test/common/test_files/igdrcl.config b/shared/test/common/test_files/igdrcl.config index d7d9e59b8f..9ad5601cc9 100644 --- a/shared/test/common/test_files/igdrcl.config +++ b/shared/test/common/test_files/igdrcl.config @@ -653,7 +653,7 @@ EnableTimestampPoolAllocator = -1 PipelinedEuThreadArbitration = -1 ExperimentalUSMAllocationReuseCleaner = -1 DummyPageBackingEnabled = 0 -EnableDeferBacking = -1 +EnableDeferBacking = 0 EmitMemAdvisePriorToCopyForNonUsm = -1 TreatNonUsmForTransfersAsSharedSystem = -1 SetMaxBVHLevels = -1 diff --git a/shared/test/unit_test/os_interface/linux/xe/ioctl_helper_xe_tests.cpp b/shared/test/unit_test/os_interface/linux/xe/ioctl_helper_xe_tests.cpp index 11c064b78d..ad451ef1a9 100644 --- a/shared/test/unit_test/os_interface/linux/xe/ioctl_helper_xe_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/xe/ioctl_helper_xe_tests.cpp @@ -122,6 +122,9 @@ TEST_F(IoctlHelperXeGemCreateExtTests, givenIoctlHelperXeWhenCallingGemCreateExt } TEST_F(IoctlHelperXeGemCreateExtTests, givenIoctlHelperXeWhenCallingGemCreateExtWithOnlySystemRegionAndCoherencyThenWriteBackCPUCachingIsUsed) { + DebugManagerStateRestore restorer; + debugManager.flags.EnableDeferBacking.set(1); + MemRegionsVec memRegions = {systemMemory}; bool isCoherent = true; @@ -130,24 +133,10 @@ TEST_F(IoctlHelperXeGemCreateExtTests, givenIoctlHelperXeWhenCallingGemCreateExt EXPECT_EQ(static_cast(DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING), (drm->createParamsFlags & DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING)); } -TEST_F(IoctlHelperXeGemCreateExtTests, givenIoctlHelperXeAndDeferBackingIsDisabledWhenCallingGemCreateExtThenVerifyGemCreateFlagsAreNotSet) { - DebugManagerStateRestore restorer; - debugManager.flags.EnableDeferBacking.set(0); - auto executionEnvironment = std::make_unique(); - auto drm = DrmMockXe::create(*executionEnvironment->rootDeviceEnvironments[0]); - auto xeIoctlHelper = static_cast(drm->getIoctlHelper()); - xeIoctlHelper->initialize(); - MemRegionsVec memRegions = {systemMemory}; - bool isCoherent = true; - - EXPECT_NE(0, xeIoctlHelper->createGemExt(memRegions, allocSize, handle, patIndex, std::nullopt, pairHandle, isChunked, numOfChunks, std::nullopt, std::nullopt, isCoherent)); - EXPECT_EQ(0u, drm->createParamsFlags); -} - TEST_F(IoctlHelperXeTest, givenIoctlHelperXeWhenCallGemCreateAndNoLocalMemoryThenProperValuesSet) { DebugManagerStateRestore restorer; debugManager.flags.EnableLocalMemory.set(0); - debugManager.flags.EnableDeferBacking.set(0); + debugManager.flags.EnableDeferBacking.set(1); auto executionEnvironment = std::make_unique(); auto drm = DrmMockXe::create(*executionEnvironment->rootDeviceEnvironments[0]); auto xeIoctlHelper = static_cast(drm->getIoctlHelper()); @@ -166,7 +155,7 @@ TEST_F(IoctlHelperXeTest, givenIoctlHelperXeWhenCallGemCreateAndNoLocalMemoryThe EXPECT_TRUE(xeIoctlHelper->bindInfo.empty()); EXPECT_EQ(size, drm->createParamsSize); - EXPECT_EQ(0u, drm->createParamsFlags); + EXPECT_EQ(static_cast(DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING), (drm->createParamsFlags & DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING)); EXPECT_EQ(DRM_XE_GEM_CPU_CACHING_WC, drm->createParamsCpuCaching); EXPECT_EQ(1u, drm->createParamsPlacement); @@ -178,6 +167,7 @@ TEST_F(IoctlHelperXeTest, givenIoctlHelperXeWhenCallGemCreateAndNoLocalMemoryThe TEST_F(IoctlHelperXeTest, givenIoctlHelperXeWhenCallGemCreateWhenMemoryBanksZeroThenProperValuesSet) { DebugManagerStateRestore restorer; debugManager.flags.EnableLocalMemory.set(0); + debugManager.flags.EnableDeferBacking.set(1); auto executionEnvironment = std::make_unique(); auto drm = DrmMockXe::create(*executionEnvironment->rootDeviceEnvironments[0]); auto xeIoctlHelper = static_cast(drm->getIoctlHelper()); @@ -208,6 +198,7 @@ TEST_F(IoctlHelperXeTest, givenIoctlHelperXeWhenCallGemCreateWhenMemoryBanksZero TEST_F(IoctlHelperXeTest, givenIoctlHelperXeWhenCallGemCreateAndLocalMemoryThenProperValuesSet) { DebugManagerStateRestore restorer; debugManager.flags.EnableLocalMemory.set(1); + debugManager.flags.EnableDeferBacking.set(1); auto executionEnvironment = std::make_unique(); auto drm = DrmMockXe::create(*executionEnvironment->rootDeviceEnvironments[0]); auto xeIoctlHelper = static_cast(drm->getIoctlHelper()); @@ -2898,20 +2889,11 @@ TEST_F(IoctlHelperXeTest, whenQueryDeviceIdAndRevisionAndSharedSystemUsmSupportD EXPECT_FALSE(drm->hasPageFaultSupport()); } -TEST_F(IoctlHelperXeTest, givenXeIoctlHelperWhenMakeResidentBeforeLockNeededIsCalledThenVerifyTrueIsReturned) { +TEST_F(IoctlHelperXeTest, givenXeIoctlHelperAndDeferBackingFlagSetToTrueWhenMakeResidentBeforeLockNeededIsCalledThenVerifyTrueIsReturned) { + DebugManagerStateRestore restorer; + debugManager.flags.EnableDeferBacking.set(1); auto executionEnvironment = std::make_unique(); - auto drm = DrmMockXe::create(*executionEnvironment->rootDeviceEnvironments[0]); - auto xeIoctlHelper = static_cast(drm->getIoctlHelper()); - xeIoctlHelper->initialize(); + DrmMock drm{*executionEnvironment->rootDeviceEnvironments[0]}; + auto xeIoctlHelper = std::make_unique(drm); EXPECT_TRUE(xeIoctlHelper->makeResidentBeforeLockNeeded()); } - -TEST_F(IoctlHelperXeTest, givenXeIoctlHelperAndDeferBackingFlagSetToFalseWhenMakeResidentBeforeLockNeededIsCalledThenVerifyTrueIsReturned) { - DebugManagerStateRestore restorer; - debugManager.flags.EnableDeferBacking.set(0); - auto executionEnvironment = std::make_unique(); - auto drm = DrmMockXe::create(*executionEnvironment->rootDeviceEnvironments[0]); - auto xeIoctlHelper = static_cast(drm->getIoctlHelper()); - xeIoctlHelper->initialize(); - EXPECT_FALSE(xeIoctlHelper->makeResidentBeforeLockNeeded()); -}