Changed default behavior of amdsmi_get_gpu_virtualization_mode (#97)

Changed return behavior of amdsmi_get_gpu_virtualization_mode

Signed-off-by: Maisam Arif <Maisam.Arif@amd.com>
Signed-off-by: gabrpham <Gabriel.Pham@amd.com>
Co-authored-by: Maisam Arif <Maisam.Arif@amd.com>

[ROCm/amdsmi commit: 09379f8438]
This commit is contained in:
Pham, Gabriel
2025-02-05 20:09:44 -05:00
committed by GitHub
parent 89ce690176
commit 3a4d60995a
3 changed files with 31 additions and 10 deletions
@@ -4057,7 +4057,7 @@ try:
for dev in device_handles:
virtualization_info = amdsmi_interface.amdsmi_get_gpu_virtualization_mode_info(dev)
print(virtualization_info['mode'])
except amdsmi_exception.AmdSmiLibraryException as e:
except AmdSmiException as e:
print(e)
```
+21
View File
@@ -2765,6 +2765,27 @@ amdsmi_status_t amdsmi_get_gpu_subsystem_id(amdsmi_processor_handle processor_ha
amdsmi_status_t
amdsmi_get_gpu_subsystem_name(amdsmi_processor_handle processor_handle, char *name, size_t len);
/**
* @brief Returns the virtualization mode for the target device.
*
* @ingroup tagIdentQuery
*
* @platform{gpu_bm_linux} @platform{host}
*
* @details The virtualization mode is detected and returned as an enum.
*
* @param[in] processor_handle The identifier of the given device.
*
* @param[in,out] mode Reference to the enum representing virtualization mode.
* - When zero, the virtualization mode is unknown
* - When non-zero, the virtualization mode is detected
*
* @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail.
*/
amdsmi_status_t
amdsmi_get_gpu_virtualization_mode(amdsmi_processor_handle processor_handle,
amdsmi_virtualization_mode_t* mode);
/** @} End tagIdentQuery */
/*****************************************************************************/
+9 -9
View File
@@ -3795,6 +3795,7 @@ amdsmi_get_gpu_virtualization_mode(amdsmi_processor_handle processor_handle, amd
}
struct drm_amdgpu_info_device dev_info = {};
*mode = AMDSMI_VIRTUALIZATION_MODE_UNKNOWN;
amd::smi::AMDSmiGPUDevice* gpu_device = nullptr;
amdsmi_status_t r = get_gpu_device_from_handle(processor_handle, &gpu_device);
@@ -3819,16 +3820,15 @@ amdsmi_get_gpu_virtualization_mode(amdsmi_processor_handle processor_handle, amd
int patch_version = 0;
if ((drm_version->version_major <= major_version) && (drm_version->version_minor <= minor_version) && (drm_version->version_patchlevel < patch_version)){
*mode = AMDSMI_VIRTUALIZATION_MODE_UNKNOWN;
return AMDSMI_STATUS_NOT_SUPPORTED;
}
else {
uint32_t ids_flag = (dev_info.ids_flags & AMDGPU_IDS_FLAGS_MODE_MASK) >> AMDGPU_IDS_FLAGS_MODE_SHIFT;
switch (ids_flag){
case 0: *mode = AMDSMI_VIRTUALIZATION_MODE_BAREMETAL; break;
case 1: *mode = AMDSMI_VIRTUALIZATION_MODE_GUEST; break;
case 2: *mode = AMDSMI_VIRTUALIZATION_MODE_PASSTHROUGH; break;
default: *mode = AMDSMI_VIRTUALIZATION_MODE_UNKNOWN; break;
}
uint32_t ids_flag = (dev_info.ids_flags & AMDGPU_IDS_FLAGS_MODE_MASK) >> AMDGPU_IDS_FLAGS_MODE_SHIFT;
switch (ids_flag){
case 0: *mode = AMDSMI_VIRTUALIZATION_MODE_BAREMETAL; break;
case 1: *mode = AMDSMI_VIRTUALIZATION_MODE_GUEST; break;
case 2: *mode = AMDSMI_VIRTUALIZATION_MODE_PASSTHROUGH; break;
default: *mode = AMDSMI_VIRTUALIZATION_MODE_UNKNOWN; break;
}
free(drm_version);
}