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:
@@ -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)
|
||||
```
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user