{"push_id":724781276,"size":1,"distinct_size":1,"ref":"refs/heads/master","head":"765eb21200b23fb6b1ad835a93d16c963fdf965d","before":"cc72c336e4da50dc310d7aba3bbc9598644a0f38","commits":[{"sha":"765eb21200b23fb6b1ad835a93d16c963fdf965d","author":{"email":"03c7ab1ecfdb127a25ce2b4e2919a11a14c36b4f@codeaurora.org","name":"Michael Bohan"},"message":"hrtimer: Prevent enqueue of hrtimer on dead CPU\n\nDate\tWed, 10 Apr 2013 14:07:48 -0700\n\nWhen switching the hrtimer cpu_base, we briefly allow for\npreemption to become enabled by unlocking the cpu_base lock.\nDuring this time, the CPU corresponding to the new cpu_base\nthat was selected may in fact go offline. In this scenario, the\nhrtimer is enqueued to a CPU that's not online, and therefore\nit never fires.\n\nAs an example, consider this example:\n\nCPU #0                          CPU #1\n----                            ----\n...                             hrtimer_start()\n                                 lock_hrtimer_base()\n                                 switch_hrtimer_base()\n                                  cpu = hrtimer_get_target() -> 1\n                                  spin_unlock(&cpu_base->lock)\n                                <migrate thread to CPU #0>\n                                <offline>\nspin_lock(&new_base->lock)\nthis_cpu = 0\ncpu != this_cpu\nenqueue_hrtimer(cpu_base #1)\nTo prevent this scenario, verify that the CPU corresponding to\nthe new cpu_base is indeed online before selecting it in\nhrtimer_switch_base(). If it's not online, fallback to using the\nbase of the current CPU.\n\nSigned-off-by: Michael Bohan <mbohan@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/VoLTaqe/123/commits/765eb21200b23fb6b1ad835a93d16c963fdf965d"}]}