hrtimer: Prevent enqueue of hrtimer on dead CPU

    When switching the hrtimer cpu_base, we briefly allow for
    preemption to become enabled by unlocking the cpu_base lock.
    During this time, the CPU corresponding to the new cpu_base
    that was selected may in fact go offline. In this scenario, the
    hrtimer is enqueued to a CPU that's not online, and therefore
    it never fires.

    As an example, consider this example:

    CPU #0                          CPU #1
    ----                            ----
    ...                             hrtimer_start()
                                     lock_hrtimer_base()
                                     switch_hrtimer_base()
                                      cpu = hrtimer_get_target() -> 1
                                      spin_unlock(&cpu_base->lock)
                                    <migrate thread to CPU #0>
                                    <offline>
    spin_lock(&new_base->lock)
    this_cpu = 0
    cpu != this_cpu
    enqueue_hrtimer(cpu_base #1)
    To prevent this scenario, verify that the CPU corresponding to
    the new cpu_base is indeed online before selecting it in
    hrtimer_switch_base(). If it's not online, fallback to using the
    base of the current CPU.

    Signed-off-by: Michael Bohan <mbohan@codeaurora.org>