From e5d1ba4621cf4e5ed4e5cc1966a083c77cb0e820 Mon Sep 17 00:00:00 2001 From: Maisam Arif Date: Thu, 23 May 2024 10:31:37 -0500 Subject: [PATCH] Use different sysfs for soc_pstate and xmgi_plpd The sysfs is changed to use the pm_policy folder with multiple dpm_policy files. Change-Id: I40fac8de2d0cb127950d238b8196f6d2416778d0 --- amdsmi_cli/README.md | 96 +++++++++++++++++++-- amdsmi_cli/amdsmi_commands.py | 64 +++++++------- amdsmi_cli/amdsmi_parser.py | 8 +- docs/how-to/using-AMD-SMI-CLI-tool.md | 8 +- docs/how-to/using-amdsmi-for-python.md | 12 +-- example/amd_smi_nodrm_example.cc | 4 +- include/amd_smi/amdsmi.h | 20 ++--- py-interface/README.md | 12 +-- py-interface/__init__.py | 2 +- py-interface/amdsmi_interface.py | 8 +- py-interface/amdsmi_wrapper.py | 18 ++-- rocm_smi/include/rocm_smi/rocm_smi.h | 6 +- rocm_smi/include/rocm_smi/rocm_smi_device.h | 3 +- rocm_smi/src/rocm_smi.cc | 84 +++++++----------- rocm_smi/src/rocm_smi_device.cc | 23 +++-- src/amd_smi/amd_smi.cc | 8 +- 16 files changed, 219 insertions(+), 157 deletions(-) diff --git a/amdsmi_cli/README.md b/amdsmi_cli/README.md index 354b06a54a..ef7036a74d 100644 --- a/amdsmi_cli/README.md +++ b/amdsmi_cli/README.md @@ -774,8 +774,28 @@ GPU: 0 PARTITION: COMPUTE_PARTITION: SPX MEMORY_PARTITION: NPS1 - DPM_POLICY: N/A - XGMI_PLPD: N/A + SOC_PSTATE: + NUM_SUPPORTED: 4 + CURRENT_ID: 1 + POLICIES: + POLICY_ID: 0 + POLICY_DESCRIPTION: pstate_default + POLICY_ID: 1 + POLICY_DESCRIPTION: soc_pstate_0 + POLICY_ID: 2 + POLICY_DESCRIPTION: soc_pstate_1 + POLICY_ID: 3 + POLICY_DESCRIPTION: soc_pstate_2 + XGMI_PLPD: + NUM_SUPPORTED: 3 + CURRENT_ID: 1 + PLPDS: + POLICY_ID: 0 + POLICY_DESCRIPTION: plpd_disallow + POLICY_ID: 1 + POLICY_DESCRIPTION: plpd_default + POLICY_ID: 2 + POLICY_DESCRIPTION: plpd_optimized PROCESS_ISOLATION: N/A NUMA: NODE: 0 @@ -879,8 +899,28 @@ GPU: 1 PARTITION: COMPUTE_PARTITION: SPX MEMORY_PARTITION: NPS1 - DPM_POLICY: N/A - XGMI_PLPD: N/A + SOC_PSTATE: + NUM_SUPPORTED: 4 + CURRENT_ID: 1 + POLICIES: + POLICY_ID: 0 + POLICY_DESCRIPTION: pstate_default + POLICY_ID: 1 + POLICY_DESCRIPTION: soc_pstate_0 + POLICY_ID: 2 + POLICY_DESCRIPTION: soc_pstate_1 + POLICY_ID: 3 + POLICY_DESCRIPTION: soc_pstate_2 + XGMI_PLPD: + NUM_SUPPORTED: 3 + CURRENT_ID: 1 + PLPDS: + POLICY_ID: 0 + POLICY_DESCRIPTION: plpd_disallow + POLICY_ID: 1 + POLICY_DESCRIPTION: plpd_default + POLICY_ID: 2 + POLICY_DESCRIPTION: plpd_optimized PROCESS_ISOLATION: N/A NUMA: NODE: 1 @@ -984,8 +1024,28 @@ GPU: 2 PARTITION: COMPUTE_PARTITION: SPX MEMORY_PARTITION: NPS1 - DPM_POLICY: N/A - XGMI_PLPD: N/A + SOC_PSTATE: + NUM_SUPPORTED: 4 + CURRENT_ID: 1 + POLICIES: + POLICY_ID: 0 + POLICY_DESCRIPTION: pstate_default + POLICY_ID: 1 + POLICY_DESCRIPTION: soc_pstate_0 + POLICY_ID: 2 + POLICY_DESCRIPTION: soc_pstate_1 + POLICY_ID: 3 + POLICY_DESCRIPTION: soc_pstate_2 + XGMI_PLPD: + NUM_SUPPORTED: 3 + CURRENT_ID: 1 + PLPDS: + POLICY_ID: 0 + POLICY_DESCRIPTION: plpd_disallow + POLICY_ID: 1 + POLICY_DESCRIPTION: plpd_default + POLICY_ID: 2 + POLICY_DESCRIPTION: plpd_optimized PROCESS_ISOLATION: N/A NUMA: NODE: 2 @@ -1089,8 +1149,28 @@ GPU: 3 PARTITION: COMPUTE_PARTITION: SPX MEMORY_PARTITION: NPS1 - DPM_POLICY: N/A - XGMI_PLPD: N/A + SOC_PSTATE: + NUM_SUPPORTED: 4 + CURRENT_ID: 1 + POLICIES: + POLICY_ID: 0 + POLICY_DESCRIPTION: pstate_default + POLICY_ID: 1 + POLICY_DESCRIPTION: soc_pstate_0 + POLICY_ID: 2 + POLICY_DESCRIPTION: soc_pstate_1 + POLICY_ID: 3 + POLICY_DESCRIPTION: soc_pstate_2 + XGMI_PLPD: + NUM_SUPPORTED: 3 + CURRENT_ID: 1 + PLPDS: + POLICY_ID: 0 + POLICY_DESCRIPTION: plpd_disallow + POLICY_ID: 1 + POLICY_DESCRIPTION: plpd_default + POLICY_ID: 2 + POLICY_DESCRIPTION: plpd_optimized PROCESS_ISOLATION: N/A NUMA: NODE: 3 diff --git a/amdsmi_cli/amdsmi_commands.py b/amdsmi_cli/amdsmi_commands.py index ba2bf0755c..3aac8f4f6e 100644 --- a/amdsmi_cli/amdsmi_commands.py +++ b/amdsmi_cli/amdsmi_commands.py @@ -245,7 +245,7 @@ class AMDSMICommands(): def static_gpu(self, args, multiple_devices=False, gpu=None, asic=None, bus=None, vbios=None, limit=None, driver=None, ras=None, board=None, numa=None, vram=None, cache=None, partition=None, dfc_ucode=None, fb_info=None, num_vf=None, - policy=None, xgmi_plpd=None, process_isolation=None): + soc_pstate=None, xgmi_plpd=None, process_isolation=None): """Get Static information for target gpu Args: @@ -268,7 +268,7 @@ class AMDSMICommands(): dfc_ucode (bool, optional): Value override for args.dfc_ucode. Defaults to None. fb_info (bool, optional): Value override for args.fb_info. Defaults to None. num_vf (bool, optional): Value override for args.num_vf. Defaults to None. - policy (bool, optional): Value override for args.policy. Defaults to None. + soc_pstate (bool, optional): Value override for args.soc_pstate. Defaults to None. xgmi_plpd (bool, optional): Value override for args.xgmi_plpd. Defaults to None. process_isolation (bool, optional): Value override for args.process_isolation. Defaults to None. Returns: @@ -307,13 +307,12 @@ class AMDSMICommands(): args.partition = partition if limit: args.limit = limit - if policy: - args.policy = policy + if soc_pstate: + args.soc_pstate = soc_pstate if xgmi_plpd: args.xgmi_plpd = xgmi_plpd - - current_platform_args += ["ras", "limit", "partition", "policy", "xgmi_plpd"] - current_platform_values += [args.ras, args.limit, args.partition, args.policy, args.xgmi_plpd] + current_platform_args += ["ras", "limit", "partition", "soc_pstate", "xgmi_plpd"] + current_platform_values += [args.ras, args.limit, args.partition, args.soc_pstate, args.xgmi_plpd] if self.helpers.is_linux() and not self.helpers.is_virtual_os(): if numa: @@ -638,15 +637,15 @@ class AMDSMICommands(): static_dict['partition'] = {"compute_partition": compute_partition, "memory_partition": memory_partition} - if 'policy' in current_platform_args: - if args.policy: + if 'soc_pstate' in current_platform_args: + if args.soc_pstate: try: - policy_info = amdsmi_interface.amdsmi_get_dpm_policy(args.gpu) + policy_info = amdsmi_interface.amdsmi_get_soc_pstate(args.gpu) except amdsmi_exception.AmdSmiLibraryException as e: policy_info = "N/A" - logging.debug("Failed to get policy info for gpu %s | %s", gpu_id, e.get_error_info()) + logging.debug("Failed to get soc pstate policy info for gpu %s | %s", gpu_id, e.get_error_info()) - static_dict['dpm_policy'] = policy_info + static_dict['soc_pstate'] = policy_info if 'xgmi_plpd' in current_platform_args: if args.xgmi_plpd: try: @@ -802,7 +801,7 @@ class AMDSMICommands(): bus=None, vbios=None, limit=None, driver=None, ras=None, board=None, numa=None, vram=None, cache=None, partition=None, dfc_ucode=None, fb_info=None, num_vf=None, cpu=None, - interface_ver=None, policy=None, xgmi_plpd = None, process_isolation=None): + interface_ver=None, soc_pstate=None, xgmi_plpd = None, process_isolation=None): """Get Static information for target gpu and cpu Args: @@ -825,7 +824,7 @@ class AMDSMICommands(): num_vf (bool, optional): Value override for args.num_vf. Defaults to None. cpu (cpu_handle, optional): cpu_handle for target device. Defaults to None. interface_ver (bool, optional): Value override for args.interface_ver. Defaults to None - policy (bool, optional): Value override for args.policy. Defaults to None. + soc_pstate (bool, optional): Value override for args.soc_pstate. Defaults to None. xgmi_plpd (bool, optional): Value override for args.xgmi_plpd. Defaults to None. process_isolation (bool, optional): Value override for args.process_isolation. Defaults to None. Raises: @@ -853,7 +852,7 @@ class AMDSMICommands(): gpu_args_enabled = False gpu_attributes = ["asic", "bus", "vbios", "limit", "driver", "ras", "board", "numa", "vram", "cache", "partition", - "dfc_ucode", "fb_info", "num_vf", "policy", "xgmi_plpd", + "dfc_ucode", "fb_info", "num_vf", "soc_pstate", "xgmi_plpd", "process_isolation"] for attr in gpu_attributes: if hasattr(args, attr): @@ -884,7 +883,7 @@ class AMDSMICommands(): self.static_gpu(args, multiple_devices, gpu, asic, bus, vbios, limit, driver, ras, board, numa, vram, cache, partition, - dfc_ucode, fb_info, num_vf, policy, + dfc_ucode, fb_info, num_vf, soc_pstate, process_isolation) elif self.helpers.is_amd_hsmp_initialized(): # Only CPU is initialized if args.cpu == None: @@ -899,7 +898,7 @@ class AMDSMICommands(): self.static_gpu(args, multiple_devices, gpu, asic, bus, vbios, limit, driver, ras, board, numa, vram, cache, partition, - dfc_ucode, fb_info, num_vf, policy, xgmi_plpd, + dfc_ucode, fb_info, num_vf, soc_pstate, xgmi_plpd, process_isolation) @@ -3387,7 +3386,7 @@ class AMDSMICommands(): def set_gpu(self, args, multiple_devices=False, gpu=None, fan=None, perf_level=None, profile=None, perf_determinism=None, compute_partition=None, - memory_partition=None, power_cap=None, dpm_policy=None, xgmi_plpd = None, + memory_partition=None, power_cap=None, soc_pstate=None, xgmi_plpd = None, process_isolation=None): """Issue reset commands to target gpu(s) @@ -3402,7 +3401,7 @@ class AMDSMICommands(): compute_partition (amdsmi_interface.AmdSmiComputePartitionType, optional): Value override for args.compute_partition. Defaults to None. memory_partition (amdsmi_interface.AmdSmiMemoryPartitionType, optional): Value override for args.memory_partition. Defaults to None. power_cap (int, optional): Value override for args.power_cap. Defaults to None. - dpm_policy (int, optional): Value override for args.dpm_policy. Defaults to None. + soc_pstate (int, optional): Value override for args.soc_pstate. Defaults to None. xgmi_plpd (int, optional): Value override for args.xgmi_plpd. Defaults to None. process_isolation (int, optional): Value override for args.process_isolation. Defaults to None. Raises: @@ -3429,8 +3428,8 @@ class AMDSMICommands(): args.memory_partition = memory_partition if power_cap: args.power_cap = power_cap - if dpm_policy: - args.dpm_policy = dpm_policy + if soc_pstate: + args.soc_pstate = soc_pstate if xgmi_plpd: args.xgmi_plpd = xgmi_plpd if process_isolation: @@ -3455,7 +3454,7 @@ class AMDSMICommands(): args.memory_partition, args.perf_determinism is not None, args.power_cap is not None, - args.dpm_policy is not None, + args.soc_pstate is not None, args.xgmi_plpd is not None, args.process_isolation is not None]): command = " ".join(sys.argv[1:]) @@ -3551,14 +3550,14 @@ class AMDSMICommands(): if min_power_cap == 0: min_power_cap = 1 self.logger.store_output(args.gpu, 'powercap', f"Power cap must be between {min_power_cap} and {max_power_cap}") - if isinstance(args.dpm_policy, int): + if isinstance(args.soc_pstate, int): try: - amdsmi_interface.amdsmi_set_dpm_policy(args.gpu, args.dpm_policy) + amdsmi_interface.amdsmi_set_soc_pstate(args.gpu, args.soc_pstate) except amdsmi_exception.AmdSmiLibraryException as e: if e.get_error_code() == amdsmi_interface.amdsmi_wrapper.AMDSMI_STATUS_NO_PERM: raise PermissionError('Command requires elevation') from e - raise ValueError(f"Unable to set dpm policy to {args.dpm_policy} on {gpu_string}") from e - self.logger.store_output(args.gpu, 'dpmpolicy', f"Successfully set dpm policy to id {args.dpm_policy}") + raise ValueError(f"Unable to set dpm soc pstate policy to {args.soc_pstate} on {gpu_string}") from e + self.logger.store_output(args.gpu, 'socpstate', f"Successfully soc pstate dpm policy to id {args.soc_pstate}") if isinstance(args.xgmi_plpd, int): try: amdsmi_interface.amdsmi_set_xgmi_plpd(args.gpu, args.xgmi_plpd) @@ -3566,7 +3565,7 @@ class AMDSMICommands(): if e.get_error_code() == amdsmi_interface.amdsmi_wrapper.AMDSMI_STATUS_NO_PERM: raise PermissionError('Command requires elevation') from e raise ValueError(f"Unable to set XGMI policy to {args.xgmi_plpd} on {gpu_string}") from e - self.logger.store_output(args.gpu, 'xgmiplpd', f"Successfully set per-link power down policy to id {args.dpm_policy}") + self.logger.store_output(args.gpu, 'xgmiplpd', f"Successfully set per-link power down policy to id {args.xgmi_plpd}") if isinstance(args.process_isolation, int): status_string = "Enabled" if args.process_isolation else "Disabled" result = f"Requested process isolation to {status_string}" # This should not print out @@ -3597,7 +3596,7 @@ class AMDSMICommands(): cpu=None, cpu_pwr_limit=None, cpu_xgmi_link_width=None, cpu_lclk_dpm_level=None, cpu_pwr_eff_mode=None, cpu_gmi3_link_width=None, cpu_pcie_link_rate=None, cpu_df_pstate_range=None, cpu_enable_apb=None, cpu_disable_apb=None, - soc_boost_limit=None, core=None, core_boost_limit=None, dpm_policy=None, xgmi_plpd=None, + soc_boost_limit=None, core=None, core_boost_limit=None, soc_pstate=None, xgmi_plpd=None, process_isolation=None): """Issue reset commands to target gpu(s) @@ -3627,7 +3626,7 @@ class AMDSMICommands(): core (device_handle, optional): device_handle for target core. Defaults to None. core_boost_limit (int, optional): Value override for args.core_boost_limit. Defaults to None - dpm_policy (int, optional): Value override for args.dpm_policy. Defaults to None. + soc_pstate (int, optional): Value override for args.soc_pstate. Defaults to None. xgmi_plpd (int, optional): Value override for args.xgmi_plpd. Defaults to None. process_isolation (int, optional): Value override for args.process_isolation. Defaults to None. Raises: @@ -3649,7 +3648,8 @@ class AMDSMICommands(): # Check if a GPU argument has been set gpu_args_enabled = False gpu_attributes = ["fan", "perf_level", "profile", "perf_determinism", "compute_partition", - "memory_partition", "power_cap", "dpm_policy", "xgmi_plpd", "process_isolation"] + "memory_partition", "power_cap", "soc_pstate", "xgmi_plpd", "process_isolation", + ] for attr in gpu_attributes: if hasattr(args, attr): if getattr(args, attr) is not None: @@ -3704,7 +3704,7 @@ class AMDSMICommands(): self.logger.clear_multiple_devices_ouput() self.set_gpu(args, multiple_devices, gpu, fan, perf_level, profile, perf_determinism, compute_partition, - memory_partition, power_cap, dpm_policy, xgmi_plpd, + memory_partition, power_cap, soc_pstate, xgmi_plpd, process_isolation) elif self.helpers.is_amd_hsmp_initialized(): # Only CPU is initialized if args.cpu == None and args.core == None: @@ -3724,7 +3724,7 @@ class AMDSMICommands(): self.logger.clear_multiple_devices_ouput() self.set_gpu(args, multiple_devices, gpu, fan, perf_level, profile, perf_determinism, compute_partition, - memory_partition, power_cap, dpm_policy, xgmi_plpd, + memory_partition, power_cap, soc_pstate, xgmi_plpd, process_isolation) diff --git a/amdsmi_cli/amdsmi_parser.py b/amdsmi_cli/amdsmi_parser.py index 2ea1038700..b29a5bbb15 100644 --- a/amdsmi_cli/amdsmi_parser.py +++ b/amdsmi_cli/amdsmi_parser.py @@ -543,7 +543,7 @@ class AMDSMIParser(argparse.ArgumentParser): vram_help = "All vram information" cache_help = "All cache information" board_help = "All board information" - dpm_policy_help = "The available DPM policy" + soc_pstate_help = "The available soc pstate policy" xgmi_plpd_help = "The available XGMI per-link power down policy" process_isolation_help = "The process isolation status" @@ -586,7 +586,7 @@ class AMDSMIParser(argparse.ArgumentParser): static_parser.add_argument('-r', '--ras', action='store_true', required=False, help=ras_help) static_parser.add_argument('-p', '--partition', action='store_true', required=False, help=partition_help) static_parser.add_argument('-l', '--limit', action='store_true', required=False, help=limit_help) - static_parser.add_argument('-P', '--policy', action='store_true', required=False, help=dpm_policy_help) + static_parser.add_argument('-P', '--soc-pstate', action='store_true', required=False, help=soc_pstate_help) static_parser.add_argument('-x', '--xgmi-plpd', action='store_true', required=False, help=xgmi_plpd_help) if self.helpers.is_linux() and not self.helpers.is_virtual_os(): @@ -969,7 +969,7 @@ class AMDSMIParser(argparse.ArgumentParser): set_compute_partition_help = f"Set one of the following the compute partition modes:\n\t{compute_partition_choices_str}" set_memory_partition_help = f"Set one of the following the memory partition modes:\n\t{memory_partition_choices_str}" set_power_cap_help = "Set power capacity limit" - set_dpm_policy_help = "Set the GPU DPM policy using policy id\n" + set_soc_pstate_help = "Set the GPU soc pstate policy using policy id\n" set_xgmi_plpd_help = "Set the GPU XGMI per-link power down policy using policy id\n" set_process_isolation_help = "Enable or disable the GPU process isolation: 0 for disable and 1 for enable.\n" @@ -1008,7 +1008,7 @@ class AMDSMIParser(argparse.ArgumentParser): set_value_parser.add_argument('-C', '--compute-partition', action='store', choices=self.helpers.get_compute_partition_types(), type=str.upper, required=False, help=set_compute_partition_help, metavar='PARTITION') set_value_parser.add_argument('-M', '--memory-partition', action='store', choices=self.helpers.get_memory_partition_types(), type=str.upper, required=False, help=set_memory_partition_help, metavar='PARTITION') set_value_parser.add_argument('-o', '--power-cap', action='store', type=self._positive_int, required=False, help=set_power_cap_help, metavar='WATTS') - set_value_parser.add_argument('-p', '--dpm-policy', action='store', required=False, type=self._not_negative_int, help=set_dpm_policy_help, metavar='POLICY_ID') + set_value_parser.add_argument('-p', '--soc-pstate', action='store', required=False, type=self._not_negative_int, help=set_soc_pstate_help, metavar='POLICY_ID') set_value_parser.add_argument('-x', '--xgmi-plpd', action='store', required=False, type=self._not_negative_int, help=set_xgmi_plpd_help, metavar='POLICY_ID') set_value_parser.add_argument('-R', '--process-isolation', action='store', choices=[0,1], type=self._not_negative_int, required=False, help=set_process_isolation_help, metavar='STATUS') diff --git a/docs/how-to/using-AMD-SMI-CLI-tool.md b/docs/how-to/using-AMD-SMI-CLI-tool.md index 1455ec380d..e4f2db0fc9 100644 --- a/docs/how-to/using-AMD-SMI-CLI-tool.md +++ b/docs/how-to/using-AMD-SMI-CLI-tool.md @@ -607,7 +607,7 @@ GPU: 0 PARTITION: COMPUTE_PARTITION: SPX MEMORY_PARTITION: NPS1 - DPM_POLICY: + SOC_PSTATE: NUM_SUPPORTED: 4 CURRENT_ID: 1 POLICIES: @@ -725,7 +725,7 @@ GPU: 1 PARTITION: COMPUTE_PARTITION: SPX MEMORY_PARTITION: NPS1 - DPM_POLICY: + SOC_PSTATE: NUM_SUPPORTED: 4 CURRENT_ID: 1 POLICIES: @@ -843,7 +843,7 @@ GPU: 2 PARTITION: COMPUTE_PARTITION: SPX MEMORY_PARTITION: NPS1 - DPM_POLICY: + SOC_PSTATE: NUM_SUPPORTED: 4 CURRENT_ID: 1 POLICIES: @@ -961,7 +961,7 @@ GPU: 3 PARTITION: COMPUTE_PARTITION: SPX MEMORY_PARTITION: NPS1 - DPM_POLICY: + SOC_PSTATE: NUM_SUPPORTED: 4 CURRENT_ID: 1 POLICIES: diff --git a/docs/how-to/using-amdsmi-for-python.md b/docs/how-to/using-amdsmi-for-python.md index 3de73eb354..d6c0172595 100644 --- a/docs/how-to/using-amdsmi-for-python.md +++ b/docs/how-to/using-amdsmi-for-python.md @@ -2705,7 +2705,7 @@ except AmdSmiException as e: print(e) ``` -### amdsmi_get_dpm_policy +### amdsmi_get_soc_pstate Description: Get dpm policy information. @@ -2722,7 +2722,7 @@ Field | Description `current_id` | current policy id `policies` | list of dictionaries containing possible policies -Exceptions that can be thrown by `amdsmi_get_dpm_policy` function: +Exceptions that can be thrown by `amdsmi_get_soc_pstate` function: * `AmdSmiLibraryException` * `AmdSmiRetryException` @@ -2737,13 +2737,13 @@ try: print("No GPUs on machine") else: for device in devices: - dpm_policies = amdsmi_get_dpm_policy(device) + dpm_policies = amdsmi_get_soc_pstate(device) print(dpm_policies) except AmdSmiException as e: print(e) ``` -### amdsmi_set_dpm_policy +### amdsmi_set_soc_pstate Description: Set the dpm policy to corresponding policy_id. Typically following: 0(default),1,2,3 @@ -2754,7 +2754,7 @@ Input parameters: Output: None -Exceptions that can be thrown by `amdsmi_set_dpm_policy` function: +Exceptions that can be thrown by `amdsmi_set_soc_pstate` function: * `AmdSmiLibraryException` * `AmdSmiRetryException` @@ -2769,7 +2769,7 @@ try: print("No GPUs on machine") else: for device in devices: - amdsmi_set_dpm_policy(device, 0) + amdsmi_set_soc_pstate(device, 0) except AmdSmiException as e: print(e) ``` diff --git a/example/amd_smi_nodrm_example.cc b/example/amd_smi_nodrm_example.cc index aaccb075a3..37f5b9645b 100644 --- a/example/amd_smi_nodrm_example.cc +++ b/example/amd_smi_nodrm_example.cc @@ -333,10 +333,10 @@ int main() { << "W\n\n"; amdsmi_dpm_policy_t policy; - ret = amdsmi_get_dpm_policy(processor_handles[j], &policy); + ret = amdsmi_get_soc_pstate(processor_handles[j], &policy); if (ret != AMDSMI_STATUS_NOT_SUPPORTED) { CHK_AMDSMI_RET(ret) - std::cout << "\t amdsmi_get_dpm_policy total:" << policy.num_supported + std::cout << "\t amdsmi_get_soc_pstate total:" << policy.num_supported <<" current:" << policy.current << "\n"; for (int x=0; x < policy.num_supported; x++) { std::cout << x <<": (" << policy.policies[x].policy_id diff --git a/include/amd_smi/amdsmi.h b/include/amd_smi/amdsmi.h index 6dd9e3fe5f..346795289b 100644 --- a/include/amd_smi/amdsmi.h +++ b/include/amd_smi/amdsmi.h @@ -3384,45 +3384,45 @@ amdsmi_status_t amdsmi_set_clk_freq(amdsmi_processor_handle processor_handle, amdsmi_clk_type_t clk_type, uint64_t freq_bitmask); /** - * @brief Get the dpm policy for the processor + * @brief Get the soc pstate policy for the processor * * @platform{gpu_bm_linux} @platform{guest_1vf} * * @details Given a processor handle @p processor_handle, this function will write - * current dpm policy settings to @p policy. All the processors at the same socket + * current soc pstate policy settings to @p policy. All the processors at the same socket * will have the same policy. * * @param[in] processor_handle a processor handle * - * @param[in, out] policy the dpm policy for this processor. + * @param[in, out] policy the soc pstate policy for this processor. * If this parameter is nullptr, this function will return * ::AMDSMI_STATUS_INVAL * * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail */ -amdsmi_status_t amdsmi_get_dpm_policy(amdsmi_processor_handle processor_handle, +amdsmi_status_t amdsmi_get_soc_pstate(amdsmi_processor_handle processor_handle, amdsmi_dpm_policy_t* policy); /** - * @brief Set the dpm policy for the processor + * @brief Set the soc pstate policy for the processor * * @platform{gpu_bm_linux} @platform{guest_1vf} * - * @details Given a processor handle @p processor_handle and a dpm policy @p policy_id, - * this function will set the dpm policy for this processor. All the processors at + * @details Given a processor handle @p processor_handle and a soc pstate policy @p policy_id, + * this function will set the soc pstate policy for this processor. All the processors at * the same socket will be set to the same policy. * * @note This function requires root access * * @param[in] processor_handle a processor handle * - * @param[in] policy_id the dpm policy id to set. The id is the id in + * @param[in] policy_id the soc pstate policy id to set. The id is the id in * amdsmi_dpm_policy_entry_t, which can be obtained by calling - * amdsmi_get_dpm_policy() + * amdsmi_get_soc_pstate() * * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail */ -amdsmi_status_t amdsmi_set_dpm_policy(amdsmi_processor_handle processor_handle, +amdsmi_status_t amdsmi_set_soc_pstate(amdsmi_processor_handle processor_handle, uint32_t policy_id); /** diff --git a/py-interface/README.md b/py-interface/README.md index ecbf3cef3d..286840db59 100644 --- a/py-interface/README.md +++ b/py-interface/README.md @@ -2747,7 +2747,7 @@ except AmdSmiException as e: print(e) ``` -### amdsmi_get_dpm_policy +### amdsmi_get_soc_pstate Description: Get dpm policy information. @@ -2764,7 +2764,7 @@ Field | Description `current_id` | current policy id `policies` | list of dictionaries containing possible policies -Exceptions that can be thrown by `amdsmi_get_dpm_policy` function: +Exceptions that can be thrown by `amdsmi_get_soc_pstate` function: * `AmdSmiLibraryException` * `AmdSmiRetryException` @@ -2779,13 +2779,13 @@ try: print("No GPUs on machine") else: for device in devices: - dpm_policies = amdsmi_get_dpm_policy(device) + dpm_policies = amdsmi_get_soc_pstate(device) print(dpm_policies) except AmdSmiException as e: print(e) ``` -### amdsmi_set_dpm_policy +### amdsmi_set_soc_pstate Description: Set the dpm policy to corresponding policy_id. Typically following: 0(default),1,2,3 @@ -2796,7 +2796,7 @@ Input parameters: Output: None -Exceptions that can be thrown by `amdsmi_set_dpm_policy` function: +Exceptions that can be thrown by `amdsmi_set_soc_pstate` function: * `AmdSmiLibraryException` * `AmdSmiRetryException` @@ -2811,7 +2811,7 @@ try: print("No GPUs on machine") else: for device in devices: - amdsmi_set_dpm_policy(device, 0) + amdsmi_set_soc_pstate(device, 0) except AmdSmiException as e: print(e) ``` diff --git a/py-interface/__init__.py b/py-interface/__init__.py index 759c147980..0d642993c1 100644 --- a/py-interface/__init__.py +++ b/py-interface/__init__.py @@ -134,7 +134,7 @@ from .amdsmi_interface import amdsmi_set_gpu_fan_speed from .amdsmi_interface import amdsmi_reset_gpu_fan from .amdsmi_interface import amdsmi_set_clk_freq from .amdsmi_interface import amdsmi_set_gpu_overdrive_level -from .amdsmi_interface import amdsmi_set_dpm_policy +from .amdsmi_interface import amdsmi_set_soc_pstate from .amdsmi_interface import amdsmi_set_xgmi_plpd from .amdsmi_interface import amdsmi_set_gpu_clear_sram_data from .amdsmi_interface import amdsmi_set_gpu_process_isolation diff --git a/py-interface/amdsmi_interface.py b/py-interface/amdsmi_interface.py index b10bfa0ecf..f025956313 100644 --- a/py-interface/amdsmi_interface.py +++ b/py-interface/amdsmi_interface.py @@ -2786,7 +2786,7 @@ def amdsmi_set_clk_freq( ) -def amdsmi_set_dpm_policy( +def amdsmi_set_soc_pstate( processor_handle: amdsmi_wrapper.amdsmi_processor_handle, policy_id: int, ): @@ -2795,7 +2795,7 @@ def amdsmi_set_dpm_policy( processor_handle, amdsmi_wrapper.amdsmi_processor_handle ) _check_res( - amdsmi_wrapper.amdsmi_set_dpm_policy( + amdsmi_wrapper.amdsmi_set_soc_pstate( processor_handle, policy_id ) ) @@ -3405,7 +3405,7 @@ def amdsmi_get_clk_freq( } -def amdsmi_get_dpm_policy( +def amdsmi_get_soc_pstate( processor_handle: amdsmi_wrapper.amdsmi_processor_handle, ) -> Dict[str, Any]: if not isinstance(processor_handle, amdsmi_wrapper.amdsmi_processor_handle): @@ -3415,7 +3415,7 @@ def amdsmi_get_dpm_policy( policy = amdsmi_wrapper.amdsmi_dpm_policy_t() _check_res( - amdsmi_wrapper.amdsmi_get_dpm_policy( + amdsmi_wrapper.amdsmi_get_soc_pstate( processor_handle, ctypes.byref(policy) ) ) diff --git a/py-interface/amdsmi_wrapper.py b/py-interface/amdsmi_wrapper.py index 3c41d5a140..a9255ee8b0 100644 --- a/py-interface/amdsmi_wrapper.py +++ b/py-interface/amdsmi_wrapper.py @@ -1519,7 +1519,7 @@ struct_amdsmi_dpm_policy_entry_t._fields_ = [ ('policy_description', ctypes.c_char * 32), ] -amdsmi_dpm_policy_entry_t = struct_amdsmi_dpm_policy_entry_t +struct_amdsmi_dpm_policy_entry_t = struct_amdsmi_dpm_policy_entry_t class struct_amdsmi_dpm_policy_t(Structure): pass @@ -2082,12 +2082,12 @@ amdsmi_set_gpu_overdrive_level.argtypes = [amdsmi_processor_handle, uint32_t] amdsmi_set_clk_freq = _libraries['libamd_smi.so'].amdsmi_set_clk_freq amdsmi_set_clk_freq.restype = amdsmi_status_t amdsmi_set_clk_freq.argtypes = [amdsmi_processor_handle, amdsmi_clk_type_t, uint64_t] -amdsmi_get_dpm_policy = _libraries['libamd_smi.so'].amdsmi_get_dpm_policy -amdsmi_get_dpm_policy.restype = amdsmi_status_t -amdsmi_get_dpm_policy.argtypes = [amdsmi_processor_handle, ctypes.POINTER(struct_amdsmi_dpm_policy_t)] -amdsmi_set_dpm_policy = _libraries['libamd_smi.so'].amdsmi_set_dpm_policy -amdsmi_set_dpm_policy.restype = amdsmi_status_t -amdsmi_set_dpm_policy.argtypes = [amdsmi_processor_handle, uint32_t] +amdsmi_get_soc_pstate = _libraries['libamd_smi.so'].amdsmi_get_soc_pstate +amdsmi_get_soc_pstate.restype = amdsmi_status_t +amdsmi_get_soc_pstate.argtypes = [amdsmi_processor_handle, ctypes.POINTER(struct_amdsmi_dpm_policy_t)] +amdsmi_set_soc_pstate = _libraries['libamd_smi.so'].amdsmi_set_soc_pstate +amdsmi_set_soc_pstate.restype = amdsmi_status_t +amdsmi_set_soc_pstate.argtypes = [amdsmi_processor_handle, uint32_t] amdsmi_get_xgmi_plpd = _libraries['libamd_smi.so'].amdsmi_get_xgmi_plpd amdsmi_get_xgmi_plpd.restype = amdsmi_status_t amdsmi_get_xgmi_plpd.argtypes = [amdsmi_processor_handle, ctypes.POINTER(struct_amdsmi_dpm_policy_t)] @@ -2619,7 +2619,7 @@ __all__ = \ 'amdsmi_get_cpu_socket_power', 'amdsmi_get_cpu_socket_power_cap', 'amdsmi_get_cpu_socket_power_cap_max', 'amdsmi_get_cpu_socket_temperature', 'amdsmi_get_cpucore_handles', - 'amdsmi_get_cpusocket_handles', 'amdsmi_get_dpm_policy', + 'amdsmi_get_cpusocket_handles', 'amdsmi_get_soc_pstate', 'amdsmi_get_energy_count', 'amdsmi_get_esmi_err_msg', 'amdsmi_get_fw_info', 'amdsmi_get_gpu_activity', 'amdsmi_get_gpu_asic_info', 'amdsmi_get_gpu_available_counters', @@ -2703,7 +2703,7 @@ __all__ = \ 'amdsmi_set_cpu_socket_boostlimit', 'amdsmi_set_cpu_socket_lclk_dpm_level', 'amdsmi_set_cpu_socket_power_cap', 'amdsmi_set_cpu_xgmi_width', - 'amdsmi_set_dpm_policy', 'amdsmi_set_gpu_clear_sram_data', + 'amdsmi_set_soc_pstate', 'amdsmi_set_gpu_clear_sram_data', 'amdsmi_set_gpu_clk_range', 'amdsmi_set_gpu_compute_partition', 'amdsmi_set_gpu_event_notification_mask', 'amdsmi_set_gpu_fan_speed', 'amdsmi_set_gpu_memory_partition', diff --git a/rocm_smi/include/rocm_smi/rocm_smi.h b/rocm_smi/include/rocm_smi/rocm_smi.h index 9be5ee1e3b..8b3ec699a3 100755 --- a/rocm_smi/include/rocm_smi/rocm_smi.h +++ b/rocm_smi/include/rocm_smi/rocm_smi.h @@ -3353,7 +3353,7 @@ rsmi_status_t rsmi_dev_gpu_clk_freq_set(uint32_t dv_ind, * * @return ::RSMI_STATUS_SUCCESS is returned upon successful call, non-zero on fail */ -rsmi_status_t rsmi_dev_dpm_policy_get(uint32_t dv_ind, +rsmi_status_t rsmi_dev_soc_pstate_get(uint32_t dv_ind, rsmi_dpm_policy_t* policy); /** @@ -3371,7 +3371,7 @@ rsmi_status_t rsmi_dev_dpm_policy_get(uint32_t dv_ind, * * @return ::RSMI_STATUS_SUCCESS is returned upon successful call, non-zero on fail */ -rsmi_status_t rsmi_dev_dpm_policy_set(uint32_t dv_ind, +rsmi_status_t rsmi_dev_soc_pstate_set(uint32_t dv_ind, uint32_t policy_id); /** @@ -3406,7 +3406,7 @@ rsmi_status_t rsmi_dev_xgmi_plpd_get(uint32_t dv_ind, * @param[in] processor_handle a processor handle * * @param[in] xgmi_plpd_id the xgmi plpd id to set. The id is the id in - * rsmi_dpm_policy_entry_t, which can be obtained by calling + * rsmi_soc_pstate_entry_t, which can be obtained by calling * rsmi_dev_xgmi_plpd_get() * * @return ::RSMI_STATUS_SUCCESS is returned upon successful call, non-zero on fail diff --git a/rocm_smi/include/rocm_smi/rocm_smi_device.h b/rocm_smi/include/rocm_smi/rocm_smi_device.h index 768c736cbc..00b553d207 100755 --- a/rocm_smi/include/rocm_smi/rocm_smi_device.h +++ b/rocm_smi/include/rocm_smi/rocm_smi_device.h @@ -101,6 +101,8 @@ enum DevKFDNodePropTypes { enum DevInfoTypes { kDevPerfLevel, + kDevSocPstate, + kDevXgmiPlpd, kDevProcessIsolation, kDevShaderClean, kDevOverDriveLevel, @@ -175,7 +177,6 @@ enum DevInfoTypes { kDevNumaNode, kDevGpuMetrics, kDevPmMetrics, - kDevDPMPolicy, kDevRegMetrics, kDevGpuReset, kDevAvailableComputePartition, diff --git a/rocm_smi/src/rocm_smi.cc b/rocm_smi/src/rocm_smi.cc index b545fa1973..03dc5abe58 100755 --- a/rocm_smi/src/rocm_smi.cc +++ b/rocm_smi/src/rocm_smi.cc @@ -2142,27 +2142,6 @@ rsmi_status_t rsmi_dev_gpu_clear_sram_data(uint32_t dv_ind, CATCH } -rsmi_status_t -rsmi_dev_dpm_policy_set(uint32_t dv_ind, - uint32_t policy_id) { - rsmi_status_t ret; - - TRY - std::ostringstream ss; - ss << __PRETTY_FUNCTION__ << " | ======= start ======="; - LOG_TRACE(ss); - REQUIRE_ROOT_ACCESS - DEVICE_MUTEX - GET_DEV_FROM_INDX - - std::string value("soc_pstate "); - value += std::to_string(policy_id); - int ret = dev->writeDevInfo(amd::smi::kDevDPMPolicy , value); - return amd::smi::ErrnoToRsmiStatus(ret); - - CATCH -} - rsmi_status_t rsmi_dev_xgmi_plpd_get(uint32_t dv_ind, rsmi_dpm_policy_t* policy) { @@ -2181,7 +2160,7 @@ rsmi_dev_xgmi_plpd_get(uint32_t dv_ind, LOG_TRACE(ss); DEVICE_MUTEX - ret = GetDevValueVec(amd::smi::kDevDPMPolicy, dv_ind, &val_vec); + ret = GetDevValueVec(amd::smi::kDevXgmiPlpd, dv_ind, &val_vec); if (ret == RSMI_STATUS_FILE_ERROR) { ss << __PRETTY_FUNCTION__ << " | ======= end =======" << ", GetDevValueVec() ret was RSMI_STATUS_FILE_ERROR " @@ -2199,21 +2178,14 @@ rsmi_dev_xgmi_plpd_get(uint32_t dv_ind, /* It will reply on the number but no string as it may vary from soc to soc. The current xmgi plpd marked with * - xgmi plpd - 0 : plpd_disallow - 1 : plpd_default - 2 : plpd_optimized* + 0 : plpd_disallow + 1 : plpd_default* + 2 : plpd_optimized */ - bool see_plpd_pstate = false; bool see_current = false; policy->num_supported = 0; for (uint32_t i = 0; i < val_vec.size(); ++i) { auto current_line = amd::smi::trim(val_vec[i]); - if (current_line == "xgmi plpd") { - see_plpd_pstate = true; - continue; - } - if (see_plpd_pstate == false) continue; // Get tokens: : std::vector tokens; @@ -2250,17 +2222,13 @@ rsmi_dev_xgmi_plpd_get(uint32_t dv_ind, policy->num_supported++; } // end for - if (!see_plpd_pstate) { - return RSMI_STATUS_NOT_SUPPORTED; - } - if (!see_current) { ss << __PRETTY_FUNCTION__ << " | ======= end =======" - << ", Unexpected pstat data: cannot find the current plpd policy."; + << ", Unexpected pstat data: cannot find the current xgmi_plpd policy."; LOG_ERROR(ss); return RSMI_STATUS_UNEXPECTED_DATA; } - // Cannot find it + return RSMI_STATUS_SUCCESS; CATCH @@ -2279,16 +2247,15 @@ rsmi_dev_xgmi_plpd_set(uint32_t dv_ind, DEVICE_MUTEX GET_DEV_FROM_INDX - std::string value("xgmi "); - value += std::to_string(plpd_id); - int ret = dev->writeDevInfo(amd::smi::kDevDPMPolicy , value); + std::string value = std::to_string(plpd_id); + int ret = dev->writeDevInfo(amd::smi::kDevXgmiPlpd , value); return amd::smi::ErrnoToRsmiStatus(ret); CATCH } rsmi_status_t -rsmi_dev_dpm_policy_get(uint32_t dv_ind, +rsmi_dev_soc_pstate_get(uint32_t dv_ind, rsmi_dpm_policy_t* policy) { rsmi_status_t ret; std::vector val_vec; @@ -2305,7 +2272,7 @@ rsmi_dev_dpm_policy_get(uint32_t dv_ind, LOG_TRACE(ss); DEVICE_MUTEX - ret = GetDevValueVec(amd::smi::kDevDPMPolicy, dv_ind, &val_vec); + ret = GetDevValueVec(amd::smi::kDevSocPstate, dv_ind, &val_vec); if (ret == RSMI_STATUS_FILE_ERROR) { ss << __PRETTY_FUNCTION__ << " | ======= end =======" << ", GetDevValueVec() ret was RSMI_STATUS_FILE_ERROR " @@ -2323,22 +2290,15 @@ rsmi_dev_dpm_policy_get(uint32_t dv_ind, /* It will reply on the number but no string as it may vary from soc to soc. The current pstate marked with * - soc pstate 0 : soc_pstate_default 1 : soc_pstate_0 2 : soc_pstate_1* 3 : soc_pstate_2 */ - bool see_soc_pstate = false; bool see_current = false; policy->num_supported = 0; for (uint32_t i = 0; i < val_vec.size(); ++i) { auto current_line = amd::smi::trim(val_vec[i]); - if (current_line == "soc pstate") { - see_soc_pstate = true; - continue; - } - if (see_soc_pstate == false) continue; // Get tokens: : std::vector tokens; @@ -2375,10 +2335,6 @@ rsmi_dev_dpm_policy_get(uint32_t dv_ind, policy->num_supported++; } // end for - if (!see_soc_pstate) { - return RSMI_STATUS_NOT_SUPPORTED; - } - if (!see_current) { ss << __PRETTY_FUNCTION__ << " | ======= end =======" << ", Unexpected pstat data: cannot find the current policy."; @@ -2391,6 +2347,26 @@ rsmi_dev_dpm_policy_get(uint32_t dv_ind, CATCH } +rsmi_status_t +rsmi_dev_soc_pstate_set(uint32_t dv_ind, + uint32_t policy_id) { + rsmi_status_t ret; + + TRY + std::ostringstream ss; + ss << __PRETTY_FUNCTION__ << " | ======= start ======="; + LOG_TRACE(ss); + REQUIRE_ROOT_ACCESS + DEVICE_MUTEX + GET_DEV_FROM_INDX + + std::string value = std::to_string(policy_id); + int ret = dev->writeDevInfo(amd::smi::kDevSocPstate , value); + return amd::smi::ErrnoToRsmiStatus(ret); + + CATCH +} + static std::vector pci_name_files = { "/usr/share/misc/pci.ids", "/usr/share/hwdata/pci.ids", diff --git a/rocm_smi/src/rocm_smi_device.cc b/rocm_smi/src/rocm_smi_device.cc index e9ae71b0fc..5eafc45555 100755 --- a/rocm_smi/src/rocm_smi_device.cc +++ b/rocm_smi/src/rocm_smi_device.cc @@ -82,6 +82,8 @@ static const char *kDevPCieVendorIDFName = "vendor"; // Device sysfs file names static const char *kDevPerfLevelFName = "power_dpm_force_performance_level"; +static const char *kDevSocPstateFName = "pm_policy/soc_pstate"; +static const char *kDevXgmiPlpdFName = "pm_policy/xgmi_plpd"; static const char *kDevProcessIsolationFName = "enforce_isolation"; static const char *kDevShaderCleanFName = "run_cleaner_shader"; static const char *kDevDevProdNameFName = "product_name"; @@ -138,7 +140,6 @@ static const char *kDevAvailableComputePartitionFName = "available_compute_partition"; static const char *kDevComputePartitionFName = "current_compute_partition"; static const char *kDevMemoryPartitionFName = "current_memory_partition"; -static const char* kDevDPMPolicyFName = "pm_policy"; // The PM policy for pstat and XGMI // Firmware version files static const char *kDevFwVersionAsdFName = "fw_version/asd_fw_version"; @@ -318,7 +319,8 @@ static const std::map kDevAttribNameMap = { {kDevNumaNode, kDevNumaNodeFName}, {kDevGpuMetrics, kDevGpuMetricsFName}, {kDevPmMetrics, kDevPmMetricsFName}, - {kDevDPMPolicy, kDevDPMPolicyFName}, + {kDevSocPstate, kDevSocPstateFName}, + {kDevXgmiPlpd, kDevXgmiPlpdFName}, {kDevProcessIsolation, kDevProcessIsolationFName}, {kDevShaderClean, kDevShaderCleanFName}, {kDevRegMetrics, kDevRegMetricsFName}, @@ -478,7 +480,8 @@ Device::devInfoTypesStrings = { {kDevComputePartition, "kDevComputePartition"}, {kDevMemoryPartition, "kDevMemoryPartition"}, {kDevPCieVendorID, "kDevPCieVendorID"}, - {kDevDPMPolicy, "kDevDPMPolicy"}, + {kDevSocPstate, "kDevSocPstate"}, + {kDevXgmiPlpd, "kDevXgmiPlpd"}, {kDevProcessIsolation, "kDevProcessIsolation"}, {kDevShaderClean, "kDevShaderClean"}, }; @@ -522,6 +525,10 @@ static const std::map kDevFuncDependsMap = { {"rsmi_dev_perf_level_set", {{kDevPerfLevelFName}, {}}}, {"rsmi_dev_perf_level_set_v1", {{kDevPerfLevelFName}, {}}}, {"rsmi_dev_perf_level_get", {{kDevPerfLevelFName}, {}}}, + {"rsmi_dev_soc_pstate_set", {{kDevSocPstateFName}, {}}}, + {"rsmi_dev_soc_pstate_get", {{kDevSocPstateFName}, {}}}, + {"rsmi_dev_xgmi_plpd_set", {{kDevXgmiPlpdFName}, {}}}, + {"rsmi_dev_xgmi_plpd_get", {{kDevXgmiPlpdFName}, {}}}, {"rsmi_dev_process_isolation_set", {{kDevProcessIsolationFName}, {}}}, {"rsmi_dev_process_isolation_get", {{kDevProcessIsolationFName}, {}}}, {"rsmi_dev_gpu_shader_clean", {{kDevShaderCleanFName}, {}}}, @@ -545,10 +552,6 @@ static const std::map kDevFuncDependsMap = { {"rsmi_topo_numa_affinity_get", {{kDevNumaNodeFName}, {}}}, {"rsmi_dev_gpu_metrics_info_get", {{kDevGpuMetricsFName}, {}}}, {"rsmi_dev_pm_metrics_info_get", {{kDevPmMetricsFName}, {}}}, - {"rsmi_dev_dpm_policy_get", {{kDevDPMPolicyFName}, {}}}, - {"rsmi_dev_dpm_policy_set", {{kDevDPMPolicyFName}, {}}}, - {"rsmi_dev_xgmi_plpd_get", {{kDevDPMPolicyFName}, {}}}, - {"rsmi_dev_xgmi_plpd_set", {{kDevDPMPolicyFName}, {}}}, {"rsmi_dev_reg_table_info_get", {{kDevRegMetricsFName}, {}}}, {"rsmi_dev_gpu_reset", {{kDevGpuResetFName}, {}}}, {"rsmi_dev_compute_partition_get", {{kDevComputePartitionFName}, {}}}, @@ -948,6 +951,8 @@ int Device::writeDevInfo(DevInfoTypes type, std::string val) { sysfs_path += kDevAttribNameMap.at(type); switch (type) { case kDevGPUMClk: + case kDevSocPstate: + case kDevXgmiPlpd: case kDevProcessIsolation: case kDevShaderClean: case kDevDCEFClk: @@ -956,7 +961,6 @@ int Device::writeDevInfo(DevInfoTypes type, std::string val) { case kDevPCIEClk: case kDevPowerODVoltage: case kDevSOCClk: - case kDevDPMPolicy: return writeDevInfoStr(type, val); case kDevComputePartition: case kDevMemoryPartition: @@ -1223,6 +1227,8 @@ int Device::readDevInfo(DevInfoTypes type, std::vector *val) { switch (type) { case kDevGPUMClk: + case kDevSocPstate: + case kDevXgmiPlpd: case kDevProcessIsolation: case kDevGPUSClk: case kDevDCEFClk: @@ -1239,7 +1245,6 @@ int Device::readDevInfo(DevInfoTypes type, std::vector *val) { case kDevErrCntHDP: case kDevErrCntXGMIWAFL: case kDevMemPageBad: - case kDevDPMPolicy: return readDevInfoMultiLineStr(type, val); break; diff --git a/src/amd_smi/amd_smi.cc b/src/amd_smi/amd_smi.cc index f680b4bb9e..1b317ee385 100644 --- a/src/amd_smi/amd_smi.cc +++ b/src/amd_smi/amd_smi.cc @@ -1409,19 +1409,19 @@ amdsmi_status_t amdsmi_set_clk_freq(amdsmi_processor_handle processor_handle, static_cast(clk_type), freq_bitmask); } -amdsmi_status_t amdsmi_set_dpm_policy(amdsmi_processor_handle processor_handle, +amdsmi_status_t amdsmi_set_soc_pstate(amdsmi_processor_handle processor_handle, uint32_t policy) { AMDSMI_CHECK_INIT(); - return rsmi_wrapper(rsmi_dev_dpm_policy_set, processor_handle, + return rsmi_wrapper(rsmi_dev_soc_pstate_set, processor_handle, policy); } -amdsmi_status_t amdsmi_get_dpm_policy(amdsmi_processor_handle processor_handle, +amdsmi_status_t amdsmi_get_soc_pstate(amdsmi_processor_handle processor_handle, amdsmi_dpm_policy_t* policy) { AMDSMI_CHECK_INIT(); - return rsmi_wrapper(rsmi_dev_dpm_policy_get, processor_handle, + return rsmi_wrapper(rsmi_dev_soc_pstate_get, processor_handle, reinterpret_cast(policy)); }