do_suspend on the unix platforms use spin loops while waiting for the suspendee to suspend. After a while the spin loops are suposed to time out and back out. This mechanism could be better implemented with something that requires less CPU (currently spinning can cause CPU usage to go to 100%) and has a better way of specifying how long to wait before backing out.