Rt Preempt Subpatch Table

Here is a table of rt-preempt sub-patches and the kernel features they introduce and affect:

Sub-patch summaries

 * preempt-smp - spin irq-nicely and request cross-CPU lock-breaks if needed.
 * add break_lock field to spinlock_t and rwlock_t, and add _raw_read_trylock function
 * generic_raw_read_trylock needs to an ARCH-optimized version
 * preempt-cleanup - fixes some issues with cond_resched, and adds need_lockbreak
 * add-lock_need_resched - self-explanatory
 * sched-add-cond_resched_softirq - allows some softirqs-disabled codepaths to preempt
 * *fix-scheduling*, break-latency* - add cond_resched to lots of places
 * add lock_kernel and unlock_kernel in a few places
 * adjust some routines to allow rescheduling better (dependent on PREEMPT and SMP)
 * fix-keventd-execution-dependency - schedule work differently during kevent initialization
 * idle-thread-preemption-fix - disable preemption during bootup (until idle thread is running)
 * remove-the-bkl-by-turning-it-into-a-sempahore - self-explanatory
 * adds _smp_processor_id to help debug incorrect usage of this routine
 * adds add/sub_preempt_count, with debug aids to detect underflows
 * adds DEBUG_PREEMPT to enable both of the above
 * replace current_cpu_data with cpu_data[_smp_processor_id]
 * add PREEMPT_BKL, and change routines lock/unlock_kernel to use a semaphore

Terminology

 * voluntary preempt = add preemption points to PREEMPT kernels (mostly via added calls to cond_resched)
 * might_sleep =
 * latency timing = system for keeping track of preemption request vs. actual preemption occurence
 * this is used to emit warnings when a user-defined threshold is exceeded, and is useful for debugging the preemption features of this patchset
 * latency trace = system for logging preemption-related events