Also added missing error code strings and improved test output
messages
Этот коммит содержится в:
Chris Freehill
2019-03-28 17:01:35 -05:00
родитель cbdfac7bdc
Коммит c77f3c0ebd
9 изменённых файлов: 180 добавлений и 36 удалений
+45 -9
Просмотреть файл
@@ -879,16 +879,30 @@ rsmi_status_t
rsmi_dev_gpu_clk_freq_get(uint32_t dv_ind, rsmi_clk_type_t clk_type,
rsmi_frequencies_t *f) {
TRY
amd::smi::DevInfoTypes dev_type;
switch (clk_type) {
case RSMI_CLK_TYPE_SYS:
return get_frequencies(amd::smi::kDevGPUSClk, dv_ind, f);
dev_type = amd::smi::kDevGPUSClk;
break;
case RSMI_CLK_TYPE_MEM:
return get_frequencies(amd::smi::kDevGPUMClk, dv_ind, f);
dev_type = amd::smi::kDevGPUMClk;
break;
case RSMI_CLK_TYPE_DF:
dev_type = amd::smi::kDevFClk;
break;
case RSMI_CLK_TYPE_DCEF:
dev_type = amd::smi::kDevDCEFClk;
break;
case RSMI_CLK_TYPE_SOC:
dev_type = amd::smi::kDevSOCClk;
break;
default:
return RSMI_STATUS_INVALID_ARGS;
}
return get_frequencies(dev_type, dv_ind, f);
CATCH
}
@@ -940,22 +954,30 @@ rsmi_dev_gpu_clk_freq_set(uint32_t dv_ind,
}
int ret_i;
amd::smi::DevInfoTypes dev_type;
switch (clk_type) {
case RSMI_CLK_TYPE_SYS:
ret_i = dev->writeDevInfo(amd::smi::kDevGPUSClk, freq_enable_str);
return errno_to_rsmi_status(ret_i);
dev_type = amd::smi::kDevGPUSClk;
break;
case RSMI_CLK_TYPE_MEM:
ret_i = dev->writeDevInfo(amd::smi::kDevGPUMClk, freq_enable_str);
return errno_to_rsmi_status(ret_i);
dev_type = amd::smi::kDevGPUMClk;
break;
case RSMI_CLK_TYPE_DF:
dev_type = amd::smi::kDevFClk;
break;
case RSMI_CLK_TYPE_SOC:
dev_type = amd::smi::kDevSOCClk;
break;
case RSMI_CLK_TYPE_DCEF:
dev_type = amd::smi::kDevDCEFClk;
break;
default:
return RSMI_STATUS_INVALID_ARGS;
}
return RSMI_STATUS_SUCCESS;
ret_i = dev->writeDevInfo(dev_type, freq_enable_str);
return errno_to_rsmi_status(ret_i);
CATCH
}
@@ -1691,6 +1713,20 @@ rsmi_status_string(rsmi_status_t status, const char **status_string) {
"system for this device type";
break;
case RSMI_STATUS_NOT_FOUND:
*status_string = "An item required to complete the call was not found";
break;
case RSMI_STATUS_INSUFFICIENT_SIZE:
*status_string = "Not enough resources were available to fully execute"
" the call";
break;
case RSMI_STATUS_UNKNOWN_ERROR:
*status_string = "An unknown error prevented the call from completing"
" successfully";
break;
default:
*status_string = "An unknown error occurred";
return RSMI_STATUS_UNKNOWN_ERROR;
+16 -4
Просмотреть файл
@@ -68,6 +68,9 @@ static const char *kDevSubSysVendorIDFName = "subsystem_vendor";
static const char *kDevOverDriveLevelFName = "pp_sclk_od";
static const char *kDevGPUSClkFName = "pp_dpm_sclk";
static const char *kDevGPUMClkFName = "pp_dpm_mclk";
static const char *kDevDCEFClkFName = "pp_dpm_dcefclk";
static const char *kDevFClkFName = "pp_dpm_fclk";
static const char *kDevSOCClkFName = "pp_dpm_socclk";
static const char *kDevGPUPCIEClkFname = "pp_dpm_pcie";
static const char *kDevPowerProfileModeFName = "pp_power_profile_mode";
static const char *kDevPowerODVoltageFName = "pp_od_clk_voltage";
@@ -104,6 +107,9 @@ static const std::map<DevInfoTypes, const char *> kDevAttribNameMap = {
{kDevSubSysVendorID, kDevSubSysVendorIDFName},
{kDevGPUMClk, kDevGPUMClkFName},
{kDevGPUSClk, kDevGPUSClkFName},
{kDevDCEFClk, kDevDCEFClkFName},
{kDevFClk, kDevFClkFName},
{kDevSOCClk, kDevSOCClkFName},
{kDevPCIEClk, kDevGPUPCIEClkFname},
{kDevPowerProfileMode, kDevPowerProfileModeFName},
{kDevUsage, kDevUsageFName},
@@ -152,13 +158,13 @@ Device:: ~Device() {
}
template <typename T>
int Device::openSysfsFileStream(DevInfoTypes type, T *fs, bool write) {
int Device::openSysfsFileStream(DevInfoTypes type, T *fs, const char *str) {
auto sysfs_path = path_;
if (env_->path_DRM_root_override && type == env_->enum_override) {
sysfs_path = env_->path_DRM_root_override;
if (write) {
if (str) {
sysfs_path += ".write";
}
}
@@ -166,7 +172,7 @@ int Device::openSysfsFileStream(DevInfoTypes type, T *fs, bool write) {
sysfs_path += "/device/";
sysfs_path += kDevAttribNameMap.at(type);
DBG_FILE_ERROR(sysfs_path, (std::string *)nullptr);
DBG_FILE_ERROR(sysfs_path, str);
if (!isRegularFile(sysfs_path)) {
return EISDIR;
}
@@ -202,7 +208,7 @@ int Device::writeDevInfoStr(DevInfoTypes type, std::string valStr) {
std::ofstream fs;
int ret;
ret = openSysfsFileStream(type, &fs, true);
ret = openSysfsFileStream(type, &fs, valStr.c_str());
if (ret != 0) {
return ret;
}
@@ -252,9 +258,12 @@ int Device::writeDevInfo(DevInfoTypes type, uint64_t val) {
int Device::writeDevInfo(DevInfoTypes type, std::string val) {
switch (type) {
case kDevGPUMClk:
case kDevDCEFClk:
case kDevFClk:
case kDevGPUSClk:
case kDevPCIEClk:
case kDevPowerODVoltage:
case kDevSOCClk:
return writeDevInfoStr(type, val);
default:
@@ -347,7 +356,10 @@ int Device::readDevInfo(DevInfoTypes type, std::vector<std::string> *val) {
switch (type) {
case kDevGPUMClk:
case kDevGPUSClk:
case kDevDCEFClk:
case kDevFClk:
case kDevPCIEClk:
case kDevSOCClk:
case kDevPowerProfileMode:
case kDevPowerODVoltage:
case kDevErrCntSDMA: