amdsmi.h File Reference

amdsmi.h File Reference#

AMD SMI: amdsmi.h File Reference
amdsmi.h File Reference

AMD System Management Interface API. More...

#include <stdlib.h>
#include <stdbool.h>
#include <stdint.h>

Go to the source code of this file.

Data Structures

struct  amdsmi_range_t
 This structure represents a range (e.g., frequencies or voltages). More...
 
struct  amdsmi_xgmi_info_t
 
struct  amdsmi_vram_info_t
 
struct  amdsmi_frequency_range_t
 
union  amdsmi_bdf_t
 
struct  amdsmi_power_cap_info_t
 
struct  amdsmi_vbios_info_t
 
struct  amdsmi_fw_info_t
 
struct  amdsmi_asic_info_t
 
struct  amdsmi_board_info_t
 
struct  amdsmi_power_info_t
 
struct  amdsmi_clk_info_t
 
struct  amdsmi_engine_usage_t
 
struct  amdsmi_proc_info_t
 
struct  amdsmi_counter_value_t
 
struct  amdsmi_evt_notification_data_t
 
struct  amdsmi_utilization_counter_t
 The utilization counter data. More...
 
struct  amdsmi_retired_page_record_t
 Reserved Memory Page Record. More...
 
struct  amdsmi_power_profile_status_t
 This structure contains information about which power profiles are supported by the system for a given device, and which power profile is currently active. More...
 
struct  amdsmi_frequencies_t
 This structure holds information about clock frequencies. More...
 
struct  amdsmi_pcie_bandwidth_t
 This structure holds information about the possible PCIe bandwidths. Specifically, the possible transfer rates and their associated numbers of lanes are stored here. More...
 
struct  amdsmi_version_t
 This structure holds version information. More...
 
struct  amdsmi_od_vddc_point_t
 This structure represents a point on the frequency-voltage plane. More...
 
struct  amdsmi_freq_volt_region_t
 This structure holds 2 amdsmi_range_t's, one for frequency and one for voltage. These 2 ranges indicate the range of possible values for the corresponding amdsmi_od_vddc_point_t. More...
 
struct  amdsmi_od_volt_curve_t
 
struct  amdsmi_od_volt_freq_data_t
 This structure holds the frequency-voltage values for a device. More...
 
struct  amd_metrics_table_header_t
 The following structures hold the gpu metrics values for a device. More...
 
struct  amdsmi_gpu_metrics_t
 
struct  amdsmi_error_count_t
 This structure holds error counts. More...
 
struct  amdsmi_pcie_info_t
 This structure holds pcie info. More...
 
struct  amdsmi_process_info_t
 This structure contains information specific to a process. More...
 

Macros

#define AMDSMI_MAX_MM_IP_COUNT   8
 
#define AMDSMI_MAX_DATE_LENGTH   32
 
#define AMDSMI_MAX_STRING_LENGTH   64
 
#define AMDSMI_NORMAL_STRING_LENGTH   32
 
#define AMDSMI_MAX_DEVICES   32
 
#define AMDSMI_MAX_NAME   32
 
#define AMDSMI_MAX_DRIVER_VERSION_LENGTH   80
 
#define AMDSMI_PRODUCT_NAME_LENGTH   128
 
#define AMDSMI_MAX_CONTAINER_TYPE   2
 
#define AMDSMI_GPU_UUID_SIZE   38
 
#define AMDSMI_TIME_FORMAT   "%02d:%02d:%02d.%03d"
 
#define AMDSMI_DATE_FORMAT   "%04d-%02d-%02d:%02d:%02d:%02d.%03d"
 
#define AMDSMI_LIB_VERSION_YEAR   23
 library versioning More...
 
#define AMDSMI_LIB_VERSION_MAJOR   2
 Major version should be changed for every header change (adding/deleting APIs, changing names, fields of structures, etc.)
 
#define AMDSMI_LIB_VERSION_MINOR   0
 Minor version should be updated for each API change, but without changing headers.
 
#define AMDSMI_LIB_VERSION_RELEASE   1
 Release version should be set to 0 as default and can be updated by the PMs for each CSP point release.
 
#define AMDSMI_LIB_VERSION_CREATE_STRING(YEAR, MAJOR, MINOR, RELEASE)   (#YEAR "." #MAJOR "." #MINOR "." #RELEASE)
 
#define AMDSMI_LIB_VERSION_EXPAND_PARTS(YEAR_STR, MAJOR_STR, MINOR_STR, RELEASE_STR)   AMDSMI_LIB_VERSION_CREATE_STRING(YEAR_STR, MAJOR_STR, MINOR_STR, RELEASE_STR)
 
#define AMDSMI_LIB_VERSION_STRING   AMDSMI_LIB_VERSION_EXPAND_PARTS(AMDSMI_LIB_VERSION_YEAR, AMDSMI_LIB_VERSION_MAJOR, AMDSMI_LIB_VERSION_MINOR, AMDSMI_LIB_VERSION_RELEASE)
 
#define AMDSMI_MAX_NUM_FREQUENCIES   32
 Guaranteed maximum possible number of supported frequencies.
 
#define AMDSMI_MAX_FAN_SPEED   255
 
#define AMDSMI_NUM_VOLTAGE_CURVE_POINTS   3
 The number of points that make up a voltage-frequency curve definition.
 
#define AMDSMI_EVENT_MASK_FROM_INDEX(i)   (1ULL << ((i) - 1))
 
#define MAX_EVENT_NOTIFICATION_MSG_SIZE   64
 Maximum number of characters an event notification message will be.
 
#define AMDSMI_MAX_NUM_POWER_PROFILES   (sizeof(amdsmi_bit_field_t) * 8)
 Number of possible power profiles that a system could support.
 
#define AMDSMI_GPU_METRICS_API_FORMAT_VER   1
 The following structure holds the gpu metrics values for a device.
 
#define AMDSMI_GPU_METRICS_API_CONTENT_VER_1   1
 
#define AMDSMI_GPU_METRICS_API_CONTENT_VER_2   2
 
#define AMDSMI_GPU_METRICS_API_CONTENT_VER_3   3
 
#define AMDSMI_NUM_HBM_INSTANCES   4
 
#define CENTRIGRADE_TO_MILLI_CENTIGRADE   1000
 
#define AMDSMI_DEFAULT_VARIANT   0xFFFFFFFFFFFFFFFF
 

Typedefs

typedef void * amdsmi_processor_handle
 opaque handler point to underlying implementation
 
typedef void * amdsmi_socket_handle
 
typedef uint32_t amdsmi_process_handle_t
 
typedef uintptr_t amdsmi_event_handle_t
 Available clock types. More...
 
typedef uint64_t amdsmi_bit_field_t
 Bitfield used in various AMDSMI calls.
 

Enumerations

enum  amdsmi_init_flags_t {
  AMDSMI_INIT_ALL_PROCESSORS = 0x0 , AMDSMI_INIT_AMD_CPUS = (1 << 0) , AMDSMI_INIT_AMD_GPUS = (1 << 1) , AMDSMI_INIT_NON_AMD_CPUS = (1 << 2) ,
  AMDSMI_INIT_NON_AMD_GPUS = (1 << 3)
}
 Initialization flags. More...
 
enum  amdsmi_mm_ip_t { AMDSMI_MM_UVD , AMDSMI_MM_VCE , AMDSMI_MM_VCN , AMDSMI_MM__MAX }
 
enum  amdsmi_container_types_t { CONTAINER_LXC , CONTAINER_DOCKER }
 
enum  processor_type_t {
  UNKNOWN = 0 , AMD_GPU , AMD_CPU , NON_AMD_GPU ,
  NON_AMD_CPU
}
 Device types detectable by AMD SMI.
 
enum  amdsmi_status_t {
  AMDSMI_STATUS_SUCCESS = 0 , AMDSMI_STATUS_INVAL = 1 , AMDSMI_STATUS_NOT_SUPPORTED = 2 , AMDSMI_STATUS_NOT_YET_IMPLEMENTED = 3 ,
  AMDSMI_STATUS_FAIL_LOAD_MODULE = 4 , AMDSMI_STATUS_FAIL_LOAD_SYMBOL = 5 , AMDSMI_STATUS_DRM_ERROR = 6 , AMDSMI_STATUS_API_FAILED = 7 ,
  AMDSMI_STATUS_TIMEOUT = 8 , AMDSMI_STATUS_RETRY = 9 , AMDSMI_STATUS_NO_PERM = 10 , AMDSMI_STATUS_INTERRUPT = 11 ,
  AMDSMI_STATUS_IO = 12 , AMDSMI_STATUS_ADDRESS_FAULT = 13 , AMDSMI_STATUS_FILE_ERROR = 14 , AMDSMI_STATUS_OUT_OF_RESOURCES = 15 ,
  AMDSMI_STATUS_INTERNAL_EXCEPTION = 16 , AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS = 17 , AMDSMI_STATUS_INIT_ERROR = 18 , AMDSMI_STATUS_REFCOUNT_OVERFLOW = 19 ,
  AMDSMI_STATUS_BUSY = 30 , AMDSMI_STATUS_NOT_FOUND = 31 , AMDSMI_STATUS_NOT_INIT = 32 , AMDSMI_STATUS_NO_SLOT = 33 ,
  AMDSMI_STATUS_NO_DATA = 40 , AMDSMI_STATUS_INSUFFICIENT_SIZE = 41 , AMDSMI_STATUS_UNEXPECTED_SIZE = 42 , AMDSMI_STATUS_UNEXPECTED_DATA = 43 ,
  AMDSMI_STATUS_MAP_ERROR = 0xFFFFFFFE , AMDSMI_STATUS_UNKNOWN_ERROR = 0xFFFFFFFF
}
 Error codes returned by amdsmi functions. More...
 
enum  amdsmi_clk_type_t {
  CLK_TYPE_SYS = 0x0 , CLK_TYPE_FIRST = CLK_TYPE_SYS , CLK_TYPE_GFX = CLK_TYPE_SYS , CLK_TYPE_DF ,
  CLK_TYPE_DCEF , CLK_TYPE_SOC , CLK_TYPE_MEM , CLK_TYPE_PCIE ,
  CLK_TYPE_VCLK0 , CLK_TYPE_VCLK1 , CLK_TYPE_DCLK0 , CLK_TYPE_DCLK1 ,
  CLK_TYPE__MAX = CLK_TYPE_DCLK1
}
 
enum  amdsmi_temperature_type_t {
  TEMPERATURE_TYPE_EDGE , TEMPERATURE_TYPE_FIRST = TEMPERATURE_TYPE_EDGE , TEMPERATURE_TYPE_JUNCTION , TEMPERATURE_TYPE_VRAM ,
  TEMPERATURE_TYPE_HBM_0 , TEMPERATURE_TYPE_HBM_1 , TEMPERATURE_TYPE_HBM_2 , TEMPERATURE_TYPE_HBM_3 ,
  TEMPERATURE_TYPE_PLX , TEMPERATURE_TYPE__MAX = TEMPERATURE_TYPE_PLX
}
 This enumeration is used to indicate from which part of the device a temperature reading should be obtained.
 
enum  amdsmi_fw_block_t {
  FW_ID_SMU = 1 , FW_ID_FIRST = FW_ID_SMU , FW_ID_CP_CE , FW_ID_CP_PFP ,
  FW_ID_CP_ME , FW_ID_CP_MEC_JT1 , FW_ID_CP_MEC_JT2 , FW_ID_CP_MEC1 ,
  FW_ID_CP_MEC2 , FW_ID_RLC , FW_ID_SDMA0 , FW_ID_SDMA1 ,
  FW_ID_SDMA2 , FW_ID_SDMA3 , FW_ID_SDMA4 , FW_ID_SDMA5 ,
  FW_ID_SDMA6 , FW_ID_SDMA7 , FW_ID_VCN , FW_ID_UVD ,
  FW_ID_VCE , FW_ID_ISP , FW_ID_DMCU_ERAM , FW_ID_DMCU_ISR ,
  FW_ID_RLC_RESTORE_LIST_GPM_MEM , FW_ID_RLC_RESTORE_LIST_SRM_MEM , FW_ID_RLC_RESTORE_LIST_CNTL , FW_ID_RLC_V ,
  FW_ID_MMSCH , FW_ID_PSP_SYSDRV , FW_ID_PSP_SOSDRV , FW_ID_PSP_TOC ,
  FW_ID_PSP_KEYDB , FW_ID_DFC , FW_ID_PSP_SPL , FW_ID_DRV_CAP ,
  FW_ID_MC , FW_ID_PSP_BL , FW_ID_CP_PM4 , FW_ID_RLC_P ,
  FW_ID_SEC_POLICY_STAGE2 , FW_ID_REG_ACCESS_WHITELIST , FW_ID_IMU_DRAM , FW_ID_IMU_IRAM ,
  FW_ID_SDMA_TH0 , FW_ID_SDMA_TH1 , FW_ID_CP_MES , FW_ID_MES_STACK ,
  FW_ID_MES_THREAD1 , FW_ID_MES_THREAD1_STACK , FW_ID_RLX6 , FW_ID_RLX6_DRAM_BOOT ,
  FW_ID_RS64_ME , FW_ID_RS64_ME_P0_DATA , FW_ID_RS64_ME_P1_DATA , FW_ID_RS64_PFP ,
  FW_ID_RS64_PFP_P0_DATA , FW_ID_RS64_PFP_P1_DATA , FW_ID_RS64_MEC , FW_ID_RS64_MEC_P0_DATA ,
  FW_ID_RS64_MEC_P1_DATA , FW_ID_RS64_MEC_P2_DATA , FW_ID_RS64_MEC_P3_DATA , FW_ID_PPTABLE ,
  FW_ID_PSP_SOC , FW_ID_PSP_DBG , FW_ID_PSP_INTF , FW_ID_RLX6_CORE1 ,
  FW_ID_RLX6_DRAM_BOOT_CORE1 , FW_ID_RLCV_LX7 , FW_ID_RLC_SAVE_RESTORE_LIST , FW_ID_ASD ,
  FW_ID_TA_RAS , FW_ID_XGMI , FW_ID_RLC_SRLG , FW_ID_RLC_SRLS ,
  FW_ID_SMC , FW_ID_DMCU , FW_ID__MAX
}
 The values of this enum are used to identify the various firmware blocks.
 
enum  amdsmi_dev_perf_level_t {
  AMDSMI_DEV_PERF_LEVEL_AUTO = 0 , AMDSMI_DEV_PERF_LEVEL_FIRST = AMDSMI_DEV_PERF_LEVEL_AUTO , AMDSMI_DEV_PERF_LEVEL_LOW , AMDSMI_DEV_PERF_LEVEL_HIGH ,
  AMDSMI_DEV_PERF_LEVEL_MANUAL , AMDSMI_DEV_PERF_LEVEL_STABLE_STD , AMDSMI_DEV_PERF_LEVEL_STABLE_PEAK , AMDSMI_DEV_PERF_LEVEL_STABLE_MIN_MCLK ,
  AMDSMI_DEV_PERF_LEVEL_STABLE_MIN_SCLK , AMDSMI_DEV_PERF_LEVEL_DETERMINISM , AMDSMI_DEV_PERF_LEVEL_LAST = AMDSMI_DEV_PERF_LEVEL_DETERMINISM , AMDSMI_DEV_PERF_LEVEL_UNKNOWN = 0x100
}
 PowerPlay performance levels. More...
 
enum  amdsmi_event_group_t { AMDSMI_EVNT_GRP_XGMI = 0 , AMDSMI_EVNT_GRP_XGMI_DATA_OUT = 10 , AMDSMI_EVNT_GRP_INVALID = 0xFFFFFFFF }
 Enum denoting an event group. The value of the enum is the base value for all the event enums in the group. More...
 
enum  amdsmi_event_type_t {
  AMDSMI_EVNT_FIRST = AMDSMI_EVNT_GRP_XGMI , AMDSMI_EVNT_XGMI_FIRST = AMDSMI_EVNT_GRP_XGMI , AMDSMI_EVNT_XGMI_0_NOP_TX = AMDSMI_EVNT_XGMI_FIRST , AMDSMI_EVNT_XGMI_0_REQUEST_TX ,
  AMDSMI_EVNT_XGMI_0_RESPONSE_TX , AMDSMI_EVNT_XGMI_0_BEATS_TX , AMDSMI_EVNT_XGMI_1_NOP_TX , AMDSMI_EVNT_XGMI_1_REQUEST_TX ,
  AMDSMI_EVNT_XGMI_1_RESPONSE_TX , AMDSMI_EVNT_XGMI_1_BEATS_TX , AMDSMI_EVNT_XGMI_LAST = AMDSMI_EVNT_XGMI_1_BEATS_TX , AMDSMI_EVNT_XGMI_DATA_OUT_FIRST = AMDSMI_EVNT_GRP_XGMI_DATA_OUT ,
  AMDSMI_EVNT_XGMI_DATA_OUT_0 = AMDSMI_EVNT_XGMI_DATA_OUT_FIRST , AMDSMI_EVNT_XGMI_DATA_OUT_1 , AMDSMI_EVNT_XGMI_DATA_OUT_2 , AMDSMI_EVNT_XGMI_DATA_OUT_3 ,
  AMDSMI_EVNT_XGMI_DATA_OUT_4 , AMDSMI_EVNT_XGMI_DATA_OUT_5 , AMDSMI_EVNT_XGMI_DATA_OUT_LAST = AMDSMI_EVNT_XGMI_DATA_OUT_5 , AMDSMI_EVNT_LAST = AMDSMI_EVNT_XGMI_DATA_OUT_LAST
}
 Event type enum. Events belonging to a particular event group amdsmi_event_group_t should begin enumerating at the amdsmi_event_group_t value for that group. More...
 
enum  amdsmi_counter_command_t { AMDSMI_CNTR_CMD_START = 0 , AMDSMI_CNTR_CMD_STOP }
 
enum  amdsmi_evt_notification_type_t {
  AMDSMI_EVT_NOTIF_VMFAULT = 1 , AMDSMI_EVT_NOTIF_FIRST = AMDSMI_EVT_NOTIF_VMFAULT , AMDSMI_EVT_NOTIF_THERMAL_THROTTLE = 2 , AMDSMI_EVT_NOTIF_GPU_PRE_RESET = 3 ,
  AMDSMI_EVT_NOTIF_GPU_POST_RESET = 4 , AMDSMI_EVT_NOTIF_LAST = AMDSMI_EVT_NOTIF_GPU_POST_RESET
}
 
enum  amdsmi_temperature_metric_t {
  AMDSMI_TEMP_CURRENT = 0x0 , AMDSMI_TEMP_FIRST = AMDSMI_TEMP_CURRENT , AMDSMI_TEMP_MAX , AMDSMI_TEMP_MIN ,
  AMDSMI_TEMP_MAX_HYST , AMDSMI_TEMP_MIN_HYST , AMDSMI_TEMP_CRITICAL , AMDSMI_TEMP_CRITICAL_HYST ,
  AMDSMI_TEMP_EMERGENCY , AMDSMI_TEMP_EMERGENCY_HYST , AMDSMI_TEMP_CRIT_MIN , AMDSMI_TEMP_CRIT_MIN_HYST ,
  AMDSMI_TEMP_OFFSET , AMDSMI_TEMP_LOWEST , AMDSMI_TEMP_HIGHEST , AMDSMI_TEMP_LAST = AMDSMI_TEMP_HIGHEST
}
 Temperature Metrics. This enum is used to identify various temperature metrics. Corresponding values will be in millidegress Celcius. More...
 
enum  amdsmi_voltage_metric_t {
  AMDSMI_VOLT_CURRENT = 0x0 , AMDSMI_VOLT_FIRST = AMDSMI_VOLT_CURRENT , AMDSMI_VOLT_MAX , AMDSMI_VOLT_MIN_CRIT ,
  AMDSMI_VOLT_MIN , AMDSMI_VOLT_MAX_CRIT , AMDSMI_VOLT_AVERAGE , AMDSMI_VOLT_LOWEST ,
  AMDSMI_VOLT_HIGHEST , AMDSMI_VOLT_LAST = AMDSMI_VOLT_HIGHEST
}
 Voltage Metrics. This enum is used to identify various Volatge metrics. Corresponding values will be in millivolt. More...
 
enum  amdsmi_voltage_type_t { AMDSMI_VOLT_TYPE_FIRST = 0 , AMDSMI_VOLT_TYPE_VDDGFX = AMDSMI_VOLT_TYPE_FIRST , AMDSMI_VOLT_TYPE_LAST = AMDSMI_VOLT_TYPE_VDDGFX , AMDSMI_VOLT_TYPE_INVALID = 0xFFFFFFFF }
 This ennumeration is used to indicate which type of voltage reading should be obtained. More...
 
enum  amdsmi_power_profile_preset_masks_t {
  AMDSMI_PWR_PROF_PRST_CUSTOM_MASK = 0x1 , AMDSMI_PWR_PROF_PRST_VIDEO_MASK = 0x2 , AMDSMI_PWR_PROF_PRST_POWER_SAVING_MASK = 0x4 , AMDSMI_PWR_PROF_PRST_COMPUTE_MASK = 0x8 ,
  AMDSMI_PWR_PROF_PRST_VR_MASK = 0x10 , AMDSMI_PWR_PROF_PRST_3D_FULL_SCR_MASK = 0x20 , AMDSMI_PWR_PROF_PRST_BOOTUP_DEFAULT = 0x40 , AMDSMI_PWR_PROF_PRST_LAST = AMDSMI_PWR_PROF_PRST_BOOTUP_DEFAULT ,
  AMDSMI_PWR_PROF_PRST_INVALID = 0xFFFFFFFFFFFFFFFF
}
 Pre-set Profile Selections. These bitmasks can be AND'd with the amdsmi_power_profile_status_t.available_profiles returned from :: amdsmi_get_gpu_power_profile_presets to determine which power profiles are supported by the system. More...
 
enum  amdsmi_gpu_block_t {
  AMDSMI_GPU_BLOCK_INVALID = 0x0000000000000000 , AMDSMI_GPU_BLOCK_FIRST = 0x0000000000000001 , AMDSMI_GPU_BLOCK_UMC = AMDSMI_GPU_BLOCK_FIRST , AMDSMI_GPU_BLOCK_SDMA = 0x0000000000000002 ,
  AMDSMI_GPU_BLOCK_GFX = 0x0000000000000004 , AMDSMI_GPU_BLOCK_MMHUB = 0x0000000000000008 , AMDSMI_GPU_BLOCK_ATHUB = 0x0000000000000010 , AMDSMI_GPU_BLOCK_PCIE_BIF = 0x0000000000000020 ,
  AMDSMI_GPU_BLOCK_HDP = 0x0000000000000040 , AMDSMI_GPU_BLOCK_XGMI_WAFL = 0x0000000000000080 , AMDSMI_GPU_BLOCK_DF = 0x0000000000000100 , AMDSMI_GPU_BLOCK_SMN = 0x0000000000000200 ,
  AMDSMI_GPU_BLOCK_SEM = 0x0000000000000400 , AMDSMI_GPU_BLOCK_MP0 = 0x0000000000000800 , AMDSMI_GPU_BLOCK_MP1 = 0x0000000000001000 , AMDSMI_GPU_BLOCK_FUSE = 0x0000000000002000 ,
  AMDSMI_GPU_BLOCK_LAST = AMDSMI_GPU_BLOCK_FUSE , AMDSMI_GPU_BLOCK_RESERVED = 0x8000000000000000
}
 This enum is used to identify different GPU blocks. More...
 
