3.0-stable review patch. If anyone has any objections, please let us know.

------------------

From: Thomas Gleixner <tglx@linutronix.de>

commit c259e01a1ec90063042f758e409cd26b2a0963c8 upstream.

Block-IO and workqueues call into notifier functions from thescheduler core code with interrupts and preemption disabled. Thesecalls should be made before entering the scheduler core.

To simplify this, separate the scheduler core code into__schedule(). __schedule() is directly called from the places whichset PREEMPT_ACTIVE and from schedule(). This allows us to add the workchecks into schedule(), so they are only called when a task voluntarygoes to sleep.