Scheduler fixes:

   - When stime is larger than rtime due to accounting imprecision, then
     utime = rtime - stime becomes negative. As this is unsigned math, the
     result becomes a huge positive number. Cure it by resetting stime to
     rtime in that case, so utime becomes 0.

   - Restore consistent state when sched_cpu_deactivate() fails.

     When offlining a CPU fails in sched_cpu_deactivate() after the SMT
     present counter has been decremented, then the function aborts but
     fails to increment the SMT present counter and leaves it imbalanced.
     Consecutive operations cause it to underflow. Add the missing fixup
     for the error path.

     As SMT accounting the runqueue needs to marked online again in the
     error exit path to restore consistent state.