diff --git a/shared/source/os_interface/linux/drm_neo.cpp b/shared/source/os_interface/linux/drm_neo.cpp index 60845cb306..5bf4e4f5b4 100644 --- a/shared/source/os_interface/linux/drm_neo.cpp +++ b/shared/source/os_interface/linux/drm_neo.cpp @@ -992,7 +992,7 @@ bool Drm::queryMemoryInfo() { bool Drm::queryEngineInfo(bool isSysmanEnabled) { this->engineInfo = ioctlHelper->createEngineInfo(isSysmanEnabled); - if (this->engineInfo && this->engineInfo.get()->engines.size() == 0) { + if (this->engineInfo && (this->engineInfo->hasEngines() == false)) { printDebugString(debugManager.flags.PrintDebugMessages.get(), stderr, "%s", "FATAL: Engine info size is equal to 0.\n"); } diff --git a/shared/source/os_interface/linux/engine_info.cpp b/shared/source/os_interface/linux/engine_info.cpp index cd61fa9b84..c0b07712b6 100644 --- a/shared/source/os_interface/linux/engine_info.cpp +++ b/shared/source/os_interface/linux/engine_info.cpp @@ -224,6 +224,10 @@ void EngineInfo::assignCopyEngine(aub_stream::EngineType baseEngineType, uint32_ bcsInfoMask.set(0, true); } +bool EngineInfo::hasEngines() { + return (tileToEngineMap.size() > 0LU); +} + // EngineIndex = (Base + EngineCounter - 1) aub_stream::EngineType EngineInfo::getBaseCopyEngineType(IoctlHelper *ioctlHelper, uint64_t capabilities, bool isIntegratedDevice) { if (!isIntegratedDevice) { diff --git a/shared/source/os_interface/linux/engine_info.h b/shared/source/os_interface/linux/engine_info.h index 3b4ccf32f2..7806e33542 100644 --- a/shared/source/os_interface/linux/engine_info.h +++ b/shared/source/os_interface/linux/engine_info.h @@ -35,6 +35,7 @@ struct EngineInfo { uint32_t getEngineTileIndex(const EngineClassInstance &engine); void getListOfEnginesOnATile(uint32_t tile, std::vector &listOfEngines); std::multimap getEngineTileInfo(); + bool hasEngines(); std::vector engines; protected: 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 0b6f805ec3..d16d2790ae 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 @@ -583,10 +583,11 @@ TEST(IoctlHelperTestsUpstream, givenUpstreamWhenQueryEngineInfoWithoutDeviceMemo EXPECT_EQ(2u, drm->ioctlCallsCount); auto engineInfo = drm->getEngineInfo(); + ASSERT_NE(nullptr, engineInfo); std::vector engines; engineInfo->getListOfEnginesOnATile(0, engines); auto totalEnginesCount = engineInfo->engines.size(); - ASSERT_NE(nullptr, engineInfo); + EXPECT_TRUE(engineInfo->hasEngines()); EXPECT_EQ(totalEnginesCount, engines.size()); } 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 e420bb46d7..b437f1acc2 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 @@ -662,6 +662,7 @@ TEST(IoctlHelperXeTest, whenCallingIoctlThenProperValueIsReturned) { } auto engineInfo = mockXeIoctlHelper->createEngineInfo(false); EXPECT_NE(nullptr, engineInfo); + EXPECT_TRUE(engineInfo->hasEngines()); { GetParam test = {}; int dstvalue;