enum  amdsmi_ras_err_state_t {
  AMDSMI_RAS_ERR_STATE_NONE = 0 , AMDSMI_RAS_ERR_STATE_DISABLED , AMDSMI_RAS_ERR_STATE_PARITY , AMDSMI_RAS_ERR_STATE_SING_C ,
  AMDSMI_RAS_ERR_STATE_MULT_UC , AMDSMI_RAS_ERR_STATE_POISON , AMDSMI_RAS_ERR_STATE_ENABLED , AMDSMI_RAS_ERR_STATE_LAST = AMDSMI_RAS_ERR_STATE_ENABLED ,
  AMDSMI_RAS_ERR_STATE_INVALID = 0xFFFFFFFF
}
 The current ECC state. More...
 
enum  amdsmi_memory_type_t {
  AMDSMI_MEM_TYPE_FIRST = 0 , AMDSMI_MEM_TYPE_VRAM = AMDSMI_MEM_TYPE_FIRST , AMDSMI_MEM_TYPE_VIS_VRAM , AMDSMI_MEM_TYPE_GTT ,
  AMDSMI_MEM_TYPE_LAST = AMDSMI_MEM_TYPE_GTT
}
 Types of memory. More...
 
enum  amdsmi_freq_ind_t { AMDSMI_FREQ_IND_MIN = 0 , AMDSMI_FREQ_IND_MAX = 1 , AMDSMI_FREQ_IND_INVALID = 0xFFFFFFFF }
 The values of this enum are used as frequency identifiers. More...
 
enum  amdsmi_xgmi_status_t { AMDSMI_XGMI_STATUS_NO_ERRORS = 0 , AMDSMI_XGMI_STATUS_ERROR , AMDSMI_XGMI_STATUS_MULTIPLE_ERRORS }
 XGMI Status.
 
enum  amdsmi_memory_page_status_t { AMDSMI_MEM_PAGE_STATUS_RESERVED = 0 , AMDSMI_MEM_PAGE_STATUS_PENDING , AMDSMI_MEM_PAGE_STATUS_UNRESERVABLE }
 Reserved Memory Page States. More...
 
enum  AMDSMI_IO_LINK_TYPE {
  AMDSMI_IOLINK_TYPE_UNDEFINED = 0 , AMDSMI_IOLINK_TYPE_PCIEXPRESS = 1 , AMDSMI_IOLINK_TYPE_XGMI = 2 , AMDSMI_IOLINK_TYPE_NUMIOLINKTYPES ,
  AMDSMI_IOLINK_TYPE_SIZE = 0xFFFFFFFF
}
 Types for IO Link. More...
 
enum  AMDSMI_UTILIZATION_COUNTER_TYPE { AMDSMI_UTILIZATION_COUNTER_FIRST = 0 , AMDSMI_COARSE_GRAIN_GFX_ACTIVITY = AMDSMI_UTILIZATION_COUNTER_FIRST , AMDSMI_COARSE_GRAIN_MEM_ACTIVITY , AMDSMI_UTILIZATION_COUNTER_LAST = AMDSMI_COARSE_GRAIN_MEM_ACTIVITY }
 The utilization counter type. More...
 

Functions

amdsmi_status_t amdsmi_init (uint64_t init_flags)
 Initialize the AMD SMI library. More...
 
amdsmi_status_t amdsmi_shut_down (void)
 Shutdown the AMD SMI library. More...
 
amdsmi_status_t amdsmi_get_socket_handles (uint32_t *socket_count, amdsmi_socket_handle *socket_handles)
 Get the list of socket handles in the system. More...
 
amdsmi_status_t amdsmi_get_socket_info (amdsmi_socket_handle socket_handle, size_t len, char *name)
 Get information about the given socket. More...
 
amdsmi_status_t amdsmi_get_processor_handles (amdsmi_socket_handle socket_handle, uint32_t *processor_count, amdsmi_processor_handle *processor_handles)
 Get the list of the processor handles associated to a socket. More...
 
amdsmi_status_t amdsmi_get_processor_type (amdsmi_processor_handle processor_handle, processor_type_t *processor_type)
 Get the processor type of the processor_handle. More...
 
amdsmi_status_t amdsmi_get_processor_handle_from_bdf (amdsmi_bdf_t bdf, amdsmi_processor_handle *processor_handle)
 Get processor handle with the matching bdf. More...
 
amdsmi_status_t amdsmi_get_gpu_id (amdsmi_processor_handle processor_handle, uint16_t *id)
 Get the device id associated with the device with provided device handler. More...
 
amdsmi_status_t amdsmi_get_gpu_vendor_name (amdsmi_processor_handle processor_handle, char *name, size_t len)
 Get the name string for a give vendor ID. More...
 
amdsmi_status_t amdsmi_get_gpu_vram_vendor (amdsmi_processor_handle processor_handle, char *brand, uint32_t len)
 Get the vram vendor string of a device. More...
 
amdsmi_status_t amdsmi_get_gpu_subsystem_id (amdsmi_processor_handle processor_handle, uint16_t *id)
 Get the subsystem device id associated with the device with provided processor handle. More...
 
amdsmi_status_t amdsmi_get_gpu_subsystem_name (amdsmi_processor_handle processor_handle, char *name, size_t len)
 Get the name string for the device subsytem. More...
 
amdsmi_status_t amdsmi_get_gpu_pci_bandwidth (amdsmi_processor_handle processor_handle, amdsmi_pcie_bandwidth_t *bandwidth)
 Get the list of possible PCIe bandwidths that are available. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_gpu_bdf_id (amdsmi_processor_handle processor_handle, uint64_t *bdfid)
 Get the unique PCI device identifier associated for a device. More...
 
amdsmi_status_t amdsmi_get_gpu_topo_numa_affinity (amdsmi_processor_handle processor_handle, uint32_t *numa_node)
 Get the NUMA node associated with a device. More...
 
amdsmi_status_t amdsmi_get_gpu_pci_throughput (amdsmi_processor_handle processor_handle, uint64_t *sent, uint64_t *received, uint64_t *max_pkt_sz)
 Get PCIe traffic information. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_gpu_pci_replay_counter (amdsmi_processor_handle processor_handle, uint64_t *counter)
 Get PCIe replay counter. More...
 
amdsmi_status_t amdsmi_set_gpu_pci_bandwidth (amdsmi_processor_handle processor_handle, uint64_t bw_bitmask)
 Control the set of allowed PCIe bandwidths that can be used. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_energy_count (amdsmi_processor_handle processor_handle, uint64_t *power, float *counter_resolution, uint64_t *timestamp)
 Get the energy accumulator counter of the processor with provided processor handle. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_set_power_cap (amdsmi_processor_handle processor_handle, uint32_t sensor_ind, uint64_t cap)
 Set the maximum gpu power cap value. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_set_gpu_power_profile (amdsmi_processor_handle processor_handle, uint32_t reserved, amdsmi_power_profile_preset_masks_t profile)
 Set the power performance profile. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_gpu_memory_total (amdsmi_processor_handle processor_handle, amdsmi_memory_type_t mem_type, uint64_t *total)
 Get the total amount of memory that exists. More...
 
amdsmi_status_t amdsmi_get_gpu_memory_usage (amdsmi_processor_handle processor_handle, amdsmi_memory_type_t mem_type, uint64_t *used)
 Get the current memory usage. More...
 
