From 02ef252b7d9772b570e131114bfe49501c7ead05 Mon Sep 17 00:00:00 2001 From: Kacper Nowak Date: Tue, 31 Oct 2023 02:33:24 +0000 Subject: [PATCH] refactor: Store AIL in root device environment Instead of storing AIL configurations in global table, store it in root device environment. This also prevents potential scenario with accessing deleted memory due to symbol collision when application uses both OCL/L0 libraries. - AIL is now stored in root device environment, and gets initialized with other helpers - Minor: corrected naming in ULTs Signed-off-by: Kacper Nowak Related-To: NEO-9240 --- opencl/source/program/create.inl | 4 +- .../test/unit_test/program/program_tests.cpp | 21 +-- shared/source/ail/ail_configuration.h | 26 +++- shared/source/ail/ail_configuration_extra.cpp | 6 +- .../root_device_environment.cpp | 16 ++- .../root_device_environment.h | 4 + .../common/mocks/mock_ail_configuration.h | 4 +- shared/test/unit_test/ail/ail_tests.cpp | 120 ++++-------------- shared/test/unit_test/ail/ail_tests_base.cpp | 12 +- .../ail/windows/ail_windows_tests.cpp | 37 ++---- .../execution_environment_tests.cpp | 11 ++ .../dg1/execution_environment_tests_dg1.cpp | 9 +- .../xe_hpg_core/dg2/ail_tests_dg2.cpp | 5 - .../xe_hpg_core/mtl/ail_tests_mtl.cpp | 5 +- 14 files changed, 98 insertions(+), 182 deletions(-) diff --git a/opencl/source/program/create.inl b/opencl/source/program/create.inl index 4d44f66725..df5321af1b 100644 --- a/opencl/source/program/create.inl +++ b/opencl/source/program/create.inl @@ -6,6 +6,7 @@ */ #include "shared/source/ail/ail_configuration.h" +#include "shared/source/execution_environment/root_device_environment.h" #include "shared/source/helpers/hw_info.h" #include "shared/source/helpers/string_helpers.h" @@ -71,8 +72,7 @@ T *Program::create( if (CL_SUCCESS == retVal) { - auto &hwInfo = pContext->getDevice(0)->getHardwareInfo(); - auto ail = AILConfiguration::get(hwInfo.platform.eProductFamily); + auto ail = pContext->getDevice(0)->getRootDeviceEnvironment().getAILConfigurationHelper(); if (ail) { ail->modifyKernelIfRequired(combinedString); } diff --git a/opencl/test/unit_test/program/program_tests.cpp b/opencl/test/unit_test/program/program_tests.cpp index ae657d6450..99c0be5ece 100644 --- a/opencl/test/unit_test/program/program_tests.cpp +++ b/opencl/test/unit_test/program/program_tests.cpp @@ -680,10 +680,10 @@ void MinimumProgramFixture::TearDown() { NEO::PlatformFixture::tearDown(); } -TEST_F(MinimumProgramFixture, givenEmptyAilWhenCreateProgramWithSourcesThenSourcesDoNotChange) { - - VariableBackup ailConfigurationBackup(&ailConfigurationTable[productFamily]); - ailConfigurationTable[productFamily] = nullptr; +HWTEST2_F(MinimumProgramFixture, givenEmptyAilWhenCreateProgramWithSourcesThenSourcesDoNotChange, IsDG2) { + auto pDevice = pContext->getDevice(0); + auto rootDeviceEnvironment = pDevice->getExecutionEnvironment()->rootDeviceEnvironments[rootDeviceIndex].get(); + rootDeviceEnvironment->ailConfiguration.reset(nullptr); const char *sources[] = {"kernel() {}"}; size_t knownSourceSize = strlen(sources[0]); @@ -701,9 +701,10 @@ TEST_F(MinimumProgramFixture, givenEmptyAilWhenCreateProgramWithSourcesThenSourc pProgram->release(); } -HWTEST_F(MinimumProgramFixture, givenEmptyAilWhenCreateProgramWithSourcesAndWithDummyKernelThenDoNotMarkApplicationContextAsNonZebin) { - VariableBackup ailConfigurationBackup(&ailConfigurationTable[productFamily]); - ailConfigurationTable[productFamily] = nullptr; +HWTEST2_F(MinimumProgramFixture, givenEmptyAilWhenCreateProgramWithSourcesAndWithDummyKernelThenDoNotMarkApplicationContextAsNonZebin, IsAtLeastSkl) { + auto pDevice = pContext->getDevice(0); + auto rootDeviceEnvironment = pDevice->getExecutionEnvironment()->rootDeviceEnvironments[rootDeviceIndex].get(); + rootDeviceEnvironment->ailConfiguration.reset(nullptr); const char *dummyKernelSources[] = {"kernel void _(){}"}; // if detected - should trigger fallback to CTNI size_t knownSourceSize = strlen(dummyKernelSources[0]); @@ -754,10 +755,10 @@ HWTEST2_F(MinimumProgramFixture, givenAILReturningTrueForFallbackRequirementWhen return true; } }; - VariableBackup ailConfiguration(&ailConfigurationTable[productFamily]); + auto pDevice = pContext->getDevice(0); + auto rootDeviceEnvironment = pDevice->getExecutionEnvironment()->rootDeviceEnvironments[rootDeviceIndex].get(); + rootDeviceEnvironment->ailConfiguration.reset(new MockAIL()); - MockAIL mockAIL; - ailConfigurationTable[productFamily] = &mockAIL; ASSERT_FALSE(pContext->checkIfContextIsNonZebin()); const char *kernelSources[] = {"some source code"}; diff --git a/shared/source/ail/ail_configuration.h b/shared/source/ail/ail_configuration.h index 9fa8143dba..3877dd558d 100644 --- a/shared/source/ail/ail_configuration.h +++ b/shared/source/ail/ail_configuration.h @@ -10,6 +10,7 @@ #include "igfxfmid.h" #include +#include #include #include @@ -43,14 +44,24 @@ enum class AILEnumeration : uint32_t { AIL_MAX_OPTIONS_COUNT }; +class AILConfiguration; +using AILConfigurationCreateFunctionType = std::unique_ptr (*)(); +extern AILConfigurationCreateFunctionType ailConfigurationFactory[IGFX_MAX_PRODUCT]; + class AILConfiguration { public: + static std::unique_ptr create(PRODUCT_FAMILY product) { + auto ailConfigurationCreateFunction = ailConfigurationFactory[product]; + if (ailConfigurationCreateFunction == nullptr) { + return nullptr; + } + auto ailConfiguration = ailConfigurationCreateFunction(); + return ailConfiguration; + } AILConfiguration() = default; MOCKABLE_VIRTUAL bool initProcessExecutableName(); - static AILConfiguration *get(PRODUCT_FAMILY productFamily); - virtual void apply(RuntimeCapabilityTable &runtimeCapabilityTable); virtual void modifyKernelIfRequired(std::string &kernel) = 0; @@ -59,6 +70,8 @@ class AILConfiguration { virtual bool isContextSyncFlagRequired() = 0; + virtual ~AILConfiguration() = default; + protected: virtual void applyExt(RuntimeCapabilityTable &runtimeCapabilityTable) = 0; std::string processName; @@ -67,15 +80,13 @@ class AILConfiguration { MOCKABLE_VIRTUAL bool isKernelHashCorrect(const std::string &kernelSources, uint64_t expectedHash) const; }; -extern AILConfiguration *ailConfigurationTable[IGFX_MAX_PRODUCT]; - extern const std::set applicationsContextSyncFlag; template class AILConfigurationHw : public AILConfiguration { public: - static AILConfigurationHw &get() { - static AILConfigurationHw ailConfiguration; + static std::unique_ptr create() { + auto ailConfiguration = std::unique_ptr(new AILConfigurationHw()); return ailConfiguration; } @@ -89,7 +100,8 @@ class AILConfigurationHw : public AILConfiguration { template struct EnableAIL { EnableAIL() { - ailConfigurationTable[product] = &AILConfigurationHw::get(); + auto ailConfigurationCreateFunction = AILConfigurationHw::create; + ailConfigurationFactory[product] = ailConfigurationCreateFunction; } }; diff --git a/shared/source/ail/ail_configuration_extra.cpp b/shared/source/ail/ail_configuration_extra.cpp index 84db3030d9..160b7a5324 100644 --- a/shared/source/ail/ail_configuration_extra.cpp +++ b/shared/source/ail/ail_configuration_extra.cpp @@ -28,11 +28,7 @@ std::map> applicationMapMTL = {{"s const std::set applicationsContextSyncFlag = {}; -AILConfiguration *ailConfigurationTable[IGFX_MAX_PRODUCT] = {}; - -AILConfiguration *AILConfiguration::get(PRODUCT_FAMILY productFamily) { - return ailConfigurationTable[productFamily]; -} +AILConfigurationCreateFunctionType ailConfigurationFactory[IGFX_MAX_PRODUCT]; void AILConfiguration::apply(RuntimeCapabilityTable &runtimeCapabilityTable) { auto search = applicationMap.find(processName); diff --git a/shared/source/execution_environment/root_device_environment.cpp b/shared/source/execution_environment/root_device_environment.cpp index 083912d6bd..e922742f12 100644 --- a/shared/source/execution_environment/root_device_environment.cpp +++ b/shared/source/execution_environment/root_device_environment.cpp @@ -101,11 +101,6 @@ void RootDeviceEnvironment::prepareForCleanup() const { } bool RootDeviceEnvironment::initAilConfiguration() { - if (!DebugManager.flags.EnableAIL.get()) { - return true; - } - auto ailConfiguration = AILConfiguration::get(hwInfo->platform.eProductFamily); - if (ailConfiguration == nullptr) { return true; } @@ -161,6 +156,7 @@ void RootDeviceEnvironment::initHelpers() { initApiGfxCoreHelper(); initCompilerProductHelper(); initReleaseHelper(); + initAilConfigurationHelper(); } void RootDeviceEnvironment::initGfxCoreHelper() { @@ -186,10 +182,20 @@ void RootDeviceEnvironment::initReleaseHelper() { } } +void RootDeviceEnvironment::initAilConfigurationHelper() { + if (ailConfiguration == nullptr && DebugManager.flags.EnableAIL.get()) { + ailConfiguration = AILConfiguration::create(this->getHardwareInfo()->platform.eProductFamily); + } +} + ReleaseHelper *RootDeviceEnvironment::getReleaseHelper() const { return releaseHelper.get(); } +AILConfiguration *RootDeviceEnvironment::getAILConfigurationHelper() const { + return ailConfiguration.get(); +} + BuiltIns *RootDeviceEnvironment::getBuiltIns() { if (this->builtins.get() == nullptr) { std::lock_guard autolock(this->mtx); diff --git a/shared/source/execution_environment/root_device_environment.h b/shared/source/execution_environment/root_device_environment.h index 294dbf973d..ca6f6580eb 100644 --- a/shared/source/execution_environment/root_device_environment.h +++ b/shared/source/execution_environment/root_device_environment.h @@ -40,6 +40,7 @@ class ApiGfxCoreHelper; class CompilerProductHelper; class GraphicsAllocation; class ReleaseHelper; +class AILConfiguration; struct AllocationProperties; struct HardwareInfo; @@ -85,7 +86,9 @@ struct RootDeviceEnvironment : NonCopyableClass { void initApiGfxCoreHelper(); void initCompilerProductHelper(); void initReleaseHelper(); + void initAilConfigurationHelper(); ReleaseHelper *getReleaseHelper() const; + AILConfiguration *getAILConfigurationHelper() const; template HelperType &getHelper() const; const ProductHelper &getProductHelper() const; @@ -108,6 +111,7 @@ struct RootDeviceEnvironment : NonCopyableClass { std::unique_ptr productHelper; std::unique_ptr compilerProductHelper; std::unique_ptr releaseHelper; + std::unique_ptr ailConfiguration; std::unique_ptr assertHandler; diff --git a/shared/test/common/mocks/mock_ail_configuration.h b/shared/test/common/mocks/mock_ail_configuration.h index dd85413d2b..13194341b1 100644 --- a/shared/test/common/mocks/mock_ail_configuration.h +++ b/shared/test/common/mocks/mock_ail_configuration.h @@ -13,10 +13,8 @@ namespace NEO { class MockAILConfiguration : public AILConfiguration { public: bool initProcessExecutableName() override { - initCalled = true; return true; } - bool initCalled = false; void modifyKernelIfRequired(std::string &kernel) override {} bool isFallbackToPatchtokensRequired(const std::string &kernelSources) override { @@ -33,7 +31,7 @@ class MockAILConfiguration : public AILConfiguration { }; template -class AILMock : public AILConfigurationHw { +class AILWhitebox : public AILConfigurationHw { public: using AILConfiguration::apply; using AILConfiguration::isKernelHashCorrect; diff --git a/shared/test/unit_test/ail/ail_tests.cpp b/shared/test/unit_test/ail/ail_tests.cpp index e2002673b0..6e5fb8bf15 100644 --- a/shared/test/unit_test/ail/ail_tests.cpp +++ b/shared/test/unit_test/ail/ail_tests.cpp @@ -19,54 +19,37 @@ using IsHostPtrTrackingDisabled = IsWithinGfxCore ailConfigurationBackup(&ailConfigurationTable[productFamily]); - - AILMock ailTemp; - ailTemp.processName = "blender"; - ailConfigurationTable[productFamily] = &ailTemp; - - auto ailConfiguration = AILConfiguration::get(productFamily); - ASSERT_NE(nullptr, ailConfiguration); + AILWhitebox ail; + ail.processName = "blender"; NEO::RuntimeCapabilityTable rtTable = {}; rtTable.ftrSupportsFP64 = false; - ailConfiguration->apply(rtTable); + ail.apply(rtTable); EXPECT_EQ(rtTable.ftrSupportsFP64, true); } HWTEST2_F(AILTests, givenInitilizedTemplateWhenApplyWithAdobePremiereProIsCalledThenPreferredPlatformNameIsSet, IsAtLeastGen9) { - VariableBackup ailConfigurationBackup(&ailConfigurationTable[productFamily]); - - AILMock ailTemp; - ailTemp.processName = "Adobe Premiere Pro"; - ailConfigurationTable[productFamily] = &ailTemp; - - auto ailConfiguration = AILConfiguration::get(productFamily); - ASSERT_NE(nullptr, ailConfiguration); + AILWhitebox ail; + ail.processName = "Adobe Premiere Pro"; NEO::RuntimeCapabilityTable rtTable = {}; rtTable.preferredPlatformName = nullptr; - ailConfiguration->apply(rtTable); + ail.apply(rtTable); EXPECT_NE(nullptr, rtTable.preferredPlatformName); EXPECT_STREQ("Intel(R) OpenCL", rtTable.preferredPlatformName); } HWTEST2_F(AILTests, whenCheckingIfSourcesContainKernelThenCorrectResultIsReturned, IsAtLeastGen12lp) { - VariableBackup ailConfigurationBackup(&ailConfigurationTable[productFamily]); - AILMock ail; - ailConfigurationTable[productFamily] = &ail; - auto ailConfiguration = AILConfiguration::get(productFamily); - ASSERT_NE(nullptr, ailConfiguration); + AILWhitebox ail; std::string kernelSources = R"( __kernel void CopyBufferToBufferLeftLeftover( @@ -96,11 +79,7 @@ __kernel void CopyBufferToBufferMiddle( } HWTEST2_F(AILTests, whenCheckingIsKernelHashCorrectThenCorrectResultIsReturned, IsAtLeastGen12lp) { - VariableBackup ailConfigurationBackup(&ailConfigurationTable[productFamily]); - AILMock ail; - ailConfigurationTable[productFamily] = &ail; - auto ailConfiguration = AILConfiguration::get(productFamily); - ASSERT_NE(nullptr, ailConfiguration); + AILWhitebox ail; std::string kernelSources = R"( __kernel void CopyBufferToBufferLeftLeftover( @@ -125,11 +104,7 @@ __kernel void CopyBufferToBufferLeftLeftover( } HWTEST2_F(AILTests, whenModifyKernelIfRequiredIsCalledThenDontChangeKernelSources, IsAtLeastGen12lp) { - VariableBackup ailConfigurationBackup(&ailConfigurationTable[productFamily]); - AILMock ail; - ailConfigurationTable[productFamily] = &ail; - auto ailConfiguration = AILConfiguration::get(productFamily); - ASSERT_NE(nullptr, ailConfiguration); + AILWhitebox ail; std::string kernelSources = "example_kernel(){}"; auto copyKernel = kernelSources; @@ -140,99 +115,48 @@ HWTEST2_F(AILTests, whenModifyKernelIfRequiredIsCalledThenDontChangeKernelSource } HWTEST2_F(AILTests, givenPreGen12AndProcessNameIsResolveWhenApplyWithDavinciResolveThenHostPtrTrackingIsDisabled, IsHostPtrTrackingDisabled) { - VariableBackup ailConfigurationBackup(&ailConfigurationTable[productFamily]); - - AILMock ailTemp; - ailTemp.processName = "resolve"; - ailConfigurationTable[productFamily] = &ailTemp; - - auto ailConfiguration = AILConfiguration::get(productFamily); - ASSERT_NE(nullptr, ailConfiguration); + AILWhitebox ail; + ail.processName = "resolve"; NEO::RuntimeCapabilityTable rtTable = {}; rtTable.hostPtrTrackingEnabled = true; - ailConfiguration->apply(rtTable); + ail.apply(rtTable); EXPECT_FALSE(rtTable.hostPtrTrackingEnabled); } HWTEST2_F(AILTests, givenPreGen12AndAndProcessNameIsNotResolveWhenApplyWithDavinciResolveThenHostPtrTrackingIsEnabled, IsHostPtrTrackingDisabled) { - VariableBackup ailConfigurationBackup(&ailConfigurationTable[productFamily]); - - AILMock ailTemp; - ailTemp.processName = "usualProcessName"; - ailConfigurationTable[productFamily] = &ailTemp; - - auto ailConfiguration = AILConfiguration::get(productFamily); - ASSERT_NE(nullptr, ailConfiguration); + AILWhitebox ail; + ail.processName = "usualProcessName"; NEO::RuntimeCapabilityTable rtTable = {}; rtTable.hostPtrTrackingEnabled = true; - ailConfiguration->apply(rtTable); + ail.apply(rtTable); EXPECT_TRUE(rtTable.hostPtrTrackingEnabled); } -HWTEST_F(AILTests, whenAilIsDisabledByDebugVariableThenAilIsNotInitialized) { - DebugManagerStateRestore restore; - NEO::DebugManager.flags.EnableAIL.set(false); - - VariableBackup ailConfigurationBackup(&ailConfigurationTable[productFamily]); - MockAILConfiguration ailConfig; - ailConfigurationTable[productFamily] = &ailConfig; - - HardwareInfo hwInfo{}; - hwInfo.platform.eProductFamily = productFamily; - hwInfo.platform.eRenderCoreFamily = renderCoreFamily; - - NEO::MockExecutionEnvironment executionEnvironment{&hwInfo, true, 1}; - auto rootDeviceEnvironment = executionEnvironment.rootDeviceEnvironments[0].get(); - rootDeviceEnvironment->initAilConfiguration(); - - EXPECT_EQ(false, ailConfig.initCalled); -} - -HWTEST_F(AILTests, whenAilIsEnabledByDebugVariableThenAilIsInitialized) { - DebugManagerStateRestore restore; - NEO::DebugManager.flags.EnableAIL.set(true); - - VariableBackup ailConfigurationBackup(&ailConfigurationTable[productFamily]); - MockAILConfiguration ailConfig; - ailConfigurationTable[productFamily] = &ailConfig; - - HardwareInfo hwInfo{}; - hwInfo.platform.eProductFamily = productFamily; - hwInfo.platform.eRenderCoreFamily = renderCoreFamily; - - NEO::MockExecutionEnvironment executionEnvironment{&hwInfo, true, 1}; - auto rootDeviceEnvironment = executionEnvironment.rootDeviceEnvironments[0].get(); - rootDeviceEnvironment->initAilConfiguration(); - - EXPECT_EQ(true, ailConfig.initCalled); -} - HWTEST_F(AILTests, GivenPlatformHasNoAilAvailableWhenAilIsEnabledThenAilInitializationReturnsTrue) { DebugManagerStateRestore restore; NEO::DebugManager.flags.EnableAIL.set(true); - VariableBackup ailConfigurationBackup(&ailConfigurationTable[productFamily]); - ailConfigurationTable[productFamily] = nullptr; - HardwareInfo hwInfo{}; hwInfo.platform.eProductFamily = productFamily; hwInfo.platform.eRenderCoreFamily = renderCoreFamily; NEO::MockExecutionEnvironment executionEnvironment{&hwInfo, true, 1}; auto rootDeviceEnvironment = executionEnvironment.rootDeviceEnvironments[0].get(); + rootDeviceEnvironment->ailConfiguration.reset(nullptr); + EXPECT_TRUE(rootDeviceEnvironment->initAilConfiguration()); } HWTEST2_F(AILTests, GivenAilWhenCheckingContextSyncFlagRequiredThenExpectFalse, IsAtLeastGen9) { - AILMock ailTemp; - ailTemp.processName = "other"; - EXPECT_FALSE(ailTemp.isContextSyncFlagRequired()); + AILWhitebox ail; + ail.processName = "other"; + EXPECT_FALSE(ail.isContextSyncFlagRequired()); } } // namespace NEO diff --git a/shared/test/unit_test/ail/ail_tests_base.cpp b/shared/test/unit_test/ail/ail_tests_base.cpp index 4e447530a2..352d707812 100644 --- a/shared/test/unit_test/ail/ail_tests_base.cpp +++ b/shared/test/unit_test/ail/ail_tests_base.cpp @@ -5,9 +5,9 @@ * */ -#include "shared/source/ail/ail_configuration.h" #include "shared/test/common/helpers/default_hw_info.h" #include "shared/test/common/helpers/variable_backup.h" +#include "shared/test/common/mocks/mock_ail_configuration.h" #include "shared/test/common/test_macros/hw_test.h" namespace NEO { @@ -27,15 +27,7 @@ HWTEST2_F(AILBaseTests, whenKernelSourceIsNotANGenDummyKernelThenDoNotEnforcePat } HWTEST2_F(AILBaseTests, givenApplicationNamesThatRequirAILWhenCheckingIfPatchtokenFallbackIsRequiredThenIsCorrectResult, IsAtLeastSkl) { - class AILMock : public AILConfigurationHw { - public: - using AILConfiguration::processName; - }; - - VariableBackup ailConfigurationBackup(&ailConfigurationTable[productFamily]); - AILMock ail; - ailConfigurationTable[productFamily] = &ail; - + AILWhitebox ail; for (const auto &name : {"Resolve", "ArcControlAssist", "ArcControl"}) { diff --git a/shared/test/unit_test/ail/windows/ail_windows_tests.cpp b/shared/test/unit_test/ail/windows/ail_windows_tests.cpp index 93d25433ae..b6af6da27c 100644 --- a/shared/test/unit_test/ail/windows/ail_windows_tests.cpp +++ b/shared/test/unit_test/ail/windows/ail_windows_tests.cpp @@ -1,13 +1,13 @@ /* - * Copyright (C) 2021-2022 Intel Corporation + * Copyright (C) 2021-2023 Intel Corporation * * SPDX-License-Identifier: MIT * */ -#include "shared/source/ail/ail_configuration.h" #include "shared/test/common/helpers/unit_test_helper.h" #include "shared/test/common/helpers/variable_backup.h" +#include "shared/test/common/mocks/mock_ail_configuration.h" #include "shared/test/common/test_macros/hw_test.h" namespace NEO { @@ -17,52 +17,37 @@ namespace SysCalls { extern const wchar_t *currentLibraryPath; } -template -class AILMock : public AILConfigurationHw { - public: - using AILConfiguration::processName; -}; - HWTEST2_F(AILTests, givenValidApplicationPathWhenAILinitProcessExecutableNameThenProperProcessNameIsReturned, IsAtLeastGen12lp) { VariableBackup applicationPathBackup(&SysCalls::currentLibraryPath); applicationPathBackup = L"C\\Users\\Administrator\\application.exe"; - VariableBackup ailConfigurationBackup(&ailConfigurationTable[productFamily]); + AILWhitebox ail; - AILMock ailTemp; - ailConfigurationTable[productFamily] = &ailTemp; + EXPECT_EQ(ail.initProcessExecutableName(), true); - EXPECT_EQ(ailTemp.initProcessExecutableName(), true); - - EXPECT_EQ("application", ailTemp.processName); + EXPECT_EQ("application", ail.processName); } HWTEST2_F(AILTests, givenValidApplicationPathWithoutLongNameWhenAILinitProcessExecutableNameThenProperProcessNameIsReturned, IsAtLeastGen12lp) { VariableBackup applicationPathBackup(&SysCalls::currentLibraryPath); applicationPathBackup = L"C\\Users\\Administrator\\application"; - VariableBackup ailConfigurationBackup(&ailConfigurationTable[productFamily]); + AILWhitebox ail; - AILMock ailTemp; - ailConfigurationTable[productFamily] = &ailTemp; + EXPECT_EQ(ail.initProcessExecutableName(), true); - EXPECT_EQ(ailTemp.initProcessExecutableName(), true); - - EXPECT_EQ("application", ailTemp.processName); + EXPECT_EQ("application", ail.processName); } HWTEST2_F(AILTests, givenApplicationPathWithNonLatinCharactersWhenAILinitProcessExecutableNameThenProperProcessNameIsReturned, IsAtLeastGen12lp) { VariableBackup applicationPathBackup(&SysCalls::currentLibraryPath); applicationPathBackup = L"C\\\u4E20\u4E24\\application"; - VariableBackup ailConfigurationBackup(&ailConfigurationTable[productFamily]); + AILWhitebox ail; - AILMock ailTemp; - ailConfigurationTable[productFamily] = &ailTemp; + EXPECT_EQ(ail.initProcessExecutableName(), true); - EXPECT_EQ(ailTemp.initProcessExecutableName(), true); - - EXPECT_EQ("application", ailTemp.processName); + EXPECT_EQ("application", ail.processName); } } // namespace NEO diff --git a/shared/test/unit_test/execution_environment/execution_environment_tests.cpp b/shared/test/unit_test/execution_environment/execution_environment_tests.cpp index f949a2c804..50956d83e4 100644 --- a/shared/test/unit_test/execution_environment/execution_environment_tests.cpp +++ b/shared/test/unit_test/execution_environment/execution_environment_tests.cpp @@ -207,6 +207,17 @@ TEST(RootDeviceEnvironment, givenHardwareInfoAndDebugVariableNodeOrdinalEqualsCc EXPECT_TRUE(hwInfo->featureTable.flags.ftrRcsNode); } +TEST(RootDeviceEnvironment, givenEnableAILFlagSetToFalseWhenInitializingAILConfigurationThenSkipInitializingIt) { + DebugManagerStateRestore restorer; + DebugManager.flags.EnableAIL.set(false); + + MockExecutionEnvironment executionEnvironment; + auto rootDeviceEnvironment = static_cast(executionEnvironment.rootDeviceEnvironments[0].get()); + ASSERT_EQ(nullptr, rootDeviceEnvironment->ailConfiguration); + rootDeviceEnvironment->initAilConfiguration(); + EXPECT_EQ(nullptr, rootDeviceEnvironment->ailConfiguration); +} + TEST(ExecutionEnvironment, givenExecutionEnvironmentWhenInitializeMemoryManagerIsCalledThenLocalMemorySupportedInMemoryManagerHasCorrectValue) { const HardwareInfo *hwInfo = defaultHwInfo.get(); auto device = std::unique_ptr(MockDevice::createWithNewExecutionEnvironment(hwInfo)); diff --git a/shared/test/unit_test/gen12lp/dg1/execution_environment_tests_dg1.cpp b/shared/test/unit_test/gen12lp/dg1/execution_environment_tests_dg1.cpp index 1d59ccc2b7..34ecc074c4 100644 --- a/shared/test/unit_test/gen12lp/dg1/execution_environment_tests_dg1.cpp +++ b/shared/test/unit_test/gen12lp/dg1/execution_environment_tests_dg1.cpp @@ -1,12 +1,11 @@ /* - * Copyright (C) 2021-2022 Intel Corporation + * Copyright (C) 2021-2023 Intel Corporation * * SPDX-License-Identifier: MIT * */ #include "shared/source/ail/ail_configuration.h" -#include "shared/test/common/helpers/variable_backup.h" #include "shared/test/common/mocks/mock_execution_environment.h" #include "shared/test/common/test_macros/hw_test.h" #include "shared/test/common/utilities/destructor_counted.h" @@ -25,11 +24,7 @@ HWTEST2_F(RootDeviceEnvironmentTests, givenRootDeviceEnvironmentWhenAILInitProce return false; } }; - VariableBackup ailConfiguration(&ailConfigurationTable[productFamily]); - - AILDG1 ailDg1; - ailConfigurationTable[productFamily] = &ailDg1; - + rootDeviceEnvironment->ailConfiguration.reset(new AILDG1()); EXPECT_EQ(false, rootDeviceEnvironment->initAilConfiguration()); } } // namespace NEO diff --git a/shared/test/unit_test/xe_hpg_core/dg2/ail_tests_dg2.cpp b/shared/test/unit_test/xe_hpg_core/dg2/ail_tests_dg2.cpp index 1fd7c5f66c..38885a8615 100644 --- a/shared/test/unit_test/xe_hpg_core/dg2/ail_tests_dg2.cpp +++ b/shared/test/unit_test/xe_hpg_core/dg2/ail_tests_dg2.cpp @@ -28,12 +28,7 @@ HWTEST2_F(AILTestsDg2, givenFixesForApplicationsWhenModifyKernelIfRequiredIsCall bool hashCorrect = {true}; }; - VariableBackup ailConfigurationBackup(&ailConfigurationTable[productFamily]); AILMock ail; - ailConfigurationTable[productFamily] = &ail; - auto ailConfiguration = AILConfiguration::get(defaultHwInfo->platform.eProductFamily); - ASSERT_NE(nullptr, ailConfiguration); - std::string_view fixCode = "else { SYNC_WARPS; }"; for (auto name : {"FAHBench-gui", "FAHBench-cmd"}) { diff --git a/shared/test/unit_test/xe_hpg_core/mtl/ail_tests_mtl.cpp b/shared/test/unit_test/xe_hpg_core/mtl/ail_tests_mtl.cpp index 92a8048edc..1ec27b5e78 100644 --- a/shared/test/unit_test/xe_hpg_core/mtl/ail_tests_mtl.cpp +++ b/shared/test/unit_test/xe_hpg_core/mtl/ail_tests_mtl.cpp @@ -6,7 +6,6 @@ */ #include "shared/test/common/helpers/default_hw_info.h" -#include "shared/test/common/helpers/variable_backup.h" #include "shared/test/common/mocks/mock_ail_configuration.h" #include "shared/test/common/test_macros/hw_test.h" @@ -15,9 +14,7 @@ namespace NEO { using AILTestsMTL = ::testing::Test; HWTEST2_F(AILTestsMTL, givenMtlWhenSvchostAppIsDetectedThenDisableDirectSubmission, IsMTL) { - VariableBackup ailConfigurationBackup(&ailConfigurationTable[productFamily]); - AILMock ail; - ailConfigurationTable[productFamily] = &ail; + AILWhitebox ail; auto capabilityTable = defaultHwInfo->capabilityTable; auto defaultEngineSupportedValue = capabilityTable.directSubmissionEngines.data[aub_stream::ENGINE_CCS].engineSupported;