From 51c705fd43e459a63a90b2e12dcceb63c7101b2f Mon Sep 17 00:00:00 2001 From: "Kanangot Balakrishnan, Bindhiya" Date: Thu, 30 Jan 2025 03:25:48 -0600 Subject: [PATCH] [SWDEV-511961] Wrap BM specific set help text BM specific help text contained functions that required the driver to be loaded. this was causing amd-smi not supported error on Linux guests. Fixed this by wrapping the help text in the proper checks Signed-off-by: Bindhiya Kanangot Balakrishnan --- amdsmi_cli/amdsmi_parser.py | 51 +++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/amdsmi_cli/amdsmi_parser.py b/amdsmi_cli/amdsmi_parser.py index e542593081..5566b5ea97 100644 --- a/amdsmi_cli/amdsmi_parser.py +++ b/amdsmi_cli/amdsmi_parser.py @@ -1087,28 +1087,30 @@ class AMDSMIParser(argparse.ArgumentParser): set_value_optionals_title = "Set Arguments" # Help text for Arguments only on BM platforms - set_fan_help = "Set GPU fan speed (0-255 or 0-100%%)" - perf_level_help_choices_str = ", ".join(self.helpers.get_perf_levels()[0][0:-1]) - set_perf_level_help = f"Set one of the following performance levels:\n\t{perf_level_help_choices_str}" - power_profile_choices_str = ", ".join(self.helpers.get_power_profiles()[0:-1]) - set_profile_help = f"Set power profile level (#) or choose one of available profiles:\n\t{power_profile_choices_str}" - perf_det_choices_str = ", ".join(self.helpers.get_perf_det_levels()) - set_perf_det_help = f"Set performance determinism and select one of the corresponding performance levels:\n\t{perf_det_choices_str}" - (accelerator_set_choices, _) = self.helpers.get_accelerator_choices_types_indices() - memory_partition_choices_str = ", ".join(self.helpers.get_memory_partition_types()) - set_compute_partition_help = f"Set one of the following the accelerator type or profile index:\n\t{accelerator_set_choices}.\n\tUse `sudo amd-smi partition --accelerator` to find acceptable values." - set_memory_partition_help = f"Set one of the following the memory partition modes:\n\t{memory_partition_choices_str}" - power_cap_min, power_cap_max = self.helpers.get_power_caps() - power_cap_max = self.helpers.convert_SI_unit(power_cap_max, AMDSMIHelpers.SI_Unit.MICRO) - power_cap_min = self.helpers.convert_SI_unit(power_cap_min, AMDSMIHelpers.SI_Unit.MICRO) - set_power_cap_help = f"Set power capacity limit:\n\tmin cap: {power_cap_min} W, max cap: {power_cap_max} W" - soc_pstate_help_info = ", ".join(self.helpers.get_soc_pstates()) - set_soc_pstate_help = f"Set the GPU soc pstate policy using policy id, an integer. Valid id's include:\n\t{soc_pstate_help_info}" - xgmi_plpd_help_info = ", ".join(self.helpers.get_xgmi_plpd_policies()) - set_xgmi_plpd_help = f"Set the GPU XGMI per-link power down policy using policy id, an integer. Valid id's include:\n\t{xgmi_plpd_help_info}" - set_clk_limit_help = "Sets the sclk (aka gfxclk) or mclk minimum and maximum frequencies. \n\tex: amd-smi set -L (sclk | mclk) (min | max) value" - set_clock_freq_help = "Set a number of sclk (aka gfxclk), mclk, fclk, pcie, or socclk frequency performance levels.\n\tUse `amd-smi static --clock` to find acceptable levels." - set_process_isolation_help = "Enable or disable the GPU process isolation on a per partition basis: 0 for disable and 1 for enable.\n" + if self.helpers.is_amdgpu_initialized(): + if self.helpers.is_baremetal(): + set_fan_help = "Set GPU fan speed (0-255 or 0-100%%)" + perf_level_help_choices_str = ", ".join(self.helpers.get_perf_levels()[0][0:-1]) + set_perf_level_help = f"Set one of the following performance levels:\n\t{perf_level_help_choices_str}" + power_profile_choices_str = ", ".join(self.helpers.get_power_profiles()[0:-1]) + set_profile_help = f"Set power profile level (#) or choose one of available profiles:\n\t{power_profile_choices_str}" + perf_det_choices_str = ", ".join(self.helpers.get_perf_det_levels()) + set_perf_det_help = f"Set performance determinism and select one of the corresponding performance levels:\n\t{perf_det_choices_str}" + (accelerator_set_choices, _) = self.helpers.get_accelerator_choices_types_indices() + memory_partition_choices_str = ", ".join(self.helpers.get_memory_partition_types()) + set_compute_partition_help = f"Set one of the following the accelerator type or profile index:\n\t{accelerator_set_choices}.\n\tUse `sudo amd-smi partition --accelerator` to find acceptable values." + set_memory_partition_help = f"Set one of the following the memory partition modes:\n\t{memory_partition_choices_str}" + power_cap_min, power_cap_max = self.helpers.get_power_caps() + power_cap_max = self.helpers.convert_SI_unit(power_cap_max, AMDSMIHelpers.SI_Unit.MICRO) + power_cap_min = self.helpers.convert_SI_unit(power_cap_min, AMDSMIHelpers.SI_Unit.MICRO) + set_power_cap_help = f"Set power capacity limit:\n\tmin cap: {power_cap_min} W, max cap: {power_cap_max} W" + soc_pstate_help_info = ", ".join(self.helpers.get_soc_pstates()) + set_soc_pstate_help = f"Set the GPU soc pstate policy using policy id, an integer. Valid id's include:\n\t{soc_pstate_help_info}" + xgmi_plpd_help_info = ", ".join(self.helpers.get_xgmi_plpd_policies()) + set_xgmi_plpd_help = f"Set the GPU XGMI per-link power down policy using policy id, an integer. Valid id's include:\n\t{xgmi_plpd_help_info}" + set_clk_limit_help = "Sets the sclk (aka gfxclk) or mclk minimum and maximum frequencies. \n\tex: amd-smi set -L (sclk | mclk) (min | max) value" + set_clock_freq_help = "Set a number of sclk (aka gfxclk), mclk, fclk, pcie, or socclk frequency performance levels.\n\tUse `amd-smi static --clock` to find acceptable levels." + set_process_isolation_help = "Enable or disable the GPU process isolation on a per partition basis: 0 for disable and 1 for enable.\n" # Help text for CPU set options set_cpu_pwr_limit_help = "Set power limit for the given socket. Input parameter is power limit value." @@ -1150,9 +1152,8 @@ class AMDSMIParser(argparse.ArgumentParser): set_value_exclusive_group.add_argument('-p', '--soc-pstate', action='store', required=False, type=lambda value: self._not_negative_int(value, '--soc-pstate'), help=set_soc_pstate_help, metavar='POLICY_ID') set_value_exclusive_group.add_argument('-x', '--xgmi-plpd', action='store', required=False, type=lambda value: self._not_negative_int(value, '--xgmi-plpd'), help=set_xgmi_plpd_help, metavar='POLICY_ID') set_value_exclusive_group.add_argument('-c', '--clk-level', action=self._level_select(), nargs='+', required=False, help=set_clock_freq_help, metavar=('CLK_TYPE', 'PERF_LEVELS')) - - set_value_exclusive_group.add_argument('-L', '--clk-limit', action=self._limit_select(), nargs=3, required=False, help=set_clk_limit_help, metavar=('CLK_TYPE', 'LIM_TYPE', 'VALUE')) - set_value_exclusive_group.add_argument('-R', '--process-isolation', action='store', choices=[0,1], type=lambda value: self._not_negative_int(value, '--process-isolation'), required=False, help=set_process_isolation_help, metavar='STATUS') + set_value_exclusive_group.add_argument('-L', '--clk-limit', action=self._limit_select(), nargs=3, required=False, help=set_clk_limit_help, metavar=('CLK_TYPE', 'LIM_TYPE', 'VALUE')) + set_value_exclusive_group.add_argument('-R', '--process-isolation', action='store', choices=[0,1], type=lambda value: self._not_negative_int(value, '--process-isolation'), required=False, help=set_process_isolation_help, metavar='STATUS') if self.helpers.is_amd_hsmp_initialized():