According to <https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO> , the RT-Preempt patch converts Linux into a fully preemptible kernel. The magic is done by:

1. Making in-kernel locking-primitives (using spinlocks) preemptible though reimplementation with rtmutexes.
2. Critical sections protected by i.e. spinlock\_t and rwlock\_t are now preemptible. The creation of non-preemptible sections (in kernel) is still possible with raw\_spinlock\_t (same APIs like spinlock\_t)
3. Implementing priority inheritance for in-kernel mutexes, spinlocks and rw\_semaphores.
4. Converting interrupt handlers into preemptible kernel threads: The RT-Preempt patch treats soft interrupt handlers in kernel thread context, which is represented by a task\_struct like a common userspace process. However it is also possible to register an IRQ in kernel context.
5. Converting the old Linux timer API into separate infrastructures for high resolution kernel timers plus one for timeouts, leading to userspace POSIX timers with high resolution.

Are there any drawbacks of being real-time instead of just multi-tasking?