amdsmi_status_t amdsmi_get_gpu_bad_page_info (amdsmi_processor_handle processor_handle, uint32_t *num_pages, amdsmi_retired_page_record_t *info)
 Get the bad pages of a processor. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_gpu_ras_block_features_enabled (amdsmi_processor_handle processor_handle, amdsmi_gpu_block_t block, amdsmi_ras_err_state_t *state)
 Returns if RAS features are enabled or disabled for given block. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_gpu_memory_reserved_pages (amdsmi_processor_handle processor_handle, uint32_t *num_pages, amdsmi_retired_page_record_t *records)
 Get information about reserved ("retired") memory pages. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_gpu_fan_rpms (amdsmi_processor_handle processor_handle, uint32_t sensor_ind, int64_t *speed)
 Get the fan speed in RPMs of the device with the specified processor handle and 0-based sensor index. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_gpu_fan_speed (amdsmi_processor_handle processor_handle, uint32_t sensor_ind, int64_t *speed)
 Get the fan speed for the specified device as a value relative to AMDSMI_MAX_FAN_SPEED. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_gpu_fan_speed_max (amdsmi_processor_handle processor_handle, uint32_t sensor_ind, uint64_t *max_speed)
 Get the max. fan speed of the device with provided processor handle. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_temp_metric (amdsmi_processor_handle processor_handle, amdsmi_temperature_type_t sensor_type, amdsmi_temperature_metric_t metric, int64_t *temperature)
 Get the temperature metric value for the specified metric, from the specified temperature sensor on the specified device. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_gpu_volt_metric (amdsmi_processor_handle processor_handle, amdsmi_voltage_type_t sensor_type, amdsmi_voltage_metric_t metric, int64_t *voltage)
 Get the voltage metric value for the specified metric, from the specified voltage sensor on the specified device. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_reset_gpu_fan (amdsmi_processor_handle processor_handle, uint32_t sensor_ind)
 Reset the fan to automatic driver control. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_set_gpu_fan_speed (amdsmi_processor_handle processor_handle, uint32_t sensor_ind, uint64_t speed)
 Set the fan speed for the specified device with the provided speed, in RPMs. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_utilization_count (amdsmi_processor_handle processor_handle, amdsmi_utilization_counter_t utilization_counters[], uint32_t count, uint64_t *timestamp)
 Get coarse grain utilization counter of the specified device. More...
 
amdsmi_status_t amdsmi_get_pcie_link_status (amdsmi_processor_handle processor_handle, amdsmi_pcie_info_t *info)
 Get current PCIE info of the device with provided processor handle. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_pcie_link_caps (amdsmi_processor_handle processor_handle, amdsmi_pcie_info_t *info)
 Get max PCIe capabilities of the device with provided processor handle. More...
 
amdsmi_status_t amdsmi_get_gpu_perf_level (amdsmi_processor_handle processor_handle, amdsmi_dev_perf_level_t *perf)
 Get the performance level of the device. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_set_gpu_perf_determinism_mode (amdsmi_processor_handle processor_handle, uint64_t clkvalue)
 Enter performance determinism mode with provided processor handle. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_gpu_overdrive_level (amdsmi_processor_handle processor_handle, uint32_t *od)
 Get the overdrive percent associated with the device with provided processor handle. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_clk_freq (amdsmi_processor_handle processor_handle, amdsmi_clk_type_t clk_type, amdsmi_frequencies_t *f)
 Get the list of possible system clock speeds of device for a specified clock type. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_reset_gpu (amdsmi_processor_handle processor_handle)
 Reset the gpu associated with the device with provided processor handle. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_gpu_od_volt_info (amdsmi_processor_handle processor_handle, amdsmi_od_volt_freq_data_t *odv)
 This function retrieves the voltage/frequency curve information. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_gpu_metrics_info (amdsmi_processor_handle processor_handle, amdsmi_gpu_metrics_t *pgpu_metrics)
 This function retrieves the gpu metrics information. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_set_gpu_clk_range (amdsmi_processor_handle processor_handle, uint64_t minclkvalue, uint64_t maxclkvalue, amdsmi_clk_type_t clkType)
 This function sets the clock range information. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_set_gpu_od_clk_info (amdsmi_processor_handle processor_handle, amdsmi_freq_ind_t level, uint64_t clkvalue, amdsmi_clk_type_t clkType)
 This function sets the clock frequency information. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_set_gpu_od_volt_info (amdsmi_processor_handle processor_handle, uint32_t vpoint, uint64_t clkvalue, uint64_t voltvalue)
 This function sets 1 of the 3 voltage curve points. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_gpu_od_volt_curve_regions (amdsmi_processor_handle processor_handle, uint32_t *num_regions, amdsmi_freq_volt_region_t *buffer)
 This function will retrieve the current valid regions in the frequency/voltage space. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_gpu_power_profile_presets (amdsmi_processor_handle processor_handle, uint32_t sensor_ind, amdsmi_power_profile_status_t *status)
 Get the list of available preset power profiles and an indication of which profile is currently active. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_set_gpu_perf_level (amdsmi_processor_handle processor_handle, amdsmi_dev_perf_level_t perf_lvl)
 Set the PowerPlay performance level associated with the device with provided processor handle with the provided value. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_set_gpu_overdrive_level (amdsmi_processor_handle processor_handle, uint32_t od)
 Set the overdrive percent associated with the device with provided processor handle with the provided value. See details for WARNING. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_set_clk_freq (amdsmi_processor_handle processor_handle, amdsmi_clk_type_t clk_type, uint64_t freq_bitmask)
 Control the set of allowed frequencies that can be used for the specified clock. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_lib_version (amdsmi_version_t *version)
 Get the build version information for the currently running build of AMDSMI. More...
 
amdsmi_status_t amdsmi_get_gpu_ecc_count (amdsmi_processor_handle processor_handle, amdsmi_gpu_block_t block, amdsmi_error_count_t *ec)
 Retrieve the error counts for a GPU block. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_gpu_ecc_enabled (amdsmi_processor_handle processor_handle, uint64_t *enabled_blocks)
 Retrieve the enabled ECC bit-mask. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_gpu_ecc_status (amdsmi_processor_handle processor_handle, amdsmi_gpu_block_t block, amdsmi_ras_err_state_t *state)
 Retrieve the ECC status for a GPU block. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_status_code_to_string (amdsmi_status_t status, const char **status_string)
 Get a description of a provided AMDSMI error status. More...
 
amdsmi_status_t amdsmi_gpu_counter_group_supported (amdsmi_processor_handle processor_handle, amdsmi_event_group_t group)
 Tell if an event group is supported by a given device. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_gpu_create_counter (amdsmi_processor_handle processor_handle, amdsmi_event_type_t type, amdsmi_event_handle_t *evnt_handle)
 Create a performance counter object. More...
 
amdsmi_status_t amdsmi_gpu_destroy_counter (amdsmi_event_handle_t evnt_handle)
 Deallocate a performance counter object. More...
 
amdsmi_status_t amdsmi_gpu_control_counter (amdsmi_event_handle_t evt_handle, amdsmi_counter_command_t cmd, void *cmd_args)
 Issue performance counter control commands. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_gpu_read_counter (amdsmi_event_handle_t evt_handle, amdsmi_counter_value_t *value)
 Read the current value of a performance counter. More...
 
amdsmi_status_t amdsmi_get_gpu_available_counters (amdsmi_processor_handle processor_handle, amdsmi_event_group_t grp, uint32_t *available)
 Get the number of currently available counters. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_gpu_compute_process_info (amdsmi_process_info_t *procs, uint32_t *num_items)
 Get process information about processes currently using GPU. More...
 
