diff options
Diffstat (limited to 'kernel/timer.c')
-rw-r--r-- | kernel/timer.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/kernel/timer.c b/kernel/timer.c index 5a8960253063..396a3c024c2c 100644 --- a/kernel/timer.c +++ b/kernel/timer.c | |||
@@ -1208,7 +1208,7 @@ unsigned long wall_jiffies = INITIAL_JIFFIES; | |||
1208 | * playing with xtime and avenrun. | 1208 | * playing with xtime and avenrun. |
1209 | */ | 1209 | */ |
1210 | #ifndef ARCH_HAVE_XTIME_LOCK | 1210 | #ifndef ARCH_HAVE_XTIME_LOCK |
1211 | seqlock_t xtime_lock __cacheline_aligned_in_smp = SEQLOCK_UNLOCKED; | 1211 | __cacheline_aligned_in_smp DEFINE_SEQLOCK(xtime_lock); |
1212 | 1212 | ||
1213 | EXPORT_SYMBOL(xtime_lock); | 1213 | EXPORT_SYMBOL(xtime_lock); |
1214 | #endif | 1214 | #endif |
@@ -1368,7 +1368,7 @@ asmlinkage long sys_getegid(void) | |||
1368 | 1368 | ||
1369 | static void process_timeout(unsigned long __data) | 1369 | static void process_timeout(unsigned long __data) |
1370 | { | 1370 | { |
1371 | wake_up_process((task_t *)__data); | 1371 | wake_up_process((struct task_struct *)__data); |
1372 | } | 1372 | } |
1373 | 1373 | ||
1374 | /** | 1374 | /** |
@@ -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); |