Tiny little correction: On x86 multi-processor machines, the CPU can be woken from idle by an interrupt or by a write to a designated address in main memory from another CPU. Linux uses* the latter technique to very efficiently wake up a process on one CPU when it receives data from another CPU. This is a big speedup on some workloads.
* This didn't work very well until Linux 3.16.