|
Revision tags: v6.15, v6.15-rc7, v6.15-rc6, v6.15-rc5, v6.15-rc4, v6.15-rc3, v6.15-rc2, v6.15-rc1, v6.14, v6.14-rc7, v6.14-rc6, v6.14-rc5, v6.14-rc4, v6.14-rc3, v6.14-rc2, v6.14-rc1, v6.13, v6.13-rc7, v6.13-rc6, v6.13-rc5, v6.13-rc4, v6.13-rc3, v6.13-rc2, v6.13-rc1, v6.12, v6.12-rc7, v6.12-rc6, v6.12-rc5, v6.12-rc4, v6.12-rc3, v6.12-rc2, v6.12-rc1, v6.11, v6.11-rc7, v6.11-rc6, v6.11-rc5, v6.11-rc4, v6.11-rc3, v6.11-rc2, v6.11-rc1, v6.10, v6.10-rc7, v6.10-rc6, v6.10-rc5, v6.10-rc4, v6.10-rc3, v6.10-rc2, v6.10-rc1, v6.9, v6.9-rc7, v6.9-rc6, v6.9-rc5, v6.9-rc4, v6.9-rc3, v6.9-rc2, v6.9-rc1, v6.8, v6.8-rc7, v6.8-rc6, v6.8-rc5, v6.8-rc4, v6.8-rc3, v6.8-rc2, v6.8-rc1 |
|
| #
b489e794 |
| 09-Jan-2024 |
Viresh Kumar <[email protected]> |
PM / OPP: Add reference counting helpers for Rust implementation
To ensure that resources such as OPP tables or OPP nodes are not freed while in use by the Rust implementation, it is necessary to in
PM / OPP: Add reference counting helpers for Rust implementation
To ensure that resources such as OPP tables or OPP nodes are not freed while in use by the Rust implementation, it is necessary to increment their reference count from Rust code.
This commit introduces a new helper function, dev_pm_opp_get_opp_table_ref(), to increment the reference count of an OPP table and declares the existing helper dev_pm_opp_get() in pm_opp.h.
Signed-off-by: Viresh Kumar <[email protected]>
show more ...
|
| #
b44b9bc7 |
| 03-Dec-2024 |
Neil Armstrong <[email protected]> |
OPP: fix dev_pm_opp_find_bw_*() when bandwidth table not initialized
If a driver calls dev_pm_opp_find_bw_ceil/floor() the retrieve bandwidth from the OPP table but the bandwidth table was not creat
OPP: fix dev_pm_opp_find_bw_*() when bandwidth table not initialized
If a driver calls dev_pm_opp_find_bw_ceil/floor() the retrieve bandwidth from the OPP table but the bandwidth table was not created because the interconnect properties were missing in the OPP consumer node, the kernel will crash with:
Unable to handle kernel NULL pointer dereference at virtual address 0000000000000004 ... pc : _read_bw+0x8/0x10 lr : _opp_table_find_key+0x9c/0x174 ... Call trace: _read_bw+0x8/0x10 (P) _opp_table_find_key+0x9c/0x174 (L) _find_key+0x98/0x168 dev_pm_opp_find_bw_ceil+0x50/0x88 ...
In order to fix the crash, create an assert function to check if the bandwidth table was created before trying to get a bandwidth with _read_bw().
Fixes: add1dc094a74 ("OPP: Use generic key finding helpers for bandwidth key") Signed-off-by: Neil Armstrong <[email protected]> Signed-off-by: Viresh Kumar <[email protected]>
show more ...
|
| #
d659bc68 |
| 03-Dec-2024 |
Neil Armstrong <[email protected]> |
OPP: add index check to assert to avoid buffer overflow in _read_freq()
Pass the freq index to the assert function to make sure we do not read a freq out of the opp->rates[] table when called from t
OPP: add index check to assert to avoid buffer overflow in _read_freq()
Pass the freq index to the assert function to make sure we do not read a freq out of the opp->rates[] table when called from the indexed variants: dev_pm_opp_find_freq_exact_indexed() or dev_pm_opp_find_freq_ceil/floor_indexed().
Add a secondary parameter to the assert function, unused for assert_single_clk() then add assert_clk_index() which will check for the clock index when called from the _indexed() find functions.
Fixes: 142e17c1c2b4 ("OPP: Introduce dev_pm_opp_find_freq_{ceil/floor}_indexed() APIs") Fixes: a5893928bb17 ("OPP: Add dev_pm_opp_find_freq_exact_indexed()") Signed-off-by: Neil Armstrong <[email protected]> Signed-off-by: Viresh Kumar <[email protected]>
show more ...
|
| #
402074f0 |
| 30-Nov-2024 |
Dan Carpenter <[email protected]> |
opp: core: Fix off by one in dev_pm_opp_get_bw()
The "opp->bandwidth" array has "opp->opp_table->path_count" number of elements. It's allocated in _opp_allocate(). So this > needs to be >= to prev
opp: core: Fix off by one in dev_pm_opp_get_bw()
The "opp->bandwidth" array has "opp->opp_table->path_count" number of elements. It's allocated in _opp_allocate(). So this > needs to be >= to prevent an out of bounds access.
Fixes: d78653dcd8bf ("opp: core: implement dev_pm_opp_get_bw") Signed-off-by: Dan Carpenter <[email protected]> Signed-off-by: Viresh Kumar <[email protected]>
show more ...
|
| #
b89c0ed0 |
| 19-Nov-2024 |
Neil Armstrong <[email protected]> |
opp: core: implement dev_pm_opp_get_bw
Add and implement dev_pm_opp_get_bw() to retrieve the OPP's bandwidth in the same way as the dev_pm_opp_get_voltage() helper.
Retrieving bandwidth is required
opp: core: implement dev_pm_opp_get_bw
Add and implement dev_pm_opp_get_bw() to retrieve the OPP's bandwidth in the same way as the dev_pm_opp_get_voltage() helper.
Retrieving bandwidth is required in the case of the Adreno GPU where the GPU Management Unit can handle the Bandwidth scaling.
The helper can get the peak or average bandwidth for any of the interconnect path.
Signed-off-by: Neil Armstrong <[email protected]> [ Viresh: Fixed commit log and a comment in code ] Signed-off-by: Viresh Kumar <[email protected]>
show more ...
|
| #
d6caca30 |
| 02-Oct-2024 |
Ulf Hansson <[email protected]> |
OPP: Drop redundant *_opp_attach|detach_genpd()
All users of *_opp_attach|detach_genpd(), have been converted to use dev|devm_pm_domain_attach|detach_list(), hence let's drop it along with its corre
OPP: Drop redundant *_opp_attach|detach_genpd()
All users of *_opp_attach|detach_genpd(), have been converted to use dev|devm_pm_domain_attach|detach_list(), hence let's drop it along with its corresponding exported functions.
Acked-by: Viresh Kumar <[email protected]> Signed-off-by: Ulf Hansson <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
| #
0e8158b4 |
| 02-Oct-2024 |
Ulf Hansson <[email protected]> |
OPP: Rework _set_required_devs() to manage a single device per call
At this point there are no consumer drivers that makes use of _set_required_devs(), hence it should be straightforward to rework t
OPP: Rework _set_required_devs() to manage a single device per call
At this point there are no consumer drivers that makes use of _set_required_devs(), hence it should be straightforward to rework the code to enable it to better integrate with the PM domain attach procedure.
During attach, one device at the time is being hooked up to its corresponding PM domain. Therefore, let's update the _set_required_devs() to align to this behaviour, allowing callers to fill out one required_dev per call. Subsequent changes starts making use of this.
Signed-off-by: Ulf Hansson <[email protected]> Acked-by: Viresh Kumar <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
| #
eb833367 |
| 16-Sep-2024 |
Dan Carpenter <[email protected]> |
OPP: fix error code in dev_pm_opp_set_config()
This is an error path so set the error code. Smatch complains about the current code:
drivers/opp/core.c:2660 dev_pm_opp_set_config() error:
OPP: fix error code in dev_pm_opp_set_config()
This is an error path so set the error code. Smatch complains about the current code:
drivers/opp/core.c:2660 dev_pm_opp_set_config() error: uninitialized symbol 'ret'.
Fixes: e37440e7e2c2 ("OPP: Call dev_pm_opp_set_opp() for required OPPs") Signed-off-by: Dan Carpenter <[email protected]> Acked-by: Viresh Kumar <[email protected]> Cc: [email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Ulf Hansson <[email protected]>
show more ...
|
| #
9ec87c59 |
| 22-Aug-2024 |
Ulf Hansson <[email protected]> |
OPP: Fix support for required OPPs for multiple PM domains
It has turned out that having _set_required_opps() to recursively call dev_pm_opp_set_opp() to set the required OPPs, doesn't really work a
OPP: Fix support for required OPPs for multiple PM domains
It has turned out that having _set_required_opps() to recursively call dev_pm_opp_set_opp() to set the required OPPs, doesn't really work as well as we expected.
More precisely, at each recursive call to dev_pm_opp_set_opp() we are changing an OPP for a required_dev that belongs to a required-OPP table. The problem with this, is that we may have several devices sharing the same required-OPP table, which leads to an incorrect behaviour in regards to aggregating the per device votes.
To fix the problem for a required-OPP table belonging to a PM domain, which is the only existing usecase for now, let's simply replace the call to dev_pm_opp_set_opp() in _set_required_opps() by a call to _set_opp_level().
Moving forward we may potentially need to add support for other types of required-OPP tables. In this case, the aggregation needs to be thought of.
Fixes: e37440e7e2c2 ("OPP: Call dev_pm_opp_set_opp() for required OPPs") Cc: [email protected] Signed-off-by: Ulf Hansson <[email protected]> Acked-by: Viresh Kumar <[email protected]> Link: https://lore.kernel.org/r/[email protected]
show more ...
|
| #
0d865221 |
| 19-Jun-2024 |
Ulf Hansson <[email protected]> |
OPP: Drop a redundant in-parameter to _set_opp_level()
The in-parameter "opp_table" isn't needed by _set_opp_level(). Let's therefore drop it.
Signed-off-by: Ulf Hansson <[email protected]> Si
OPP: Drop a redundant in-parameter to _set_opp_level()
The in-parameter "opp_table" isn't needed by _set_opp_level(). Let's therefore drop it.
Signed-off-by: Ulf Hansson <[email protected]> Signed-off-by: Viresh Kumar <[email protected]>
show more ...
|
| #
d86a2f08 |
| 28-May-2024 |
Viresh Kumar <[email protected]> |
OPP: Fix missing cleanup on error in _opp_attach_genpd()
A recent commit updated the code mistakenly to return directly on errors, without doing the required cleanups. Fix it.
Fixes: 2a56c462fe5a (
OPP: Fix missing cleanup on error in _opp_attach_genpd()
A recent commit updated the code mistakenly to return directly on errors, without doing the required cleanups. Fix it.
Fixes: 2a56c462fe5a ("OPP: Fix required_opp_tables for multiple genpds using same table") Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> Closes: https://lore.kernel.org/r/[email protected]/ Signed-off-by: Viresh Kumar <[email protected]>
show more ...
|
| #
2a56c462 |
| 09-Apr-2024 |
Viresh Kumar <[email protected]> |
OPP: Fix required_opp_tables for multiple genpds using same table
The required_opp_tables parsing is not perfect, as the OPP core does the parsing solely based on the DT node pointers.
The core set
OPP: Fix required_opp_tables for multiple genpds using same table
The required_opp_tables parsing is not perfect, as the OPP core does the parsing solely based on the DT node pointers.
The core sets the required_opp_tables entry to the first OPP table in the "opp_tables" list, that matches with the node pointer.
If the target DT OPP table is used by multiple devices and they all create separate instances of 'struct opp_table' from it, then it is possible that the required_opp_tables entry may be set to the incorrect sibling device.
Unfortunately, there is no clear way to initialize the right values during the initial parsing and we need to do this at a later point of time.
Cross check the OPP table again while the genpds are attached and fix them if required.
Also add a new API for the genpd core to fetch the device pointer for the genpd.
Cc: Thorsten Leemhuis <[email protected]> Reported-by: Vladimir Lypak <[email protected]> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218682 Co-developed-by: Vladimir Lypak <[email protected]> Signed-off-by: Viresh Kumar <[email protected]> Reviewed-by: Ulf Hansson <[email protected]>
show more ...
|
| #
abb3f971 |
| 27-Feb-2024 |
Sibi Sankar <[email protected]> |
OPP: Extend dev_pm_opp_data with turbo support
Let's extend the dev_pm_opp_data with a turbo variable, to allow users to specify if it's a boost frequency for a dynamically added OPP.
Signed-off-by
OPP: Extend dev_pm_opp_data with turbo support
Let's extend the dev_pm_opp_data with a turbo variable, to allow users to specify if it's a boost frequency for a dynamically added OPP.
Signed-off-by: Sibi Sankar <[email protected]> Signed-off-by: Viresh Kumar <[email protected]>
show more ...
|
|
Revision tags: v6.7 |
|
| #
dcfec12b |
| 05-Jan-2024 |
Viresh Kumar <[email protected]> |
OPP: Rename 'rate_clk_single'
The field's name isn't clear enough. Rename it.
Signed-off-by: Viresh Kumar <[email protected]>
|
| #
7269c250 |
| 05-Jan-2024 |
Viresh Kumar <[email protected]> |
OPP: Pass rounded rate to _set_opp()
The OPP core finds the eventual frequency to set with the help of clk_round_rate() and the same was earlier getting passed to _set_opp() and that's what would ge
OPP: Pass rounded rate to _set_opp()
The OPP core finds the eventual frequency to set with the help of clk_round_rate() and the same was earlier getting passed to _set_opp() and that's what would get configured.
The commit 1efae8d2e777 ("OPP: Make dev_pm_opp_set_opp() independent of frequency") mistakenly changed that. Fix it.
Fixes: 1efae8d2e777 ("OPP: Make dev_pm_opp_set_opp() independent of frequency") Cc: v5.18+ <[email protected]> # v6.0+ Signed-off-by: Viresh Kumar <[email protected]>
show more ...
|
| #
0b40dd3b |
| 03-Jan-2024 |
Viresh Kumar <[email protected]> |
OPP: Relocate dev_pm_opp_sync_regulators()
Move this to a more relevant place in the file. No functional changes.
Signed-off-by: Viresh Kumar <[email protected]>
|
|
Revision tags: v6.7-rc8, v6.7-rc7 |
|
| #
ab7a781f |
| 23-Dec-2023 |
Bryan O'Donoghue <[email protected]> |
OPP: Fix _set_required_opps when opp is NULL
_set_required_opps can be called with opp NULL in _disable_opp_table().
commit e37440e7e2c2 ("OPP: Call dev_pm_opp_set_opp() for required OPPs") require
OPP: Fix _set_required_opps when opp is NULL
_set_required_opps can be called with opp NULL in _disable_opp_table().
commit e37440e7e2c2 ("OPP: Call dev_pm_opp_set_opp() for required OPPs") requires the opp pointer to be non-NULL to function.
[ 81.253439] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000048 [ 81.438407] Hardware name: Qualcomm Technologies, Inc. Robotics RB5 (DT) [ 81.445296] Workqueue: pm pm_runtime_work [ 81.449446] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 81.456609] pc : _set_required_opps+0x178/0x28c [ 81.461288] lr : _set_required_opps+0x178/0x28c [ 81.465962] sp : ffff80008078bb00 [ 81.469375] x29: ffff80008078bb00 x28: ffffd1cd71bfe308 x27: 0000000000000000 [ 81.476730] x26: ffffd1cd70ebc578 x25: ffffd1cd70a08710 x24: 00000000ffffffff [ 81.484083] x23: 00000000ffffffff x22: 0000000000000000 x21: ffff56ff892b3c48 [ 81.491435] x20: ffff56f1071c10 x19: 0000000000000000 x18: ffffffffffffffff [ 81.498788] x17: 2030207865646e69 x16: 2030303131207370 x15: 706f5f6465726975 [ 81.506141] x14: 7165725f7465735f x13: ffff5700f5c00000 x12: 00000000000008ac [ 81.513495] x11: 00000000000002e4 x10: ffff5700f6700000 x9 : ffff5700f5c00000 [ 81.520848] x8 : 00000000fffdffff x7 : ffff5700f6700000 x6 : 80000000fffe0000 [ 81.528200] x5 : ffff5700fef40d08 x4 : 0000000000000000 x3 : 0000000000000000 [ 81.535551] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff56ff81298f80 [ 81.542904] Call trace: [ 81.545437] _set_required_opps+0x178/0x28c [ 81.549754] _set_opp+0x3fc/0x5c0 [ 81.553181] dev_pm_opp_set_rate+0x90/0x26c [ 81.557498] core_power_v4+0x44/0x15c [venus_core] [ 81.562509] venus_runtime_suspend+0x40/0xd0 [venus_core] [ 81.568135] pm_generic_runtime_suspend+0x2c/0x44 [ 81.572983] __rpm_callback+0x48/0x1d8 [ 81.576852] rpm_callback+0x6c/0x78 [ 81.580453] rpm_suspend+0x10c/0x570 [ 81.584143] pm_runtime_work+0xc4/0xc8 [ 81.588011] process_one_work+0x138/0x244 [ 81.592153] worker_thread+0x320/0x438 [ 81.596021] kthread+0x110/0x114 [ 81.599355] ret_from_fork+0x10/0x20 [ 81.603052] Code: f10000ff fa5410e0 54fffbe1 97f05ae8 (f94026c5) [ 81.609317] ---[ end trace 0000000000000000 ]---
Fix it.
Fixes: e37440e7e2c2 ("OPP: Call dev_pm_opp_set_opp() for required OPPs") Signed-off-by: Bryan O'Donoghue <[email protected]> [ Viresh: Implemented the fix differently ] Signed-off-by: Viresh Kumar <[email protected]> Reviewed-by: Bryan O'Donoghue <[email protected]> Tested-by: Bryan O'Donoghue <[email protected]>
show more ...
|
| #
ba367479 |
| 19-Dec-2023 |
Viresh Kumar <[email protected]> |
OPP: The level field is always of unsigned int type
By mistake, dev_pm_opp_find_level_floor() used the level parameter as unsigned long instead of unsigned int. Fix it.
Signed-off-by: Viresh Kumar
OPP: The level field is always of unsigned int type
By mistake, dev_pm_opp_find_level_floor() used the level parameter as unsigned long instead of unsigned int. Fix it.
Signed-off-by: Viresh Kumar <[email protected]>
show more ...
|
|
Revision tags: v6.7-rc6, v6.7-rc5, v6.7-rc4 |
|
| #
19cc8b18 |
| 28-Nov-2023 |
Viresh Kumar <[email protected]> |
OPP: Check for invalid OPP in dev_pm_opp_find_level_ceil()
_find_key_ceil() may return an error and that must be checked before passing the same to dev_pm_opp_put().
Fixes: 41907aa4ae37 ("OPP: Leve
OPP: Check for invalid OPP in dev_pm_opp_find_level_ceil()
_find_key_ceil() may return an error and that must be checked before passing the same to dev_pm_opp_put().
Fixes: 41907aa4ae37 ("OPP: Level zero is valid") Reported-by: Dan Carpenter <[email protected]> Signed-off-by: Viresh Kumar <[email protected]>
show more ...
|
|
Revision tags: v6.7-rc3, v6.7-rc2 |
|
| #
92514143 |
| 16-Nov-2023 |
Viresh Kumar <[email protected]> |
OPP: Don't set OPP recursively for a parent genpd
Like other frameworks (clk, regulator, etc.) genpd core too takes care of propagation to performance state to parent genpds. The OPP core shouldn't
OPP: Don't set OPP recursively for a parent genpd
Like other frameworks (clk, regulator, etc.) genpd core too takes care of propagation to performance state to parent genpds. The OPP core shouldn't attempt the same, or it may result in undefined behavior.
Add checks at various places to take care of the same.
Reviewed-by: Ulf Hansson <[email protected]> Tested-by: Stephan Gerhold <[email protected]> Signed-off-by: Viresh Kumar <[email protected]>
show more ...
|
|
Revision tags: v6.7-rc1, v6.6 |
|
| #
e37440e7 |
| 27-Oct-2023 |
Viresh Kumar <[email protected]> |
OPP: Call dev_pm_opp_set_opp() for required OPPs
Configuring the required OPP was never properly implemented, we just took an exception for genpds and configured them directly, while leaving out all
OPP: Call dev_pm_opp_set_opp() for required OPPs
Configuring the required OPP was never properly implemented, we just took an exception for genpds and configured them directly, while leaving out all other required OPP types.
Now that a standard call to dev_pm_opp_set_opp() takes care of configuring the opp->level too, the special handling for genpds can be avoided by simply calling dev_pm_opp_set_opp() for the required OPPs, which shall eventually configure the corresponding level for genpds.
This also makes it possible for us to configure other type of required OPPs (no concrete users yet though), via the same path. This is how other frameworks take care of parent nodes, like clock, regulators, etc, where we recursively call the same helper.
In order to call dev_pm_opp_set_opp() for the virtual genpd devices, they must share the OPP table of the genpd. Call _add_opp_dev() for them to get that done.
This commit also extends the struct dev_pm_opp_config to pass required devices, for non-genpd cases, which can be used to call dev_pm_opp_set_opp() for the non-genpd required devices.
Reviewed-by: Ulf Hansson <[email protected]> Tested-by: Stephan Gerhold <[email protected]> Signed-off-by: Viresh Kumar <[email protected]>
show more ...
|
|
Revision tags: v6.6-rc7, v6.6-rc6 |
|
| #
6d366d0e |
| 12-Oct-2023 |
Viresh Kumar <[email protected]> |
OPP: Use _set_opp_level() for single genpd case
There are two genpd (as required-opp) cases that we need to handle, devices with a single genpd and ones with multiple genpds.
The multiple genpds ca
OPP: Use _set_opp_level() for single genpd case
There are two genpd (as required-opp) cases that we need to handle, devices with a single genpd and ones with multiple genpds.
The multiple genpds case is clear, where the OPP core calls dev_pm_domain_attach_by_name() for them and uses the virtual devices returned by this helper to call dev_pm_domain_set_performance_state() later to change the performance state.
The single genpd case however requires special handling as we need to use the same `dev` structure (instead of a virtual one provided by genpd core) for setting the performance state via dev_pm_domain_set_performance_state().
As we move towards more generic code to take care of the required OPPs, where we will recursively call dev_pm_opp_set_opp() for all the required OPPs, the above special case becomes a problem.
It doesn't make sense for a device's DT entry to have both "opp-level" and single "required-opps" entry pointing to a genpd's OPP, as that would make the OPP core call dev_pm_domain_set_performance_state() for two different values for the same device structure. And so we can reuse the 'opp->level" field in such a case and call _set_opp_level() for the device.
Reviewed-by: Ulf Hansson <[email protected]> Tested-by: Stephan Gerhold <[email protected]> Signed-off-by: Viresh Kumar <[email protected]>
show more ...
|
| #
073d3d2c |
| 27-Oct-2023 |
Viresh Kumar <[email protected]> |
OPP: Level zero is valid
The level zero can be used by some OPPs to drop performance state vote for the device. It is perfectly fine to allow the same.
_set_opp_level() considers it as an invalid v
OPP: Level zero is valid
The level zero can be used by some OPPs to drop performance state vote for the device. It is perfectly fine to allow the same.
_set_opp_level() considers it as an invalid value currently and returns early.
In order to support this properly, initialize the level field with U32_MAX, which denotes unused level field.
Reported-by: Stephan Gerhold <[email protected]> Reviewed-by: Ulf Hansson <[email protected]> Tested-by: Stephan Gerhold <[email protected]> Signed-off-by: Viresh Kumar <[email protected]>
show more ...
|
| #
5ea49113 |
| 13-Oct-2023 |
Viresh Kumar <[email protected]> |
OPP: No need to defer probe from _opp_attach_genpd()
When the new interface for attaching genpd's via the OPP core was added, it was possible for required_opp_count to be zero, but not anymore.
Rem
OPP: No need to defer probe from _opp_attach_genpd()
When the new interface for attaching genpd's via the OPP core was added, it was possible for required_opp_count to be zero, but not anymore.
Remove the unused check.
Signed-off-by: Viresh Kumar <[email protected]> Reviewed-by: Ulf Hansson <[email protected]>
show more ...
|
| #
48b5aaec |
| 12-Oct-2023 |
Viresh Kumar <[email protected]> |
OPP: Remove genpd_virt_dev_lock
All the config operations for OPP tables share common code paths now and none of the other ones have such protection in place. Either all should have it or none.
The
OPP: Remove genpd_virt_dev_lock
All the config operations for OPP tables share common code paths now and none of the other ones have such protection in place. Either all should have it or none.
The understanding here is that user won't clear the OPP configs while still using them and so such a case won't happen. We can always come back and use a wider lock for all resource types if required.
Also fix the error on failing to allocate memory.
Signed-off-by: Viresh Kumar <[email protected]> Reviewed-by: Ulf Hansson <[email protected]>
show more ...
|