From cfba0e086166120de2adbab3e0e3d9346ef9f7c5 Mon Sep 17 00:00:00 2001 From: Bellekallu Rajkiran Date: Fri, 19 Jan 2024 06:52:38 +0000 Subject: [PATCH] refactor: Abstract frequency set requests based on Hw Related-To: NEO-10101 Signed-off-by: Bellekallu Rajkiran --- .../linux/sysman_os_frequency_imp.cpp | 7 +++- .../product_helper/sysman_product_helper.h | 3 +- .../product_helper/sysman_product_helper_hw.h | 3 +- .../sysman_product_helper_hw.inl | 7 +++- .../sources/frequency/linux/CMakeLists.txt | 3 +- .../frequency/linux/mock_sysfs_frequency_xe.h | 11 +++++- .../frequency/linux/mock_sysman_frequency.h | 10 +++++- .../frequency/linux/test_zes_frequency.cpp | 34 ++++++++++++++----- .../frequency/linux/test_zes_frequency_xe.cpp | 32 +++++++++++++---- .../sources/linux/mocks/CMakeLists.txt | 12 +++++++ .../mocks/mock_sysman_product_helper.cpp | 11 ++++++ .../sysman_product_helper_frequency_tests.cpp | 7 +++- 12 files changed, 117 insertions(+), 23 deletions(-) create mode 100644 level_zero/sysman/test/unit_tests/sources/linux/mocks/CMakeLists.txt create mode 100644 level_zero/sysman/test/unit_tests/sources/linux/mocks/mock_sysman_product_helper.cpp diff --git a/level_zero/sysman/source/api/frequency/linux/sysman_os_frequency_imp.cpp b/level_zero/sysman/source/api/frequency/linux/sysman_os_frequency_imp.cpp index 91cab35b57..b0cd17538c 100644 --- a/level_zero/sysman/source/api/frequency/linux/sysman_os_frequency_imp.cpp +++ b/level_zero/sysman/source/api/frequency/linux/sysman_os_frequency_imp.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2023 Intel Corporation + * Copyright (C) 2020-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -72,6 +72,10 @@ ze_result_t LinuxFrequencyImp::osFrequencySetRange(const zes_freq_range_t *pLimi double newMin = round(pLimits->min); double newMax = round(pLimits->max); + if (!pSysmanProductHelper->isFrequencySetRangeSupported()) { + return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; + } + if (pSysmanKmdInterface->isDefaultFrequencyAvailable()) { if (newMax == -1 && newMin == -1) { double maxDefault = 0, minDefault = 0; @@ -117,6 +121,7 @@ ze_result_t LinuxFrequencyImp::osFrequencySetRange(const zes_freq_range_t *pLimi } return setMax(newMax); } + bool LinuxFrequencyImp::getThrottleReasonStatus(void) { uint32_t val = 0; auto result = pSysfsAccess->read(throttleReasonStatusFile, val); diff --git a/level_zero/sysman/source/shared/linux/product_helper/sysman_product_helper.h b/level_zero/sysman/source/shared/linux/product_helper/sysman_product_helper.h index 14df6cf187..112b676485 100644 --- a/level_zero/sysman/source/shared/linux/product_helper/sysman_product_helper.h +++ b/level_zero/sysman/source/shared/linux/product_helper/sysman_product_helper.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Intel Corporation + * Copyright (C) 2023-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -45,6 +45,7 @@ class SysmanProductHelper { // Frequency virtual void getFrequencyStepSize(double *pStepSize) = 0; + virtual bool isFrequencySetRangeSupported() = 0; // Memory virtual ze_result_t getMemoryProperties(zes_mem_properties_t *pProperties, LinuxSysmanImp *pLinuxSysmanImp, NEO::Drm *pDrm, SysmanKmdInterface *pSysmanKmdInterface, uint32_t subDeviceId, bool isSubdevice) = 0; diff --git a/level_zero/sysman/source/shared/linux/product_helper/sysman_product_helper_hw.h b/level_zero/sysman/source/shared/linux/product_helper/sysman_product_helper_hw.h index 9df73ae09e..982355d58b 100644 --- a/level_zero/sysman/source/shared/linux/product_helper/sysman_product_helper_hw.h +++ b/level_zero/sysman/source/shared/linux/product_helper/sysman_product_helper_hw.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Intel Corporation + * Copyright (C) 2023-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -24,6 +24,7 @@ class SysmanProductHelperHw : public SysmanProductHelper { // Frequency void getFrequencyStepSize(double *pStepSize) override; + bool isFrequencySetRangeSupported() override; // Memory ze_result_t getMemoryProperties(zes_mem_properties_t *pProperties, LinuxSysmanImp *pLinuxSysmanImp, NEO::Drm *pDrm, SysmanKmdInterface *pSysmanKmdInterface, uint32_t subDeviceId, bool isSubdevice) override; diff --git a/level_zero/sysman/source/shared/linux/product_helper/sysman_product_helper_hw.inl b/level_zero/sysman/source/shared/linux/product_helper/sysman_product_helper_hw.inl index 7baed3c47c..6b03baf5a6 100644 --- a/level_zero/sysman/source/shared/linux/product_helper/sysman_product_helper_hw.inl +++ b/level_zero/sysman/source/shared/linux/product_helper/sysman_product_helper_hw.inl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Intel Corporation + * Copyright (C) 2023-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -107,6 +107,11 @@ bool SysmanProductHelperHw::isMemoryMaxTemperatureSupported() { return false; } +template +bool SysmanProductHelperHw::isFrequencySetRangeSupported() { + return true; +} + template ze_result_t SysmanProductHelperHw::getGlobalMaxTemperature(PlatformMonitoringTech *pPmt, double *pTemperature) { auto isValidTemperature = [](auto temperature) { diff --git a/level_zero/sysman/test/unit_tests/sources/frequency/linux/CMakeLists.txt b/level_zero/sysman/test/unit_tests/sources/frequency/linux/CMakeLists.txt index 20ac4c3348..a0a699b2f6 100644 --- a/level_zero/sysman/test/unit_tests/sources/frequency/linux/CMakeLists.txt +++ b/level_zero/sysman/test/unit_tests/sources/frequency/linux/CMakeLists.txt @@ -1,5 +1,5 @@ # -# Copyright (C) 2020-2023 Intel Corporation +# Copyright (C) 2020-2024 Intel Corporation # # SPDX-License-Identifier: MIT # @@ -19,3 +19,4 @@ if(UNIX) ) endif() +add_subdirectories() diff --git a/level_zero/sysman/test/unit_tests/sources/frequency/linux/mock_sysfs_frequency_xe.h b/level_zero/sysman/test/unit_tests/sources/frequency/linux/mock_sysfs_frequency_xe.h index 2384c43c78..1129a3bc19 100644 --- a/level_zero/sysman/test/unit_tests/sources/frequency/linux/mock_sysfs_frequency_xe.h +++ b/level_zero/sysman/test/unit_tests/sources/frequency/linux/mock_sysfs_frequency_xe.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Intel Corporation + * Copyright (C) 2023-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -11,6 +11,7 @@ #include "shared/test/common/test_macros/mock_method_macros.h" #include "level_zero/sysman/source/api/frequency/linux/sysman_os_frequency_imp.h" +#include "level_zero/sysman/source/shared/linux/product_helper/sysman_product_helper_hw.h" #include "level_zero/sysman/source/shared/linux/sysman_fs_access_interface.h" #include "level_zero/sysman/source/shared/linux/sysman_kmd_interface.h" @@ -212,6 +213,14 @@ struct MockProductHelperFreq : NEO::ProductHelperHw { return isMediaFreqDomainPresent; } }; + +struct MockSysmanProductHelperFreq : L0::Sysman::SysmanProductHelperHw { + MockSysmanProductHelperFreq() = default; + bool isFrequencySetRangeSupported() override { + return false; + } +}; + class PublicLinuxFrequencyImp : public L0::Sysman::LinuxFrequencyImp { public: PublicLinuxFrequencyImp(L0::Sysman::OsSysman *pOsSysman, ze_bool_t onSubdevice, uint32_t subdeviceId, zes_freq_domain_t type) : L0::Sysman::LinuxFrequencyImp(pOsSysman, onSubdevice, subdeviceId, type) {} diff --git a/level_zero/sysman/test/unit_tests/sources/frequency/linux/mock_sysman_frequency.h b/level_zero/sysman/test/unit_tests/sources/frequency/linux/mock_sysman_frequency.h index 716e503a8a..6fe9a2716c 100644 --- a/level_zero/sysman/test/unit_tests/sources/frequency/linux/mock_sysman_frequency.h +++ b/level_zero/sysman/test/unit_tests/sources/frequency/linux/mock_sysman_frequency.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2023 Intel Corporation + * Copyright (C) 2020-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -12,6 +12,7 @@ #include "shared/test/common/test_macros/mock_method_macros.h" #include "level_zero/sysman/source/api/frequency/linux/sysman_os_frequency_imp.h" +#include "level_zero/sysman/source/shared/linux/product_helper/sysman_product_helper_hw.h" #include "level_zero/sysman/source/shared/linux/sysman_fs_access_interface.h" #include "gtest/gtest.h" @@ -358,6 +359,13 @@ struct MockProductHelperFreq : NEO::ProductHelperHw { } }; +struct MockSysmanProductHelperFreq : L0::Sysman::SysmanProductHelperHw { + MockSysmanProductHelperFreq() = default; + bool isFrequencySetRangeSupported() override { + return false; + } +}; + class PublicLinuxFrequencyImp : public L0::Sysman::LinuxFrequencyImp { public: PublicLinuxFrequencyImp(L0::Sysman::OsSysman *pOsSysman, ze_bool_t onSubdevice, uint32_t subdeviceId, zes_freq_domain_t type) : L0::Sysman::LinuxFrequencyImp(pOsSysman, onSubdevice, subdeviceId, type) {} diff --git a/level_zero/sysman/test/unit_tests/sources/frequency/linux/test_zes_frequency.cpp b/level_zero/sysman/test/unit_tests/sources/frequency/linux/test_zes_frequency.cpp index 3777fa8fdd..755902e796 100644 --- a/level_zero/sysman/test/unit_tests/sources/frequency/linux/test_zes_frequency.cpp +++ b/level_zero/sysman/test/unit_tests/sources/frequency/linux/test_zes_frequency.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2023 Intel Corporation + * Copyright (C) 2020-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -260,7 +260,7 @@ TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFreq } } -TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyLimitsWhenCallingFrequencySetRangeForFailures1ThenAPIExitsGracefully) { +HWTEST2_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyLimitsWhenCallingFrequencySetRangeForFailures1ThenAPIExitsGracefully, IsXeHpOrXeHpcOrXeHpgCore) { auto subDeviceCount = pLinuxSysmanImp->getSubDeviceCount(); ze_bool_t onSubdevice = (subDeviceCount == 0) ? false : true; uint32_t subdeviceId = 0; @@ -277,7 +277,7 @@ TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyLimitsWhenCallingFrequen EXPECT_EQ(ZE_RESULT_ERROR_UNKNOWN, pFrequencyImp->frequencySetRange(&limits)); } -TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyLimitsWhenCallingFrequencySetRangeForFailures2ThenAPIExitsGracefully) { +HWTEST2_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyLimitsWhenCallingFrequencySetRangeForFailures2ThenAPIExitsGracefully, IsXeHpOrXeHpcOrXeHpgCore) { auto subDeviceCount = pLinuxSysmanImp->getSubDeviceCount(); ze_bool_t onSubdevice = (subDeviceCount == 0) ? false : true; uint32_t subdeviceId = 0; @@ -294,7 +294,7 @@ TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyLimitsWhenCallingFrequen EXPECT_EQ(ZE_RESULT_ERROR_UNKNOWN, pFrequencyImp->frequencySetRange(&limits)); } -TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFrequencySetRangeThenVerifyzesFrequencySetRangeTest1CallSucceeds) { +HWTEST2_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFrequencySetRangeThenVerifyzesFrequencySetRangeTest1CallSucceeds, IsXeHpOrXeHpcOrXeHpgCore) { auto handles = getFreqHandles(handleComponentCount); for (auto handle : handles) { const double startingMin = 900.0; @@ -314,7 +314,7 @@ TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFreq } } -TEST_F(SysmanDeviceFrequencyFixture, GivenNegativeUnityRangeSetWhenGetRangeIsCalledThenReturnsValueFromDefaultPath) { +HWTEST2_F(SysmanDeviceFrequencyFixture, GivenNegativeUnityRangeSetWhenGetRangeIsCalledThenReturnsValueFromDefaultPath, IsXeHpOrXeHpcOrXeHpgCore) { auto handles = getFreqHandles(handleComponentCount); for (auto handle : handles) { const double negativeMin = -1; @@ -331,7 +331,7 @@ TEST_F(SysmanDeviceFrequencyFixture, GivenNegativeUnityRangeSetWhenGetRangeIsCal } } -TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFrequencySetRangeThenVerifyzesFrequencySetRangeTest2CallSucceeds) { +HWTEST2_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFrequencySetRangeThenVerifyzesFrequencySetRangeTest2CallSucceeds, IsXeHpOrXeHpcOrXeHpgCore) { auto handles = getFreqHandles(handleComponentCount); for (auto handle : handles) { const double startingMax = 600.0; @@ -351,7 +351,7 @@ TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFreq } } -TEST_F(SysmanDeviceFrequencyFixture, GivenInvalidFrequencyLimitsWhenCallingFrequencySetRangeThenVerifyFrequencySetRangeTestReturnsError) { +HWTEST2_F(SysmanDeviceFrequencyFixture, GivenInvalidFrequencyLimitsWhenCallingFrequencySetRangeThenVerifyFrequencySetRangeTestReturnsError, IsXeHpOrXeHpcOrXeHpgCore) { auto subDeviceCount = pLinuxSysmanImp->getSubDeviceCount(); ze_bool_t onSubdevice = (subDeviceCount == 0) ? false : true; uint32_t subdeviceId = 0; @@ -364,6 +364,24 @@ TEST_F(SysmanDeviceFrequencyFixture, GivenInvalidFrequencyLimitsWhenCallingFrequ EXPECT_EQ(ZE_RESULT_ERROR_INVALID_ARGUMENT, pFrequencyImp->frequencySetRange(&limits)); } +TEST_F(SysmanDeviceFrequencyFixture, GivenFrequencySetRangeNotSupportedWhenCallingzesFrequencySetRangeThenVerifyzesFrequencySetRangeFails) { + std::unique_ptr pSysmanProductHelper = std::make_unique(); + std::swap(pLinuxSysmanImp->pSysmanProductHelper, pSysmanProductHelper); + auto handles = getFreqHandles(handleComponentCount); + for (auto handle : handles) { + const double startingMin = 900.0; + const double newMax = 600.0; + zes_freq_range_t limits; + + pSysfsAccess->setVal(minFreqFile, startingMin); + // If the new Max value is less than the old Min + // value, the new Min must be set before the new Max + limits.min = minFreq; + limits.max = newMax; + EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, zesFrequencySetRange(handle, &limits)); + } +} + TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFrequencyGetStateThenVerifyzesFrequencyGetStateTestCallSucceeds) { auto handles = getFreqHandles(handleComponentCount); for (auto handle : handles) { @@ -431,7 +449,7 @@ TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFreq } } -TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFrequencySetRangeWithLegacyPathThenVerifyzesFrequencySetRangeTestCallSucceeds) { +HWTEST2_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFrequencySetRangeWithLegacyPathThenVerifyzesFrequencySetRangeTestCallSucceeds, IsXeHpOrXeHpcOrXeHpgCore) { pSysfsAccess->isLegacy = true; pSysfsAccess->directoryExistsResult = false; for (auto handle : pSysmanDeviceImp->pFrequencyHandleContext->handleList) { diff --git a/level_zero/sysman/test/unit_tests/sources/frequency/linux/test_zes_frequency_xe.cpp b/level_zero/sysman/test/unit_tests/sources/frequency/linux/test_zes_frequency_xe.cpp index 0d75d6e64d..5ab1896041 100644 --- a/level_zero/sysman/test/unit_tests/sources/frequency/linux/test_zes_frequency_xe.cpp +++ b/level_zero/sysman/test/unit_tests/sources/frequency/linux/test_zes_frequency_xe.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Intel Corporation + * Copyright (C) 2023-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -57,7 +57,6 @@ class SysmanDeviceFrequencyFixtureXe : public SysmanDeviceFixture { delete handle; } pSysmanDeviceImp->pFrequencyHandleContext->handleList.clear(); - getFreqHandles(0); } void TearDown() override { @@ -226,7 +225,7 @@ TEST_F(SysmanDeviceFrequencyFixtureXe, GivenValidFrequencyHandleWhenCallingzesFr } } -TEST_F(SysmanDeviceFrequencyFixtureXe, GivenValidFrequencyLimitsWhenCallingFrequencySetRangeForFailures1ThenAPIExitsGracefully) { +HWTEST2_F(SysmanDeviceFrequencyFixtureXe, GivenValidFrequencyLimitsWhenCallingFrequencySetRangeForFailures1ThenAPIExitsGracefully, IsXeHpOrXeHpcOrXeHpgCore) { auto pSysfsAccess = pSysmanKmdInterface->pSysfsAccess.get(); auto subDeviceCount = pLinuxSysmanImp->getSubDeviceCount(); ze_bool_t onSubdevice = (subDeviceCount == 0) ? false : true; @@ -244,7 +243,7 @@ TEST_F(SysmanDeviceFrequencyFixtureXe, GivenValidFrequencyLimitsWhenCallingFrequ EXPECT_EQ(ZE_RESULT_ERROR_UNKNOWN, pFrequencyImp->frequencySetRange(&limits)); } -TEST_F(SysmanDeviceFrequencyFixtureXe, GivenValidFrequencyLimitsWhenCallingFrequencySetRangeForFailures2ThenAPIExitsGracefully) { +HWTEST2_F(SysmanDeviceFrequencyFixtureXe, GivenValidFrequencyLimitsWhenCallingFrequencySetRangeForFailures2ThenAPIExitsGracefully, IsXeHpOrXeHpcOrXeHpgCore) { auto pSysfsAccess = pSysmanKmdInterface->pSysfsAccess.get(); auto subDeviceCount = pLinuxSysmanImp->getSubDeviceCount(); ze_bool_t onSubdevice = (subDeviceCount == 0) ? false : true; @@ -262,7 +261,7 @@ TEST_F(SysmanDeviceFrequencyFixtureXe, GivenValidFrequencyLimitsWhenCallingFrequ EXPECT_EQ(ZE_RESULT_ERROR_UNKNOWN, pFrequencyImp->frequencySetRange(&limits)); } -TEST_F(SysmanDeviceFrequencyFixtureXe, GivenValidFrequencyHandleWhenCallingzesFrequencySetRangeThenVerifyzesFrequencySetRangeTest1CallSucceeds) { +HWTEST2_F(SysmanDeviceFrequencyFixtureXe, GivenValidFrequencyHandleWhenCallingzesFrequencySetRangeThenVerifyzesFrequencySetRangeTest1CallSucceeds, IsXeHpOrXeHpcOrXeHpgCore) { auto pSysfsAccess = pSysmanKmdInterface->pSysfsAccess.get(); auto handles = getFreqHandles(handleComponentCount); for (auto handle : handles) { @@ -297,7 +296,7 @@ TEST_F(SysmanDeviceFrequencyFixtureXe, GivenNegativeRangeWhenSetRangeIsCalledAnd } } -TEST_F(SysmanDeviceFrequencyFixtureXe, GivenNegativeRangeWhenSetRangeIsCalledAndGettingDefaultMaxValueFailsThenNoFreqRangeIsInEffect) { +HWTEST2_F(SysmanDeviceFrequencyFixtureXe, GivenNegativeRangeWhenSetRangeIsCalledAndGettingDefaultMaxValueFailsThenNoFreqRangeIsInEffect, IsXeHpOrXeHpcOrXeHpgCore) { auto handles = getFreqHandles(handleComponentCount); for (auto &handle : handles) { const double negativeMin = -1; @@ -313,7 +312,7 @@ TEST_F(SysmanDeviceFrequencyFixtureXe, GivenNegativeRangeWhenSetRangeIsCalledAnd } } -TEST_F(SysmanDeviceFrequencyFixtureXe, GivenValidFrequencyHandleWhenCallingzesFrequencySetRangeThenVerifyzesFrequencySetRangeTest2CallSucceeds) { +HWTEST2_F(SysmanDeviceFrequencyFixtureXe, GivenValidFrequencyHandleWhenCallingzesFrequencySetRangeThenVerifyzesFrequencySetRangeTest2CallSucceeds, IsXeHpOrXeHpcOrXeHpgCore) { auto pSysfsAccess = pSysmanKmdInterface->pSysfsAccess.get(); auto handles = getFreqHandles(handleComponentCount); for (auto handle : handles) { @@ -346,6 +345,25 @@ TEST_F(SysmanDeviceFrequencyFixtureXe, GivenInvalidFrequencyLimitsWhenCallingFre EXPECT_EQ(ZE_RESULT_ERROR_INVALID_ARGUMENT, pFrequencyImp->frequencySetRange(&limits)); } +TEST_F(SysmanDeviceFrequencyFixtureXe, GivenFrequencySetRangeNotSupportedWhenCallingzesFrequencySetRangeThenVerifyzesFrequencySetRangeFails) { + std::unique_ptr pSysmanProductHelper = std::make_unique(); + std::swap(pLinuxSysmanImp->pSysmanProductHelper, pSysmanProductHelper); + auto pSysfsAccess = pSysmanKmdInterface->pSysfsAccess.get(); + auto handles = getFreqHandles(handleComponentCount); + for (auto handle : handles) { + const double startingMin = 900.0; + const double newMax = 600.0; + zes_freq_range_t limits; + + pSysfsAccess->setVal(minFreqFile, startingMin); + // If the new Max value is less than the old Min + // value, the new Min must be set before the new Max + limits.min = minFreq; + limits.max = newMax; + EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, zesFrequencySetRange(handle, &limits)); + } +} + TEST_F(SysmanDeviceFrequencyFixtureXe, GivenValidFrequencyHandleWhenCallingzesFrequencyGetStateThenVerifyzesFrequencyGetStateTestCallSucceeds) { auto pSysfsAccess = pSysmanKmdInterface->pSysfsAccess.get(); auto handles = getFreqHandles(handleComponentCount); diff --git a/level_zero/sysman/test/unit_tests/sources/linux/mocks/CMakeLists.txt b/level_zero/sysman/test/unit_tests/sources/linux/mocks/CMakeLists.txt new file mode 100644 index 0000000000..dd55336da5 --- /dev/null +++ b/level_zero/sysman/test/unit_tests/sources/linux/mocks/CMakeLists.txt @@ -0,0 +1,12 @@ +# +# Copyright (C) 2024 Intel Corporation +# +# SPDX-License-Identifier: MIT +# + +if(UNIX) + target_sources(${TARGET_NAME} PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt + ${CMAKE_CURRENT_SOURCE_DIR}/mock_sysman_product_helper.cpp + ) +endif() \ No newline at end of file diff --git a/level_zero/sysman/test/unit_tests/sources/linux/mocks/mock_sysman_product_helper.cpp b/level_zero/sysman/test/unit_tests/sources/linux/mocks/mock_sysman_product_helper.cpp new file mode 100644 index 0000000000..a499bc5c08 --- /dev/null +++ b/level_zero/sysman/test/unit_tests/sources/linux/mocks/mock_sysman_product_helper.cpp @@ -0,0 +1,11 @@ +/* + * Copyright (C) 2024 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include "level_zero/sysman/source/shared/linux/product_helper/sysman_product_helper_hw.h" +#include "level_zero/sysman/source/shared/linux/product_helper/sysman_product_helper_hw.inl" + +template class L0::Sysman::SysmanProductHelperHw; diff --git a/level_zero/sysman/test/unit_tests/sources/shared/linux/product_helper/sysman_product_helper_frequency_tests.cpp b/level_zero/sysman/test/unit_tests/sources/shared/linux/product_helper/sysman_product_helper_frequency_tests.cpp index 43cb439509..5dce0d6a0b 100644 --- a/level_zero/sysman/test/unit_tests/sources/shared/linux/product_helper/sysman_product_helper_frequency_tests.cpp +++ b/level_zero/sysman/test/unit_tests/sources/shared/linux/product_helper/sysman_product_helper_frequency_tests.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Intel Corporation + * Copyright (C) 2023-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -30,6 +30,11 @@ HWTEST2_F(SysmanProductHelperFrequencyTest, GivenFrequencyModuleWhenGettingStepS EXPECT_EQ((50.0 / 3), stepSize); } +HWTEST2_F(SysmanProductHelperFrequencyTest, GivenFrequencyModuleWhenQueryingFrequencySetRangeSupportedThenVerifySetRangeIsSupported, IsXeHpOrXeHpcOrXeHpgCore) { + auto pSysmanProductHelper = L0::Sysman::SysmanProductHelper::create(defaultHwInfo->platform.eProductFamily); + EXPECT_EQ(true, pSysmanProductHelper->isFrequencySetRangeSupported()); +} + TEST_F(SysmanProductHelperFrequencyTest, GivenSysmanProductHelperInstanceWhenGettingCurrentVoltageThenVerifyCurrentVoltageIsNegative) { auto pSysmanProductHelper = L0::Sysman::SysmanProductHelper::create(defaultHwInfo->platform.eProductFamily); std::unique_ptr pFsAccess = std::make_unique();