From what I can see, __stop_machine() was designed to simplify some of the synchronization issues surrounding CPU hotplug. As you say, there might be an analogy between __stop_machine() and the stop-the-world nature of some garbage collectors. That said, my personal guess is that a more-organized CPU-hotplug notification strategy will help quite a bit, and modifications to the way that CPUs are iterated over will help some more. In contrast, concurrent garbage collectors cannot assume much about the data that they collecting garbage from.