From b931a152bde2e1ac3a548f9e20020555f7607721 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Mon, 3 Jul 2006 00:25:10 -0700 Subject: [PATCH] --- yaml --- r: 31821 b: refs/heads/master c: d730e882a15c38de02b63a063be636b2ff9e9ed1 h: refs/heads/master i: 31819: 7cec5ad52cd718fced3f919e7427e35ac3c2322a v: v3 --- [refs] | 2 +- trunk/kernel/timer.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index f2016987684e..472873d70d75 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 06825ba3553151eea24206bc53d4fc3de49e0ab1 +refs/heads/master: d730e882a15c38de02b63a063be636b2ff9e9ed1 diff --git a/trunk/kernel/timer.c b/trunk/kernel/timer.c index 4dd9a10d67d0..b761898d04c8 100644 --- a/trunk/kernel/timer.c +++ b/trunk/kernel/timer.c @@ -1559,6 +1559,13 @@ asmlinkage long sys_sysinfo(struct sysinfo __user *info) return 0; } +/* + * lockdep: we want to track each per-CPU base as a separate lock-class, + * but timer-bases are kmalloc()-ed, so we need to attach separate + * keys to them: + */ +static struct lock_class_key base_lock_keys[NR_CPUS]; + static int __devinit init_timers_cpu(int cpu) { int j; @@ -1594,6 +1601,8 @@ static int __devinit init_timers_cpu(int cpu) } spin_lock_init(&base->lock); + lockdep_set_class(&base->lock, base_lock_keys + cpu); + for (j = 0; j < TVN_SIZE; j++) { INIT_LIST_HEAD(base->tv5.vec + j); INIT_LIST_HEAD(base->tv4.vec + j);