Update amdsmi header to include GpuvSMI related APIs and definitions

Signed-off-by: Alexsandar Nedeljkovic <alexsandar.nedeljkovic@amd.com>
Change-Id: Iff46d724f35b52028b67ce272f800fcf820c96ac


[ROCm/amdsmi commit: 61289339d8]
Tá an tiomantas seo le fáil i:
Alexsandar Nedeljkovic
2022-07-12 10:20:06 +02:00
tuismitheoir f7e5bb73d0
tiomantas f79d7838f4
D'athraigh 5 comhad le 841 breiseanna agus 719 scriosta
+8 -15
Féach ar an gComhad
@@ -103,11 +103,11 @@ int main() {
}
// Get device name
char name[128];
ret = amdsmi_dev_name_get(device_handles[j], name, 128);
amdsmi_board_info board_info;
ret = amdsmi_get_board_info(device_handles[j], &board_info);
CHK_AMDSMI_RET(ret)
std::cout << "\tdevice "
<< j <<"\n\t\tName:" << name << std::endl;
<< j <<"\n\t\tName:" << board_info.product_name << std::endl;
// Get temperature
int64_t val_i64 = 0;
@@ -117,15 +117,14 @@ int main() {
std::cout << "\t\tTemperature: " << val_i64/1000 << "C" << std::endl;
// Get frame buffer
uint32_t fb_total = 0;
uint32_t fb_used = 0;
ret = amdsmi_fb_usage_get(device_handles[j], &fb_total, &fb_used);
amdsmi_vram_info_t vram_usage;
ret = amdsmi_get_vram_usage(device_handles[j], &vram_usage);
CHK_AMDSMI_RET(ret)
std::cout << "\t\tFrame buffer usage (MB): " << fb_used << "/"
<< fb_total << std::endl;
std::cout << "\t\tFrame buffer usage (MB): " << vram_usage.vram_used << "/"
<< vram_usage.vram_total << std::endl;
// Get Cap info
struct smi_gpu_caps caps_info = {};
amdsmi_gpu_caps_t caps_info = {};
ret = amdsmi_get_caps_info(device_handles[j], &caps_info);
CHK_AMDSMI_RET(ret)
std::cout << "\t\tGFX IP Major: " << caps_info.gfx.gfxip_major << "\n";
@@ -134,12 +133,6 @@ int main() {
std::cout << "\t\tDMA IP Count: " << caps_info.dma_ip_count << "\n";
std::cout << "\t\tGFX IP Count: " << caps_info.gfx_ip_count << "\n";
std::cout << "\t\tMM IP Count: " << int(caps_info.mm.mm_ip_count) << "\n";
std::cout << "\t\tXGMI supported: " << (caps_info.supported_fields_flags
& XGMI_FLAG ? "TRUE" : "FALSE") << "\n";
std::cout << "\t\tMM METRICS supported: " <<
(caps_info.supported_fields_flags & MM_METRICS_FLAG ? "TRUE" : "FALSE")
<< "\n";
}
}
Tá difríocht comhad cosc orthu toisc go bhfuil sé ró-mhór Difríocht Luchtaigh
+17 -24
Féach ar an gComhad
@@ -66,7 +66,7 @@
template <typename F, typename ...Args>
amdsmi_status_t rsmi_wrapper(F && f,
amdsmi_device_handle device_handle, Args &&... args) {
if (device_handle == nullptr) return AMDSMI_STATUS_INVALID_ARGS;
if (device_handle == nullptr) return AMDSMI_STATUS_INVAL;
amd::smi::AMDSmiDevice* device = nullptr;
amdsmi_status_t r = amd::smi::AMDSmiSystem::getInstance()
@@ -121,7 +121,7 @@ amdsmi_status_string(amdsmi_status_t status, const char **status_string) {
amdsmi_status_t amdsmi_get_socket_handles(uint32_t *socket_count,
amdsmi_socket_handle* socket_handles[]) {
if (socket_count == nullptr || socket_handles == nullptr) {
return AMDSMI_STATUS_INVALID_ARGS;
return AMDSMI_STATUS_INVAL;
}
std::vector<amd::smi::AMDSmiSocket*>& sockets
@@ -135,7 +135,7 @@ amdsmi_status_t amdsmi_get_socket_info(
amdsmi_socket_handle socket_handle,
char *name, size_t len) {
if (socket_handle == nullptr || name == nullptr) {
return AMDSMI_STATUS_INVALID_ARGS;
return AMDSMI_STATUS_INVAL;
}
@@ -154,7 +154,7 @@ amdsmi_status_t amdsmi_get_device_handles(amdsmi_socket_handle socket_handle,
uint32_t *device_count,
amdsmi_device_handle* device_handles[]) {
if (device_count == nullptr) {
return AMDSMI_STATUS_INVALID_ARGS;
return AMDSMI_STATUS_INVAL;
}
amd::smi::AMDSmiSocket* socket = nullptr;
@@ -171,7 +171,7 @@ amdsmi_status_t amdsmi_get_device_handles(amdsmi_socket_handle socket_handle,
amdsmi_status_t amdsmi_get_device_type(amdsmi_device_handle device_handle ,
device_type_t* device_type) {
if (device_type == nullptr) {
return AMDSMI_STATUS_INVALID_ARGS;
return AMDSMI_STATUS_INVAL;
}
amd::smi::AMDSmiDevice* device = nullptr;
amdsmi_status_t r = amd::smi::AMDSmiSystem::getInstance()
@@ -182,30 +182,28 @@ amdsmi_status_t amdsmi_get_device_type(amdsmi_device_handle device_handle ,
return AMDSMI_STATUS_SUCCESS;
}
amdsmi_status_t amdsmi_dev_name_get(amdsmi_device_handle device_handle,
char *name, size_t len) {
if (name == nullptr || len == 0) {
return AMDSMI_STATUS_INVALID_ARGS;
amdsmi_status_t amdsmi_get_board_info(amdsmi_device_handle device_handle, amdsmi_board_info_t *board_info) {
if (board_info == NULL) {
return AMDSMI_STATUS_INVAL;
}
return rsmi_wrapper(rsmi_dev_name_get, device_handle, name, len);
return rsmi_wrapper(rsmi_dev_name_get, device_handle, board_info->product_name, AMDSMI_NORMAL_STRING_LENGTH);
}
amdsmi_status_t amdsmi_dev_temp_metric_get(amdsmi_device_handle device_handle,
uint32_t sensor_type,
amdsmi_temperature_metric_t metric, int64_t *temperature) {
if (temperature == nullptr) {
return AMDSMI_STATUS_INVALID_ARGS;
return AMDSMI_STATUS_INVAL;
}
return rsmi_wrapper(rsmi_dev_temp_metric_get, device_handle, sensor_type,
static_cast<rsmi_temperature_metric_t>(metric), temperature);
}
amdsmi_status_t amdsmi_fb_usage_get(amdsmi_device_handle device_handle,
uint32_t *fb_total, uint32_t *fb_used) {
if (fb_total == nullptr || fb_used == nullptr) {
return AMDSMI_STATUS_INVALID_ARGS;
amdsmi_status_t amdsmi_get_vram_usage(amdsmi_device_handle device_handle, amdsmi_vram_info_t *vram_info) {
if (vram_info == NULL) {
return AMDSMI_STATUS_INVAL;
}
amd::smi::AMDSmiDevice* device = nullptr;
@@ -226,21 +224,21 @@ amdsmi_status_t amdsmi_fb_usage_get(amdsmi_device_handle device_handle,
sizeof(struct drm_amdgpu_memory_info), &gtt);
if (r != AMDSMI_STATUS_SUCCESS) return r;
*fb_total = static_cast<uint32_t>(gtt.vram_size / (1024 * 1024));
vram_info->vram_total = static_cast<uint32_t>(gtt.vram_size / (1024 * 1024));
r = gpu_device->amdgpu_query_info(AMDGPU_INFO_VRAM_USAGE,
sizeof(vram_used), &vram_used);
if (r != AMDSMI_STATUS_SUCCESS) return r;
*fb_used = static_cast<uint32_t>(vram_used / (1024 * 1024));
vram_info->vram_used = static_cast<uint32_t>(vram_used / (1024 * 1024));
return AMDSMI_STATUS_SUCCESS;
}
amdsmi_status_t amdsmi_get_caps_info(amdsmi_device_handle device_handle,
struct smi_gpu_caps *info) {
struct amdsmi_gpu_caps *info) {
if (info == nullptr) {
return AMDSMI_STATUS_INVALID_ARGS;
return AMDSMI_STATUS_INVAL;
}
amd::smi::AMDSmiDevice* amd_device = nullptr;
@@ -317,11 +315,6 @@ amdsmi_status_t amdsmi_get_caps_info(amdsmi_device_handle device_handle,
info->mm.mm_ip_count = static_cast<uint8_t>(count);
info->supported_fields_flags = 0;
info->supported_fields_flags |= POWER_GFX_VOLTAGE_FLAG;
info->supported_fields_flags |= MEM_USAGE_FLAG;
info->supported_fields_flags |= MM_METRICS_FLAG;
info->ras_supported = false;
return AMDSMI_STATUS_SUCCESS;
+1 -1
Féach ar an gComhad
@@ -87,7 +87,7 @@ amdsmi_status_t AMDSmiDrm::init() {
auto d = dir_ptr(opendir("/dev/dri/"), &closedir);
if (d == nullptr) return AMDSMI_STATUS_INIT_ERROR;
if (d == nullptr) return AMDSMI_STATUS_NOT_INIT;
while ((dir = readdir(d.get())) != NULL) {
char* name_cstr = new char[sizeof(dir->d_name) + 10];
+4 -4
Féach ar an gComhad
@@ -128,7 +128,7 @@ amdsmi_status_t AMDSmiSystem::handle_to_socket(
amdsmi_socket_handle socket_handle,
AMDSmiSocket** socket) {
if (socket_handle == nullptr || socket == nullptr) {
return AMDSMI_STATUS_INVALID_ARGS;
return AMDSMI_STATUS_INVAL;
}
*socket = static_cast<AMDSmiSocket*>(socket_handle);
@@ -137,14 +137,14 @@ amdsmi_status_t AMDSmiSystem::handle_to_socket(
!= sockets_.end()) {
return AMDSMI_STATUS_SUCCESS;
}
return AMDSMI_STATUS_INVALID_ARGS;
return AMDSMI_STATUS_INVAL;
}
amdsmi_status_t AMDSmiSystem::handle_to_device(
amdsmi_device_handle device_handle,
AMDSmiDevice** device) {
if (device_handle == nullptr || device == nullptr) {
return AMDSMI_STATUS_INVALID_ARGS;
return AMDSMI_STATUS_INVAL;
}
*device = static_cast<AMDSmiDevice*>(device_handle);
@@ -153,7 +153,7 @@ amdsmi_status_t AMDSmiSystem::handle_to_device(
!= devices_.end()) {
return AMDSMI_STATUS_SUCCESS;
}
return AMDSMI_STATUS_INVALID_ARGS;
return AMDSMI_STATUS_INVAL;
}