Hi Kevin,
Added latest RT patches from v4.1.3-rt3
Cheers, Anders
----
The following changes since commit c8bde72f9af412de57f0ceae218d648640118b0b:
Linux 4.1.3 (2015-07-21 10:10:33 -0700)
are available in the git repository at:
git://git.linaro.org/people/anders.roxell/linux-rt.git tags/v4.1.3-rt3-lno1
for you to fetch changes up to 409a9705f61a3e62dadb7172e20f2f422d8241b3:
Merge branch 'v4.1.2-rt1' into v4.1.3-rt3 (2015-07-26 11:14:37 +0200)
---------------------------------------------------------------- Linux 4.1.3-rt3
Changes since v4.1.2-rt1 - fix compile of locktorture. Patch by Wolfgang M. Reimer.
- fix compile pid_namespace without lockdep on ARM. Patch by Grygorii Strashko
- The annoying "cpufreq_stat_notifier_trans: No policy found" is finally gone.
- xor / raid_pq The max latency will increase into the ms range if the raid6_pq is loaded. This should not matter under normal circumstances because that module should only be loaded at boot time if required (and not while a -RT task is active in production). It might also get loaded at run-time manually. Dropping the preempt_disable() might cause different results for the individual implementations. People who don't care (load it at run-time) don't need to load it at all. People who care (load it boot time) would prefer to stick with the best implementation. Therefore I think it is enough to document this (don't load it at run time if you don't need it) and I cross it off my list. Patches are welcome if someone needs / has an improvement.
---------------------------------------------------------------- Allen Pais (2): sparc64: use generic rwsem spinlocks rt sparc64: use generic rwsem spinlocks rt
Anders Roxell (7): arm64: Mark PMU interrupt IRQF_NO_THREAD arm64: Allow forced irq threading arch/arm64: Add lazy preempt support arm64: Mark PMU interrupt IRQF_NO_THREAD arm64: Allow forced irq threading arch/arm64: Add lazy preempt support Merge branch 'v4.1.2-rt1' into v4.1.3-rt3
Benedikt Spranger (4): ARM: AT91: PIT: Remove irq handler when clock event is unused clocksource: TCLIB: Allow higher clock rates for clock events ARM: AT91: PIT: Remove irq handler when clock event is unused clocksource: TCLIB: Allow higher clock rates for clock events
Bogdan Purcareata (2): powerpc/kvm: Disable in-kernel MPIC emulation for PREEMPT_RT_FULL powerpc/kvm: Disable in-kernel MPIC emulation for PREEMPT_RT_FULL
Carsten Emde (6): tracing: Add latency histograms hwlatdetect.patch net: sysrq via icmp tracing: Add latency histograms hwlatdetect.patch net: sysrq via icmp
Clark Williams (4): sysfs: Add /sys/kernel/realtime entry i915: bogus warning from i915 when running on PREEMPT_RT sysfs: Add /sys/kernel/realtime entry i915: bogus warning from i915 when running on PREEMPT_RT
Daniel Wagner (4): work-simple: Simple work queue implemenation thermal: Defer thermal wakups to threads work-simple: Simple work queue implemenation thermal: Defer thermal wakups to threads
David Hildenbrand (28): sched/preempt, mm/fault: Count pagefault_disable() levels in pagefault_disabled mm, uaccess: trigger might_sleep() in might_fault() with disabled pagefaults sched/preempt, futex: Update comments to clarify that preemption doesn't have to be disabled sched/preempt, mm/kmap: Explicitly disable/enable preemption in kmap_atomic_* sched/preempt, mm/kmap, MIPS: Disable preemption in kmap_coherent() explicitly mm/fault, arch: Use pagefault_disable() to check for disabled pagefaults in the handler mm/fault, drm/i915: Use pagefault_disabled() to check for disabled pagefaults sched/preempt, futex: Disable preemption in UP futex_atomic_op_inuser() explicitly sched/preempt, futex: Disable preemption in UP futex_atomic_op_inuser() explicitly sched/preempt, arm/futex: Disable preemption in UP futex_atomic_cmpxchg_inatomic() explicitly sched/preempt, arm/futex: Disable preemption in UP futex_atomic_op_inuser() explicitly sched/preempt, futex: Update comments to clarify that preemption doesn't have to be disabled sched/preempt, MIPS: Properly lock access to the FPU sched/preempt, mm/fault: Decouple preemption from the page fault logic sched/preempt, mm/fault: Count pagefault_disable() levels in pagefault_disabled mm, uaccess: trigger might_sleep() in might_fault() with disabled pagefaults sched/preempt, futex: Update comments to clarify that preemption doesn't have to be disabled sched/preempt, mm/kmap: Explicitly disable/enable preemption in kmap_atomic_* sched/preempt, mm/kmap, MIPS: Disable preemption in kmap_coherent() explicitly mm/fault, arch: Use pagefault_disable() to check for disabled pagefaults in the handler mm/fault, drm/i915: Use pagefault_disabled() to check for disabled pagefaults sched/preempt, futex: Disable preemption in UP futex_atomic_op_inuser() explicitly sched/preempt, futex: Disable preemption in UP futex_atomic_op_inuser() explicitly sched/preempt, arm/futex: Disable preemption in UP futex_atomic_cmpxchg_inatomic() explicitly sched/preempt, arm/futex: Disable preemption in UP futex_atomic_op_inuser() explicitly sched/preempt, futex: Update comments to clarify that preemption doesn't have to be disabled sched/preempt, MIPS: Properly lock access to the FPU sched/preempt, mm/fault: Decouple preemption from the page fault logic
Davidlohr Bueso (4): futex: Implement lockless wakeups ipc/mqueue: Implement lockless pipelined wakeups futex: Implement lockless wakeups ipc/mqueue: Implement lockless pipelined wakeups
Frank Rowand (4): arm: Convert arm boot_lock to raw ARM: Initialize split page table locks for vector page arm: Convert arm boot_lock to raw ARM: Initialize split page table locks for vector page
Grygorii Strashko (1): wait.h: include atomic.h
Ingo Molnar (40): drivers: random: Reduce preempt disabled region drivers/net: Use disable_irq_nosync() in 8139too x86/ioapic: Do not unmask io_apic when interrupt is in progress printk: Add a printk kill switch bug: BUG_ON/WARN_ON variants dependend on RT/!RT ide: Do not disable interrupts for PREEMPT-RT input: gameport: Do not disable interrupts on PREEMPT_RT genirq: Disable irqpoll on -rt mm: page_alloc: rt-friendly per-cpu pages mm/swap: Convert to percpu locked mm/vmstat: Protect per cpu variables with preempt disable on RT mm: Allow only slub on RT ipc: Make the ipc code -rt aware relay: Fix timer madness timers: Prepare for full preemption timers: Preempt-rt support hrtimers: Prepare full preemption stop_machine: convert stop_machine_run() to PREEMPT_RT tasklet: Prevent tasklets from going into infinite spin in RT rt: Improve the serial console PASS_LIMIT drivers: random: Reduce preempt disabled region drivers/net: Use disable_irq_nosync() in 8139too x86/ioapic: Do not unmask io_apic when interrupt is in progress printk: Add a printk kill switch bug: BUG_ON/WARN_ON variants dependend on RT/!RT ide: Do not disable interrupts for PREEMPT-RT input: gameport: Do not disable interrupts on PREEMPT_RT genirq: Disable irqpoll on -rt mm: page_alloc: rt-friendly per-cpu pages mm/swap: Convert to percpu locked mm/vmstat: Protect per cpu variables with preempt disable on RT mm: Allow only slub on RT ipc: Make the ipc code -rt aware relay: Fix timer madness timers: Prepare for full preemption timers: Preempt-rt support hrtimers: Prepare full preemption stop_machine: convert stop_machine_run() to PREEMPT_RT tasklet: Prevent tasklets from going into infinite spin in RT rt: Improve the serial console PASS_LIMIT
Jason Wessel (2): kgdb/serial: Short term workaround kgdb/serial: Short term workaround
John Kacur (4): rwlocks: Fix section mismatch scsi: qla2xxx: Use local_irq_save_nort() in qla2x00_poll rwlocks: Fix section mismatch scsi: qla2xxx: Use local_irq_save_nort() in qla2x00_poll
John Stultz (2): posix-timers: Thread posix-cpu-timers on -rt posix-timers: Thread posix-cpu-timers on -rt
Josh Cartwright (2): lockdep: selftest: fix warnings due to missing PREEMPT_RT conditionals lockdep: selftest: fix warnings due to missing PREEMPT_RT conditionals
Juri Lelli (2): sched/deadline: dl_task_timer has to be irqsafe sched/deadline: dl_task_timer has to be irqsafe
Marc Kleine-Budde (2): net: sched: Use msleep() instead of yield() net: sched: Use msleep() instead of yield()
Marcelo Tosatti (4): KVM: lapic: mark LAPIC timer handler as irqsafe KVM: use simple waitqueue for vcpu->wq KVM: lapic: mark LAPIC timer handler as irqsafe KVM: use simple waitqueue for vcpu->wq
Mike Galbraith (20): hwlat-detector: Don't ignore threshold module parameter sunrpc: Make svc_xprt_do_enqueue() use get_cpu_light() stomp-machine: create lg_global_trylock_relax() primitive stomp-machine: use lg_global_trylock_relax() to dead with stop_cpus_lock lglock fs: ntfs: disable interrupt only on !RT fs, jbd: pull your plug when waiting for space x86: UV: raw_spinlock conversion snd/pcm: fix snd_pcm_stream_lock*() irqs_disabled() splats hotplug: Use set_cpus_allowed_ptr() in sync_unplug_thread() memcontrol: Prevent scheduling while atomic in cgroup code hwlat-detector: Don't ignore threshold module parameter sunrpc: Make svc_xprt_do_enqueue() use get_cpu_light() stomp-machine: create lg_global_trylock_relax() primitive stomp-machine: use lg_global_trylock_relax() to dead with stop_cpus_lock lglock fs: ntfs: disable interrupt only on !RT fs, jbd: pull your plug when waiting for space x86: UV: raw_spinlock conversion snd/pcm: fix snd_pcm_stream_lock*() irqs_disabled() splats hotplug: Use set_cpus_allowed_ptr() in sync_unplug_thread() memcontrol: Prevent scheduling while atomic in cgroup code
Oleg Nesterov (2): signal/x86: Delay calling signals in atomic signal/x86: Delay calling signals in atomic
Paul E. McKenney (4): rcu: Make ksoftirqd do RCU quiescent states rcu: Eliminate softirq processing from rcutree rcu: Make ksoftirqd do RCU quiescent states rcu: Eliminate softirq processing from rcutree
Paul Gortmaker (6): list_bl: Make list head locking RT safe powerpc: ps3/device-init.c - adapt to completions using swait vs wait sas-ata/isci: dont't disable interrupts in qc_issue handler list_bl: Make list head locking RT safe powerpc: ps3/device-init.c - adapt to completions using swait vs wait sas-ata/isci: dont't disable interrupts in qc_issue handler
Peter Zijlstra (18): sched: Implement lockless wake-queues printk: Add "force_early_printk" boot param to help with debugging mm: page_alloc: Reduce lock sections further timer: delay waking softirqs from the jiffy tick rcu: Frob softirq test mm, rt: kmap_atomic scheduling ipc/sem: Rework semaphore wakeups x86: crypto: Reduce preempt disabled regions crypto: Convert crypto notifier chain to SRCU sched: Implement lockless wake-queues printk: Add "force_early_printk" boot param to help with debugging mm: page_alloc: Reduce lock sections further timer: delay waking softirqs from the jiffy tick rcu: Frob softirq test mm, rt: kmap_atomic scheduling ipc/sem: Rework semaphore wakeups x86: crypto: Reduce preempt disabled regions crypto: Convert crypto notifier chain to SRCU
Priyanka Jain (2): net: Remove preemption disabling in netif_rx() net: Remove preemption disabling in netif_rx()
Sebastian Andrzej Siewior (79): kernel/SRCU: provide a static initializer gpio: omap: use raw locks for locking usb: Use _nort in giveback function mm/workingset: Do not protect workingset_shadow_nodes with irq off genirq: Do not invoke the affinity callback via a workqueue on RT net: gianfar: Do not disable interrupts slub: Disable SLUB_CPU_PARTIAL mm/memcontrol: Replace local_irq_disable with local locks rtmutex: Add RT aware ww locks ptrace: fix ptrace vs tasklist_lock race wait.h: include atomic.h fs/aio: simple simple work fs: jbd2: pull your plug when waiting for space block: mq: use cpu_light() block/mq: do not invoke preempt_disable() block/mq: don't complete requests via IPI blk-mq: revert raw locks, post pone notifier to POST_DEAD block: blk-mq: Use swait block/mq: drop per ctx cpu_lock percpu_ida: Use local locks irqwork: push most work into softirq context ASoC: Intel: sst: use ; instead of , at the of a C statement printk: Drop the logbuf_lock more often arm/unwind: use a raw_spin_lock x86/highmem: Add a "already used pte" check arm/highmem: Flush tlb on unmap crypto: Reduce preempt disabled regions, more algos kernel/cpu: fix cpu down problem if kthread's cpu is going down kernel/hotplug: restore original cpu mask oncpu/down net: Add a mutex around devnet_rename_seq rcu: make RCU_BOOST default on RT leds: trigger: disable CPU trigger on -RT i2c/omap: drop the lock hard irq context mmc: sdhci: don't provide hard irq handler cpufreq: drop K8's driver from beeing selected gpu/i915: don't open code these things drm/i915: drop trace_i915_gem_ring_dispatch on rt cgroups: use simple wait in css_release() md: disable bcache cpufreq: Remove cpufreq_rwsem kernel/SRCU: provide a static initializer gpio: omap: use raw locks for locking usb: Use _nort in giveback function mm/workingset: Do not protect workingset_shadow_nodes with irq off genirq: Do not invoke the affinity callback via a workqueue on RT net: gianfar: Do not disable interrupts slub: Disable SLUB_CPU_PARTIAL mm/memcontrol: Replace local_irq_disable with local locks rtmutex: Add RT aware ww locks ptrace: fix ptrace vs tasklist_lock race wait.h: include atomic.h fs/aio: simple simple work fs: jbd2: pull your plug when waiting for space block: mq: use cpu_light() block/mq: do not invoke preempt_disable() block/mq: don't complete requests via IPI blk-mq: revert raw locks, post pone notifier to POST_DEAD block: blk-mq: Use swait block/mq: drop per ctx cpu_lock percpu_ida: Use local locks irqwork: push most work into softirq context ASoC: Intel: sst: use ; instead of , at the of a C statement printk: Drop the logbuf_lock more often arm/unwind: use a raw_spin_lock x86/highmem: Add a "already used pte" check arm/highmem: Flush tlb on unmap crypto: Reduce preempt disabled regions, more algos kernel/cpu: fix cpu down problem if kthread's cpu is going down kernel/hotplug: restore original cpu mask oncpu/down net: Add a mutex around devnet_rename_seq rcu: make RCU_BOOST default on RT leds: trigger: disable CPU trigger on -RT i2c/omap: drop the lock hard irq context mmc: sdhci: don't provide hard irq handler cpufreq: drop K8's driver from beeing selected gpu/i915: don't open code these things drm/i915: drop trace_i915_gem_ring_dispatch on rt cgroups: use simple wait in css_release() md: disable bcache
Steven Rostedt (34): tracing: Account for preempt off in preempt_schedule() x86: Do not disable preemption in int3 on 32bit hwlat-detector: Update hwlat_detector to add outer loop detection hwlat-detector: Use trace_clock_local if available hwlat-detector: Use thread instead of stop machine ata: Do not disable interrupts in ide code for preempt-rt drivers/net: vortex fix locking issues sched/workqueue: Only wake up idle workers if not blocked on sleeping spin lock futex: Fix bug on when a requeued RT task times out x86/mce: use swait queue for mce wakeups cpu_chill: Add a UNINTERRUPTIBLE hrtimer_nanosleep net: Avoid livelock in net_tx_action() on RT acpi/rt: Convert acpi_gbl_hardware lock back to a raw_spinlock_t cpu: Make hotplug.lock a "sleeping" spinlock on RT cpu/rt: Rework cpu down for PREEMPT_RT cpu hotplug: Document why PREEMPT_RT uses a spinlock rt,ntp: Move call to schedule_delayed_work() to helper thread tracing: Account for preempt off in preempt_schedule() x86: Do not disable preemption in int3 on 32bit hwlat-detector: Update hwlat_detector to add outer loop detection hwlat-detector: Use trace_clock_local if available hwlat-detector: Use thread instead of stop machine ata: Do not disable interrupts in ide code for preempt-rt drivers/net: vortex fix locking issues sched/workqueue: Only wake up idle workers if not blocked on sleeping spin lock futex: Fix bug on when a requeued RT task times out x86/mce: use swait queue for mce wakeups cpu_chill: Add a UNINTERRUPTIBLE hrtimer_nanosleep net: Avoid livelock in net_tx_action() on RT acpi/rt: Convert acpi_gbl_hardware lock back to a raw_spinlock_t cpu: Make hotplug.lock a "sleeping" spinlock on RT cpu/rt: Rework cpu down for PREEMPT_RT cpu hotplug: Document why PREEMPT_RT uses a spinlock rt,ntp: Move call to schedule_delayed_work() to helper thread
Sven-Thorsten Dietrich (2): infiniband: Mellanox IB driver patch use _nort() primitives infiniband: Mellanox IB driver patch use _nort() primitives
Thomas Gleixner (220): mm/slub: move slab initialization into irq enabled region block: Shorten interrupt disabled regions timekeeping: Split jiffies seqlock vtime: Split lock and seqcount signal: Revert ptrace preempt magic posix-timers: Prevent broadcast signals signals: Allow rt tasks to cache one sigqueue struct suspend: Prevent might sleep splats net-flip-lock-dep-thingy.patch pci: Use __wake_up_all_locked in pci_unblock_user_cfg_access() futex: avoid double wake up in PI futex wait / wake on -RT rt: Provide PREEMPT_RT_BASE config switch kconfig: Disable config options which are not RT compatible kconfig: Add PREEMPT_RT_FULL rt: local_irq_* variants depending on RT/!RT preempt: Provide preempt_*_(no)rt variants Intrduce migrate_disable() + cpu_light() rt: Add local irq locks core: Do not disable interrupts on RT in kernel/users.c mm/scatterlist: Do not disable irqs on RT signal: Make __lock_task_sighand() RT aware net/wireless: Use WARN_ON_NORT() buffer_head: Replace bh_uptodate_lock for -rt fs: jbd/jbd2: Make state lock and journal head lock rt safe genirq: Force interrupt thread on RT drivers/net: fix livelock issues mm: bounce: Use local_irq_save_nort mm: Enable SLUB for RT slub: Enable irqs for __GFP_WAIT mm: page_alloc: Use local_lock_on() instead of plain spinlock radix-tree: Make RT aware panic: skip get_random_bytes for RT_FULL in init_oops_id timers: Avoid the switch timers base set to NULL trick on RT hrtimer: Fixup hrtimer callback changes for preempt-rt timer-fd: Prevent live lock sched: Move task_struct cleanup to RCU sched: Limit the number of task migrations per batch sched: Move mmdrop to RCU on RT sched: Add saved_state for tasks blocked on sleeping locks sched: Do not account rcu_preempt_depth on RT in might_sleep() sched: Take RT softirq semantics into account in cond_resched() sched: Use the proper LOCK_OFFSET for cond_resched() sched: Disable TTWU_QUEUE on RT sched: Disable CONFIG_RT_GROUP_SCHED on RT sched: ttwu: Return success when only changing the saved_state value stop_machine: Use raw spinlocks hotplug: Lightweight get online cpus trace: Add migrate-disabled counter to tracing output hotplug: Use migrate disable on unplug lockdep: Make it RT aware locking: Disable spin on owner for RT softirq: Check preemption after reenabling interrupts softirq: Disable softirq stacks for RT softirq: Split softirq locks genirq: Allow disabling of softirq processing in irq thread context md: raid5: Make raid5_percpu handling RT aware rtmutex: Handle the various new futex race conditions futex: Ensure lock/unlock symetry versus pi_lock and hash bucket lock rtmutex: Add rtmutex_lock_killable() spinlock: Split the lock types header rtmutex: Avoid include hell rt: Add the preempt-rt lock replacement APIs rcu: Merge RCU-bh into RCU-preempt lglocks: Provide a RT safe variant tty/serial/omap: Make the locking RT aware tty/serial/pl011: Make the locking work on RT wait-simple: Simple waitqueue implementation rcu: use simple waitqueues completion: Use simple wait queues fs: namespace preemption fix block: Turn off warning which is bogus on RT x86: Convert mce timer to hrtimer x86: stackprotector: Avoid random pool on rt x86: Use generic rwsem_spinlocks on -rt fs/epoll: Do not disable preemption on RT mm/vmalloc: Another preempt disable region which sucks rt: Introduce cpu_chill() block: Use cpu_chill() for retry loops fs: dcache: Use cpu_chill() in trylock loops net: Use cpu_chill() instead of cpu_relax() workqueue: Use normal rcu workqueue: Use local irq lock instead of irq disable regions workqueue: Prevent workqueue versus ata-piix livelock sched: Distangle worker accounting from rqlock idr: Use local lock instead of preempt enable/disable debugobjects: Make RT aware jump-label: disable if stop_machine() is used net: Use skbufhead with raw lock printk: Make rt aware powerpc: Use generic rwsem on RT ARM: at91: tclib: Default to tclib timer for RT powerpc: Disable highmem on RT mips: Disable highmem on RT arm: Enable highmem for rt x86: kvm Require const tsc for RT scsi/fcoe: Make RT aware. dm: Make rt aware cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT random: Make it work on rt seqlock: Prevent rt starvation net: Another local_irq_disable/kmalloc headache net: netfilter: Serialize xt_write_recseq sections on RT rcu: Disable RCU_FAST_NO_HZ on RT sched: Add support for lazy preemption x86: Support for lazy preemption arm: Add support for lazy preemption powerpc: Add support for lazy preemption mmci: Remove bogus local_irq_save() workqueue: Prevent deadlock/stall on RT localversion: Add RT specific localversion file mm/slub: move slab initialization into irq enabled region block: Shorten interrupt disabled regions timekeeping: Split jiffies seqlock vtime: Split lock and seqcount signal: Revert ptrace preempt magic posix-timers: Prevent broadcast signals signals: Allow rt tasks to cache one sigqueue struct suspend: Prevent might sleep splats net-flip-lock-dep-thingy.patch pci: Use __wake_up_all_locked in pci_unblock_user_cfg_access() futex: avoid double wake up in PI futex wait / wake on -RT rt: Provide PREEMPT_RT_BASE config switch kconfig: Disable config options which are not RT compatible kconfig: Add PREEMPT_RT_FULL rt: local_irq_* variants depending on RT/!RT preempt: Provide preempt_*_(no)rt variants Intrduce migrate_disable() + cpu_light() rt: Add local irq locks core: Do not disable interrupts on RT in kernel/users.c mm/scatterlist: Do not disable irqs on RT signal: Make __lock_task_sighand() RT aware net/wireless: Use WARN_ON_NORT() buffer_head: Replace bh_uptodate_lock for -rt fs: jbd/jbd2: Make state lock and journal head lock rt safe genirq: Force interrupt thread on RT drivers/net: fix livelock issues mm: bounce: Use local_irq_save_nort mm: Enable SLUB for RT slub: Enable irqs for __GFP_WAIT mm: page_alloc: Use local_lock_on() instead of plain spinlock radix-tree: Make RT aware panic: skip get_random_bytes for RT_FULL in init_oops_id timers: Avoid the switch timers base set to NULL trick on RT hrtimer: Fixup hrtimer callback changes for preempt-rt timer-fd: Prevent live lock sched: Move task_struct cleanup to RCU sched: Limit the number of task migrations per batch sched: Move mmdrop to RCU on RT sched: Add saved_state for tasks blocked on sleeping locks sched: Do not account rcu_preempt_depth on RT in might_sleep() sched: Take RT softirq semantics into account in cond_resched() sched: Use the proper LOCK_OFFSET for cond_resched() sched: Disable TTWU_QUEUE on RT sched: Disable CONFIG_RT_GROUP_SCHED on RT sched: ttwu: Return success when only changing the saved_state value stop_machine: Use raw spinlocks hotplug: Lightweight get online cpus trace: Add migrate-disabled counter to tracing output hotplug: Use migrate disable on unplug lockdep: Make it RT aware locking: Disable spin on owner for RT softirq: Check preemption after reenabling interrupts softirq: Disable softirq stacks for RT softirq: Split softirq locks genirq: Allow disabling of softirq processing in irq thread context md: raid5: Make raid5_percpu handling RT aware rtmutex: Handle the various new futex race conditions futex: Ensure lock/unlock symetry versus pi_lock and hash bucket lock rtmutex: Add rtmutex_lock_killable() spinlock: Split the lock types header rtmutex: Avoid include hell rt: Add the preempt-rt lock replacement APIs rcu: Merge RCU-bh into RCU-preempt lglocks: Provide a RT safe variant tty/serial/omap: Make the locking RT aware tty/serial/pl011: Make the locking work on RT wait-simple: Simple waitqueue implementation rcu: use simple waitqueues completion: Use simple wait queues fs: namespace preemption fix block: Turn off warning which is bogus on RT x86: Convert mce timer to hrtimer x86: stackprotector: Avoid random pool on rt x86: Use generic rwsem_spinlocks on -rt fs/epoll: Do not disable preemption on RT mm/vmalloc: Another preempt disable region which sucks rt: Introduce cpu_chill() block: Use cpu_chill() for retry loops fs: dcache: Use cpu_chill() in trylock loops net: Use cpu_chill() instead of cpu_relax() workqueue: Use normal rcu workqueue: Use local irq lock instead of irq disable regions workqueue: Prevent workqueue versus ata-piix livelock sched: Distangle worker accounting from rqlock idr: Use local lock instead of preempt enable/disable debugobjects: Make RT aware jump-label: disable if stop_machine() is used net: Use skbufhead with raw lock printk: Make rt aware powerpc: Use generic rwsem on RT ARM: at91: tclib: Default to tclib timer for RT powerpc: Disable highmem on RT mips: Disable highmem on RT arm: Enable highmem for rt x86: kvm Require const tsc for RT scsi/fcoe: Make RT aware. dm: Make rt aware cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT random: Make it work on rt seqlock: Prevent rt starvation net: Another local_irq_disable/kmalloc headache net: netfilter: Serialize xt_write_recseq sections on RT rcu: Disable RCU_FAST_NO_HZ on RT sched: Add support for lazy preemption x86: Support for lazy preemption arm: Add support for lazy preemption powerpc: Add support for lazy preemption mmci: Remove bogus local_irq_save() workqueue: Prevent deadlock/stall on RT localversion: Add RT specific localversion file
Tiejun Chen (4): rcutree/rcu_bh_qs: Disable irq while calling rcu_preempt_qs() cpu_down: move migrate_enable() back rcutree/rcu_bh_qs: Disable irq while calling rcu_preempt_qs() cpu_down: move migrate_enable() back
Watanabe (2): hrtimer: Raise softirq if hrtimer irq stalled hrtimer: Raise softirq if hrtimer irq stalled
Wolfgang M. Reimer (1): locking: locktorture: Do NOT include rwlock.h directly
Yadi.hu (2): ARM: enable irq in translation/section permission fault handlers ARM: enable irq in translation/section permission fault handlers
Yang Shi (4): mm/memcontrol: Don't call schedule_work_on in preemption disabled context hrtimer: Move schedule_work call to helper thread mm/memcontrol: Don't call schedule_work_on in preemption disabled context hrtimer: Move schedule_work call to helper thread
Yong Zhang (12): hotplug: sync_unplug: No " " in task name hotplug: Reread hotplug_pcp on pin_current_cpu() retry mm: Protect activate_mm() by preempt_[disable&enable]_rt() ARM: cmpxchg: define __HAVE_ARCH_CMPXCHG for armv6 and later lockdep: selftest: Only do hardirq context test for raw spinlock perf: Make swevent hrtimer run in irq instead of softirq hotplug: sync_unplug: No " " in task name hotplug: Reread hotplug_pcp on pin_current_cpu() retry mm: Protect activate_mm() by preempt_[disable&enable]_rt() ARM: cmpxchg: define __HAVE_ARCH_CMPXCHG for armv6 and later lockdep: selftest: Only do hardirq context test for raw spinlock perf: Make swevent hrtimer run in irq instead of softirq
Documentation/hwlat_detector.txt | 64 + Documentation/sysrq.txt | 11 +- Documentation/trace/histograms.txt | 186 +++ arch/Kconfig | 1 + arch/alpha/mm/fault.c | 5 +- arch/arc/include/asm/futex.h | 10 +- arch/arc/mm/fault.c | 2 +- arch/arm/Kconfig | 3 +- arch/arm/include/asm/cmpxchg.h | 2 + arch/arm/include/asm/futex.h | 13 +- arch/arm/include/asm/switch_to.h | 8 + arch/arm/include/asm/thread_info.h | 3 + arch/arm/kernel/asm-offsets.c | 1 + arch/arm/kernel/entry-armv.S | 13 +- arch/arm/kernel/process.c | 24 + arch/arm/kernel/signal.c | 3 +- arch/arm/kernel/unwind.c | 14 +- arch/arm/kvm/arm.c | 4 +- arch/arm/kvm/psci.c | 4 +- arch/arm/mach-exynos/platsmp.c | 12 +- arch/arm/mach-hisi/platmcpm.c | 26 +- arch/arm/mach-omap2/omap-smp.c | 10 +- arch/arm/mach-prima2/platsmp.c | 10 +- arch/arm/mach-qcom/platsmp.c | 10 +- arch/arm/mach-spear/platsmp.c | 10 +- arch/arm/mach-sti/platsmp.c | 10 +- arch/arm/mach-ux500/platsmp.c | 10 +- arch/arm/mm/fault.c | 8 +- arch/arm/mm/highmem.c | 45 +- arch/arm/plat-versatile/platsmp.c | 10 +- arch/arm64/Kconfig | 2 + arch/arm64/include/asm/futex.h | 4 +- arch/arm64/include/asm/thread_info.h | 3 + arch/arm64/kernel/asm-offsets.c | 1 + arch/arm64/kernel/entry.S | 13 +- arch/arm64/kernel/perf_event.c | 2 +- arch/arm64/mm/fault.c | 2 +- arch/avr32/include/asm/uaccess.h | 12 +- arch/avr32/mm/fault.c | 4 +- arch/cris/mm/fault.c | 6 +- arch/frv/mm/fault.c | 4 +- arch/frv/mm/highmem.c | 2 + arch/hexagon/include/asm/uaccess.h | 3 +- arch/ia64/mm/fault.c | 4 +- arch/m32r/include/asm/uaccess.h | 30 +- arch/m32r/mm/fault.c | 8 +- arch/m68k/mm/fault.c | 4 +- arch/metag/mm/fault.c | 2 +- arch/metag/mm/highmem.c | 4 +- arch/microblaze/include/asm/uaccess.h | 6 +- arch/microblaze/mm/fault.c | 8 +- arch/microblaze/mm/highmem.c | 4 +- arch/mips/Kconfig | 2 +- arch/mips/include/asm/uaccess.h | 45 +- arch/mips/kernel/signal-common.h | 9 +- arch/mips/mm/fault.c | 4 +- arch/mips/mm/highmem.c | 5 +- arch/mips/mm/init.c | 2 + arch/mn10300/include/asm/highmem.h | 3 + arch/mn10300/mm/fault.c | 4 +- arch/nios2/mm/fault.c | 2 +- arch/parisc/include/asm/cacheflush.h | 2 + arch/parisc/kernel/traps.c | 4 +- arch/parisc/mm/fault.c | 4 +- arch/powerpc/Kconfig | 6 +- arch/powerpc/include/asm/kvm_host.h | 4 +- arch/powerpc/include/asm/thread_info.h | 11 +- arch/powerpc/kernel/asm-offsets.c | 1 + arch/powerpc/kernel/entry_32.S | 17 +- arch/powerpc/kernel/entry_64.S | 14 +- arch/powerpc/kernel/irq.c | 2 + arch/powerpc/kernel/misc_32.S | 2 + arch/powerpc/kernel/misc_64.S | 2 + arch/powerpc/kvm/Kconfig | 1 + arch/powerpc/kvm/book3s_hv.c | 23 +- arch/powerpc/mm/fault.c | 9 +- arch/powerpc/mm/highmem.c | 4 +- arch/powerpc/platforms/ps3/device-init.c | 2 +- arch/s390/include/asm/kvm_host.h | 2 +- arch/s390/include/asm/uaccess.h | 15 +- arch/s390/kvm/interrupt.c | 8 +- arch/s390/mm/fault.c | 2 +- arch/score/include/asm/uaccess.h | 15 +- arch/score/mm/fault.c | 3 +- arch/sh/kernel/irq.c | 2 + arch/sh/mm/fault.c | 5 +- arch/sparc/Kconfig | 6 +- arch/sparc/kernel/irq_64.c | 2 + arch/sparc/mm/fault_32.c | 4 +- arch/sparc/mm/fault_64.c | 4 +- arch/sparc/mm/highmem.c | 4 +- arch/sparc/mm/init_64.c | 2 +- arch/tile/include/asm/uaccess.h | 18 +- arch/tile/mm/fault.c | 4 +- arch/tile/mm/highmem.c | 3 +- arch/um/kernel/trap.c | 4 +- arch/unicore32/mm/fault.c | 2 +- arch/x86/Kconfig | 8 +- arch/x86/crypto/aesni-intel_glue.c | 24 +- arch/x86/crypto/cast5_avx_glue.c | 21 +- arch/x86/crypto/glue_helper.c | 31 +- arch/x86/include/asm/preempt.h | 18 +- arch/x86/include/asm/signal.h | 13 + arch/x86/include/asm/stackprotector.h | 10 +- arch/x86/include/asm/thread_info.h | 6 + arch/x86/include/asm/uaccess.h | 15 +- arch/x86/include/asm/uaccess_32.h | 6 +- arch/x86/include/asm/uv/uv_bau.h | 14 +- arch/x86/include/asm/uv/uv_hub.h | 2 +- arch/x86/kernel/apic/io_apic.c | 3 +- arch/x86/kernel/apic/x2apic_uv_x.c | 2 +- arch/x86/kernel/asm-offsets.c | 2 + arch/x86/kernel/cpu/mcheck/mce.c | 120 +- arch/x86/kernel/entry_32.S | 20 +- arch/x86/kernel/entry_64.S | 26 +- arch/x86/kernel/irq_32.c | 2 + arch/x86/kernel/process_32.c | 32 + arch/x86/kernel/signal.c | 8 + arch/x86/kernel/traps.c | 28 +- arch/x86/kvm/lapic.c | 46 +- arch/x86/kvm/x86.c | 7 + arch/x86/lib/usercopy_32.c | 6 +- arch/x86/mm/fault.c | 5 +- arch/x86/mm/highmem_32.c | 12 +- arch/x86/mm/iomap_32.c | 13 +- arch/x86/platform/uv/tlb_uv.c | 26 +- arch/x86/platform/uv/uv_time.c | 21 +- arch/xtensa/mm/fault.c | 4 +- arch/xtensa/mm/highmem.c | 2 + block/blk-core.c | 19 +- block/blk-ioc.c | 5 +- block/blk-iopoll.c | 3 + block/blk-mq-cpu.c | 17 +- block/blk-mq.c | 42 +- block/blk-mq.h | 9 +- block/blk-softirq.c | 3 + block/bounce.c | 4 +- crypto/algapi.c | 4 +- crypto/api.c | 6 +- crypto/internal.h | 4 +- drivers/acpi/acpica/acglobal.h | 2 +- drivers/acpi/acpica/hwregs.c | 4 +- drivers/acpi/acpica/hwxface.c | 4 +- drivers/acpi/acpica/utmutex.c | 4 +- drivers/ata/libata-sff.c | 12 +- drivers/char/random.c | 14 +- drivers/clocksource/tcb_clksrc.c | 37 +- drivers/clocksource/timer-atmel-pit.c | 4 + drivers/clocksource/timer-atmel-st.c | 1 + drivers/cpufreq/Kconfig.x86 | 2 +- drivers/cpufreq/cpufreq.c | 35 +- drivers/gpio/gpio-omap.c | 78 +- drivers/gpu/drm/i915/i915_gem_execbuffer.c | 5 +- drivers/gpu/drm/i915/i915_gem_shrinker.c | 2 +- drivers/gpu/drm/i915/intel_display.c | 2 +- drivers/i2c/busses/i2c-omap.c | 5 +- drivers/ide/alim15x3.c | 4 +- drivers/ide/hpt366.c | 4 +- drivers/ide/ide-io-std.c | 8 +- drivers/ide/ide-io.c | 2 +- drivers/ide/ide-iops.c | 4 +- drivers/ide/ide-probe.c | 4 +- drivers/ide/ide-taskfile.c | 6 +- drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 4 +- drivers/input/gameport/gameport.c | 8 +- drivers/leds/trigger/Kconfig | 2 +- drivers/md/bcache/Kconfig | 1 + drivers/md/dm.c | 2 +- drivers/md/raid5.c | 7 +- drivers/md/raid5.h | 1 + drivers/misc/Kconfig | 42 +- drivers/misc/Makefile | 1 + drivers/misc/hwlat_detector.c | 1240 ++++++++++++++++++++ drivers/mmc/host/mmci.c | 5 - drivers/mmc/host/sdhci.c | 32 +- drivers/net/ethernet/3com/3c59x.c | 8 +- drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 6 +- drivers/net/ethernet/atheros/atl1e/atl1e_main.c | 3 +- drivers/net/ethernet/chelsio/cxgb/sge.c | 3 +- drivers/net/ethernet/freescale/gianfar.c | 12 +- drivers/net/ethernet/neterion/s2io.c | 7 +- .../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 6 +- drivers/net/ethernet/realtek/8139too.c | 2 +- drivers/net/ethernet/tehuti/tehuti.c | 9 +- drivers/net/rionet.c | 6 +- drivers/net/wireless/orinoco/orinoco_usb.c | 2 +- drivers/pci/access.c | 2 +- drivers/scsi/fcoe/fcoe.c | 18 +- drivers/scsi/fcoe/fcoe_ctlr.c | 4 +- drivers/scsi/libfc/fc_exch.c | 4 +- drivers/scsi/libsas/sas_ata.c | 4 +- drivers/scsi/qla2xxx/qla_inline.h | 4 +- drivers/thermal/x86_pkg_temp_thermal.c | 50 +- drivers/tty/serial/8250/8250_core.c | 14 +- drivers/tty/serial/amba-pl011.c | 15 +- drivers/tty/serial/omap-serial.c | 12 +- drivers/usb/core/hcd.c | 4 +- drivers/usb/gadget/function/f_fs.c | 2 +- drivers/usb/gadget/legacy/inode.c | 4 +- fs/aio.c | 24 +- fs/autofs4/autofs_i.h | 1 + fs/autofs4/expire.c | 2 +- fs/buffer.c | 21 +- fs/dcache.c | 5 +- fs/eventpoll.c | 4 +- fs/exec.c | 2 + fs/jbd/checkpoint.c | 2 + fs/jbd2/checkpoint.c | 2 + fs/namespace.c | 8 +- fs/ntfs/aops.c | 14 +- fs/timerfd.c | 5 +- include/acpi/platform/aclinux.h | 15 + include/asm-generic/bug.h | 14 + include/asm-generic/futex.h | 7 +- include/linux/blk-mq.h | 1 + include/linux/blkdev.h | 3 +- include/linux/bottom_half.h | 12 + include/linux/buffer_head.h | 44 + include/linux/cgroup.h | 2 + include/linux/completion.h | 9 +- include/linux/cpu.h | 4 + include/linux/delay.h | 6 + include/linux/ftrace_event.h | 3 + include/linux/highmem.h | 30 +- include/linux/hrtimer.h | 16 + include/linux/idr.h | 4 + include/linux/init_task.h | 10 +- include/linux/interrupt.h | 57 +- include/linux/io-mapping.h | 2 + include/linux/irq.h | 4 +- include/linux/irq_work.h | 1 + include/linux/irqdesc.h | 1 + include/linux/irqflags.h | 29 +- include/linux/jbd_common.h | 24 + include/linux/kdb.h | 2 + include/linux/kernel.h | 8 +- include/linux/kvm_host.h | 4 +- include/linux/lglock.h | 27 +- include/linux/list_bl.h | 28 +- include/linux/locallock.h | 270 +++++ include/linux/mm_types.h | 4 + include/linux/mutex.h | 20 +- include/linux/mutex_rt.h | 84 ++ include/linux/netdevice.h | 1 + include/linux/netfilter/x_tables.h | 7 + include/linux/notifier.h | 34 +- include/linux/percpu.h | 29 + include/linux/pid.h | 1 + include/linux/preempt.h | 59 +- include/linux/preempt_mask.h | 15 +- include/linux/printk.h | 2 + include/linux/radix-tree.h | 7 +- include/linux/random.h | 2 +- include/linux/rcupdate.h | 26 + include/linux/rcutree.h | 18 +- include/linux/rtmutex.h | 30 +- include/linux/rwlock_rt.h | 99 ++ include/linux/rwlock_types.h | 7 +- include/linux/rwlock_types_rt.h | 33 + include/linux/rwsem.h | 6 + include/linux/rwsem_rt.h | 140 +++ include/linux/sched.h | 233 +++- include/linux/seqlock.h | 56 +- include/linux/signal.h | 1 + include/linux/skbuff.h | 7 + include/linux/smp.h | 3 + include/linux/spinlock.h | 12 +- include/linux/spinlock_api_smp.h | 4 +- include/linux/spinlock_rt.h | 174 +++ include/linux/spinlock_types.h | 79 +- include/linux/spinlock_types_nort.h | 33 + include/linux/spinlock_types_raw.h | 56 + include/linux/spinlock_types_rt.h | 51 + include/linux/srcu.h | 6 +- include/linux/swap.h | 5 +- include/linux/thread_info.h | 12 +- include/linux/timer.h | 2 +- include/linux/uaccess.h | 50 +- include/linux/uprobes.h | 1 + include/linux/vmstat.h | 4 + include/linux/wait-simple.h | 207 ++++ include/linux/wait.h | 1 + include/linux/work-simple.h | 24 + include/net/dst.h | 2 +- include/net/neighbour.h | 4 +- include/net/netns/ipv4.h | 1 + include/trace/events/hist.h | 72 ++ include/trace/events/latency_hist.h | 29 + init/Kconfig | 9 +- init/Makefile | 2 +- init/main.c | 1 + ipc/mqueue.c | 54 +- ipc/msg.c | 16 +- ipc/sem.c | 10 + kernel/Kconfig.locks | 4 +- kernel/Kconfig.preempt | 33 +- kernel/cgroup.c | 9 +- kernel/cpu.c | 325 ++++- kernel/debug/kdb/kdb_io.c | 6 +- kernel/events/core.c | 1 + kernel/exit.c | 2 +- kernel/fork.c | 40 +- kernel/futex.c | 149 ++- kernel/irq/handle.c | 8 +- kernel/irq/manage.c | 100 +- kernel/irq/settings.h | 12 + kernel/irq/spurious.c | 8 + kernel/irq_work.c | 47 +- kernel/ksysfs.c | 12 + kernel/locking/Makefile | 9 +- kernel/locking/lglock.c | 79 +- kernel/locking/lockdep.c | 2 + kernel/locking/locktorture.c | 1 - kernel/locking/rt.c | 461 ++++++++ kernel/locking/rtmutex.c | 750 +++++++++++- kernel/locking/rtmutex_common.h | 18 + kernel/locking/spinlock.c | 7 + kernel/locking/spinlock_debug.c | 5 + kernel/panic.c | 2 + kernel/power/hibernate.c | 7 + kernel/power/suspend.c | 4 + kernel/printk/printk.c | 136 ++- kernel/ptrace.c | 7 +- kernel/rcu/tree.c | 146 ++- kernel/rcu/tree.h | 12 +- kernel/rcu/tree_plugin.h | 168 +-- kernel/rcu/update.c | 2 + kernel/relay.c | 14 +- kernel/sched/Makefile | 2 +- kernel/sched/completion.c | 32 +- kernel/sched/core.c | 481 ++++++-- kernel/sched/cputime.c | 62 +- kernel/sched/deadline.c | 1 + kernel/sched/debug.c | 7 + kernel/sched/fair.c | 16 +- kernel/sched/features.h | 8 + kernel/sched/rt.c | 2 + kernel/sched/sched.h | 10 + kernel/sched/wait-simple.c | 115 ++ kernel/sched/work-simple.c | 172 +++ kernel/signal.c | 135 ++- kernel/softirq.c | 724 +++++++++--- kernel/stop_machine.c | 98 +- kernel/time/hrtimer.c | 346 +++++- kernel/time/itimer.c | 1 + kernel/time/jiffies.c | 7 +- kernel/time/ntp.c | 43 + kernel/time/posix-cpu-timers.c | 198 +++- kernel/time/posix-timers.c | 37 +- kernel/time/tick-common.c | 10 +- kernel/time/tick-sched.c | 35 +- kernel/time/timekeeping.c | 6 +- kernel/time/timekeeping.h | 3 +- kernel/time/timer.c | 97 +- kernel/trace/Kconfig | 104 ++ kernel/trace/Makefile | 4 + kernel/trace/latency_hist.c | 1178 +++++++++++++++++++ kernel/trace/trace.c | 38 +- kernel/trace/trace.h | 2 + kernel/trace/trace_events.c | 2 + kernel/trace/trace_irqsoff.c | 11 + kernel/trace/trace_output.c | 18 +- kernel/user.c | 4 +- kernel/watchdog.c | 15 +- kernel/workqueue.c | 230 ++-- kernel/workqueue_internal.h | 5 +- lib/Kconfig | 1 + lib/debugobjects.c | 5 +- lib/idr.c | 36 +- lib/locking-selftest.c | 50 + lib/percpu_ida.c | 20 +- lib/radix-tree.c | 5 +- lib/scatterlist.c | 6 +- lib/smp_processor_id.c | 5 +- lib/strnlen_user.c | 6 +- localversion-rt | 1 + mm/Kconfig | 2 +- mm/compaction.c | 6 +- mm/filemap.c | 11 +- mm/highmem.c | 6 +- mm/memcontrol.c | 29 +- mm/memory.c | 18 +- mm/mmu_context.c | 2 + mm/page_alloc.c | 142 ++- mm/slab.h | 4 + mm/slub.c | 206 ++-- mm/swap.c | 34 +- mm/truncate.c | 7 +- mm/vmalloc.c | 13 +- mm/vmstat.c | 6 + mm/workingset.c | 23 +- net/core/dev.c | 106 +- net/core/skbuff.c | 6 +- net/core/sock.c | 3 +- net/ipv4/icmp.c | 30 + net/ipv4/sysctl_net_ipv4.c | 7 + net/mac80211/rx.c | 2 +- net/netfilter/core.c | 6 + net/packet/af_packet.c | 5 +- net/rds/ib_rdma.c | 3 +- net/sched/sch_generic.c | 2 +- net/sunrpc/svc_xprt.c | 6 +- scripts/mkcompile_h | 4 +- sound/core/pcm_native.c | 8 +- sound/soc/intel/atom/sst/sst.c | 4 +- virt/kvm/async_pf.c | 4 +- virt/kvm/kvm_main.c | 16 +- 407 files changed, 11674 insertions(+), 2006 deletions(-) create mode 100644 Documentation/hwlat_detector.txt create mode 100644 Documentation/trace/histograms.txt create mode 100644 drivers/misc/hwlat_detector.c create mode 100644 include/linux/locallock.h create mode 100644 include/linux/mutex_rt.h create mode 100644 include/linux/rwlock_rt.h create mode 100644 include/linux/rwlock_types_rt.h create mode 100644 include/linux/rwsem_rt.h create mode 100644 include/linux/spinlock_rt.h create mode 100644 include/linux/spinlock_types_nort.h create mode 100644 include/linux/spinlock_types_raw.h create mode 100644 include/linux/spinlock_types_rt.h create mode 100644 include/linux/wait-simple.h create mode 100644 include/linux/work-simple.h create mode 100644 include/trace/events/hist.h create mode 100644 include/trace/events/latency_hist.h create mode 100644 kernel/locking/rt.c create mode 100644 kernel/sched/wait-simple.c create mode 100644 kernel/sched/work-simple.c create mode 100644 kernel/trace/latency_hist.c create mode 100644 localversion-rt