Add support for setting default values for min and max frquency

Related-To: LOCI-3170

Signed-off-by: Mayank Raghuwanshi <mayank.raghuwanshi@intel.com>
This commit is contained in:
Mayank Raghuwanshi
2022-09-05 10:12:40 +05:30
committed by Compute-Runtime-Automation
parent 52ae228535
commit 0d5f3351df
4 changed files with 81 additions and 0 deletions

View File

@@ -13,6 +13,8 @@ namespace ult {
const std::string minFreqFile("gt/gt0/rps_min_freq_mhz");
const std::string maxFreqFile("gt/gt0/rps_max_freq_mhz");
const std::string minDefaultFreqFile("gt/gt0/.defaults/rps_min_freq_mhz");
const std::string maxDefaultFreqFile("gt/gt0/.defaults/rps_max_freq_mhz");
const std::string boostFreqFile("gt/gt0/rps_boost_freq_mhz");
const std::string requestFreqFile("gt/gt0/punit_req_freq_mhz");
const std::string tdpFreqFile("gt/gt0/rapl_PL1_freq_mhz");
@@ -49,6 +51,8 @@ struct Mock<FrequencySysfsAccess> : public FrequencySysfsAccess {
double mockMax = 0;
double mockBoost = 0;
double mockRequest = 0;
double mockDefaultMin = 1;
double mockDefaultMax = 1000;
double mockTdp = 0;
double mockActual = 0;
double mockEfficient = 0;
@@ -66,6 +70,8 @@ struct Mock<FrequencySysfsAccess> : public FrequencySysfsAccess {
ze_result_t mockReadActualResult = ZE_RESULT_SUCCESS;
ze_result_t mockReadMinValResult = ZE_RESULT_SUCCESS;
ze_result_t mockReadMaxValResult = ZE_RESULT_SUCCESS;
ze_result_t mockReadDefaultMinResult = ZE_RESULT_SUCCESS;
ze_result_t mockReadDefaultMaxResult = ZE_RESULT_SUCCESS;
ze_result_t mockReadMaxResult = ZE_RESULT_SUCCESS;
ze_result_t mockReadVal32Result = ZE_RESULT_SUCCESS;
ze_result_t mockWriteMaxResult = ZE_RESULT_SUCCESS;
@@ -218,6 +224,16 @@ struct Mock<FrequencySysfsAccess> : public FrequencySysfsAccess {
return mockReadMinValResult;
}
val = mockMinVal;
} else if (file.compare(minDefaultFreqFile) == 0) {
if (mockReadDefaultMinResult != ZE_RESULT_SUCCESS) {
return mockReadDefaultMinResult;
}
val = mockDefaultMin;
} else if (file.compare(maxDefaultFreqFile) == 0) {
if (mockReadDefaultMaxResult != ZE_RESULT_SUCCESS) {
return mockReadDefaultMaxResult;
}
val = mockDefaultMax;
} else {
return ZE_RESULT_ERROR_NOT_AVAILABLE;
}

View File

@@ -269,6 +269,54 @@ TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFreq
}
}
TEST_F(SysmanDeviceFrequencyFixture, GivenNegativeRangeSetWhenGetRangeIsCalledThenReturnsValueFromDefaultPath) {
auto handles = getFreqHandles(handleComponentCount);
for (auto &handle : handles) {
const double negativeMin = -1;
const double negativeMax = -1;
zes_freq_range_t limits;
limits.min = negativeMin;
limits.max = negativeMax;
EXPECT_EQ(ZE_RESULT_SUCCESS, zesFrequencySetRange(handle, &limits));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesFrequencyGetRange(handle, &limits));
EXPECT_EQ(pSysfsAccess->mockDefaultMin, limits.min);
EXPECT_EQ(pSysfsAccess->mockDefaultMax, limits.max);
EXPECT_DOUBLE_EQ(pSysfsAccess->mockBoost, limits.max);
}
}
TEST_F(SysmanDeviceFrequencyFixture, GivenNegativeRangeWhenSetRangeIsCalledAndSettingMaxValueFailsThenFailureIsReturned) {
pSysfsAccess->mockWriteMaxResult = ZE_RESULT_ERROR_NOT_AVAILABLE;
auto handles = getFreqHandles(handleComponentCount);
for (auto &handle : handles) {
const double negativeMin = -1;
const double negativeMax = -1;
zes_freq_range_t limits;
limits.min = negativeMin;
limits.max = negativeMax;
EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, zesFrequencySetRange(handle, &limits));
}
}
TEST_F(SysmanDeviceFrequencyFixture, GivenNegativeRangeWhenSetRangeIsCalledAndGettingDefaultMaxValueFailsThenNoFreqRangeIsInEffect) {
pSysfsAccess->mockReadDefaultMaxResult = ZE_RESULT_ERROR_NOT_AVAILABLE;
auto handles = getFreqHandles(handleComponentCount);
for (auto &handle : handles) {
const double negativeMin = -1;
const double negativeMax = -1;
zes_freq_range_t limits;
limits.min = negativeMin;
limits.max = negativeMax;
EXPECT_EQ(ZE_RESULT_SUCCESS, zesFrequencySetRange(handle, &limits));
EXPECT_EQ(ZE_RESULT_SUCCESS, zesFrequencyGetRange(handle, &limits));
EXPECT_DOUBLE_EQ(-1, limits.min);
EXPECT_DOUBLE_EQ(-1, limits.max);
}
}
TEST_F(SysmanDeviceFrequencyFixture, GivenValidFrequencyHandleWhenCallingzesFrequencySetRangeThenVerifyzesFrequencySetRangeTest2CallSucceeds) {
auto handles = getFreqHandles(handleComponentCount);
for (auto handle : handles) {