From 6ecf5a088f3e95f5b4a0c5bf372920394c467e5c Mon Sep 17 00:00:00 2001 From: "Bari, Pratik" Date: Thu, 13 Jun 2024 12:04:47 +0000 Subject: [PATCH] refactor(sysman): Changes in the Sysman Power Module Removed the call to getProperties during the power handle creation Related-To: NEO-10484 Signed-off-by: Bari, Pratik --- .../source/api/power/sysman_power_imp.cpp | 11 +++++----- .../source/api/power/sysman_power_imp.h | 5 +---- .../sources/power/linux/test_zes_power.cpp | 16 ++++++++++++--- .../power/windows/test_zes_sysman_power.cpp | 20 +++++++++---------- 4 files changed, 30 insertions(+), 22 deletions(-) diff --git a/level_zero/sysman/source/api/power/sysman_power_imp.cpp b/level_zero/sysman/source/api/power/sysman_power_imp.cpp index ef2c07e45a..95b8556809 100644 --- a/level_zero/sysman/source/api/power/sysman_power_imp.cpp +++ b/level_zero/sysman/source/api/power/sysman_power_imp.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Intel Corporation + * Copyright (C) 2023-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -18,7 +18,10 @@ namespace Sysman { ze_result_t PowerImp::powerGetProperties(zes_power_properties_t *pProperties) { ze_result_t result = ZE_RESULT_SUCCESS; void *pNext = pProperties->pNext; - *pProperties = powerProperties; + result = pOsPower->getProperties(pProperties); + if (result != ZE_RESULT_SUCCESS) { + return result; + } pProperties->pNext = pNext; while (pNext) { zes_power_ext_properties_t *pExtProps = reinterpret_cast(pNext); @@ -65,15 +68,13 @@ PowerImp::PowerImp(OsSysman *pOsSysman, ze_bool_t isSubDevice, uint32_t subDevic pOsPower = OsPower::create(pOsSysman, isSubDevice, subDeviceId); UNRECOVERABLE_IF(nullptr == pOsPower); - + this->isCardPower = isSubDevice ? false : true; init(); } void PowerImp::init() { if (pOsPower->isPowerModuleSupported()) { - pOsPower->getProperties(&powerProperties); this->initSuccess = true; - this->isCardPower = powerProperties.onSubdevice ? false : true; } } diff --git a/level_zero/sysman/source/api/power/sysman_power_imp.h b/level_zero/sysman/source/api/power/sysman_power_imp.h index 59b85a4286..560283542e 100644 --- a/level_zero/sysman/source/api/power/sysman_power_imp.h +++ b/level_zero/sysman/source/api/power/sysman_power_imp.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 Intel Corporation + * Copyright (C) 2023-2024 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -31,9 +31,6 @@ class PowerImp : public Power, NEO::NonCopyableOrMovableClass { OsPower *pOsPower = nullptr; void init(); - - private: - zes_power_properties_t powerProperties = {}; }; } // namespace Sysman } // namespace L0 diff --git a/level_zero/sysman/test/unit_tests/sources/power/linux/test_zes_power.cpp b/level_zero/sysman/test/unit_tests/sources/power/linux/test_zes_power.cpp index 457dc6a12d..edc5215f9d 100644 --- a/level_zero/sysman/test/unit_tests/sources/power/linux/test_zes_power.cpp +++ b/level_zero/sysman/test/unit_tests/sources/power/linux/test_zes_power.cpp @@ -237,7 +237,17 @@ HWTEST2_F(SysmanDevicePowerFixtureI915, GivenSetPowerLimitsWhenGettingPowerLimit } } -TEST_F(SysmanDevicePowerFixtureI915, GivenDefaultLimitSysfsNodesNotAvailableWhenGettingPowerPropertiesAndExtPropertiesThenApiCallReturnsFailure) { +TEST_F(SysmanDevicePowerFixtureI915, GivenDefaultLimitSysfsNodesNotAvailableWhenGettingPowerPropertiesThenApiCallReturnsFailure) { + auto handles = getPowerHandles(powerHandleComponentCount); + for (auto handle : handles) { + ASSERT_NE(nullptr, handle); + zes_power_properties_t properties = {}; + pSysfsAccess->mockReadValUnsignedLongResult.push_back(ZE_RESULT_ERROR_NOT_AVAILABLE); + EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, zesPowerGetProperties(handle, &properties)); + } +} + +TEST_F(SysmanDevicePowerFixtureI915, GivenDefaultLimitSysfsNodesNotAvailableWhenGettingPowerPropertiesExtThenApiCallReturnsFailure) { auto handles = getPowerHandles(powerHandleComponentCount); for (auto handle : handles) { ASSERT_NE(nullptr, handle); @@ -248,6 +258,8 @@ TEST_F(SysmanDevicePowerFixtureI915, GivenDefaultLimitSysfsNodesNotAvailableWhen extProperties.defaultLimit = &defaultLimit; extProperties.stype = ZES_STRUCTURE_TYPE_POWER_EXT_PROPERTIES; properties.pNext = &extProperties; + + pSysfsAccess->mockReadValUnsignedLongResult.push_back(ZE_RESULT_SUCCESS); pSysfsAccess->mockReadValUnsignedLongResult.push_back(ZE_RESULT_ERROR_NOT_AVAILABLE); EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, zesPowerGetProperties(handle, &properties)); } @@ -706,8 +718,6 @@ TEST_F(SysmanDevicePowerFixtureI915, GivenComponentCountZeroWhenEnumeratingPower TEST_F(SysmanDevicePowerFixtureI915, GivenValidPowerHandleWhenGettingPowerPropertiesThenCallSucceeds) { - pSysfsAccess->mockscanDirEntriesResult = ZE_RESULT_ERROR_NOT_AVAILABLE; - for (const auto &handle : pSysmanDeviceImp->pPowerHandleContext->handleList) { delete handle; } diff --git a/level_zero/sysman/test/unit_tests/sources/power/windows/test_zes_sysman_power.cpp b/level_zero/sysman/test/unit_tests/sources/power/windows/test_zes_sysman_power.cpp index 23c3843678..7ebfd16d4d 100644 --- a/level_zero/sysman/test/unit_tests/sources/power/windows/test_zes_sysman_power.cpp +++ b/level_zero/sysman/test/unit_tests/sources/power/windows/test_zes_sysman_power.cpp @@ -93,25 +93,25 @@ TEST_F(SysmanDevicePowerFixture, GivenComponentCountZeroWhenEnumeratingPowerDoma } } -TEST_F(SysmanDevicePowerFixture, DISABLED_GivenValidPowerHandleWhenGettingPowerPropertiesAllowSetToTrueThenCallSucceeds) { +TEST_F(SysmanDevicePowerFixture, GivenValidPowerHandleWhenGettingPowerPropertiesThenErrorIsReturned) { // Setting allow set calls or not init(true); auto handles = getPowerHandles(powerHandleComponentCount); for (auto handle : handles) { - zes_power_properties_t properties; + + zes_power_properties_t properties = {}; + zes_power_ext_properties_t extProperties = {}; + zes_power_limit_ext_desc_t defaultLimit = {}; + + extProperties.defaultLimit = &defaultLimit; + extProperties.stype = ZES_STRUCTURE_TYPE_POWER_EXT_PROPERTIES; + properties.pNext = &extProperties; ze_result_t result = zesPowerGetProperties(handle, &properties); - EXPECT_EQ(ZE_RESULT_SUCCESS, result); - EXPECT_FALSE(properties.onSubdevice); - EXPECT_EQ(properties.subdeviceId, 0u); - EXPECT_TRUE(properties.canControl); - EXPECT_TRUE(properties.isEnergyThresholdSupported); - EXPECT_EQ(static_cast(properties.maxLimit), pKmdSysManager->mockMaxPowerLimit); - EXPECT_EQ(static_cast(properties.minLimit), pKmdSysManager->mockMinPowerLimit); - EXPECT_EQ(static_cast(properties.defaultLimit), pKmdSysManager->mockTpdDefault); + EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, result); } }