diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/lockdep.c | 13 | ||||
-rw-r--r-- | kernel/sched.c | 7 |
2 files changed, 15 insertions, 5 deletions
diff --git a/kernel/lockdep.c b/kernel/lockdep.c index 0f38962..723bd9f 100644 --- a/kernel/lockdep.c +++ b/kernel/lockdep.c @@ -2654,10 +2654,15 @@ static void check_flags(unsigned long flags) if (!debug_locks) return; - if (irqs_disabled_flags(flags)) - DEBUG_LOCKS_WARN_ON(current->hardirqs_enabled); - else - DEBUG_LOCKS_WARN_ON(!current->hardirqs_enabled); + if (irqs_disabled_flags(flags)) { + if (DEBUG_LOCKS_WARN_ON(current->hardirqs_enabled)) { + printk("possible reason: unannotated irqs-off.\n"); + } + } else { + if (DEBUG_LOCKS_WARN_ON(!current->hardirqs_enabled)) { + printk("possible reason: unannotated irqs-on.\n"); + } + } /* * We dont accurately track softirq state in e.g. diff --git a/kernel/sched.c b/kernel/sched.c index 67d9d17..c6e551d 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -488,7 +488,12 @@ unsigned long long cpu_clock(int cpu) local_irq_save(flags); rq = cpu_rq(cpu); - update_rq_clock(rq); + /* + * Only call sched_clock() if the scheduler has already been + * initialized (some code might call cpu_clock() very early): + */ + if (rq->idle) + update_rq_clock(rq); now = rq->clock; local_irq_restore(flags); |