Skip to content

Commit 0f24e11

Browse files
Tengfei FanExactExampl
authored andcommitted
ANDROID: cpufreq: times: Have two spinlock in different cache line
task_time_in_state_lock and uid_lock currently is very possiblly in same cache line that will cause livelock if 2 cores in contention. Change-Id: I644687c4d610af5e84a43f422a711d386d6d5181 Signed-off-by: Tengfei Fan <tengfeif@codeaurora.org> (cherry picked from commit bfea4ae591301043498a214cf6ef4e6250106316)
1 parent 566b7c8 commit 0f24e11

1 file changed

Lines changed: 8 additions & 6 deletions

File tree

drivers/cpufreq/cpufreq_times.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,14 @@
3030

3131
static DECLARE_HASHTABLE(uid_hash_table, UID_HASH_BITS);
3232

33-
static DEFINE_SPINLOCK(task_time_in_state_lock); /* task->time_in_state */
34-
static DEFINE_SPINLOCK(task_concurrent_active_time_lock);
35-
/* task->concurrent_active_time */
36-
static DEFINE_SPINLOCK(task_concurrent_policy_time_lock);
37-
/* task->concurrent_policy_time */
38-
static DEFINE_SPINLOCK(uid_lock); /* uid_hash_table */
33+
/* task->time_in_state */
34+
static __cacheline_aligned_in_smp DEFINE_SPINLOCK(task_time_in_state_lock);
35+
/* task->concurrent_active_time */
36+
static __cacheline_aligned_in_smp DEFINE_SPINLOCK(task_concurrent_active_time_lock);
37+
/* task->concurrent_policy_time */
38+
static __cacheline_aligned_in_smp DEFINE_SPINLOCK(task_concurrent_policy_time_lock);
39+
/* uid_hash_table */
40+
static __cacheline_aligned_in_smp DEFINE_SPINLOCK(uid_lock);
3941

4042
struct concurrent_times {
4143
atomic64_t active[NR_CPUS];

0 commit comments

Comments
 (0)