amdsmi_status_t amdsmi_get_gpu_compute_process_info_by_pid (uint32_t pid, amdsmi_process_info_t *proc)
 Get process information about a specific process. More...
 
amdsmi_status_t amdsmi_get_gpu_compute_process_gpus (uint32_t pid, uint32_t *dv_indices, uint32_t *num_devices)
 Get the device indices currently being used by a process. More...
 
amdsmi_status_t amdsmi_gpu_xgmi_error_status (amdsmi_processor_handle processor_handle, amdsmi_xgmi_status_t *status)
 Retrieve the XGMI error status for a device. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_reset_gpu_xgmi_error (amdsmi_processor_handle processor_handle)
 Reset the XGMI error status for a device. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_topo_get_numa_node_number (amdsmi_processor_handle processor_handle, uint32_t *numa_node)
 Retrieve the NUMA CPU node number for a device. More...
 
amdsmi_status_t amdsmi_topo_get_link_weight (amdsmi_processor_handle processor_handle_src, amdsmi_processor_handle processor_handle_dst, uint64_t *weight)
 Retrieve the weight for a connection between 2 GPUs. More...
 
amdsmi_status_t amdsmi_get_minmax_bandwith_between_processors (amdsmi_processor_handle processor_handle_src, amdsmi_processor_handle processor_handle_dst, uint64_t *min_bandwidth, uint64_t *max_bandwidth)
 Retreive minimal and maximal io link bandwidth between 2 GPUs. More...
 
amdsmi_status_t amdsmi_topo_get_link_type (amdsmi_processor_handle processor_handle_src, amdsmi_processor_handle processor_handle_dst, uint64_t *hops, AMDSMI_IO_LINK_TYPE *type)
 Retrieve the hops and the connection type between 2 GPUs. More...
 
amdsmi_status_t amdsmi_is_P2P_accessible (amdsmi_processor_handle processor_handle_src, amdsmi_processor_handle processor_handle_dst, bool *accessible)
 Return P2P availability status between 2 GPUs. More...
 
amdsmi_status_t amdsmi_init_gpu_event_notification (amdsmi_processor_handle processor_handle)
 Prepare to collect event notifications for a GPU. More...
 
amdsmi_status_t amdsmi_set_gpu_event_notification_mask (amdsmi_processor_handle processor_handle, uint64_t mask)
 Specify which events to collect for a device. More...
 
amdsmi_status_t amdsmi_get_gpu_event_notification (int timeout_ms, uint32_t *num_elem, amdsmi_evt_notification_data_t *data)
 Collect event notifications, waiting a specified amount of time. More...
 
amdsmi_status_t amdsmi_stop_gpu_event_notification (amdsmi_processor_handle processor_handle)
 Close any file handles and free any resources used by event notification for a GPU. More...
 
amdsmi_status_t amdsmi_get_gpu_device_bdf (amdsmi_processor_handle processor_handle, amdsmi_bdf_t *bdf)
 Returns BDF of the given device. More...
 
amdsmi_status_t amdsmi_get_gpu_device_uuid (amdsmi_processor_handle processor_handle, unsigned int *uuid_length, char *uuid)
 Returns the UUID of the device. More...
 
amdsmi_status_t amdsmi_get_gpu_driver_version (amdsmi_processor_handle processor_handle, int *length, char *version)
 Returns the driver version information. More...
 
amdsmi_status_t amdsmi_get_gpu_asic_info (amdsmi_processor_handle processor_handle, amdsmi_asic_info_t *info)
 Returns the ASIC information for the device. More...
 
amdsmi_status_t amdsmi_get_gpu_board_info (amdsmi_processor_handle processor_handle, amdsmi_board_info_t *info)
 Returns the board part number and board information for the requested device. More...
 
amdsmi_status_t amdsmi_get_power_cap_info (amdsmi_processor_handle processor_handle, uint32_t sensor_ind, amdsmi_power_cap_info_t *info)
 Returns the power caps as currently configured in the system. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_xgmi_info (amdsmi_processor_handle processor_handle, amdsmi_xgmi_info_t *info)
 Returns XGMI information for the GPU. More...
 
amdsmi_status_t amdsmi_get_fw_info (amdsmi_processor_handle processor_handle, amdsmi_fw_info_t *info)
 Returns the firmware versions running on the device. More...
 
amdsmi_status_t amdsmi_get_gpu_vbios_info (amdsmi_processor_handle processor_handle, amdsmi_vbios_info_t *info)
 Returns the static information for the vBIOS on the device. More...
 
amdsmi_status_t amdsmi_get_gpu_activity (amdsmi_processor_handle processor_handle, amdsmi_engine_usage_t *info)
 Returns the current usage of the GPU engines (GFX, MM and MEM). Each usage is reported as a percentage from 0-100%. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_power_info (amdsmi_processor_handle processor_handle, amdsmi_power_info_t *info)
 Returns the current power and voltage of the GPU. The voltage is in units of mV and the power in units of W. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_clock_info (amdsmi_processor_handle processor_handle, amdsmi_clk_type_t clk_type, amdsmi_clk_info_t *info)
 Returns the measurements of the clocks in the GPU for the GFX and multimedia engines and Memory. This call reports the averages over 1s in MHz. It is not supported on virtual machine guest. More...
 
amdsmi_status_t amdsmi_get_gpu_vram_usage (amdsmi_processor_handle processor_handle, amdsmi_vram_info_t *info)
 Returns the VRAM usage (both total and used memory) in MegaBytes. More...
 
amdsmi_status_t amdsmi_get_gpu_process_list (amdsmi_processor_handle processor_handle, uint32_t *max_processes, amdsmi_process_handle_t *list)
 Returns the list of processes running on a given GPU including itself. More...
 
amdsmi_status_t amdsmi_get_gpu_process_info (amdsmi_processor_handle processor_handle, amdsmi_process_handle_t process, amdsmi_proc_info_t *info)
 Returns the process information of a given process. Engine usage show how much time the process spend using these engines in ns. More...
 
amdsmi_status_t amdsmi_get_gpu_total_ecc_count (amdsmi_processor_handle processor_handle, amdsmi_error_count_t *ec)
 Returns the total number of ECC errors (correctable and uncorrectable) in the given GPU. It is not supported on virtual machine guest. More...
 

Detailed Description

AMD System Management Interface API.

Macro Definition Documentation

◆ AMDSMI_MAX_DATE_LENGTH

#define AMDSMI_MAX_DATE_LENGTH   32

YYYY-MM-DD:HH:MM:SS.MSC

◆ AMDSMI_LIB_VERSION_YEAR

#define AMDSMI_LIB_VERSION_YEAR   23

library versioning

Year should follow the IP driver package version: 22.40/23.10 and similar

◆ AMDSMI_MAX_FAN_SPEED

#define AMDSMI_MAX_FAN_SPEED   255

Maximum possible value for fan speed. Should be used as the denominator when determining fan speed percentage.

◆ AMDSMI_EVENT_MASK_FROM_INDEX

#define AMDSMI_EVENT_MASK_FROM_INDEX (   i)    (1ULL << ((i) - 1))

Macro to generate event bitmask from event id

◆ AMDSMI_DEFAULT_VARIANT

#define AMDSMI_DEFAULT_VARIANT   0xFFFFFFFFFFFFFFFF

Place-holder "variant" for functions that have don't have any variants, but do have monitors or sensors.

Typedef Documentation

◆ amdsmi_event_handle_t

typedef uintptr_t amdsmi_event_handle_t

Available clock types.

Event counter types

Handle to performance event counter

Enumeration Type Documentation

◆ amdsmi_init_flags_t

Initialization flags.

Initialization flags may be OR'd together and passed to amdsmi_init().

◆ amdsmi_status_t

Error codes returned by amdsmi functions.

Enumerator
AMDSMI_STATUS_SUCCESS 

Call succeeded.

AMDSMI_STATUS_INVAL 

