rocm_smi_lib/queries/
common_structures.rs

1use rocm_smi_lib_sys::bindings::{*};
2
3pub type RsmiRange = rsmi_range_t;
4pub const RSMI_RANGE_DEFAULT: RsmiRange = RsmiRange {
5    lower_bound: 0,
6    upper_bound: 0,
7};
8pub type RsmiOdVddcPoint = rsmi_od_vddc_point;
9
10#[derive(Debug, Clone, Copy)]
11#[repr(u32)]
12pub enum RsmiDevPerfLevel {
13    /// Performance level is "auto"
14    Auto = rsmi_dev_perf_level_t_RSMI_DEV_PERF_LEVEL_AUTO,
15    /// Keep PowerPlay levels "low", regardless of workload
16    Low = rsmi_dev_perf_level_t_RSMI_DEV_PERF_LEVEL_LOW,
17    /// Keep PowerPlay levels "high", regardless of workload
18    High = rsmi_dev_perf_level_t_RSMI_DEV_PERF_LEVEL_HIGH,
19    /// Only use values defined by manually setting the RSMI_CLK_TYPE_SYS speed
20    Manual = rsmi_dev_perf_level_t_RSMI_DEV_PERF_LEVEL_MANUAL,
21    /// Stable power state with profiling clocks
22    StableStd = rsmi_dev_perf_level_t_RSMI_DEV_PERF_LEVEL_STABLE_STD,
23    /// Stable power state with peak clocks
24    StablePeak = rsmi_dev_perf_level_t_RSMI_DEV_PERF_LEVEL_STABLE_PEAK,
25    /// Stable power state with minimum memory clock
26    StableMinMclk = rsmi_dev_perf_level_t_RSMI_DEV_PERF_LEVEL_STABLE_MIN_MCLK,
27    /// Stable power state with minimum system clock
28    StableMinSclk = rsmi_dev_perf_level_t_RSMI_DEV_PERF_LEVEL_STABLE_MIN_SCLK,
29    /// Performance determinism state
30    Determinism = rsmi_dev_perf_level_t_RSMI_DEV_PERF_LEVEL_DETERMINISM,
31    /// Unknown performance level
32    Unknown = rsmi_dev_perf_level_t_RSMI_DEV_PERF_LEVEL_UNKNOWN,
33}
34
35#[derive(Debug, Clone, Copy)]
36#[repr(u64)]
37pub enum RsmiGpuBlock {
38    /// Used to indicate an invalid block
39    Invalid = rsmi_gpu_block_t_RSMI_GPU_BLOCK_INVALID,
40    /// UMC block
41    Umc = rsmi_gpu_block_t_RSMI_GPU_BLOCK_UMC,
42    /// SDMA block
43    Sdma = rsmi_gpu_block_t_RSMI_GPU_BLOCK_SDMA,
44    /// GFX block
45    Gfx = rsmi_gpu_block_t_RSMI_GPU_BLOCK_GFX,
46    /// MMHUB block
47    Mmhub = rsmi_gpu_block_t_RSMI_GPU_BLOCK_MMHUB,
48    /// ATHUB block
49    Athub = rsmi_gpu_block_t_RSMI_GPU_BLOCK_ATHUB,
50    /// PCIE_BIF block
51    PcieBif = rsmi_gpu_block_t_RSMI_GPU_BLOCK_PCIE_BIF,
52    /// HDP block
53    Hdp = rsmi_gpu_block_t_RSMI_GPU_BLOCK_HDP,
54    /// XGMI block
55    XgmiWafl = rsmi_gpu_block_t_RSMI_GPU_BLOCK_XGMI_WAFL,
56    /// DF block
57    Df = rsmi_gpu_block_t_RSMI_GPU_BLOCK_DF,
58    /// SMN block
59    Smn = rsmi_gpu_block_t_RSMI_GPU_BLOCK_SMN,
60    /// SEM block
61    Sem = rsmi_gpu_block_t_RSMI_GPU_BLOCK_SEM,
62    /// MP0 block
63    Mp0 = rsmi_gpu_block_t_RSMI_GPU_BLOCK_MP0,
64    /// MP1 block
65    Mp1 = rsmi_gpu_block_t_RSMI_GPU_BLOCK_MP1,
66    /// Fuse block
67    Fuse = rsmi_gpu_block_t_RSMI_GPU_BLOCK_FUSE,
68    /// Reserved block
69    Reserved = rsmi_gpu_block_t_RSMI_GPU_BLOCK_RESERVED,
70}
71
72#[derive(Debug, Clone, Copy)]
73#[repr(u32)]
74pub enum RsmiRasErrState {
75    /// No ECC errors
76    None = rsmi_ras_err_state_t_RSMI_RAS_ERR_STATE_NONE,
77    /// ECC is disabled
78    Disabled = rsmi_ras_err_state_t_RSMI_RAS_ERR_STATE_DISABLED,
79    /// ECC errors present, but type unknown
80    Parity = rsmi_ras_err_state_t_RSMI_RAS_ERR_STATE_PARITY,
81    /// Single correctable error
82    SingC = rsmi_ras_err_state_t_RSMI_RAS_ERR_STATE_SING_C,
83    /// Multiple uncorrectable errors
84    MultUc = rsmi_ras_err_state_t_RSMI_RAS_ERR_STATE_MULT_UC,
85    /// Firmware detected error and isolated page. Treat as uncorrectable
86    Poison = rsmi_ras_err_state_t_RSMI_RAS_ERR_STATE_POISON,
87    /// ECC is enabled
88    Enabled = rsmi_ras_err_state_t_RSMI_RAS_ERR_STATE_ENABLED,
89    /// Invalid ECC state
90    Invalid = rsmi_ras_err_state_t_RSMI_RAS_ERR_STATE_INVALID,
91}
92
93#[derive(Debug, Clone, Copy)]
94#[repr(u32)]
95pub enum RsmiVoltageMetric {
96    /// Current voltage value
97    Current = rsmi_voltage_metric_t_RSMI_VOLT_CURRENT,
98    /// Voltage max value
99    Max = rsmi_voltage_metric_t_RSMI_VOLT_MAX,
100    /// Voltage critical min value
101    MinCrit = rsmi_voltage_metric_t_RSMI_VOLT_MIN_CRIT,
102    /// Voltage min value
103    Min = rsmi_voltage_metric_t_RSMI_VOLT_MIN,
104    /// Voltage critical max value
105    MaxCrit = rsmi_voltage_metric_t_RSMI_VOLT_MAX_CRIT,
106    /// Average voltage
107    Average = rsmi_voltage_metric_t_RSMI_VOLT_AVERAGE,
108    /// Historical minimum voltage
109    Lowest = rsmi_voltage_metric_t_RSMI_VOLT_LOWEST,
110    /// Historical maximum voltage
111    Highest = rsmi_voltage_metric_t_RSMI_VOLT_HIGHEST,
112}
113
114#[derive(Debug, Clone, Copy)]
115#[repr(u32)]
116
117pub enum RsmiTemperatureMetric {
118    /// Current temperature value
119    Current = rsmi_temperature_metric_t_RSMI_TEMP_CURRENT,
120    /// Maximum temperature value
121    Max = rsmi_temperature_metric_t_RSMI_TEMP_MAX,
122    /// Minimum temperature value
123    Min = rsmi_temperature_metric_t_RSMI_TEMP_MIN,
124    /// Temperature hysteresis value for max limit
125    MaxHyst = rsmi_temperature_metric_t_RSMI_TEMP_MAX_HYST,
126    /// Temperature hysteresis value for min limit
127    MinHyst = rsmi_temperature_metric_t_RSMI_TEMP_MIN_HYST,
128    /// Critical maximum temperature value
129    Critical = rsmi_temperature_metric_t_RSMI_TEMP_CRITICAL,
130    /// Temperature hysteresis value for critical limit
131    CriticalHyst = rsmi_temperature_metric_t_RSMI_TEMP_CRITICAL_HYST,
132    /// Emergency maximum temperature value
133    Emergency = rsmi_temperature_metric_t_RSMI_TEMP_EMERGENCY,
134    /// Temperature hysteresis value for emergency limit
135    EmergencyHyst = rsmi_temperature_metric_t_RSMI_TEMP_EMERGENCY_HYST,
136    /// Critical minimum temperature value
137    CritMin = rsmi_temperature_metric_t_RSMI_TEMP_CRIT_MIN,
138    /// Temperature hysteresis value for critical minimum limit
139    CritMinHyst = rsmi_temperature_metric_t_RSMI_TEMP_CRIT_MIN_HYST,
140    /// Temperature offset
141    Offset = rsmi_temperature_metric_t_RSMI_TEMP_OFFSET,
142    /// Historical minimum temperature
143    Lowest = rsmi_temperature_metric_t_RSMI_TEMP_LOWEST,
144    /// Invalid temperature metric type
145    Invalid = rsmi_temperature_metric_t_RSMI_TEMP_LAST,
146}
147
148#[derive(Debug, Clone, Copy)]#[repr(u32)]
149
150pub enum RsmiTemperatureType {
151    /// Edge GPU temperature
152    Edge = rsmi_temperature_type_t_RSMI_TEMP_TYPE_EDGE,
153    /// Junction (hotspot) temperature
154    Junction = rsmi_temperature_type_t_RSMI_TEMP_TYPE_JUNCTION,
155    /// VRAM temperature
156    Memory = rsmi_temperature_type_t_RSMI_TEMP_TYPE_MEMORY,
157    /// HBM temperature instance 0
158    Hbm0 = rsmi_temperature_type_t_RSMI_TEMP_TYPE_HBM_0,
159    /// HBM temperature instance 1
160    Hbm1 = rsmi_temperature_type_t_RSMI_TEMP_TYPE_HBM_1,
161    /// HBM temperature instance 2
162    Hbm2 = rsmi_temperature_type_t_RSMI_TEMP_TYPE_HBM_2,
163    /// HBM temperature instance 3
164    Hbm3 = rsmi_temperature_type_t_RSMI_TEMP_TYPE_HBM_3,
165    /// Invalid type
166    Invalid = rsmi_temperature_type_t_RSMI_TEMP_TYPE_INVALID,
167}