From 905c25e59b96cc5a8ed688146e4288aef4d5200f Mon Sep 17 00:00:00 2001 From: "Bill(Shuzhou) Liu" Date: Wed, 17 Jan 2024 08:06:15 -0600 Subject: [PATCH] Voltage clock display as 0 when overdrive and voltage not supported Change the python tool not to display above information if it is not supported. Change-Id: I48ffd95f07168219a629dfb391c1b4587308286d --- python_smi_tools/rocm_smi.py | 40 +++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/python_smi_tools/rocm_smi.py b/python_smi_tools/rocm_smi.py index 9ebf07167b..0def4c6a29 100755 --- a/python_smi_tools/rocm_smi.py +++ b/python_smi_tools/rocm_smi.py @@ -2502,21 +2502,27 @@ def showPowerPlayTable(deviceList): printLog(device, '1: %sMhz' % (int(odvf.curr_sclk_range.upper_bound / 1000000)), None) printLog(device, 'OD_MCLK:', None) printLog(device, '1: %sMhz' % (int(odvf.curr_mclk_range.upper_bound / 1000000)), None) - printLog(device, 'OD_VDDC_CURVE:', None) - for position in range(3): - printLog(device, '%d: %sMhz %smV' % ( - position, int(list(odvf.curve.vc_points)[position].frequency / 1000000), - int(list(odvf.curve.vc_points)[position].voltage)), None) - printLog(device, 'OD_RANGE:', None) - printLog(device, 'SCLK: %sMhz %sMhz' % ( - int(odvf.sclk_freq_limits.lower_bound / 1000000), int(odvf.sclk_freq_limits.upper_bound / 1000000)), None) - printLog(device, 'MCLK: %sMhz %sMhz' % ( - int(odvf.mclk_freq_limits.lower_bound / 1000000), int(odvf.mclk_freq_limits.upper_bound / 1000000)), None) - for position in range(3): - printLog(device, 'VDDC_CURVE_SCLK[%d]: %sMhz' % ( - position, int(list(odvf.curve.vc_points)[position].frequency / 1000000)), None) - printLog(device, 'VDDC_CURVE_VOLT[%d]: %smV' % ( - position, int(list(odvf.curve.vc_points)[position].voltage)), None) + if odvf.num_regions > 0: + printLog(device, 'OD_VDDC_CURVE:', None) + for position in range(3): + printLog(device, '%d: %sMhz %smV' % ( + position, int(list(odvf.curve.vc_points)[position].frequency / 1000000), + int(list(odvf.curve.vc_points)[position].voltage)), None) + if odvf.sclk_freq_limits.lower_bound > 0 or odvf.sclk_freq_limits.upper_bound > 0 \ + or odvf.mclk_freq_limits.lower_bound >0 or odvf.mclk_freq_limits.upper_bound > 0: + printLog(device, 'OD_RANGE:', None) + if odvf.sclk_freq_limits.lower_bound > 0 or odvf.sclk_freq_limits.upper_bound > 0: + printLog(device, 'SCLK: %sMhz %sMhz' % ( + int(odvf.sclk_freq_limits.lower_bound / 1000000), int(odvf.sclk_freq_limits.upper_bound / 1000000)), None) + if odvf.mclk_freq_limits.lower_bound >0 or odvf.mclk_freq_limits.upper_bound > 0: + printLog(device, 'MCLK: %sMhz %sMhz' % ( + int(odvf.mclk_freq_limits.lower_bound / 1000000), int(odvf.mclk_freq_limits.upper_bound / 1000000)), None) + if odvf.num_regions > 0: + for position in range(3): + printLog(device, 'VDDC_CURVE_SCLK[%d]: %sMhz' % ( + position, int(list(odvf.curve.vc_points)[position].frequency / 1000000)), None) + printLog(device, 'VDDC_CURVE_VOLT[%d]: %smV' % ( + position, int(list(odvf.curve.vc_points)[position].voltage)), None) printLogSpacer() @@ -3032,11 +3038,13 @@ def showVoltageCurve(deviceList): odvf = rsmi_od_volt_freq_data_t() for device in deviceList: ret = rocmsmi.rsmi_dev_od_volt_info_get(device, byref(odvf)) - if rsmi_ret_ok(ret, device, 'get_od_volt_info', silent=False): + if rsmi_ret_ok(ret, device, 'get_od_volt_info', silent=False) and odvf.num_regions > 0: for position in range(3): printLog(device, 'Voltage point %d: %sMhz %smV' % ( position, int(list(odvf.curve.vc_points)[position].frequency / 1000000), int(list(odvf.curve.vc_points)[position].voltage)), None) + else: + printErrLog(device, 'Voltage curve Points unsupported.') printLogSpacer()