- 11 2月, 2016 1 次提交
-
-
由 Javi Merino 提交于
In __cpufreq_cooling_register() we allocate the arrays for time_in_idle and time_in_idle_timestamp to be as big as the number of cpus in this cpufreq device. However, in get_load() we access this array using the cpu number as index, which can result in an out of bound access. Index time_in_idle{,_timestamp} using the index in the cpufreq_device's allowed_cpus mask, as we do for the load_cpu array in cpufreq_get_requested_power() Reported-by: NNicolas Boichat <drinkcat@chromium.org> Cc: Amit Daniel Kachhap <amit.kachhap@gmail.com> Cc: Zhang Rui <rui.zhang@intel.com> Cc: Eduardo Valentin <edubezval@gmail.com> Tested-by: NNicolas Boichat <drinkcat@chromium.org> Acked-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NJavi Merino <javi.merino@arm.com> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
- 10 10月, 2015 1 次提交
-
-
由 Vaishali Thakkar 提交于
In the function cpufreq_get_requested_power, the memory allocated for load_cpu is live within the function only. And after the allocation it is immediately freed with devm_kfree. There is no need to allocate memory for load_cpu with devm function so replace devm_kcalloc with kcalloc and devm_kfree with kfree. Signed-off-by: NVaishali Thakkar <vthakkar1994@gmail.com> Acked-by: NViresh Kumar <viresh.kumar@linaro.org> Acked-by: NJavi Merino <javi.merino@arm.com> Signed-off-by: NZhang Rui <rui.zhang@intel.com>
-
- 14 9月, 2015 2 次提交
-
-
由 Javi Merino 提交于
The power table is not being freed on error from cpufreq_cooling register or when unregistering. Free it. Fixes: c36cf071 ("thermal: cpu_cooling: implement the power cooling device API") Cc: Zhang Rui <rui.zhang@intel.com> Cc: Eduardo Valentin <edubezval@gmail.com> Signed-off-by: NJavi Merino <javi.merino@arm.com> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Javi Merino 提交于
build_dyn_power_table() allocates the power table while holding rcu_read_lock. kcalloc using GFP_KERNEL may sleep, so it can't be called in an RCU read-side path. Move the rcu protection to the part of the function that really needs it: the part that handles the dev_pm_opp pointer received from dev_pm_opp_find_freq_ceil(). In the unlikely case that there is an OPP added to the cpu while this function is running, return -EAGAIN. Fixes: c36cf071 ("thermal: cpu_cooling: implement the power cooling device API") Cc: Zhang Rui <rui.zhang@intel.com> Cc: Eduardo Valentin <edubezval@gmail.com> Signed-off-by: NJavi Merino <javi.merino@arm.com> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
- 15 8月, 2015 7 次提交
-
-
由 Viresh Kumar 提交于
policy->max is the maximum allowed frequency defined by user and clipped_freq is the maximum that thermal constraints allow. If clipped_freq is lower than policy->max, then we need to readjust policy->max. But, if clipped_freq is greater than policy->max, we don't need to do anything. We used to call cpufreq_verify_within_limits() in this case, but it doesn't change anything in this case. Lets skip this unnecessary call and write a comment that explains this. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
That's what it is for, lets name it properly. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
That's what it is for, lets name it properly. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
We just need to take care of single event here and there is no need to increase indentation level of most of the code (which causes lines longer that 80 columns to break). Kill the switch block. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
If a valid cpufreq_dev is found for policy->cpu, we should update the policy and quit the for loop. There is no need to keep traversing the list of cpufreq_dev's. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
Its always set before getting used, don't initialize it. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Russell King 提交于
A recent change to the cpu_cooling code introduced a AB-BA deadlock scenario between the cpufreq_policy_notifier_list rwsem and the cooling_cpufreq_lock. This is caused by cooling_cpufreq_lock being held before the registration/removal of the notifier block (an operation which takes the rwsem), and the notifier code itself which takes the locks in the reverse order: ====================================================== [ INFO: possible circular locking dependency detected ] 3.18.0+ #1453 Not tainted ------------------------------------------------------- rc.local/770 is trying to acquire lock: (cooling_cpufreq_lock){+.+.+.}, at: [<c04abfc4>] cpufreq_thermal_notifier+0x34/0xfc but task is already holding lock: ((cpufreq_policy_notifier_list).rwsem){++++.+}, at: [<c0042f04>] __blocking_notifier_call_chain+0x34/0x68 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 ((cpufreq_policy_notifier_list).rwsem){++++.+}: [<c06bc3b0>] down_write+0x44/0x9c [<c0043444>] blocking_notifier_chain_register+0x28/0xd8 [<c04ad610>] cpufreq_register_notifier+0x68/0x90 [<c04abe4c>] __cpufreq_cooling_register.part.1+0x120/0x180 [<c04abf44>] __cpufreq_cooling_register+0x98/0xa4 [<c04abf8c>] cpufreq_cooling_register+0x18/0x1c [<bf0046f8>] imx_thermal_probe+0x1c0/0x470 [imx_thermal] [<c037cef8>] platform_drv_probe+0x50/0xac [<c037b710>] driver_probe_device+0x114/0x234 [<c037b8cc>] __driver_attach+0x9c/0xa0 [<c0379d68>] bus_for_each_dev+0x5c/0x90 [<c037b204>] driver_attach+0x24/0x28 [<c037ae7c>] bus_add_driver+0xe0/0x1d8 [<c037c0cc>] driver_register+0x80/0xfc [<c037cd80>] __platform_driver_register+0x50/0x64 [<bf007018>] 0xbf007018 [<c0008a5c>] do_one_initcall+0x88/0x1d8 [<c0095da4>] load_module+0x1768/0x1ef8 [<c0096614>] SyS_init_module+0xe0/0xf4 [<c000ec00>] ret_fast_syscall+0x0/0x48 -> #0 (cooling_cpufreq_lock){+.+.+.}: [<c00619f8>] lock_acquire+0xb0/0x124 [<c06ba3b4>] mutex_lock_nested+0x5c/0x3d8 [<c04abfc4>] cpufreq_thermal_notifier+0x34/0xfc [<c0042bf4>] notifier_call_chain+0x4c/0x8c [<c0042f20>] __blocking_notifier_call_chain+0x50/0x68 [<c0042f58>] blocking_notifier_call_chain+0x20/0x28 [<c04ae62c>] cpufreq_set_policy+0x7c/0x1d0 [<c04af3cc>] store_scaling_governor+0x74/0x9c [<c04ad418>] store+0x90/0xc0 [<c0175384>] sysfs_kf_write+0x54/0x58 [<c01746b4>] kernfs_fop_write+0xdc/0x190 [<c010dcc0>] vfs_write+0xac/0x1b4 [<c010dfec>] SyS_write+0x44/0x90 [<c000ec00>] ret_fast_syscall+0x0/0x48 other info that might help us debug this: Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock((cpufreq_policy_notifier_list).rwsem); lock(cooling_cpufreq_lock); lock((cpufreq_policy_notifier_list).rwsem); lock(cooling_cpufreq_lock); *** DEADLOCK *** 7 locks held by rc.local/770: #0: (sb_writers#6){.+.+.+}, at: [<c010dda0>] vfs_write+0x18c/0x1b4 #1: (&of->mutex){+.+.+.}, at: [<c0174678>] kernfs_fop_write+0xa0/0x190 #2: (s_active#52){.+.+.+}, at: [<c0174680>] kernfs_fop_write+0xa8/0x190 #3: (cpu_hotplug.lock){++++++}, at: [<c0026a60>] get_online_cpus+0x34/0x90 #4: (cpufreq_rwsem){.+.+.+}, at: [<c04ad3e0>] store+0x58/0xc0 #5: (&policy->rwsem){+.+.+.}, at: [<c04ad3f8>] store+0x70/0xc0 #6: ((cpufreq_policy_notifier_list).rwsem){++++.+}, at: [<c0042f04>] __blocking_notifier_call_chain+0x34/0x68 stack backtrace: CPU: 0 PID: 770 Comm: rc.local Not tainted 3.18.0+ #1453 Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree) Backtrace: [<c00121c8>] (dump_backtrace) from [<c0012360>] (show_stack+0x18/0x1c) r6:c0b85a80 r5:c0b75630 r4:00000000 r3:00000000 [<c0012348>] (show_stack) from [<c06b6c48>] (dump_stack+0x7c/0x98) [<c06b6bcc>] (dump_stack) from [<c06b42a4>] (print_circular_bug+0x28c/0x2d8) r4:c0b85a80 r3:d0071d40 [<c06b4018>] (print_circular_bug) from [<c00613b0>] (__lock_acquire+0x1acc/0x1bb0) r10:c0b50660 r8:c09e6d80 r7:d0071d40 r6:c11d0f0c r5:00000007 r4:d0072240 [<c005f8e4>] (__lock_acquire) from [<c00619f8>] (lock_acquire+0xb0/0x124) r10:00000000 r9:c04abfc4 r8:00000000 r7:00000000 r6:00000000 r5:c0a06f0c r4:00000000 [<c0061948>] (lock_acquire) from [<c06ba3b4>] (mutex_lock_nested+0x5c/0x3d8) r10:ec853800 r9:c0a06ed4 r8:d0071d40 r7:c0a06ed4 r6:c11d0f0c r5:00000000 r4:c04abfc4 [<c06ba358>] (mutex_lock_nested) from [<c04abfc4>] (cpufreq_thermal_notifier+0x34/0xfc) r10:ec853800 r9:ec85380c r8:d00d7d3c r7:c0a06ed4 r6:d00d7d3c r5:00000000 r4:fffffffe [<c04abf90>] (cpufreq_thermal_notifier) from [<c0042bf4>] (notifier_call_chain+0x4c/0x8c) r7:00000000 r6:00000000 r5:00000000 r4:fffffffe [<c0042ba8>] (notifier_call_chain) from [<c0042f20>] (__blocking_notifier_call_chain+0x50/0x68) r8:c0a072a4 r7:00000000 r6:d00d7d3c r5:ffffffff r4:c0a06fc8 r3:ffffffff [<c0042ed0>] (__blocking_notifier_call_chain) from [<c0042f58>] (blocking_notifier_call_chain+0x20/0x28) r7:ec98b540 r6:c13ebc80 r5:ed76e600 r4:d00d7d3c [<c0042f38>] (blocking_notifier_call_chain) from [<c04ae62c>] (cpufreq_set_policy+0x7c/0x1d0) [<c04ae5b0>] (cpufreq_set_policy) from [<c04af3cc>] (store_scaling_governor+0x74/0x9c) r7:ec98b540 r6:0000000c r5:ec98b540 r4:ed76e600 [<c04af358>] (store_scaling_governor) from [<c04ad418>] (store+0x90/0xc0) r6:0000000c r5:ed76e6d4 r4:ed76e600 [<c04ad388>] (store) from [<c0175384>] (sysfs_kf_write+0x54/0x58) r8:0000000c r7:d00d7f78 r6:ec98b540 r5:0000000c r4:ec853800 r3:0000000c [<c0175330>] (sysfs_kf_write) from [<c01746b4>] (kernfs_fop_write+0xdc/0x190) r6:ec98b540 r5:00000000 r4:00000000 r3:c0175330 [<c01745d8>] (kernfs_fop_write) from [<c010dcc0>] (vfs_write+0xac/0x1b4) r10:0162aa70 r9:d00d6000 r8:0000000c r7:d00d7f78 r6:0162aa70 r5:0000000c r4:eccde500 [<c010dc14>] (vfs_write) from [<c010dfec>] (SyS_write+0x44/0x90) r10:0162aa70 r8:0000000c r7:eccde500 r6:eccde500 r5:00000000 r4:00000000 [<c010dfa8>] (SyS_write) from [<c000ec00>] (ret_fast_syscall+0x0/0x48) r10:00000000 r8:c000edc4 r7:00000004 r6:000216cc r5:0000000c r4:0162aa70 Solve this by moving to finer grained locking - use one mutex to protect the cpufreq_dev_list as a whole, and a separate lock to ensure correct ordering of cpufreq notifier registration and removal. cooling_list_lock is taken within cooling_cpufreq_lock on (un)registration to preserve the behavior of the code, i.e. to atomically add/remove to the list and (un)register the notifier. Fixes: 2dcd851f ("thermal: cpu_cooling: Update always cpufreq policy with Reviewed-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
- 05 5月, 2015 5 次提交
-
-
由 Kapileshwar Singh 提交于
Ensure that the CPU for which the frequency is being requested is online. If none of the CPUs are online the requested power is returned as 0. Acked-by: NJavi Merino <javi.merino@arm.com> Signed-off-by: NKapileshwar Singh <kapileshwar.singh@arm.com> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Kapileshwar Singh 提交于
It was initially understood that an update to the cpu_device (cached in cpufreq_cooling_device) was required to ascertain the correct operating point of the device on a cpufreq policy->cpu update or creation or deletion of a cpufreq policy. (e.g. when the existing policy CPU goes offline). This update is not required and it is possible to ascertain the OPPs from the leading CPU in a cpufreq domain even if the CPU is hotplugged out. Fixes: e0128d8ab423 ("thermal: cpu_cooling: implement the power cooling device API") Acked-by: NJavi Merino <javi.merino@arm.com> Signed-off-by: NKapileshwar Singh <kapileshwar.singh@arm.com> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Javi Merino 提交于
We allocate the power_table in memory but we don't test whether the allocation succeeded. Return -ENOMEM if kcalloc() fails. Fixes: e0128d8ab423 ("thermal: cpu_cooling: implement the power cooling device API") Cc: Eduardo Valentin <edubezval@gmail.com> Cc: Zhang Rui <rui.zhang@intel.com> Reported-by: Nkbuild test robot <fengguang.wu@intel.com> Signed-off-by: NJavi Merino <javi.merino@arm.com> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Javi Merino 提交于
Add trace events for the power allocator governor and the power actor interface of the cpu cooling device. Cc: Zhang Rui <rui.zhang@intel.com> Cc: Eduardo Valentin <edubezval@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@redhat.com> Acked-by: NSteven Rostedt <rostedt@goodmis.org> Signed-off-by: NJavi Merino <javi.merino@arm.com> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Javi Merino 提交于
Add a basic power model to the cpu cooling device to implement the power cooling device API. The power model uses the current frequency, current load and OPPs for the power calculations. The cpus must have registered their OPPs using the OPP library. Cc: Zhang Rui <rui.zhang@intel.com> Cc: Eduardo Valentin <edubezval@gmail.com> Signed-off-by: NKapileshwar Singh <kapileshwar.singh@arm.com> Signed-off-by: NPunit Agrawal <punit.agrawal@arm.com> Signed-off-by: NJavi Merino <javi.merino@arm.com> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
- 21 12月, 2014 1 次提交
-
-
由 Javi Merino 提交于
The node field of struct cpufreq_cooling_device was reintroduced in 2dcd851f (thermal: cpu_cooling: Update always cpufreq policy with thermal constraints) but without the documentation that it once had. Add it back so that all the fields of struct cpufreq_cooling_device are documented. Cc: Yadwinder Singh Brar <yadi.brar@samsung.com> Cc: Eduardo Valentin <edubezval@gmail.com> Cc: Zhang Rui <rui.zhang@intel.com> Signed-off-by: NJavi Merino <javi.merino@arm.com> Signed-off-by: NZhang Rui <rui.zhang@intel.com>
-
- 17 12月, 2014 1 次提交
-
-
由 Dan Carpenter 提交于
There was a left over return here so the error handling isn't run. It leads to a small memory leak and a static checker warning. drivers/thermal/cpu_cooling.c:351 __cpufreq_cooling_register() info: ignoring unreachable code. Fixes: f6859014 ("thermal: cpu_cooling: Store frequencies in descending order") Acked-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
- 09 12月, 2014 22 次提交
-
-
由 Viresh Kumar 提交于
Adding my copyright information for two purposes: - To get cc'd for future patches to review (Only if people read this header while sending mail) - Have done enough changes to earn a place here? Cc: Amit Daniel Kachhap <amit.daniel@samsung.com> Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
get_property() was an over complicated beast with BUGs. It used to believe that cpufreq table is present in ascending or descending order, which might not always be true. Previous patch has created another freq table in descending order for us and we better use it now. With that get_property() simply goes away and another helper get_level() comes in. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
CPUFreq framework *doesn't* guarantee that frequencies present in cpufreq table will be in ascending or descending order. But cpu_cooling somehow assumes that. Probably because most of current users are creating this list from DT, which is done with the help of OPP layer. And OPP layer creates the list in ascending order of frequencies. But cpu_cooling can be used for other platforms too, which don't have frequencies arranged in any order. This patch tries to fix this issue by creating another list of valid frequencies in descending order. Care is also taken to throw warnings for duplicate entries. Later patches would use it to simplify code. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
We already know the value of 'cpufreq_dev->max_level' and so there is no need calculating that once again. For this, we need to send 'cpufreq_dev' to get_property(). Make all necessary changes for this change. Because cpufreq_cooling_get_level() doesn't have access to 'cpufreq_dev', it is updated to iterate over the list of cpufreq_cooling_devices to get cooling device for the cpu number passed to it. This also makes it robust to return levels only for the CPU registered via a cooling device. We don't have to support anything that isn't registered yet. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
As we already have a list of cpufreq_cooling_devices now, lets use it instead of a local counter. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
We don't use get_property() to find max levels anymore as it is done at boot now. So, don't support GET_MAXL in get_property(). Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
CPU frequency tables don't update after the driver is registered and so we don't need to iterate over them to find total number of states every time cpufreq_get_max_state() is called. Do it once at boot time. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
get_cpu_frequency() isn't doing much by itself, just calling get_property(). And so this wrapper isn't required at all. Get rid of it. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
cpufreq_apply_cooling() has a single caller, cpufreq_set_cur_state() and cpufreq_set_cur_state() is an unnecessary wrapper over cpufreq_apply_cooling(). Get rid of it by merging both routines. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
There is no point checking for validity of 'cpufreq_val' from cpufreq_thermal_notifier() every time the routine is called. Its guaranteed to be 0 on the first call but will be valid otherwise. Lets update it once while the device registers. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
This makes life easy and bug free. And is scalable for future resource allocations. Acked-by: NJavi Merino <javi.merino@arm.com> Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
Because get_cpu_frequency() has returned a valid frequency, it means that the cpufreq policy is surely valid and so no point checking that again with is_cpufreq_valid(). Get rid of the routine as well as there are no more users. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
All CPUs present in 'allowed_cpus' share the same 'struct cpufreq_policy' structure and so calling cpufreq_update_policy() for each of them doesn't make sense. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
In __cpufreq_cooling_register() we try to match min/max frequencies for all CPUs passed in 'clip_cpus' mask. This mask is the cpumask of cpus where the frequency constraints will be applied. Same frequency constraint can be applied only to the CPUs belonging to the same cluster (i.e. CPUs sharing clock line). For all such CPUs we have a single 'struct cpufreq_policy' structure managing them and so getting policies for all CPUs wouldn't make any sense as they will all return the same pointer. So, remove this useless check of checking min/max for all CPUs. Also update doc comment to make this more obvious that clip_cpus should be same as policy->related_cpus. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
We aren't supposed to return our own error type here. Return what we got. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
ret is initialized before it is used, so no need to set it to 0 in its declaration. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
It will be overwritten soon with return value of kzalloc(). Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
Its already zero, we allocated cpufreq_dev with kzalloc. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
Just following coding guidelines here. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
This wasn't explained well anywhere and should be clearly specified. Lets add a top level comment for this. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
cooling_cpufreq_lock isn't used to protect this structure and so the comment over it is outdated. Fix it. Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-
由 Viresh Kumar 提交于
s/give/given Acked-by: NEduardo Valentin <edubezval@gmail.com> Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org> Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
-