Update amdsmi header to include GpuvSMI related APIs and definitions
Signed-off-by: Alexsandar Nedeljkovic <alexsandar.nedeljkovic@amd.com> Change-Id: Iff46d724f35b52028b67ce272f800fcf820c96ac
このコミットが含まれているのは:
@@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+811
-675
ファイル差分が大きすぎるため省略します
差分を読み込み
+17
-24
@@ -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), >t);
|
||||
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;
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
新しいイシューから参照
ユーザーをブロックする