[SWDEV-540665] Move Virtualization checks in APIs into amd-smi APIs (#643)

* Remove vm checks in rocm-smi
* Move virtualization checks up the stack into amd-smi

---------

Signed-off-by: adapryor <Adam.pryor@amd.com>
Signed-off-by: Maisam Arif <Maisam.Arif@amd.com>
Co-authored-by: Maisam Arif <Maisam.Arif@amd.com>
이 커밋은 다음에 포함됨:
Pryor, Adam그리고Maisam Arif 작성하고 GitHub가 2025-08-21 18:11:50 -05:00를 커밋함
1 부모 5aae1a31fa
커밋 f8afba0a5f
2 파일이 변경됨
+84 -46

검색과 일치하는 파일 없음

+83 -4
파일 보기
@@ -1501,6 +1501,15 @@ amdsmi_status_t amdsmi_reset_gpu_fan(amdsmi_processor_handle processor_handle,
amdsmi_status_t amdsmi_set_gpu_fan_speed(amdsmi_processor_handle processor_handle,
uint32_t sensor_ind, uint64_t speed) {
// Bare Metal and passthrough only feature
amdsmi_virtualization_mode_t virt_mode;
if (amdsmi_get_gpu_virtualization_mode(processor_handle, &virt_mode) == AMDSMI_STATUS_SUCCESS) {
if (virt_mode == AMDSMI_VIRTUALIZATION_MODE_GUEST) {
return AMDSMI_STATUS_NOT_SUPPORTED;
}
}
return rsmi_wrapper(rsmi_dev_fan_speed_set, processor_handle, 0,
sensor_ind, speed);
}
@@ -3392,19 +3401,36 @@ amdsmi_get_power_cap_info(amdsmi_processor_handle processor_handle,
}
amdsmi_status_t
amdsmi_set_power_cap(amdsmi_processor_handle processor_handle,
amdsmi_set_power_cap(amdsmi_processor_handle processor_handle,
uint32_t sensor_ind, uint64_t cap) {
// Bare Metal and passthrough only feature
amdsmi_virtualization_mode_t virt_mode;
if (amdsmi_get_gpu_virtualization_mode(processor_handle, &virt_mode) == AMDSMI_STATUS_SUCCESS) {
if (virt_mode == AMDSMI_VIRTUALIZATION_MODE_GUEST) {
return AMDSMI_STATUS_NOT_SUPPORTED;
}
}
return rsmi_wrapper(rsmi_dev_power_cap_set, processor_handle, 0,
sensor_ind, cap);
}
amdsmi_status_t
amdsmi_get_gpu_power_profile_presets(amdsmi_processor_handle processor_handle,
amdsmi_get_gpu_power_profile_presets(amdsmi_processor_handle processor_handle,
uint32_t sensor_ind,
amdsmi_power_profile_status_t *status) {
AMDSMI_CHECK_INIT();
// nullptr api supported
// Bare Metal and passthrough only feature
amdsmi_virtualization_mode_t virt_mode;
if (amdsmi_get_gpu_virtualization_mode(processor_handle, &virt_mode) == AMDSMI_STATUS_SUCCESS) {
if (virt_mode == AMDSMI_VIRTUALIZATION_MODE_GUEST) {
return AMDSMI_STATUS_NOT_SUPPORTED;
}
}
return rsmi_wrapper(rsmi_dev_power_profile_presets_get, processor_handle, 0,
sensor_ind, reinterpret_cast<rsmi_power_profile_status_t*>(status));
}
@@ -3416,8 +3442,17 @@ amdsmi_status_t amdsmi_set_gpu_perf_determinism_mode(
}
amdsmi_status_t
amdsmi_set_gpu_power_profile(amdsmi_processor_handle processor_handle,
amdsmi_set_gpu_power_profile(amdsmi_processor_handle processor_handle,
uint32_t reserved, amdsmi_power_profile_preset_masks_t profile) {
// Bare Metal and passthrough only feature
amdsmi_virtualization_mode_t virt_mode;
if (amdsmi_get_gpu_virtualization_mode(processor_handle, &virt_mode) == AMDSMI_STATUS_SUCCESS) {
if (virt_mode == AMDSMI_VIRTUALIZATION_MODE_GUEST) {
return AMDSMI_STATUS_NOT_SUPPORTED;
}
}
return rsmi_wrapper(rsmi_dev_power_profile_set, processor_handle, 0,
reserved,
static_cast<rsmi_power_profile_preset_masks_t>(profile));
@@ -3443,6 +3478,15 @@ amdsmi_status_t
amdsmi_status_t amdsmi_set_gpu_pci_bandwidth(amdsmi_processor_handle processor_handle,
uint64_t bw_bitmask) {
// Bare Metal and passthrough only feature
amdsmi_virtualization_mode_t virt_mode;
if (amdsmi_get_gpu_virtualization_mode(processor_handle, &virt_mode) == AMDSMI_STATUS_SUCCESS) {
if (virt_mode == AMDSMI_VIRTUALIZATION_MODE_GUEST) {
return AMDSMI_STATUS_NOT_SUPPORTED;
}
}
return rsmi_wrapper(rsmi_dev_pci_bandwidth_set, processor_handle, 0,
bw_bitmask);
}
@@ -3539,6 +3583,14 @@ amdsmi_status_t amdsmi_set_clk_freq(amdsmi_processor_handle processor_handle,
return AMDSMI_STATUS_NOT_SUPPORTED;
}
// Bare Metal and passthrough only feature
amdsmi_virtualization_mode_t virt_mode;
if (amdsmi_get_gpu_virtualization_mode(processor_handle, &virt_mode) == AMDSMI_STATUS_SUCCESS) {
if (virt_mode == AMDSMI_VIRTUALIZATION_MODE_GUEST) {
return AMDSMI_STATUS_NOT_SUPPORTED;
}
}
return rsmi_wrapper(rsmi_dev_gpu_clk_freq_set, processor_handle, 0,
static_cast<rsmi_clk_type_t>(clk_type), freq_bitmask);
}
@@ -3619,6 +3671,15 @@ amdsmi_status_t amdsmi_get_gpu_memory_usage(amdsmi_processor_handle processor_ha
amdsmi_status_t amdsmi_get_gpu_overdrive_level(
amdsmi_processor_handle processor_handle,
uint32_t *od) {
// Bare Metal and passthrough only feature
amdsmi_virtualization_mode_t virt_mode;
if (amdsmi_get_gpu_virtualization_mode(processor_handle, &virt_mode) == AMDSMI_STATUS_SUCCESS) {
if (virt_mode == AMDSMI_VIRTUALIZATION_MODE_GUEST) {
return AMDSMI_STATUS_NOT_SUPPORTED;
}
}
return rsmi_wrapper(rsmi_dev_overdrive_level_get, processor_handle, 0, od);
}
@@ -3630,6 +3691,15 @@ amdsmi_status_t amdsmi_get_gpu_mem_overdrive_level(
amdsmi_status_t amdsmi_set_gpu_overdrive_level(
amdsmi_processor_handle processor_handle, uint32_t od) {
// Bare Metal and passthrough only feature
amdsmi_virtualization_mode_t virt_mode;
if (amdsmi_get_gpu_virtualization_mode(processor_handle, &virt_mode) == AMDSMI_STATUS_SUCCESS) {
if (virt_mode == AMDSMI_VIRTUALIZATION_MODE_GUEST) {
return AMDSMI_STATUS_NOT_SUPPORTED;
}
}
return rsmi_wrapper(rsmi_dev_overdrive_level_set_v1, processor_handle, 0, od);
}
amdsmi_status_t amdsmi_get_gpu_pci_replay_counter(
@@ -3684,6 +3754,15 @@ amdsmi_status_t amdsmi_set_gpu_clk_range(amdsmi_processor_handle processor_handl
uint64_t minclkvalue,
uint64_t maxclkvalue,
amdsmi_clk_type_t clkType) {
// Bare Metal and passthrough only feature
amdsmi_virtualization_mode_t virt_mode;
if (amdsmi_get_gpu_virtualization_mode(processor_handle, &virt_mode) == AMDSMI_STATUS_SUCCESS) {
if (virt_mode == AMDSMI_VIRTUALIZATION_MODE_GUEST) {
return AMDSMI_STATUS_NOT_SUPPORTED;
}
}
return rsmi_wrapper(rsmi_dev_clk_range_set, processor_handle, 0,
minclkvalue, maxclkvalue,
static_cast<rsmi_clk_type_t>(clkType));
@@ -4801,7 +4880,7 @@ amdsmi_get_link_topology_nearest(amdsmi_processor_handle processor_handle,
}
static const std::map<amdsmi_virtualization_mode_t, std::string>
virtualization_mode_map = {
virtualization_mode_map = {
{AMDSMI_VIRTUALIZATION_MODE_UNKNOWN, "UNKNOWN"},
{AMDSMI_VIRTUALIZATION_MODE_BAREMETAL, "BAREMETAL"},
{ AMDSMI_VIRTUALIZATION_MODE_HOST, "HOST"},