1857{
1859
1860 if (strcmp(
name,
"rsmi_dev_count") == 0) {
1861 return strdup("NUMDevices");
1862 }
else if (strcmp(
name,
"rsmi_lib_version") == 0) {
1863 return strdup("rsmi_version");
1864 }
else if (strcmp(
name,
"rsmi_dev_driver_version_str_get") == 0) {
1865 return strdup("driver_version_str");
1866 }
else if (strcmp(
name,
"rsmi_dev_id_get") == 0) {
1867 sprintf(event_name_str, "device_id:device=%i", dev);
1868 }
else if (strcmp(
name,
"rsmi_dev_subsystem_vendor_id_get") == 0) {
1869 sprintf(event_name_str, "subsystem_vendor_id:device=%i", dev);
1870 }
else if (strcmp(
name,
"rsmi_dev_vendor_id_get") == 0) {
1871 sprintf(event_name_str, "vendor_id:device=%i", dev);
1872 }
else if (strcmp(
name,
"rsmi_dev_unique_id_get") == 0) {
1873 sprintf(event_name_str, "unique_id:device=%i", dev);
1874 }
else if (strcmp(
name,
"rsmi_dev_subsystem_id_get") == 0) {
1875 sprintf(event_name_str, "subsystem_id:device=%i", dev);
1876 }
else if (strcmp(
name,
"rsmi_dev_drm_render_minor_get") == 0) {
1877 sprintf(event_name_str, "drm_render_minor:device=%i", dev);
1878 }
else if (strcmp(
name,
"rsmi_dev_overdrive_level_get") == 0) {
1879 sprintf(event_name_str, "overdrive_level:device=%i", dev);
1880 }
else if (strncmp(
name,
"rsmi_dev_perf_level", strlen(
"rsmi_dev_perf_level")) == 0) {
1881 sprintf(event_name_str, "perf_level:device=%i", dev);
1882 }
else if (strcmp(
name,
"rsmi_dev_memory_total_get") == 0) {
1883 switch (variant) {
1884 case RSMI_MEM_TYPE_VRAM:
1885 sprintf(event_name_str, "mem_total_VRAM:device=%i", dev);
1886 break;
1887 case RSMI_MEM_TYPE_VIS_VRAM:
1888 sprintf(event_name_str, "mem_total_VIS_VRAM:device=%i", dev);
1889 break;
1890 case RSMI_MEM_TYPE_GTT:
1891 sprintf(event_name_str, "mem_total_GTT:device=%i", dev);
1892 break;
1893 default:
1894 return NULL;
1895 }
1896 }
else if (strcmp(
name,
"rsmi_dev_memory_usage_get") == 0) {
1897 switch (variant) {
1898 case RSMI_MEM_TYPE_VRAM:
1899 sprintf(event_name_str, "mem_usage_VRAM:device=%i", dev);
1900 break;
1901 case RSMI_MEM_TYPE_VIS_VRAM:
1902 sprintf(event_name_str, "mem_usage_VIS_VRAM:device=%i", dev);
1903 break;
1904 case RSMI_MEM_TYPE_GTT:
1905 sprintf(event_name_str, "mem_usage_GTT:device=%i", dev);
1906 break;
1907 default:
1908 return NULL;
1909 }
1910 }
else if (strcmp(
name,
"rsmi_dev_busy_percent_get") == 0) {
1911 sprintf(event_name_str, "busy_percent:device=%i", dev);
1912 }
else if (strcmp(
name,
"rsmi_dev_memory_busy_percent_get") == 0) {
1913 sprintf(event_name_str, "memory_busy_percent:device=%i", dev);
1914 }
else if (strcmp(
name,
"rsmi_dev_pci_id_get") == 0) {
1915 sprintf(event_name_str, "pci_id:device=%i", dev);
1916 }
else if (strcmp(
name,
"rsmi_dev_pci_replay_counter_get") == 0) {
1917 sprintf(event_name_str, "pci_replay_counter:device=%i", dev);
1918 }
else if (strcmp(
name,
"rsmi_dev_pci_throughput_get") == 0) {
1919 switch (variant) {
1921 sprintf(event_name_str, "pci_throughput_sent:device=%i", dev);
1922 break;
1924 sprintf(event_name_str, "pci_throughput_received:device=%i", dev);
1925 break;
1927 sprintf(event_name_str, "pci_max_packet_size:device=%i", dev);
1928 break;
1929 default:
1930 return NULL;
1931 }
1932 }
else if (strcmp(
name,
"rsmi_dev_power_profile_presets_get") == 0) {
1933 switch (variant) {
1935 sprintf(event_name_str, "power_profiler_presets:device=%i:count", dev);
1936 break;
1938 sprintf(event_name_str, "power_profiler_presets:device=%i:avail_profiles", dev);
1939 break;
1941 sprintf(event_name_str, "power_profiler_presets:device=%i:current", dev);
1942 break;
1943 default:
1944 return NULL;
1945 }
1946 }
else if (strcmp(
name,
"rsmi_dev_power_profile_set") == 0) {
1947 sprintf(event_name_str, "power_profile_set:device=%i", dev);
1948 }
else if (strcmp(
name,
"rsmi_dev_fan_reset") == 0) {
1949 sprintf(event_name_str, "fan_reset:device=%i:sensor=%i", dev, (int) subvariant);
1950 }
else if (strcmp(
name,
"rsmi_dev_fan_rpms_get") == 0) {
1951 sprintf(event_name_str, "fan_rpms:device=%i:sensor=%i", dev, (int) subvariant);
1952 }
else if (strcmp(
name,
"rsmi_dev_fan_speed_max_get") == 0) {
1953 sprintf(event_name_str, "fan_speed_max:device=%i:sensor=%i", dev, (int) subvariant);
1954 }
else if (strcmp(
name,
"rsmi_dev_fan_speed_get") == 0 || strcmp(
name,
"rsmi_dev_fan_speed_set") == 0) {
1955 sprintf(event_name_str, "fan_speed:device=%i:sensor=%i", dev, (int) subvariant);
1956 }
else if (strcmp(
name,
"rsmi_dev_power_ave_get") == 0) {
1957 sprintf(event_name_str, "power_average:device=%i:sensor=%i", dev, (int) subvariant);
1958 }
else if (strcmp(
name,
"rsmi_dev_power_cap_get") == 0 || strcmp(
name,
"rsmi_dev_power_cap_set") == 0) {
1959 sprintf(event_name_str, "power_cap:device=%i:sensor=%i", dev, (int) subvariant);
1960 }
else if (strcmp(
name,
"rsmi_dev_power_cap_range_get") == 0) {
1961 switch (variant) {
1963 sprintf(event_name_str, "power_cap_range_min:device=%i:sensor=%i", dev, (int) subvariant);
1964 break;
1966 sprintf(event_name_str, "power_cap_range_max:device=%i:sensor=%i", dev, (int) subvariant);
1967 break;
1968 default:
1969 return NULL;
1970 }
1971 }
else if (strcmp(
name,
"rsmi_dev_temp_metric_get") == 0) {
1972 switch (variant) {
1973 case RSMI_TEMP_CURRENT:
1974 sprintf(event_name_str, "temp_current:device=%i:sensor=%i", dev, (int) subvariant);
1975 break;
1976 case RSMI_TEMP_MAX:
1977 sprintf(event_name_str, "temp_max:device=%i:sensor=%i", dev, (int) subvariant);
1978 break;
1979 case RSMI_TEMP_MIN:
1980 sprintf(event_name_str, "temp_min:device=%i:sensor=%i", dev, (int) subvariant);
1981 break;
1982 case RSMI_TEMP_MAX_HYST:
1983 sprintf(event_name_str, "temp_max_hyst:device=%i:sensor=%i", dev, (int) subvariant);
1984 break;
1985 case RSMI_TEMP_MIN_HYST:
1986 sprintf(event_name_str, "temp_min_hyst:device=%i:sensor=%i", dev, (int) subvariant);
1987 break;
1988 case RSMI_TEMP_CRITICAL:
1989 sprintf(event_name_str, "temp_critical:device=%i:sensor=%i", dev, (int) subvariant);
1990 break;
1991 case RSMI_TEMP_CRITICAL_HYST:
1992 sprintf(event_name_str, "temp_critical_hyst:device=%i:sensor=%i", dev, (int) subvariant);
1993 break;
1994 case RSMI_TEMP_EMERGENCY:
1995 sprintf(event_name_str, "temp_emergency:device=%i:sensor=%i", dev, (int) subvariant);
1996 break;
1997 case RSMI_TEMP_EMERGENCY_HYST:
1998 sprintf(event_name_str, "temp_emergency_hyst:device=%i:sensor=%i", dev, (int) subvariant);
1999 break;
2000 case RSMI_TEMP_CRIT_MIN:
2001 sprintf(event_name_str, "temp_crit_min:device=%i:sensor=%i", dev, (int) subvariant);
2002 break;
2003 case RSMI_TEMP_CRIT_MIN_HYST:
2004 sprintf(event_name_str, "temp_crit_min_hyst:device=%i:sensor=%i", dev, (int) subvariant);
2005 break;
2006 case RSMI_TEMP_OFFSET:
2007 sprintf(event_name_str, "temp_offset:device=%i:sensor=%i", dev, (int) subvariant);
2008 break;
2009 case RSMI_TEMP_LOWEST:
2010 sprintf(event_name_str, "temp_lowest:device=%i:sensor=%i", dev, (int) subvariant);
2011 break;
2012 case RSMI_TEMP_HIGHEST:
2013 sprintf(event_name_str, "temp_highest:device=%i:sensor=%i", dev, (int) subvariant);
2014 break;
2015 default:
2016 return NULL;
2017 }
2018 }
else if (strcmp(
name,
"rsmi_dev_firmware_version_get") == 0) {
2019 switch (variant) {
2020 case RSMI_FW_BLOCK_ASD:
2021 sprintf(event_name_str, "firmware_version:device=%i:block=ASD", dev);
2022 break;
2023 case RSMI_FW_BLOCK_CE:
2024 sprintf(event_name_str, "firmware_version:device=%i:block=CE", dev);
2025 break;
2026 case RSMI_FW_BLOCK_DMCU:
2027 sprintf(event_name_str, "firmware_version:device=%i:block=DMCU", dev);
2028 break;
2029 case RSMI_FW_BLOCK_MC:
2030 sprintf(event_name_str, "firmware_version:device=%i:block=MC", dev);
2031 break;
2032 case RSMI_FW_BLOCK_ME:
2033 sprintf(event_name_str, "firmware_version:device=%i:block=ME", dev);
2034 break;
2035 case RSMI_FW_BLOCK_MEC:
2036 sprintf(event_name_str, "firmware_version:device=%i:block=MEC", dev);
2037 break;
2038 case RSMI_FW_BLOCK_MEC2:
2039 sprintf(event_name_str, "firmware_version:device=%i:block=MEC2", dev);
2040 break;
2041 case RSMI_FW_BLOCK_PFP:
2042 sprintf(event_name_str, "firmware_version:device=%i:block=PFP", dev);
2043 break;
2044 case RSMI_FW_BLOCK_RLC:
2045 sprintf(event_name_str, "firmware_version:device=%i:block=RLC", dev);
2046 break;
2047 case RSMI_FW_BLOCK_RLC_SRLC:
2048 sprintf(event_name_str, "firmware_version:device=%i:block=SRLC", dev);
2049 break;
2050 case RSMI_FW_BLOCK_RLC_SRLG:
2051 sprintf(event_name_str, "firmware_version:device=%i:block=SRLG", dev);
2052 break;
2053 case RSMI_FW_BLOCK_RLC_SRLS:
2054 sprintf(event_name_str, "firmware_version:device=%i:block=SRLS", dev);
2055 break;
2056 case RSMI_FW_BLOCK_SDMA:
2057 sprintf(event_name_str, "firmware_version:device=%i:block=SDMA", dev);
2058 break;
2059 case RSMI_FW_BLOCK_SDMA2:
2060 sprintf(event_name_str, "firmware_version:device=%i:block=SDMA2", dev);
2061 break;
2062 case RSMI_FW_BLOCK_SMC:
2063 sprintf(event_name_str, "firmware_version:device=%i:block=SMC", dev);
2064 break;
2065 case RSMI_FW_BLOCK_SOS:
2066 sprintf(event_name_str, "firmware_version:device=%i:block=SOS", dev);
2067 break;
2068 case RSMI_FW_BLOCK_TA_RAS:
2069 sprintf(event_name_str, "firmware_version:device=%i:block=RAS", dev);
2070 break;
2071 case RSMI_FW_BLOCK_TA_XGMI:
2072 sprintf(event_name_str, "firmware_version:device=%i:block=XGMI", dev);
2073 break;
2074 case RSMI_FW_BLOCK_UVD:
2075 sprintf(event_name_str, "firmware_version:device=%i:block=UVD", dev);
2076 break;
2077 case RSMI_FW_BLOCK_VCE:
2078 sprintf(event_name_str, "firmware_version:device=%i:block=VCE", dev);
2079 break;
2080 case RSMI_FW_BLOCK_VCN:
2081 sprintf(event_name_str, "firmware_version:device=%i:block=VCN", dev);
2082 break;
2083 default:
2084 return NULL;
2085 }
2086 }
else if (strcmp(
name,
"rsmi_dev_ecc_count_get") == 0) {
2087 const char *block = NULL;
2088 switch (variant) {
2089 case RSMI_GPU_BLOCK_UMC:
2090 block = "UMC";
2091 break;
2092 case RSMI_GPU_BLOCK_SDMA:
2093 block = "SDMA";
2094 break;
2095 case RSMI_GPU_BLOCK_GFX:
2096 block = "GFX";
2097 break;
2098 case RSMI_GPU_BLOCK_MMHUB:
2099 block = "MMHUB";
2100 break;
2101 case RSMI_GPU_BLOCK_ATHUB:
2102 block = "ATHUB";
2103 break;
2104 case RSMI_GPU_BLOCK_PCIE_BIF:
2105 block = "PCIE_BIF";
2106 break;
2107 case RSMI_GPU_BLOCK_HDP:
2108 block = "HDP";
2109 break;
2110 case RSMI_GPU_BLOCK_XGMI_WAFL:
2111 block = "XGMI_WAFL";
2112 break;
2113 case RSMI_GPU_BLOCK_DF:
2114 block = "DF";
2115 break;
2116 case RSMI_GPU_BLOCK_SMN:
2117 block = "SMN";
2118 break;
2119 case RSMI_GPU_BLOCK_SEM:
2120 block = "SEM";
2121 break;
2122 case RSMI_GPU_BLOCK_MP0:
2123 block = "MP0";
2124 break;
2125 case RSMI_GPU_BLOCK_MP1:
2126 block = "MP1";
2127 break;
2128 case RSMI_GPU_BLOCK_FUSE:
2129 block = "FUSE";
2130 break;
2131 default:
2132 return NULL;
2133 }
2134
2135 switch (subvariant) {
2137 sprintf(event_name_str, "ecc_count_correctable:device=%i:block=%s", dev, block);
2138 break;
2140 sprintf(event_name_str, "ecc_count_uncorrectable:device=%i:block=%s", dev, block);
2141 break;
2142 default:
2143 return NULL;
2144 }
2145 }
else if (strcmp(
name,
"rsmi_dev_ecc_enabled_get") == 0) {
2146 sprintf(event_name_str, "ecc_enabled_get:device=%i", dev);
2147 }
else if (strcmp(
name,
"rsmi_dev_ecc_status_get") == 0) {
2148 const char *block = NULL;
2149 switch (variant) {
2150 case RSMI_GPU_BLOCK_UMC:
2151 block = "UMC";
2152 break;
2153 case RSMI_GPU_BLOCK_SDMA:
2154 block = "SDMA";
2155 break;
2156 case RSMI_GPU_BLOCK_GFX:
2157 block = "GFX";
2158 break;
2159 case RSMI_GPU_BLOCK_MMHUB:
2160 block = "MMHUB";
2161 break;
2162 case RSMI_GPU_BLOCK_ATHUB:
2163 block = "ATHUB";
2164 break;
2165 case RSMI_GPU_BLOCK_PCIE_BIF:
2166 block = "PCIE_BIF";
2167 break;
2168 case RSMI_GPU_BLOCK_HDP:
2169 block = "HDP";
2170 break;
2171 case RSMI_GPU_BLOCK_XGMI_WAFL:
2172 block = "XGMI_WAFL";
2173 break;
2174 case RSMI_GPU_BLOCK_DF:
2175 block = "DF";
2176 break;
2177 case RSMI_GPU_BLOCK_SMN:
2178 block = "SMN";
2179 break;
2180 case RSMI_GPU_BLOCK_SEM:
2181 block = "SEM";
2182 break;
2183 case RSMI_GPU_BLOCK_MP0:
2184 block = "MP0";
2185 break;
2186 case RSMI_GPU_BLOCK_MP1:
2187 block = "MP1";
2188 break;
2189 case RSMI_GPU_BLOCK_FUSE:
2190 block = "FUSE";
2191 break;
2192 default:
2193 return NULL;
2194 }
2195 sprintf(event_name_str, "ecc_status:device=%i:block=%s", dev, block);
2196 }
else if (strcmp(
name,
"rsmi_dev_gpu_clk_freq_get") == 0) {
2197 const char *variant_str = NULL;
2198 switch (variant) {
2200 variant_str = "System";
2201 break;
2203 variant_str = "DataFabric";
2204 break;
2206 variant_str = "DisplayEngine";
2207 break;
2209 variant_str = "SOC";
2210 break;
2212 variant_str = "Memory";
2213 break;
2214 default:
2215 return NULL;
2216 }
2217
2218 int idx;
2219 const char *subvariant_str = NULL;
2220 switch (subvariant) {
2222 subvariant_str = "count";
2223 break;
2225 subvariant_str = "current";
2226 break;
2227 default:
2229 }
2230
2232 sprintf(event_name_str, "gpu_clk_freq_%s:device=%i:%s", variant_str, dev, subvariant_str);
2233 } else {
2234 sprintf(event_name_str, "gpu_clk_freq_%s:device=%i:idx=%i", variant_str, dev, idx);
2235 }
2236 }
else if (strcmp(
name,
"rsmi_dev_gpu_clk_freq_set") == 0) {
2237 const char *variant_str = NULL;
2238 switch (variant) {
2240 variant_str = "System";
2241 break;
2243 variant_str = "DataFabric";
2244 break;
2246 variant_str = "DisplayEngine";
2247 break;
2249 variant_str = "SOC";
2250 break;
2252 variant_str = "Memory";
2253 break;
2254 default:
2255 return NULL;
2256 }
2257
2258 sprintf(event_name_str, "gpu_clk_freq_%s:device=%i:mask", variant_str, dev);
2259 }
else if (strcmp(
name,
"rsmi_dev_pci_bandwidth_get") == 0) {
2260 const char *variant_str = NULL;
2261 switch (variant) {
2263 variant_str = "count";
2264 break;
2266 variant_str = "current";
2267 break;
2269 variant_str = "rate_idx";
2270 break;
2272 variant_str = "lane_idx";
2273 break;
2274 default:
2275 return NULL;
2276 }
2277
2279 sprintf(event_name_str, "pci_bandwidth_rate:device=%i:%s", dev, variant_str);
2280 } else {
2281 sprintf(event_name_str, "pci_bandwidth_rate:device=%i:%s=%i", dev, variant_str, (int) subvariant);
2282 }
2283 }
else if (strcmp(
name,
"rsmi_dev_pci_bandwidth_set") == 0) {
2284 sprintf(event_name_str, "pci_bandwidth_rate:device=%i:mask", dev);
2285 }
else if (strcmp(
name,
"rsmi_dev_brand_get") == 0) {
2286 sprintf(event_name_str, "device_brand:device=%i", dev);
2287 }
else if (strcmp(
name,
"rsmi_dev_name_get") == 0) {
2288 sprintf(event_name_str, "device_name:device=%i", dev);
2289 }
else if (strcmp(
name,
"rsmi_dev_serial_number_get") == 0) {
2290 sprintf(event_name_str, "device_serial_number:device=%i", dev);
2291 }
else if (strcmp(
name,
"rsmi_dev_subsystem_name_get") == 0) {
2292 sprintf(event_name_str, "device_subsystem_name:device=%i", dev);
2293 }
else if (strcmp(
name,
"rsmi_dev_vbios_version_get") == 0) {
2294 sprintf(event_name_str, "vbios_version:device=%i", dev);
2295 }
else if (strcmp(
name,
"rsmi_dev_vendor_name_get") == 0) {
2296 sprintf(event_name_str, "vendor_name:device=%i", dev);
2297 }
else if (strcmp(
name,
"rsmi_dev_xgmi_evt_get") == 0) {
2298 const char *variant_str = NULL;
2299 switch (variant) {
2301 variant_str = "nop_sent_to_neighbor0";
2302 break;
2304 variant_str = "req_sent_to_neighbor0";
2305 break;
2307 variant_str = "res_sent_to_neighbor0";
2308 break;
2310 variant_str = "data_beats_sent_to_neighbor0";
2311 break;
2313 variant_str = "nop_sent_to_neighbor1";
2314 break;
2316 variant_str = "req_sent_to_neighbor1";
2317 break;
2319 variant_str = "res_sent_to_neighbor1";
2320 break;
2322 variant_str = "data_beats_sent_to_neighbor1";
2323 break;
2325 variant_str = "data_beats_sent_to_neighbor0";
2326 break;
2328 variant_str = "data_beats_sent_to_neighbor1";
2329 break;
2331 variant_str = "data_beats_sent_to_neighbor2";
2332 break;
2334 variant_str = "data_beats_sent_to_neighbor3";
2335 break;
2337 variant_str = "data_beats_sent_to_neighbor4";
2338 break;
2340 variant_str = "data_beats_sent_to_neighbor5";
2341 break;
2342 default:
2343 return NULL;
2344 }
2345 sprintf(event_name_str, "xgmi_%s:device=%i", variant_str, dev);
2346 }
else if (strcmp(
name,
"rsmi_dev_xgmi_bw_get") == 0) {
2347 switch (variant) {
2349 sprintf(event_name_str, "min_xgmi_internode_bw:device=%i:target=%i", dev, (int) subvariant);
2350 break;
2352 sprintf(event_name_str, "max_xgmi_internode_bw:device=%i:target=%i", dev, (int) subvariant);
2353 break;
2354 default:
2355 return NULL;
2356 }
2357 } else {
2358 return NULL;
2359 }
2360
2361 return strdup(event_name_str);
2362}