|
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, v6.7, v6.7-rc8, v6.7-rc7, v6.7-rc6, v6.7-rc5, v6.7-rc4, v6.7-rc3 |
|
| #
aed5ed59 |
| 24-Nov-2023 |
Mukesh Ojha <[email protected]> |
PM / devfreq: Synchronize devfreq_monitor_[start/stop]
There is a chance if a frequent switch of the governor done in a loop result in timer list corruption where timer cancel being done from two pl
PM / devfreq: Synchronize devfreq_monitor_[start/stop]
There is a chance if a frequent switch of the governor done in a loop result in timer list corruption where timer cancel being done from two place one from cancel_delayed_work_sync() and followed by expire_timers() can be seen from the traces[1].
while true do echo "simple_ondemand" > /sys/class/devfreq/1d84000.ufshc/governor echo "performance" > /sys/class/devfreq/1d84000.ufshc/governor done
It looks to be issue with devfreq driver where device_monitor_[start/stop] need to synchronized so that delayed work should get corrupted while it is either being queued or running or being cancelled.
Let's use polling flag and devfreq lock to synchronize the queueing the timer instance twice and work data being corrupted.
[1] ... .. <idle>-0 [003] 9436.209662: timer_cancel timer=0xffffff80444f0428 <idle>-0 [003] 9436.209664: timer_expire_entry timer=0xffffff80444f0428 now=0x10022da1c function=__typeid__ZTSFvP10timer_listE_global_addr baseclk=0x10022da1c <idle>-0 [003] 9436.209718: timer_expire_exit timer=0xffffff80444f0428 kworker/u16:6-14217 [003] 9436.209863: timer_start timer=0xffffff80444f0428 function=__typeid__ZTSFvP10timer_listE_global_addr expires=0x10022da2b now=0x10022da1c flags=182452227 vendor.xxxyyy.ha-1593 [004] 9436.209888: timer_cancel timer=0xffffff80444f0428 vendor.xxxyyy.ha-1593 [004] 9436.216390: timer_init timer=0xffffff80444f0428 vendor.xxxyyy.ha-1593 [004] 9436.216392: timer_start timer=0xffffff80444f0428 function=__typeid__ZTSFvP10timer_listE_global_addr expires=0x10022da2c now=0x10022da1d flags=186646532 vendor.xxxyyy.ha-1593 [005] 9436.220992: timer_cancel timer=0xffffff80444f0428 xxxyyyTraceManag-7795 [004] 9436.261641: timer_cancel timer=0xffffff80444f0428
[2]
9436.261653][ C4] Unable to handle kernel paging request at virtual address dead00000000012a [ 9436.261664][ C4] Mem abort info: [ 9436.261666][ C4] ESR = 0x96000044 [ 9436.261669][ C4] EC = 0x25: DABT (current EL), IL = 32 bits [ 9436.261671][ C4] SET = 0, FnV = 0 [ 9436.261673][ C4] EA = 0, S1PTW = 0 [ 9436.261675][ C4] Data abort info: [ 9436.261677][ C4] ISV = 0, ISS = 0x00000044 [ 9436.261680][ C4] CM = 0, WnR = 1 [ 9436.261682][ C4] [dead00000000012a] address between user and kernel address ranges [ 9436.261685][ C4] Internal error: Oops: 96000044 [#1] PREEMPT SMP [ 9436.261701][ C4] Skip md ftrace buffer dump for: 0x3a982d0 ...
[ 9436.262138][ C4] CPU: 4 PID: 7795 Comm: TraceManag Tainted: G S W O 5.10.149-android12-9-o-g17f915d29d0c #1 [ 9436.262141][ C4] Hardware name: Qualcomm Technologies, Inc. (DT) [ 9436.262144][ C4] pstate: 22400085 (nzCv daIf +PAN -UAO +TCO BTYPE=--) [ 9436.262161][ C4] pc : expire_timers+0x9c/0x438 [ 9436.262164][ C4] lr : expire_timers+0x2a4/0x438 [ 9436.262168][ C4] sp : ffffffc010023dd0 [ 9436.262171][ C4] x29: ffffffc010023df0 x28: ffffffd0636fdc18 [ 9436.262178][ C4] x27: ffffffd063569dd0 x26: ffffffd063536008 [ 9436.262182][ C4] x25: 0000000000000001 x24: ffffff88f7c69280 [ 9436.262185][ C4] x23: 00000000000000e0 x22: dead000000000122 [ 9436.262188][ C4] x21: 000000010022da29 x20: ffffff8af72b4e80 [ 9436.262191][ C4] x19: ffffffc010023e50 x18: ffffffc010025038 [ 9436.262195][ C4] x17: 0000000000000240 x16: 0000000000000201 [ 9436.262199][ C4] x15: ffffffffffffffff x14: ffffff889f3c3100 [ 9436.262203][ C4] x13: ffffff889f3c3100 x12: 00000000049f56b8 [ 9436.262207][ C4] x11: 00000000049f56b8 x10: 00000000ffffffff [ 9436.262212][ C4] x9 : ffffffc010023e50 x8 : dead000000000122 [ 9436.262216][ C4] x7 : ffffffffffffffff x6 : ffffffc0100239d8 [ 9436.262220][ C4] x5 : 0000000000000000 x4 : 0000000000000101 [ 9436.262223][ C4] x3 : 0000000000000080 x2 : ffffff889edc155c [ 9436.262227][ C4] x1 : ffffff8001005200 x0 : ffffff80444f0428 [ 9436.262232][ C4] Call trace: [ 9436.262236][ C4] expire_timers+0x9c/0x438 [ 9436.262240][ C4] __run_timers+0x1f0/0x330 [ 9436.262245][ C4] run_timer_softirq+0x28/0x58 [ 9436.262255][ C4] efi_header_end+0x168/0x5ec [ 9436.262265][ C4] __irq_exit_rcu+0x108/0x124 [ 9436.262274][ C4] __handle_domain_irq+0x118/0x1e4 [ 9436.262282][ C4] gic_handle_irq.30369+0x6c/0x2bc [ 9436.262286][ C4] el0_irq_naked+0x60/0x6c
Link: https://lore.kernel.org/all/[email protected]/ Reported-by: Joyyoung Huang <[email protected]> Acked-by: MyungJoo Ham <[email protected]> Signed-off-by: Mukesh Ojha <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
|
Revision tags: v6.7-rc2, v6.7-rc1, v6.6 |
|
| #
4920ee6d |
| 24-Oct-2023 |
Christian Marangi <[email protected]> |
PM / devfreq: Convert to use sysfs_emit_at() API
Follow the advice of the Documentation/filesystems/sysfs.rst and show() should only use sysfs_emit() or sysfs_emit_at() when formatting the value to
PM / devfreq: Convert to use sysfs_emit_at() API
Follow the advice of the Documentation/filesystems/sysfs.rst and show() should only use sysfs_emit() or sysfs_emit_at() when formatting the value to be returned to user space.
Link: https://lore.kernel.org/all/[email protected]/ Signed-off-by: Christian Marangi <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
| #
08e23d05 |
| 24-Oct-2023 |
Christian Marangi <[email protected]> |
PM / devfreq: Fix buffer overflow in trans_stat_show
Fix buffer overflow in trans_stat_show().
Convert simple snprintf to the more secure scnprintf with size of PAGE_SIZE.
Add condition checking i
PM / devfreq: Fix buffer overflow in trans_stat_show
Fix buffer overflow in trans_stat_show().
Convert simple snprintf to the more secure scnprintf with size of PAGE_SIZE.
Add condition checking if we are exceeding PAGE_SIZE and exit early from loop. Also add at the end a warning that we exceeded PAGE_SIZE and that stats is disabled.
Return -EFBIG in the case where we don't have enough space to write the full transition table.
Also document in the ABI that this function can return -EFBIG error.
Link: https://lore.kernel.org/all/[email protected]/ Cc: [email protected] Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218041 Fixes: e552bbaf5b98 ("PM / devfreq: Add sysfs node for representing frequency transition information.") Signed-off-by: Christian Marangi <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
|
Revision tags: v6.6-rc7, v6.6-rc6, v6.6-rc5 |
|
| #
8b3bd6ff |
| 03-Oct-2023 |
Manivannan Sadhasivam <[email protected]> |
PM / devfreq: Switch to dev_pm_opp_find_freq_{ceil/floor}_indexed() APIs
Some devfreq consumers like UFS driver need to work with multiple clocks through the OPP framework. For this reason, OPP fram
PM / devfreq: Switch to dev_pm_opp_find_freq_{ceil/floor}_indexed() APIs
Some devfreq consumers like UFS driver need to work with multiple clocks through the OPP framework. For this reason, OPP framework exposes the _indexed() APIs for finding the floor/ceil of the supplied frequency of the indexed clock. So let's use them in the devfreq driver.
Currently, the clock index of 0 is used which works fine for multiple as well as single clock.
Link: https://lore.kernel.org/all/[email protected]/ Acked-by: Chanwoo Choi <[email protected]> Signed-off-by: Manivannan Sadhasivam <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
|
Revision tags: v6.6-rc4, v6.6-rc3, v6.6-rc2, v6.6-rc1, v6.5, v6.5-rc7, v6.5-rc6 |
|
| #
5693d077 |
| 09-Aug-2023 |
Boris Brezillon <[email protected]> |
PM / devfreq: Fix leak in devfreq_dev_release()
srcu_init_notifier_head() allocates resources that need to be released with a srcu_cleanup_notifier_head() call.
Reported by kmemleak.
Fixes: 0fe3a6
PM / devfreq: Fix leak in devfreq_dev_release()
srcu_init_notifier_head() allocates resources that need to be released with a srcu_cleanup_notifier_head() call.
Reported by kmemleak.
Fixes: 0fe3a66410a3 ("PM / devfreq: Add new DEVFREQ_TRANSITION_NOTIFIER notifier") Cc: <[email protected]> Signed-off-by: Boris Brezillon <[email protected]> Reviewed-by: Dhruva Gole <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
|
Revision tags: v6.5-rc5, v6.5-rc4, v6.5-rc3 |
|
| #
c46de2fb |
| 20-Jul-2023 |
Manivannan Sadhasivam <[email protected]> |
PM / devfreq: Reword the kernel-doc comment for devfreq_monitor_start() API
Current kernel-doc comment doesn't specify the default timer used for the load monitoring. Also, it uses the term "default
PM / devfreq: Reword the kernel-doc comment for devfreq_monitor_start() API
Current kernel-doc comment doesn't specify the default timer used for the load monitoring. Also, it uses the term "default delayed work" which could be misunderstood as "default delayer timer". So reword the comment to clearly specify the default timer and also reword the last sentence to make it more understandable.
Signed-off-by: Manivannan Sadhasivam <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
|
Revision tags: v6.5-rc2, v6.5-rc1, v6.4, v6.4-rc7, v6.4-rc6, v6.4-rc5, v6.4-rc4, v6.4-rc3, v6.4-rc2, v6.4-rc1, v6.3, v6.3-rc7, v6.3-rc6, v6.3-rc5, v6.3-rc4, v6.3-rc3 |
|
| #
1aaba11d |
| 13-Mar-2023 |
Greg Kroah-Hartman <[email protected]> |
driver core: class: remove module * from class_create()
The module pointer in class_create() never actually did anything, and it shouldn't have been requred to be set as a parameter even if it did s
driver core: class: remove module * from class_create()
The module pointer in class_create() never actually did anything, and it shouldn't have been requred to be set as a parameter even if it did something. So just remove it and fix up all callers of the function in the kernel tree at the same time.
Cc: "Rafael J. Wysocki" <[email protected]> Acked-by: Benjamin Tissoires <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.3-rc2, v6.3-rc1, v6.2, v6.2-rc8, v6.2-rc7, v6.2-rc6, v6.2-rc5, v6.2-rc4, v6.2-rc3, v6.2-rc2, v6.2-rc1, v6.1, v6.1-rc8, v6.1-rc7 |
|
| #
fba39536 |
| 25-Nov-2022 |
ye xingchen <[email protected]> |
PM / devfreq: Use device_match_of_node()
Replace the open-code with device_match_of_node().
Signed-off-by: ye xingchen <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
|
|
Revision tags: v6.1-rc6, v6.1-rc5, v6.1-rc4, v6.1-rc3 |
|
| #
5fdded84 |
| 25-Oct-2022 |
Kant Fan <[email protected]> |
PM/devfreq: governor: Add a private governor_data for governor
The member void *data in the structure devfreq can be overwrite by governor_userspace. For example: 1. The device driver assigned the d
PM/devfreq: governor: Add a private governor_data for governor
The member void *data in the structure devfreq can be overwrite by governor_userspace. For example: 1. The device driver assigned the devfreq governor to simple_ondemand by the function devfreq_add_device() and init the devfreq member void *data to a pointer of a static structure devfreq_simple_ondemand_data by the function devfreq_add_device(). 2. The user changed the devfreq governor to userspace by the command "echo userspace > /sys/class/devfreq/.../governor". 3. The governor userspace alloced a dynamic memory for the struct userspace_data and assigend the member void *data of devfreq to this memory by the function userspace_init(). 4. The user changed the devfreq governor back to simple_ondemand by the command "echo simple_ondemand > /sys/class/devfreq/.../governor". 5. The governor userspace exited and assigned the member void *data in the structure devfreq to NULL by the function userspace_exit(). 6. The governor simple_ondemand fetched the static information of devfreq_simple_ondemand_data in the function devfreq_simple_ondemand_func() but the member void *data of devfreq was assigned to NULL by the function userspace_exit(). 7. The information of upthreshold and downdifferential is lost and the governor simple_ondemand can't work correctly.
The member void *data in the structure devfreq is designed for a static pointer used in a governor and inited by the function devfreq_add_device(). This patch add an element named governor_data in the devfreq structure which can be used by a governor(E.g userspace) who want to assign a private data to do some private things.
Fixes: ce26c5bb9569 ("PM / devfreq: Add basic governors") Cc: [email protected] # 5.10+ Reviewed-by: Chanwoo Choi <[email protected]> Acked-by: MyungJoo Ham <[email protected]> Signed-off-by: Kant Fan <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
|
Revision tags: v6.1-rc2, v6.1-rc1, v6.0, v6.0-rc7, v6.0-rc6, v6.0-rc5, v6.0-rc4, v6.0-rc3, v6.0-rc2, v6.0-rc1, v5.19, v5.19-rc8, v5.19-rc7, v5.19-rc6, v5.19-rc5 |
|
| #
c9deb748 |
| 28-Jun-2022 |
Mauro Carvalho Chehab <[email protected]> |
PM / devfreq: shut up kernel-doc warnings
There are 4 warnings there: drivers/devfreq/devfreq.c:707: warning: Function parameter or member 'val' not described in 'qos_min_notifier_call' drivers/de
PM / devfreq: shut up kernel-doc warnings
There are 4 warnings there: drivers/devfreq/devfreq.c:707: warning: Function parameter or member 'val' not described in 'qos_min_notifier_call' drivers/devfreq/devfreq.c:707: warning: Function parameter or member 'ptr' not described in 'qos_min_notifier_call' drivers/devfreq/devfreq.c:717: warning: Function parameter or member 'val' not described in 'qos_max_notifier_call' drivers/devfreq/devfreq.c:717: warning: Function parameter or member 'ptr' not described in 'qos_max_notifier_call'
It turns that neither val nor ptr are actually used on those function, so document as such.
Signed-off-by: Mauro Carvalho Chehab <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
|
Revision tags: v5.19-rc4 |
|
| #
b5d281f6 |
| 19-Jun-2022 |
Christian Marangi <[email protected]> |
PM / devfreq: Rework freq_table to be local to devfreq struct
On a devfreq PROBE_DEFER, the freq_table in the driver profile struct, is never reset and may be leaved in an undefined state.
This com
PM / devfreq: Rework freq_table to be local to devfreq struct
On a devfreq PROBE_DEFER, the freq_table in the driver profile struct, is never reset and may be leaved in an undefined state.
This comes from the fact that we store the freq_table in the driver profile struct that is commonly defined as static and not reset on PROBE_DEFER. We currently skip the reinit of the freq_table if we found it's already defined since a driver may declare his own freq_table.
This logic is flawed in the case devfreq core generate a freq_table, set it in the profile struct and then PROBE_DEFER, freeing the freq_table. In this case devfreq will found a NOT NULL freq_table that has been freed, skip the freq_table generation and probe the driver based on the wrong table.
To fix this and correctly handle PROBE_DEFER, use a local freq_table and max_state in the devfreq struct and never modify the freq_table present in the profile struct if it does provide it.
Fixes: 0ec09ac2cebe ("PM / devfreq: Set the freq_table of devfreq device") Cc: [email protected] Signed-off-by: Christian Marangi <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
|
Revision tags: v5.19-rc3 |
|
| #
e52b045f |
| 14-Jun-2022 |
Christian 'Ansuel' Marangi <[email protected]> |
PM / devfreq: Mute warning on governor PROBE_DEFER
Don't print warning when a governor PROBE_DEFER as it's not a real GOV_START fail.
Fixes: a03dacb0316f ("PM / devfreq: Add cpu based scaling suppo
PM / devfreq: Mute warning on governor PROBE_DEFER
Don't print warning when a governor PROBE_DEFER as it's not a real GOV_START fail.
Fixes: a03dacb0316f ("PM / devfreq: Add cpu based scaling support to passive governor") Signed-off-by: Christian 'Ansuel' Marangi <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
|
Revision tags: v5.19-rc2, v5.19-rc1, v5.18, v5.18-rc7, v5.18-rc6, v5.18-rc5, v5.18-rc4, v5.18-rc3, v5.18-rc2, v5.18-rc1, v5.17, v5.17-rc8, v5.17-rc7, v5.17-rc6, v5.17-rc5, v5.17-rc4, v5.17-rc3, v5.17-rc2, v5.17-rc1, v5.16, v5.16-rc8, v5.16-rc7, v5.16-rc6, v5.16-rc5, v5.16-rc4, v5.16-rc3, v5.16-rc2, v5.16-rc1, v5.15, v5.15-rc7, v5.15-rc6, v5.15-rc5, v5.15-rc4, v5.15-rc3, v5.15-rc2, v5.15-rc1, v5.14, v5.14-rc7, v5.14-rc6, v5.14-rc5, v5.14-rc4, v5.14-rc3, v5.14-rc2, v5.14-rc1, v5.13, v5.13-rc7, v5.13-rc6, v5.13-rc5, v5.13-rc4, v5.13-rc3, v5.13-rc2, v5.13-rc1, v5.12, v5.12-rc8, v5.12-rc7, v5.12-rc6, v5.12-rc5, v5.12-rc4, v5.12-rc3, v5.12-rc2, v5.12-rc1, v5.12-rc1-dontuse |
|
| #
713472e5 |
| 28-Feb-2021 |
Chanwoo Choi <[email protected]> |
PM / devfreq: Export devfreq_get_freq_range symbol within devfreq
In order to get frequency range within devfreq governors, export devfreq_get_freq_range symbol within devfreq.
Reviewed-by: Matthia
PM / devfreq: Export devfreq_get_freq_range symbol within devfreq
In order to get frequency range within devfreq governors, export devfreq_get_freq_range symbol within devfreq.
Reviewed-by: Matthias Kaehlcke <[email protected]> Tested-by: Chen-Yu Tsai <[email protected]> Tested-by: Johnson Wang <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
| #
46674314 |
| 14-Dec-2021 |
Tzung-Bi Shih <[email protected]> |
PM / devfreq: Reduce log severity for informative message
Suppose devfreq_update_status() failure in devfreq_set_target() is not a critical error, reduces the log severity.
Signed-off-by: Tzung-Bi
PM / devfreq: Reduce log severity for informative message
Suppose devfreq_update_status() failure in devfreq_set_target() is not a critical error, reduces the log severity.
Signed-off-by: Tzung-Bi Shih <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
| #
5cf79c29 |
| 29-Sep-2021 |
Samuel Holland <[email protected]> |
PM / devfreq: Strengthen check for freq_table
Since commit ea572f816032 ("PM / devfreq: Change return type of devfreq_set_freq_table()"), all devfreq devices are expected to have a valid freq_table.
PM / devfreq: Strengthen check for freq_table
Since commit ea572f816032 ("PM / devfreq: Change return type of devfreq_set_freq_table()"), all devfreq devices are expected to have a valid freq_table. The devfreq core unconditionally dereferences freq_table in the sysfs code and in get_freq_range().
Therefore, we need to ensure that freq_table is both non-null and non-empty (length is > 0). If either check fails, replace the table using set_freq_table() or return the error.
Signed-off-by: Samuel Holland <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
| #
1cc55204 |
| 20-Sep-2021 |
Dmitry Osipenko <[email protected]> |
PM / devfreq: Add devm_devfreq_add_governor()
Add resource-managed variant of devfreq_add_governor().
Signed-off-by: Dmitry Osipenko <[email protected]> Acked-by: Chanwoo Choi <[email protected]
PM / devfreq: Add devm_devfreq_add_governor()
Add resource-managed variant of devfreq_add_governor().
Signed-off-by: Dmitry Osipenko <[email protected]> Acked-by: Chanwoo Choi <[email protected]> Signed-off-by: Viresh Kumar <[email protected]>
show more ...
|
| #
04c8984a |
| 08-Sep-2021 |
Daniel Lezcano <[email protected]> |
devfreq: use HZ macros
HZ unit conversion macros are available in units.h, use them and remove the duplicate definition.
The new macro has an unsigned long type.
All the code is dealing with unsig
devfreq: use HZ macros
HZ unit conversion macros are available in units.h, use them and remove the duplicate definition.
The new macro has an unsigned long type.
All the code is dealing with unsigned long and the code using the macro is doing a coercitive cast to unsigned long.
Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Daniel Lezcano <[email protected]> Reviewed-by: Christian Eggers <[email protected]> Reviewed-by: Andy Shevchenko <[email protected]> Acked-by: Chanwoo Choi <[email protected]> Cc: Guenter Roeck <[email protected]> Cc: Jonathan Cameron <[email protected]> Cc: Jonathan Cameron <[email protected]> Cc: Kyungmin Park <[email protected]> Cc: Lars-Peter Clausen <[email protected]> Cc: Lukasz Luba <[email protected]> Cc: Maxime Coquelin <[email protected]> Cc: Miquel Raynal <[email protected]> Cc: MyungJoo Ham <[email protected]> Cc: Peter Meerwald <[email protected]> Cc: "Rafael J. Wysocki" <[email protected]> Cc: Zhang Rui <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
show more ...
|
| #
18b380ed |
| 14-May-2021 |
YueHaibing <[email protected]> |
PM / devfreq: Add missing error code in devfreq_add_device()
Set err code in the error path before jumping to the end of the function.
Fixes: 4dc3bab8687f ("PM / devfreq: Add support delayed timer
PM / devfreq: Add missing error code in devfreq_add_device()
Set err code in the error path before jumping to the end of the function.
Fixes: 4dc3bab8687f ("PM / devfreq: Add support delayed timer for polling mode") Signed-off-by: YueHaibing <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
| #
62453f1b |
| 23-Mar-2021 |
Dong Aisheng <[email protected]> |
PM / devfreq: Use more accurate returned new_freq as resume_freq
Use the more accurate returned new_freq as resume_freq. It's the same as how devfreq->previous_freq was updated.
Fixes: 83f8ca45afbf
PM / devfreq: Use more accurate returned new_freq as resume_freq
Use the more accurate returned new_freq as resume_freq. It's the same as how devfreq->previous_freq was updated.
Fixes: 83f8ca45afbf0 ("PM / devfreq: add support for suspend/resume of a devfreq device") Signed-off-by: Dong Aisheng <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
| #
8b50a799 |
| 15-Mar-2021 |
Lukasz Luba <[email protected]> |
PM / devfreq: Unlock mutex and free devfreq struct in error path
The devfreq->lock is held for time of setup. Release the lock in the error path, before jumping to the end of the function.
Change t
PM / devfreq: Unlock mutex and free devfreq struct in error path
The devfreq->lock is held for time of setup. Release the lock in the error path, before jumping to the end of the function.
Change the goto destination which frees the allocated memory.
Cc: v5.9+ <[email protected]> # v5.9+ Fixes: 4dc3bab8687f ("PM / devfreq: Add support delayed timer for polling mode") Signed-off-by: Lukasz Luba <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
| #
1224451b |
| 08-Mar-2021 |
Daniel Lezcano <[email protected]> |
PM / devfreq: Register devfreq as a cooling device on demand
Currently the default behavior is to manually having the devfreq backend to register themselves as a devfreq cooling device.
Instead of
PM / devfreq: Register devfreq as a cooling device on demand
Currently the default behavior is to manually having the devfreq backend to register themselves as a devfreq cooling device.
Instead of adding the code in the drivers for the thermal cooling device registering, let's provide a flag in the devfreq's profile to tell the common devfreq code to register the newly created devfreq as a cooling device.
Suggested-by: Chanwoo Choi <[email protected]> Signed-off-by: Daniel Lezcano <[email protected]> Reviewed-by: Steven Price <[email protected]> Reviewed-by: Lukasz Luba <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
|
Revision tags: v5.11, v5.11-rc7 |
|
| #
26f9c7cc |
| 04-Feb-2021 |
Saravana Kannan <[email protected]> |
PM / devfreq: Cache OPP table reference in devfreq
The OPP table can be used often in devfreq. Trying to get it each time can be expensive, so cache it in the devfreq struct.
Signed-off-by: Saravan
PM / devfreq: Cache OPP table reference in devfreq
The OPP table can be used often in devfreq. Trying to get it each time can be expensive, so cache it in the devfreq struct.
Signed-off-by: Saravana Kannan <[email protected]> Acked-by: MyungJoo Ham <[email protected]> Acked-by: Chanwoo Choi <[email protected]> Signed-off-by: Hsin-Yi Wang <[email protected]> [ Viresh: Added a blank line ] Signed-off-by: Viresh Kumar <[email protected]>
show more ...
|
|
Revision tags: v5.11-rc6, v5.11-rc5, v5.11-rc4, v5.11-rc3, v5.11-rc2, v5.11-rc1 |
|
| #
ec894883 |
| 16-Dec-2020 |
pierre Kuo <[email protected]> |
PM / devfreq: Replace devfreq->dev.parent as dev in devfreq_add_device
In devfreq_add_device, replace devfreq->dev.parent as dev to keep code simple.
Signed-off-by: pierre Kuo <[email protected]>
PM / devfreq: Replace devfreq->dev.parent as dev in devfreq_add_device
In devfreq_add_device, replace devfreq->dev.parent as dev to keep code simple.
Signed-off-by: pierre Kuo <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
|
Revision tags: v5.10, v5.10-rc7, v5.10-rc6, v5.10-rc5, v5.10-rc4, v5.10-rc3, v5.10-rc2, v5.10-rc1 |
|
| #
96ffcdf2 |
| 20-Oct-2020 |
Chanwoo Choi <[email protected]> |
PM / devfreq: Remove redundant governor_name from struct devfreq
The devfreq structure instance contains the governor_name and a governor instance. When need to show the governor name, better to use
PM / devfreq: Remove redundant governor_name from struct devfreq
The devfreq structure instance contains the governor_name and a governor instance. When need to show the governor name, better to use the name of devfreq_governor structure. So, governor_name variable in struct devfreq is a redundant and unneeded variable. Remove the redundant governor_name of struct devfreq and then use the name of devfreq_governor instance.
Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|
|
Revision tags: v5.9, v5.9-rc8, v5.9-rc7, v5.9-rc6, v5.9-rc5, v5.9-rc4, v5.9-rc3, v5.9-rc2, v5.9-rc1, v5.8, v5.8-rc7, v5.8-rc6, v5.8-rc5, v5.8-rc4 |
|
| #
5f1a9066 |
| 03-Jul-2020 |
Chanwoo Choi <[email protected]> |
PM / devfreq: Add governor attribute flag for specifc sysfs nodes
DEVFREQ supports the default governors like performance, simple_ondemand and also allows the devfreq driver to add their own governo
PM / devfreq: Add governor attribute flag for specifc sysfs nodes
DEVFREQ supports the default governors like performance, simple_ondemand and also allows the devfreq driver to add their own governor like tegra30-devfreq.c according to their requirement. In result, some sysfs attributes are useful or not useful. Prior to that the user can access all sysfs attributes regardless of the available attributes.
So, clarify the access permission of sysfs attributes according to governor. When adding the devfreq governor, can specify the available attribute information by using DEVFREQ_GOV_ATTR_* constant variable. The user can read or write the sysfs attributes in accordance to the specified attributes.
When adding the governor, can add the following attributes according to the governor feature.
[Definition for speific sysfs attributes] - DEVFREQ_GOV_ATTR_POLLING_INTERVAL to update polling interval for timer. : /sys/class/devfreq/[devfreq dev name]/polling_interval - DEVFREQ_GOV_ATTR_TIMER to change the type of timer on either deferrable or dealyed timer. : /sys/class/devfreq/[devfreq dev name]/timer
And all devfreq governors have to support the following common attributes. The common attributes are added to devfreq class by default. - governor - available_governors - available_frequencies - cur_freq - target_freq - min_freq - max_freq - trans_stat
[Table of governor attribute flags for devfreq governors] ------------------------------------------------------------------------------ | simple | perfor | power | user | passive | tegra30 | ondemand | mance | save | space| | ------------------------------------------------------------------------------ governor | O | O | O | O | O | O available_governors | O | O | O | O | O | O available_frequencies | O | O | O | O | O | O cur_freq | O | O | O | O | O | O target_freq | O | O | O | O | O | O min_freq | O | O | O | O | O | O max_freq | O | O | O | O | O | O trans_stat | O | O | O | O | O | O -------------------------------------------------------- polling_interval | O | X | X | X | X | O timer | O | X | X | X | X | X ------------------------------------------------------------------------------
Reviewed-by: Dmitry Osipenko <[email protected]> Tested-by: Dmitry Osipenko <[email protected]> Signed-off-by: Chanwoo Choi <[email protected]>
show more ...
|