Error handling for unset freqs

Sending RSMI_STATUS_UNEXPECTED_DATA for drivers
which do not set some clock freqs

Change-Id: I43a9515c2757dddd412bb25cfd54095e63367030
Signed-off-by: Charis Poag <Charis.Poag@amd.com>


[ROCm/amdsmi commit: f191c2753c]
Этот коммит содержится в:
Charis Poag
2023-08-23 09:14:15 -05:00
родитель 27f9c861d2
Коммит d0ea73d2a2
3 изменённых файлов: 20 добавлений и 4 удалений
+4
Просмотреть файл
@@ -1468,6 +1468,8 @@ rsmi_status_t rsmi_dev_unique_id_get(uint32_t dv_ind, uint64_t *id);
* written
*
* @retval ::RSMI_STATUS_SUCCESS is returned upon successful call.
* @retval ::RSMI_STATUS_UNEXPECTED_DATA Data read or provided was not as
* expected
*
*/
rsmi_status_t
@@ -2370,6 +2372,8 @@ rsmi_status_t rsmi_dev_mem_overdrive_level_get(uint32_t dv_ind, uint32_t *od);
* @retval ::RSMI_STATUS_NOT_SUPPORTED installed software or hardware does not
* support this function with the given arguments
* @retval ::RSMI_STATUS_INVALID_ARGS the provided arguments are not valid
* @retval ::RSMI_STATUS_UNEXPECTED_DATA Data read or provided was not as
* expected
*
*/
rsmi_status_t rsmi_dev_gpu_clk_freq_get(uint32_t dv_ind,
+9 -1
Просмотреть файл
@@ -577,7 +577,7 @@ static rsmi_status_t test_set_freq(uint32_t dv_ind) {
static void print_frequencies(rsmi_frequencies_t *f) {
assert(f != nullptr);
for (uint32_t j = 0; j < f->num_supported; ++j) {
std::cout << "\t** " << j << ": " << f->frequency[j];
std::cout << "\t** " << j << ": " << std::to_string(f->frequency[j]);
if (j == f->current) {
std::cout << " *";
}
@@ -777,6 +777,14 @@ int main() {
std::cout << f.num_supported << std::endl;
print_frequencies(&f);
ret = rsmi_dev_gpu_clk_freq_get(i, RSMI_CLK_TYPE_SOC, &f);
CHK_RSMI_NOT_SUPPORTED_OR_UNEXPECTED_DATA_RET(ret)
std::cout << "\t**Supported GPU clock frequencies (SOC clk): ";
std::cout << f.num_supported << std::endl;
std::cout << "\t**Current value (SOC clk): ";
std::cout << f.current << std::endl;
print_frequencies(&f);
std::cout << "\t**Monitor name: ";
char name[128];
ret = rsmi_dev_name_get(i, name, 128);
+7 -3
Просмотреть файл
@@ -1065,6 +1065,8 @@ static rsmi_status_t get_frequencies(amd::smi::DevInfoTypes type, rsmi_clk_type_
if (f == nullptr) {
return RSMI_STATUS_INVALID_ARGS;
}
memset(f, 0, sizeof(rsmi_frequencies_t));
f->current=0;
ret = GetDevValueVec(type, dv_ind, &val_vec);
if (ret != RSMI_STATUS_SUCCESS) {
@@ -1114,6 +1116,7 @@ static rsmi_status_t get_frequencies(amd::smi::DevInfoTypes type, rsmi_clk_type_
// assert(f->current < f->num_supported);
if (f->current >= f->num_supported) {
f->current = -1;
return RSMI_STATUS_UNEXPECTED_DATA;
}
return RSMI_STATUS_SUCCESS;
@@ -1748,7 +1751,7 @@ rsmi_dev_gpu_clk_freq_set(uint32_t dv_ind,
TRY
std::ostringstream ss;
ss << __PRETTY_FUNCTION__ << "| ======= start =======";
ss << __PRETTY_FUNCTION__ << " | ======= start =======";
LOG_TRACE(ss);
REQUIRE_ROOT_ACCESS
DEVICE_MUTEX
@@ -3250,8 +3253,9 @@ rsmi_status_string(rsmi_status_t status, const char **status_string) {
break;
case RSMI_STATUS_UNEXPECTED_DATA:
*status_string = "RSMI_STATUS_UNEXPECTED_DATA: Data (usually from reading"
" a file) was not of the type that was expected";
*status_string = "RSMI_STATUS_UNEXPECTED_DATA: Data read (usually from "
"a file) or provided to function is "
"not what was expected";
break;
case RSMI_STATUS_BUSY: