Added driver_name to amdsmi_cli tool

Signed-off-by: Maisam Arif <maisarif@amd.com>
Change-Id: I8f3d52e0b23298443b2b16afec418cbbbc5f77e0


[ROCm/amdsmi commit: 572bf563d1]
Этот коммит содержится в:
Maisam Arif
2023-09-29 13:46:46 -05:00
коммит произвёл Maisam Arif
родитель 0a655243a4
Коммит 401d3f229c
11 изменённых файлов: 50 добавлений и 4 удалений
+2 -1
Просмотреть файл
@@ -391,7 +391,8 @@ class AMDSMICommands():
static_dict['limit'] = limit_info
if args.driver:
driver_info = {"driver_version" : "N/A",
driver_info = {"driver_name" : "N/A",
"driver_version" : "N/A",
"driver_date" : "N/A"}
try:
+1
Просмотреть файл
@@ -322,6 +322,7 @@ int main() {
ret = amdsmi_get_gpu_driver_info(processor_handles[j], &driver_info);
CHK_AMDSMI_RET(ret)
printf(" Output of amdsmi_get_gpu_driver_info:\n");
printf("\tDriver name: %s\n", driver_info.driver_name);
printf("\tDriver version: %s\n", driver_info.driver_version);
printf("\tDriver date: %s\n\n", driver_info.driver_date);
+1
Просмотреть файл
@@ -444,6 +444,7 @@ typedef struct{
typedef struct {
char driver_name[AMDSMI_MAX_STRING_LENGTH];
char driver_version[AMDSMI_MAX_STRING_LENGTH];
char driver_date[AMDSMI_MAX_STRING_LENGTH];
} amdsmi_driver_info_t;
+1
Просмотреть файл
@@ -75,6 +75,7 @@ class AMDSmiDrm {
amdsmi_status_t amdgpu_query_hw_ip(int fd, unsigned info_id,
unsigned hw_ip_type, unsigned size, void *value);
amdsmi_status_t amdgpu_query_vbios(int fd, void *info);
amdsmi_status_t amdgpu_query_driver_name(int fd, std::string& driver_name);
amdsmi_status_t amdgpu_query_driver_date(int fd, std::string& driver_date);
private:
+1
Просмотреть файл
@@ -81,6 +81,7 @@ class AMDSmiGPUDevice: public AMDSmiProcessor {
amdsmi_status_t amdgpu_query_fw(unsigned info_id, unsigned fw_type,
unsigned size, void *value) const;
amdsmi_status_t amdgpu_query_vbios(void *info) const;
amdsmi_status_t amdgpu_query_driver_name(std::string& name) const;
amdsmi_status_t amdgpu_query_driver_date(std::string& date) const;
private:
uint32_t gpu_id_;
+7 -1
Просмотреть файл
@@ -310,7 +310,13 @@ Input parameters:
* `processor_handle` dev for which to query
Output: Driver info that is handling the device
Output: Dictionary with fields
Field | Content
---|---
`driver_name` | driver name
`driver_version` | driver_version
`driver_date` | driver_date
Exceptions that can be thrown by `amdsmi_get_gpu_driver_info` function:
+1
Просмотреть файл
@@ -962,6 +962,7 @@ def amdsmi_get_gpu_driver_info(
)
return {
"driver_name": info.driver_name.decode("utf-8"),
"driver_version": info.driver_version.decode("utf-8"),
"driver_date": info.driver_date.decode("utf-8")
}
+1
Просмотреть файл
@@ -774,6 +774,7 @@ class struct_amdsmi_driver_info_t(Structure):
struct_amdsmi_driver_info_t._pack_ = 1 # source:False
struct_amdsmi_driver_info_t._fields_ = [
('driver_name', ctypes.c_char * 64),
('driver_version', ctypes.c_char * 64),
('driver_date', ctypes.c_char * 64),
]
+14 -2
Просмотреть файл
@@ -1721,18 +1721,30 @@ amdsmi_status_t amdsmi_get_gpu_driver_info(amdsmi_processor_handle processor_han
return r;
int length = AMDSMI_MAX_STRING_LENGTH;
// Get the driver version
status = smi_amdgpu_get_driver_version(gpu_device,
&length, info->driver_version);
// Get the driver date
std::string driver_date;
status = gpu_device->amdgpu_query_driver_date(driver_date);
if (status != AMDSMI_STATUS_SUCCESS) return r;
if (status != AMDSMI_STATUS_SUCCESS)
return r;
// Reformat the driver date from 20150101 to 2015/01/01 00:00
if (driver_date.length() == 8) {
driver_date = driver_date.substr(0, 4) + "/" + driver_date.substr(4, 2)
+ "/" + driver_date.substr(6, 2) + " 00:00";
}
strncpy(info->driver_date, driver_date.c_str(), AMDSMI_MAX_STRING_LENGTH-1);
// Get the driver name
std::string driver_name;
status = gpu_device->amdgpu_query_driver_name(driver_name);
if (status != AMDSMI_STATUS_SUCCESS)
return r;
strncpy(info->driver_name, driver_name.c_str(), AMDSMI_MAX_STRING_LENGTH-1);
return status;
}
+12
Просмотреть файл
@@ -197,6 +197,18 @@ amdsmi_status_t AMDSmiDrm::cleanup() {
return AMDSMI_STATUS_SUCCESS;
}
amdsmi_status_t AMDSmiDrm::amdgpu_query_driver_name(int fd, std::string& driver_name) {
// RAII handler
using drm_version_ptr = std::unique_ptr<drmVersion,
decltype(&drmFreeVersion)>;
std::lock_guard<std::mutex> guard(drm_mutex_);
auto version = drm_version_ptr(
drm_get_version_(fd), drm_free_version_);
if (version == nullptr) return AMDSMI_STATUS_DRM_ERROR;
driver_name = version->name;
return AMDSMI_STATUS_SUCCESS;
}
amdsmi_status_t AMDSmiDrm::amdgpu_query_driver_date(int fd, std::string& driver_date) {
// RAII handler
using drm_version_ptr = std::unique_ptr<drmVersion,
+9
Просмотреть файл
@@ -105,6 +105,15 @@ amdsmi_status_t AMDSmiGPUDevice::amdgpu_query_info(unsigned info_id,
return drm_.amdgpu_query_info(fd, info_id, size, value);
}
amdsmi_status_t AMDSmiGPUDevice::amdgpu_query_driver_name(std::string& name) const {
amdsmi_status_t ret;
uint32_t fd = 0;
ret = drm_.get_drm_fd_by_index(gpu_id_, &fd);
if (ret != AMDSMI_STATUS_SUCCESS) return AMDSMI_STATUS_NOT_SUPPORTED;
return drm_.amdgpu_query_driver_name(fd, name);
}
amdsmi_status_t AMDSmiGPUDevice::amdgpu_query_driver_date(std::string& date) const {
amdsmi_status_t ret;
uint32_t fd = 0;