Merge git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-sched

* git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-sched:
sched: enable early use of sched_clock()
lockdep: make cli/sti annotation warnings clearer

+15 -5
+9 -4
kernel/lockdep.c
··· 2654 2654 if (!debug_locks) 2655 2655 return; 2656 2656 2657 - if (irqs_disabled_flags(flags)) 2658 - DEBUG_LOCKS_WARN_ON(current->hardirqs_enabled); 2659 - else 2660 - DEBUG_LOCKS_WARN_ON(!current->hardirqs_enabled); 2657 + if (irqs_disabled_flags(flags)) { 2658 + if (DEBUG_LOCKS_WARN_ON(current->hardirqs_enabled)) { 2659 + printk("possible reason: unannotated irqs-off.\n"); 2660 + } 2661 + } else { 2662 + if (DEBUG_LOCKS_WARN_ON(!current->hardirqs_enabled)) { 2663 + printk("possible reason: unannotated irqs-on.\n"); 2664 + } 2665 + } 2661 2666 2662 2667 /* 2663 2668 * We dont accurately track softirq state in e.g.
+6 -1
kernel/sched.c
··· 488 488 489 489 local_irq_save(flags); 490 490 rq = cpu_rq(cpu); 491 - update_rq_clock(rq); 491 + /* 492 + * Only call sched_clock() if the scheduler has already been 493 + * initialized (some code might call cpu_clock() very early): 494 + */ 495 + if (rq->idle) 496 + update_rq_clock(rq); 492 497 now = rq->clock; 493 498 local_irq_restore(flags); 494 499