diff --git a/level_zero/tools/test/unit_tests/sources/debug/linux/xe/debug_session_fixtures_linux_xe.cpp b/level_zero/tools/test/unit_tests/sources/debug/linux/xe/debug_session_fixtures_linux_xe.cpp index d7a26bfab9..28aea97bbd 100644 --- a/level_zero/tools/test/unit_tests/sources/debug/linux/xe/debug_session_fixtures_linux_xe.cpp +++ b/level_zero/tools/test/unit_tests/sources/debug/linux/xe/debug_session_fixtures_linux_xe.cpp @@ -25,6 +25,7 @@ void DebugApiLinuxXeFixture::setUp(NEO::HardwareInfo *hwInfo) { mockDrm = DrmMockXeDebug::create(*neoDevice->executionEnvironment->rootDeviceEnvironments[0]).release(); mockDrm->allowDebugAttach = true; + mockDrm->memoryInfoQueried = true; mockDrm->queryEngineInfo(); auto &rootDeviceEnvironment = *neoDevice->executionEnvironment->rootDeviceEnvironments[0]; @@ -41,4 +42,4 @@ void DebugApiLinuxXeFixture::setUp(NEO::HardwareInfo *hwInfo) { } } // namespace ult -} // namespace L0 \ No newline at end of file +} // namespace L0 diff --git a/shared/source/os_interface/linux/drm_neo.cpp b/shared/source/os_interface/linux/drm_neo.cpp index 70689a28cd..b723ac2d70 100644 --- a/shared/source/os_interface/linux/drm_neo.cpp +++ b/shared/source/os_interface/linux/drm_neo.cpp @@ -831,6 +831,7 @@ int Drm::getOaTimestampFrequency(int &frequency) { } bool Drm::queryEngineInfo() { + UNRECOVERABLE_IF(!memoryInfoQueried); UNRECOVERABLE_IF(engineInfoQueried); engineInfoQueried = true; return Drm::queryEngineInfo(false); diff --git a/shared/test/common/os_interface/linux/device_command_stream_fixture.h b/shared/test/common/os_interface/linux/device_command_stream_fixture.h index 9ded615ca4..f2084240ea 100644 --- a/shared/test/common/os_interface/linux/device_command_stream_fixture.h +++ b/shared/test/common/os_interface/linux/device_command_stream_fixture.h @@ -97,6 +97,7 @@ class DrmMockTime : public DrmMockSuccess { }; struct DrmMockCustom : public Drm { + using Drm::memoryInfoQueried; static constexpr NEO::DriverModelType driverModelType = NEO::DriverModelType::drm; static std::unique_ptr create(RootDeviceEnvironment &rootDeviceEnvironment); diff --git a/shared/test/unit_test/os_interface/linux/drm_engine_info_prelim_tests.cpp b/shared/test/unit_test/os_interface/linux/drm_engine_info_prelim_tests.cpp index bb8d685988..8adfde15c2 100644 --- a/shared/test/unit_test/os_interface/linux/drm_engine_info_prelim_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/drm_engine_info_prelim_tests.cpp @@ -32,6 +32,7 @@ TEST(DrmTest, givenEngineQuerySupportedWhenQueryingEngineInfoThenEngineInfoIsIni auto drm = std::make_unique(*executionEnvironment->rootDeviceEnvironments[0]); auto hwInfo = drm->rootDeviceEnvironment.getHardwareInfo(); ASSERT_NE(nullptr, drm); + drm->memoryInfoQueried = true; drm->queryEngineInfo(); auto haveLocalMemory = hwInfo->gtSystemInfo.MultiTileArchInfo.IsValid; EXPECT_EQ(haveLocalMemory ? 3u : 2u, drm->ioctlCallsCount); @@ -817,6 +818,7 @@ TEST(DrmTest, whenQueryingEngineInfoThenMultiTileArchInfoIsUnchanged) { auto drm = std::make_unique(*executionEnvironment->rootDeviceEnvironments[0]); ASSERT_NE(nullptr, drm); + drm->memoryInfoQueried = true; drm->queryEngineInfo(); EXPECT_NE(nullptr, drm->engineInfo); diff --git a/shared/test/unit_test/os_interface/linux/drm_engine_info_tests.cpp b/shared/test/unit_test/os_interface/linux/drm_engine_info_tests.cpp index ec3d71666e..d9036cf8ac 100644 --- a/shared/test/unit_test/os_interface/linux/drm_engine_info_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/drm_engine_info_tests.cpp @@ -23,6 +23,7 @@ TEST(DrmTest, whenQueryingEngineInfoThenSingleIoctlIsCalled) { std::unique_ptr drm = std::make_unique(*executionEnvironment->rootDeviceEnvironments[0]); EXPECT_NE(nullptr, drm); auto ioctlCount = drm->ioctlCount.total.load(); + drm->memoryInfoQueried = true; drm->queryEngineInfo(); EXPECT_EQ(1 + ioctlCount, drm->ioctlCount.total.load()); } @@ -35,6 +36,7 @@ TEST(EngineInfoTest, givenEngineInfoQuerySupportedWhenQueryingEngineInfoThenEngi std::vector memRegions{ {{0, 0}, 0, 0}}; drm->memoryInfo.reset(new MemoryInfo(memRegions, *drm)); + drm->memoryInfoQueried = true; drm->queryEngineInfo(); EXPECT_EQ(2u + drm->getBaseIoctlCalls(), drm->ioctlCallsCount); auto engineInfo = drm->getEngineInfo(); @@ -48,6 +50,7 @@ TEST(EngineInfoTest, whenQueryingEngineInfoWithoutMemoryInfoThenEngineInfoCreate auto drm = std::make_unique(*executionEnvironment->rootDeviceEnvironments[0]); ASSERT_NE(nullptr, drm); + drm->memoryInfoQueried = true; drm->queryEngineInfo(); EXPECT_EQ(2u + drm->getBaseIoctlCalls(), drm->ioctlCallsCount); auto engineInfo = drm->getEngineInfo(); diff --git a/shared/test/unit_test/os_interface/linux/drm_memory_manager_tests.cpp b/shared/test/unit_test/os_interface/linux/drm_memory_manager_tests.cpp index 938cd7756b..60bda0e602 100644 --- a/shared/test/unit_test/os_interface/linux/drm_memory_manager_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/drm_memory_manager_tests.cpp @@ -1110,6 +1110,7 @@ TEST_F(DrmMemoryManagerTest, GivenDeviceSharedAllocationWhichRequiresHostMapThen regionInfo[0].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_SYSTEM, 0}; this->mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + this->mock->memoryInfoQueried = true; this->mock->queryEngineInfo(); AllocationProperties properties(rootDeviceIndex, false, size, AllocationType::gpuTimestampDeviceBuffer, false, {}); @@ -1136,6 +1137,7 @@ TEST_F(DrmMemoryManagerTest, GivenDeviceSharedAllocationWhenSetCacheRegionFailsT regionInfo[0].region = {drm_i915_gem_memory_class::I915_MEMORY_CLASS_SYSTEM, 0}; this->mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock)); + this->mock->memoryInfoQueried = true; this->mock->queryEngineInfo(); AllocationProperties properties(rootDeviceIndex, false, size, AllocationType::gpuTimestampDeviceBuffer, false, {}); properties.cacheRegion = std::numeric_limits::max(); @@ -7941,4 +7943,4 @@ TEST_F(DrmMemoryManagerTest, givenUsmCompressionSupportedThenReturnFalse) { debugManager.flags.RenderCompressedBuffersEnabled.set(1); EXPECT_TRUE(memoryManager->usmCompressionSupported(device)); -} \ No newline at end of file +} diff --git a/shared/test/unit_test/os_interface/linux/drm_with_prelim_tests.cpp b/shared/test/unit_test/os_interface/linux/drm_with_prelim_tests.cpp index 840181d8ba..7789179735 100644 --- a/shared/test/unit_test/os_interface/linux/drm_with_prelim_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/drm_with_prelim_tests.cpp @@ -670,6 +670,7 @@ TEST_F(IoctlHelperPrelimFixture, givenPrelimWhenQueryEngineInfoWithDeviceMemoryT {{drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, 1}, 1024, 0}, {{drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, 2}, 1024, 0}}; drm->memoryInfo.reset(new MemoryInfo(memRegions, *drm)); + drm->memoryInfoQueried = true; EXPECT_TRUE(drm->queryEngineInfo()); EXPECT_EQ(3u, drm->ioctlCallsCount); auto hwInfo = drm->getRootDeviceEnvironment().getHardwareInfo(); @@ -700,6 +701,7 @@ TEST_F(IoctlHelperPrelimFixture, givenPrelimWhenQueryEngineInfoThenCorrectCCSFla {{drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, 0}, 1024, 0}, {{drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, 1}, 1024, 0}}; drm->memoryInfo.reset(new MemoryInfo(memRegions, *drm)); + drm->memoryInfoQueried = true; EXPECT_TRUE(drm->queryEngineInfo()); EXPECT_EQ(3u, drm->ioctlCallsCount); auto hwInfo = drm->getRootDeviceEnvironment().getHardwareInfo(); @@ -740,6 +742,7 @@ TEST_F(IoctlHelperPrelimFixture, givenPrelimWhenQueryEngineInfoAndFailIoctlThenF {{drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, 1}, 1024, 0}, {{drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, 2}, 1024, 0}}; drm->memoryInfo.reset(new MemoryInfo(memRegions, *drm)); + drm->memoryInfoQueried = true; EXPECT_FALSE(drm->queryEngineInfo()); EXPECT_EQ(3u, drm->ioctlCallsCount); diff --git a/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_upstream.cpp b/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_upstream.cpp index 2ad7aba0f4..7de37a653f 100644 --- a/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_upstream.cpp +++ b/shared/test/unit_test/os_interface/linux/ioctl_helper_tests_upstream.cpp @@ -586,6 +586,7 @@ TEST(IoctlHelperTestsUpstream, givenUpstreamWhenQueryEngineInfoWithoutDeviceMemo std::vector memRegions{ {{drm_i915_gem_memory_class::I915_MEMORY_CLASS_SYSTEM, 0}, 1024, 0}}; drm->memoryInfo.reset(new MemoryInfo(memRegions, *drm)); + drm->memoryInfoQueried = true; EXPECT_TRUE(drm->queryEngineInfo()); EXPECT_EQ(2u, drm->ioctlCallsCount); @@ -608,6 +609,7 @@ TEST(IoctlHelperTestsUpstream, givenUpstreamWhenQueryEngineInfoWithDeviceMemoryA {{drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, 0}, 1024, 0}, {{drm_i915_gem_memory_class::I915_MEMORY_CLASS_DEVICE, 1}, 1024, 0}}; drm->memoryInfo.reset(new MemoryInfo(memRegions, *drm)); + drm->memoryInfoQueried = true; EXPECT_TRUE(drm->queryEngineInfo()); EXPECT_EQ(2u, drm->ioctlCallsCount); 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 ae23dbf7b5..da2fbed305 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 @@ -1863,6 +1863,7 @@ TEST(IoctlHelperXeTest, whenBindingDrmContextWithoutVirtualEnginesThenProperEngi auto ioctlHelper = static_cast(drm->getIoctlHelper()); ioctlHelper->initialize(); + drm->memoryInfoQueried = true; drm->queryEngineInfo(); unsigned int expectedValue = DRM_XE_ENGINE_CLASS_COMPUTE; @@ -1886,6 +1887,7 @@ TEST(IoctlHelperXeTest, whenBindingDrmContextWithVirtualEnginesThenProperEngines auto ioctlHelper = static_cast(drm->getIoctlHelper()); ioctlHelper->initialize(); + drm->memoryInfoQueried = true; drm->queryEngineInfo(); executionEnvironment->rootDeviceEnvironments[0]->getMutableHardwareInfo()->gtSystemInfo.CCSInfo.NumberOfCCSEnabled = 2; @@ -2093,6 +2095,7 @@ TEST(IoctlHelperXeTest, givenLowPriorityContextWhenCreatingDrmContextThenExtProp auto executionEnvironment = std::make_unique(); auto drm = DrmMockXe::create(*executionEnvironment->rootDeviceEnvironments[0]); + drm->memoryInfoQueried = true; drm->queryEngineInfo(); executionEnvironment->rootDeviceEnvironments[0]->getMutableHardwareInfo()->gtSystemInfo.CCSInfo.NumberOfCCSEnabled = 1;