mirror of
git://nv-tegra.nvidia.com/linux-hwpm.git
synced 2025-12-24 02:07:34 +03:00
tegra: hwpm: update logic to use static indexes
HWPM driver uses nested structures and arrays of structures. The IP structure setup logic allocates pointer arrays based on dynamic list of IPs and aperture addresses. This dynamic list is required to search given regops address in less amount of time. However, there is a chance that the number of pointers computed dynamically is huge. And huge amount of memory will be required for the dynamic pointers array, which is impractical. This, this patch modifies ip structure setup and address to aperture conversion logic to use static indexes if the pointer array size is huge. This patch modifies relevant functions to always use static arrays to access instance and aperture structures. If dynamic pointers array is allocated, the patch adds logic to translate dynamic index to static index using inst_index_mask for instances and new added aperture_index for element level structures. Add/update few log message to improve relayed information. Bug 4707244 Change-Id: Ib4847e6575f82b628a3ce838ad69196a4bc08fed Signed-off-by: Vedashree Vidwans <vvidwans@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-hwpm/+/3186843 Reviewed-by: Vasuki Shankar <vasukis@nvidia.com> Reviewed-by: Seema Khowala <seemaj@nvidia.com> GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
cdbd6e7a24
commit
48e85a9c07
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
/*
|
||||
* Copyright (c) 2021-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
@@ -48,7 +48,7 @@ int tegra_hwpm_func_single_ip(struct tegra_soc_hwpm *hwpm,
|
||||
|
||||
bool tegra_hwpm_aperture_for_address(struct tegra_soc_hwpm *hwpm,
|
||||
enum tegra_hwpm_funcs iia_func,
|
||||
u64 find_addr, u32 *ip_idx, u32 *inst_idx, u32 *element_idx,
|
||||
u64 find_addr, u32 *ip_idx, u32 *s_inst_idx, u32 *s_element_idx,
|
||||
enum tegra_hwpm_element_type *element_type);
|
||||
|
||||
int tegra_hwpm_perfmux_disable(struct tegra_soc_hwpm *hwpm,
|
||||
@@ -90,6 +90,6 @@ int tegra_hwpm_check_status(struct tegra_soc_hwpm *hwpm);
|
||||
int tegra_hwpm_release_hw(struct tegra_soc_hwpm *hwpm);
|
||||
void tegra_hwpm_release_sw_setup(struct tegra_soc_hwpm *hwpm);
|
||||
int tegra_hwpm_update_ip_inst_fs_mask(struct tegra_soc_hwpm *hwpm,
|
||||
u32 ip_idx, u32 a_type, u32 inst_idx, bool available);
|
||||
u32 ip_idx, u32 a_type, u32 s_inst_idx, bool available);
|
||||
|
||||
#endif /* TEGRA_HWPM_COMMON_H */
|
||||
|
||||
Reference in New Issue
Block a user