Invalid parameters.

AMDSMI_STATUS_NOT_SUPPORTED 

Command not supported.

AMDSMI_STATUS_NOT_YET_IMPLEMENTED 

Not implemented yet.

AMDSMI_STATUS_FAIL_LOAD_MODULE 

Fail to load lib.

AMDSMI_STATUS_FAIL_LOAD_SYMBOL 

Fail to load symbol.

AMDSMI_STATUS_DRM_ERROR 

Error when call libdrm.

AMDSMI_STATUS_API_FAILED 

API call failed.

AMDSMI_STATUS_TIMEOUT 

Timeout in API call.

AMDSMI_STATUS_RETRY 

Retry operation.

AMDSMI_STATUS_NO_PERM 

Permission Denied.

AMDSMI_STATUS_INTERRUPT 

An interrupt occurred during execution of function.

AMDSMI_STATUS_IO 

I/O Error.

AMDSMI_STATUS_ADDRESS_FAULT 

Bad address.

AMDSMI_STATUS_FILE_ERROR 

Problem accessing a file.

AMDSMI_STATUS_OUT_OF_RESOURCES 

Not enough memory.

AMDSMI_STATUS_INTERNAL_EXCEPTION 

An internal exception was caught.

AMDSMI_STATUS_INPUT_OUT_OF_BOUNDS 

The provided input is out of allowable or safe range.

AMDSMI_STATUS_INIT_ERROR 

An error occurred when initializing internal data structures.

AMDSMI_STATUS_REFCOUNT_OVERFLOW 

An internal reference counter exceeded INT32_MAX.

AMDSMI_STATUS_BUSY 

Device busy.

AMDSMI_STATUS_NOT_FOUND 

Device Not found.

AMDSMI_STATUS_NOT_INIT 

Device not initialized.

AMDSMI_STATUS_NO_SLOT 

No more free slot.

AMDSMI_STATUS_NO_DATA 

No data was found for a given input.

AMDSMI_STATUS_INSUFFICIENT_SIZE 

Not enough resources were available for the operation.

AMDSMI_STATUS_UNEXPECTED_SIZE 

An unexpected amount of data was read.

AMDSMI_STATUS_UNEXPECTED_DATA 

The data read or provided to function is not what was expected.

AMDSMI_STATUS_MAP_ERROR 

The internal library error did not map to a status code.

AMDSMI_STATUS_UNKNOWN_ERROR 

An unknown error occurred.

◆ amdsmi_clk_type_t

Clock types

Enumerator
CLK_TYPE_SYS 

System clock.

CLK_TYPE_DF 

running on a separate clock)

