diff options
| author | Ingo Molnar <mingo@elte.hu> | 2006-07-03 03:25:10 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-03 18:27:07 -0400 |
| commit | d730e882a15c38de02b63a063be636b2ff9e9ed1 (patch) | |
| tree | 89e45dd870d7de3f50b487e87cf0ec1135f912dd /kernel | |
| parent | 06825ba3553151eea24206bc53d4fc3de49e0ab1 (diff) | |
[PATCH] lockdep: annotate timer base locks
Split the per-CPU timer base locks up into separate lock classes, because they
are used recursively.
Has no effect on non-lockdep kernels.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/timer.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/timer.c b/kernel/timer.c index 4dd9a10d67d0..b761898d04c8 100644 --- a/kernel/timer.c +++ b/kernel/timer.c | |||
| @@ -1559,6 +1559,13 @@ asmlinkage long sys_sysinfo(struct sysinfo __user *info) | |||
| 1559 | return 0; | 1559 | return 0; |
| 1560 | } | 1560 | } |
| 1561 | 1561 | ||
| 1562 | /* | ||
| 1563 | * lockdep: we want to track each per-CPU base as a separate lock-class, | ||
| 1564 | * but timer-bases are kmalloc()-ed, so we need to attach separate | ||
| 1565 | * keys to them: | ||
| 1566 | */ | ||
| 1567 | static struct lock_class_key base_lock_keys[NR_CPUS]; | ||
| 1568 | |||
| 1562 | static int __devinit init_timers_cpu(int cpu) | 1569 | static int __devinit init_timers_cpu(int cpu) |
| 1563 | { | 1570 | { |
| 1564 | int j; | 1571 | int j; |
| @@ -1594,6 +1601,8 @@ static int __devinit init_timers_cpu(int cpu) | |||
| 1594 | } | 1601 | } |
| 1595 | 1602 | ||
| 1596 | spin_lock_init(&base->lock); | 1603 | spin_lock_init(&base->lock); |
| 1604 | lockdep_set_class(&base->lock, base_lock_keys + cpu); | ||
| 1605 | |||
| 1597 | for (j = 0; j < TVN_SIZE; j++) { | 1606 | for (j = 0; j < TVN_SIZE; j++) { |
| 1598 | INIT_LIST_HEAD(base->tv5.vec + j); | 1607 | INIT_LIST_HEAD(base->tv5.vec + j); |
| 1599 | INIT_LIST_HEAD(base->tv4.vec + j); | 1608 | INIT_LIST_HEAD(base->tv4.vec + j); |
