From a90a599fe04158acd1430320c17c9a7fbf7992da Mon Sep 17 00:00:00 2001 From: Karthik Ramamoorthy Date: Mon, 27 Jun 2022 15:39:59 +0000 Subject: [PATCH] tegra: hwpm: t234: correct ip fs_info status fix bug where ip status is set as valid even if no instances are available. Update floorsweep info computation to left shift calculated floorsweep mask by number of elements for every instance. JIRA THWPM-63 Change-Id: I1a51586c44626857e6fae7f46128bedd60fe3c5c Signed-off-by: Karthik Ramamoorthy Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2735968 Reviewed-by: svcacv Reviewed-by: svc-mobile-coverity Reviewed-by: svc-mobile-cert Reviewed-by: Vedashree Vidwans Reviewed-by: svc_kernel_abi Reviewed-by: Seema Khowala Reviewed-by: Vasuki Shankar GVS: Gerrit_Virtual_Submit Tested-by: Vedashree Vidwans --- hal/t234/t234_hwpm_ip_utils.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/hal/t234/t234_hwpm_ip_utils.c b/hal/t234/t234_hwpm_ip_utils.c index 8de7b49..c22fef9 100644 --- a/hal/t234/t234_hwpm_ip_utils.c +++ b/hal/t234/t234_hwpm_ip_utils.c @@ -464,24 +464,21 @@ int t234_hwpm_get_fs_info(struct tegra_soc_hwpm *hwpm, if (t234_hwpm_is_ip_active(hwpm, ip_enum, &ip_idx)) { active_chip = hwpm->active_chip; chip_ip = active_chip->chip_ips[ip_idx]; - - if (!(chip_ip->override_enable)) { + if (!(chip_ip->override_enable) && chip_ip->inst_fs_mask) { for (inst_idx = 0U; inst_idx < chip_ip->num_instances; inst_idx++) { ip_inst = &chip_ip->ip_inst_static_array[ inst_idx]; element_mask_shift = (inst_idx == 0U ? 0U : ip_inst->num_core_elements_per_inst); + floorsweep = (floorsweep << element_mask_shift); if (ip_inst->hw_inst_mask & chip_ip->inst_fs_mask) { - floorsweep = (floorsweep << - element_mask_shift); floorsweep |= ((u64)ip_inst->element_fs_mask); } } - *fs_mask = floorsweep; *ip_status = TEGRA_SOC_HWPM_IP_STATUS_VALID;