Data Fabric clock (for ASICs

CLK_TYPE_DCEF 

Display Controller Engine clock.

◆ amdsmi_dev_perf_level_t

PowerPlay performance levels.

Enumerator
AMDSMI_DEV_PERF_LEVEL_AUTO 

Performance level is "auto".

AMDSMI_DEV_PERF_LEVEL_LOW 

regardless of workload

Keep PowerPlay levels "low",

AMDSMI_DEV_PERF_LEVEL_HIGH 

regardless of workload

Keep PowerPlay levels "high",

AMDSMI_DEV_PERF_LEVEL_MANUAL 

setting the AMDSMI_CLK_TYPE_SYS speed

Only use values defined by manually

AMDSMI_DEV_PERF_LEVEL_STABLE_STD 

clocks

Stable power state with profiling

AMDSMI_DEV_PERF_LEVEL_STABLE_PEAK 

Stable power state with peak clocks.

AMDSMI_DEV_PERF_LEVEL_STABLE_MIN_MCLK 

memory clock

Stable power state with minimum

AMDSMI_DEV_PERF_LEVEL_STABLE_MIN_SCLK 

system clock

Stable power state with minimum

AMDSMI_DEV_PERF_LEVEL_DETERMINISM 

Performance determinism state.

AMDSMI_DEV_PERF_LEVEL_UNKNOWN 

Unknown performance level.

◆ amdsmi_event_group_t

Enum denoting an event group. The value of the enum is the base value for all the event enums in the group.

Event Groups

Enumerator
AMDSMI_EVNT_GRP_XGMI 

Data Fabric (XGMI) related events.

AMDSMI_EVNT_GRP_XGMI_DATA_OUT 

XGMI Outbound data.

◆ amdsmi_event_type_t

Event type enum. Events belonging to a particular event group amdsmi_event_group_t should begin enumerating at the amdsmi_event_group_t value for that group.

Event types

Enumerator
AMDSMI_EVNT_XGMI_0_NOP_TX 

NOPs sent to neighbor 0.

AMDSMI_EVNT_XGMI_0_REQUEST_TX 

neighbor 0

Outgoing requests to

AMDSMI_EVNT_XGMI_0_RESPONSE_TX 

neighbor 0

Outgoing responses to

AMDSMI_EVNT_XGMI_0_BEATS_TX 

Data beats sent to neighbor 0; Each beat represents 32 bytes.

XGMI throughput can be calculated by multiplying a BEATs event such as AMDSMI_EVNT_XGMI_0_BEATS_TX by 32 and dividing by the time for which event collection occurred, amdsmi_counter_value_t.time_running (which is in nanoseconds). To get bytes per second, multiply this value by 109.

Throughput = BEATS/time_running * 109 (bytes/second)

AMDSMI_EVNT_XGMI_1_NOP_TX 

NOPs sent to neighbor 1.

AMDSMI_EVNT_XGMI_1_REQUEST_TX 

neighbor 1

Outgoing requests to

AMDSMI_EVNT_XGMI_1_RESPONSE_TX 

neighbor 1

Outgoing responses to

AMDSMI_EVNT_XGMI_1_BEATS_TX 

Data beats sent to neighbor 1; Each beat represents 32 bytes

AMDSMI_EVNT_XGMI_DATA_OUT_1 

Outbound beats to neighbor 1.

AMDSMI_EVNT_XGMI_DATA_OUT_2 

Outbound beats to neighbor 2.

AMDSMI_EVNT_XGMI_DATA_OUT_3 

Outbound beats to neighbor 3.

AMDSMI_EVNT_XGMI_DATA_OUT_4 

Outbound beats to neighbor 4.

AMDSMI_EVNT_XGMI_DATA_OUT_5 

Outbound beats to neighbor 5.

◆ amdsmi_counter_command_t

Event counter commands

Enumerator
AMDSMI_CNTR_CMD_START 

Start the counter.

AMDSMI_CNTR_CMD_STOP 

be used before reading.

Stop the counter; note that this should not

◆ amdsmi_evt_notification_type_t

Event notification event types

Enumerator
AMDSMI_EVT_NOTIF_VMFAULT 

VM page fault.

◆ amdsmi_temperature_metric_t

Temperature Metrics. This enum is used to identify various temperature metrics. Corresponding values will be in millidegress Celcius.

Enumerator
AMDSMI_TEMP_CURRENT 

Temperature current value.

AMDSMI_TEMP_MAX 

Temperature max value.

AMDSMI_TEMP_MIN 

Temperature min value.

AMDSMI_TEMP_MAX_HYST 

Temperature hysteresis value for max limit. (This is an absolute temperature, not a delta).

AMDSMI_TEMP_MIN_HYST 

Temperature hysteresis value for min limit. (This is an absolute temperature, not a delta).

AMDSMI_TEMP_CRITICAL 

greater than corresponding temp_max values.

Temperature critical max value, typically

AMDSMI_TEMP_CRITICAL_HYST 

Temperature hysteresis value for critical limit. (This is an absolute temperature, not a delta).

AMDSMI_TEMP_EMERGENCY 

Temperature emergency max value, for chips supporting more than two upper temperature limits. Must be equal or greater than corresponding temp_crit values.

AMDSMI_TEMP_EMERGENCY_HYST 

Temperature hysteresis value for emergency limit. (This is an absolute temperature, not a delta).

AMDSMI_TEMP_CRIT_MIN 

Temperature critical min value, typically lower than corresponding temperature minimum values.

AMDSMI_TEMP_CRIT_MIN_HYST 

Temperature hysteresis value for critical minimum limit. (This is an absolute temperature, not a delta).

AMDSMI_TEMP_OFFSET 

Temperature offset which is added to the

AMDSMI_TEMP_LOWEST 

temperature reading by the chip.

Historical minimum temperature.

AMDSMI_TEMP_HIGHEST 

Historical maximum temperature.

◆ amdsmi_voltage_metric_t

Voltage Metrics. This enum is used to identify various Volatge metrics. Corresponding values will be in millivolt.

Enumerator
AMDSMI_VOLT_CURRENT 

Voltage current value.

AMDSMI_VOLT_MAX 

Voltage max value.

AMDSMI_VOLT_MIN_CRIT 

Voltage critical min value.

AMDSMI_VOLT_MIN 

Voltage min value.

AMDSMI_VOLT_MAX_CRIT 

Voltage critical max value.

AMDSMI_VOLT_AVERAGE 

Average voltage.

AMDSMI_VOLT_LOWEST 

Historical minimum voltage.

AMDSMI_VOLT_HIGHEST 

Historical maximum voltage.

◆ amdsmi_voltage_type_t

This ennumeration is used to indicate which type of voltage reading should be obtained.

Enumerator
AMDSMI_VOLT_TYPE_VDDGFX 

voltage

Vddgfx GPU

AMDSMI_VOLT_TYPE_INVALID 

Invalid type.

◆ amdsmi_power_profile_preset_masks_t

Pre-set Profile Selections. These bitmasks can be AND'd with the amdsmi_power_profile_status_t.available_profiles returned from :: amdsmi_get_gpu_power_profile_presets to determine which power profiles are supported by the system.

Enumerator
AMDSMI_PWR_PROF_PRST_CUSTOM_MASK 

Custom Power Profile.

AMDSMI_PWR_PROF_PRST_VIDEO_MASK 

Video Power Profile.

AMDSMI_PWR_PROF_PRST_POWER_SAVING_MASK 

Power Saving Profile.

AMDSMI_PWR_PROF_PRST_COMPUTE_MASK 

Compute Saving Profile.

AMDSMI_PWR_PROF_PRST_VR_MASK 

VR Power Profile.

3D Full Screen Power Profile

AMDSMI_PWR_PROF_PRST_BOOTUP_DEFAULT 

Default Boot Up Profile.

AMDSMI_PWR_PROF_PRST_LAST 

Invalid power profile.

◆ amdsmi_gpu_block_t

This enum is used to identify different GPU blocks.

Enumerator
AMDSMI_GPU_BLOCK_INVALID 

invalid block

Used to indicate an

AMDSMI_GPU_BLOCK_UMC 

UMC block.

AMDSMI_GPU_BLOCK_SDMA 

SDMA block.

AMDSMI_GPU_BLOCK_GFX 

GFX block.

AMDSMI_GPU_BLOCK_MMHUB 

MMHUB block.

AMDSMI_GPU_BLOCK_ATHUB 

ATHUB block.

AMDSMI_GPU_BLOCK_PCIE_BIF 

PCIE_BIF block.

AMDSMI_GPU_BLOCK_HDP 

HDP block.

AMDSMI_GPU_BLOCK_XGMI_WAFL 

XGMI block.

AMDSMI_GPU_BLOCK_DF 

DF block.

AMDSMI_GPU_BLOCK_SMN 

SMN block.

AMDSMI_GPU_BLOCK_SEM 

SEM block.

AMDSMI_GPU_BLOCK_MP0 

MP0 block.

AMDSMI_GPU_BLOCK_MP1 

MP1 block.

AMDSMI_GPU_BLOCK_FUSE 

Fuse block.

AMDSMI_GPU_BLOCK_LAST 

for supported blocks

The highest bit position

◆ amdsmi_ras_err_state_t

The current ECC state.

Enumerator
AMDSMI_RAS_ERR_STATE_NONE 

No current errors.

AMDSMI_RAS_ERR_STATE_DISABLED 

ECC is disabled.

AMDSMI_RAS_ERR_STATE_PARITY 

ECC errors present, but type unknown.

AMDSMI_RAS_ERR_STATE_SING_C 

Single correctable error.

AMDSMI_RAS_ERR_STATE_MULT_UC 

Multiple uncorrectable errors.

AMDSMI_RAS_ERR_STATE_POISON 

page. Treat as uncorrectable.

Firmware detected error and isolated

AMDSMI_RAS_ERR_STATE_ENABLED 

ECC is enabled.

◆ amdsmi_memory_type_t

Types of memory.

Enumerator
AMDSMI_MEM_TYPE_VRAM 

VRAM memory.

AMDSMI_MEM_TYPE_VIS_VRAM 

VRAM memory that is visible.

AMDSMI_MEM_TYPE_GTT 

GTT memory.

◆ amdsmi_freq_ind_t

The values of this enum are used as frequency identifiers.

Enumerator
AMDSMI_FREQ_IND_MIN 

Index used for the minimum frequency value.

AMDSMI_FREQ_IND_MAX 

Index used for the maximum frequency value.

AMDSMI_FREQ_IND_INVALID 

An invalid frequency index.

◆ amdsmi_memory_page_status_t

Reserved Memory Page States.

Enumerator
AMDSMI_MEM_PAGE_STATUS_RESERVED 

and not available for use

Reserved. This gpu page is reserved

AMDSMI_MEM_PAGE_STATUS_PENDING 

Pending. This gpu page is marked as bad and will be marked reserved at the next window.

AMDSMI_MEM_PAGE_STATUS_UNRESERVABLE 

Unable to reserve this page.

◆ AMDSMI_IO_LINK_TYPE

Types for IO Link.

Enumerator
AMDSMI_IOLINK_TYPE_UNDEFINED 

unknown type.

AMDSMI_IOLINK_TYPE_PCIEXPRESS 

PCI Express.

AMDSMI_IOLINK_TYPE_XGMI 

XGMI.

AMDSMI_IOLINK_TYPE_NUMIOLINKTYPES 

Number of IO Link types.

AMDSMI_IOLINK_TYPE_SIZE 

Max of IO Link types.

◆ AMDSMI_UTILIZATION_COUNTER_TYPE

The utilization counter type.

Enumerator
AMDSMI_UTILIZATION_COUNTER_FIRST 

GFX Activity.

AMDSMI_COARSE_GRAIN_MEM_ACTIVITY 

Memory Activity.

Function Documentation

◆ amdsmi_get_gpu_device_bdf()

amdsmi_status_t amdsmi_get_gpu_device_bdf ( amdsmi_processor_handle  processor_handle,
amdsmi_bdf_t bdf 
)

Returns BDF of the given device.

Parameters
[in]processor_handleDevice which to query
[out]bdfReference to BDF. Must be allocated by user.
Returns
amdsmi_status_t | AMDSMI_STATUS_SUCCESS on success, non-zero on fail

◆ amdsmi_get_gpu_device_uuid()

amdsmi_status_t amdsmi_get_gpu_device_uuid ( amdsmi_processor_handle  processor_handle,
unsigned int *  uuid_length,
char *  uuid 
)

Returns the UUID of the device.

Parameters
[in]processor_handleDevice which to query
[in,out]uuid_lengthLength of the uuid string. As input, must be equal or greater than SMI_GPU_UUID_SIZE and be allocated by user. As output it is the length of the uuid string.
[out]uuidPointer to string to store the UUID. Must be allocated by user.
Returns
amdsmi_status_t | AMDSMI_STATUS_SUCCESS on success, non-zero on fail