Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-sched-devel

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-sched-devel:
keep rd->online and cpu_online_map in sync
Revert "cpu hotplug: adjust root-domain->online span in response to hotplug event"

+13 -8
+13 -8
kernel/sched.c
··· 5813 5813 /* Must be high prio: stop_machine expects to yield to it. */ 5814 5814 rq = task_rq_lock(p, &flags); 5815 5815 __setscheduler(rq, p, SCHED_FIFO, MAX_RT_PRIO-1); 5816 - 5817 - /* Update our root-domain */ 5818 - if (rq->rd) { 5819 - BUG_ON(!cpu_isset(cpu, rq->rd->span)); 5820 - cpu_set(cpu, rq->rd->online); 5821 - } 5822 - 5823 5816 task_rq_unlock(rq, &flags); 5824 5817 cpu_rq(cpu)->migration_thread = p; 5825 5818 break; ··· 5821 5828 case CPU_ONLINE_FROZEN: 5822 5829 /* Strictly unnecessary, as first user will wake it. */ 5823 5830 wake_up_process(cpu_rq(cpu)->migration_thread); 5831 + 5832 + /* Update our root-domain */ 5833 + rq = cpu_rq(cpu); 5834 + spin_lock_irqsave(&rq->lock, flags); 5835 + if (rq->rd) { 5836 + BUG_ON(!cpu_isset(cpu, rq->rd->span)); 5837 + cpu_set(cpu, rq->rd->online); 5838 + } 5839 + spin_unlock_irqrestore(&rq->lock, flags); 5824 5840 break; 5825 5841 5826 5842 #ifdef CONFIG_HOTPLUG_CPU ··· 5881 5879 spin_unlock_irq(&rq->lock); 5882 5880 break; 5883 5881 5884 - case CPU_DOWN_PREPARE: 5882 + case CPU_DYING: 5883 + case CPU_DYING_FROZEN: 5885 5884 /* Update our root-domain */ 5886 5885 rq = cpu_rq(cpu); 5887 5886 spin_lock_irqsave(&rq->lock, flags); ··· 6106 6103 rq->rd = rd; 6107 6104 6108 6105 cpu_set(rq->cpu, rd->span); 6106 + if (cpu_isset(rq->cpu, cpu_online_map)) 6107 + cpu_set(rq->cpu, rd->online); 6109 6108 6110 6109 for (class = sched_class_highest; class; class = class->next) { 6111 6110 if (class->join_domain)