summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Gortmaker <paul.gortmaker@windriver.com>2012-10-15 20:01:19 -0400
committerPaul Gortmaker <paul.gortmaker@windriver.com>2012-10-15 20:03:43 -0400
commit1b19454df58db731fa9ca09b34909d28d4eef968 (patch)
tree145a541803a42a6261c4baa30bf13083b5e56f70
parent3a812a2bde2bd2aafe16e6fea775419468420752 (diff)
download3.4-rt-patches-1b19454df58db731fa9ca09b34909d28d4eef968.tar.gz
patches-3.4.1-rt9.tar.xz3.4.1-rt9
Note that Steve released this, so all patches now have numerical prefix and hence it looks like a global rm-rf and then replacement. But as the release notes describe, the changes are not so radical: ----------------------- Dear RT Folks, I'm pleased to announce the 3.4.1-rt9 stable release. This release is just an update to the new stable 3.4.1 version and no RT specific changes have been made. (one exception: commit 24312d34 workqueue: skip nr_running sanity check in \ worker_enter_idle() if trustee is active has been reverted. Thanks to Ibrahim Umar \ for pointing out the build failure. The commit was to remove a triggering of a false WARN_ON, but it required variables that did not exist in the -rt workqueue version. Hopefully we do not see this false positive.) You can get this release via the git tree at: git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git Head SHA1: 0ccbbea2d9b1253eaae376df58705bfd11d0028f Or to build 3.4.1-rt9 directly, the following patches should be applied: http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.4.tar.xz http://www.kernel.org/pub/linux/kernel/v3.x/patch-3.4.1.xz http://www.kernel.org/pub/linux/kernel/projects/rt/3.4/patch-3.4.1-rt9.patch.xz Enjoy, -- Steve ----------------------- http://marc.info/?l=linux-rt-users&m=133907660623396&w=2 md5sum of tarball: 9702c4dc0dc5af515ab973cdb134e2c4 patches-3.4.1-rt9.tar.xz Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-rw-r--r--patches/0001-Revert-workqueue-skip-nr_running-sanity-check-in-wor.patch38
-rw-r--r--patches/0002-slab-lockdep-Annotate-all-slab-caches.patch (renamed from patches/re-possible-slab-deadlock-while-doing-ifenslave-1.patch)23
-rw-r--r--patches/0003-x86-kprobes-Remove-remove-bogus-preempt_enable.patch (renamed from patches/x86-kprobes-remove-bogus-preempt-enable.patch)16
-rw-r--r--patches/0004-tick-Add-tick-skew-boot-option.patch (renamed from patches/tick-skew.patch)47
-rw-r--r--patches/0005-x86-hpet-Disable-MSI-on-Lenovo-W510.patch (renamed from patches/x86-hpet-disable-msi-on-lenovo-w510.patch)18
-rw-r--r--patches/0006-block-Shorten-interrupt-disabled-regions.patch (renamed from patches/block-shorten-interrupt-disabled-regions.patch)26
-rw-r--r--patches/0007-sched-Distangle-worker-accounting-from-rq-3Elock.patch (renamed from patches/sched-distangle-worker-accounting-from-rq-3elock.patch)57
-rw-r--r--patches/0008-mips-enable-interrupts-in-signal.patch.patch (renamed from patches/mips-enable-interrupts-in-signal.patch)16
-rw-r--r--patches/0009-arm-enable-interrupts-in-signal-code.patch.patch27
-rw-r--r--patches/0010-seqlock-Remove-unused-functions.patch (renamed from patches/seqlock-remove-unused-functions.patch)18
-rw-r--r--patches/0011-seqlock-Use-seqcount.patch (renamed from patches/seqlock-use-seqcount.patch)37
-rw-r--r--patches/0012-timekeeping-Split-xtime_lock.patch (renamed from patches/timekeeping-split-xtime-lock.patch)100
-rw-r--r--patches/0013-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch (renamed from patches/intel_idle-convert-i7300_idle_lock-to-raw-spinlock.patch)21
-rw-r--r--patches/0014-tracing-Account-for-preempt-off-in-preempt_schedule.patch (renamed from patches/tracing-account-for-preempt-off-in-preempt_schedule.patch)17
-rw-r--r--patches/0015-signal-revert-ptrace-preempt-magic.patch.patch (renamed from patches/signal-revert-ptrace-preempt-magic.patch)16
-rw-r--r--patches/0016-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch (renamed from patches/arm-mark-pmu-interupt-no-thread.patch)16
-rw-r--r--patches/0017-arm-Allow-forced-irq-threading.patch (renamed from patches/arm-allow-irq-threading.patch)14
-rw-r--r--patches/0018-preempt-rt-Convert-arm-boot_lock-to-raw.patch (renamed from patches/arm-convert-boot-lock-to-raw.patch)81
-rw-r--r--patches/0019-arm-omap-make-wakeupgen_lock-raw.patch.patch (renamed from patches/arm-omap-make-wakeupgen_lock-raw.patch)22
-rw-r--r--patches/0020-signals-Do-not-wakeup-self.patch (renamed from patches/signals-do-not-wake-self.patch)17
-rw-r--r--patches/0021-posix-timers-Prevent-broadcast-signals.patch (renamed from patches/posix-timers-no-broadcast.patch)19
-rw-r--r--patches/0022-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch (renamed from patches/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch)77
-rw-r--r--patches/0023-signal-x86-Delay-calling-signals-in-atomic.patch (renamed from patches/oleg-signal-rt-fix.patch)46
-rw-r--r--patches/0024-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch (renamed from patches/generic-cmpxchg-use-raw-local-irq.patch)22
-rw-r--r--patches/0025-drivers-random-Reduce-preempt-disabled-region.patch (renamed from patches/drivers-random-reduce-preempt-disabled-region.patch)19
-rw-r--r--patches/0026-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch (renamed from patches/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch)30
-rw-r--r--patches/0027-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch (renamed from patches/clocksource-tclib-allow-higher-clockrates.patch)38
-rw-r--r--patches/0028-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch (renamed from patches/drivers-net-tulip-add-missing-pci-disable.patch)18
-rw-r--r--patches/0029-drivers-net-Use-disable_irq_nosync-in-8139too.patch (renamed from patches/drivers-net-8139-disable-irq-nosync.patch)17
-rw-r--r--patches/0030-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch (renamed from patches/drivers-net-ehea-mark-rx-irq-no-thread.patch)18
-rw-r--r--patches/0031-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch (renamed from patches/drivers-net-at91-make-mdio-protection-rt-safe.patch)22
-rw-r--r--patches/0032-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch (renamed from patches/mm-prepare-pf-disable-discoupling.patch)42
-rw-r--r--patches/0033-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch (renamed from patches/arch-use-pagefault-disabled.patch)227
-rw-r--r--patches/0034-mm-pagefault_disabled.patch (renamed from patches/peter_zijlstra-frob-pagefault_disable.patch)246
-rw-r--r--patches/0035-mm-raw_pagefault_disable.patch (renamed from patches/peterz-raw_pagefault_disable.patch)27
-rw-r--r--patches/0036-filemap-fix-up.patch.patch (renamed from patches/filemap-fix-up.patch)16
-rw-r--r--patches/0037-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch (renamed from patches/mm-remove-preempt-count-from-pf.patch)15
-rw-r--r--patches/0038-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch (renamed from patches/x86-highmem-warn.patch)17
-rw-r--r--patches/0039-suspend-Prevent-might-sleep-splats.patch (renamed from patches/suspend-prevernt-might-sleep-splats.patch)43
-rw-r--r--patches/0040-OF-Fixup-resursive-locking-code-paths.patch (renamed from patches/of-fixup-recursive-locking.patch)29
-rw-r--r--patches/0041-of-convert-devtree-lock.patch.patch (renamed from patches/of-convert-devtree-lock.patch)84
-rw-r--r--patches/0042-list-add-list-last-entry.patch.patch (renamed from patches/list-add-list-last-entry.patch)16
-rw-r--r--patches/0043-mm-page-alloc-use-list-last-entry.patch.patch (renamed from patches/mm-page-alloc-use-list-last-entry.patch)16
-rw-r--r--patches/0044-mm-slab-move-debug-out.patch.patch (renamed from patches/mm-slab-move-debug-out.patch)16
-rw-r--r--patches/0045-rwsem-inlcude-fix.patch.patch (renamed from patches/pid-h-include-atomic-h.patch)14
-rw-r--r--patches/0046-sysctl-include-fix.patch.patch (renamed from patches/sysctl-include-atomic-h.patch)14
-rw-r--r--patches/0047-net-flip-lock-dep-thingy.patch.patch (renamed from patches/net-flip-lock-dep-thingy.patch)18
-rw-r--r--patches/0048-softirq-thread-do-softirq.patch.patch (renamed from patches/softirq-thread-do-softirq.patch)24
-rw-r--r--patches/0049-softirq-split-out-code.patch.patch (renamed from patches/softirq-split-out-code.patch)18
-rw-r--r--patches/0050-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch (renamed from patches/x86-io-apic-migra-no-unmask.patch)16
-rw-r--r--patches/0051-x86-Do-not-disable-preemption-in-int3-on-32bit.patch (renamed from patches/fix-rt-int3-x86_32-3.2-rt.patch)28
-rw-r--r--patches/0052-locking-various-init-fixes.patch.patch (renamed from patches/locking-various-init-fixes.patch)52
-rw-r--r--patches/0053-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch (renamed from patches/pci-access-use-__wake_up_all_locked.patch)19
-rw-r--r--patches/0054-latency-hist.patch.patch (renamed from patches/latency-hist.patch)111
-rw-r--r--patches/0055-hwlatdetect.patch.patch (renamed from patches/hwlatdetect.patch)57
-rw-r--r--patches/0056-localversion.patch.patch (renamed from patches/localversion.patch)16
-rw-r--r--patches/0057-early-printk-consolidate.patch.patch (renamed from patches/early-printk-consolidate.patch)152
-rw-r--r--patches/0058-printk-kill.patch.patch (renamed from patches/printk-kill.patch)40
-rw-r--r--patches/0059-printk-force_early_printk-boot-param-to-help-with-de.patch (renamed from patches/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch)23
-rw-r--r--patches/0060-rt-preempt-base-config.patch.patch (renamed from patches/rt-preempt-base-config.patch)14
-rw-r--r--patches/0061-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch (renamed from patches/bug-rt-dependend-variants.patch)17
-rw-r--r--patches/0062-rt-local_irq_-variants-depending-on-RT-RT.patch (renamed from patches/local-irq-rt-depending-variants.patch)25
-rw-r--r--patches/0063-preempt-Provide-preempt_-_-no-rt-variants.patch (renamed from patches/preempt-nort-rt-variants.patch)15
-rw-r--r--patches/0064-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch (renamed from patches/ata-disable-interrupts-if-non-rt.patch)22
-rw-r--r--patches/0065-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch (renamed from patches/ide-use-nort-local-irq-variants.patch)89
-rw-r--r--patches/0066-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch (renamed from patches/infiniband-mellanox-ib-use-nort-irq.patch)20
-rw-r--r--patches/0067-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch (renamed from patches/inpt-gameport-use-local-irq-nort.patch)20
-rw-r--r--patches/0068-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch (renamed from patches/acpi-use-local-irq-nort.patch)15
-rw-r--r--patches/0069-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch (renamed from patches/user-use-local-irq-nort.patch)16
-rw-r--r--patches/0070-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch (renamed from patches/resource-counters-use-localirq-nort.patch)20
-rw-r--r--patches/0071-usb-Use-local_irq_-_nort-variants.patch (renamed from patches/usb-hcd-use-local-irq-nort.patch)19
-rw-r--r--patches/0072-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch (renamed from patches/tty-use-local-irq-nort.patch)19
-rw-r--r--patches/0073-mm-scatterlist-dont-disable-irqs-on-RT.patch (renamed from patches/mm-scatterlist-dont-disable-irqs-on-RT.patch)20
-rw-r--r--patches/0074-signal-fix-up-rcu-wreckage.patch.patch (renamed from patches/signal-fix-up-rcu-wreckage.patch)18
-rw-r--r--patches/0075-net-wireless-warn-nort.patch.patch (renamed from patches/net-wireless-warn-nort.patch)16
-rw-r--r--patches/0076-mm-Replace-cgroup_page-bit-spinlock.patch (renamed from patches/mm-cgroup-page-bit-spinlock.patch)31
-rw-r--r--patches/0077-buffer_head-Replace-bh_uptodate_lock-for-rt.patch (renamed from patches/fs-replace-bh_uptodate_lock-for-rt.patch)48
-rw-r--r--patches/0078-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch (renamed from patches/fs-jbd-replace-bh_state-lock.patch)31
-rw-r--r--patches/0079-genirq-Disable-DEBUG_SHIRQ-for-rt.patch (renamed from patches/genirq-nodebug-shirq.patch)16
-rw-r--r--patches/0080-genirq-Disable-random-call-on-preempt-rt.patch (renamed from patches/genirq-disable-random-call-on-preempt-rt.patch)17
-rw-r--r--patches/0081-genirq-disable-irqpoll-on-rt.patch (renamed from patches/genirq-disable-irqpoll-on-rt.patch)17
-rw-r--r--patches/0082-genirq-force-threading.patch.patch (renamed from patches/genirq-force-threading.patch)28
-rw-r--r--patches/0083-drivers-net-fix-livelock-issues.patch (renamed from patches/drivers-net-fix-livelock-issues.patch)77
-rw-r--r--patches/0084-drivers-net-vortex-fix-locking-issues.patch (renamed from patches/drivers-net-vortex-fix-locking-issues.patch)21
-rw-r--r--patches/0085-drivers-net-gianfar-Make-RT-aware.patch (renamed from patches/drivers-net-gianfar-make-rt-aware.patch)19
-rw-r--r--patches/0086-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch (renamed from patches/usb-fix-mouse-problem-copying-large-data.patch)18
-rw-r--r--patches/0087-local-var.patch.patch (renamed from patches/local-var.patch)14
-rw-r--r--patches/0088-rt-local-irq-lock.patch.patch (renamed from patches/rt-local-irq-lock.patch)16
-rw-r--r--patches/0089-cpu-rt-variants.patch.patch (renamed from patches/cpu-rt-variants.patch)16
-rw-r--r--patches/0090-mm-slab-wrap-functions.patch.patch (renamed from patches/mm-slab-wrap-functions.patch)70
-rw-r--r--patches/0091-slab-Fix-__do_drain-to-use-the-right-array-cache.patch (renamed from patches/rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch)17
-rw-r--r--patches/0092-mm-More-lock-breaks-in-slab.c.patch (renamed from patches/mm-slab-more-lock-breaks.patch)49
-rw-r--r--patches/0093-mm-page_alloc-rt-friendly-per-cpu-pages.patch (renamed from patches/mm-page_alloc-rt-friendly-per-cpu-pages.patch)29
-rw-r--r--patches/0094-mm-page_alloc-reduce-lock-sections-further.patch (renamed from patches/mm-page_alloc-reduce-lock-sections-further.patch)32
-rw-r--r--patches/0095-mm-page-alloc-fix.patch.patch (renamed from patches/mm-page-alloc-fix.patch)16
-rw-r--r--patches/0096-mm-convert-swap-to-percpu-locked.patch (renamed from patches/mm-convert-swap-to-percpu-locked.patch)19
-rw-r--r--patches/0097-mm-make-vmstat-rt-aware.patch (renamed from patches/mm-make-vmstat-rt-aware.patch)39
-rw-r--r--patches/0098-mm-shrink-the-page-frame-to-rt-size.patch (renamed from patches/mm-shrink-the-page-frame-to-rt-size.patch)35
-rw-r--r--patches/0099-ARM-Initialize-ptl-lock-for-vector-page.patch (renamed from patches/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch)16
-rw-r--r--patches/0100-mm-Allow-only-slab-on-RT.patch (renamed from patches/mm-allow-slab-rt.patch)15
-rw-r--r--patches/0101-radix-tree-rt-aware.patch.patch (renamed from patches/radix-tree-rt-aware.patch)30
-rw-r--r--patches/0102-panic-disable-random-on-rt.patch (renamed from patches/panic-disable-random-on-rt.patch)14
-rw-r--r--patches/0103-ipc-Make-the-ipc-code-rt-aware.patch (renamed from patches/ipc-make-rt-aware.patch)31
-rw-r--r--patches/0104-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch (renamed from patches/ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch)18
-rw-r--r--patches/0105-relay-fix-timer-madness.patch (renamed from patches/relay-fix-timer-madness.patch)21
-rw-r--r--patches/0106-net-ipv4-route-use-locks-on-up-rt.patch.patch (renamed from patches/net-ipv4-route-use-locks-on-up-rt.patch)14
-rw-r--r--patches/0107-workqueue-avoid-the-lock-in-cpu-dying.patch.patch (renamed from patches/workqueue-avoid-the-lock-in-cpu-dying.patch)20
-rw-r--r--patches/0108-timers-prepare-for-full-preemption.patch (renamed from patches/timers-prepare-for-full-preemption.patch)35
-rw-r--r--patches/0109-timers-preempt-rt-support.patch (renamed from patches/timers-preempt-rt-support.patch)18
-rw-r--r--patches/0110-timers-fix-timer-hotplug-on-rt.patch (renamed from patches/timers-fix-timer-hotplug-on-rt.patch)21
-rw-r--r--patches/0111-timers-mov-printk_tick-to-soft-interrupt.patch (renamed from patches/timers-mov-printk_tick-to-soft-interrupt.patch)17
-rw-r--r--patches/0112-timer-delay-waking-softirqs-from-the-jiffy-tick.patch (renamed from patches/timer-delay-waking-softirqs-from-the-jiffy-tick.patch)15
-rw-r--r--patches/0113-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch (renamed from patches/timers-avoid-the-base-null-otptimization-on-rt.patch)19
-rw-r--r--patches/0114-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch (renamed from patches/rfc-printk-don-27t-call-printk_tick-in-printk_needs_cpu.patch)15
-rw-r--r--patches/0115-hrtimers-prepare-full-preemption.patch (renamed from patches/hrtimers-prepare-full-preemption.patch)51
-rw-r--r--patches/0116-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch (renamed from patches/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch)98
-rw-r--r--patches/0117-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch (renamed from patches/peter_zijlstra-frob-hrtimer.patch)21
-rw-r--r--patches/0118-hrtimer-Add-missing-debug_activate-aid-Was-Re-ANNOUN.patch41
-rw-r--r--patches/0119-hrtimer-fix-reprogram-madness.patch.patch (renamed from patches/hrtimer-fix-reprogram-madness.patch)18
-rw-r--r--patches/0120-timer-fd-Prevent-live-lock.patch (renamed from patches/timer-fd-avoid-live-lock.patch)16
-rw-r--r--patches/0121-posix-timers-thread-posix-cpu-timers-on-rt.patch (renamed from patches/posix-timers-thread-posix-cpu-timers-on-rt.patch)69
-rw-r--r--patches/0122-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch (renamed from patches/posix-timers-shorten-cpu-timers-thread.patch)18
-rw-r--r--patches/0123-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch (renamed from patches/posix-timers-avoid-wakeups-when-no-timers-are-active.patch)20
-rw-r--r--patches/0124-sched-delay-put-task.patch.patch (renamed from patches/sched-delay-put-task.patch)26
-rw-r--r--patches/0125-sched-limit-nr-migrate.patch.patch (renamed from patches/sched-limit-nr-migrate.patch)16
-rw-r--r--patches/0126-sched-mmdrop-delayed.patch.patch (renamed from patches/sched-mmdrop-delayed.patch)52
-rw-r--r--patches/0127-sched-rt-mutex-wakeup.patch.patch (renamed from patches/sched-rt-mutex-wakeup.patch)28
-rw-r--r--patches/0128-sched-might-sleep-do-not-account-rcu-depth.patch.patch (renamed from patches/sched-might-sleep-do-not-account-rcu-depth.patch)28
-rw-r--r--patches/0129-sched-cond-resched.patch.patch (renamed from patches/sched-cond-resched.patch)16
-rw-r--r--patches/0130-cond-resched-softirq-fix.patch.patch (renamed from patches/cond-resched-softirq-rt.patch)26
-rw-r--r--patches/0131-cond-resched-lock-rt-tweak.patch.patch (renamed from patches/cond-resched-lock-rt-tweak.patch)14
-rw-r--r--patches/0132-sched-disable-ttwu-queue.patch.patch (renamed from patches/sched-disable-ttwu-queue.patch)14
-rw-r--r--patches/0133-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch (renamed from patches/sched-disable-rt-group-sched-on-rt.patch)14
-rw-r--r--patches/0134-sched-ttwu-Return-success-when-only-changing-the-sav.patch (renamed from patches/sched-ttwu-ensure-success-return-is-correct.patch)17
-rw-r--r--patches/0135-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch (renamed from patches/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch)20
-rw-r--r--patches/0136-stomp-machine-mark-stomper-thread.patch.patch (renamed from patches/stomp-machine-mark-stomper-thread.patch)26
-rw-r--r--patches/0137-stomp-machine-raw-lock.patch.patch (renamed from patches/stomp-machine-raw-lock.patch)34
-rw-r--r--patches/0138-hotplug-Lightweight-get-online-cpus.patch (renamed from patches/hotplug-light-get-online-cpus.patch)36
-rw-r--r--patches/0139-hotplug-sync_unplug-No.patch (renamed from patches/hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch)16
-rw-r--r--patches/0140-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch (renamed from patches/re-migrate_disable-race-with-cpu-hotplug-3f.patch)17
-rw-r--r--patches/0141-sched-migrate-disable.patch.patch (renamed from patches/sched-migrate-disable.patch)64
-rw-r--r--patches/0142-hotplug-use-migrate-disable.patch.patch (renamed from patches/hotplug-use-migrate-disable.patch)18
-rw-r--r--patches/0143-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch (renamed from patches/hotplug-call-cpu_unplug_begin-a-little-early.patch)16
-rw-r--r--patches/0144-ftrace-migrate-disable-tracing.patch.patch (renamed from patches/ftrace-migrate-disable-tracing.patch)46
-rw-r--r--patches/0145-tracing-Show-padding-as-unsigned-short.patch (renamed from patches/rt-tracing-show-padding-as-unsigned-short.patch)18
-rw-r--r--patches/0146-migrate-disable-rt-variant.patch.patch (renamed from patches/migrate-disable-rt-variant.patch)14
-rw-r--r--patches/0147-sched-Optimize-migrate_disable.patch (renamed from patches/peter_zijlstra-frob-migrate_disable.patch)16
-rw-r--r--patches/0148-sched-Generic-migrate_disable.patch (renamed from patches/peter_zijlstra-frob-migrate_disable-2.patch)68
-rw-r--r--patches/0149-sched-rt-Fix-migrate_enable-thinko.patch (renamed from patches/sched-rt-fix-migrate_enable-thinko.patch)27
-rw-r--r--patches/0150-sched-teach-migrate_disable-about-atomic-contexts.patch (renamed from patches/sched-teach-migrate_disable-about-atomic-contexts.patch)28
-rw-r--r--patches/0151-sched-Postpone-actual-migration-disalbe-to-schedule.patch (renamed from patches/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch)21
-rw-r--r--patches/0152-sched-Do-not-compare-cpu-masks-in-scheduler.patch (renamed from patches/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch)19
-rw-r--r--patches/0153-sched-Have-migrate_disable-ignore-bounded-threads.patch (renamed from patches/rt-sched-have-migrate_disable-ignore-bounded-threads.patch)17
-rw-r--r--patches/0154-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch (renamed from patches/sched-clear-pf-thread-bound-on-fallback-rq.patch)16
-rw-r--r--patches/0155-ftrace-crap.patch.patch (renamed from patches/ftrace-crap.patch)34
-rw-r--r--patches/0156-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch (renamed from patches/rt-ring-buffer-convert-reader_lock-from-raw_spin_lock-into-spin_lock.patch)70
-rw-r--r--patches/0157-net-netif_rx_ni-migrate-disable.patch.patch (renamed from patches/net-netif_rx_ni-migrate-disable.patch)16
-rw-r--r--patches/0158-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch (renamed from patches/softirq-sanitize-softirq-pending.patch)41
-rw-r--r--patches/0159-lockdep-rt.patch.patch (renamed from patches/lockdep-no-softirq-accounting-on-rt.patch)26
-rw-r--r--patches/0160-mutex-no-spin-on-rt.patch.patch (renamed from patches/mutex-no-spin-on-rt.patch)14
-rw-r--r--patches/0161-softirq-local-lock.patch.patch (renamed from patches/softirq-local-lock.patch)62
-rw-r--r--patches/0162-softirq-Export-in_serving_softirq.patch (renamed from patches/softirq-export-in-serving-softirq.patch)15
-rw-r--r--patches/0163-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch (renamed from patches/harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch)18
-rw-r--r--patches/0164-softirq-Fix-unplug-deadlock.patch (renamed from patches/softirq-fix-unplug-deadlock.patch)24
-rw-r--r--patches/0165-softirq-disable-softirq-stacks-for-rt.patch.patch (renamed from patches/softirq-disable-softirq-stacks-for-rt.patch)86
-rw-r--r--patches/0166-softirq-make-fifo.patch.patch (renamed from patches/softirq-make-fifo.patch)16
-rw-r--r--patches/0167-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch (renamed from patches/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch)50
-rw-r--r--patches/0168-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch (renamed from patches/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch)57
-rw-r--r--patches/0169-local-vars-migrate-disable.patch.patch (renamed from patches/local-vars-migrate-disable.patch)14
-rw-r--r--patches/0170-md-raid5-Make-raid5_percpu-handling-RT-aware.patch (renamed from patches/md-raid5-percpu-handling-rt-aware.patch)29
-rw-r--r--patches/0171-rtmutex-lock-killable.patch.patch (renamed from patches/rtmutex-lock-killable.patch)28
-rw-r--r--patches/0172-rtmutex-futex-prepare-rt.patch.patch (renamed from patches/rtmutex-futex-prepare-rt.patch)56
-rw-r--r--patches/0173-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch (renamed from patches/futex-requeue-pi-fix.patch)35
-rw-r--r--patches/0174-rt-mutex-add-sleeping-spinlocks-support.patch.patch (renamed from patches/rt-mutex-add-sleeping-spinlocks-support.patch)74
-rw-r--r--patches/0175-spinlock-types-separate-raw.patch.patch (renamed from patches/spinlock-types-separate-raw.patch)44
-rw-r--r--patches/0176-rtmutex-avoid-include-hell.patch.patch (renamed from patches/rtmutex-avoid-include-hell.patch)14
-rw-r--r--patches/0177-rt-add-rt-spinlocks.patch.patch (renamed from patches/rt-add-rt-spinlock-to-headers.patch)34
-rw-r--r--patches/0178-rt-add-rt-to-mutex-headers.patch.patch (renamed from patches/rt-add-rt-to-mutex-headers.patch)28
-rw-r--r--patches/0179-rwsem-add-rt-variant.patch.patch (renamed from patches/rwsem-add-rt-variant.patch)40
-rw-r--r--patches/0180-rt-Add-the-preempt-rt-lock-replacement-APIs.patch (renamed from patches/rt-add-rt-locks.patch)109
-rw-r--r--patches/0181-rwlocks-Fix-section-mismatch.patch (renamed from patches/tasklist-lock-fix-section-conflict.patch)31
-rw-r--r--patches/0182-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch (renamed from patches/timer-handle-idle-trylock-in-get-next-timer-irq.patch)34
-rw-r--r--patches/0183-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch (renamed from patches/rcu-force-preempt-rcu-for-rt.patch)14
-rw-r--r--patches/0184-rcu-Frob-softirq-test.patch (renamed from patches/peter_zijlstra-frob-rcu.patch)42
-rw-r--r--patches/0185-rcu-Merge-RCU-bh-into-RCU-preempt.patch (renamed from patches/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch)59
-rw-r--r--patches/0186-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch (renamed from patches/rcu-fix-macro-substitution.patch)18
-rw-r--r--patches/0187-rcu-more-fallout.patch.patch (renamed from patches/rcu-tiny-merge-bh.patch)18
-rw-r--r--patches/0188-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch (renamed from patches/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch)55
-rw-r--r--patches/0189-rcu-Fix-build-break.patch (renamed from patches/rcu-fix-build-break.patch)19
-rw-r--r--patches/0190-rt-rcutree-Move-misplaced-prototype.patch (renamed from patches/rt-rcutree-warn-fix.patch)28
-rw-r--r--patches/0191-lglocks-rt.patch.patch (renamed from patches/lglocks-rt.patch)16
-rw-r--r--patches/0192-serial-8250-Clean-up-the-locking-for-rt.patch (renamed from patches/drivers-serial-cleanup-locking-for-rt.patch)19
-rw-r--r--patches/0193-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch (renamed from patches/drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch)28
-rw-r--r--patches/0194-drivers-tty-fix-omap-lock-crap.patch.patch (renamed from patches/drivers-tty-fix-omap-lock-crap.patch)18
-rw-r--r--patches/0195-rt-Improve-the-serial-console-PASS_LIMIT.patch (renamed from patches/rt-serial-warn-fix.patch)23
-rw-r--r--patches/0196-fs-namespace-preemption-fix.patch (renamed from patches/fs-namespace-preemption-fix.patch)15
-rw-r--r--patches/0197-mm-protect-activate-switch-mm.patch.patch (renamed from patches/mm-protect-activate-switch-mm.patch)26
-rw-r--r--patches/0198-mm-Protect-activate_mm-by-preempt_-disable-7Cenable-.patch (renamed from patches/mm-protect-activate_mm-by-preempt_-disable-7cenable-_rt.patch)16
-rw-r--r--patches/0199-fs-block-rt-support.patch.patch (renamed from patches/fs-block-rt-support.patch)24
-rw-r--r--patches/0200-fs-ntfs-disable-interrupt-only-on-RT.patch (renamed from patches/fs-ntfs-disable-interrupt-non-rt.patch)17
-rw-r--r--patches/0201-x86-Convert-mce-timer-to-hrtimer.patch (renamed from patches/x86-mce-timer-hrtimer.patch)33
-rw-r--r--patches/0202-x86-stackprotector-Avoid-random-pool-on-rt.patch (renamed from patches/x86-stackprot-no-random-on-rt.patch)17
-rw-r--r--patches/0203-x86-Use-generic-rwsem_spinlocks-on-rt.patch (renamed from patches/x86-use-gen-rwsem-spinlocks-rt.patch)15
-rw-r--r--patches/0204-x86-Disable-IST-stacks-for-debug-int-3-stack-fault-f.patch (renamed from patches/x86-disable-debug-stack.patch)33
-rw-r--r--patches/0205-workqueue-use-get-cpu-light.patch.patch (renamed from patches/workqueue-use-get-cpu-light.patch)16
-rw-r--r--patches/0206-epoll.patch.patch (renamed from patches/epoll-use-get-cpu-light.patch)18
-rw-r--r--patches/0207-mm-vmalloc.patch.patch (renamed from patches/mm-vmalloc-use-get-cpu-light.patch)22
-rw-r--r--patches/0208-workqueue-Fix-cpuhotplug-trainwreck.patch (renamed from patches/workqueue-sanity.patch)86
-rw-r--r--patches/0209-workqueue-Fix-PF_THREAD_BOUND-abuse.patch (renamed from patches/workqueue-fix-PF_THREAD_BOUND.patch)20
-rw-r--r--patches/0210-workqueue-Use-get_cpu_light-in-flush_gcwq.patch (renamed from patches/workqueue-hotplug-fix.patch)16
-rw-r--r--patches/0211-hotplug-stuff.patch.patch (renamed from patches/workqueue-more-hotplug-fallout.patch)18
-rw-r--r--patches/0212-debugobjects-rt.patch.patch (renamed from patches/debugobjects-rt.patch)18
-rw-r--r--patches/0213-jump-label-rt.patch.patch (renamed from patches/jump-label-rt.patch)14
-rw-r--r--patches/0214-skbufhead-raw-lock.patch.patch (renamed from patches/skbufhead-raw-lock.patch)46
-rw-r--r--patches/0215-x86-no-perf-irq-work-rt.patch.patch (renamed from patches/perf-move-irq-work-to-softirq-in-rt.patch)34
-rw-r--r--patches/0216-console-make-rt-friendly.patch.patch (renamed from patches/console-make-rt-friendly.patch)22
-rw-r--r--patches/0217-fix-printk-flush-of-messages.patch (renamed from patches/fix-printk-flush-of-messages-1.patch)23
-rw-r--r--patches/0218-power-use-generic-rwsem-on-rt.patch (renamed from patches/power-use-generic-rwsem-on-rt.patch)14
-rw-r--r--patches/0219-power-disable-highmem-on-rt.patch.patch (renamed from patches/power-disable-highmem-on-rt.patch)14
-rw-r--r--patches/0220-arm-disable-highmem-on-rt.patch.patch (renamed from patches/arm-disable-highmem-on-rt.patch)16
-rw-r--r--patches/0221-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch (renamed from patches/arm-at91-tclib-default-to-tclib-timer-for-rt.patch)15
-rw-r--r--patches/0222-mips-disable-highmem-on-rt.patch.patch (renamed from patches/mips-disable-highmem-on-rt.patch)14
-rw-r--r--patches/0223-net-Avoid-livelock-in-net_tx_action-on-RT.patch (renamed from patches/net-tx-action-avoid-livelock-on-rt.patch)21
-rw-r--r--patches/0224-ping-sysrq.patch.patch (renamed from patches/ping-sysrq.patch)45
-rw-r--r--patches/0225-kgdb-serial-Short-term-workaround.patch (renamed from patches/kgb-serial-hackaround.patch)39
-rw-r--r--patches/0226-add-sys-kernel-realtime-entry.patch (renamed from patches/sysfs-realtime-entry.patch)18
-rw-r--r--patches/0227-mm-rt-kmap_atomic-scheduling.patch (renamed from patches/peter_zijlstra-re-_3_0-rt4.patch)32
-rw-r--r--patches/0228-ipc-sem-Rework-semaphore-wakeups.patch (renamed from patches/ipc-sem-rework-semaphore-wakeups.patch)26
-rw-r--r--patches/0229-x86-kvm-require-const-tsc-for-rt.patch.patch (renamed from patches/x86-kvm-require-const-tsc-for-rt.patch)16
-rw-r--r--patches/0230-scsi-fcoe-rt-aware.patch.patch (renamed from patches/scsi-fcoe-rt-aware.patch)44
-rw-r--r--patches/0231-x86-crypto-Reduce-preempt-disabled-regions.patch (renamed from patches/x86-crypto-reduce-preempt-disabled-regions.patch)24
-rw-r--r--patches/0232-dm-Make-rt-aware.patch (renamed from patches/dm-make-rt-aware.patch)16
-rw-r--r--patches/0233-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch (renamed from patches/cpumask-disable-offstack-on-rt.patch)22
-rw-r--r--patches/0234-seqlock-Prevent-rt-starvation.patch (renamed from patches/seqlock-prevent-rt-starvation.patch)37
-rw-r--r--patches/0235-timer-Fix-hotplug-for-rt.patch (renamed from patches/rfc-timer-fix-hotplug-for-rt.patch)20
-rw-r--r--patches/0236-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch (renamed from patches/rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch)19
-rw-r--r--patches/0237-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch (renamed from patches/rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch)17
-rw-r--r--patches/0238-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch (renamed from patches/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch)21
-rw-r--r--patches/0239-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch (renamed from patches/rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch)16
-rw-r--r--patches/0240-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch (renamed from patches/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch)16
-rw-r--r--patches/0241-softirq-Check-preemption-after-reenabling-interrupts.patch (renamed from patches/softirq-preempt-fix-3-re.txt)61
-rw-r--r--patches/0242-scsi-qla2xxx-Use-local_irq_save_nort-in-qla2x00_poll.patch (renamed from patches/scsi-qla2xxx-fix-bug-sleeping-function-called-from-invalid-context.patch)14
-rw-r--r--patches/0243-net-RT-REmove-preemption-disabling-in-netif_rx.patch (renamed from patches/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch)16
-rw-r--r--patches/0244-rt-Introduce-cpu_chill.patch (renamed from patches/rt-introduce-cpu-chill.patch)18
-rw-r--r--patches/0245-fs-dcache-Use-cpu_chill-in-trylock-loops.patch (renamed from patches/fs-dcache-use-cpu-chill-in-trylock-loops.patch)46
-rw-r--r--patches/0246-net-Use-cpu_chill-instead-of-cpu_relax.patch (renamed from patches/net-use-cpu-chill.patch)30
-rw-r--r--patches/0247-ntp-Make-ntp_lock-raw.patch (renamed from patches/ntp-make-ntp-lock-raw-sigh.patch)22
-rw-r--r--patches/0248-mips-remove-smp-reserve-lock.patch.patch (renamed from patches/mips-remove-smp-reserve-lock.patch)14
-rw-r--r--patches/0249-lockdep-Selftest-convert-spinlock-to-raw-spinlock.patch (renamed from patches/lockdep-selftest-convert-spinlock-to-raw-spinlock.patch)17
-rw-r--r--patches/0250-lockdep-Selftest-Only-do-hardirq-context-test-for-ra.patch (renamed from patches/lockdep-selftest-only-do-hardirq-context-test-for-raw-spinlock.patch)18
-rw-r--r--patches/0251-genirq-Add-default-affinity-mask-command-line-option.patch (renamed from patches/genirq-add-default-mask-cmdline-option.patch)25
-rw-r--r--patches/0252-kconfig-disable-a-few-options-rt.patch.patch (renamed from patches/kconfig-disable-a-few-options-rt.patch)30
-rw-r--r--patches/0253-kconfig-preempt-rt-full.patch.patch (renamed from patches/kconfig-preempt-rt-full.patch)30
-rw-r--r--patches/0254-Linux-3.4.1-rt9-REBASE.patch19
-rw-r--r--patches/arm-enable-interrupts-in-signal-code.patch23
-rw-r--r--patches/hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch70
-rw-r--r--patches/series844
257 files changed, 4654 insertions, 4018 deletions
diff --git a/patches/0001-Revert-workqueue-skip-nr_running-sanity-check-in-wor.patch b/patches/0001-Revert-workqueue-skip-nr_running-sanity-check-in-wor.patch
new file mode 100644
index 0000000..0bd5bf9
--- /dev/null
+++ b/patches/0001-Revert-workqueue-skip-nr_running-sanity-check-in-wor.patch
@@ -0,0 +1,38 @@
+From c2fcc13cf1a0d94dc2ffa47d40ffa3f690774349 Mon Sep 17 00:00:00 2001
+From: Steven Rostedt <rostedt@goodmis.org>
+Date: Thu, 7 Jun 2012 09:49:40 -0400
+Subject: [PATCH 001/254] Revert "workqueue: skip nr_running sanity check in
+ worker_enter_idle() if trustee is active"
+
+This reverts commit 24312d34c95702e51240f58c073db30630170fbf.
+
+Reported-by: Ibrahim Umar <iambaim@gmail.com>
+
+Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
+---
+ kernel/workqueue.c | 9 ++-------
+ 1 file changed, 2 insertions(+), 7 deletions(-)
+
+diff --git a/kernel/workqueue.c b/kernel/workqueue.c
+index 7da267c..5abf42f 100644
+--- a/kernel/workqueue.c
++++ b/kernel/workqueue.c
+@@ -1210,13 +1210,8 @@ static void worker_enter_idle(struct worker *worker)
+ } else
+ wake_up_all(&gcwq->trustee_wait);
+
+- /*
+- * Sanity check nr_running. Because trustee releases gcwq->lock
+- * between setting %WORKER_ROGUE and zapping nr_running, the
+- * warning may trigger spuriously. Check iff trustee is idle.
+- */
+- WARN_ON_ONCE(gcwq->trustee_state == TRUSTEE_DONE &&
+- gcwq->nr_workers == gcwq->nr_idle &&
++ /* sanity check nr_running */
++ WARN_ON_ONCE(gcwq->nr_workers == gcwq->nr_idle &&
+ atomic_read(get_gcwq_nr_running(gcwq->cpu)));
+ }
+
+--
+1.7.10.4
+
diff --git a/patches/re-possible-slab-deadlock-while-doing-ifenslave-1.patch b/patches/0002-slab-lockdep-Annotate-all-slab-caches.patch
index 26d6e44..0a2a993 100644
--- a/patches/re-possible-slab-deadlock-while-doing-ifenslave-1.patch
+++ b/patches/0002-slab-lockdep-Annotate-all-slab-caches.patch
@@ -1,6 +1,7 @@
-Subject: slab, lockdep: Annotate all slab caches
+From 9b6e300dbfa81b7504275ee767e202938db744c4 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
-Date: Mon Nov 28 19:51:51 CET 2011
+Date: Mon, 28 Nov 2011 19:51:51 +0100
+Subject: [PATCH 002/254] slab, lockdep: Annotate all slab caches
Currently we only annotate the kmalloc caches, annotate all of them.
@@ -17,10 +18,11 @@ Link: http://lkml.kernel.org/n/tip-10bey2cgpcvtbdkgigaoab8w@git.kernel.org
---
mm/slab.c | 52 ++++++++++++++++++++++++++++------------------------
1 file changed, 28 insertions(+), 24 deletions(-)
-Index: linux-3.4/mm/slab.c
-===================================================================
---- linux-3.4.orig/mm/slab.c
-+++ linux-3.4/mm/slab.c
+
+diff --git a/mm/slab.c b/mm/slab.c
+index e901a36..1fd4b4d 100644
+--- a/mm/slab.c
++++ b/mm/slab.c
@@ -611,6 +611,12 @@ int slab_is_available(void)
return g_cpucache_up >= EARLY;
}
@@ -34,7 +36,7 @@ Index: linux-3.4/mm/slab.c
#ifdef CONFIG_LOCKDEP
/*
-@@ -672,38 +678,41 @@ static void slab_set_debugobj_lock_class
+@@ -672,38 +678,41 @@ static void slab_set_debugobj_lock_classes(struct kmem_cache *cachep)
slab_set_debugobj_lock_classes_node(cachep, node);
}
@@ -90,7 +92,7 @@ Index: linux-3.4/mm/slab.c
{
}
-@@ -716,12 +725,6 @@ static void slab_set_debugobj_lock_class
+@@ -716,12 +725,6 @@ static void slab_set_debugobj_lock_classes(struct kmem_cache *cachep)
}
#endif
@@ -121,7 +123,7 @@ Index: linux-3.4/mm/slab.c
mutex_unlock(&cache_chain_mutex);
/* Done! */
-@@ -2544,6 +2546,8 @@ kmem_cache_create (const char *name, siz
+@@ -2544,6 +2546,8 @@ kmem_cache_create (const char *name, size_t size, size_t align,
slab_set_debugobj_lock_classes(cachep);
}
@@ -130,3 +132,6 @@ Index: linux-3.4/mm/slab.c
/* cache setup completed, link it into the list */
list_add(&cachep->next, &cache_chain);
oops:
+--
+1.7.10.4
+
diff --git a/patches/x86-kprobes-remove-bogus-preempt-enable.patch b/patches/0003-x86-kprobes-Remove-remove-bogus-preempt_enable.patch
index bf2a080..a93d9e1 100644
--- a/patches/x86-kprobes-remove-bogus-preempt-enable.patch
+++ b/patches/0003-x86-kprobes-Remove-remove-bogus-preempt_enable.patch
@@ -1,6 +1,7 @@
-Subject: x86: kprobes: Remove remove bogus preempt_enable
+From 76d5b34d335dc71524d2dddda6257493173924c1 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 17 Mar 2011 11:02:15 +0100
+Subject: [PATCH 003/254] x86: kprobes: Remove remove bogus preempt_enable
The CONFIG_PREEMPT=n section of setup_singlestep() contains:
@@ -15,11 +16,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/kprobes.c | 1 -
1 file changed, 1 deletion(-)
-Index: linux-3.4/arch/x86/kernel/kprobes.c
-===================================================================
---- linux-3.4.orig/arch/x86/kernel/kprobes.c
-+++ linux-3.4/arch/x86/kernel/kprobes.c
-@@ -486,7 +486,6 @@ setup_singlestep(struct kprobe *p, struc
+diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c
+index e213fc8..b9edf1a 100644
+--- a/arch/x86/kernel/kprobes.c
++++ b/arch/x86/kernel/kprobes.c
+@@ -486,7 +486,6 @@ setup_singlestep(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *k
* stepping.
*/
regs->ip = (unsigned long)p->ainsn.insn;
@@ -27,3 +28,6 @@ Index: linux-3.4/arch/x86/kernel/kprobes.c
return;
}
#endif
+--
+1.7.10.4
+
diff --git a/patches/tick-skew.patch b/patches/0004-tick-Add-tick-skew-boot-option.patch
index 1f47cdb..995edce 100644
--- a/patches/tick-skew.patch
+++ b/patches/0004-tick-Add-tick-skew-boot-option.patch
@@ -1,34 +1,35 @@
+From bf48ba64a0969750c739692a2ce24ba9ba05c29e Mon Sep 17 00:00:00 2001
From: Mike Galbraith <mgalbraith@suse.de>
-Date: Tue May 8 12:20:58 2012 +0200
-Subject: tick: Add tick skew boot option
-
+Date: Tue, 8 May 2012 12:20:58 +0200
+Subject: [PATCH 004/254] tick: Add tick skew boot option
+
Let the user decide whether power consumption or jitter is the
more important consideration for their machines.
Quoting removal commit af5ab277ded04bd9bc6b048c5a2f0e7d70ef0867:
-
+
"Historically, Linux has tried to make the regular timer tick on the
various CPUs not happen at the same time, to avoid contention on
xtime_lock.
-
+
Nowadays, with the tickless kernel, this contention no longer happens
since time keeping and updating are done differently. In addition,
this skew is actually hurting power consumption in a measurable way on
many-core systems."
-
+
Problems:
-
+
- Contrary to the above, systems do encounter contention on both
xtime_lock and RCU structure locks when the tick is synchronized.
-
+
- Moderate sized RT systems suffer intolerable jitter due to the tick
being synchronized.
-
+
- SGI reports the same for their large systems.
-
+
- Fully utilized systems reap no power saving benefit from skew removal,
but do suffer from resulting induced lock contention.
-
+
- 0209f649 rcu: limit rcu_node leaf-level fanout
This patch was born to combat lock contention which testing showed
to have been _induced by_ skew removal. Skew the tick, contention
@@ -39,17 +40,16 @@ Problems:
Signed-off-by: Mike Galbraith <mgalbraith@suse.de>
Link: http://lkml.kernel.org/r/1336472458.21924.78.camel@marge.simpson.net
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
Documentation/kernel-parameters.txt | 9 +++++++++
kernel/time/tick-sched.c | 18 ++++++++++++++++++
2 files changed, 27 insertions(+)
-Index: linux-3.4/Documentation/kernel-parameters.txt
-===================================================================
---- linux-3.4.orig/Documentation/kernel-parameters.txt
-+++ linux-3.4/Documentation/kernel-parameters.txt
-@@ -2426,6 +2426,15 @@ bytes respectively. Such letter suffixes
+diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
+index c1601e5..1e0150e 100644
+--- a/Documentation/kernel-parameters.txt
++++ b/Documentation/kernel-parameters.txt
+@@ -2426,6 +2426,15 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
sched_debug [KNL] Enables verbose scheduler debug messages.
@@ -65,11 +65,11 @@ Index: linux-3.4/Documentation/kernel-parameters.txt
security= [SECURITY] Choose a security module to enable at boot.
If this boot parameter is not specified, only the first
security module asking for security registration will be
-Index: linux-3.4/kernel/time/tick-sched.c
-===================================================================
---- linux-3.4.orig/kernel/time/tick-sched.c
-+++ linux-3.4/kernel/time/tick-sched.c
-@@ -814,6 +814,16 @@ static enum hrtimer_restart tick_sched_t
+diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
+index 6a3a5b9..efd3866 100644
+--- a/kernel/time/tick-sched.c
++++ b/kernel/time/tick-sched.c
+@@ -814,6 +814,16 @@ static enum hrtimer_restart tick_sched_timer(struct hrtimer *timer)
return HRTIMER_RESTART;
}
@@ -101,3 +101,6 @@ Index: linux-3.4/kernel/time/tick-sched.c
for (;;) {
hrtimer_forward(&ts->sched_timer, now, tick_period);
hrtimer_start_expires(&ts->sched_timer,
+--
+1.7.10.4
+
diff --git a/patches/x86-hpet-disable-msi-on-lenovo-w510.patch b/patches/0005-x86-hpet-Disable-MSI-on-Lenovo-W510.patch
index 9f5d28c..5eb6df7 100644
--- a/patches/x86-hpet-disable-msi-on-lenovo-w510.patch
+++ b/patches/0005-x86-hpet-Disable-MSI-on-Lenovo-W510.patch
@@ -1,6 +1,7 @@
-Subject: x86: hpet: Disable MSI on Lenovo W510
+From 264608417d3bbea4a9f200a9d1e6b6ccbacccafc Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 30 Sep 2011 20:03:37 +0200
+Subject: [PATCH 005/254] x86: hpet: Disable MSI on Lenovo W510
MSI based per cpu timers lose interrupts when intel_idle() is enabled
- independent of the c-state. With idle=poll the problem cannot be
@@ -12,10 +13,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/hpet.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
-Index: linux-3.4/arch/x86/kernel/hpet.c
-===================================================================
---- linux-3.4.orig/arch/x86/kernel/hpet.c
-+++ linux-3.4/arch/x86/kernel/hpet.c
+diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
+index ad0de0c..230a200 100644
+--- a/arch/x86/kernel/hpet.c
++++ b/arch/x86/kernel/hpet.c
@@ -8,6 +8,7 @@
#include <linux/slab.h>
#include <linux/hpet.h>
@@ -24,7 +25,7 @@ Index: linux-3.4/arch/x86/kernel/hpet.c
#include <linux/cpu.h>
#include <linux/pm.h>
#include <linux/io.h>
-@@ -570,6 +571,30 @@ static void init_one_hpet_msi_clockevent
+@@ -570,6 +571,30 @@ static void init_one_hpet_msi_clockevent(struct hpet_dev *hdev, int cpu)
#define RESERVE_TIMERS 0
#endif
@@ -55,7 +56,7 @@ Index: linux-3.4/arch/x86/kernel/hpet.c
static void hpet_msi_capability_lookup(unsigned int start_timer)
{
unsigned int id;
-@@ -577,6 +602,8 @@ static void hpet_msi_capability_lookup(u
+@@ -577,6 +602,8 @@ static void hpet_msi_capability_lookup(unsigned int start_timer)
unsigned int num_timers_used = 0;
int i;
@@ -64,3 +65,6 @@ Index: linux-3.4/arch/x86/kernel/hpet.c
if (hpet_msi_disable)
return;
+--
+1.7.10.4
+
diff --git a/patches/block-shorten-interrupt-disabled-regions.patch b/patches/0006-block-Shorten-interrupt-disabled-regions.patch
index 06cc09b..c7becc8 100644
--- a/patches/block-shorten-interrupt-disabled-regions.patch
+++ b/patches/0006-block-Shorten-interrupt-disabled-regions.patch
@@ -1,6 +1,7 @@
-Subject: block: Shorten interrupt disabled regions
+From 6b3561635e8a417c77d5275f7808d4a2165ca32c Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 22 Jun 2011 19:47:02 +0200
+Subject: [PATCH 006/254] block: Shorten interrupt disabled regions
Moving the blk_sched_flush_plug() call out of the interrupt/preempt
disabled region in the scheduler allows us to replace
@@ -46,11 +47,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
block/blk-core.c | 20 ++++++++------------
1 file changed, 8 insertions(+), 12 deletions(-)
-Index: linux-3.4/block/blk-core.c
-===================================================================
---- linux-3.4.orig/block/blk-core.c
-+++ linux-3.4/block/blk-core.c
-@@ -302,7 +302,11 @@ void __blk_run_queue(struct request_queu
+diff --git a/block/blk-core.c b/block/blk-core.c
+index 1f61b74..0d947d0 100644
+--- a/block/blk-core.c
++++ b/block/blk-core.c
+@@ -302,7 +302,11 @@ void __blk_run_queue(struct request_queue *q)
{
if (unlikely(blk_queue_stopped(q)))
return;
@@ -63,7 +64,7 @@ Index: linux-3.4/block/blk-core.c
q->request_fn(q);
}
EXPORT_SYMBOL(__blk_run_queue);
-@@ -2779,11 +2783,11 @@ static void queue_unplugged(struct reque
+@@ -2779,11 +2783,11 @@ static void queue_unplugged(struct request_queue *q, unsigned int depth,
* this lock).
*/
if (from_schedule) {
@@ -77,7 +78,7 @@ Index: linux-3.4/block/blk-core.c
}
}
-@@ -2809,7 +2813,6 @@ static void flush_plug_callbacks(struct
+@@ -2809,7 +2813,6 @@ static void flush_plug_callbacks(struct blk_plug *plug)
void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
{
struct request_queue *q;
@@ -85,7 +86,7 @@ Index: linux-3.4/block/blk-core.c
struct request *rq;
LIST_HEAD(list);
unsigned int depth;
-@@ -2830,11 +2833,6 @@ void blk_flush_plug_list(struct blk_plug
+@@ -2830,11 +2833,6 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
q = NULL;
depth = 0;
@@ -97,7 +98,7 @@ Index: linux-3.4/block/blk-core.c
while (!list_empty(&list)) {
rq = list_entry_rq(list.next);
list_del_init(&rq->queuelist);
-@@ -2847,7 +2845,7 @@ void blk_flush_plug_list(struct blk_plug
+@@ -2847,7 +2845,7 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
queue_unplugged(q, depth, from_schedule);
q = rq->q;
depth = 0;
@@ -106,7 +107,7 @@ Index: linux-3.4/block/blk-core.c
}
/*
-@@ -2874,8 +2872,6 @@ void blk_flush_plug_list(struct blk_plug
+@@ -2874,8 +2872,6 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
*/
if (q)
queue_unplugged(q, depth, from_schedule);
@@ -115,3 +116,6 @@ Index: linux-3.4/block/blk-core.c
}
void blk_finish_plug(struct blk_plug *plug)
+--
+1.7.10.4
+
diff --git a/patches/sched-distangle-worker-accounting-from-rq-3elock.patch b/patches/0007-sched-Distangle-worker-accounting-from-rq-3Elock.patch
index 86fb595..a3e49eb 100644
--- a/patches/sched-distangle-worker-accounting-from-rq-3elock.patch
+++ b/patches/0007-sched-Distangle-worker-accounting-from-rq-3Elock.patch
@@ -1,6 +1,7 @@
-Subject: sched: Distangle worker accounting from rq-%3Elock
+From 9556f5e67056ea427a9fc0e11cb5916b4aac4ad1 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 22 Jun 2011 19:47:03 +0200
+Subject: [PATCH 007/254] sched: Distangle worker accounting from rq-%3Elock
The worker accounting for cpu bound workers is plugged into the core
scheduler code and the wakeup code. This is not a hard requirement and
@@ -23,16 +24,16 @@ Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/20110622174919.135236139@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- kernel/sched/core.c | 66 ++++++++++----------------------------------
- kernel/workqueue.c | 69 +++++++++++++++++++++--------------------------
- kernel/workqueue_sched.h | 5 +--
- 3 files changed, 48 insertions(+), 92 deletions(-)
+ kernel/sched/core.c | 66 +++++++++++----------------------------------
+ kernel/workqueue.c | 67 +++++++++++++++++++++-------------------------
+ kernel/workqueue_sched.h | 5 ++--
+ 3 files changed, 47 insertions(+), 91 deletions(-)
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
-@@ -1399,10 +1399,6 @@ static void ttwu_activate(struct rq *rq,
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index e5212ae..f5f9134 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
+@@ -1399,10 +1399,6 @@ static void ttwu_activate(struct rq *rq, struct task_struct *p, int en_flags)
{
activate_task(rq, p, en_flags);
p->on_rq = 1;
@@ -104,7 +105,7 @@ Index: linux-3.4/kernel/sched/core.c
}
switch_count = &prev->nvcsw;
}
-@@ -3255,6 +3204,14 @@ static inline void sched_submit_work(str
+@@ -3255,6 +3204,14 @@ static inline void sched_submit_work(struct task_struct *tsk)
{
if (!tsk->state || tsk_is_pi_blocked(tsk))
return;
@@ -119,7 +120,7 @@ Index: linux-3.4/kernel/sched/core.c
/*
* If we are going to sleep and we have plugged IO queued,
* make sure to submit it to avoid deadlocks.
-@@ -3263,12 +3220,19 @@ static inline void sched_submit_work(str
+@@ -3263,12 +3220,19 @@ static inline void sched_submit_work(struct task_struct *tsk)
blk_schedule_flush_plug(tsk);
}
@@ -139,10 +140,10 @@ Index: linux-3.4/kernel/sched/core.c
}
EXPORT_SYMBOL(schedule);
-Index: linux-3.4/kernel/workqueue.c
-===================================================================
---- linux-3.4.orig/kernel/workqueue.c
-+++ linux-3.4/kernel/workqueue.c
+diff --git a/kernel/workqueue.c b/kernel/workqueue.c
+index 5abf42f..50e0d00 100644
+--- a/kernel/workqueue.c
++++ b/kernel/workqueue.c
@@ -137,6 +137,7 @@ struct worker {
unsigned int flags; /* X: flags */
int id; /* I: worker id */
@@ -151,7 +152,7 @@ Index: linux-3.4/kernel/workqueue.c
};
/*
-@@ -655,66 +656,58 @@ static void wake_up_worker(struct global
+@@ -655,66 +656,58 @@ static void wake_up_worker(struct global_cwq *gcwq)
}
/**
@@ -212,14 +213,14 @@ Index: linux-3.4/kernel/workqueue.c
if (worker->flags & WORKER_NOT_RUNNING)
- return NULL;
+ return;
-
-- /* this can only happen on the local cpu */
-- BUG_ON(cpu != raw_smp_processor_id());
++
+ if (WARN_ON_ONCE(worker->sleeping))
+ return;
+- /* this can only happen on the local cpu */
+- BUG_ON(cpu != raw_smp_processor_id());
+ worker->sleeping = 1;
-+
+
+ cpu = smp_processor_id();
+ gcwq = get_gcwq(cpu);
+ spin_lock_irq(&gcwq->lock);
@@ -233,11 +234,10 @@ Index: linux-3.4/kernel/workqueue.c
- * and preemption disabled, which in turn means that none else
- * could be manipulating idle_list, so dereferencing idle_list
- * without gcwq lock is safe.
-- */
+ */
- if (atomic_dec_and_test(nr_running) && !list_empty(&gcwq->worklist))
- to_wakeup = first_worker(gcwq);
- return to_wakeup ? to_wakeup->task : NULL;
-+ */
+ if (atomic_dec_and_test(get_gcwq_nr_running(cpu)) &&
+ !list_empty(&gcwq->worklist)) {
+ worker = first_worker(gcwq);
@@ -248,10 +248,10 @@ Index: linux-3.4/kernel/workqueue.c
}
/**
-Index: linux-3.4/kernel/workqueue_sched.h
-===================================================================
---- linux-3.4.orig/kernel/workqueue_sched.h
-+++ linux-3.4/kernel/workqueue_sched.h
+diff --git a/kernel/workqueue_sched.h b/kernel/workqueue_sched.h
+index 2d10fc9..3bf73e2 100644
+--- a/kernel/workqueue_sched.h
++++ b/kernel/workqueue_sched.h
@@ -4,6 +4,5 @@
* Scheduler hooks for concurrency managed workqueue. Only to be
* included from sched.c and workqueue.c.
@@ -261,3 +261,6 @@ Index: linux-3.4/kernel/workqueue_sched.h
- unsigned int cpu);
+void wq_worker_running(struct task_struct *task);
+void wq_worker_sleeping(struct task_struct *task);
+--
+1.7.10.4
+
diff --git a/patches/mips-enable-interrupts-in-signal.patch b/patches/0008-mips-enable-interrupts-in-signal.patch.patch
index bcb2d4b..0954b69 100644
--- a/patches/mips-enable-interrupts-in-signal.patch
+++ b/patches/0008-mips-enable-interrupts-in-signal.patch.patch
@@ -1,17 +1,18 @@
-Subject: mips-enable-interrupts-in-signal.patch
+From 9ccbd3408dc17fd4de7109d62900e0831e7882e2 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 18 Jul 2011 21:32:10 +0200
+Subject: [PATCH 008/254] mips-enable-interrupts-in-signal.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/mips/kernel/signal.c | 3 +++
1 file changed, 3 insertions(+)
-Index: linux-3.4/arch/mips/kernel/signal.c
-===================================================================
---- linux-3.4.orig/arch/mips/kernel/signal.c
-+++ linux-3.4/arch/mips/kernel/signal.c
-@@ -605,6 +605,9 @@ static void do_signal(struct pt_regs *re
+diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c
+index d5a338a..ab4e20a 100644
+--- a/arch/mips/kernel/signal.c
++++ b/arch/mips/kernel/signal.c
+@@ -588,6 +588,9 @@ static void do_signal(struct pt_regs *regs)
if (!user_mode(regs))
return;
@@ -21,3 +22,6 @@ Index: linux-3.4/arch/mips/kernel/signal.c
if (test_thread_flag(TIF_RESTORE_SIGMASK))
oldset = &current->saved_sigmask;
else
+--
+1.7.10.4
+
diff --git a/patches/0009-arm-enable-interrupts-in-signal-code.patch.patch b/patches/0009-arm-enable-interrupts-in-signal-code.patch.patch
new file mode 100644
index 0000000..56245a8
--- /dev/null
+++ b/patches/0009-arm-enable-interrupts-in-signal-code.patch.patch
@@ -0,0 +1,27 @@
+From af094f1013e71a07c4a747b569f206d560a37bcd Mon Sep 17 00:00:00 2001
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Sat, 16 Jul 2011 16:27:13 +0200
+Subject: [PATCH 009/254] arm-enable-interrupts-in-signal-code.patch
+
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+---
+ arch/arm/kernel/signal.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
+index d68d1b6..13db45b 100644
+--- a/arch/arm/kernel/signal.c
++++ b/arch/arm/kernel/signal.c
+@@ -617,6 +617,9 @@ static void do_signal(struct pt_regs *regs, int syscall)
+ if (!user_mode(regs))
+ return;
+
++ local_irq_enable();
++ preempt_check_resched();
++
+ /*
+ * If we were from a system call, check for system call restarting...
+ */
+--
+1.7.10.4
+
diff --git a/patches/seqlock-remove-unused-functions.patch b/patches/0010-seqlock-Remove-unused-functions.patch
index 367dfeb..4f2cc6c 100644
--- a/patches/seqlock-remove-unused-functions.patch
+++ b/patches/0010-seqlock-Remove-unused-functions.patch
@@ -1,17 +1,18 @@
-Subject: seqlock: Remove unused functions
+From b09ea679e422fba4fc42e9e55a8ce1bc9e892ced Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 16 Jul 2011 18:38:22 +0200
+Subject: [PATCH 010/254] seqlock: Remove unused functions
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/seqlock.h | 21 ---------------------
1 file changed, 21 deletions(-)
-Index: linux-3.4/include/linux/seqlock.h
-===================================================================
---- linux-3.4.orig/include/linux/seqlock.h
-+++ linux-3.4/include/linux/seqlock.h
-@@ -69,17 +69,6 @@ static inline void write_sequnlock(seqlo
+diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h
+index 600060e2..cb0599c 100644
+--- a/include/linux/seqlock.h
++++ b/include/linux/seqlock.h
+@@ -69,17 +69,6 @@ static inline void write_sequnlock(seqlock_t *sl)
spin_unlock(&sl->lock);
}
@@ -29,7 +30,7 @@ Index: linux-3.4/include/linux/seqlock.h
/* Start of read calculation -- fetch last complete writer token */
static __always_inline unsigned read_seqbegin(const seqlock_t *sl)
{
-@@ -248,14 +237,4 @@ static inline void write_seqcount_barrie
+@@ -269,14 +258,4 @@ static inline void write_seqcount_barrier(seqcount_t *s)
#define write_sequnlock_bh(lock) \
do { write_sequnlock(lock); local_bh_enable(); } while(0)
@@ -44,3 +45,6 @@ Index: linux-3.4/include/linux/seqlock.h
- })
-
#endif /* __LINUX_SEQLOCK_H */
+--
+1.7.10.4
+
diff --git a/patches/seqlock-use-seqcount.patch b/patches/0011-seqlock-Use-seqcount.patch
index 3a29253..923623f 100644
--- a/patches/seqlock-use-seqcount.patch
+++ b/patches/0011-seqlock-Use-seqcount.patch
@@ -1,18 +1,19 @@
-Subject: seqlock: Use seqcount
+From 9fc6f4bee3c7d38c8674e4b5a78a61f6aa261621 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 16 Jul 2011 18:40:26 +0200
+Subject: [PATCH 011/254] seqlock: Use seqcount
No point in having different implementations for the same thing.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- include/linux/seqlock.h | 176 +++++++++++++++++++++++++-----------------------
- 1 file changed, 93 insertions(+), 83 deletions(-)
+ include/linux/seqlock.h | 174 +++++++++++++++++++++++++----------------------
+ 1 file changed, 92 insertions(+), 82 deletions(-)
-Index: linux-3.4/include/linux/seqlock.h
-===================================================================
---- linux-3.4.orig/include/linux/seqlock.h
-+++ linux-3.4/include/linux/seqlock.h
+diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h
+index cb0599c..1829905 100644
+--- a/include/linux/seqlock.h
++++ b/include/linux/seqlock.h
@@ -30,81 +30,12 @@
#include <linux/preempt.h>
#include <asm/processor.h>
@@ -95,7 +96,7 @@ Index: linux-3.4/include/linux/seqlock.h
typedef struct seqcount {
unsigned sequence;
} seqcount_t;
-@@ -186,7 +117,6 @@ static inline int __read_seqcount_retry(
+@@ -207,7 +138,6 @@ static inline int __read_seqcount_retry(const seqcount_t *s, unsigned start)
static inline int read_seqcount_retry(const seqcount_t *s, unsigned start)
{
smp_rmb();
@@ -103,7 +104,7 @@ Index: linux-3.4/include/linux/seqlock.h
return __read_seqcount_retry(s, start);
}
-@@ -220,21 +150,101 @@ static inline void write_seqcount_barrie
+@@ -241,21 +171,101 @@ static inline void write_seqcount_barrier(seqcount_t *s)
s->sequence+=2;
}
@@ -112,11 +113,10 @@ Index: linux-3.4/include/linux/seqlock.h
+ spinlock_t lock;
+} seqlock_t;
+
- /*
-- * Possible sw/hw IRQ protected versions of the interfaces.
++/*
+ * These macros triggered gcc-3.x compile-time problems. We think these are
+ * OK now. Be cautious.
- */
++ */
+#define __SEQLOCK_UNLOCKED(lockname) \
+ { \
+ .seqcount = SEQCNT_ZERO, \
@@ -145,11 +145,12 @@ Index: linux-3.4/include/linux/seqlock.h
+ return read_seqcount_retry(&sl->seqcount, start);
+}
+
-+/*
+ /*
+- * Possible sw/hw IRQ protected versions of the interfaces.
+ * Lock out other writers and update the count.
+ * Acts like a normal spin_lock/unlock.
+ * Don't need preempt_disable() because that is in the spin_lock already.
-+ */
+ */
+static inline void write_seqlock(seqlock_t *sl)
+{
+ spin_lock(&sl->lock);
@@ -201,15 +202,14 @@ Index: linux-3.4/include/linux/seqlock.h
- do { local_irq_disable(); write_seqlock(lock); } while (0)
-#define write_seqlock_bh(lock) \
- do { local_bh_disable(); write_seqlock(lock); } while (0)
--
++ do { flags = __write_seqlock_irqsave(lock); } while (0)
+
-#define write_sequnlock_irqrestore(lock, flags) \
- do { write_sequnlock(lock); local_irq_restore(flags); } while(0)
-#define write_sequnlock_irq(lock) \
- do { write_sequnlock(lock); local_irq_enable(); } while(0)
-#define write_sequnlock_bh(lock) \
- do { write_sequnlock(lock); local_bh_enable(); } while(0)
-+ do { flags = __write_seqlock_irqsave(lock); } while (0)
-+
+static inline void
+write_sequnlock_irqrestore(seqlock_t *sl, unsigned long flags)
+{
@@ -218,3 +218,6 @@ Index: linux-3.4/include/linux/seqlock.h
+}
#endif /* __LINUX_SEQLOCK_H */
+--
+1.7.10.4
+
diff --git a/patches/timekeeping-split-xtime-lock.patch b/patches/0012-timekeeping-Split-xtime_lock.patch
index d50b8a5..3e23cc9 100644
--- a/patches/timekeeping-split-xtime-lock.patch
+++ b/patches/0012-timekeeping-Split-xtime_lock.patch
@@ -1,6 +1,7 @@
-Subject: timekeeping: Split xtime_lock
+From 936719975d1a614f05f72c79deac8f2c58e4a009 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Thu, 01 Mar 2012 15:14:06 +0100
+Date: Thu, 1 Mar 2012 15:14:06 +0100
+Subject: [PATCH 012/254] timekeeping: Split xtime_lock
xtime_lock is going to be split apart in mainline, so we can shorten
the seqcount protected regions and avoid updating seqcount in some
@@ -9,17 +10,17 @@ whole mess with raw seqlocks for RT.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- kernel/time/jiffies.c | 4 -
- kernel/time/tick-common.c | 10 ++-
- kernel/time/tick-internal.h | 3 -
+ kernel/time/jiffies.c | 4 +-
+ kernel/time/tick-common.c | 10 ++--
+ kernel/time/tick-internal.h | 3 +-
kernel/time/tick-sched.c | 16 +++---
- kernel/time/timekeeping.c | 114 +++++++++++++++++++++++++-------------------
+ kernel/time/timekeeping.c | 114 +++++++++++++++++++++++++------------------
5 files changed, 87 insertions(+), 60 deletions(-)
-Index: linux-3.4/kernel/time/jiffies.c
-===================================================================
---- linux-3.4.orig/kernel/time/jiffies.c
-+++ linux-3.4/kernel/time/jiffies.c
+diff --git a/kernel/time/jiffies.c b/kernel/time/jiffies.c
+index a470154..21940eb 100644
+--- a/kernel/time/jiffies.c
++++ b/kernel/time/jiffies.c
@@ -74,9 +74,9 @@ u64 get_jiffies_64(void)
u64 ret;
@@ -32,10 +33,10 @@ Index: linux-3.4/kernel/time/jiffies.c
return ret;
}
EXPORT_SYMBOL(get_jiffies_64);
-Index: linux-3.4/kernel/time/tick-common.c
-===================================================================
---- linux-3.4.orig/kernel/time/tick-common.c
-+++ linux-3.4/kernel/time/tick-common.c
+diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c
+index da6c9ec..39de540 100644
+--- a/kernel/time/tick-common.c
++++ b/kernel/time/tick-common.c
@@ -63,13 +63,15 @@ int tick_is_oneshot_available(void)
static void tick_periodic(int cpu)
{
@@ -54,7 +55,7 @@ Index: linux-3.4/kernel/time/tick-common.c
}
update_process_times(user_mode(get_irq_regs()));
-@@ -130,9 +132,9 @@ void tick_setup_periodic(struct clock_ev
+@@ -130,9 +132,9 @@ void tick_setup_periodic(struct clock_event_device *dev, int broadcast)
ktime_t next;
do {
@@ -66,22 +67,22 @@ Index: linux-3.4/kernel/time/tick-common.c
clockevents_set_mode(dev, CLOCK_EVT_MODE_ONESHOT);
-Index: linux-3.4/kernel/time/tick-internal.h
-===================================================================
---- linux-3.4.orig/kernel/time/tick-internal.h
-+++ linux-3.4/kernel/time/tick-internal.h
-@@ -141,4 +141,5 @@ static inline int tick_device_is_functio
+diff --git a/kernel/time/tick-internal.h b/kernel/time/tick-internal.h
+index 4e265b9..c91100d 100644
+--- a/kernel/time/tick-internal.h
++++ b/kernel/time/tick-internal.h
+@@ -141,4 +141,5 @@ static inline int tick_device_is_functional(struct clock_event_device *dev)
#endif
extern void do_timer(unsigned long ticks);
-extern seqlock_t xtime_lock;
+extern raw_spinlock_t xtime_lock;
+extern seqcount_t xtime_seq;
-Index: linux-3.4/kernel/time/tick-sched.c
-===================================================================
---- linux-3.4.orig/kernel/time/tick-sched.c
-+++ linux-3.4/kernel/time/tick-sched.c
-@@ -56,7 +56,8 @@ static void tick_do_update_jiffies64(kti
+diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
+index efd3866..a607a7c 100644
+--- a/kernel/time/tick-sched.c
++++ b/kernel/time/tick-sched.c
+@@ -56,7 +56,8 @@ static void tick_do_update_jiffies64(ktime_t now)
return;
/* Reevalute with xtime_lock held */
@@ -91,7 +92,7 @@ Index: linux-3.4/kernel/time/tick-sched.c
delta = ktime_sub(now, last_jiffies_update);
if (delta.tv64 >= tick_period.tv64) {
-@@ -79,7 +80,8 @@ static void tick_do_update_jiffies64(kti
+@@ -79,7 +80,8 @@ static void tick_do_update_jiffies64(ktime_t now)
/* Keep the tick_next_period variable up to date */
tick_next_period = ktime_add(last_jiffies_update, tick_period);
}
@@ -101,7 +102,7 @@ Index: linux-3.4/kernel/time/tick-sched.c
}
/*
-@@ -89,12 +91,14 @@ static ktime_t tick_init_jiffy_update(vo
+@@ -89,12 +91,14 @@ static ktime_t tick_init_jiffy_update(void)
{
ktime_t period;
@@ -118,7 +119,7 @@ Index: linux-3.4/kernel/time/tick-sched.c
return period;
}
-@@ -316,11 +320,11 @@ static void tick_nohz_stop_sched_tick(st
+@@ -316,11 +320,11 @@ static void tick_nohz_stop_sched_tick(struct tick_sched *ts)
ts->idle_calls++;
/* Read jiffies and the time when jiffies were updated last */
do {
@@ -132,10 +133,10 @@ Index: linux-3.4/kernel/time/tick-sched.c
if (rcu_needs_cpu(cpu) || printk_needs_cpu(cpu) ||
arch_needs_cpu(cpu)) {
-Index: linux-3.4/kernel/time/timekeeping.c
-===================================================================
---- linux-3.4.orig/kernel/time/timekeeping.c
-+++ linux-3.4/kernel/time/timekeeping.c
+diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
+index d66b213..56e151b 100644
+--- a/kernel/time/timekeeping.c
++++ b/kernel/time/timekeeping.c
@@ -70,8 +70,9 @@ struct timekeeper {
/* The raw monotonic time for the CLOCK_MONOTONIC_RAW posix clock. */
struct timespec raw_time;
@@ -211,7 +212,7 @@ Index: linux-3.4/kernel/time/timekeeping.c
set_normalized_timespec(ts, ts->tv_sec + tomono.tv_sec,
ts->tv_nsec + tomono.tv_nsec + nsecs);
-@@ -321,7 +323,7 @@ void getnstime_raw_and_real(struct times
+@@ -321,7 +323,7 @@ void getnstime_raw_and_real(struct timespec *ts_raw, struct timespec *ts_real)
do {
u32 arch_offset;
@@ -220,7 +221,7 @@ Index: linux-3.4/kernel/time/timekeeping.c
*ts_raw = timekeeper.raw_time;
*ts_real = timekeeper.xtime;
-@@ -334,7 +336,7 @@ void getnstime_raw_and_real(struct times
+@@ -334,7 +336,7 @@ void getnstime_raw_and_real(struct timespec *ts_raw, struct timespec *ts_real)
nsecs_raw += arch_offset;
nsecs_real += arch_offset;
@@ -229,7 +230,7 @@ Index: linux-3.4/kernel/time/timekeeping.c
timespec_add_ns(ts_raw, nsecs_raw);
timespec_add_ns(ts_real, nsecs_real);
-@@ -373,7 +375,8 @@ int do_settimeofday(const struct timespe
+@@ -373,7 +375,8 @@ int do_settimeofday(const struct timespec *tv)
if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC)
return -EINVAL;
@@ -239,7 +240,7 @@ Index: linux-3.4/kernel/time/timekeeping.c
timekeeping_forward_now();
-@@ -385,7 +388,8 @@ int do_settimeofday(const struct timespe
+@@ -385,7 +388,8 @@ int do_settimeofday(const struct timespec *tv)
timekeeper.xtime = *tv;
timekeeping_update(true);
@@ -249,7 +250,7 @@ Index: linux-3.4/kernel/time/timekeeping.c
/* signal hrtimers about time change */
clock_was_set();
-@@ -409,7 +413,8 @@ int timekeeping_inject_offset(struct tim
+@@ -409,7 +413,8 @@ int timekeeping_inject_offset(struct timespec *ts)
if ((unsigned long)ts->tv_nsec >= NSEC_PER_SEC)
return -EINVAL;
@@ -259,7 +260,7 @@ Index: linux-3.4/kernel/time/timekeeping.c
timekeeping_forward_now();
-@@ -419,7 +424,8 @@ int timekeeping_inject_offset(struct tim
+@@ -419,7 +424,8 @@ int timekeeping_inject_offset(struct timespec *ts)
timekeeping_update(true);
@@ -269,7 +270,7 @@ Index: linux-3.4/kernel/time/timekeeping.c
/* signal hrtimers about time change */
clock_was_set();
-@@ -440,7 +446,8 @@ static int change_clocksource(void *data
+@@ -440,7 +446,8 @@ static int change_clocksource(void *data)
new = (struct clocksource *) data;
@@ -279,7 +280,7 @@ Index: linux-3.4/kernel/time/timekeeping.c
timekeeping_forward_now();
if (!new->enable || new->enable(new) == 0) {
-@@ -451,7 +458,8 @@ static int change_clocksource(void *data
+@@ -451,7 +458,8 @@ static int change_clocksource(void *data)
}
timekeeping_update(true);
@@ -289,7 +290,7 @@ Index: linux-3.4/kernel/time/timekeeping.c
return 0;
}
-@@ -498,11 +506,11 @@ void getrawmonotonic(struct timespec *ts
+@@ -498,11 +506,11 @@ void getrawmonotonic(struct timespec *ts)
s64 nsecs;
do {
@@ -357,7 +358,7 @@ Index: linux-3.4/kernel/time/timekeeping.c
}
/* time in seconds when suspend began */
-@@ -657,7 +668,8 @@ void timekeeping_inject_sleeptime(struct
+@@ -657,7 +668,8 @@ void timekeeping_inject_sleeptime(struct timespec *delta)
if (!(ts.tv_sec == 0 && ts.tv_nsec == 0))
return;
@@ -367,7 +368,7 @@ Index: linux-3.4/kernel/time/timekeeping.c
timekeeping_forward_now();
-@@ -665,7 +677,8 @@ void timekeeping_inject_sleeptime(struct
+@@ -665,7 +677,8 @@ void timekeeping_inject_sleeptime(struct timespec *delta)
timekeeping_update(true);
@@ -438,7 +439,7 @@ Index: linux-3.4/kernel/time/timekeeping.c
}
/**
-@@ -1131,13 +1149,13 @@ void get_monotonic_boottime(struct times
+@@ -1131,13 +1149,13 @@ void get_monotonic_boottime(struct timespec *ts)
WARN_ON(timekeeping_suspended);
do {
@@ -454,7 +455,7 @@ Index: linux-3.4/kernel/time/timekeeping.c
set_normalized_timespec(ts, ts->tv_sec + tomono.tv_sec + sleep.tv_sec,
ts->tv_nsec + tomono.tv_nsec + sleep.tv_nsec + nsecs);
-@@ -1188,10 +1206,10 @@ struct timespec current_kernel_time(void
+@@ -1188,10 +1206,10 @@ struct timespec current_kernel_time(void)
unsigned long seq;
do {
@@ -467,7 +468,7 @@ Index: linux-3.4/kernel/time/timekeeping.c
return now;
}
-@@ -1203,11 +1221,11 @@ struct timespec get_monotonic_coarse(voi
+@@ -1203,11 +1221,11 @@ struct timespec get_monotonic_coarse(void)
unsigned long seq;
do {
@@ -481,7 +482,7 @@ Index: linux-3.4/kernel/time/timekeeping.c
set_normalized_timespec(&now, now.tv_sec + mono.tv_sec,
now.tv_nsec + mono.tv_nsec);
-@@ -1239,11 +1257,11 @@ void get_xtime_and_monotonic_and_sleep_o
+@@ -1239,11 +1257,11 @@ void get_xtime_and_monotonic_and_sleep_offset(struct timespec *xtim,
unsigned long seq;
do {
@@ -507,7 +508,7 @@ Index: linux-3.4/kernel/time/timekeeping.c
return timespec_to_ktime(wtom);
}
-@@ -1272,7 +1290,9 @@ EXPORT_SYMBOL_GPL(ktime_get_monotonic_of
+@@ -1272,7 +1290,9 @@ EXPORT_SYMBOL_GPL(ktime_get_monotonic_offset);
*/
void xtime_update(unsigned long ticks)
{
@@ -519,3 +520,6 @@ Index: linux-3.4/kernel/time/timekeeping.c
+ write_seqcount_end(&xtime_seq);
+ raw_spin_unlock(&xtime_lock);
}
+--
+1.7.10.4
+
diff --git a/patches/intel_idle-convert-i7300_idle_lock-to-raw-spinlock.patch b/patches/0013-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch
index 9406b3a..9c0c928 100644
--- a/patches/intel_idle-convert-i7300_idle_lock-to-raw-spinlock.patch
+++ b/patches/0013-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch
@@ -1,6 +1,7 @@
-Subject: intel_idle: Convert i7300_idle_lock to raw spinlock
+From 40fc69e96c3839349d1cc8da8d9025831dd2eac4 Mon Sep 17 00:00:00 2001
From: Mike Galbraith <efault@gmx.de>
-Date: Wed, 07 Dec 2011 12:48:42 +0100
+Date: Wed, 7 Dec 2011 12:48:42 +0100
+Subject: [PATCH 013/254] intel_idle: Convert i7300_idle_lock to raw spinlock
24 core Intel box's first exposure to 3.0.12-rt30-rc3 didn't go well.
@@ -22,15 +23,14 @@ Signed-off-by: Mike Galbraith <efault@gmx.de>
Cc: Steven Rostedt <rostedt@goodmis.org>
Link: http://lkml.kernel.org/r/1323258522.5057.73.camel@marge.simson.net
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
drivers/idle/i7300_idle.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
-Index: linux-3.4/drivers/idle/i7300_idle.c
-===================================================================
---- linux-3.4.orig/drivers/idle/i7300_idle.c
-+++ linux-3.4/drivers/idle/i7300_idle.c
+diff --git a/drivers/idle/i7300_idle.c b/drivers/idle/i7300_idle.c
+index fa080eb..ffeebc7 100644
+--- a/drivers/idle/i7300_idle.c
++++ b/drivers/idle/i7300_idle.c
@@ -75,7 +75,7 @@ static unsigned long past_skip;
static struct pci_dev *fbd_dev;
@@ -40,7 +40,7 @@ Index: linux-3.4/drivers/idle/i7300_idle.c
static int i7300_idle_active;
static u8 i7300_idle_thrtctl_saved;
-@@ -457,7 +457,7 @@ static int i7300_idle_notifier(struct no
+@@ -457,7 +457,7 @@ static int i7300_idle_notifier(struct notifier_block *nb, unsigned long val,
idle_begin_time = ktime_get();
}
@@ -49,7 +49,7 @@ Index: linux-3.4/drivers/idle/i7300_idle.c
if (val == IDLE_START) {
cpumask_set_cpu(smp_processor_id(), idle_cpumask);
-@@ -506,7 +506,7 @@ static int i7300_idle_notifier(struct no
+@@ -506,7 +506,7 @@ static int i7300_idle_notifier(struct notifier_block *nb, unsigned long val,
}
}
end:
@@ -67,3 +67,6 @@ Index: linux-3.4/drivers/idle/i7300_idle.c
total_us = 0;
if (i7300_idle_platform_probe(&fbd_dev, &ioat_dev, forceload))
+--
+1.7.10.4
+
diff --git a/patches/tracing-account-for-preempt-off-in-preempt_schedule.patch b/patches/0014-tracing-Account-for-preempt-off-in-preempt_schedule.patch
index 64043b6..738b2f6 100644
--- a/patches/tracing-account-for-preempt-off-in-preempt_schedule.patch
+++ b/patches/0014-tracing-Account-for-preempt-off-in-preempt_schedule.patch
@@ -1,6 +1,8 @@
+From fb869b97eec1332cf56bcc8429e44feaebac24a5 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <rostedt@goodmis.org>
Date: Thu, 29 Sep 2011 12:24:30 -0500
-Subject: tracing: Account for preempt off in preempt_schedule()
+Subject: [PATCH 014/254] tracing: Account for preempt off in
+ preempt_schedule()
The preempt_schedule() uses the preempt_disable_notrace() version
because it can cause infinite recursion by the function tracer as
@@ -25,11 +27,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/sched/core.c | 9 +++++++++
1 file changed, 9 insertions(+)
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
-@@ -3312,7 +3312,16 @@ asmlinkage void __sched notrace preempt_
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index f5f9134..7274881 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
+@@ -3312,7 +3312,16 @@ asmlinkage void __sched notrace preempt_schedule(void)
do {
add_preempt_count_notrace(PREEMPT_ACTIVE);
@@ -46,3 +48,6 @@ Index: linux-3.4/kernel/sched/core.c
sub_preempt_count_notrace(PREEMPT_ACTIVE);
/*
+--
+1.7.10.4
+
diff --git a/patches/signal-revert-ptrace-preempt-magic.patch b/patches/0015-signal-revert-ptrace-preempt-magic.patch.patch
index 6ac84db..3e92fbf 100644
--- a/patches/signal-revert-ptrace-preempt-magic.patch
+++ b/patches/0015-signal-revert-ptrace-preempt-magic.patch.patch
@@ -1,17 +1,18 @@
-Subject: signal-revert-ptrace-preempt-magic.patch
+From e54f85120b1be816747d344486de1f7309c71eff Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 21 Sep 2011 19:57:12 +0200
+Subject: [PATCH 015/254] signal-revert-ptrace-preempt-magic.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/signal.c | 8 --------
1 file changed, 8 deletions(-)
-Index: linux-3.4/kernel/signal.c
-===================================================================
---- linux-3.4.orig/kernel/signal.c
-+++ linux-3.4/kernel/signal.c
-@@ -1909,15 +1909,7 @@ static void ptrace_stop(int exit_code, i
+diff --git a/kernel/signal.c b/kernel/signal.c
+index 17afcaf..6b5071f 100644
+--- a/kernel/signal.c
++++ b/kernel/signal.c
+@@ -1909,15 +1909,7 @@ static void ptrace_stop(int exit_code, int why, int clear_code, siginfo_t *info)
if (gstop_done && ptrace_reparented(current))
do_notify_parent_cldstop(current, false, why);
@@ -27,3 +28,6 @@ Index: linux-3.4/kernel/signal.c
schedule();
} else {
/*
+--
+1.7.10.4
+
diff --git a/patches/arm-mark-pmu-interupt-no-thread.patch b/patches/0016-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch
index d2076ca..d72c44d 100644
--- a/patches/arm-mark-pmu-interupt-no-thread.patch
+++ b/patches/0016-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch
@@ -1,6 +1,7 @@
-Subject: arm: Mark pmu interupt IRQF_NO_THREAD
+From 9e4ca7c2931ffddceceaf3276d9593ac2d666f49 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 16 Mar 2011 14:45:31 +0100
+Subject: [PATCH 016/254] arm: Mark pmu interupt IRQF_NO_THREAD
PMU interrupt must not be threaded. Remove IRQF_DISABLED while at it
as we run all handlers with interrupts disabled anyway.
@@ -10,11 +11,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/arm/kernel/perf_event.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/arch/arm/kernel/perf_event.c
-===================================================================
---- linux-3.4.orig/arch/arm/kernel/perf_event.c
-+++ linux-3.4/arch/arm/kernel/perf_event.c
-@@ -433,7 +433,7 @@ armpmu_reserve_hardware(struct arm_pmu *
+diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c
+index 186c8cb..b2216b7 100644
+--- a/arch/arm/kernel/perf_event.c
++++ b/arch/arm/kernel/perf_event.c
+@@ -433,7 +433,7 @@ armpmu_reserve_hardware(struct arm_pmu *armpmu)
}
err = request_irq(irq, handle_irq,
@@ -23,3 +24,6 @@ Index: linux-3.4/arch/arm/kernel/perf_event.c
"arm-pmu", armpmu);
if (err) {
pr_err("unable to request IRQ%d for ARM PMU counters\n",
+--
+1.7.10.4
+
diff --git a/patches/arm-allow-irq-threading.patch b/patches/0017-arm-Allow-forced-irq-threading.patch
index 4b02b19..e814bdc 100644
--- a/patches/arm-allow-irq-threading.patch
+++ b/patches/0017-arm-Allow-forced-irq-threading.patch
@@ -1,6 +1,7 @@
-Subject: arm: Allow forced irq threading
+From 99912330636018854d49cf847d60e108e2339aa3 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 16 Jul 2011 13:15:20 +0200
+Subject: [PATCH 017/254] arm: Allow forced irq threading
All timer interrupts and the perf interrupt are marked NO_THREAD, so
its safe to allow forced interrupt threading.
@@ -10,10 +11,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/arm/Kconfig | 1 +
1 file changed, 1 insertion(+)
-Index: linux-3.4/arch/arm/Kconfig
-===================================================================
---- linux-3.4.orig/arch/arm/Kconfig
-+++ linux-3.4/arch/arm/Kconfig
+diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
+index 36586dba..bf4258c 100644
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
@@ -31,6 +31,7 @@ config ARM
select HAVE_C_RECORDMCOUNT
select HAVE_GENERIC_HARDIRQS
@@ -22,3 +23,6 @@ Index: linux-3.4/arch/arm/Kconfig
select CPU_PM if (SUSPEND || CPU_IDLE)
select GENERIC_PCI_IOMAP
select HAVE_BPF_JIT if NET
+--
+1.7.10.4
+
diff --git a/patches/arm-convert-boot-lock-to-raw.patch b/patches/0018-preempt-rt-Convert-arm-boot_lock-to-raw.patch
index 4a6e449..b9baea2 100644
--- a/patches/arm-convert-boot-lock-to-raw.patch
+++ b/patches/0018-preempt-rt-Convert-arm-boot_lock-to-raw.patch
@@ -1,7 +1,7 @@
-Subject: preempt-rt: Convert arm boot_lock to raw
+From fe72764f35da7a8f775aa1cdf282af4e5856c6ab Mon Sep 17 00:00:00 2001
From: Frank Rowand <frank.rowand@am.sony.com>
Date: Mon, 19 Sep 2011 14:51:14 -0700
-
+Subject: [PATCH 018/254] preempt-rt: Convert arm boot_lock to raw
The arm boot_lock is used by the secondary processor startup code. The locking
task is the idle thread, which has idle->sched_class == &idle_sched_class.
@@ -27,10 +27,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/arm/plat-versatile/platsmp.c | 10 +++++-----
5 files changed, 26 insertions(+), 26 deletions(-)
-Index: linux-3.4/arch/arm/mach-exynos/platsmp.c
-===================================================================
---- linux-3.4.orig/arch/arm/mach-exynos/platsmp.c
-+++ linux-3.4/arch/arm/mach-exynos/platsmp.c
+diff --git a/arch/arm/mach-exynos/platsmp.c b/arch/arm/mach-exynos/platsmp.c
+index 36c3984..77499ea 100644
+--- a/arch/arm/mach-exynos/platsmp.c
++++ b/arch/arm/mach-exynos/platsmp.c
@@ -62,7 +62,7 @@ static void __iomem *scu_base_addr(void)
return (void __iomem *)(S5P_VA_SCU);
}
@@ -40,7 +40,7 @@ Index: linux-3.4/arch/arm/mach-exynos/platsmp.c
void __cpuinit platform_secondary_init(unsigned int cpu)
{
-@@ -82,8 +82,8 @@ void __cpuinit platform_secondary_init(u
+@@ -82,8 +82,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
/*
* Synchronise with the boot thread.
*/
@@ -51,7 +51,7 @@ Index: linux-3.4/arch/arm/mach-exynos/platsmp.c
}
int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
-@@ -94,7 +94,7 @@ int __cpuinit boot_secondary(unsigned in
+@@ -94,7 +94,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* Set synchronisation state between this boot processor
* and the secondary one
*/
@@ -60,7 +60,7 @@ Index: linux-3.4/arch/arm/mach-exynos/platsmp.c
/*
* The secondary processor is waiting to be released from
-@@ -123,7 +123,7 @@ int __cpuinit boot_secondary(unsigned in
+@@ -123,7 +123,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
if (timeout == 0) {
printk(KERN_ERR "cpu1 power enable failed");
@@ -69,7 +69,7 @@ Index: linux-3.4/arch/arm/mach-exynos/platsmp.c
return -ETIMEDOUT;
}
}
-@@ -151,7 +151,7 @@ int __cpuinit boot_secondary(unsigned in
+@@ -151,7 +151,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* now the secondary core is starting up let it run its
* calibrations, then wait for it to finish
*/
@@ -78,10 +78,10 @@ Index: linux-3.4/arch/arm/mach-exynos/platsmp.c
return pen_release != -1 ? -ENOSYS : 0;
}
-Index: linux-3.4/arch/arm/mach-msm/platsmp.c
-===================================================================
---- linux-3.4.orig/arch/arm/mach-msm/platsmp.c
-+++ linux-3.4/arch/arm/mach-msm/platsmp.c
+diff --git a/arch/arm/mach-msm/platsmp.c b/arch/arm/mach-msm/platsmp.c
+index db0117e..87daf5f 100644
+--- a/arch/arm/mach-msm/platsmp.c
++++ b/arch/arm/mach-msm/platsmp.c
@@ -40,7 +40,7 @@ extern void msm_secondary_startup(void);
*/
volatile int pen_release = -1;
@@ -91,7 +91,7 @@ Index: linux-3.4/arch/arm/mach-msm/platsmp.c
static inline int get_core_count(void)
{
-@@ -70,8 +70,8 @@ void __cpuinit platform_secondary_init(u
+@@ -70,8 +70,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
/*
* Synchronise with the boot thread.
*/
@@ -102,7 +102,7 @@ Index: linux-3.4/arch/arm/mach-msm/platsmp.c
}
static __cpuinit void prepare_cold_cpu(unsigned int cpu)
-@@ -108,7 +108,7 @@ int __cpuinit boot_secondary(unsigned in
+@@ -108,7 +108,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* set synchronisation state between this boot processor
* and the secondary one
*/
@@ -111,7 +111,7 @@ Index: linux-3.4/arch/arm/mach-msm/platsmp.c
/*
* The secondary processor is waiting to be released from
-@@ -142,7 +142,7 @@ int __cpuinit boot_secondary(unsigned in
+@@ -142,7 +142,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* now the secondary core is starting up let it run its
* calibrations, then wait for it to finish
*/
@@ -120,10 +120,10 @@ Index: linux-3.4/arch/arm/mach-msm/platsmp.c
return pen_release != -1 ? -ENOSYS : 0;
}
-Index: linux-3.4/arch/arm/mach-omap2/omap-smp.c
-===================================================================
---- linux-3.4.orig/arch/arm/mach-omap2/omap-smp.c
-+++ linux-3.4/arch/arm/mach-omap2/omap-smp.c
+diff --git a/arch/arm/mach-omap2/omap-smp.c b/arch/arm/mach-omap2/omap-smp.c
+index deffbf1..81ca676 100644
+--- a/arch/arm/mach-omap2/omap-smp.c
++++ b/arch/arm/mach-omap2/omap-smp.c
@@ -34,7 +34,7 @@
/* SCU base address */
static void __iomem *scu_base;
@@ -133,7 +133,7 @@ Index: linux-3.4/arch/arm/mach-omap2/omap-smp.c
void __iomem *omap4_get_scu_base(void)
{
-@@ -65,8 +65,8 @@ void __cpuinit platform_secondary_init(u
+@@ -65,8 +65,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
/*
* Synchronise with the boot thread.
*/
@@ -144,7 +144,7 @@ Index: linux-3.4/arch/arm/mach-omap2/omap-smp.c
}
int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
-@@ -77,7 +77,7 @@ int __cpuinit boot_secondary(unsigned in
+@@ -77,7 +77,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* Set synchronisation state between this boot processor
* and the secondary one
*/
@@ -153,7 +153,7 @@ Index: linux-3.4/arch/arm/mach-omap2/omap-smp.c
/*
* Update the AuxCoreBoot0 with boot state for secondary core.
-@@ -117,7 +117,7 @@ int __cpuinit boot_secondary(unsigned in
+@@ -117,7 +117,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* Now the secondary core is starting up let it run its
* calibrations, then wait for it to finish
*/
@@ -162,10 +162,10 @@ Index: linux-3.4/arch/arm/mach-omap2/omap-smp.c
return 0;
}
-Index: linux-3.4/arch/arm/mach-ux500/platsmp.c
-===================================================================
---- linux-3.4.orig/arch/arm/mach-ux500/platsmp.c
-+++ linux-3.4/arch/arm/mach-ux500/platsmp.c
+diff --git a/arch/arm/mach-ux500/platsmp.c b/arch/arm/mach-ux500/platsmp.c
+index eff5842..acc9da2 100644
+--- a/arch/arm/mach-ux500/platsmp.c
++++ b/arch/arm/mach-ux500/platsmp.c
@@ -58,7 +58,7 @@ static void __iomem *scu_base_addr(void)
return NULL;
}
@@ -175,7 +175,7 @@ Index: linux-3.4/arch/arm/mach-ux500/platsmp.c
void __cpuinit platform_secondary_init(unsigned int cpu)
{
-@@ -78,8 +78,8 @@ void __cpuinit platform_secondary_init(u
+@@ -78,8 +78,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
/*
* Synchronise with the boot thread.
*/
@@ -186,7 +186,7 @@ Index: linux-3.4/arch/arm/mach-ux500/platsmp.c
}
int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
-@@ -90,7 +90,7 @@ int __cpuinit boot_secondary(unsigned in
+@@ -90,7 +90,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* set synchronisation state between this boot processor
* and the secondary one
*/
@@ -195,7 +195,7 @@ Index: linux-3.4/arch/arm/mach-ux500/platsmp.c
/*
* The secondary processor is waiting to be released from
-@@ -111,7 +111,7 @@ int __cpuinit boot_secondary(unsigned in
+@@ -111,7 +111,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* now the secondary core is starting up let it run its
* calibrations, then wait for it to finish
*/
@@ -204,11 +204,11 @@ Index: linux-3.4/arch/arm/mach-ux500/platsmp.c
return pen_release != -1 ? -ENOSYS : 0;
}
-Index: linux-3.4/arch/arm/plat-versatile/platsmp.c
-===================================================================
---- linux-3.4.orig/arch/arm/plat-versatile/platsmp.c
-+++ linux-3.4/arch/arm/plat-versatile/platsmp.c
-@@ -38,7 +38,7 @@ static void __cpuinit write_pen_release(
+diff --git a/arch/arm/plat-versatile/platsmp.c b/arch/arm/plat-versatile/platsmp.c
+index 49c7db4..1f7a3d2 100644
+--- a/arch/arm/plat-versatile/platsmp.c
++++ b/arch/arm/plat-versatile/platsmp.c
+@@ -38,7 +38,7 @@ static void __cpuinit write_pen_release(int val)
outer_clean_range(__pa(&pen_release), __pa(&pen_release + 1));
}
@@ -217,7 +217,7 @@ Index: linux-3.4/arch/arm/plat-versatile/platsmp.c
void __cpuinit platform_secondary_init(unsigned int cpu)
{
-@@ -58,8 +58,8 @@ void __cpuinit platform_secondary_init(u
+@@ -58,8 +58,8 @@ void __cpuinit platform_secondary_init(unsigned int cpu)
/*
* Synchronise with the boot thread.
*/
@@ -228,7 +228,7 @@ Index: linux-3.4/arch/arm/plat-versatile/platsmp.c
}
int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
-@@ -70,7 +70,7 @@ int __cpuinit boot_secondary(unsigned in
+@@ -70,7 +70,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* Set synchronisation state between this boot processor
* and the secondary one
*/
@@ -237,7 +237,7 @@ Index: linux-3.4/arch/arm/plat-versatile/platsmp.c
/*
* This is really belt and braces; we hold unintended secondary
-@@ -100,7 +100,7 @@ int __cpuinit boot_secondary(unsigned in
+@@ -100,7 +100,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* now the secondary core is starting up let it run its
* calibrations, then wait for it to finish
*/
@@ -246,3 +246,6 @@ Index: linux-3.4/arch/arm/plat-versatile/platsmp.c
return pen_release != -1 ? -ENOSYS : 0;
}
+--
+1.7.10.4
+
diff --git a/patches/arm-omap-make-wakeupgen_lock-raw.patch b/patches/0019-arm-omap-make-wakeupgen_lock-raw.patch.patch
index 4021977..5d85172 100644
--- a/patches/arm-omap-make-wakeupgen_lock-raw.patch
+++ b/patches/0019-arm-omap-make-wakeupgen_lock-raw.patch.patch
@@ -1,16 +1,17 @@
-Subject: arm-omap-make-wakeupgen_lock-raw.patch
+From 667145c1426ad5f05db4b0b3e69c5d78249a1d92 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 11 Apr 2012 11:26:38 +0200
+Subject: [PATCH 019/254] arm-omap-make-wakeupgen_lock-raw.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/arm/mach-omap2/omap-wakeupgen.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
-Index: linux-3.4/arch/arm/mach-omap2/omap-wakeupgen.c
-===================================================================
---- linux-3.4.orig/arch/arm/mach-omap2/omap-wakeupgen.c
-+++ linux-3.4/arch/arm/mach-omap2/omap-wakeupgen.c
+diff --git a/arch/arm/mach-omap2/omap-wakeupgen.c b/arch/arm/mach-omap2/omap-wakeupgen.c
+index 42cd7fb..dbc2914 100644
+--- a/arch/arm/mach-omap2/omap-wakeupgen.c
++++ b/arch/arm/mach-omap2/omap-wakeupgen.c
@@ -43,7 +43,7 @@
static void __iomem *wakeupgen_base;
@@ -20,7 +21,7 @@ Index: linux-3.4/arch/arm/mach-omap2/omap-wakeupgen.c
static unsigned int irq_target_cpu[NR_IRQS];
/*
-@@ -128,9 +128,9 @@ static void wakeupgen_mask(struct irq_da
+@@ -128,9 +128,9 @@ static void wakeupgen_mask(struct irq_data *d)
{
unsigned long flags;
@@ -32,7 +33,7 @@ Index: linux-3.4/arch/arm/mach-omap2/omap-wakeupgen.c
}
/*
-@@ -140,9 +140,9 @@ static void wakeupgen_unmask(struct irq_
+@@ -140,9 +140,9 @@ static void wakeupgen_unmask(struct irq_data *d)
{
unsigned long flags;
@@ -44,7 +45,7 @@ Index: linux-3.4/arch/arm/mach-omap2/omap-wakeupgen.c
}
#ifdef CONFIG_HOTPLUG_CPU
-@@ -183,7 +183,7 @@ static void wakeupgen_irqmask_all(unsign
+@@ -183,7 +183,7 @@ static void wakeupgen_irqmask_all(unsigned int cpu, unsigned int set)
{
unsigned long flags;
@@ -53,7 +54,7 @@ Index: linux-3.4/arch/arm/mach-omap2/omap-wakeupgen.c
if (set) {
_wakeupgen_save_masks(cpu);
_wakeupgen_set_all(cpu, WKG_MASK_ALL);
-@@ -191,7 +191,7 @@ static void wakeupgen_irqmask_all(unsign
+@@ -191,7 +191,7 @@ static void wakeupgen_irqmask_all(unsigned int cpu, unsigned int set)
_wakeupgen_set_all(cpu, WKG_UNMASK_ALL);
_wakeupgen_restore_masks(cpu);
}
@@ -62,3 +63,6 @@ Index: linux-3.4/arch/arm/mach-omap2/omap-wakeupgen.c
}
#endif
+--
+1.7.10.4
+
diff --git a/patches/signals-do-not-wake-self.patch b/patches/0020-signals-Do-not-wakeup-self.patch
index 59bf36f..076216b 100644
--- a/patches/signals-do-not-wake-self.patch
+++ b/patches/0020-signals-Do-not-wakeup-self.patch
@@ -1,21 +1,21 @@
+From f0646b719c7313b93a8c62a9450fb4f02895bc70 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 3 Jul 2009 08:44:44 -0500
-Subject: signals: Do not wakeup self
+Subject: [PATCH 020/254] signals: Do not wakeup self
Signals which are delivered by current to current can do without
waking up current :)
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
kernel/signal.c | 3 +++
1 file changed, 3 insertions(+)
-Index: linux-3.4/kernel/signal.c
-===================================================================
---- linux-3.4.orig/kernel/signal.c
-+++ linux-3.4/kernel/signal.c
-@@ -683,6 +683,9 @@ void signal_wake_up(struct task_struct *
+diff --git a/kernel/signal.c b/kernel/signal.c
+index 6b5071f..099746c 100644
+--- a/kernel/signal.c
++++ b/kernel/signal.c
+@@ -683,6 +683,9 @@ void signal_wake_up(struct task_struct *t, int resume)
set_tsk_thread_flag(t, TIF_SIGPENDING);
@@ -25,3 +25,6 @@ Index: linux-3.4/kernel/signal.c
/*
* For SIGKILL, we want to wake it up in the stopped/traced/killable
* case. We don't check t->state here because there is a race with it
+--
+1.7.10.4
+
diff --git a/patches/posix-timers-no-broadcast.patch b/patches/0021-posix-timers-Prevent-broadcast-signals.patch
index 05286cb..a788c18 100644
--- a/patches/posix-timers-no-broadcast.patch
+++ b/patches/0021-posix-timers-Prevent-broadcast-signals.patch
@@ -1,21 +1,21 @@
+From 68fde42216950b82887b64f5ede3530e74602d24 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 3 Jul 2009 08:29:20 -0500
-Subject: posix-timers: Prevent broadcast signals
+Subject: [PATCH 021/254] posix-timers: Prevent broadcast signals
Posix timers should not send broadcast signals and kernel only
signals. Prevent it.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
kernel/posix-timers.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
-Index: linux-3.4/kernel/posix-timers.c
-===================================================================
---- linux-3.4.orig/kernel/posix-timers.c
-+++ linux-3.4/kernel/posix-timers.c
-@@ -439,6 +439,7 @@ static enum hrtimer_restart posix_timer_
+diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
+index 69185ae..7b73c34 100644
+--- a/kernel/posix-timers.c
++++ b/kernel/posix-timers.c
+@@ -439,6 +439,7 @@ static enum hrtimer_restart posix_timer_fn(struct hrtimer *timer)
static struct pid *good_sigevent(sigevent_t * event)
{
struct task_struct *rtn = current->group_leader;
@@ -23,7 +23,7 @@ Index: linux-3.4/kernel/posix-timers.c
if ((event->sigev_notify & SIGEV_THREAD_ID ) &&
(!(rtn = find_task_by_vpid(event->sigev_notify_thread_id)) ||
-@@ -447,7 +448,8 @@ static struct pid *good_sigevent(sigeven
+@@ -447,7 +448,8 @@ static struct pid *good_sigevent(sigevent_t * event)
return NULL;
if (((event->sigev_notify & ~SIGEV_THREAD_ID) != SIGEV_NONE) &&
@@ -33,3 +33,6 @@ Index: linux-3.4/kernel/posix-timers.c
return NULL;
return task_pid(rtn);
+--
+1.7.10.4
+
diff --git a/patches/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch b/patches/0022-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch
index 441e1f4..a62ef14 100644
--- a/patches/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch
+++ b/patches/0022-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch
@@ -1,24 +1,24 @@
+From 5fa924e4bfb7a4d2e7c044ab5f925295c0c831ba Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 3 Jul 2009 08:44:56 -0500
-Subject: signals: Allow rt tasks to cache one sigqueue struct
+Subject: [PATCH 022/254] signals: Allow rt tasks to cache one sigqueue struct
To avoid allocation allow rt tasks to cache one sigqueue struct in
task struct.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
- include/linux/sched.h | 1
- include/linux/signal.h | 1
- kernel/exit.c | 2 -
- kernel/fork.c | 1
- kernel/signal.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++---
+ include/linux/sched.h | 1 +
+ include/linux/signal.h | 1 +
+ kernel/exit.c | 2 +-
+ kernel/fork.c | 1 +
+ kernel/signal.c | 83 +++++++++++++++++++++++++++++++++++++++++++++---
5 files changed, 83 insertions(+), 5 deletions(-)
-Index: linux-3.4/include/linux/sched.h
-===================================================================
---- linux-3.4.orig/include/linux/sched.h
-+++ linux-3.4/include/linux/sched.h
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index 81a173c..b546194 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
@@ -1435,6 +1435,7 @@ struct task_struct {
/* signal handlers */
struct signal_struct *signal;
@@ -27,11 +27,11 @@ Index: linux-3.4/include/linux/sched.h
sigset_t blocked, real_blocked;
sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */
-Index: linux-3.4/include/linux/signal.h
-===================================================================
---- linux-3.4.orig/include/linux/signal.h
-+++ linux-3.4/include/linux/signal.h
-@@ -229,6 +229,7 @@ static inline void init_sigpending(struc
+diff --git a/include/linux/signal.h b/include/linux/signal.h
+index 7987ce74..24cc7a4 100644
+--- a/include/linux/signal.h
++++ b/include/linux/signal.h
+@@ -229,6 +229,7 @@ static inline void init_sigpending(struct sigpending *sig)
}
extern void flush_sigqueue(struct sigpending *queue);
@@ -39,11 +39,11 @@ Index: linux-3.4/include/linux/signal.h
/* Test if 'sig' is valid signal. Use this instead of testing _NSIG directly */
static inline int valid_signal(unsigned long sig)
-Index: linux-3.4/kernel/exit.c
-===================================================================
---- linux-3.4.orig/kernel/exit.c
-+++ linux-3.4/kernel/exit.c
-@@ -143,7 +143,7 @@ static void __exit_signal(struct task_st
+diff --git a/kernel/exit.c b/kernel/exit.c
+index d8bd3b42..35ab292 100644
+--- a/kernel/exit.c
++++ b/kernel/exit.c
+@@ -143,7 +143,7 @@ static void __exit_signal(struct task_struct *tsk)
* Do this under ->siglock, we can race with another thread
* doing sigqueue_free() if we have SIGQUEUE_PREALLOC signals.
*/
@@ -52,11 +52,11 @@ Index: linux-3.4/kernel/exit.c
tsk->sighand = NULL;
spin_unlock(&sighand->siglock);
-Index: linux-3.4/kernel/fork.c
-===================================================================
---- linux-3.4.orig/kernel/fork.c
-+++ linux-3.4/kernel/fork.c
-@@ -1204,6 +1204,7 @@ static struct task_struct *copy_process(
+diff --git a/kernel/fork.c b/kernel/fork.c
+index 687a15d..46a87d8 100644
+--- a/kernel/fork.c
++++ b/kernel/fork.c
+@@ -1205,6 +1205,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
spin_lock_init(&p->alloc_lock);
init_sigpending(&p->pending);
@@ -64,11 +64,11 @@ Index: linux-3.4/kernel/fork.c
p->utime = p->stime = p->gtime = 0;
p->utimescaled = p->stimescaled = 0;
-Index: linux-3.4/kernel/signal.c
-===================================================================
---- linux-3.4.orig/kernel/signal.c
-+++ linux-3.4/kernel/signal.c
-@@ -345,13 +345,45 @@ static bool task_participate_group_stop(
+diff --git a/kernel/signal.c b/kernel/signal.c
+index 099746c..a05a4db 100644
+--- a/kernel/signal.c
++++ b/kernel/signal.c
+@@ -345,13 +345,45 @@ static bool task_participate_group_stop(struct task_struct *task)
return false;
}
@@ -115,7 +115,7 @@ Index: linux-3.4/kernel/signal.c
{
struct sigqueue *q = NULL;
struct user_struct *user;
-@@ -368,7 +400,10 @@ __sigqueue_alloc(int sig, struct task_st
+@@ -368,7 +400,10 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi
if (override_rlimit ||
atomic_read(&user->sigpending) <=
task_rlimit(t, RLIMIT_SIGPENDING)) {
@@ -127,7 +127,7 @@ Index: linux-3.4/kernel/signal.c
} else {
print_dropped_signal(sig);
}
-@@ -385,6 +420,13 @@ __sigqueue_alloc(int sig, struct task_st
+@@ -385,6 +420,13 @@ __sigqueue_alloc(int sig, struct task_struct *t, gfp_t flags, int override_rlimi
return q;
}
@@ -141,7 +141,7 @@ Index: linux-3.4/kernel/signal.c
static void __sigqueue_free(struct sigqueue *q)
{
if (q->flags & SIGQUEUE_PREALLOC)
-@@ -394,6 +436,21 @@ static void __sigqueue_free(struct sigqu
+@@ -394,6 +436,21 @@ static void __sigqueue_free(struct sigqueue *q)
kmem_cache_free(sigqueue_cachep, q);
}
@@ -163,7 +163,7 @@ Index: linux-3.4/kernel/signal.c
void flush_sigqueue(struct sigpending *queue)
{
struct sigqueue *q;
-@@ -407,6 +464,21 @@ void flush_sigqueue(struct sigpending *q
+@@ -407,6 +464,21 @@ void flush_sigqueue(struct sigpending *queue)
}
/*
@@ -185,7 +185,7 @@ Index: linux-3.4/kernel/signal.c
* Flush all pending signals for a task.
*/
void __flush_signals(struct task_struct *t)
-@@ -555,7 +627,7 @@ static void collect_signal(int sig, stru
+@@ -555,7 +627,7 @@ static void collect_signal(int sig, struct sigpending *list, siginfo_t *info)
still_pending:
list_del_init(&first->list);
copy_siginfo(info, &first->info);
@@ -194,7 +194,7 @@ Index: linux-3.4/kernel/signal.c
} else {
/*
* Ok, it wasn't in the queue. This must be
-@@ -601,6 +673,8 @@ int dequeue_signal(struct task_struct *t
+@@ -601,6 +673,8 @@ int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info)
{
int signr;
@@ -213,3 +213,6 @@ Index: linux-3.4/kernel/signal.c
if (q)
q->flags |= SIGQUEUE_PREALLOC;
+--
+1.7.10.4
+
diff --git a/patches/oleg-signal-rt-fix.patch b/patches/0023-signal-x86-Delay-calling-signals-in-atomic.patch
index fe8ce82..0155586 100644
--- a/patches/oleg-signal-rt-fix.patch
+++ b/patches/0023-signal-x86-Delay-calling-signals-in-atomic.patch
@@ -1,5 +1,7 @@
-Subject: signal/x86: Delay calling signals in atomic
+From 1d751f3c120cd24608ad36ea27efde1da2b339f6 Mon Sep 17 00:00:00 2001
From: Oleg Nesterov <oleg@redhat.com>
+Date: Thu, 7 Jun 2012 07:46:44 -0400
+Subject: [PATCH 023/254] signal/x86: Delay calling signals in atomic
On x86_64 we must disable preemption before we enable interrupts
for stack faults, int3 and debugging, because the current task is using
@@ -28,17 +30,16 @@ Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
-
arch/x86/include/asm/signal.h | 13 +++++++++++++
arch/x86/kernel/signal.c | 9 +++++++++
include/linux/sched.h | 4 ++++
kernel/signal.c | 37 +++++++++++++++++++++++++++++++++++--
4 files changed, 61 insertions(+), 2 deletions(-)
-Index: linux-3.4/arch/x86/include/asm/signal.h
-===================================================================
---- linux-3.4.orig/arch/x86/include/asm/signal.h
-+++ linux-3.4/arch/x86/include/asm/signal.h
+diff --git a/arch/x86/include/asm/signal.h b/arch/x86/include/asm/signal.h
+index 598457c..1213ebd 100644
+--- a/arch/x86/include/asm/signal.h
++++ b/arch/x86/include/asm/signal.h
@@ -31,6 +31,19 @@ typedef struct {
unsigned long sig[_NSIG_WORDS];
} sigset_t;
@@ -59,11 +60,11 @@ Index: linux-3.4/arch/x86/include/asm/signal.h
#else
/* Here we must cater to libcs that poke about in kernel headers. */
-Index: linux-3.4/arch/x86/kernel/signal.c
-===================================================================
---- linux-3.4.orig/arch/x86/kernel/signal.c
-+++ linux-3.4/arch/x86/kernel/signal.c
-@@ -824,6 +824,15 @@ do_notify_resume(struct pt_regs *regs, v
+diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c
+index 115eac4..c67d83f 100644
+--- a/arch/x86/kernel/signal.c
++++ b/arch/x86/kernel/signal.c
+@@ -824,6 +824,15 @@ do_notify_resume(struct pt_regs *regs, void *unused, __u32 thread_info_flags)
mce_notify_process();
#endif /* CONFIG_X86_64 && CONFIG_X86_MCE */
@@ -79,10 +80,10 @@ Index: linux-3.4/arch/x86/kernel/signal.c
/* deal with pending signal delivery */
if (thread_info_flags & _TIF_SIGPENDING)
do_signal(regs);
-Index: linux-3.4/include/linux/sched.h
-===================================================================
---- linux-3.4.orig/include/linux/sched.h
-+++ linux-3.4/include/linux/sched.h
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index b546194..bd5caa1 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
@@ -1440,6 +1440,10 @@ struct task_struct {
sigset_t blocked, real_blocked;
sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */
@@ -94,11 +95,11 @@ Index: linux-3.4/include/linux/sched.h
unsigned long sas_ss_sp;
size_t sas_ss_size;
-Index: linux-3.4/kernel/signal.c
-===================================================================
---- linux-3.4.orig/kernel/signal.c
-+++ linux-3.4/kernel/signal.c
-@@ -1312,8 +1312,8 @@ int do_send_sig_info(int sig, struct sig
+diff --git a/kernel/signal.c b/kernel/signal.c
+index a05a4db..65cb5b4 100644
+--- a/kernel/signal.c
++++ b/kernel/signal.c
+@@ -1312,8 +1312,8 @@ int do_send_sig_info(int sig, struct siginfo *info, struct task_struct *p,
* We don't want to have recursive SIGSEGV's etc, for example,
* that is why we also clear SIGNAL_UNKILLABLE.
*/
@@ -109,7 +110,7 @@ Index: linux-3.4/kernel/signal.c
{
unsigned long int flags;
int ret, blocked, ignored;
-@@ -1338,6 +1338,39 @@ force_sig_info(int sig, struct siginfo *
+@@ -1338,6 +1338,39 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
return ret;
}
@@ -149,3 +150,6 @@ Index: linux-3.4/kernel/signal.c
/*
* Nuke all other threads in the group.
*/
+--
+1.7.10.4
+
diff --git a/patches/generic-cmpxchg-use-raw-local-irq.patch b/patches/0024-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch
index 790548a..6e2ad45 100644
--- a/patches/generic-cmpxchg-use-raw-local-irq.patch
+++ b/patches/0024-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch
@@ -1,21 +1,22 @@
+From 851cea221e32ac74b2aaa5eb21f0e9e484de95b7 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:30 -0500
-Subject: generic: Use raw local irq variant for generic cmpxchg
+Subject: [PATCH 024/254] generic: Use raw local irq variant for generic
+ cmpxchg
No point in tracing those.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
include/asm-generic/cmpxchg-local.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
-Index: linux-3.4/include/asm-generic/cmpxchg-local.h
-===================================================================
---- linux-3.4.orig/include/asm-generic/cmpxchg-local.h
-+++ linux-3.4/include/asm-generic/cmpxchg-local.h
-@@ -21,7 +21,7 @@ static inline unsigned long __cmpxchg_lo
+diff --git a/include/asm-generic/cmpxchg-local.h b/include/asm-generic/cmpxchg-local.h
+index 2533fdd..d8d4c89 100644
+--- a/include/asm-generic/cmpxchg-local.h
++++ b/include/asm-generic/cmpxchg-local.h
+@@ -21,7 +21,7 @@ static inline unsigned long __cmpxchg_local_generic(volatile void *ptr,
if (size == 8 && sizeof(unsigned long) != 8)
wrong_size_cmpxchg(ptr);
@@ -24,7 +25,7 @@ Index: linux-3.4/include/asm-generic/cmpxchg-local.h
switch (size) {
case 1: prev = *(u8 *)ptr;
if (prev == old)
-@@ -42,7 +42,7 @@ static inline unsigned long __cmpxchg_lo
+@@ -42,7 +42,7 @@ static inline unsigned long __cmpxchg_local_generic(volatile void *ptr,
default:
wrong_size_cmpxchg(ptr);
}
@@ -33,7 +34,7 @@ Index: linux-3.4/include/asm-generic/cmpxchg-local.h
return prev;
}
-@@ -55,11 +55,11 @@ static inline u64 __cmpxchg64_local_gene
+@@ -55,11 +55,11 @@ static inline u64 __cmpxchg64_local_generic(volatile void *ptr,
u64 prev;
unsigned long flags;
@@ -47,3 +48,6 @@ Index: linux-3.4/include/asm-generic/cmpxchg-local.h
return prev;
}
+--
+1.7.10.4
+
diff --git a/patches/drivers-random-reduce-preempt-disabled-region.patch b/patches/0025-drivers-random-Reduce-preempt-disabled-region.patch
index 2276178..ebd1529 100644
--- a/patches/drivers-random-reduce-preempt-disabled-region.patch
+++ b/patches/0025-drivers-random-Reduce-preempt-disabled-region.patch
@@ -1,21 +1,21 @@
+From 17de7c02f5e7c9825465c2c6573f0a78376805ba Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:30 -0500
-Subject: drivers: random: Reduce preempt disabled region
+Subject: [PATCH 025/254] drivers: random: Reduce preempt disabled region
No need to keep preemption disabled across the whole function.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
drivers/char/random.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
-Index: linux-3.4/drivers/char/random.c
-===================================================================
---- linux-3.4.orig/drivers/char/random.c
-+++ linux-3.4/drivers/char/random.c
-@@ -633,8 +633,11 @@ static void add_timer_randomness(struct
+diff --git a/drivers/char/random.c b/drivers/char/random.c
+index 4ec04a7..1e37cf4 100644
+--- a/drivers/char/random.c
++++ b/drivers/char/random.c
+@@ -633,8 +633,11 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num)
preempt_disable();
/* if over the trickle threshold, use only 1 in 4096 samples */
if (input_pool.entropy_count > trickle_thresh &&
@@ -29,7 +29,7 @@ Index: linux-3.4/drivers/char/random.c
sample.jiffies = jiffies;
-@@ -680,8 +683,6 @@ static void add_timer_randomness(struct
+@@ -680,8 +683,6 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num)
credit_entropy_bits(&input_pool,
min_t(int, fls(delta>>1), 11));
}
@@ -38,3 +38,6 @@ Index: linux-3.4/drivers/char/random.c
}
void add_input_randomness(unsigned int type, unsigned int code,
+--
+1.7.10.4
+
diff --git a/patches/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch b/patches/0026-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch
index c6cfd48..61c521f 100644
--- a/patches/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch
+++ b/patches/0026-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch
@@ -1,6 +1,8 @@
+From ed4ffb174386316f3cc3e1508ff4850b045990aa Mon Sep 17 00:00:00 2001
From: Benedikt Spranger <b.spranger@linutronix.de>
Date: Sat, 6 Mar 2010 17:47:10 +0100
-Subject: ARM: AT91: PIT: Remove irq handler when clock event is unused
+Subject: [PATCH 026/254] ARM: AT91: PIT: Remove irq handler when clock event
+ is unused
Setup and remove the interrupt handler in clock event mode selection.
This avoids calling the (shared) interrupt handler when the device is
@@ -8,17 +10,16 @@ not used.
Signed-off-by: Benedikt Spranger <b.spranger@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
arch/arm/mach-at91/at91rm9200_time.c | 1 +
arch/arm/mach-at91/at91sam926x_time.c | 5 ++++-
2 files changed, 5 insertions(+), 1 deletion(-)
-Index: linux-3.4/arch/arm/mach-at91/at91rm9200_time.c
-===================================================================
---- linux-3.4.orig/arch/arm/mach-at91/at91rm9200_time.c
-+++ linux-3.4/arch/arm/mach-at91/at91rm9200_time.c
-@@ -130,6 +130,7 @@ clkevt32k_mode(enum clock_event_mode mod
+diff --git a/arch/arm/mach-at91/at91rm9200_time.c b/arch/arm/mach-at91/at91rm9200_time.c
+index 104ca40..49aea48 100644
+--- a/arch/arm/mach-at91/at91rm9200_time.c
++++ b/arch/arm/mach-at91/at91rm9200_time.c
+@@ -130,6 +130,7 @@ clkevt32k_mode(enum clock_event_mode mode, struct clock_event_device *dev)
break;
case CLOCK_EVT_MODE_SHUTDOWN:
case CLOCK_EVT_MODE_UNUSED:
@@ -26,10 +27,10 @@ Index: linux-3.4/arch/arm/mach-at91/at91rm9200_time.c
case CLOCK_EVT_MODE_RESUME:
irqmask = 0;
break;
-Index: linux-3.4/arch/arm/mach-at91/at91sam926x_time.c
-===================================================================
---- linux-3.4.orig/arch/arm/mach-at91/at91sam926x_time.c
-+++ linux-3.4/arch/arm/mach-at91/at91sam926x_time.c
+diff --git a/arch/arm/mach-at91/at91sam926x_time.c b/arch/arm/mach-at91/at91sam926x_time.c
+index a94758b..dd300f3 100644
+--- a/arch/arm/mach-at91/at91sam926x_time.c
++++ b/arch/arm/mach-at91/at91sam926x_time.c
@@ -67,7 +67,7 @@ static struct clocksource pit_clk = {
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
};
@@ -39,7 +40,7 @@ Index: linux-3.4/arch/arm/mach-at91/at91sam926x_time.c
/*
* Clockevent device: interrupts every 1/HZ (== pit_cycles * MCK/16)
*/
-@@ -76,6 +76,8 @@ pit_clkevt_mode(enum clock_event_mode mo
+@@ -76,6 +76,8 @@ pit_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev)
{
switch (mode) {
case CLOCK_EVT_MODE_PERIODIC:
@@ -48,7 +49,7 @@ Index: linux-3.4/arch/arm/mach-at91/at91sam926x_time.c
/* update clocksource counter */
pit_cnt += pit_cycle * PIT_PICNT(pit_read(AT91_PIT_PIVR));
pit_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN
-@@ -88,6 +90,7 @@ pit_clkevt_mode(enum clock_event_mode mo
+@@ -88,6 +90,7 @@ pit_clkevt_mode(enum clock_event_mode mode, struct clock_event_device *dev)
case CLOCK_EVT_MODE_UNUSED:
/* disable irq, leaving the clocksource active */
pit_write(AT91_PIT_MR, (pit_cycle - 1) | AT91_PIT_PITEN);
@@ -56,3 +57,6 @@ Index: linux-3.4/arch/arm/mach-at91/at91sam926x_time.c
break;
case CLOCK_EVT_MODE_RESUME:
break;
+--
+1.7.10.4
+
diff --git a/patches/clocksource-tclib-allow-higher-clockrates.patch b/patches/0027-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch
index 8beba2f..c30838e 100644
--- a/patches/clocksource-tclib-allow-higher-clockrates.patch
+++ b/patches/0027-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch
@@ -1,22 +1,23 @@
+From e70b2c73dcabd9bdde0ba55ec4d4626db97ec393 Mon Sep 17 00:00:00 2001
From: Benedikt Spranger <b.spranger@linutronix.de>
Date: Mon, 8 Mar 2010 18:57:04 +0100
-Subject: clocksource: TCLIB: Allow higher clock rates for clock events
+Subject: [PATCH 027/254] clocksource: TCLIB: Allow higher clock rates for
+ clock events
As default the TCLIB uses the 32KiHz base clock rate for clock events.
Add a compile time selection to allow higher clock resulution.
Signed-off-by: Benedikt Spranger <b.spranger@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
- drivers/clocksource/tcb_clksrc.c | 44 +++++++++++++++++++++++----------------
- drivers/misc/Kconfig | 11 +++++++--
+ drivers/clocksource/tcb_clksrc.c | 44 ++++++++++++++++++++++----------------
+ drivers/misc/Kconfig | 11 ++++++++--
2 files changed, 35 insertions(+), 20 deletions(-)
-Index: linux-3.4/drivers/clocksource/tcb_clksrc.c
-===================================================================
---- linux-3.4.orig/drivers/clocksource/tcb_clksrc.c
-+++ linux-3.4/drivers/clocksource/tcb_clksrc.c
+diff --git a/drivers/clocksource/tcb_clksrc.c b/drivers/clocksource/tcb_clksrc.c
+index 32cb929..ac0bb2e 100644
+--- a/drivers/clocksource/tcb_clksrc.c
++++ b/drivers/clocksource/tcb_clksrc.c
@@ -23,8 +23,7 @@
* this 32 bit free-running counter. the second channel is not used.
*
@@ -35,7 +36,7 @@ Index: linux-3.4/drivers/clocksource/tcb_clksrc.c
void __iomem *regs;
};
-@@ -82,13 +82,6 @@ static struct tc_clkevt_device *to_tc_cl
+@@ -82,13 +82,6 @@ static struct tc_clkevt_device *to_tc_clkevt(struct clock_event_device *clkevt)
return container_of(clkevt, struct tc_clkevt_device, clkevt);
}
@@ -49,7 +50,7 @@ Index: linux-3.4/drivers/clocksource/tcb_clksrc.c
static u32 timer_clock;
static void tc_mode(enum clock_event_mode m, struct clock_event_device *d)
-@@ -111,11 +104,12 @@ static void tc_mode(enum clock_event_mod
+@@ -111,11 +104,12 @@ static void tc_mode(enum clock_event_mode m, struct clock_event_device *d)
case CLOCK_EVT_MODE_PERIODIC:
clk_enable(tcd->clk);
@@ -64,7 +65,7 @@ Index: linux-3.4/drivers/clocksource/tcb_clksrc.c
/* Enable clock and interrupts on RC compare */
__raw_writel(ATMEL_TC_CPCS, regs + ATMEL_TC_REG(2, IER));
-@@ -128,7 +122,7 @@ static void tc_mode(enum clock_event_mod
+@@ -128,7 +122,7 @@ static void tc_mode(enum clock_event_mode m, struct clock_event_device *d)
case CLOCK_EVT_MODE_ONESHOT:
clk_enable(tcd->clk);
@@ -73,7 +74,7 @@ Index: linux-3.4/drivers/clocksource/tcb_clksrc.c
__raw_writel(timer_clock | ATMEL_TC_CPCSTOP
| ATMEL_TC_WAVE | ATMEL_TC_WAVESEL_UP_AUTO,
regs + ATMEL_TC_REG(2, CMR));
-@@ -158,8 +152,12 @@ static struct tc_clkevt_device clkevt =
+@@ -158,8 +152,12 @@ static struct tc_clkevt_device clkevt = {
.features = CLOCK_EVT_FEAT_PERIODIC
| CLOCK_EVT_FEAT_ONESHOT,
.shift = 32,
@@ -97,7 +98,7 @@ Index: linux-3.4/drivers/clocksource/tcb_clksrc.c
struct clk *t2_clk = tc->clk[2];
int irq = tc->irq[2];
-@@ -194,11 +193,17 @@ static void __init setup_clkevents(struc
+@@ -194,11 +193,17 @@ static void __init setup_clkevents(struct atmel_tc *tc, int clk32k_divisor_idx)
clkevt.clk = t2_clk;
tc_irqaction.dev_id = &clkevt;
@@ -132,10 +133,10 @@ Index: linux-3.4/drivers/clocksource/tcb_clksrc.c
return 0;
}
arch_initcall(tcb_clksrc_init);
-Index: linux-3.4/drivers/misc/Kconfig
-===================================================================
---- linux-3.4.orig/drivers/misc/Kconfig
-+++ linux-3.4/drivers/misc/Kconfig
+diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
+index c779509..504daa3 100644
+--- a/drivers/misc/Kconfig
++++ b/drivers/misc/Kconfig
@@ -87,8 +87,7 @@ config ATMEL_TCB_CLKSRC
are combined to make a single 32-bit timer.
@@ -161,3 +162,6 @@ Index: linux-3.4/drivers/misc/Kconfig
config IBM_ASM
tristate "Device driver for IBM RSA service processor"
depends on X86 && PCI && INPUT && EXPERIMENTAL
+--
+1.7.10.4
+
diff --git a/patches/drivers-net-tulip-add-missing-pci-disable.patch b/patches/0028-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch
index 3b993d4..1cd1ab9 100644
--- a/patches/drivers-net-tulip-add-missing-pci-disable.patch
+++ b/patches/0028-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch
@@ -1,21 +1,22 @@
+From fc853bc0d4a546c0cb97e9b70561c2b4423c3b83 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:18 -0500
-Subject: drivers/net: tulip_remove_one needs to call pci_disable_device()
+Subject: [PATCH 028/254] drivers/net: tulip_remove_one needs to call
+ pci_disable_device()
Otherwise the device is not completely shut down.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
drivers/net/ethernet/dec/tulip/tulip_core.c | 1 +
1 file changed, 1 insertion(+)
-Index: linux-3.4/drivers/net/ethernet/dec/tulip/tulip_core.c
-===================================================================
---- linux-3.4.orig/drivers/net/ethernet/dec/tulip/tulip_core.c
-+++ linux-3.4/drivers/net/ethernet/dec/tulip/tulip_core.c
-@@ -1946,6 +1946,7 @@ static void __devexit tulip_remove_one (
+diff --git a/drivers/net/ethernet/dec/tulip/tulip_core.c b/drivers/net/ethernet/dec/tulip/tulip_core.c
+index fea3641..d9a5fe0 100644
+--- a/drivers/net/ethernet/dec/tulip/tulip_core.c
++++ b/drivers/net/ethernet/dec/tulip/tulip_core.c
+@@ -1946,6 +1946,7 @@ static void __devexit tulip_remove_one (struct pci_dev *pdev)
pci_iounmap(pdev, tp->base_addr);
free_netdev (dev);
pci_release_regions (pdev);
@@ -23,3 +24,6 @@ Index: linux-3.4/drivers/net/ethernet/dec/tulip/tulip_core.c
pci_set_drvdata (pdev, NULL);
/* pci_power_off (pdev, -1); */
+--
+1.7.10.4
+
diff --git a/patches/drivers-net-8139-disable-irq-nosync.patch b/patches/0029-drivers-net-Use-disable_irq_nosync-in-8139too.patch
index bb21575..e902065 100644
--- a/patches/drivers-net-8139-disable-irq-nosync.patch
+++ b/patches/0029-drivers-net-Use-disable_irq_nosync-in-8139too.patch
@@ -1,22 +1,22 @@
+From 548e01e0b9db86e5027c03d6f755da00c68744a4 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:24 -0500
-Subject: drivers/net: Use disable_irq_nosync() in 8139too
+Subject: [PATCH 029/254] drivers/net: Use disable_irq_nosync() in 8139too
Use disable_irq_nosync() instead of disable_irq() as this might be
called in atomic context with netpoll.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
drivers/net/ethernet/realtek/8139too.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/drivers/net/ethernet/realtek/8139too.c
-===================================================================
---- linux-3.4.orig/drivers/net/ethernet/realtek/8139too.c
-+++ linux-3.4/drivers/net/ethernet/realtek/8139too.c
-@@ -2240,7 +2240,7 @@ static irqreturn_t rtl8139_interrupt (in
+diff --git a/drivers/net/ethernet/realtek/8139too.c b/drivers/net/ethernet/realtek/8139too.c
+index df7fd8d..7ce74f6 100644
+--- a/drivers/net/ethernet/realtek/8139too.c
++++ b/drivers/net/ethernet/realtek/8139too.c
+@@ -2240,7 +2240,7 @@ static irqreturn_t rtl8139_interrupt (int irq, void *dev_instance)
*/
static void rtl8139_poll_controller(struct net_device *dev)
{
@@ -25,3 +25,6 @@ Index: linux-3.4/drivers/net/ethernet/realtek/8139too.c
rtl8139_interrupt(dev->irq, dev);
enable_irq(dev->irq);
}
+--
+1.7.10.4
+
diff --git a/patches/drivers-net-ehea-mark-rx-irq-no-thread.patch b/patches/0030-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch
index c7ec044..02e69ac 100644
--- a/patches/drivers-net-ehea-mark-rx-irq-no-thread.patch
+++ b/patches/0030-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch
@@ -1,6 +1,8 @@
+From 2ae7fc2f2a5e87487133d1e37b3bb0b001059092 Mon Sep 17 00:00:00 2001
From: Darren Hart <dvhltc@us.ibm.com>
Date: Tue, 18 May 2010 14:33:07 -0700
-Subject: drivers: net: ehea: Make rx irq handler non-threaded (IRQF_NO_THREAD)
+Subject: [PATCH 030/254] drivers: net: ehea: Make rx irq handler non-threaded
+ (IRQF_NO_THREAD)
The underlying hardware is edge triggered but presented by XICS as level
triggered. The edge triggered interrupts are not reissued after masking. This
@@ -33,16 +35,15 @@ Cc: Michael Ellerman <ellerman@au1.ibm.com>
Cc: Doug Maxey <doug.maxey@us.ibm.com>
LKML-Reference: <4BF30793.5070300@us.ibm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
drivers/net/ethernet/ibm/ehea/ehea_main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/drivers/net/ethernet/ibm/ehea/ehea_main.c
-===================================================================
---- linux-3.4.orig/drivers/net/ethernet/ibm/ehea/ehea_main.c
-+++ linux-3.4/drivers/net/ethernet/ibm/ehea/ehea_main.c
-@@ -1306,7 +1306,7 @@ static int ehea_reg_interrupts(struct ne
+diff --git a/drivers/net/ethernet/ibm/ehea/ehea_main.c b/drivers/net/ethernet/ibm/ehea/ehea_main.c
+index f4d2da0..a4cb742 100644
+--- a/drivers/net/ethernet/ibm/ehea/ehea_main.c
++++ b/drivers/net/ethernet/ibm/ehea/ehea_main.c
+@@ -1308,7 +1308,7 @@ static int ehea_reg_interrupts(struct net_device *dev)
"%s-queue%d", dev->name, i);
ret = ibmebus_request_irq(pr->eq->attr.ist1,
ehea_recv_irq_handler,
@@ -51,3 +52,6 @@ Index: linux-3.4/drivers/net/ethernet/ibm/ehea/ehea_main.c
pr);
if (ret) {
netdev_err(dev, "failed registering irq for ehea_queue port_res_nr:%d, ist=%X\n",
+--
+1.7.10.4
+
diff --git a/patches/drivers-net-at91-make-mdio-protection-rt-safe.patch b/patches/0031-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch
index fe76b65..6757443 100644
--- a/patches/drivers-net-at91-make-mdio-protection-rt-safe.patch
+++ b/patches/0031-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch
@@ -1,6 +1,8 @@
+From 2df04f7c6e45183b954c6961df1d71feb669cfe1 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 17 Nov 2009 12:02:43 +0100
-Subject: drivers: net: at91_ether: Make mdio protection -rt safe
+Subject: [PATCH 031/254] drivers: net: at91_ether: Make mdio protection -rt
+ safe
Neither the phy interrupt nor the timer callback which updates the
link status in absense of a phy interrupt are taking lp->lock which
@@ -13,16 +15,15 @@ Fix this by adding proper locking to at91ether_phy_interrupt() and
at91_check_ether() which serializes the access on -rt.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
drivers/net/ethernet/cadence/at91_ether.c | 5 +++++
1 file changed, 5 insertions(+)
-Index: linux-3.4/drivers/net/ethernet/cadence/at91_ether.c
-===================================================================
---- linux-3.4.orig/drivers/net/ethernet/cadence/at91_ether.c
-+++ linux-3.4/drivers/net/ethernet/cadence/at91_ether.c
-@@ -201,7 +201,9 @@ static irqreturn_t at91ether_phy_interru
+diff --git a/drivers/net/ethernet/cadence/at91_ether.c b/drivers/net/ethernet/cadence/at91_ether.c
+index 9061170..6b9e006 100644
+--- a/drivers/net/ethernet/cadence/at91_ether.c
++++ b/drivers/net/ethernet/cadence/at91_ether.c
+@@ -201,7 +201,9 @@ static irqreturn_t at91ether_phy_interrupt(int irq, void *dev_id)
struct net_device *dev = (struct net_device *) dev_id;
struct at91_private *lp = netdev_priv(dev);
unsigned int phy;
@@ -32,7 +33,7 @@ Index: linux-3.4/drivers/net/ethernet/cadence/at91_ether.c
/*
* This hander is triggered on both edges, but the PHY chips expect
* level-triggering. We therefore have to check if the PHY actually has
-@@ -243,6 +245,7 @@ static irqreturn_t at91ether_phy_interru
+@@ -243,6 +245,7 @@ static irqreturn_t at91ether_phy_interrupt(int irq, void *dev_id)
done:
disable_mdi();
@@ -40,7 +41,7 @@ Index: linux-3.4/drivers/net/ethernet/cadence/at91_ether.c
return IRQ_HANDLED;
}
-@@ -399,9 +402,11 @@ static void at91ether_check_link(unsigne
+@@ -399,9 +402,11 @@ static void at91ether_check_link(unsigned long dev_id)
struct net_device *dev = (struct net_device *) dev_id;
struct at91_private *lp = netdev_priv(dev);
@@ -52,3 +53,6 @@ Index: linux-3.4/drivers/net/ethernet/cadence/at91_ether.c
mod_timer(&lp->check_timer, jiffies + LINK_POLL_INTERVAL);
}
+--
+1.7.10.4
+
diff --git a/patches/mm-prepare-pf-disable-discoupling.patch b/patches/0032-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch
index 2cc41c8..4e2a5f8 100644
--- a/patches/mm-prepare-pf-disable-discoupling.patch
+++ b/patches/0032-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch
@@ -1,13 +1,14 @@
+From 1e63cb4ffdeb975ee2cf4f7d7c35829e7786b163 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:37 -0500
-Subject: mm: Prepare decoupling the page fault disabling logic
+Subject: [PATCH 032/254] mm: Prepare decoupling the page fault disabling
+ logic
Add a pagefault_disabled variable to task_struct to allow decoupling
the pagefault-disabled logic from the preempt count.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
include/linux/sched.h | 1 +
include/linux/uaccess.h | 33 +++------------------------------
@@ -15,10 +16,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
mm/memory.c | 29 +++++++++++++++++++++++++++++
4 files changed, 34 insertions(+), 30 deletions(-)
-Index: linux-3.4/include/linux/sched.h
-===================================================================
---- linux-3.4.orig/include/linux/sched.h
-+++ linux-3.4/include/linux/sched.h
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index bd5caa1..f0ee37f 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
@@ -1478,6 +1478,7 @@ struct task_struct {
/* mutex deadlock detection */
struct mutex_waiter *blocked_on;
@@ -27,10 +28,10 @@ Index: linux-3.4/include/linux/sched.h
#ifdef CONFIG_TRACE_IRQFLAGS
unsigned int irq_events;
unsigned long hardirq_enable_ip;
-Index: linux-3.4/include/linux/uaccess.h
-===================================================================
---- linux-3.4.orig/include/linux/uaccess.h
-+++ linux-3.4/include/linux/uaccess.h
+diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
+index 5ca0951..9414a1b 100644
+--- a/include/linux/uaccess.h
++++ b/include/linux/uaccess.h
@@ -6,37 +6,10 @@
/*
@@ -72,11 +73,11 @@ Index: linux-3.4/include/linux/uaccess.h
#ifndef ARCH_HAS_NOCACHE_UACCESS
-Index: linux-3.4/kernel/fork.c
-===================================================================
---- linux-3.4.orig/kernel/fork.c
-+++ linux-3.4/kernel/fork.c
-@@ -1263,6 +1263,7 @@ static struct task_struct *copy_process(
+diff --git a/kernel/fork.c b/kernel/fork.c
+index 46a87d8..3cf88ca 100644
+--- a/kernel/fork.c
++++ b/kernel/fork.c
+@@ -1264,6 +1264,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
p->hardirq_context = 0;
p->softirq_context = 0;
#endif
@@ -84,10 +85,10 @@ Index: linux-3.4/kernel/fork.c
#ifdef CONFIG_LOCKDEP
p->lockdep_depth = 0; /* no locks held yet */
p->curr_chain_key = 0;
-Index: linux-3.4/mm/memory.c
-===================================================================
---- linux-3.4.orig/mm/memory.c
-+++ linux-3.4/mm/memory.c
+diff --git a/mm/memory.c b/mm/memory.c
+index 6105f47..c3b9c80 100644
+--- a/mm/memory.c
++++ b/mm/memory.c
@@ -3467,6 +3467,35 @@ unlock:
return 0;
}
@@ -124,3 +125,6 @@ Index: linux-3.4/mm/memory.c
/*
* By the time we get here, we already hold the mm semaphore
*/
+--
+1.7.10.4
+
diff --git a/patches/arch-use-pagefault-disabled.patch b/patches/0033-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch
index 9916b82..bc2e541 100644
--- a/patches/arch-use-pagefault-disabled.patch
+++ b/patches/0033-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch
@@ -1,6 +1,8 @@
-Subject: mm: Fixup all fault handlers to check current->pagefault_disable
+From f095b6657f20ff990b2e0bbca44c7ca3d622f6db Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 17 Mar 2011 11:32:28 +0100
+Subject: [PATCH 033/254] mm: Fixup all fault handlers to check
+ current->pagefault_disable
Necessary for decoupling pagefault disable from preempt count.
@@ -30,11 +32,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/xtensa/mm/fault.c | 2 +-
22 files changed, 27 insertions(+), 24 deletions(-)
-Index: linux-3.4/arch/alpha/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/alpha/mm/fault.c
-+++ linux-3.4/arch/alpha/mm/fault.c
-@@ -106,7 +106,7 @@ do_page_fault(unsigned long address, uns
+diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
+index 5eecab1..0ddf6c0 100644
+--- a/arch/alpha/mm/fault.c
++++ b/arch/alpha/mm/fault.c
+@@ -106,7 +106,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
/* If we're in an interrupt context, or have no user context,
we must not take the fault. */
@@ -43,11 +45,11 @@ Index: linux-3.4/arch/alpha/mm/fault.c
goto no_context;
#ifdef CONFIG_ALPHA_LARGE_VMALLOC
-Index: linux-3.4/arch/arm/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/arm/mm/fault.c
-+++ linux-3.4/arch/arm/mm/fault.c
-@@ -277,7 +277,7 @@ do_page_fault(unsigned long addr, unsign
+diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
+index 5bb4835..40bd40f 100644
+--- a/arch/arm/mm/fault.c
++++ b/arch/arm/mm/fault.c
+@@ -279,7 +279,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@@ -56,11 +58,11 @@ Index: linux-3.4/arch/arm/mm/fault.c
goto no_context;
/*
-Index: linux-3.4/arch/avr32/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/avr32/mm/fault.c
-+++ linux-3.4/arch/avr32/mm/fault.c
-@@ -81,7 +81,8 @@ asmlinkage void do_page_fault(unsigned l
+diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c
+index f7040a1..623a027 100644
+--- a/arch/avr32/mm/fault.c
++++ b/arch/avr32/mm/fault.c
+@@ -81,7 +81,8 @@ asmlinkage void do_page_fault(unsigned long ecr, struct pt_regs *regs)
* If we're in an interrupt or have no user context, we must
* not take the fault...
*/
@@ -70,11 +72,11 @@ Index: linux-3.4/arch/avr32/mm/fault.c
goto no_context;
local_irq_enable();
-Index: linux-3.4/arch/cris/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/cris/mm/fault.c
-+++ linux-3.4/arch/cris/mm/fault.c
-@@ -112,7 +112,7 @@ do_page_fault(unsigned long address, str
+diff --git a/arch/cris/mm/fault.c b/arch/cris/mm/fault.c
+index b4760d8..1c1630e 100644
+--- a/arch/cris/mm/fault.c
++++ b/arch/cris/mm/fault.c
+@@ -112,7 +112,7 @@ do_page_fault(unsigned long address, struct pt_regs *regs,
* user context, we must not take the fault.
*/
@@ -83,11 +85,11 @@ Index: linux-3.4/arch/cris/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
-Index: linux-3.4/arch/frv/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/frv/mm/fault.c
-+++ linux-3.4/arch/frv/mm/fault.c
-@@ -78,7 +78,7 @@ asmlinkage void do_page_fault(int datamm
+diff --git a/arch/frv/mm/fault.c b/arch/frv/mm/fault.c
+index 331c1e2..6372088 100644
+--- a/arch/frv/mm/fault.c
++++ b/arch/frv/mm/fault.c
+@@ -78,7 +78,7 @@ asmlinkage void do_page_fault(int datammu, unsigned long esr0, unsigned long ear
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@@ -96,11 +98,11 @@ Index: linux-3.4/arch/frv/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
-Index: linux-3.4/arch/ia64/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/ia64/mm/fault.c
-+++ linux-3.4/arch/ia64/mm/fault.c
-@@ -88,7 +88,7 @@ ia64_do_page_fault (unsigned long addres
+diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
+index 02d29c2..721dbb9 100644
+--- a/arch/ia64/mm/fault.c
++++ b/arch/ia64/mm/fault.c
+@@ -88,7 +88,7 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re
/*
* If we're in an interrupt or have no user context, we must not take the fault..
*/
@@ -109,11 +111,11 @@ Index: linux-3.4/arch/ia64/mm/fault.c
goto no_context;
#ifdef CONFIG_VIRTUAL_MEM_MAP
-Index: linux-3.4/arch/m32r/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/m32r/mm/fault.c
-+++ linux-3.4/arch/m32r/mm/fault.c
-@@ -114,7 +114,7 @@ asmlinkage void do_page_fault(struct pt_
+diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c
+index 3cdfa9c..1eec8af 100644
+--- a/arch/m32r/mm/fault.c
++++ b/arch/m32r/mm/fault.c
+@@ -114,7 +114,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code,
* If we're in an interrupt or have no user context or are running in an
* atomic region then we must not take the fault..
*/
@@ -122,11 +124,11 @@ Index: linux-3.4/arch/m32r/mm/fault.c
goto bad_area_nosemaphore;
/* When running in the kernel we expect faults to occur only to
-Index: linux-3.4/arch/m68k/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/m68k/mm/fault.c
-+++ linux-3.4/arch/m68k/mm/fault.c
-@@ -84,7 +84,7 @@ int do_page_fault(struct pt_regs *regs,
+diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c
+index 6b020a8..7a4cc68 100644
+--- a/arch/m68k/mm/fault.c
++++ b/arch/m68k/mm/fault.c
+@@ -84,7 +84,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@@ -135,11 +137,11 @@ Index: linux-3.4/arch/m68k/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
-Index: linux-3.4/arch/microblaze/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/microblaze/mm/fault.c
-+++ linux-3.4/arch/microblaze/mm/fault.c
-@@ -106,7 +106,7 @@ void do_page_fault(struct pt_regs *regs,
+diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c
+index c38a265..621ad49 100644
+--- a/arch/microblaze/mm/fault.c
++++ b/arch/microblaze/mm/fault.c
+@@ -106,7 +106,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long address,
if ((error_code & 0x13) == 0x13 || (error_code & 0x11) == 0x11)
is_write = 0;
@@ -148,11 +150,11 @@ Index: linux-3.4/arch/microblaze/mm/fault.c
if (kernel_mode(regs))
goto bad_area_nosemaphore;
-Index: linux-3.4/arch/mips/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/mips/mm/fault.c
-+++ linux-3.4/arch/mips/mm/fault.c
-@@ -89,7 +89,7 @@ asmlinkage void __kprobes do_page_fault(
+diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
+index c14f6df..3468e69 100644
+--- a/arch/mips/mm/fault.c
++++ b/arch/mips/mm/fault.c
+@@ -89,7 +89,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, unsigned long writ
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@@ -161,11 +163,11 @@ Index: linux-3.4/arch/mips/mm/fault.c
goto bad_area_nosemaphore;
retry:
-Index: linux-3.4/arch/mn10300/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/mn10300/mm/fault.c
-+++ linux-3.4/arch/mn10300/mm/fault.c
-@@ -167,7 +167,7 @@ asmlinkage void do_page_fault(struct pt_
+diff --git a/arch/mn10300/mm/fault.c b/arch/mn10300/mm/fault.c
+index 90f346f..ff5acf5 100644
+--- a/arch/mn10300/mm/fault.c
++++ b/arch/mn10300/mm/fault.c
+@@ -167,7 +167,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long fault_code,
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@@ -174,11 +176,11 @@ Index: linux-3.4/arch/mn10300/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
-Index: linux-3.4/arch/parisc/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/parisc/mm/fault.c
-+++ linux-3.4/arch/parisc/mm/fault.c
-@@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs,
+diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c
+index 18162ce..09ecc8a 100644
+--- a/arch/parisc/mm/fault.c
++++ b/arch/parisc/mm/fault.c
+@@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long code,
unsigned long acc_type;
int fault;
@@ -187,11 +189,11 @@ Index: linux-3.4/arch/parisc/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
-Index: linux-3.4/arch/powerpc/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/powerpc/mm/fault.c
-+++ linux-3.4/arch/powerpc/mm/fault.c
-@@ -261,7 +261,7 @@ int __kprobes do_page_fault(struct pt_re
+diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
+index 08ffcf5..6642dff 100644
+--- a/arch/powerpc/mm/fault.c
++++ b/arch/powerpc/mm/fault.c
+@@ -261,7 +261,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address,
if (!arch_irq_disabled_regs(regs))
local_irq_enable();
@@ -200,11 +202,11 @@ Index: linux-3.4/arch/powerpc/mm/fault.c
if (!user_mode(regs))
return SIGSEGV;
/* in_atomic() in user mode is really bad,
-Index: linux-3.4/arch/s390/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/s390/mm/fault.c
-+++ linux-3.4/arch/s390/mm/fault.c
-@@ -283,7 +283,8 @@ static inline int do_exception(struct pt
+diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
+index 4e66860..f7d796f 100644
+--- a/arch/s390/mm/fault.c
++++ b/arch/s390/mm/fault.c
+@@ -283,7 +283,8 @@ static inline int do_exception(struct pt_regs *regs, int access)
* user context.
*/
fault = VM_FAULT_BADCONTEXT;
@@ -214,7 +216,7 @@ Index: linux-3.4/arch/s390/mm/fault.c
goto out;
address = trans_exc_code & __FAIL_ADDR_MASK;
-@@ -415,7 +416,8 @@ void __kprobes do_asce_exception(struct
+@@ -415,7 +416,8 @@ void __kprobes do_asce_exception(struct pt_regs *regs)
unsigned long trans_exc_code;
trans_exc_code = regs->int_parm_long;
@@ -224,11 +226,11 @@ Index: linux-3.4/arch/s390/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
-Index: linux-3.4/arch/score/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/score/mm/fault.c
-+++ linux-3.4/arch/score/mm/fault.c
-@@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_
+diff --git a/arch/score/mm/fault.c b/arch/score/mm/fault.c
+index 47b600e..4c12824 100644
+--- a/arch/score/mm/fault.c
++++ b/arch/score/mm/fault.c
+@@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long write,
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@@ -237,11 +239,11 @@ Index: linux-3.4/arch/score/mm/fault.c
goto bad_area_nosemaphore;
down_read(&mm->mmap_sem);
-Index: linux-3.4/arch/sh/mm/fault_32.c
-===================================================================
---- linux-3.4.orig/arch/sh/mm/fault_32.c
-+++ linux-3.4/arch/sh/mm/fault_32.c
-@@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault(
+diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c
+index e99b104..8c3ae42 100644
+--- a/arch/sh/mm/fault_32.c
++++ b/arch/sh/mm/fault_32.c
+@@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
* If we're in an interrupt, have no user context or are running
* in an atomic region then we must not take the fault:
*/
@@ -250,11 +252,11 @@ Index: linux-3.4/arch/sh/mm/fault_32.c
goto no_context;
down_read(&mm->mmap_sem);
-Index: linux-3.4/arch/sparc/mm/fault_32.c
-===================================================================
---- linux-3.4.orig/arch/sparc/mm/fault_32.c
-+++ linux-3.4/arch/sparc/mm/fault_32.c
-@@ -248,8 +248,8 @@ asmlinkage void do_sparc_fault(struct pt
+diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
+index df3155a..ffaa99e 100644
+--- a/arch/sparc/mm/fault_32.c
++++ b/arch/sparc/mm/fault_32.c
+@@ -248,8 +248,8 @@ asmlinkage void do_sparc_fault(struct pt_regs *regs, int text_fault, int write,
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@@ -265,11 +267,11 @@ Index: linux-3.4/arch/sparc/mm/fault_32.c
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
-Index: linux-3.4/arch/sparc/mm/fault_64.c
-===================================================================
---- linux-3.4.orig/arch/sparc/mm/fault_64.c
-+++ linux-3.4/arch/sparc/mm/fault_64.c
-@@ -323,7 +323,7 @@ asmlinkage void __kprobes do_sparc64_fau
+diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
+index 1fe0429..fbd5e11 100644
+--- a/arch/sparc/mm/fault_64.c
++++ b/arch/sparc/mm/fault_64.c
+@@ -323,7 +323,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@@ -278,11 +280,11 @@ Index: linux-3.4/arch/sparc/mm/fault_64.c
goto intr_or_no_mm;
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
-Index: linux-3.4/arch/tile/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/tile/mm/fault.c
-+++ linux-3.4/arch/tile/mm/fault.c
-@@ -355,7 +355,7 @@ static int handle_page_fault(struct pt_r
+diff --git a/arch/tile/mm/fault.c b/arch/tile/mm/fault.c
+index 22e58f5..f683aad 100644
+--- a/arch/tile/mm/fault.c
++++ b/arch/tile/mm/fault.c
+@@ -355,7 +355,7 @@ static int handle_page_fault(struct pt_regs *regs,
* If we're in an interrupt, have no user context or are running in an
* atomic region then we must not take the fault.
*/
@@ -291,11 +293,11 @@ Index: linux-3.4/arch/tile/mm/fault.c
vma = NULL; /* happy compiler */
goto bad_area_nosemaphore;
}
-Index: linux-3.4/arch/um/kernel/trap.c
-===================================================================
---- linux-3.4.orig/arch/um/kernel/trap.c
-+++ linux-3.4/arch/um/kernel/trap.c
-@@ -37,7 +37,7 @@ int handle_page_fault(unsigned long addr
+diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c
+index dafc947..a283400 100644
+--- a/arch/um/kernel/trap.c
++++ b/arch/um/kernel/trap.c
+@@ -37,7 +37,7 @@ int handle_page_fault(unsigned long address, unsigned long ip,
* If the fault was during atomic operation, don't take the fault, just
* fail.
*/
@@ -304,11 +306,11 @@ Index: linux-3.4/arch/um/kernel/trap.c
goto out_nosemaphore;
down_read(&mm->mmap_sem);
-Index: linux-3.4/arch/x86/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/x86/mm/fault.c
-+++ linux-3.4/arch/x86/mm/fault.c
-@@ -1094,7 +1094,7 @@ do_page_fault(struct pt_regs *regs, unsi
+diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
+index 3ecfd1a..bb891f2 100644
+--- a/arch/x86/mm/fault.c
++++ b/arch/x86/mm/fault.c
+@@ -1094,7 +1094,7 @@ do_page_fault(struct pt_regs *regs, unsigned long error_code)
* If we're in an interrupt, have no user context or are running
* in an atomic region then we must not take the fault:
*/
@@ -317,10 +319,10 @@ Index: linux-3.4/arch/x86/mm/fault.c
bad_area_nosemaphore(regs, error_code, address);
return;
}
-Index: linux-3.4/arch/xtensa/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/xtensa/mm/fault.c
-+++ linux-3.4/arch/xtensa/mm/fault.c
+diff --git a/arch/xtensa/mm/fault.c b/arch/xtensa/mm/fault.c
+index b17885a..cc58b7c 100644
+--- a/arch/xtensa/mm/fault.c
++++ b/arch/xtensa/mm/fault.c
@@ -56,7 +56,7 @@ void do_page_fault(struct pt_regs *regs)
/* If we're in an interrupt or have no user
* context, we must not take the fault..
@@ -330,3 +332,6 @@ Index: linux-3.4/arch/xtensa/mm/fault.c
bad_page_fault(regs, address, SIGSEGV);
return;
}
+--
+1.7.10.4
+
diff --git a/patches/peter_zijlstra-frob-pagefault_disable.patch b/patches/0034-mm-pagefault_disabled.patch
index 1f2d738..e37a6b7 100644
--- a/patches/peter_zijlstra-frob-pagefault_disable.patch
+++ b/patches/0034-mm-pagefault_disabled.patch
@@ -1,6 +1,7 @@
-Subject: mm: pagefault_disabled()
+From 3dea1ce8c6e2f282a0cb713e0556cc223bc05c40 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
-Date: Thu Aug 11 15:31:31 CEST 2011
+Date: Thu, 11 Aug 2011 15:31:31 +0200
+Subject: [PATCH 034/254] mm: pagefault_disabled()
Wrap the test for pagefault_disabled() into a helper, this allows us
to remove the need for current->pagefault_disabled on !-rt kernels.
@@ -34,11 +35,11 @@ Link: http://lkml.kernel.org/n/tip-3yy517m8zsi9fpsf14xfaqkw@git.kernel.org
kernel/fork.c | 2 ++
24 files changed, 40 insertions(+), 25 deletions(-)
-Index: linux-3.4/arch/alpha/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/alpha/mm/fault.c
-+++ linux-3.4/arch/alpha/mm/fault.c
-@@ -106,7 +106,7 @@ do_page_fault(unsigned long address, uns
+diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
+index 0ddf6c0..ab6b9d13 100644
+--- a/arch/alpha/mm/fault.c
++++ b/arch/alpha/mm/fault.c
+@@ -106,7 +106,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
/* If we're in an interrupt context, or have no user context,
we must not take the fault. */
@@ -47,11 +48,11 @@ Index: linux-3.4/arch/alpha/mm/fault.c
goto no_context;
#ifdef CONFIG_ALPHA_LARGE_VMALLOC
-Index: linux-3.4/arch/arm/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/arm/mm/fault.c
-+++ linux-3.4/arch/arm/mm/fault.c
-@@ -277,7 +277,7 @@ do_page_fault(unsigned long addr, unsign
+diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
+index 40bd40f..17a9f4a 100644
+--- a/arch/arm/mm/fault.c
++++ b/arch/arm/mm/fault.c
+@@ -279,7 +279,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@@ -60,11 +61,11 @@ Index: linux-3.4/arch/arm/mm/fault.c
goto no_context;
/*
-Index: linux-3.4/arch/avr32/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/avr32/mm/fault.c
-+++ linux-3.4/arch/avr32/mm/fault.c
-@@ -81,8 +81,7 @@ asmlinkage void do_page_fault(unsigned l
+diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c
+index 623a027..155ad8d 100644
+--- a/arch/avr32/mm/fault.c
++++ b/arch/avr32/mm/fault.c
+@@ -81,8 +81,7 @@ asmlinkage void do_page_fault(unsigned long ecr, struct pt_regs *regs)
* If we're in an interrupt or have no user context, we must
* not take the fault...
*/
@@ -74,11 +75,11 @@ Index: linux-3.4/arch/avr32/mm/fault.c
goto no_context;
local_irq_enable();
-Index: linux-3.4/arch/cris/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/cris/mm/fault.c
-+++ linux-3.4/arch/cris/mm/fault.c
-@@ -112,7 +112,7 @@ do_page_fault(unsigned long address, str
+diff --git a/arch/cris/mm/fault.c b/arch/cris/mm/fault.c
+index 1c1630e..886be8e 100644
+--- a/arch/cris/mm/fault.c
++++ b/arch/cris/mm/fault.c
+@@ -112,7 +112,7 @@ do_page_fault(unsigned long address, struct pt_regs *regs,
* user context, we must not take the fault.
*/
@@ -87,11 +88,11 @@ Index: linux-3.4/arch/cris/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
-Index: linux-3.4/arch/frv/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/frv/mm/fault.c
-+++ linux-3.4/arch/frv/mm/fault.c
-@@ -78,7 +78,7 @@ asmlinkage void do_page_fault(int datamm
+diff --git a/arch/frv/mm/fault.c b/arch/frv/mm/fault.c
+index 6372088..e87972c 100644
+--- a/arch/frv/mm/fault.c
++++ b/arch/frv/mm/fault.c
+@@ -78,7 +78,7 @@ asmlinkage void do_page_fault(int datammu, unsigned long esr0, unsigned long ear
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@@ -100,11 +101,11 @@ Index: linux-3.4/arch/frv/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
-Index: linux-3.4/arch/ia64/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/ia64/mm/fault.c
-+++ linux-3.4/arch/ia64/mm/fault.c
-@@ -88,7 +88,7 @@ ia64_do_page_fault (unsigned long addres
+diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
+index 721dbb9..8ca850e 100644
+--- a/arch/ia64/mm/fault.c
++++ b/arch/ia64/mm/fault.c
+@@ -88,7 +88,7 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re
/*
* If we're in an interrupt or have no user context, we must not take the fault..
*/
@@ -113,11 +114,11 @@ Index: linux-3.4/arch/ia64/mm/fault.c
goto no_context;
#ifdef CONFIG_VIRTUAL_MEM_MAP
-Index: linux-3.4/arch/m32r/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/m32r/mm/fault.c
-+++ linux-3.4/arch/m32r/mm/fault.c
-@@ -114,7 +114,7 @@ asmlinkage void do_page_fault(struct pt_
+diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c
+index 1eec8af..6945056 100644
+--- a/arch/m32r/mm/fault.c
++++ b/arch/m32r/mm/fault.c
+@@ -114,7 +114,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code,
* If we're in an interrupt or have no user context or are running in an
* atomic region then we must not take the fault..
*/
@@ -126,11 +127,11 @@ Index: linux-3.4/arch/m32r/mm/fault.c
goto bad_area_nosemaphore;
/* When running in the kernel we expect faults to occur only to
-Index: linux-3.4/arch/m68k/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/m68k/mm/fault.c
-+++ linux-3.4/arch/m68k/mm/fault.c
-@@ -84,7 +84,7 @@ int do_page_fault(struct pt_regs *regs,
+diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c
+index 7a4cc68..46b8cce 100644
+--- a/arch/m68k/mm/fault.c
++++ b/arch/m68k/mm/fault.c
+@@ -84,7 +84,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@@ -139,11 +140,11 @@ Index: linux-3.4/arch/m68k/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
-Index: linux-3.4/arch/microblaze/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/microblaze/mm/fault.c
-+++ linux-3.4/arch/microblaze/mm/fault.c
-@@ -106,7 +106,7 @@ void do_page_fault(struct pt_regs *regs,
+diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c
+index 621ad49..a438434 100644
+--- a/arch/microblaze/mm/fault.c
++++ b/arch/microblaze/mm/fault.c
+@@ -106,7 +106,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long address,
if ((error_code & 0x13) == 0x13 || (error_code & 0x11) == 0x11)
is_write = 0;
@@ -152,11 +153,11 @@ Index: linux-3.4/arch/microblaze/mm/fault.c
if (kernel_mode(regs))
goto bad_area_nosemaphore;
-Index: linux-3.4/arch/mips/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/mips/mm/fault.c
-+++ linux-3.4/arch/mips/mm/fault.c
-@@ -89,7 +89,7 @@ asmlinkage void __kprobes do_page_fault(
+diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
+index 3468e69..39a3180 100644
+--- a/arch/mips/mm/fault.c
++++ b/arch/mips/mm/fault.c
+@@ -89,7 +89,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, unsigned long writ
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@@ -165,11 +166,11 @@ Index: linux-3.4/arch/mips/mm/fault.c
goto bad_area_nosemaphore;
retry:
-Index: linux-3.4/arch/mn10300/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/mn10300/mm/fault.c
-+++ linux-3.4/arch/mn10300/mm/fault.c
-@@ -167,7 +167,7 @@ asmlinkage void do_page_fault(struct pt_
+diff --git a/arch/mn10300/mm/fault.c b/arch/mn10300/mm/fault.c
+index ff5acf5..5d9e10f 100644
+--- a/arch/mn10300/mm/fault.c
++++ b/arch/mn10300/mm/fault.c
+@@ -167,7 +167,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long fault_code,
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@@ -178,11 +179,11 @@ Index: linux-3.4/arch/mn10300/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
-Index: linux-3.4/arch/parisc/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/parisc/mm/fault.c
-+++ linux-3.4/arch/parisc/mm/fault.c
-@@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs,
+diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c
+index 09ecc8a..df22f39 100644
+--- a/arch/parisc/mm/fault.c
++++ b/arch/parisc/mm/fault.c
+@@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long code,
unsigned long acc_type;
int fault;
@@ -191,11 +192,11 @@ Index: linux-3.4/arch/parisc/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
-Index: linux-3.4/arch/powerpc/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/powerpc/mm/fault.c
-+++ linux-3.4/arch/powerpc/mm/fault.c
-@@ -261,7 +261,7 @@ int __kprobes do_page_fault(struct pt_re
+diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
+index 6642dff..7bd8f27 100644
+--- a/arch/powerpc/mm/fault.c
++++ b/arch/powerpc/mm/fault.c
+@@ -261,7 +261,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address,
if (!arch_irq_disabled_regs(regs))
local_irq_enable();
@@ -204,11 +205,11 @@ Index: linux-3.4/arch/powerpc/mm/fault.c
if (!user_mode(regs))
return SIGSEGV;
/* in_atomic() in user mode is really bad,
-Index: linux-3.4/arch/s390/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/s390/mm/fault.c
-+++ linux-3.4/arch/s390/mm/fault.c
-@@ -283,8 +283,8 @@ static inline int do_exception(struct pt
+diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
+index f7d796f..e2994cb 100644
+--- a/arch/s390/mm/fault.c
++++ b/arch/s390/mm/fault.c
+@@ -283,8 +283,8 @@ static inline int do_exception(struct pt_regs *regs, int access)
* user context.
*/
fault = VM_FAULT_BADCONTEXT;
@@ -219,7 +220,7 @@ Index: linux-3.4/arch/s390/mm/fault.c
goto out;
address = trans_exc_code & __FAIL_ADDR_MASK;
-@@ -417,7 +417,7 @@ void __kprobes do_asce_exception(struct
+@@ -417,7 +417,7 @@ void __kprobes do_asce_exception(struct pt_regs *regs)
trans_exc_code = regs->int_parm_long;
if (unlikely(!user_space_fault(trans_exc_code) || in_atomic() || !mm ||
@@ -228,11 +229,11 @@ Index: linux-3.4/arch/s390/mm/fault.c
goto no_context;
down_read(&mm->mmap_sem);
-Index: linux-3.4/arch/score/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/score/mm/fault.c
-+++ linux-3.4/arch/score/mm/fault.c
-@@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_
+diff --git a/arch/score/mm/fault.c b/arch/score/mm/fault.c
+index 4c12824..59fccbe 100644
+--- a/arch/score/mm/fault.c
++++ b/arch/score/mm/fault.c
+@@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long write,
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@@ -241,11 +242,11 @@ Index: linux-3.4/arch/score/mm/fault.c
goto bad_area_nosemaphore;
down_read(&mm->mmap_sem);
-Index: linux-3.4/arch/sh/mm/fault_32.c
-===================================================================
---- linux-3.4.orig/arch/sh/mm/fault_32.c
-+++ linux-3.4/arch/sh/mm/fault_32.c
-@@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault(
+diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c
+index 8c3ae42..1aca948 100644
+--- a/arch/sh/mm/fault_32.c
++++ b/arch/sh/mm/fault_32.c
+@@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
* If we're in an interrupt, have no user context or are running
* in an atomic region then we must not take the fault:
*/
@@ -254,11 +255,11 @@ Index: linux-3.4/arch/sh/mm/fault_32.c
goto no_context;
down_read(&mm->mmap_sem);
-Index: linux-3.4/arch/sparc/mm/fault_32.c
-===================================================================
---- linux-3.4.orig/arch/sparc/mm/fault_32.c
-+++ linux-3.4/arch/sparc/mm/fault_32.c
-@@ -248,7 +248,7 @@ asmlinkage void do_sparc_fault(struct pt
+diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
+index ffaa99e..77b37e0 100644
+--- a/arch/sparc/mm/fault_32.c
++++ b/arch/sparc/mm/fault_32.c
+@@ -248,7 +248,7 @@ asmlinkage void do_sparc_fault(struct pt_regs *regs, int text_fault, int write,
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@@ -267,11 +268,11 @@ Index: linux-3.4/arch/sparc/mm/fault_32.c
goto no_context;
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
-Index: linux-3.4/arch/sparc/mm/fault_64.c
-===================================================================
---- linux-3.4.orig/arch/sparc/mm/fault_64.c
-+++ linux-3.4/arch/sparc/mm/fault_64.c
-@@ -323,7 +323,7 @@ asmlinkage void __kprobes do_sparc64_fau
+diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
+index fbd5e11..ea4e14b 100644
+--- a/arch/sparc/mm/fault_64.c
++++ b/arch/sparc/mm/fault_64.c
+@@ -323,7 +323,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
@@ -280,11 +281,11 @@ Index: linux-3.4/arch/sparc/mm/fault_64.c
goto intr_or_no_mm;
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
-Index: linux-3.4/arch/tile/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/tile/mm/fault.c
-+++ linux-3.4/arch/tile/mm/fault.c
-@@ -355,7 +355,7 @@ static int handle_page_fault(struct pt_r
+diff --git a/arch/tile/mm/fault.c b/arch/tile/mm/fault.c
+index f683aad..3e85178 100644
+--- a/arch/tile/mm/fault.c
++++ b/arch/tile/mm/fault.c
+@@ -355,7 +355,7 @@ static int handle_page_fault(struct pt_regs *regs,
* If we're in an interrupt, have no user context or are running in an
* atomic region then we must not take the fault.
*/
@@ -293,11 +294,11 @@ Index: linux-3.4/arch/tile/mm/fault.c
vma = NULL; /* happy compiler */
goto bad_area_nosemaphore;
}
-Index: linux-3.4/arch/um/kernel/trap.c
-===================================================================
---- linux-3.4.orig/arch/um/kernel/trap.c
-+++ linux-3.4/arch/um/kernel/trap.c
-@@ -37,7 +37,7 @@ int handle_page_fault(unsigned long addr
+diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c
+index a283400..7878069 100644
+--- a/arch/um/kernel/trap.c
++++ b/arch/um/kernel/trap.c
+@@ -37,7 +37,7 @@ int handle_page_fault(unsigned long address, unsigned long ip,
* If the fault was during atomic operation, don't take the fault, just
* fail.
*/
@@ -306,11 +307,11 @@ Index: linux-3.4/arch/um/kernel/trap.c
goto out_nosemaphore;
down_read(&mm->mmap_sem);
-Index: linux-3.4/arch/x86/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/x86/mm/fault.c
-+++ linux-3.4/arch/x86/mm/fault.c
-@@ -1094,7 +1094,7 @@ do_page_fault(struct pt_regs *regs, unsi
+diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
+index bb891f2..9d57357 100644
+--- a/arch/x86/mm/fault.c
++++ b/arch/x86/mm/fault.c
+@@ -1094,7 +1094,7 @@ do_page_fault(struct pt_regs *regs, unsigned long error_code)
* If we're in an interrupt, have no user context or are running
* in an atomic region then we must not take the fault:
*/
@@ -319,10 +320,10 @@ Index: linux-3.4/arch/x86/mm/fault.c
bad_area_nosemaphore(regs, error_code, address);
return;
}
-Index: linux-3.4/arch/xtensa/mm/fault.c
-===================================================================
---- linux-3.4.orig/arch/xtensa/mm/fault.c
-+++ linux-3.4/arch/xtensa/mm/fault.c
+diff --git a/arch/xtensa/mm/fault.c b/arch/xtensa/mm/fault.c
+index cc58b7c..93d33ee 100644
+--- a/arch/xtensa/mm/fault.c
++++ b/arch/xtensa/mm/fault.c
@@ -56,7 +56,7 @@ void do_page_fault(struct pt_regs *regs)
/* If we're in an interrupt or have no user
* context, we must not take the fault..
@@ -332,10 +333,10 @@ Index: linux-3.4/arch/xtensa/mm/fault.c
bad_page_fault(regs, address, SIGSEGV);
return;
}
-Index: linux-3.4/include/linux/sched.h
-===================================================================
---- linux-3.4.orig/include/linux/sched.h
-+++ linux-3.4/include/linux/sched.h
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index f0ee37f..f14b965 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
@@ -90,6 +90,7 @@ struct sched_param {
#include <linux/latencytop.h>
#include <linux/cred.h>
@@ -372,11 +373,11 @@ Index: linux-3.4/include/linux/sched.h
/*
* Priority of a process goes from 0..MAX_PRIO-1, valid RT
* priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH
-Index: linux-3.4/kernel/fork.c
-===================================================================
---- linux-3.4.orig/kernel/fork.c
-+++ linux-3.4/kernel/fork.c
-@@ -1263,7 +1263,9 @@ static struct task_struct *copy_process(
+diff --git a/kernel/fork.c b/kernel/fork.c
+index 3cf88ca..abb8ee1 100644
+--- a/kernel/fork.c
++++ b/kernel/fork.c
+@@ -1264,7 +1264,9 @@ static struct task_struct *copy_process(unsigned long clone_flags,
p->hardirq_context = 0;
p->softirq_context = 0;
#endif
@@ -386,3 +387,6 @@ Index: linux-3.4/kernel/fork.c
#ifdef CONFIG_LOCKDEP
p->lockdep_depth = 0; /* no locks held yet */
p->curr_chain_key = 0;
+--
+1.7.10.4
+
diff --git a/patches/peterz-raw_pagefault_disable.patch b/patches/0035-mm-raw_pagefault_disable.patch
index c86310f..ddd17e0 100644
--- a/patches/peterz-raw_pagefault_disable.patch
+++ b/patches/0035-mm-raw_pagefault_disable.patch
@@ -1,6 +1,7 @@
-Subject: mm: raw_pagefault_disable
+From 553ea989ec357e39e82ad297bed66412af5c1f6c Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
-Date: Fri Aug 05 17:16:58 CEST 2011
+Date: Fri, 5 Aug 2011 17:16:58 +0200
+Subject: [PATCH 035/254] mm: raw_pagefault_disable
Adding migrate_disable() to pagefault_disable() to preserve the
per-cpu thing for kmap_atomic might not have been the best of choices.
@@ -70,7 +71,6 @@ that up by adding raw_pagefault_disable().
[<ffffffff814ffb38>] smp_apic_timer_interrupt+0x85/0x98
[<ffffffff814fef13>] apic_timer_interrupt+0x13/0x20
-
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/n/tip-31keae8mkjiv8esq4rl76cib@git.kernel.org
---
@@ -78,10 +78,10 @@ Link: http://lkml.kernel.org/n/tip-31keae8mkjiv8esq4rl76cib@git.kernel.org
mm/memory.c | 2 ++
2 files changed, 30 insertions(+), 2 deletions(-)
-Index: linux-3.4/include/linux/uaccess.h
-===================================================================
---- linux-3.4.orig/include/linux/uaccess.h
-+++ linux-3.4/include/linux/uaccess.h
+diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h
+index 9414a1b..44b3751 100644
+--- a/include/linux/uaccess.h
++++ b/include/linux/uaccess.h
@@ -8,8 +8,34 @@
* These routines enable/disable the pagefault handler in that
* it will not take any MM locks and go straight to the fixup table.
@@ -117,7 +117,7 @@ Index: linux-3.4/include/linux/uaccess.h
#ifndef ARCH_HAS_NOCACHE_UACCESS
-@@ -50,9 +76,9 @@ static inline unsigned long __copy_from_
+@@ -50,9 +76,9 @@ static inline unsigned long __copy_from_user_nocache(void *to,
mm_segment_t old_fs = get_fs(); \
\
set_fs(KERNEL_DS); \
@@ -129,10 +129,10 @@ Index: linux-3.4/include/linux/uaccess.h
set_fs(old_fs); \
ret; \
})
-Index: linux-3.4/mm/memory.c
-===================================================================
---- linux-3.4.orig/mm/memory.c
-+++ linux-3.4/mm/memory.c
+diff --git a/mm/memory.c b/mm/memory.c
+index c3b9c80..e996afe 100644
+--- a/mm/memory.c
++++ b/mm/memory.c
@@ -3467,6 +3467,7 @@ unlock:
return 0;
}
@@ -149,3 +149,6 @@ Index: linux-3.4/mm/memory.c
/*
* By the time we get here, we already hold the mm semaphore
+--
+1.7.10.4
+
diff --git a/patches/filemap-fix-up.patch b/patches/0036-filemap-fix-up.patch.patch
index 1c3b722..11b4470 100644
--- a/patches/filemap-fix-up.patch
+++ b/patches/0036-filemap-fix-up.patch.patch
@@ -1,6 +1,7 @@
-Subject: filemap-fix-up.patch
+From 98cd3c3b2f7fe35ed9c7254c988f4a251f056ca4 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 17 Jun 2011 18:56:24 +0200
+Subject: [PATCH 036/254] filemap-fix-up.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Wrecked-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
@@ -9,11 +10,11 @@ Link: http://lkml.kernel.org/n/tip-m6yuzd6ul717hlnl2gj6p3ou@git.kernel.org
mm/filemap.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/mm/filemap.c
-===================================================================
---- linux-3.4.orig/mm/filemap.c
-+++ linux-3.4/mm/filemap.c
-@@ -2036,7 +2036,7 @@ size_t iov_iter_copy_from_user_atomic(st
+diff --git a/mm/filemap.c b/mm/filemap.c
+index 79c4b2b..51c34c0 100644
+--- a/mm/filemap.c
++++ b/mm/filemap.c
+@@ -2036,7 +2036,7 @@ size_t iov_iter_copy_from_user_atomic(struct page *page,
char *kaddr;
size_t copied;
@@ -22,3 +23,6 @@ Index: linux-3.4/mm/filemap.c
kaddr = kmap_atomic(page);
if (likely(i->nr_segs == 1)) {
int left;
+--
+1.7.10.4
+
diff --git a/patches/mm-remove-preempt-count-from-pf.patch b/patches/0037-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch
index 704087c..55321dc 100644
--- a/patches/mm-remove-preempt-count-from-pf.patch
+++ b/patches/0037-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch
@@ -1,6 +1,8 @@
+From a0b1b75dacc8f22fbf37e565d3db7c89454aec3e Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 25 Jul 2009 22:06:27 +0200
-Subject: mm: Remove preempt count from pagefault disable/enable
+Subject: [PATCH 037/254] mm: Remove preempt count from pagefault
+ disable/enable
Now that all users are cleaned up, we can remove the preemption count.
@@ -9,10 +11,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
mm/memory.c | 7 -------
1 file changed, 7 deletions(-)
-Index: linux-3.4/mm/memory.c
-===================================================================
---- linux-3.4.orig/mm/memory.c
-+++ linux-3.4/mm/memory.c
+diff --git a/mm/memory.c b/mm/memory.c
+index e996afe..346246c 100644
+--- a/mm/memory.c
++++ b/mm/memory.c
@@ -3470,7 +3470,6 @@ unlock:
#ifdef CONFIG_PREEMPT_RT_FULL
void pagefault_disable(void)
@@ -34,3 +36,6 @@ Index: linux-3.4/mm/memory.c
}
EXPORT_SYMBOL_GPL(pagefault_enable);
#endif
+--
+1.7.10.4
+
diff --git a/patches/x86-highmem-warn.patch b/patches/0038-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch
index b02c61b..225faec 100644
--- a/patches/x86-highmem-warn.patch
+++ b/patches/0038-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch
@@ -1,22 +1,22 @@
+From a5cf23df48c82915de83451ee2255b9164277949 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:25 -0500
-Subject: x86: highmem: Replace BUG_ON by WARN_ON
+Subject: [PATCH 038/254] x86: highmem: Replace BUG_ON by WARN_ON
The machine might survive that problem and be at least in a state
which allows us to get more information about the problem.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
arch/x86/mm/highmem_32.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/arch/x86/mm/highmem_32.c
-===================================================================
---- linux-3.4.orig/arch/x86/mm/highmem_32.c
-+++ linux-3.4/arch/x86/mm/highmem_32.c
-@@ -43,7 +43,7 @@ void *kmap_atomic_prot(struct page *page
+diff --git a/arch/x86/mm/highmem_32.c b/arch/x86/mm/highmem_32.c
+index 6f31ee5..ab8683a 100644
+--- a/arch/x86/mm/highmem_32.c
++++ b/arch/x86/mm/highmem_32.c
+@@ -43,7 +43,7 @@ void *kmap_atomic_prot(struct page *page, pgprot_t prot)
type = kmap_atomic_idx_push();
idx = type + KM_TYPE_NR*smp_processor_id();
vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
@@ -25,3 +25,6 @@ Index: linux-3.4/arch/x86/mm/highmem_32.c
set_pte(kmap_pte-idx, mk_pte(page, prot));
arch_flush_lazy_mmu_mode();
+--
+1.7.10.4
+
diff --git a/patches/suspend-prevernt-might-sleep-splats.patch b/patches/0039-suspend-Prevent-might-sleep-splats.patch
index 6912473..604e140 100644
--- a/patches/suspend-prevernt-might-sleep-splats.patch
+++ b/patches/0039-suspend-Prevent-might-sleep-splats.patch
@@ -1,6 +1,7 @@
+From 8b80df877f2719dcc8e2a1edbd4d89978f19676f Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 15 Jul 2010 10:29:00 +0200
-Subject: suspend: Prevent might sleep splats
+Subject: [PATCH 039/254] suspend: Prevent might sleep splats
timekeeping suspend/resume calls read_persistant_clock() which takes
rtc_lock. That results in might sleep warnings because at that point
@@ -16,17 +17,16 @@ and restoring it to SYSTEM_RUNNING afer sysdev_resume().
Needs to be revisited.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
include/linux/kernel.h | 2 +-
kernel/power/hibernate.c | 7 +++++++
kernel/power/suspend.c | 4 ++++
3 files changed, 12 insertions(+), 1 deletion(-)
-Index: linux-3.4/include/linux/kernel.h
-===================================================================
---- linux-3.4.orig/include/linux/kernel.h
-+++ linux-3.4/include/linux/kernel.h
+diff --git a/include/linux/kernel.h b/include/linux/kernel.h
+index 645231c..e43a4a2 100644
+--- a/include/linux/kernel.h
++++ b/include/linux/kernel.h
@@ -374,7 +374,7 @@ extern enum system_states {
SYSTEM_HALT,
SYSTEM_POWER_OFF,
@@ -36,11 +36,11 @@ Index: linux-3.4/include/linux/kernel.h
} system_state;
#define TAINT_PROPRIETARY_MODULE 0
-Index: linux-3.4/kernel/power/hibernate.c
-===================================================================
---- linux-3.4.orig/kernel/power/hibernate.c
-+++ linux-3.4/kernel/power/hibernate.c
-@@ -270,6 +270,8 @@ static int create_image(int platform_mod
+diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
+index e09dfbf..1aa6e1f 100644
+--- a/kernel/power/hibernate.c
++++ b/kernel/power/hibernate.c
+@@ -270,6 +270,8 @@ static int create_image(int platform_mode)
local_irq_disable();
@@ -49,7 +49,7 @@ Index: linux-3.4/kernel/power/hibernate.c
error = syscore_suspend();
if (error) {
printk(KERN_ERR "PM: Some system devices failed to power down, "
-@@ -297,6 +299,7 @@ static int create_image(int platform_mod
+@@ -297,6 +299,7 @@ static int create_image(int platform_mode)
syscore_resume();
Enable_irqs:
@@ -57,7 +57,7 @@ Index: linux-3.4/kernel/power/hibernate.c
local_irq_enable();
Enable_cpus:
-@@ -420,6 +423,7 @@ static int resume_target_kernel(bool pla
+@@ -420,6 +423,7 @@ static int resume_target_kernel(bool platform_mode)
goto Enable_cpus;
local_irq_disable();
@@ -65,7 +65,7 @@ Index: linux-3.4/kernel/power/hibernate.c
error = syscore_suspend();
if (error)
-@@ -453,6 +457,7 @@ static int resume_target_kernel(bool pla
+@@ -453,6 +457,7 @@ static int resume_target_kernel(bool platform_mode)
syscore_resume();
Enable_irqs:
@@ -89,11 +89,11 @@ Index: linux-3.4/kernel/power/hibernate.c
local_irq_enable();
enable_nonboot_cpus();
-Index: linux-3.4/kernel/power/suspend.c
-===================================================================
---- linux-3.4.orig/kernel/power/suspend.c
-+++ linux-3.4/kernel/power/suspend.c
-@@ -164,6 +164,8 @@ static int suspend_enter(suspend_state_t
+diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
+index 396d262..d4fb331 100644
+--- a/kernel/power/suspend.c
++++ b/kernel/power/suspend.c
+@@ -164,6 +164,8 @@ static int suspend_enter(suspend_state_t state, bool *wakeup)
arch_suspend_disable_irqs();
BUG_ON(!irqs_disabled());
@@ -102,7 +102,7 @@ Index: linux-3.4/kernel/power/suspend.c
error = syscore_suspend();
if (!error) {
*wakeup = pm_wakeup_pending();
-@@ -174,6 +176,8 @@ static int suspend_enter(suspend_state_t
+@@ -174,6 +176,8 @@ static int suspend_enter(suspend_state_t state, bool *wakeup)
syscore_resume();
}
@@ -111,3 +111,6 @@ Index: linux-3.4/kernel/power/suspend.c
arch_suspend_enable_irqs();
BUG_ON(irqs_disabled());
+--
+1.7.10.4
+
diff --git a/patches/of-fixup-recursive-locking.patch b/patches/0040-OF-Fixup-resursive-locking-code-paths.patch
index 58d059e..7f338d7 100644
--- a/patches/of-fixup-recursive-locking.patch
+++ b/patches/0040-OF-Fixup-resursive-locking-code-paths.patch
@@ -1,6 +1,7 @@
+From f01b1ae2b9ec653f7e28ec532f95abb09f73fec2 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 13 Aug 2009 09:04:10 +0200
-Subject: OF: Fixup resursive locking code paths
+Subject: [PATCH 040/254] OF: Fixup resursive locking code paths
There is no real reason to use a rwlock for devtree_lock. It even
could be a mutex, but unfortunately it's locked from cpu hotplug
@@ -12,16 +13,15 @@ recursive locking pathes which allows us to convert devtree_lock to a
read_lock.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
- drivers/of/base.c | 93 +++++++++++++++++++++++++++++++++++++++++-------------
+ drivers/of/base.c | 93 ++++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 71 insertions(+), 22 deletions(-)
-Index: linux-3.4/drivers/of/base.c
-===================================================================
---- linux-3.4.orig/drivers/of/base.c
-+++ linux-3.4/drivers/of/base.c
-@@ -163,16 +163,14 @@ void of_node_put(struct device_node *nod
+diff --git a/drivers/of/base.c b/drivers/of/base.c
+index 5806449..043ab4d 100644
+--- a/drivers/of/base.c
++++ b/drivers/of/base.c
+@@ -163,16 +163,14 @@ void of_node_put(struct device_node *node)
EXPORT_SYMBOL(of_node_put);
#endif /* CONFIG_OF_DYNAMIC */
@@ -40,7 +40,7 @@ Index: linux-3.4/drivers/of/base.c
for (pp = np->properties; pp != 0; pp = pp->next) {
if (of_prop_cmp(pp->name, name) == 0) {
if (lenp != 0)
-@@ -180,6 +178,18 @@ struct property *of_find_property(const
+@@ -180,6 +178,18 @@ struct property *of_find_property(const struct device_node *np,
break;
}
}
@@ -99,7 +99,7 @@ Index: linux-3.4/drivers/of/base.c
if (cp == NULL)
return 0;
while (cplen > 0) {
-@@ -244,6 +266,20 @@ int of_device_is_compatible(const struct
+@@ -244,6 +266,20 @@ int of_device_is_compatible(const struct device_node *device,
return 0;
}
@@ -120,7 +120,7 @@ Index: linux-3.4/drivers/of/base.c
EXPORT_SYMBOL(of_device_is_compatible);
/**
-@@ -467,7 +503,8 @@ struct device_node *of_find_compatible_n
+@@ -467,7 +503,8 @@ struct device_node *of_find_compatible_node(struct device_node *from,
if (type
&& !(np->type && (of_node_cmp(np->type, type) == 0)))
continue;
@@ -149,7 +149,7 @@ Index: linux-3.4/drivers/of/base.c
{
if (!matches)
return NULL;
-@@ -533,14 +564,32 @@ const struct of_device_id *of_match_node
+@@ -533,14 +564,32 @@ const struct of_device_id *of_match_node(const struct of_device_id *matches,
match &= node->type
&& !strcmp(matches->type, node->type);
if (matches->compatible[0])
@@ -184,7 +184,7 @@ Index: linux-3.4/drivers/of/base.c
EXPORT_SYMBOL(of_match_node);
/**
-@@ -563,7 +612,7 @@ struct device_node *of_find_matching_nod
+@@ -563,7 +612,7 @@ struct device_node *of_find_matching_node(struct device_node *from,
read_lock(&devtree_lock);
np = from ? from->allnext : allnodes;
for (; np; np = np->allnext) {
@@ -193,3 +193,6 @@ Index: linux-3.4/drivers/of/base.c
break;
}
of_node_put(from);
+--
+1.7.10.4
+
diff --git a/patches/of-convert-devtree-lock.patch b/patches/0041-of-convert-devtree-lock.patch.patch
index 865a78d..097ebce 100644
--- a/patches/of-convert-devtree-lock.patch
+++ b/patches/0041-of-convert-devtree-lock.patch.patch
@@ -1,19 +1,20 @@
-Subject: of-convert-devtree-lock.patch
+From 5e5ec47382179d199e09d55ae62f25d90949702f Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 21 Mar 2011 14:35:34 +0100
+Subject: [PATCH 041/254] of-convert-devtree-lock.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- arch/sparc/kernel/prom_common.c | 4 -
- drivers/of/base.c | 92 ++++++++++++++++++++++------------------
- include/linux/of.h | 2
+ arch/sparc/kernel/prom_common.c | 4 +-
+ drivers/of/base.c | 92 ++++++++++++++++++++++-----------------
+ include/linux/of.h | 2 +-
3 files changed, 55 insertions(+), 43 deletions(-)
-Index: linux-3.4/arch/sparc/kernel/prom_common.c
-===================================================================
---- linux-3.4.orig/arch/sparc/kernel/prom_common.c
-+++ linux-3.4/arch/sparc/kernel/prom_common.c
-@@ -65,7 +65,7 @@ int of_set_property(struct device_node *
+diff --git a/arch/sparc/kernel/prom_common.c b/arch/sparc/kernel/prom_common.c
+index 741df91..ca73a28 100644
+--- a/arch/sparc/kernel/prom_common.c
++++ b/arch/sparc/kernel/prom_common.c
+@@ -65,7 +65,7 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len
err = -ENODEV;
mutex_lock(&of_set_property_mutex);
@@ -22,7 +23,7 @@ Index: linux-3.4/arch/sparc/kernel/prom_common.c
prevp = &dp->properties;
while (*prevp) {
struct property *prop = *prevp;
-@@ -92,7 +92,7 @@ int of_set_property(struct device_node *
+@@ -92,7 +92,7 @@ int of_set_property(struct device_node *dp, const char *name, void *val, int len
}
prevp = &(*prevp)->next;
}
@@ -31,10 +32,10 @@ Index: linux-3.4/arch/sparc/kernel/prom_common.c
mutex_unlock(&of_set_property_mutex);
/* XXX Upate procfs if necessary... */
-Index: linux-3.4/drivers/of/base.c
-===================================================================
---- linux-3.4.orig/drivers/of/base.c
-+++ linux-3.4/drivers/of/base.c
+diff --git a/drivers/of/base.c b/drivers/of/base.c
+index 043ab4d..b385c39 100644
+--- a/drivers/of/base.c
++++ b/drivers/of/base.c
@@ -54,7 +54,7 @@ static DEFINE_MUTEX(of_aliases_mutex);
/* use when traversing tree through the allnext, child, sibling,
* or parent members of struct device_node.
@@ -44,7 +45,7 @@ Index: linux-3.4/drivers/of/base.c
int of_n_addr_cells(struct device_node *np)
{
-@@ -187,10 +187,11 @@ struct property *of_find_property(const
+@@ -187,10 +187,11 @@ struct property *of_find_property(const struct device_node *np,
int *lenp)
{
struct property *pp;
@@ -58,7 +59,7 @@ Index: linux-3.4/drivers/of/base.c
return pp;
}
-@@ -208,13 +209,13 @@ struct device_node *of_find_all_nodes(st
+@@ -208,13 +209,13 @@ struct device_node *of_find_all_nodes(struct device_node *prev)
{
struct device_node *np;
@@ -74,7 +75,7 @@ Index: linux-3.4/drivers/of/base.c
return np;
}
EXPORT_SYMBOL(of_find_all_nodes);
-@@ -273,11 +274,12 @@ static int __of_device_is_compatible(con
+@@ -273,11 +274,12 @@ static int __of_device_is_compatible(const struct device_node *device,
int of_device_is_compatible(const struct device_node *device,
const char *compat)
{
@@ -124,7 +125,7 @@ Index: linux-3.4/drivers/of/base.c
return parent;
}
-@@ -387,14 +391,15 @@ struct device_node *of_get_next_child(co
+@@ -387,14 +391,15 @@ struct device_node *of_get_next_child(const struct device_node *node,
struct device_node *prev)
{
struct device_node *next;
@@ -160,7 +161,7 @@ Index: linux-3.4/drivers/of/base.c
return np;
}
EXPORT_SYMBOL(of_find_node_by_path);
-@@ -436,15 +442,16 @@ struct device_node *of_find_node_by_name
+@@ -436,15 +442,16 @@ struct device_node *of_find_node_by_name(struct device_node *from,
const char *name)
{
struct device_node *np;
@@ -179,7 +180,7 @@ Index: linux-3.4/drivers/of/base.c
return np;
}
EXPORT_SYMBOL(of_find_node_by_name);
-@@ -465,15 +472,16 @@ struct device_node *of_find_node_by_type
+@@ -465,15 +472,16 @@ struct device_node *of_find_node_by_type(struct device_node *from,
const char *type)
{
struct device_node *np;
@@ -198,7 +199,7 @@ Index: linux-3.4/drivers/of/base.c
return np;
}
EXPORT_SYMBOL(of_find_node_by_type);
-@@ -496,8 +504,9 @@ struct device_node *of_find_compatible_n
+@@ -496,8 +504,9 @@ struct device_node *of_find_compatible_node(struct device_node *from,
const char *type, const char *compatible)
{
struct device_node *np;
@@ -209,7 +210,7 @@ Index: linux-3.4/drivers/of/base.c
np = from ? from->allnext : allnodes;
for (; np; np = np->allnext) {
if (type
-@@ -508,7 +517,7 @@ struct device_node *of_find_compatible_n
+@@ -508,7 +517,7 @@ struct device_node *of_find_compatible_node(struct device_node *from,
break;
}
of_node_put(from);
@@ -218,7 +219,7 @@ Index: linux-3.4/drivers/of/base.c
return np;
}
EXPORT_SYMBOL(of_find_compatible_node);
-@@ -530,8 +539,9 @@ struct device_node *of_find_node_with_pr
+@@ -530,8 +539,9 @@ struct device_node *of_find_node_with_property(struct device_node *from,
{
struct device_node *np;
struct property *pp;
@@ -229,7 +230,7 @@ Index: linux-3.4/drivers/of/base.c
np = from ? from->allnext : allnodes;
for (; np; np = np->allnext) {
for (pp = np->properties; pp != 0; pp = pp->next) {
-@@ -543,7 +553,7 @@ struct device_node *of_find_node_with_pr
+@@ -543,7 +553,7 @@ struct device_node *of_find_node_with_property(struct device_node *from,
}
out:
of_node_put(from);
@@ -238,7 +239,7 @@ Index: linux-3.4/drivers/of/base.c
return np;
}
EXPORT_SYMBOL(of_find_node_with_property);
-@@ -584,10 +594,11 @@ const struct of_device_id *of_match_node
+@@ -584,10 +594,11 @@ const struct of_device_id *of_match_node(const struct of_device_id *matches,
const struct device_node *node)
{
const struct of_device_id *match;
@@ -252,7 +253,7 @@ Index: linux-3.4/drivers/of/base.c
return match;
}
EXPORT_SYMBOL(of_match_node);
-@@ -608,15 +619,16 @@ struct device_node *of_find_matching_nod
+@@ -608,15 +619,16 @@ struct device_node *of_find_matching_node(struct device_node *from,
const struct of_device_id *matches)
{
struct device_node *np;
@@ -271,7 +272,7 @@ Index: linux-3.4/drivers/of/base.c
return np;
}
EXPORT_SYMBOL(of_find_matching_node);
-@@ -659,12 +671,12 @@ struct device_node *of_find_node_by_phan
+@@ -659,12 +671,12 @@ struct device_node *of_find_node_by_phandle(phandle handle)
{
struct device_node *np;
@@ -286,7 +287,7 @@ Index: linux-3.4/drivers/of/base.c
return np;
}
EXPORT_SYMBOL(of_find_node_by_phandle);
-@@ -1036,18 +1048,18 @@ int prom_add_property(struct device_node
+@@ -1036,18 +1048,18 @@ int prom_add_property(struct device_node *np, struct property *prop)
unsigned long flags;
prop->next = NULL;
@@ -308,7 +309,7 @@ Index: linux-3.4/drivers/of/base.c
#ifdef CONFIG_PROC_DEVICETREE
/* try to add to proc as well if it was initialized */
-@@ -1072,7 +1084,7 @@ int prom_remove_property(struct device_n
+@@ -1072,7 +1084,7 @@ int prom_remove_property(struct device_node *np, struct property *prop)
unsigned long flags;
int found = 0;
@@ -317,7 +318,7 @@ Index: linux-3.4/drivers/of/base.c
next = &np->properties;
while (*next) {
if (*next == prop) {
-@@ -1085,7 +1097,7 @@ int prom_remove_property(struct device_n
+@@ -1085,7 +1097,7 @@ int prom_remove_property(struct device_node *np, struct property *prop)
}
next = &(*next)->next;
}
@@ -326,7 +327,7 @@ Index: linux-3.4/drivers/of/base.c
if (!found)
return -ENODEV;
-@@ -1115,7 +1127,7 @@ int prom_update_property(struct device_n
+@@ -1115,7 +1127,7 @@ int prom_update_property(struct device_node *np,
unsigned long flags;
int found = 0;
@@ -335,7 +336,7 @@ Index: linux-3.4/drivers/of/base.c
next = &np->properties;
while (*next) {
if (*next == oldprop) {
-@@ -1129,7 +1141,7 @@ int prom_update_property(struct device_n
+@@ -1129,7 +1141,7 @@ int prom_update_property(struct device_node *np,
}
next = &(*next)->next;
}
@@ -344,7 +345,7 @@ Index: linux-3.4/drivers/of/base.c
if (!found)
return -ENODEV;
-@@ -1159,12 +1171,12 @@ void of_attach_node(struct device_node *
+@@ -1159,12 +1171,12 @@ void of_attach_node(struct device_node *np)
{
unsigned long flags;
@@ -359,7 +360,7 @@ Index: linux-3.4/drivers/of/base.c
}
/**
-@@ -1178,7 +1190,7 @@ void of_detach_node(struct device_node *
+@@ -1178,7 +1190,7 @@ void of_detach_node(struct device_node *np)
struct device_node *parent;
unsigned long flags;
@@ -368,7 +369,7 @@ Index: linux-3.4/drivers/of/base.c
parent = np->parent;
if (!parent)
-@@ -1209,7 +1221,7 @@ void of_detach_node(struct device_node *
+@@ -1209,7 +1221,7 @@ void of_detach_node(struct device_node *np)
of_node_set_flag(np, OF_DETACHED);
out_unlock:
@@ -377,11 +378,11 @@ Index: linux-3.4/drivers/of/base.c
}
#endif /* defined(CONFIG_OF_DYNAMIC) */
-Index: linux-3.4/include/linux/of.h
-===================================================================
---- linux-3.4.orig/include/linux/of.h
-+++ linux-3.4/include/linux/of.h
-@@ -90,7 +90,7 @@ static inline void of_node_put(struct de
+diff --git a/include/linux/of.h b/include/linux/of.h
+index fa7fb1d..a7a948f 100644
+--- a/include/linux/of.h
++++ b/include/linux/of.h
+@@ -90,7 +90,7 @@ static inline void of_node_put(struct device_node *node) { }
extern struct device_node *allnodes;
extern struct device_node *of_chosen;
extern struct device_node *of_aliases;
@@ -390,3 +391,6 @@ Index: linux-3.4/include/linux/of.h
static inline bool of_have_populated_dt(void)
{
+--
+1.7.10.4
+
diff --git a/patches/list-add-list-last-entry.patch b/patches/0042-list-add-list-last-entry.patch.patch
index a1442d8..12fda09 100644
--- a/patches/list-add-list-last-entry.patch
+++ b/patches/0042-list-add-list-last-entry.patch.patch
@@ -1,17 +1,18 @@
-Subject: list-add-list-last-entry.patch
+From a73dad78e89f1d82cdbe500b155e410342cc65cb Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <peterz@infradead.org>
Date: Tue, 21 Jun 2011 11:22:36 +0200
+Subject: [PATCH 042/254] list-add-list-last-entry.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/list.h | 11 +++++++++++
1 file changed, 11 insertions(+)
-Index: linux-3.4/include/linux/list.h
-===================================================================
---- linux-3.4.orig/include/linux/list.h
-+++ linux-3.4/include/linux/list.h
-@@ -362,6 +362,17 @@ static inline void list_splice_tail_init
+diff --git a/include/linux/list.h b/include/linux/list.h
+index cc6d2aa..7a9851b 100644
+--- a/include/linux/list.h
++++ b/include/linux/list.h
+@@ -362,6 +362,17 @@ static inline void list_splice_tail_init(struct list_head *list,
list_entry((ptr)->next, type, member)
/**
@@ -29,3 +30,6 @@ Index: linux-3.4/include/linux/list.h
* list_for_each - iterate over a list
* @pos: the &struct list_head to use as a loop cursor.
* @head: the head for your list.
+--
+1.7.10.4
+
diff --git a/patches/mm-page-alloc-use-list-last-entry.patch b/patches/0043-mm-page-alloc-use-list-last-entry.patch.patch
index 99caee2..4c2b5b0 100644
--- a/patches/mm-page-alloc-use-list-last-entry.patch
+++ b/patches/0043-mm-page-alloc-use-list-last-entry.patch.patch
@@ -1,17 +1,18 @@
-Subject: mm-page-alloc-use-list-last-entry.patch
+From 3944f861ab7abd40a668ed443745bdea63e4fb5c Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <peterz@infradead.org>
Date: Tue, 21 Jun 2011 11:24:35 +0200
+Subject: [PATCH 043/254] mm-page-alloc-use-list-last-entry.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
mm/page_alloc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/mm/page_alloc.c
-===================================================================
---- linux-3.4.orig/mm/page_alloc.c
-+++ linux-3.4/mm/page_alloc.c
-@@ -663,7 +663,7 @@ static void free_pcppages_bulk(struct zo
+diff --git a/mm/page_alloc.c b/mm/page_alloc.c
+index 918330f..b27e8cb 100644
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
+@@ -663,7 +663,7 @@ static void free_pcppages_bulk(struct zone *zone, int count,
batch_free = to_free;
do {
@@ -20,3 +21,6 @@ Index: linux-3.4/mm/page_alloc.c
/* must delete as __free_one_page list manipulates */
list_del(&page->lru);
/* MIGRATE_MOVABLE list may include MIGRATE_RESERVEs */
+--
+1.7.10.4
+
diff --git a/patches/mm-slab-move-debug-out.patch b/patches/0044-mm-slab-move-debug-out.patch.patch
index 6071f1e..a1502a1 100644
--- a/patches/mm-slab-move-debug-out.patch
+++ b/patches/0044-mm-slab-move-debug-out.patch.patch
@@ -1,17 +1,18 @@
-Subject: mm-slab-move-debug-out.patch
+From c33ed189e590d1072fe66cf758bbbc7d306235a1 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 20 Jun 2011 10:42:04 +0200
+Subject: [PATCH 044/254] mm-slab-move-debug-out.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
mm/slab.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-Index: linux-3.4/mm/slab.c
-===================================================================
---- linux-3.4.orig/mm/slab.c
-+++ linux-3.4/mm/slab.c
-@@ -3919,10 +3919,10 @@ void kmem_cache_free(struct kmem_cache *
+diff --git a/mm/slab.c b/mm/slab.c
+index 1fd4b4d..80c57f9 100644
+--- a/mm/slab.c
++++ b/mm/slab.c
+@@ -3919,10 +3919,10 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp)
{
unsigned long flags;
@@ -36,3 +37,6 @@ Index: linux-3.4/mm/slab.c
__cache_free(c, (void *)objp, __builtin_return_address(0));
local_irq_restore(flags);
}
+--
+1.7.10.4
+
diff --git a/patches/pid-h-include-atomic-h.patch b/patches/0045-rwsem-inlcude-fix.patch.patch
index 324444e..73032c5 100644
--- a/patches/pid-h-include-atomic-h.patch
+++ b/patches/0045-rwsem-inlcude-fix.patch.patch
@@ -1,16 +1,17 @@
-Subject: rwsem-inlcude-fix.patch
+From 48b4e0b753320b63c63a9bab2f454a48e228a1d0 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 15 Jul 2011 21:24:27 +0200
+Subject: [PATCH 045/254] rwsem-inlcude-fix.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/pid.h | 1 +
1 file changed, 1 insertion(+)
-Index: linux-3.4/include/linux/pid.h
-===================================================================
---- linux-3.4.orig/include/linux/pid.h
-+++ linux-3.4/include/linux/pid.h
+diff --git a/include/linux/pid.h b/include/linux/pid.h
+index b152d44..7f33683 100644
+--- a/include/linux/pid.h
++++ b/include/linux/pid.h
@@ -2,6 +2,7 @@
#define _LINUX_PID_H
@@ -19,3 +20,6 @@ Index: linux-3.4/include/linux/pid.h
enum pid_type
{
+--
+1.7.10.4
+
diff --git a/patches/sysctl-include-atomic-h.patch b/patches/0046-sysctl-include-fix.patch.patch
index 6987ea7..c07cb4b 100644
--- a/patches/sysctl-include-atomic-h.patch
+++ b/patches/0046-sysctl-include-fix.patch.patch
@@ -1,16 +1,17 @@
-Subject: sysctl-include-fix.patch
+From 8fd6c7ba623225a082aab90fc9ea1f6808661dd9 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 14 Nov 2011 10:52:34 +0100
+Subject: [PATCH 046/254] sysctl-include-fix.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/sysctl.h | 1 +
1 file changed, 1 insertion(+)
-Index: linux-3.4/include/linux/sysctl.h
-===================================================================
---- linux-3.4.orig/include/linux/sysctl.h
-+++ linux-3.4/include/linux/sysctl.h
+diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
+index c34b4c8..4fbc9f7 100644
+--- a/include/linux/sysctl.h
++++ b/include/linux/sysctl.h
@@ -933,6 +933,7 @@ enum
#include <linux/rcupdate.h>
#include <linux/wait.h>
@@ -19,3 +20,6 @@ Index: linux-3.4/include/linux/sysctl.h
/* For the /proc/sys support */
struct ctl_table;
+--
+1.7.10.4
+
diff --git a/patches/net-flip-lock-dep-thingy.patch b/patches/0047-net-flip-lock-dep-thingy.patch.patch
index 68d5ab6..30b88d2 100644
--- a/patches/net-flip-lock-dep-thingy.patch
+++ b/patches/0047-net-flip-lock-dep-thingy.patch.patch
@@ -1,6 +1,7 @@
-Subject: net-flip-lock-dep-thingy.patch
+From cacd5a79d79d282d24d7a87f9b1d530127632f5d Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Jun 2011 10:59:58 +0200
+Subject: [PATCH 047/254] net-flip-lock-dep-thingy.patch
=======================================================
[ INFO: possible circular locking dependency detected ]
@@ -14,7 +15,6 @@ but task is already holding lock:
which lock already depends on the new lock.
-
the existing dependency chain (in reverse order) is:
-> #1 (sk_lock-AF_INET){+.+...}:
@@ -87,17 +87,16 @@ Call Trace:
[<ffffffff8112667a>] sys_close+0xf8/0x13d
[<ffffffff814ae882>] system_call_fastpath+0x16/0x1b
-
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
net/core/sock.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
-Index: linux-3.4/net/core/sock.c
-===================================================================
---- linux-3.4.orig/net/core/sock.c
-+++ linux-3.4/net/core/sock.c
-@@ -2139,12 +2139,11 @@ void lock_sock_nested(struct sock *sk, i
+diff --git a/net/core/sock.c b/net/core/sock.c
+index b2e14c0..5cd7df1 100644
+--- a/net/core/sock.c
++++ b/net/core/sock.c
+@@ -2139,12 +2139,11 @@ void lock_sock_nested(struct sock *sk, int subclass)
if (sk->sk_lock.owned)
__lock_sock(sk);
sk->sk_lock.owned = 1;
@@ -111,3 +110,6 @@ Index: linux-3.4/net/core/sock.c
}
EXPORT_SYMBOL(lock_sock_nested);
+--
+1.7.10.4
+
diff --git a/patches/softirq-thread-do-softirq.patch b/patches/0048-softirq-thread-do-softirq.patch.patch
index 418233d..c4f18ff 100644
--- a/patches/softirq-thread-do-softirq.patch
+++ b/patches/0048-softirq-thread-do-softirq.patch.patch
@@ -1,6 +1,7 @@
-Subject: softirq-thread-do-softirq.patch
+From 76d8d8710436e2fc5fa780ddaa1cc472a0778f7e Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Jun 2011 15:44:15 +0200
+Subject: [PATCH 048/254] softirq-thread-do-softirq.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
net/core/dev.c | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
-Index: linux-3.4/include/linux/interrupt.h
-===================================================================
---- linux-3.4.orig/include/linux/interrupt.h
-+++ linux-3.4/include/linux/interrupt.h
+diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
+index 2aea5d2..02c3c4f 100644
+--- a/include/linux/interrupt.h
++++ b/include/linux/interrupt.h
@@ -452,6 +452,7 @@ struct softirq_action
asmlinkage void do_softirq(void);
@@ -20,11 +21,11 @@ Index: linux-3.4/include/linux/interrupt.h
extern void open_softirq(int nr, void (*action)(struct softirq_action *));
extern void softirq_init(void);
extern void __raise_softirq_irqoff(unsigned int nr);
-Index: linux-3.4/net/core/dev.c
-===================================================================
---- linux-3.4.orig/net/core/dev.c
-+++ linux-3.4/net/core/dev.c
-@@ -2989,7 +2989,7 @@ int netif_rx_ni(struct sk_buff *skb)
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 99e1d75..ca7a845 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -2963,7 +2963,7 @@ int netif_rx_ni(struct sk_buff *skb)
preempt_disable();
err = netif_rx(skb);
if (local_softirq_pending())
@@ -33,3 +34,6 @@ Index: linux-3.4/net/core/dev.c
preempt_enable();
return err;
+--
+1.7.10.4
+
diff --git a/patches/softirq-split-out-code.patch b/patches/0049-softirq-split-out-code.patch.patch
index 5f8477a..35879f9 100644
--- a/patches/softirq-split-out-code.patch
+++ b/patches/0049-softirq-split-out-code.patch.patch
@@ -1,16 +1,17 @@
-Subject: softirq-split-out-code.patch
+From ffb21c18a54a7889c6a2640efd4aaccf1fc7f8da Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Jun 2011 15:46:49 +0200
+Subject: [PATCH 049/254] softirq-split-out-code.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- kernel/softirq.c | 94 ++++++++++++++++++++++++++++++-------------------------
+ kernel/softirq.c | 94 ++++++++++++++++++++++++++++++------------------------
1 file changed, 52 insertions(+), 42 deletions(-)
-Index: linux-3.4/kernel/softirq.c
-===================================================================
---- linux-3.4.orig/kernel/softirq.c
-+++ linux-3.4/kernel/softirq.c
+diff --git a/kernel/softirq.c b/kernel/softirq.c
+index 671f959..6ec3a78 100644
+--- a/kernel/softirq.c
++++ b/kernel/softirq.c
@@ -76,6 +76,34 @@ static void wakeup_softirqd(void)
wake_up_process(tsk);
}
@@ -128,7 +129,7 @@ Index: linux-3.4/kernel/softirq.c
#ifndef __ARCH_HAS_DO_SOFTIRQ
asmlinkage void do_softirq(void)
-@@ -739,22 +757,14 @@ static int run_ksoftirqd(void * __bind_c
+@@ -739,22 +757,14 @@ static int run_ksoftirqd(void * __bind_cpu)
while (!kthread_should_stop()) {
preempt_disable();
@@ -153,3 +154,6 @@ Index: linux-3.4/kernel/softirq.c
sched_preempt_enable_no_resched();
cond_resched();
preempt_disable();
+--
+1.7.10.4
+
diff --git a/patches/x86-io-apic-migra-no-unmask.patch b/patches/0050-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch
index 81be43a..b5e2d31 100644
--- a/patches/x86-io-apic-migra-no-unmask.patch
+++ b/patches/0050-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch
@@ -1,21 +1,22 @@
+From e352c307c885c719577a2bdb99cb8fbd75718cc5 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:27 -0500
-Subject: x86: Do not unmask io_apic when interrupt is in progress
+Subject: [PATCH 050/254] x86: Do not unmask io_apic when interrupt is in
+ progress
With threaded interrupts we might see an interrupt in progress on
migration. Do not unmask it when this is the case.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
arch/x86/kernel/apic/io_apic.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-Index: linux-3.4/arch/x86/kernel/apic/io_apic.c
-===================================================================
---- linux-3.4.orig/arch/x86/kernel/apic/io_apic.c
-+++ linux-3.4/arch/x86/kernel/apic/io_apic.c
+diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
+index e88300d..01c76a0 100644
+--- a/arch/x86/kernel/apic/io_apic.c
++++ b/arch/x86/kernel/apic/io_apic.c
@@ -2555,7 +2555,8 @@ atomic_t irq_mis_count;
static inline bool ioapic_irqd_mask(struct irq_data *data, struct irq_cfg *cfg)
{
@@ -26,3 +27,6 @@ Index: linux-3.4/arch/x86/kernel/apic/io_apic.c
mask_ioapic(cfg);
return true;
}
+--
+1.7.10.4
+
diff --git a/patches/fix-rt-int3-x86_32-3.2-rt.patch b/patches/0051-x86-Do-not-disable-preemption-in-int3-on-32bit.patch
index 3aa2912..d374454 100644
--- a/patches/fix-rt-int3-x86_32-3.2-rt.patch
+++ b/patches/0051-x86-Do-not-disable-preemption-in-int3-on-32bit.patch
@@ -1,5 +1,7 @@
-Subject: x86: Do not disable preemption in int3 on 32bit
+From 8c0510d9e34c4e79b77b2c85940ecc9c9007b5a3 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <rostedt@goodmis.org>
+Date: Thu, 7 Jun 2012 07:46:49 -0400
+Subject: [PATCH 051/254] x86: Do not disable preemption in int3 on 32bit
Preemption must be disabled before enabling interrupts in do_trap
on x86_64 because the stack in use for int3 and debug is a per CPU
@@ -17,16 +19,15 @@ when the stack is on the IST.
Cc: stable-rt@vger.kernel.org
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
arch/x86/kernel/traps.c | 32 +++++++++++++++++++++++---------
1 file changed, 23 insertions(+), 9 deletions(-)
-Index: linux-3.4/arch/x86/kernel/traps.c
-===================================================================
---- linux-3.4.orig/arch/x86/kernel/traps.c
-+++ linux-3.4/arch/x86/kernel/traps.c
-@@ -87,9 +87,21 @@ static inline void conditional_sti(struc
+diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
+index ff9281f1..0b01977 100644
+--- a/arch/x86/kernel/traps.c
++++ b/arch/x86/kernel/traps.c
+@@ -87,9 +87,21 @@ static inline void conditional_sti(struct pt_regs *regs)
local_irq_enable();
}
@@ -49,7 +50,7 @@ Index: linux-3.4/arch/x86/kernel/traps.c
if (regs->flags & X86_EFLAGS_IF)
local_irq_enable();
}
-@@ -100,11 +112,13 @@ static inline void conditional_cli(struc
+@@ -100,11 +112,13 @@ static inline void conditional_cli(struct pt_regs *regs)
local_irq_disable();
}
@@ -64,7 +65,7 @@ Index: linux-3.4/arch/x86/kernel/traps.c
}
static void __kprobes
-@@ -226,9 +240,9 @@ dotraplinkage void do_stack_segment(stru
+@@ -226,9 +240,9 @@ dotraplinkage void do_stack_segment(struct pt_regs *regs, long error_code)
if (notify_die(DIE_TRAP, "stack segment", regs, error_code,
X86_TRAP_SS, SIGBUS) == NOTIFY_STOP)
return;
@@ -76,7 +77,7 @@ Index: linux-3.4/arch/x86/kernel/traps.c
}
dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code)
-@@ -320,9 +334,9 @@ dotraplinkage void __kprobes do_int3(str
+@@ -320,9 +334,9 @@ dotraplinkage void __kprobes do_int3(struct pt_regs *regs, long error_code)
* as we may switch to the interrupt stack.
*/
debug_stack_usage_inc();
@@ -88,7 +89,7 @@ Index: linux-3.4/arch/x86/kernel/traps.c
debug_stack_usage_dec();
}
-@@ -423,12 +437,12 @@ dotraplinkage void __kprobes do_debug(st
+@@ -423,12 +437,12 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
debug_stack_usage_inc();
/* It's safe to allow irq's after DR6 has been saved */
@@ -103,7 +104,7 @@ Index: linux-3.4/arch/x86/kernel/traps.c
debug_stack_usage_dec();
return;
}
-@@ -448,7 +462,7 @@ dotraplinkage void __kprobes do_debug(st
+@@ -448,7 +462,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
si_code = get_si_code(tsk->thread.debugreg6);
if (tsk->thread.debugreg6 & (DR_STEP | DR_TRAP_BITS) || user_icebp)
send_sigtrap(tsk, regs, error_code, si_code);
@@ -112,3 +113,6 @@ Index: linux-3.4/arch/x86/kernel/traps.c
debug_stack_usage_dec();
return;
+--
+1.7.10.4
+
diff --git a/patches/locking-various-init-fixes.patch b/patches/0052-locking-various-init-fixes.patch.patch
index 358eec4..e32cc62 100644
--- a/patches/locking-various-init-fixes.patch
+++ b/patches/0052-locking-various-init-fixes.patch.patch
@@ -1,6 +1,7 @@
-Subject: locking-various-init-fixes.patch
+From 49a09a9221c57b4d68163423c5f9cc14a85812e6 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 17 Jul 2011 21:25:03 +0200
+Subject: [PATCH 052/254] locking-various-init-fixes.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -11,11 +12,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/cred.c | 2 +-
5 files changed, 7 insertions(+), 7 deletions(-)
-Index: linux-3.4/drivers/char/random.c
-===================================================================
---- linux-3.4.orig/drivers/char/random.c
-+++ linux-3.4/drivers/char/random.c
-@@ -433,7 +433,7 @@ static struct entropy_store input_pool =
+diff --git a/drivers/char/random.c b/drivers/char/random.c
+index 1e37cf4..85b9419b1 100644
+--- a/drivers/char/random.c
++++ b/drivers/char/random.c
+@@ -433,7 +433,7 @@ static struct entropy_store input_pool = {
.poolinfo = &poolinfo_table[0],
.name = "input",
.limit = 1,
@@ -24,7 +25,7 @@ Index: linux-3.4/drivers/char/random.c
.pool = input_pool_data
};
-@@ -442,7 +442,7 @@ static struct entropy_store blocking_poo
+@@ -442,7 +442,7 @@ static struct entropy_store blocking_pool = {
.name = "blocking",
.limit = 1,
.pull = &input_pool,
@@ -33,7 +34,7 @@ Index: linux-3.4/drivers/char/random.c
.pool = blocking_pool_data
};
-@@ -450,7 +450,7 @@ static struct entropy_store nonblocking_
+@@ -450,7 +450,7 @@ static struct entropy_store nonblocking_pool = {
.poolinfo = &poolinfo_table[1],
.name = "nonblocking",
.pull = &input_pool,
@@ -42,10 +43,10 @@ Index: linux-3.4/drivers/char/random.c
.pool = nonblocking_pool_data
};
-Index: linux-3.4/drivers/usb/gadget/ci13xxx_udc.c
-===================================================================
---- linux-3.4.orig/drivers/usb/gadget/ci13xxx_udc.c
-+++ linux-3.4/drivers/usb/gadget/ci13xxx_udc.c
+diff --git a/drivers/usb/gadget/ci13xxx_udc.c b/drivers/usb/gadget/ci13xxx_udc.c
+index 243ef1a..238372e 100644
+--- a/drivers/usb/gadget/ci13xxx_udc.c
++++ b/drivers/usb/gadget/ci13xxx_udc.c
@@ -834,7 +834,7 @@ static struct {
} dbg_data = {
.idx = 0,
@@ -55,10 +56,10 @@ Index: linux-3.4/drivers/usb/gadget/ci13xxx_udc.c
};
/**
-Index: linux-3.4/fs/file.c
-===================================================================
---- linux-3.4.orig/fs/file.c
-+++ linux-3.4/fs/file.c
+diff --git a/fs/file.c b/fs/file.c
+index ba3f605..6f176f5 100644
+--- a/fs/file.c
++++ b/fs/file.c
@@ -421,7 +421,7 @@ struct files_struct init_files = {
.close_on_exec = init_files.close_on_exec_init,
.open_fds = init_files.open_fds_init,
@@ -68,10 +69,10 @@ Index: linux-3.4/fs/file.c
};
/*
-Index: linux-3.4/include/linux/idr.h
-===================================================================
---- linux-3.4.orig/include/linux/idr.h
-+++ linux-3.4/include/linux/idr.h
+diff --git a/include/linux/idr.h b/include/linux/idr.h
+index 255491c..4eaacf0 100644
+--- a/include/linux/idr.h
++++ b/include/linux/idr.h
@@ -136,7 +136,7 @@ struct ida {
struct ida_bitmap *free_bitmap;
};
@@ -81,10 +82,10 @@ Index: linux-3.4/include/linux/idr.h
#define DEFINE_IDA(name) struct ida name = IDA_INIT(name)
int ida_pre_get(struct ida *ida, gfp_t gfp_mask);
-Index: linux-3.4/kernel/cred.c
-===================================================================
---- linux-3.4.orig/kernel/cred.c
-+++ linux-3.4/kernel/cred.c
+diff --git a/kernel/cred.c b/kernel/cred.c
+index e70683d..fed7c3f 100644
+--- a/kernel/cred.c
++++ b/kernel/cred.c
@@ -36,7 +36,7 @@ static struct kmem_cache *cred_jar;
static struct thread_group_cred init_tgcred = {
.usage = ATOMIC_INIT(2),
@@ -94,3 +95,6 @@ Index: linux-3.4/kernel/cred.c
};
#endif
+--
+1.7.10.4
+
diff --git a/patches/pci-access-use-__wake_up_all_locked.patch b/patches/0053-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch
index 1e54a8b..5c110ba 100644
--- a/patches/pci-access-use-__wake_up_all_locked.patch
+++ b/patches/0053-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch
@@ -1,6 +1,8 @@
-Subject: pci: Use __wake_up_all_locked pci_unblock_user_cfg_access()
+From c2ffd32e0cc43b6ea357cf278ecdf4061d55052d Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Thu, 01 Dec 2011 00:07:16 +0100
+Date: Thu, 1 Dec 2011 00:07:16 +0100
+Subject: [PATCH 053/254] pci: Use __wake_up_all_locked
+ pci_unblock_user_cfg_access()
The waitqueue is protected by the pci_lock, so we can just avoid to
lock the waitqueue lock itself. That prevents the
@@ -12,11 +14,11 @@ Cc: stable-rt@vger.kernel.org
drivers/pci/access.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/drivers/pci/access.c
-===================================================================
---- linux-3.4.orig/drivers/pci/access.c
-+++ linux-3.4/drivers/pci/access.c
-@@ -463,7 +463,7 @@ void pci_cfg_access_unlock(struct pci_de
+diff --git a/drivers/pci/access.c b/drivers/pci/access.c
+index 2a58164..8e6a88e 100644
+--- a/drivers/pci/access.c
++++ b/drivers/pci/access.c
+@@ -463,7 +463,7 @@ void pci_cfg_access_unlock(struct pci_dev *dev)
WARN_ON(!dev->block_cfg_access);
dev->block_cfg_access = 0;
@@ -25,3 +27,6 @@ Index: linux-3.4/drivers/pci/access.c
raw_spin_unlock_irqrestore(&pci_lock, flags);
}
EXPORT_SYMBOL_GPL(pci_cfg_access_unlock);
+--
+1.7.10.4
+
diff --git a/patches/latency-hist.patch b/patches/0054-latency-hist.patch.patch
index 61f2b90..0e1f8f9 100644
--- a/patches/latency-hist.patch
+++ b/patches/0054-latency-hist.patch.patch
@@ -1,6 +1,7 @@
-Subject: latency-hist.patch
+From c61d20af89363f539aaf2453599d3356948f3d9b Mon Sep 17 00:00:00 2001
From: Carsten Emde <C.Emde@osadl.org>
Date: Tue, 19 Jul 2011 14:03:41 +0100
+Subject: [PATCH 054/254] latency-hist.patch
This patch provides a recording mechanism to store data of potential
sources of system latencies. The recordings separately determine the
@@ -11,23 +12,27 @@ filesystem. For details please consult Documentation/trace/histograms.txt.
Signed-off-by: Carsten Emde <C.Emde@osadl.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
- Documentation/trace/histograms.txt | 186 +++++
- include/linux/sched.h | 6
- include/trace/events/hist.h | 69 ++
- include/trace/events/latency_hist.h | 30
- kernel/hrtimer.c | 11
- kernel/trace/Kconfig | 104 +++
- kernel/trace/Makefile | 4
- kernel/trace/latency_hist.c | 1170 ++++++++++++++++++++++++++++++++++++
- kernel/trace/trace_irqsoff.c | 11
+ Documentation/trace/histograms.txt | 186 ++++++
+ include/linux/sched.h | 6 +
+ include/trace/events/hist.h | 69 +++
+ include/trace/events/latency_hist.h | 30 +
+ kernel/hrtimer.c | 11 +
+ kernel/trace/Kconfig | 104 ++++
+ kernel/trace/Makefile | 4 +
+ kernel/trace/latency_hist.c | 1170 +++++++++++++++++++++++++++++++++++
+ kernel/trace/trace_irqsoff.c | 11 +
9 files changed, 1591 insertions(+)
+ create mode 100644 Documentation/trace/histograms.txt
+ create mode 100644 include/trace/events/hist.h
+ create mode 100644 include/trace/events/latency_hist.h
+ create mode 100644 kernel/trace/latency_hist.c
-Index: linux-3.4/Documentation/trace/histograms.txt
-===================================================================
+diff --git a/Documentation/trace/histograms.txt b/Documentation/trace/histograms.txt
+new file mode 100644
+index 0000000..6f2aeab
--- /dev/null
-+++ linux-3.4/Documentation/trace/histograms.txt
++++ b/Documentation/trace/histograms.txt
@@ -0,0 +1,186 @@
+ Using the Linux Kernel Latency Histograms
+
@@ -215,10 +220,10 @@ Index: linux-3.4/Documentation/trace/histograms.txt
+is provided.
+
+These data are also reset when the wakeup histogram is reset.
-Index: linux-3.4/include/linux/sched.h
-===================================================================
---- linux-3.4.orig/include/linux/sched.h
-+++ linux-3.4/include/linux/sched.h
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index f14b965..5b63855 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
@@ -1614,6 +1614,12 @@ struct task_struct {
unsigned long trace;
/* bitmask and counter of trace recursion */
@@ -232,10 +237,11 @@ Index: linux-3.4/include/linux/sched.h
#endif /* CONFIG_TRACING */
#ifdef CONFIG_CGROUP_MEM_RES_CTLR /* memcg uses this to do batch job */
struct memcg_batch_info {
-Index: linux-3.4/include/trace/events/hist.h
-===================================================================
+diff --git a/include/trace/events/hist.h b/include/trace/events/hist.h
+new file mode 100644
+index 0000000..28646db
--- /dev/null
-+++ linux-3.4/include/trace/events/hist.h
++++ b/include/trace/events/hist.h
@@ -0,0 +1,69 @@
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM hist
@@ -306,10 +312,11 @@ Index: linux-3.4/include/trace/events/hist.h
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
-Index: linux-3.4/include/trace/events/latency_hist.h
-===================================================================
+diff --git a/include/trace/events/latency_hist.h b/include/trace/events/latency_hist.h
+new file mode 100644
+index 0000000..d6b5d77
--- /dev/null
-+++ linux-3.4/include/trace/events/latency_hist.h
++++ b/include/trace/events/latency_hist.h
@@ -0,0 +1,30 @@
+#ifndef _LATENCY_HIST_H
+#define _LATENCY_HIST_H
@@ -341,10 +348,10 @@ Index: linux-3.4/include/trace/events/latency_hist.h
+
+#endif /* _LATENCY_HIST_H */
+
-Index: linux-3.4/kernel/hrtimer.c
-===================================================================
---- linux-3.4.orig/kernel/hrtimer.c
-+++ linux-3.4/kernel/hrtimer.c
+diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
+index ae34bf5..1a3695e 100644
+--- a/kernel/hrtimer.c
++++ b/kernel/hrtimer.c
@@ -49,6 +49,7 @@
#include <asm/uaccess.h>
@@ -353,7 +360,7 @@ Index: linux-3.4/kernel/hrtimer.c
/*
* The timer bases:
-@@ -1236,6 +1237,8 @@ static void __run_hrtimer(struct hrtimer
+@@ -1236,6 +1237,8 @@ static void __run_hrtimer(struct hrtimer *timer, ktime_t *now)
#ifdef CONFIG_HIGH_RES_TIMERS
@@ -377,10 +384,10 @@ Index: linux-3.4/kernel/hrtimer.c
/*
* The immediate goal for using the softexpires is
* minimizing wakeups, not running timers at the
-Index: linux-3.4/kernel/trace/Kconfig
-===================================================================
---- linux-3.4.orig/kernel/trace/Kconfig
-+++ linux-3.4/kernel/trace/Kconfig
+diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
+index a1d2849..23c737e 100644
+--- a/kernel/trace/Kconfig
++++ b/kernel/trace/Kconfig
@@ -192,6 +192,24 @@ config IRQSOFF_TRACER
enabled. This option and the preempt-off timing option can be
used together or separately.)
@@ -506,11 +513,11 @@ Index: linux-3.4/kernel/trace/Kconfig
config ENABLE_DEFAULT_TRACERS
bool "Trace process context switches and events"
depends on !GENERIC_TRACER
-Index: linux-3.4/kernel/trace/Makefile
-===================================================================
---- linux-3.4.orig/kernel/trace/Makefile
-+++ linux-3.4/kernel/trace/Makefile
-@@ -36,6 +36,10 @@ obj-$(CONFIG_FUNCTION_TRACER) += trace_f
+diff --git a/kernel/trace/Makefile b/kernel/trace/Makefile
+index 5f39a07..108a387 100644
+--- a/kernel/trace/Makefile
++++ b/kernel/trace/Makefile
+@@ -36,6 +36,10 @@ obj-$(CONFIG_FUNCTION_TRACER) += trace_functions.o
obj-$(CONFIG_IRQSOFF_TRACER) += trace_irqsoff.o
obj-$(CONFIG_PREEMPT_TRACER) += trace_irqsoff.o
obj-$(CONFIG_SCHED_TRACER) += trace_sched_wakeup.o
@@ -521,10 +528,11 @@ Index: linux-3.4/kernel/trace/Makefile
obj-$(CONFIG_NOP_TRACER) += trace_nop.o
obj-$(CONFIG_STACK_TRACER) += trace_stack.o
obj-$(CONFIG_MMIOTRACE) += trace_mmiotrace.o
-Index: linux-3.4/kernel/trace/latency_hist.c
-===================================================================
+diff --git a/kernel/trace/latency_hist.c b/kernel/trace/latency_hist.c
+new file mode 100644
+index 0000000..9d49fcb
--- /dev/null
-+++ linux-3.4/kernel/trace/latency_hist.c
++++ b/kernel/trace/latency_hist.c
@@ -0,0 +1,1170 @@
+/*
+ * kernel/trace/latency_hist.c
@@ -1696,10 +1704,10 @@ Index: linux-3.4/kernel/trace/latency_hist.c
+}
+
+__initcall(latency_hist_init);
-Index: linux-3.4/kernel/trace/trace_irqsoff.c
-===================================================================
---- linux-3.4.orig/kernel/trace/trace_irqsoff.c
-+++ linux-3.4/kernel/trace/trace_irqsoff.c
+diff --git a/kernel/trace/trace_irqsoff.c b/kernel/trace/trace_irqsoff.c
+index 99d20e9..384f603 100644
+--- a/kernel/trace/trace_irqsoff.c
++++ b/kernel/trace/trace_irqsoff.c
@@ -17,6 +17,7 @@
#include <linux/fs.h>
@@ -1722,7 +1730,7 @@ Index: linux-3.4/kernel/trace/trace_irqsoff.c
if (preempt_trace() || irq_trace())
stop_critical_timing(CALLER_ADDR0, CALLER_ADDR1);
}
-@@ -451,6 +454,7 @@ EXPORT_SYMBOL_GPL(stop_critical_timings)
+@@ -451,6 +454,7 @@ EXPORT_SYMBOL_GPL(stop_critical_timings);
#ifdef CONFIG_PROVE_LOCKING
void time_hardirqs_on(unsigned long a0, unsigned long a1)
{
@@ -1730,7 +1738,7 @@ Index: linux-3.4/kernel/trace/trace_irqsoff.c
if (!preempt_trace() && irq_trace())
stop_critical_timing(a0, a1);
}
-@@ -459,6 +463,7 @@ void time_hardirqs_off(unsigned long a0,
+@@ -459,6 +463,7 @@ void time_hardirqs_off(unsigned long a0, unsigned long a1)
{
if (!preempt_trace() && irq_trace())
start_critical_timing(a0, a1);
@@ -1738,7 +1746,7 @@ Index: linux-3.4/kernel/trace/trace_irqsoff.c
}
#else /* !CONFIG_PROVE_LOCKING */
-@@ -484,6 +489,7 @@ inline void print_irqtrace_events(struct
+@@ -484,6 +489,7 @@ inline void print_irqtrace_events(struct task_struct *curr)
*/
void trace_hardirqs_on(void)
{
@@ -1760,7 +1768,7 @@ Index: linux-3.4/kernel/trace/trace_irqsoff.c
if (!preempt_trace() && irq_trace())
stop_critical_timing(CALLER_ADDR0, caller_addr);
}
-@@ -507,6 +515,7 @@ void trace_hardirqs_off_caller(unsigned
+@@ -507,6 +515,7 @@ void trace_hardirqs_off_caller(unsigned long caller_addr)
{
if (!preempt_trace() && irq_trace())
start_critical_timing(CALLER_ADDR0, caller_addr);
@@ -1768,7 +1776,7 @@ Index: linux-3.4/kernel/trace/trace_irqsoff.c
}
EXPORT_SYMBOL(trace_hardirqs_off_caller);
-@@ -516,12 +525,14 @@ EXPORT_SYMBOL(trace_hardirqs_off_caller)
+@@ -516,12 +525,14 @@ EXPORT_SYMBOL(trace_hardirqs_off_caller);
#ifdef CONFIG_PREEMPT_TRACER
void trace_preempt_on(unsigned long a0, unsigned long a1)
{
@@ -1783,3 +1791,6 @@ Index: linux-3.4/kernel/trace/trace_irqsoff.c
if (preempt_trace() && !irq_trace())
start_critical_timing(a0, a1);
}
+--
+1.7.10.4
+
diff --git a/patches/hwlatdetect.patch b/patches/0055-hwlatdetect.patch.patch
index e2e371a..5f01e86 100644
--- a/patches/hwlatdetect.patch
+++ b/patches/0055-hwlatdetect.patch.patch
@@ -1,25 +1,28 @@
-Subject: hwlatdetect.patch
+From 3765c70d6979fd344d19645a522cb8fc0bb0450c Mon Sep 17 00:00:00 2001
From: Carsten Emde <C.Emde@osadl.org>
Date: Tue, 19 Jul 2011 13:53:12 +0100
+Subject: [PATCH 055/254] hwlatdetect.patch
Jon Masters developed this wonderful SMI detector. For details please
consult Documentation/hwlat_detector.txt. It could be ported to Linux
3.0 RT without any major change.
Signed-off-by: Carsten Emde <C.Emde@osadl.org>
-
---
Documentation/hwlat_detector.txt | 64 ++
- MAINTAINERS | 9
- drivers/misc/Kconfig | 29
- drivers/misc/Makefile | 1
- drivers/misc/hwlat_detector.c | 1212 +++++++++++++++++++++++++++++++++++++++
+ MAINTAINERS | 9 +
+ drivers/misc/Kconfig | 29 +
+ drivers/misc/Makefile | 1 +
+ drivers/misc/hwlat_detector.c | 1212 ++++++++++++++++++++++++++++++++++++++
5 files changed, 1315 insertions(+)
+ create mode 100644 Documentation/hwlat_detector.txt
+ create mode 100644 drivers/misc/hwlat_detector.c
-Index: linux-3.4/Documentation/hwlat_detector.txt
-===================================================================
+diff --git a/Documentation/hwlat_detector.txt b/Documentation/hwlat_detector.txt
+new file mode 100644
+index 0000000..cb61516
--- /dev/null
-+++ linux-3.4/Documentation/hwlat_detector.txt
++++ b/Documentation/hwlat_detector.txt
@@ -0,0 +1,64 @@
+Introduction:
+-------------
@@ -85,11 +88,11 @@ Index: linux-3.4/Documentation/hwlat_detector.txt
+observe any latencies that exceed the threshold (initially 100 usecs),
+then we write to a global sample ring buffer of 8K samples, which is
+consumed by reading from the "sample" (pipe) debugfs file interface.
-Index: linux-3.4/MAINTAINERS
-===================================================================
---- linux-3.4.orig/MAINTAINERS
-+++ linux-3.4/MAINTAINERS
-@@ -3082,6 +3082,15 @@ L: linuxppc-dev@lists.ozlabs.org
+diff --git a/MAINTAINERS b/MAINTAINERS
+index b362709..249426c 100644
+--- a/MAINTAINERS
++++ b/MAINTAINERS
+@@ -3081,6 +3081,15 @@ L: linuxppc-dev@lists.ozlabs.org
S: Odd Fixes
F: drivers/tty/hvc/
@@ -105,10 +108,10 @@ Index: linux-3.4/MAINTAINERS
HARDWARE MONITORING
M: Jean Delvare <khali@linux-fr.org>
M: Guenter Roeck <guenter.roeck@ericsson.com>
-Index: linux-3.4/drivers/misc/Kconfig
-===================================================================
---- linux-3.4.orig/drivers/misc/Kconfig
-+++ linux-3.4/drivers/misc/Kconfig
+diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
+index 504daa3..eead6ce 100644
+--- a/drivers/misc/Kconfig
++++ b/drivers/misc/Kconfig
@@ -130,6 +130,35 @@ config IBM_ASM
for information on the specific driver level and support statement
for your IBM server.
@@ -145,19 +148,20 @@ Index: linux-3.4/drivers/misc/Kconfig
config PHANTOM
tristate "Sensable PHANToM (PCI)"
depends on PCI
-Index: linux-3.4/drivers/misc/Makefile
-===================================================================
---- linux-3.4.orig/drivers/misc/Makefile
-+++ linux-3.4/drivers/misc/Makefile
+diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
+index 3e1d8010..c7c058a 100644
+--- a/drivers/misc/Makefile
++++ b/drivers/misc/Makefile
@@ -49,3 +49,4 @@ obj-y += carma/
obj-$(CONFIG_USB_SWITCH_FSA9480) += fsa9480.o
obj-$(CONFIG_ALTERA_STAPL) +=altera-stapl/
obj-$(CONFIG_MAX8997_MUIC) += max8997-muic.o
+obj-$(CONFIG_HWLAT_DETECTOR) += hwlat_detector.o
-Index: linux-3.4/drivers/misc/hwlat_detector.c
-===================================================================
+diff --git a/drivers/misc/hwlat_detector.c b/drivers/misc/hwlat_detector.c
+new file mode 100644
+index 0000000..b7b7c90
--- /dev/null
-+++ linux-3.4/drivers/misc/hwlat_detector.c
++++ b/drivers/misc/hwlat_detector.c
@@ -0,0 +1,1212 @@
+/*
+ * hwlat_detector.c - A simple Hardware Latency detector.
@@ -1371,3 +1375,6 @@ Index: linux-3.4/drivers/misc/hwlat_detector.c
+
+module_init(detector_init);
+module_exit(detector_exit);
+--
+1.7.10.4
+
diff --git a/patches/localversion.patch b/patches/0056-localversion.patch.patch
index c708ada..067ecf2 100644
--- a/patches/localversion.patch
+++ b/patches/0056-localversion.patch.patch
@@ -1,6 +1,7 @@
-Subject: localversion.patch
+From a5992a59704aee95473f7a36cf6d1c1589bf5784 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Fri, 08 Jul 2011 20:25:16 +0200
+Date: Fri, 8 Jul 2011 20:25:16 +0200
+Subject: [PATCH 056/254] localversion.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
@@ -8,10 +9,15 @@ Link: http://lkml.kernel.org/n/tip-8vdw4bfcsds27cvox6rpb334@git.kernel.org
---
localversion-rt | 1 +
1 file changed, 1 insertion(+)
+ create mode 100644 localversion-rt
-Index: linux-3.4/localversion-rt
-===================================================================
+diff --git a/localversion-rt b/localversion-rt
+new file mode 100644
+index 0000000..700c857
--- /dev/null
-+++ linux-3.4/localversion-rt
++++ b/localversion-rt
@@ -0,0 +1 @@
+-rt8
+--
+1.7.10.4
+
diff --git a/patches/early-printk-consolidate.patch b/patches/0057-early-printk-consolidate.patch.patch
index 47b9cd1..b5e5942 100644
--- a/patches/early-printk-consolidate.patch
+++ b/patches/0057-early-printk-consolidate.patch.patch
@@ -1,6 +1,7 @@
-Subject: early-printk-consolidate.patch
+From 6dc69d784270292a3dc1ac3d4bc6a19b931a29b2 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 23 Jul 2011 11:04:08 +0200
+Subject: [PATCH 057/254] early-printk-consolidate.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -21,11 +22,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/printk.c | 30 +++++++++++++++++++++++-------
15 files changed, 65 insertions(+), 110 deletions(-)
-Index: linux-3.4/arch/arm/kernel/early_printk.c
-===================================================================
---- linux-3.4.orig/arch/arm/kernel/early_printk.c
-+++ linux-3.4/arch/arm/kernel/early_printk.c
-@@ -29,28 +29,17 @@ static void early_console_write(struct c
+diff --git a/arch/arm/kernel/early_printk.c b/arch/arm/kernel/early_printk.c
+index 85aa2b2..4307653 100644
+--- a/arch/arm/kernel/early_printk.c
++++ b/arch/arm/kernel/early_printk.c
+@@ -29,28 +29,17 @@ static void early_console_write(struct console *con, const char *s, unsigned n)
early_write(s, n);
}
@@ -57,11 +58,11 @@ Index: linux-3.4/arch/arm/kernel/early_printk.c
return 0;
}
-Index: linux-3.4/arch/blackfin/kernel/early_printk.c
-===================================================================
---- linux-3.4.orig/arch/blackfin/kernel/early_printk.c
-+++ linux-3.4/arch/blackfin/kernel/early_printk.c
-@@ -25,8 +25,6 @@ extern struct console *bfin_earlyserial_
+diff --git a/arch/blackfin/kernel/early_printk.c b/arch/blackfin/kernel/early_printk.c
+index 84ed837..61fbd2d 100644
+--- a/arch/blackfin/kernel/early_printk.c
++++ b/arch/blackfin/kernel/early_printk.c
+@@ -25,8 +25,6 @@ extern struct console *bfin_earlyserial_init(unsigned int port,
extern struct console *bfin_jc_early_init(void);
#endif
@@ -70,10 +71,10 @@ Index: linux-3.4/arch/blackfin/kernel/early_printk.c
/* Default console */
#define DEFAULT_PORT 0
#define DEFAULT_CFLAG CS8|B57600
-Index: linux-3.4/arch/microblaze/kernel/early_printk.c
-===================================================================
---- linux-3.4.orig/arch/microblaze/kernel/early_printk.c
-+++ linux-3.4/arch/microblaze/kernel/early_printk.c
+diff --git a/arch/microblaze/kernel/early_printk.c b/arch/microblaze/kernel/early_printk.c
+index aba1f9a..b099a86 100644
+--- a/arch/microblaze/kernel/early_printk.c
++++ b/arch/microblaze/kernel/early_printk.c
@@ -21,7 +21,6 @@
#include <asm/setup.h>
#include <asm/prom.h>
@@ -82,7 +83,7 @@ Index: linux-3.4/arch/microblaze/kernel/early_printk.c
static u32 base_addr;
#ifdef CONFIG_SERIAL_UARTLITE_CONSOLE
-@@ -109,27 +108,11 @@ static struct console early_serial_uart1
+@@ -109,27 +108,11 @@ static struct console early_serial_uart16550_console = {
};
#endif /* CONFIG_SERIAL_8250_CONSOLE */
@@ -140,11 +141,11 @@ Index: linux-3.4/arch/microblaze/kernel/early_printk.c
- early_console_initialized = 0;
+ early_console = NULL;
}
-Index: linux-3.4/arch/mips/kernel/early_printk.c
-===================================================================
---- linux-3.4.orig/arch/mips/kernel/early_printk.c
-+++ linux-3.4/arch/mips/kernel/early_printk.c
-@@ -25,20 +25,18 @@ early_console_write(struct console *con,
+diff --git a/arch/mips/kernel/early_printk.c b/arch/mips/kernel/early_printk.c
+index 9ae813e..973c995 100644
+--- a/arch/mips/kernel/early_printk.c
++++ b/arch/mips/kernel/early_printk.c
+@@ -25,20 +25,18 @@ early_console_write(struct console *con, const char *s, unsigned n)
}
}
@@ -169,10 +170,10 @@ Index: linux-3.4/arch/mips/kernel/early_printk.c
- register_console(&early_console);
+ register_console(&early_console_prom);
}
-Index: linux-3.4/arch/powerpc/kernel/udbg.c
-===================================================================
---- linux-3.4.orig/arch/powerpc/kernel/udbg.c
-+++ linux-3.4/arch/powerpc/kernel/udbg.c
+diff --git a/arch/powerpc/kernel/udbg.c b/arch/powerpc/kernel/udbg.c
+index c39c1ca..8b00aab 100644
+--- a/arch/powerpc/kernel/udbg.c
++++ b/arch/powerpc/kernel/udbg.c
@@ -179,15 +179,13 @@ static struct console udbg_console = {
.index = 0,
};
@@ -190,7 +191,7 @@ Index: linux-3.4/arch/powerpc/kernel/udbg.c
return;
if (!udbg_putc)
-@@ -197,7 +195,7 @@ void __init register_early_udbg_console(
+@@ -197,7 +195,7 @@ void __init register_early_udbg_console(void)
printk(KERN_INFO "early console immortal !\n");
udbg_console.flags &= ~CON_BOOT;
}
@@ -199,10 +200,10 @@ Index: linux-3.4/arch/powerpc/kernel/udbg.c
register_console(&udbg_console);
}
-Index: linux-3.4/arch/sh/kernel/sh_bios.c
-===================================================================
---- linux-3.4.orig/arch/sh/kernel/sh_bios.c
-+++ linux-3.4/arch/sh/kernel/sh_bios.c
+diff --git a/arch/sh/kernel/sh_bios.c b/arch/sh/kernel/sh_bios.c
+index 47475cc..a5b51b9 100644
+--- a/arch/sh/kernel/sh_bios.c
++++ b/arch/sh/kernel/sh_bios.c
@@ -144,8 +144,6 @@ static struct console bios_console = {
.index = -1,
};
@@ -212,10 +213,10 @@ Index: linux-3.4/arch/sh/kernel/sh_bios.c
static int __init setup_early_printk(char *buf)
{
int keep_early = 0;
-Index: linux-3.4/arch/sparc/kernel/setup_32.c
-===================================================================
---- linux-3.4.orig/arch/sparc/kernel/setup_32.c
-+++ linux-3.4/arch/sparc/kernel/setup_32.c
+diff --git a/arch/sparc/kernel/setup_32.c b/arch/sparc/kernel/setup_32.c
+index d444468..a000aa5 100644
+--- a/arch/sparc/kernel/setup_32.c
++++ b/arch/sparc/kernel/setup_32.c
@@ -221,6 +221,7 @@ void __init setup_arch(char **cmdline_p)
boot_flags_init(*cmdline_p);
@@ -224,11 +225,11 @@ Index: linux-3.4/arch/sparc/kernel/setup_32.c
register_console(&prom_early_console);
/* Set sparc_cpu_model */
-Index: linux-3.4/arch/sparc/kernel/setup_64.c
-===================================================================
---- linux-3.4.orig/arch/sparc/kernel/setup_64.c
-+++ linux-3.4/arch/sparc/kernel/setup_64.c
-@@ -487,6 +487,12 @@ static void __init init_sparc64_elf_hwca
+diff --git a/arch/sparc/kernel/setup_64.c b/arch/sparc/kernel/setup_64.c
+index 1414d16..8b37e5a 100644
+--- a/arch/sparc/kernel/setup_64.c
++++ b/arch/sparc/kernel/setup_64.c
+@@ -487,6 +487,12 @@ static void __init init_sparc64_elf_hwcap(void)
popc_patch();
}
@@ -250,11 +251,11 @@ Index: linux-3.4/arch/sparc/kernel/setup_64.c
if (tlb_type == hypervisor)
printk("ARCH: SUN4V\n");
-Index: linux-3.4/arch/tile/kernel/early_printk.c
-===================================================================
---- linux-3.4.orig/arch/tile/kernel/early_printk.c
-+++ linux-3.4/arch/tile/kernel/early_printk.c
-@@ -33,25 +33,8 @@ static struct console early_hv_console =
+diff --git a/arch/tile/kernel/early_printk.c b/arch/tile/kernel/early_printk.c
+index afb9c9a..ff25220 100644
+--- a/arch/tile/kernel/early_printk.c
++++ b/arch/tile/kernel/early_printk.c
+@@ -33,25 +33,8 @@ static struct console early_hv_console = {
};
/* Direct interface for emergencies */
@@ -296,7 +297,7 @@ Index: linux-3.4/arch/tile/kernel/early_printk.c
register_console(early_console);
return 0;
-@@ -85,12 +67,12 @@ static int __init setup_early_printk(cha
+@@ -85,12 +67,12 @@ static int __init setup_early_printk(char *str)
void __init disable_early_printk(void)
{
early_console_complete = 1;
@@ -320,11 +321,11 @@ Index: linux-3.4/arch/tile/kernel/early_printk.c
return;
early_printk("\
Machine shutting down before console output is fully initialized.\n\
-Index: linux-3.4/arch/um/kernel/early_printk.c
-===================================================================
---- linux-3.4.orig/arch/um/kernel/early_printk.c
-+++ linux-3.4/arch/um/kernel/early_printk.c
-@@ -16,7 +16,7 @@ static void early_console_write(struct c
+diff --git a/arch/um/kernel/early_printk.c b/arch/um/kernel/early_printk.c
+index ec649bf..183060f 100644
+--- a/arch/um/kernel/early_printk.c
++++ b/arch/um/kernel/early_printk.c
+@@ -16,7 +16,7 @@ static void early_console_write(struct console *con, const char *s, unsigned int
um_early_printk(s, n);
}
@@ -346,11 +347,11 @@ Index: linux-3.4/arch/um/kernel/early_printk.c
return 0;
}
-Index: linux-3.4/arch/unicore32/kernel/early_printk.c
-===================================================================
---- linux-3.4.orig/arch/unicore32/kernel/early_printk.c
-+++ linux-3.4/arch/unicore32/kernel/early_printk.c
-@@ -33,21 +33,17 @@ static struct console early_ocd_console
+diff --git a/arch/unicore32/kernel/early_printk.c b/arch/unicore32/kernel/early_printk.c
+index 3922255..9be0d5d 100644
+--- a/arch/unicore32/kernel/early_printk.c
++++ b/arch/unicore32/kernel/early_printk.c
+@@ -33,21 +33,17 @@ static struct console early_ocd_console = {
.index = -1,
};
@@ -376,11 +377,11 @@ Index: linux-3.4/arch/unicore32/kernel/early_printk.c
if (keep_early)
early_console->flags &= ~CON_BOOT;
-Index: linux-3.4/arch/x86/kernel/early_printk.c
-===================================================================
---- linux-3.4.orig/arch/x86/kernel/early_printk.c
-+++ linux-3.4/arch/x86/kernel/early_printk.c
-@@ -169,25 +169,9 @@ static struct console early_serial_conso
+diff --git a/arch/x86/kernel/early_printk.c b/arch/x86/kernel/early_printk.c
+index 9b9f18b..d15f575 100644
+--- a/arch/x86/kernel/early_printk.c
++++ b/arch/x86/kernel/early_printk.c
+@@ -169,25 +169,9 @@ static struct console early_serial_console = {
.index = -1,
};
@@ -407,7 +408,7 @@ Index: linux-3.4/arch/x86/kernel/early_printk.c
printk(KERN_CRIT "ERROR: earlyprintk= %s already used\n",
con->name);
return;
-@@ -207,9 +191,8 @@ static int __init setup_early_printk(cha
+@@ -207,9 +191,8 @@ static int __init setup_early_printk(char *buf)
if (!buf)
return 0;
@@ -418,10 +419,10 @@ Index: linux-3.4/arch/x86/kernel/early_printk.c
keep = (strstr(buf, "keep") != NULL);
-Index: linux-3.4/include/linux/console.h
-===================================================================
---- linux-3.4.orig/include/linux/console.h
-+++ linux-3.4/include/linux/console.h
+diff --git a/include/linux/console.h b/include/linux/console.h
+index 7201ce4..dec7f97 100644
+--- a/include/linux/console.h
++++ b/include/linux/console.h
@@ -133,6 +133,7 @@ struct console {
for (con = console_drivers; con != NULL; con = con->next)
@@ -430,10 +431,10 @@ Index: linux-3.4/include/linux/console.h
extern int add_preferred_console(char *name, int idx, char *options);
extern int update_console_cmdline(char *name, int idx, char *name_new, int idx_new, char *options);
-Index: linux-3.4/include/linux/printk.h
-===================================================================
---- linux-3.4.orig/include/linux/printk.h
-+++ linux-3.4/include/linux/printk.h
+diff --git a/include/linux/printk.h b/include/linux/printk.h
+index 0525927..c8d7f7b 100644
+--- a/include/linux/printk.h
++++ b/include/linux/printk.h
@@ -88,8 +88,13 @@ int no_printk(const char *fmt, ...)
return 0;
}
@@ -448,10 +449,10 @@ Index: linux-3.4/include/linux/printk.h
extern int printk_needs_cpu(int cpu);
extern void printk_tick(void);
-Index: linux-3.4/kernel/printk.c
-===================================================================
---- linux-3.4.orig/kernel/printk.c
-+++ linux-3.4/kernel/printk.c
+diff --git a/kernel/printk.c b/kernel/printk.c
+index b663c2c..c442606 100644
+--- a/kernel/printk.c
++++ b/kernel/printk.c
@@ -47,13 +47,6 @@
#define CREATE_TRACE_POINTS
#include <trace/events/printk.h>
@@ -466,7 +467,7 @@ Index: linux-3.4/kernel/printk.c
#define __LOG_BUF_LEN (1 << CONFIG_LOG_BUF_SHIFT)
/* printk's without a loglevel use this.. */
-@@ -524,6 +517,29 @@ static void __call_console_drivers(unsig
+@@ -524,6 +517,29 @@ static void __call_console_drivers(unsigned start, unsigned end)
}
}
@@ -496,3 +497,6 @@ Index: linux-3.4/kernel/printk.c
static bool __read_mostly ignore_loglevel;
static int __init ignore_loglevel_setup(char *str)
+--
+1.7.10.4
+
diff --git a/patches/printk-kill.patch b/patches/0058-printk-kill.patch.patch
index f3b37da..1f96280 100644
--- a/patches/printk-kill.patch
+++ b/patches/0058-printk-kill.patch.patch
@@ -1,6 +1,7 @@
-Subject: printk-kill.patch
+From 854e89ce1e620c93217a509eb75ad7ea29f97d54 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 22 Jul 2011 17:58:40 +0200
+Subject: [PATCH 058/254] printk-kill.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -9,10 +10,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/watchdog.c | 15 +++++++++++++--
3 files changed, 48 insertions(+), 3 deletions(-)
-Index: linux-3.4/include/linux/printk.h
-===================================================================
---- linux-3.4.orig/include/linux/printk.h
-+++ linux-3.4/include/linux/printk.h
+diff --git a/include/linux/printk.h b/include/linux/printk.h
+index c8d7f7b..d5e6eed 100644
+--- a/include/linux/printk.h
++++ b/include/linux/printk.h
@@ -91,9 +91,11 @@ int no_printk(const char *fmt, ...)
#ifdef CONFIG_EARLY_PRINTK
extern asmlinkage __printf(1, 2)
@@ -25,7 +26,7 @@ Index: linux-3.4/include/linux/printk.h
#endif
extern int printk_needs_cpu(int cpu);
-@@ -119,7 +121,6 @@ extern int __printk_ratelimit(const char
+@@ -119,7 +121,6 @@ extern int __printk_ratelimit(const char *func);
#define printk_ratelimit() __printk_ratelimit(__func__)
extern bool printk_timed_ratelimit(unsigned long *caller_jiffies,
unsigned int interval_msec);
@@ -33,11 +34,11 @@ Index: linux-3.4/include/linux/printk.h
extern int printk_delay_msec;
extern int dmesg_restrict;
extern int kptr_restrict;
-Index: linux-3.4/kernel/printk.c
-===================================================================
---- linux-3.4.orig/kernel/printk.c
-+++ linux-3.4/kernel/printk.c
-@@ -538,6 +538,32 @@ asmlinkage void early_printk(const char
+diff --git a/kernel/printk.c b/kernel/printk.c
+index c442606..5a172f9 100644
+--- a/kernel/printk.c
++++ b/kernel/printk.c
+@@ -538,6 +538,32 @@ asmlinkage void early_printk(const char *fmt, ...)
early_vprintk(fmt, ap);
va_end(ap);
}
@@ -70,7 +71,7 @@ Index: linux-3.4/kernel/printk.c
#endif
static bool __read_mostly ignore_loglevel;
-@@ -862,6 +888,13 @@ asmlinkage int vprintk(const char *fmt,
+@@ -862,6 +888,13 @@ asmlinkage int vprintk(const char *fmt, va_list args)
size_t plen;
char special;
@@ -84,11 +85,11 @@ Index: linux-3.4/kernel/printk.c
boot_delay_msec();
printk_delay();
-Index: linux-3.4/kernel/watchdog.c
-===================================================================
---- linux-3.4.orig/kernel/watchdog.c
-+++ linux-3.4/kernel/watchdog.c
-@@ -201,6 +201,8 @@ static int is_softlockup(unsigned long t
+diff --git a/kernel/watchdog.c b/kernel/watchdog.c
+index df30ee0..de08263 100644
+--- a/kernel/watchdog.c
++++ b/kernel/watchdog.c
+@@ -201,6 +201,8 @@ static int is_softlockup(unsigned long touch_ts)
#ifdef CONFIG_HARDLOCKUP_DETECTOR
@@ -97,7 +98,7 @@ Index: linux-3.4/kernel/watchdog.c
static struct perf_event_attr wd_hw_attr = {
.type = PERF_TYPE_HARDWARE,
.config = PERF_COUNT_HW_CPU_CYCLES,
-@@ -235,10 +237,19 @@ static void watchdog_overflow_callback(s
+@@ -235,10 +237,19 @@ static void watchdog_overflow_callback(struct perf_event *event,
if (__this_cpu_read(hard_watchdog_warn) == true)
return;
@@ -119,3 +120,6 @@ Index: linux-3.4/kernel/watchdog.c
__this_cpu_write(hard_watchdog_warn, true);
return;
+--
+1.7.10.4
+
diff --git a/patches/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch b/patches/0059-printk-force_early_printk-boot-param-to-help-with-de.patch
index 12f8259..e7e76e6 100644
--- a/patches/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch
+++ b/patches/0059-printk-force_early_printk-boot-param-to-help-with-de.patch
@@ -1,10 +1,8 @@
-Subject: printk: %27force_early_printk%27 boot param to help with debugging
-From: Peter Zijlstra <peterz@infradead.org>
-Date: Fri, 02 Sep 2011 14:41:29 +0200
-
-Subject: printk: 'force_early_printk' boot param to help with debugging
+From 2bda629e74eba474737a2e2218743763aa7d53f6 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
-Date: Fri Sep 02 14:29:33 CEST 2011
+Date: Fri, 2 Sep 2011 14:29:33 +0200
+Subject: [PATCH 059/254] printk: 'force_early_printk' boot param to help with
+ debugging
Gives me an option to screw printk and actually see what the machine
says.
@@ -17,11 +15,11 @@ Link: http://lkml.kernel.org/n/tip-ykb97nsfmobq44xketrxs977@git.kernel.org
kernel/printk.c | 7 +++++++
1 file changed, 7 insertions(+)
-Index: linux-3.4/kernel/printk.c
-===================================================================
---- linux-3.4.orig/kernel/printk.c
-+++ linux-3.4/kernel/printk.c
-@@ -547,6 +547,13 @@ asmlinkage void early_printk(const char
+diff --git a/kernel/printk.c b/kernel/printk.c
+index 5a172f9..300952e 100644
+--- a/kernel/printk.c
++++ b/kernel/printk.c
+@@ -547,6 +547,13 @@ asmlinkage void early_printk(const char *fmt, ...)
*/
static bool __read_mostly printk_killswitch;
@@ -35,3 +33,6 @@ Index: linux-3.4/kernel/printk.c
void printk_kill(void)
{
printk_killswitch = true;
+--
+1.7.10.4
+
diff --git a/patches/rt-preempt-base-config.patch b/patches/0060-rt-preempt-base-config.patch.patch
index d773dce..c4ef164 100644
--- a/patches/rt-preempt-base-config.patch
+++ b/patches/0060-rt-preempt-base-config.patch.patch
@@ -1,16 +1,17 @@
-Subject: rt-preempt-base-config.patch
+From f83268a94e85ee1b1285e6f36688e7bb9c144317 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 17 Jun 2011 12:39:57 +0200
+Subject: [PATCH 060/254] rt-preempt-base-config.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/Kconfig.preempt | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
-Index: linux-3.4/kernel/Kconfig.preempt
-===================================================================
---- linux-3.4.orig/kernel/Kconfig.preempt
-+++ linux-3.4/kernel/Kconfig.preempt
+diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
+index 3f9c974..885efbd 100644
+--- a/kernel/Kconfig.preempt
++++ b/kernel/Kconfig.preempt
@@ -1,3 +1,10 @@
+config PREEMPT
+ bool
@@ -49,3 +50,6 @@ Index: linux-3.4/kernel/Kconfig.preempt
endchoice
config PREEMPT_COUNT
+--
+1.7.10.4
+
diff --git a/patches/bug-rt-dependend-variants.patch b/patches/0061-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch
index 9960759..d51c01f 100644
--- a/patches/bug-rt-dependend-variants.patch
+++ b/patches/0061-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch
@@ -1,18 +1,18 @@
+From fe96a73652b7e5ab4e771538a9574a9f0f691394 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:58 -0500
-Subject: bug: BUG_ON/WARN_ON variants dependend on RT/!RT
+Subject: [PATCH 061/254] bug: BUG_ON/WARN_ON variants dependend on RT/!RT
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
include/asm-generic/bug.h | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
-Index: linux-3.4/include/asm-generic/bug.h
-===================================================================
---- linux-3.4.orig/include/asm-generic/bug.h
-+++ linux-3.4/include/asm-generic/bug.h
+diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h
+index 2520a6e..0e41ade 100644
+--- a/include/asm-generic/bug.h
++++ b/include/asm-generic/bug.h
@@ -3,6 +3,10 @@
#include <linux/compiler.h>
@@ -24,7 +24,7 @@ Index: linux-3.4/include/asm-generic/bug.h
#ifdef CONFIG_BUG
#ifdef CONFIG_GENERIC_BUG
-@@ -202,4 +206,18 @@ extern void warn_slowpath_null(const cha
+@@ -202,4 +206,18 @@ extern void warn_slowpath_null(const char *file, const int line);
# define WARN_ON_SMP(x) ({0;})
#endif
@@ -43,3 +43,6 @@ Index: linux-3.4/include/asm-generic/bug.h
+#endif
+
#endif
+--
+1.7.10.4
+
diff --git a/patches/local-irq-rt-depending-variants.patch b/patches/0062-rt-local_irq_-variants-depending-on-RT-RT.patch
index 96c8fb7..0622541 100644
--- a/patches/local-irq-rt-depending-variants.patch
+++ b/patches/0062-rt-local_irq_-variants-depending-on-RT-RT.patch
@@ -1,23 +1,23 @@
+From be0e35c907b98b3de0b24cf74e2aaa4d7e0ddd30 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 21 Jul 2009 22:34:14 +0200
-Subject: rt: local_irq_* variants depending on RT/!RT
+Subject: [PATCH 062/254] rt: local_irq_* variants depending on RT/!RT
Add local_irq_*_(no)rt variant which are mainly used to break
interrupt disabled sections on PREEMPT_RT or to explicitely disable
interrupts on PREEMPT_RT.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
include/linux/interrupt.h | 2 +-
include/linux/irqflags.h | 19 +++++++++++++++++++
2 files changed, 20 insertions(+), 1 deletion(-)
-Index: linux-3.4/include/linux/interrupt.h
-===================================================================
---- linux-3.4.orig/include/linux/interrupt.h
-+++ linux-3.4/include/linux/interrupt.h
-@@ -217,7 +217,7 @@ extern void devm_free_irq(struct device
+diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
+index 02c3c4f..d2cc272 100644
+--- a/include/linux/interrupt.h
++++ b/include/linux/interrupt.h
+@@ -217,7 +217,7 @@ extern void devm_free_irq(struct device *dev, unsigned int irq, void *dev_id);
#ifdef CONFIG_LOCKDEP
# define local_irq_enable_in_hardirq() do { } while (0)
#else
@@ -26,10 +26,10 @@ Index: linux-3.4/include/linux/interrupt.h
#endif
extern void disable_irq_nosync(unsigned int irq);
-Index: linux-3.4/include/linux/irqflags.h
-===================================================================
---- linux-3.4.orig/include/linux/irqflags.h
-+++ linux-3.4/include/linux/irqflags.h
+diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h
+index d176d65..37b13c4 100644
+--- a/include/linux/irqflags.h
++++ b/include/linux/irqflags.h
@@ -147,4 +147,23 @@
#endif /* CONFIG_TRACE_IRQFLAGS_SUPPORT */
@@ -54,3 +54,6 @@ Index: linux-3.4/include/linux/irqflags.h
+#endif
+
#endif
+--
+1.7.10.4
+
diff --git a/patches/preempt-nort-rt-variants.patch b/patches/0063-preempt-Provide-preempt_-_-no-rt-variants.patch
index fab467d..e0e23c4 100644
--- a/patches/preempt-nort-rt-variants.patch
+++ b/patches/0063-preempt-Provide-preempt_-_-no-rt-variants.patch
@@ -1,20 +1,20 @@
+From 5a737741e63645480a3e450334506f15caa42662 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 24 Jul 2009 12:38:56 +0200
-Subject: preempt: Provide preempt_*_(no)rt variants
+Subject: [PATCH 063/254] preempt: Provide preempt_*_(no)rt variants
RT needs a few preempt_disable/enable points which are not necessary
otherwise. Implement variants to avoid #ifdeffery.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
include/linux/preempt.h | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
-Index: linux-3.4/include/linux/preempt.h
-===================================================================
---- linux-3.4.orig/include/linux/preempt.h
-+++ linux-3.4/include/linux/preempt.h
+diff --git a/include/linux/preempt.h b/include/linux/preempt.h
+index 5a710b9..5b46536 100644
+--- a/include/linux/preempt.h
++++ b/include/linux/preempt.h
@@ -54,11 +54,15 @@ do { \
dec_preempt_count(); \
} while (0)
@@ -52,3 +52,6 @@ Index: linux-3.4/include/linux/preempt.h
#ifdef CONFIG_PREEMPT_NOTIFIERS
struct preempt_notifier;
+--
+1.7.10.4
+
diff --git a/patches/ata-disable-interrupts-if-non-rt.patch b/patches/0064-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch
index 6d1446e..ed1729a 100644
--- a/patches/ata-disable-interrupts-if-non-rt.patch
+++ b/patches/0064-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch
@@ -1,22 +1,23 @@
+From abd4a51c408780f1d5855c88e0d7b191792a3476 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <srostedt@redhat.com>
Date: Fri, 3 Jul 2009 08:44:29 -0500
-Subject: ata: Do not disable interrupts in ide code for preempt-rt
+Subject: [PATCH 064/254] ata: Do not disable interrupts in ide code for
+ preempt-rt
Use the local_irq_*_nort variants.
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
drivers/ata/libata-sff.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
-Index: linux-3.4/drivers/ata/libata-sff.c
-===================================================================
---- linux-3.4.orig/drivers/ata/libata-sff.c
-+++ linux-3.4/drivers/ata/libata-sff.c
-@@ -678,9 +678,9 @@ unsigned int ata_sff_data_xfer_noirq(str
+diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
+index d8af325..ad3130d 100644
+--- a/drivers/ata/libata-sff.c
++++ b/drivers/ata/libata-sff.c
+@@ -678,9 +678,9 @@ unsigned int ata_sff_data_xfer_noirq(struct ata_device *dev, unsigned char *buf,
unsigned long flags;
unsigned int consumed;
@@ -28,7 +29,7 @@ Index: linux-3.4/drivers/ata/libata-sff.c
return consumed;
}
-@@ -719,7 +719,7 @@ static void ata_pio_sector(struct ata_qu
+@@ -719,7 +719,7 @@ static void ata_pio_sector(struct ata_queued_cmd *qc)
unsigned long flags;
/* FIXME: use a bounce buffer */
@@ -37,7 +38,7 @@ Index: linux-3.4/drivers/ata/libata-sff.c
buf = kmap_atomic(page);
/* do the actual data transfer */
-@@ -727,7 +727,7 @@ static void ata_pio_sector(struct ata_qu
+@@ -727,7 +727,7 @@ static void ata_pio_sector(struct ata_queued_cmd *qc)
do_write);
kunmap_atomic(buf);
@@ -64,3 +65,6 @@ Index: linux-3.4/drivers/ata/libata-sff.c
} else {
buf = page_address(page);
consumed = ap->ops->sff_data_xfer(dev, buf + offset,
+--
+1.7.10.4
+
diff --git a/patches/ide-use-nort-local-irq-variants.patch b/patches/0065-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch
index 59fa7f6..d7f800e 100644
--- a/patches/ide-use-nort-local-irq-variants.patch
+++ b/patches/0065-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch
@@ -1,12 +1,12 @@
+From 805bf63791b6ea20b731e591dc01894fd5c48a65 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:16 -0500
-Subject: ide: Do not disable interrupts for PREEMPT-RT
+Subject: [PATCH 065/254] ide: Do not disable interrupts for PREEMPT-RT
Use the local_irq_*_nort variants.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
drivers/ide/alim15x3.c | 4 ++--
drivers/ide/hpt366.c | 4 ++--
@@ -17,11 +17,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
drivers/ide/ide-taskfile.c | 6 +++---
7 files changed, 16 insertions(+), 16 deletions(-)
-Index: linux-3.4/drivers/ide/alim15x3.c
-===================================================================
---- linux-3.4.orig/drivers/ide/alim15x3.c
-+++ linux-3.4/drivers/ide/alim15x3.c
-@@ -234,7 +234,7 @@ static int init_chipset_ali15x3(struct p
+diff --git a/drivers/ide/alim15x3.c b/drivers/ide/alim15x3.c
+index 2c8016a..6fd6037 100644
+--- a/drivers/ide/alim15x3.c
++++ b/drivers/ide/alim15x3.c
+@@ -234,7 +234,7 @@ static int init_chipset_ali15x3(struct pci_dev *dev)
isa_dev = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL);
@@ -39,11 +39,11 @@ Index: linux-3.4/drivers/ide/alim15x3.c
return 0;
}
-Index: linux-3.4/drivers/ide/hpt366.c
-===================================================================
---- linux-3.4.orig/drivers/ide/hpt366.c
-+++ linux-3.4/drivers/ide/hpt366.c
-@@ -1241,7 +1241,7 @@ static int __devinit init_dma_hpt366(ide
+diff --git a/drivers/ide/hpt366.c b/drivers/ide/hpt366.c
+index 58c51cd..d2a4059 100644
+--- a/drivers/ide/hpt366.c
++++ b/drivers/ide/hpt366.c
+@@ -1241,7 +1241,7 @@ static int __devinit init_dma_hpt366(ide_hwif_t *hwif,
dma_old = inb(base + 2);
@@ -52,7 +52,7 @@ Index: linux-3.4/drivers/ide/hpt366.c
dma_new = dma_old;
pci_read_config_byte(dev, hwif->channel ? 0x4b : 0x43, &masterdma);
-@@ -1252,7 +1252,7 @@ static int __devinit init_dma_hpt366(ide
+@@ -1252,7 +1252,7 @@ static int __devinit init_dma_hpt366(ide_hwif_t *hwif,
if (dma_new != dma_old)
outb(dma_new, base + 2);
@@ -61,11 +61,11 @@ Index: linux-3.4/drivers/ide/hpt366.c
printk(KERN_INFO " %s: BM-DMA at 0x%04lx-0x%04lx\n",
hwif->name, base, base + 7);
-Index: linux-3.4/drivers/ide/ide-io-std.c
-===================================================================
---- linux-3.4.orig/drivers/ide/ide-io-std.c
-+++ linux-3.4/drivers/ide/ide-io-std.c
-@@ -175,7 +175,7 @@ void ide_input_data(ide_drive_t *drive,
+diff --git a/drivers/ide/ide-io-std.c b/drivers/ide/ide-io-std.c
+index 1976397..4169433 100644
+--- a/drivers/ide/ide-io-std.c
++++ b/drivers/ide/ide-io-std.c
+@@ -175,7 +175,7 @@ void ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
unsigned long uninitialized_var(flags);
if ((io_32bit & 2) && !mmio) {
@@ -74,7 +74,7 @@ Index: linux-3.4/drivers/ide/ide-io-std.c
ata_vlb_sync(io_ports->nsect_addr);
}
-@@ -186,7 +186,7 @@ void ide_input_data(ide_drive_t *drive,
+@@ -186,7 +186,7 @@ void ide_input_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
insl(data_addr, buf, words);
if ((io_32bit & 2) && !mmio)
@@ -83,7 +83,7 @@ Index: linux-3.4/drivers/ide/ide-io-std.c
if (((len + 1) & 3) < 2)
return;
-@@ -219,7 +219,7 @@ void ide_output_data(ide_drive_t *drive,
+@@ -219,7 +219,7 @@ void ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
unsigned long uninitialized_var(flags);
if ((io_32bit & 2) && !mmio) {
@@ -92,7 +92,7 @@ Index: linux-3.4/drivers/ide/ide-io-std.c
ata_vlb_sync(io_ports->nsect_addr);
}
-@@ -230,7 +230,7 @@ void ide_output_data(ide_drive_t *drive,
+@@ -230,7 +230,7 @@ void ide_output_data(ide_drive_t *drive, struct ide_cmd *cmd, void *buf,
outsl(data_addr, buf, words);
if ((io_32bit & 2) && !mmio)
@@ -101,11 +101,11 @@ Index: linux-3.4/drivers/ide/ide-io-std.c
if (((len + 1) & 3) < 2)
return;
-Index: linux-3.4/drivers/ide/ide-io.c
-===================================================================
---- linux-3.4.orig/drivers/ide/ide-io.c
-+++ linux-3.4/drivers/ide/ide-io.c
-@@ -659,7 +659,7 @@ void ide_timer_expiry (unsigned long dat
+diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
+index 177db6d..079ae6b 100644
+--- a/drivers/ide/ide-io.c
++++ b/drivers/ide/ide-io.c
+@@ -659,7 +659,7 @@ void ide_timer_expiry (unsigned long data)
/* disable_irq_nosync ?? */
disable_irq(hwif->irq);
/* local CPU only, as if we were handling an interrupt */
@@ -114,11 +114,11 @@ Index: linux-3.4/drivers/ide/ide-io.c
if (hwif->polling) {
startstop = handler(drive);
} else if (drive_is_ready(drive)) {
-Index: linux-3.4/drivers/ide/ide-iops.c
-===================================================================
---- linux-3.4.orig/drivers/ide/ide-iops.c
-+++ linux-3.4/drivers/ide/ide-iops.c
-@@ -129,12 +129,12 @@ int __ide_wait_stat(ide_drive_t *drive,
+diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c
+index 376f2dc..f014dd1 100644
+--- a/drivers/ide/ide-iops.c
++++ b/drivers/ide/ide-iops.c
+@@ -129,12 +129,12 @@ int __ide_wait_stat(ide_drive_t *drive, u8 good, u8 bad,
if ((stat & ATA_BUSY) == 0)
break;
@@ -133,11 +133,11 @@ Index: linux-3.4/drivers/ide/ide-iops.c
}
/*
* Allow status to settle, then read it again.
-Index: linux-3.4/drivers/ide/ide-probe.c
-===================================================================
---- linux-3.4.orig/drivers/ide/ide-probe.c
-+++ linux-3.4/drivers/ide/ide-probe.c
-@@ -196,10 +196,10 @@ static void do_identify(ide_drive_t *dri
+diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
+index 068cef0..38e69e1 100644
+--- a/drivers/ide/ide-probe.c
++++ b/drivers/ide/ide-probe.c
+@@ -196,10 +196,10 @@ static void do_identify(ide_drive_t *drive, u8 cmd, u16 *id)
int bswap = 1;
/* local CPU only; some systems need this */
@@ -150,11 +150,11 @@ Index: linux-3.4/drivers/ide/ide-probe.c
drive->dev_flags |= IDE_DFLAG_ID_READ;
#ifdef DEBUG
-Index: linux-3.4/drivers/ide/ide-taskfile.c
-===================================================================
---- linux-3.4.orig/drivers/ide/ide-taskfile.c
-+++ linux-3.4/drivers/ide/ide-taskfile.c
-@@ -251,7 +251,7 @@ void ide_pio_bytes(ide_drive_t *drive, s
+diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c
+index 729428e..3a9a1fc 100644
+--- a/drivers/ide/ide-taskfile.c
++++ b/drivers/ide/ide-taskfile.c
+@@ -251,7 +251,7 @@ void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd,
page_is_high = PageHighMem(page);
if (page_is_high)
@@ -163,7 +163,7 @@ Index: linux-3.4/drivers/ide/ide-taskfile.c
buf = kmap_atomic(page) + offset;
-@@ -272,7 +272,7 @@ void ide_pio_bytes(ide_drive_t *drive, s
+@@ -272,7 +272,7 @@ void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd,
kunmap_atomic(buf);
if (page_is_high)
@@ -172,7 +172,7 @@ Index: linux-3.4/drivers/ide/ide-taskfile.c
len -= nr_bytes;
}
-@@ -415,7 +415,7 @@ static ide_startstop_t pre_task_out_intr
+@@ -415,7 +415,7 @@ static ide_startstop_t pre_task_out_intr(ide_drive_t *drive,
}
if ((drive->dev_flags & IDE_DFLAG_UNMASK) == 0)
@@ -181,3 +181,6 @@ Index: linux-3.4/drivers/ide/ide-taskfile.c
ide_set_handler(drive, &task_pio_intr, WAIT_WORSTCASE);
+--
+1.7.10.4
+
diff --git a/patches/infiniband-mellanox-ib-use-nort-irq.patch b/patches/0066-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch
index 7be6266..f251212 100644
--- a/patches/infiniband-mellanox-ib-use-nort-irq.patch
+++ b/patches/0066-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch
@@ -1,6 +1,8 @@
+From 576fa5d210193c1ba231a6d09e5907b2df455b98 Mon Sep 17 00:00:00 2001
From: Sven-Thorsten Dietrich <sdietrich@novell.com>
Date: Fri, 3 Jul 2009 08:30:35 -0500
-Subject: infiniband: Mellanox IB driver patch use _nort() primitives
+Subject: [PATCH 066/254] infiniband: Mellanox IB driver patch use _nort()
+ primitives
Fixes in_atomic stack-dump, when Mellanox module is loaded into the RT
Kernel.
@@ -13,16 +15,15 @@ changes."
Signed-off-by: Sven-Thorsten Dietrich <sven@thebigcorporation.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-Index: linux-3.4/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
-===================================================================
---- linux-3.4.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
-+++ linux-3.4/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
-@@ -798,7 +798,7 @@ void ipoib_mcast_restart_task(struct wor
+diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+index 20ebc6f..525fca6 100644
+--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
++++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+@@ -798,7 +798,7 @@ void ipoib_mcast_restart_task(struct work_struct *work)
ipoib_mcast_stop_thread(dev, 0);
@@ -31,7 +32,7 @@ Index: linux-3.4/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
netif_addr_lock(dev);
spin_lock(&priv->lock);
-@@ -880,7 +880,7 @@ void ipoib_mcast_restart_task(struct wor
+@@ -880,7 +880,7 @@ void ipoib_mcast_restart_task(struct work_struct *work)
spin_unlock(&priv->lock);
netif_addr_unlock(dev);
@@ -40,3 +41,6 @@ Index: linux-3.4/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
/* We have to cancel outside of the spinlock */
list_for_each_entry_safe(mcast, tmcast, &remove_list, list) {
+--
+1.7.10.4
+
diff --git a/patches/inpt-gameport-use-local-irq-nort.patch b/patches/0067-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch
index b1b6784..2e1b532 100644
--- a/patches/inpt-gameport-use-local-irq-nort.patch
+++ b/patches/0067-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch
@@ -1,21 +1,22 @@
+From f1ed5ec907ad5299f38977e0fb33d9caf248ab02 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:16 -0500
-Subject: input: gameport: Do not disable interrupts on PREEMPT_RT
+Subject: [PATCH 067/254] input: gameport: Do not disable interrupts on
+ PREEMPT_RT
Use the _nort() primitives.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
drivers/input/gameport/gameport.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
-Index: linux-3.4/drivers/input/gameport/gameport.c
-===================================================================
---- linux-3.4.orig/drivers/input/gameport/gameport.c
-+++ linux-3.4/drivers/input/gameport/gameport.c
-@@ -87,12 +87,12 @@ static int gameport_measure_speed(struct
+diff --git a/drivers/input/gameport/gameport.c b/drivers/input/gameport/gameport.c
+index da739d9..18fdafe 100644
+--- a/drivers/input/gameport/gameport.c
++++ b/drivers/input/gameport/gameport.c
+@@ -87,12 +87,12 @@ static int gameport_measure_speed(struct gameport *gameport)
tx = 1 << 30;
for(i = 0; i < 50; i++) {
@@ -30,7 +31,7 @@ Index: linux-3.4/drivers/input/gameport/gameport.c
udelay(i * 10);
if ((t = DELTA(t2,t1) - DELTA(t3,t2)) < tx) tx = t;
}
-@@ -111,11 +111,11 @@ static int gameport_measure_speed(struct
+@@ -111,11 +111,11 @@ static int gameport_measure_speed(struct gameport *gameport)
tx = 1 << 30;
for(i = 0; i < 50; i++) {
@@ -44,3 +45,6 @@ Index: linux-3.4/drivers/input/gameport/gameport.c
udelay(i * 10);
if (t2 - t1 < tx) tx = t2 - t1;
}
+--
+1.7.10.4
+
diff --git a/patches/acpi-use-local-irq-nort.patch b/patches/0068-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch
index afa44ee..952ed5c 100644
--- a/patches/acpi-use-local-irq-nort.patch
+++ b/patches/0068-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch
@@ -1,19 +1,19 @@
+From 7677bffe001a6454b0143970ace9db38cec9601f Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 21 Jul 2009 22:54:51 +0200
-Subject: acpi: Do not disable interrupts on PREEMPT_RT
+Subject: [PATCH 068/254] acpi: Do not disable interrupts on PREEMPT_RT
Use the local_irq_*_nort() variants.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
arch/x86/include/asm/acpi.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-Index: linux-3.4/arch/x86/include/asm/acpi.h
-===================================================================
---- linux-3.4.orig/arch/x86/include/asm/acpi.h
-+++ linux-3.4/arch/x86/include/asm/acpi.h
+diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
+index 610001d..c1c23d2 100644
+--- a/arch/x86/include/asm/acpi.h
++++ b/arch/x86/include/asm/acpi.h
@@ -51,8 +51,8 @@
#define ACPI_ASM_MACROS
@@ -25,3 +25,6 @@ Index: linux-3.4/arch/x86/include/asm/acpi.h
#define ACPI_FLUSH_CPU_CACHE() wbinvd()
int __acpi_acquire_global_lock(unsigned int *lock);
+--
+1.7.10.4
+
diff --git a/patches/user-use-local-irq-nort.patch b/patches/0069-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch
index eb2ab4d..94ba5be 100644
--- a/patches/user-use-local-irq-nort.patch
+++ b/patches/0069-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch
@@ -1,20 +1,21 @@
+From d3eef6cd1a0c43f0610b726713557f2bd817a0ad Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 21 Jul 2009 23:06:05 +0200
-Subject: core: Do not disable interrupts on RT in kernel/users.c
+Subject: [PATCH 069/254] core: Do not disable interrupts on RT in
+ kernel/users.c
Use the local_irq_*_nort variants to reduce latencies in RT. The code
is serialized by the locks. No need to disable interrupts.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
kernel/user.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-Index: linux-3.4/kernel/user.c
-===================================================================
---- linux-3.4.orig/kernel/user.c
-+++ linux-3.4/kernel/user.c
+diff --git a/kernel/user.c b/kernel/user.c
+index 71dd236..b831e51 100644
+--- a/kernel/user.c
++++ b/kernel/user.c
@@ -129,11 +129,11 @@ void free_uid(struct user_struct *up)
if (!up)
return;
@@ -29,3 +30,6 @@ Index: linux-3.4/kernel/user.c
}
struct user_struct *alloc_uid(struct user_namespace *ns, uid_t uid)
+--
+1.7.10.4
+
diff --git a/patches/resource-counters-use-localirq-nort.patch b/patches/0070-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch
index f2a249d..7721651 100644
--- a/patches/resource-counters-use-localirq-nort.patch
+++ b/patches/0070-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch
@@ -1,6 +1,8 @@
+From 834499fed1495bb67a3f384342e0ba2b9b8d3118 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:44:33 -0500
-Subject: core: Do not disable interrupts on RT in res_counter.c
+Subject: [PATCH 070/254] core: Do not disable interrupts on RT in
+ res_counter.c
Frederic Weisbecker reported this warning:
@@ -41,16 +43,15 @@ So replace it with _nort(). This code needs a second look.
Reported-by: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
kernel/res_counter.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
-Index: linux-3.4/kernel/res_counter.c
-===================================================================
---- linux-3.4.orig/kernel/res_counter.c
-+++ linux-3.4/kernel/res_counter.c
-@@ -43,7 +43,7 @@ int res_counter_charge(struct res_counte
+diff --git a/kernel/res_counter.c b/kernel/res_counter.c
+index d508363..402f91a 100644
+--- a/kernel/res_counter.c
++++ b/kernel/res_counter.c
+@@ -43,7 +43,7 @@ int res_counter_charge(struct res_counter *counter, unsigned long val,
struct res_counter *c, *u;
*limit_fail_at = NULL;
@@ -68,7 +69,7 @@ Index: linux-3.4/kernel/res_counter.c
return ret;
}
-@@ -104,13 +104,13 @@ void res_counter_uncharge(struct res_cou
+@@ -104,13 +104,13 @@ void res_counter_uncharge(struct res_counter *counter, unsigned long val)
unsigned long flags;
struct res_counter *c;
@@ -84,3 +85,6 @@ Index: linux-3.4/kernel/res_counter.c
}
+--
+1.7.10.4
+
diff --git a/patches/usb-hcd-use-local-irq-nort.patch b/patches/0071-usb-Use-local_irq_-_nort-variants.patch
index 2a62a82..88dd909 100644
--- a/patches/usb-hcd-use-local-irq-nort.patch
+++ b/patches/0071-usb-Use-local_irq_-_nort-variants.patch
@@ -1,22 +1,22 @@
+From eb18b95789d4c170919dac4c57597593cea18b58 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <srostedt@redhat.com>
Date: Fri, 3 Jul 2009 08:44:26 -0500
-Subject: usb: Use local_irq_*_nort() variants
+Subject: [PATCH 071/254] usb: Use local_irq_*_nort() variants
[ tglx: Now that irqf_disabled is dead we should kill that ]
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
drivers/usb/core/hcd.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-Index: linux-3.4/drivers/usb/core/hcd.c
-===================================================================
---- linux-3.4.orig/drivers/usb/core/hcd.c
-+++ linux-3.4/drivers/usb/core/hcd.c
-@@ -2143,7 +2143,7 @@ irqreturn_t usb_hcd_irq (int irq, void *
+diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
+index 140d3e1..82ea8bf 100644
+--- a/drivers/usb/core/hcd.c
++++ b/drivers/usb/core/hcd.c
+@@ -2143,7 +2143,7 @@ irqreturn_t usb_hcd_irq (int irq, void *__hcd)
* when the first handler doesn't use it. So let's just
* assume it's never used.
*/
@@ -25,7 +25,7 @@ Index: linux-3.4/drivers/usb/core/hcd.c
if (unlikely(HCD_DEAD(hcd) || !HCD_HW_ACCESSIBLE(hcd)))
rc = IRQ_NONE;
-@@ -2152,7 +2152,7 @@ irqreturn_t usb_hcd_irq (int irq, void *
+@@ -2152,7 +2152,7 @@ irqreturn_t usb_hcd_irq (int irq, void *__hcd)
else
rc = IRQ_HANDLED;
@@ -34,3 +34,6 @@ Index: linux-3.4/drivers/usb/core/hcd.c
return rc;
}
EXPORT_SYMBOL_GPL(usb_hcd_irq);
+--
+1.7.10.4
+
diff --git a/patches/tty-use-local-irq-nort.patch b/patches/0072-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch
index e34dc82..efc7cc6 100644
--- a/patches/tty-use-local-irq-nort.patch
+++ b/patches/0072-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch
@@ -1,6 +1,7 @@
+From 75f888a7c9fa4a93214dac118b487db984ccf0d9 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 17 Aug 2009 19:49:19 +0200
-Subject: tty: Do not disable interrupts in put_ldisc on -rt
+Subject: [PATCH 072/254] tty: Do not disable interrupts in put_ldisc on -rt
Fixes the following on PREEMPT_RT:
@@ -20,16 +21,15 @@ Call Trace:
....
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
drivers/tty/tty_ldisc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-Index: linux-3.4/drivers/tty/tty_ldisc.c
-===================================================================
---- linux-3.4.orig/drivers/tty/tty_ldisc.c
-+++ linux-3.4/drivers/tty/tty_ldisc.c
-@@ -53,7 +53,7 @@ static void put_ldisc(struct tty_ldisc *
+diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c
+index 24b95db..7894759 100644
+--- a/drivers/tty/tty_ldisc.c
++++ b/drivers/tty/tty_ldisc.c
+@@ -53,7 +53,7 @@ static void put_ldisc(struct tty_ldisc *ld)
* We really want an "atomic_dec_and_lock_irqsave()",
* but we don't have it, so this does it by hand.
*/
@@ -38,7 +38,7 @@ Index: linux-3.4/drivers/tty/tty_ldisc.c
if (atomic_dec_and_lock(&ld->users, &tty_ldisc_lock)) {
struct tty_ldisc_ops *ldo = ld->ops;
-@@ -64,7 +64,7 @@ static void put_ldisc(struct tty_ldisc *
+@@ -64,7 +64,7 @@ static void put_ldisc(struct tty_ldisc *ld)
kfree(ld);
return;
}
@@ -47,3 +47,6 @@ Index: linux-3.4/drivers/tty/tty_ldisc.c
wake_up(&tty_ldisc_idle);
}
+--
+1.7.10.4
+
diff --git a/patches/mm-scatterlist-dont-disable-irqs-on-RT.patch b/patches/0073-mm-scatterlist-dont-disable-irqs-on-RT.patch
index 3d3f2b9..1ecbdbe 100644
--- a/patches/mm-scatterlist-dont-disable-irqs-on-RT.patch
+++ b/patches/0073-mm-scatterlist-dont-disable-irqs-on-RT.patch
@@ -1,17 +1,18 @@
+From bf3397f61bdb9f299af6b6148b21c0be7e271304 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 3 Jul 2009 08:44:34 -0500
-Subject: mm: scatterlist dont disable irqs on RT
+Subject: [PATCH 073/254] mm: scatterlist dont disable irqs on RT
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
lib/scatterlist.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
-Index: linux-3.4/lib/scatterlist.c
-===================================================================
---- linux-3.4.orig/lib/scatterlist.c
-+++ linux-3.4/lib/scatterlist.c
-@@ -423,7 +423,7 @@ void sg_miter_stop(struct sg_mapping_ite
+diff --git a/lib/scatterlist.c b/lib/scatterlist.c
+index 6096e89..4becb6d 100644
+--- a/lib/scatterlist.c
++++ b/lib/scatterlist.c
+@@ -423,7 +423,7 @@ void sg_miter_stop(struct sg_mapping_iter *miter)
flush_kernel_dcache_page(miter->page);
if (miter->__flags & SG_MITER_ATOMIC) {
@@ -20,7 +21,7 @@ Index: linux-3.4/lib/scatterlist.c
kunmap_atomic(miter->addr);
} else
kunmap(miter->page);
-@@ -463,7 +463,7 @@ static size_t sg_copy_buffer(struct scat
+@@ -463,7 +463,7 @@ static size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents,
sg_miter_start(&miter, sgl, nents, sg_flags);
@@ -29,7 +30,7 @@ Index: linux-3.4/lib/scatterlist.c
while (sg_miter_next(&miter) && offset < buflen) {
unsigned int len;
-@@ -480,7 +480,7 @@ static size_t sg_copy_buffer(struct scat
+@@ -480,7 +480,7 @@ static size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents,
sg_miter_stop(&miter);
@@ -38,3 +39,6 @@ Index: linux-3.4/lib/scatterlist.c
return offset;
}
+--
+1.7.10.4
+
diff --git a/patches/signal-fix-up-rcu-wreckage.patch b/patches/0074-signal-fix-up-rcu-wreckage.patch.patch
index f92cc06..8b47c40 100644
--- a/patches/signal-fix-up-rcu-wreckage.patch
+++ b/patches/0074-signal-fix-up-rcu-wreckage.patch.patch
@@ -1,17 +1,18 @@
-Subject: signal-fix-up-rcu-wreckage.patch
+From c2fccbe8eb5c7c44a973271b204242c743b4c426 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 22 Jul 2011 08:07:08 +0200
+Subject: [PATCH 074/254] signal-fix-up-rcu-wreckage.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/signal.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
-Index: linux-3.4/kernel/signal.c
-===================================================================
---- linux-3.4.orig/kernel/signal.c
-+++ linux-3.4/kernel/signal.c
-@@ -1401,12 +1401,12 @@ struct sighand_struct *__lock_task_sigha
+diff --git a/kernel/signal.c b/kernel/signal.c
+index 65cb5b4..3d32651 100644
+--- a/kernel/signal.c
++++ b/kernel/signal.c
+@@ -1401,12 +1401,12 @@ struct sighand_struct *__lock_task_sighand(struct task_struct *tsk,
struct sighand_struct *sighand;
for (;;) {
@@ -26,7 +27,7 @@ Index: linux-3.4/kernel/signal.c
break;
}
-@@ -1417,7 +1417,7 @@ struct sighand_struct *__lock_task_sigha
+@@ -1417,7 +1417,7 @@ struct sighand_struct *__lock_task_sighand(struct task_struct *tsk,
}
spin_unlock(&sighand->siglock);
rcu_read_unlock();
@@ -35,3 +36,6 @@ Index: linux-3.4/kernel/signal.c
}
return sighand;
+--
+1.7.10.4
+
diff --git a/patches/net-wireless-warn-nort.patch b/patches/0075-net-wireless-warn-nort.patch.patch
index ef38c04..1ee3dbe 100644
--- a/patches/net-wireless-warn-nort.patch
+++ b/patches/0075-net-wireless-warn-nort.patch.patch
@@ -1,17 +1,18 @@
-Subject: net-wireless-warn-nort.patch
+From fb99320d41e5b333f15651827b5e6932045e05ec Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 21 Jul 2011 21:05:33 +0200
+Subject: [PATCH 075/254] net-wireless-warn-nort.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
net/mac80211/rx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/net/mac80211/rx.c
-===================================================================
---- linux-3.4.orig/net/mac80211/rx.c
-+++ linux-3.4/net/mac80211/rx.c
-@@ -3015,7 +3015,7 @@ void ieee80211_rx(struct ieee80211_hw *h
+diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
+index d64e285..5ddd808 100644
+--- a/net/mac80211/rx.c
++++ b/net/mac80211/rx.c
+@@ -3015,7 +3015,7 @@ void ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb)
struct ieee80211_supported_band *sband;
struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
@@ -20,3 +21,6 @@ Index: linux-3.4/net/mac80211/rx.c
if (WARN_ON(status->band < 0 ||
status->band >= IEEE80211_NUM_BANDS))
+--
+1.7.10.4
+
diff --git a/patches/mm-cgroup-page-bit-spinlock.patch b/patches/0076-mm-Replace-cgroup_page-bit-spinlock.patch
index 1d7ed9f..4fe6891 100644
--- a/patches/mm-cgroup-page-bit-spinlock.patch
+++ b/patches/0076-mm-Replace-cgroup_page-bit-spinlock.patch
@@ -1,20 +1,20 @@
+From 8343b922e8f823a195cac3614607c7f7494fdc2e Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 19 Aug 2009 09:56:42 +0200
-Subject: mm: Replace cgroup_page bit spinlock
+Subject: [PATCH 076/254] mm: Replace cgroup_page bit spinlock
Bit spinlocks are not working on RT. Replace them.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
include/linux/page_cgroup.h | 15 +++++++++++++++
mm/page_cgroup.c | 11 +++++++++++
2 files changed, 26 insertions(+)
-Index: linux-3.4/include/linux/page_cgroup.h
-===================================================================
---- linux-3.4.orig/include/linux/page_cgroup.h
-+++ linux-3.4/include/linux/page_cgroup.h
+diff --git a/include/linux/page_cgroup.h b/include/linux/page_cgroup.h
+index a88cdba..5f0fe2d 100644
+--- a/include/linux/page_cgroup.h
++++ b/include/linux/page_cgroup.h
@@ -24,6 +24,9 @@ enum {
*/
struct page_cgroup {
@@ -25,7 +25,7 @@ Index: linux-3.4/include/linux/page_cgroup.h
struct mem_cgroup *mem_cgroup;
};
-@@ -74,12 +77,20 @@ static inline void lock_page_cgroup(stru
+@@ -74,12 +77,20 @@ static inline void lock_page_cgroup(struct page_cgroup *pc)
* Don't take this lock in IRQ context.
* This lock is for pc->mem_cgroup, USED, MIGRATION
*/
@@ -46,7 +46,7 @@ Index: linux-3.4/include/linux/page_cgroup.h
}
#else /* CONFIG_CGROUP_MEM_RES_CTLR */
-@@ -102,6 +113,10 @@ static inline void __init page_cgroup_in
+@@ -102,6 +113,10 @@ static inline void __init page_cgroup_init_flatmem(void)
{
}
@@ -57,10 +57,10 @@ Index: linux-3.4/include/linux/page_cgroup.h
#endif /* CONFIG_CGROUP_MEM_RES_CTLR */
#include <linux/swap.h>
-Index: linux-3.4/mm/page_cgroup.c
-===================================================================
---- linux-3.4.orig/mm/page_cgroup.c
-+++ linux-3.4/mm/page_cgroup.c
+diff --git a/mm/page_cgroup.c b/mm/page_cgroup.c
+index 1ccbd71..84f3ce8 100644
+--- a/mm/page_cgroup.c
++++ b/mm/page_cgroup.c
@@ -13,6 +13,14 @@
static unsigned long total_usage;
@@ -76,7 +76,7 @@ Index: linux-3.4/mm/page_cgroup.c
#if !defined(CONFIG_SPARSEMEM)
-@@ -60,6 +68,7 @@ static int __init alloc_node_page_cgroup
+@@ -60,6 +68,7 @@ static int __init alloc_node_page_cgroup(int nid)
return -ENOMEM;
NODE_DATA(nid)->node_page_cgroup = base;
total_usage += table_size;
@@ -84,7 +84,7 @@ Index: linux-3.4/mm/page_cgroup.c
return 0;
}
-@@ -150,6 +159,8 @@ static int __meminit init_section_page_c
+@@ -150,6 +159,8 @@ static int __meminit init_section_page_cgroup(unsigned long pfn, int nid)
return -ENOMEM;
}
@@ -93,3 +93,6 @@ Index: linux-3.4/mm/page_cgroup.c
/*
* The passed "pfn" may not be aligned to SECTION. For the calculation
* we need to apply a mask.
+--
+1.7.10.4
+
diff --git a/patches/fs-replace-bh_uptodate_lock-for-rt.patch b/patches/0077-buffer_head-Replace-bh_uptodate_lock-for-rt.patch
index 100f00a..c521787 100644
--- a/patches/fs-replace-bh_uptodate_lock-for-rt.patch
+++ b/patches/0077-buffer_head-Replace-bh_uptodate_lock-for-rt.patch
@@ -1,6 +1,7 @@
+From badb8574e739d7e6e326a480f82b6ecdebd55e7c Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 18 Mar 2011 09:18:52 +0100
-Subject: buffer_head: Replace bh_uptodate_lock for -rt
+Subject: [PATCH 077/254] buffer_head: Replace bh_uptodate_lock for -rt
Wrap the bit_spin_lock calls into a separate inline and add the RT
replacements with a real spinlock.
@@ -12,11 +13,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
include/linux/buffer_head.h | 34 ++++++++++++++++++++++++++++++++++
3 files changed, 44 insertions(+), 21 deletions(-)
-Index: linux-3.4/fs/buffer.c
-===================================================================
---- linux-3.4.orig/fs/buffer.c
-+++ linux-3.4/fs/buffer.c
-@@ -281,8 +281,7 @@ static void end_buffer_async_read(struct
+diff --git a/fs/buffer.c b/fs/buffer.c
+index ad5938c..38956b5 100644
+--- a/fs/buffer.c
++++ b/fs/buffer.c
+@@ -281,8 +281,7 @@ static void end_buffer_async_read(struct buffer_head *bh, int uptodate)
* decide that the page is now completely done.
*/
first = page_buffers(page);
@@ -26,7 +27,7 @@ Index: linux-3.4/fs/buffer.c
clear_buffer_async_read(bh);
unlock_buffer(bh);
tmp = bh;
-@@ -295,8 +294,7 @@ static void end_buffer_async_read(struct
+@@ -295,8 +294,7 @@ static void end_buffer_async_read(struct buffer_head *bh, int uptodate)
}
tmp = tmp->b_this_page;
} while (tmp != bh);
@@ -36,7 +37,7 @@ Index: linux-3.4/fs/buffer.c
/*
* If none of the buffers had errors and they are all
-@@ -308,9 +306,7 @@ static void end_buffer_async_read(struct
+@@ -308,9 +306,7 @@ static void end_buffer_async_read(struct buffer_head *bh, int uptodate)
return;
still_busy:
@@ -47,7 +48,7 @@ Index: linux-3.4/fs/buffer.c
}
/*
-@@ -344,8 +340,7 @@ void end_buffer_async_write(struct buffe
+@@ -344,8 +340,7 @@ void end_buffer_async_write(struct buffer_head *bh, int uptodate)
}
first = page_buffers(page);
@@ -57,7 +58,7 @@ Index: linux-3.4/fs/buffer.c
clear_buffer_async_write(bh);
unlock_buffer(bh);
-@@ -357,15 +352,12 @@ void end_buffer_async_write(struct buffe
+@@ -357,15 +352,12 @@ void end_buffer_async_write(struct buffer_head *bh, int uptodate)
}
tmp = tmp->b_this_page;
}
@@ -75,7 +76,7 @@ Index: linux-3.4/fs/buffer.c
}
EXPORT_SYMBOL(end_buffer_async_write);
-@@ -3185,6 +3177,7 @@ struct buffer_head *alloc_buffer_head(gf
+@@ -3187,6 +3179,7 @@ struct buffer_head *alloc_buffer_head(gfp_t gfp_flags)
struct buffer_head *ret = kmem_cache_zalloc(bh_cachep, gfp_flags);
if (ret) {
INIT_LIST_HEAD(&ret->b_assoc_buffers);
@@ -83,11 +84,11 @@ Index: linux-3.4/fs/buffer.c
preempt_disable();
__this_cpu_inc(bh_accounting.nr);
recalc_bh_state();
-Index: linux-3.4/fs/ntfs/aops.c
-===================================================================
---- linux-3.4.orig/fs/ntfs/aops.c
-+++ linux-3.4/fs/ntfs/aops.c
-@@ -108,8 +108,7 @@ static void ntfs_end_buffer_async_read(s
+diff --git a/fs/ntfs/aops.c b/fs/ntfs/aops.c
+index fa9c05f..4e4ca73 100644
+--- a/fs/ntfs/aops.c
++++ b/fs/ntfs/aops.c
+@@ -108,8 +108,7 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate)
"0x%llx.", (unsigned long long)bh->b_blocknr);
}
first = page_buffers(page);
@@ -97,7 +98,7 @@ Index: linux-3.4/fs/ntfs/aops.c
clear_buffer_async_read(bh);
unlock_buffer(bh);
tmp = bh;
-@@ -124,8 +123,7 @@ static void ntfs_end_buffer_async_read(s
+@@ -124,8 +123,7 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate)
}
tmp = tmp->b_this_page;
} while (tmp != bh);
@@ -107,7 +108,7 @@ Index: linux-3.4/fs/ntfs/aops.c
/*
* If none of the buffers had errors then we can set the page uptodate,
* but we first have to perform the post read mst fixups, if the
-@@ -160,9 +158,7 @@ static void ntfs_end_buffer_async_read(s
+@@ -160,9 +158,7 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate)
unlock_page(page);
return;
still_busy:
@@ -118,10 +119,10 @@ Index: linux-3.4/fs/ntfs/aops.c
}
/**
-Index: linux-3.4/include/linux/buffer_head.h
-===================================================================
---- linux-3.4.orig/include/linux/buffer_head.h
-+++ linux-3.4/include/linux/buffer_head.h
+diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h
+index 458f497..5c16cf1 100644
+--- a/include/linux/buffer_head.h
++++ b/include/linux/buffer_head.h
@@ -72,8 +72,42 @@ struct buffer_head {
struct address_space *b_assoc_map; /* mapping this buffer is
associated with */
@@ -165,3 +166,6 @@ Index: linux-3.4/include/linux/buffer_head.h
/*
* macro tricks to expand the set_buffer_foo(), clear_buffer_foo()
* and buffer_foo() functions.
+--
+1.7.10.4
+
diff --git a/patches/fs-jbd-replace-bh_state-lock.patch b/patches/0078-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch
index 90a31fc..4867c59 100644
--- a/patches/fs-jbd-replace-bh_state-lock.patch
+++ b/patches/0078-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch
@@ -1,6 +1,8 @@
+From dc3ab387fa9a9df2f28a78b0901d2a2101ce9a36 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 18 Mar 2011 10:11:25 +0100
-Subject: fs: jbd/jbd2: Make state lock and journal head lock rt safe
+Subject: [PATCH 078/254] fs: jbd/jbd2: Make state lock and journal head lock
+ rt safe
bit_spin_locks break under RT.
@@ -12,11 +14,15 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
include/linux/buffer_head.h | 10 ++++++++++
include/linux/jbd_common.h | 24 ++++++++++++++++++++++++
2 files changed, 34 insertions(+)
+---
+ include/linux/buffer_head.h | 10 ++++++++++
+ include/linux/jbd_common.h | 24 ++++++++++++++++++++++++
+ 2 files changed, 34 insertions(+)
-Index: linux-3.4/include/linux/buffer_head.h
-===================================================================
---- linux-3.4.orig/include/linux/buffer_head.h
-+++ linux-3.4/include/linux/buffer_head.h
+diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h
+index 5c16cf1..3f8e27b 100644
+--- a/include/linux/buffer_head.h
++++ b/include/linux/buffer_head.h
@@ -74,6 +74,11 @@ struct buffer_head {
atomic_t b_count; /* users using this buffer_head */
#ifdef CONFIG_PREEMPT_RT_BASE
@@ -29,7 +35,7 @@ Index: linux-3.4/include/linux/buffer_head.h
#endif
};
-@@ -105,6 +110,11 @@ static inline void buffer_head_init_lock
+@@ -105,6 +110,11 @@ static inline void buffer_head_init_locks(struct buffer_head *bh)
{
#ifdef CONFIG_PREEMPT_RT_BASE
spin_lock_init(&bh->b_uptodate_lock);
@@ -41,11 +47,11 @@ Index: linux-3.4/include/linux/buffer_head.h
#endif
}
-Index: linux-3.4/include/linux/jbd_common.h
-===================================================================
---- linux-3.4.orig/include/linux/jbd_common.h
-+++ linux-3.4/include/linux/jbd_common.h
-@@ -37,32 +37,56 @@ static inline struct journal_head *bh2jh
+diff --git a/include/linux/jbd_common.h b/include/linux/jbd_common.h
+index 6230f85..11c313e 100644
+--- a/include/linux/jbd_common.h
++++ b/include/linux/jbd_common.h
+@@ -37,32 +37,56 @@ static inline struct journal_head *bh2jh(struct buffer_head *bh)
static inline void jbd_lock_bh_state(struct buffer_head *bh)
{
@@ -102,3 +108,6 @@ Index: linux-3.4/include/linux/jbd_common.h
}
#endif
+--
+1.7.10.4
+
diff --git a/patches/genirq-nodebug-shirq.patch b/patches/0079-genirq-Disable-DEBUG_SHIRQ-for-rt.patch
index e58f287..d368061 100644
--- a/patches/genirq-nodebug-shirq.patch
+++ b/patches/0079-genirq-Disable-DEBUG_SHIRQ-for-rt.patch
@@ -1,16 +1,17 @@
+From 4a8f0a341ad126bbb3c6e1216ecdd2aafc7a142d Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Sun, 18 Mar 2011 10:22:04 +0100
-Subject: genirq: Disable DEBUG_SHIRQ for rt
+Date: Fri, 18 Mar 2011 10:22:04 +0100
+Subject: [PATCH 079/254] genirq: Disable DEBUG_SHIRQ for rt
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
lib/Kconfig.debug | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/lib/Kconfig.debug
-===================================================================
---- linux-3.4.orig/lib/Kconfig.debug
-+++ linux-3.4/lib/Kconfig.debug
+diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
+index 6777153..1d80795 100644
+--- a/lib/Kconfig.debug
++++ b/lib/Kconfig.debug
@@ -151,7 +151,7 @@ config DEBUG_KERNEL
config DEBUG_SHIRQ
@@ -20,3 +21,6 @@ Index: linux-3.4/lib/Kconfig.debug
help
Enable this to generate a spurious interrupt as soon as a shared
interrupt handler is registered, and just before one is deregistered.
+--
+1.7.10.4
+
diff --git a/patches/genirq-disable-random-call-on-preempt-rt.patch b/patches/0080-genirq-Disable-random-call-on-preempt-rt.patch
index bac9e80..9c7ec85 100644
--- a/patches/genirq-disable-random-call-on-preempt-rt.patch
+++ b/patches/0080-genirq-Disable-random-call-on-preempt-rt.patch
@@ -1,21 +1,21 @@
+From 1389d285dc7c87f61864eec3ffa3a1608d30b6ac Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 21 Jul 2009 16:07:37 +0200
-Subject: genirq: Disable random call on preempt-rt
+Subject: [PATCH 080/254] genirq: Disable random call on preempt-rt
The random call introduces high latencies and is almost
unused. Disable it for -rt.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
kernel/irq/handle.c | 3 +++
1 file changed, 3 insertions(+)
-Index: linux-3.4/kernel/irq/handle.c
-===================================================================
---- linux-3.4.orig/kernel/irq/handle.c
-+++ linux-3.4/kernel/irq/handle.c
-@@ -172,8 +172,11 @@ handle_irq_event_percpu(struct irq_desc
+diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c
+index bdb1803..982793c 100644
+--- a/kernel/irq/handle.c
++++ b/kernel/irq/handle.c
+@@ -172,8 +172,11 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action)
action = action->next;
} while (action);
@@ -27,3 +27,6 @@ Index: linux-3.4/kernel/irq/handle.c
if (!noirqdebug)
note_interrupt(irq, desc, retval);
+--
+1.7.10.4
+
diff --git a/patches/genirq-disable-irqpoll-on-rt.patch b/patches/0081-genirq-disable-irqpoll-on-rt.patch
index 5bddf23..f20c9a6 100644
--- a/patches/genirq-disable-irqpoll-on-rt.patch
+++ b/patches/0081-genirq-disable-irqpoll-on-rt.patch
@@ -1,21 +1,21 @@
+From 50b42da40ad140621e6ed04cdde57a861f3c0b3e Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:57 -0500
-Subject: genirq: disable irqpoll on -rt
+Subject: [PATCH 081/254] genirq: disable irqpoll on -rt
Creates long latencies for no value
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
kernel/irq/spurious.c | 10 ++++++++++
1 file changed, 10 insertions(+)
-Index: linux-3.4/kernel/irq/spurious.c
-===================================================================
---- linux-3.4.orig/kernel/irq/spurious.c
-+++ linux-3.4/kernel/irq/spurious.c
-@@ -341,6 +341,11 @@ MODULE_PARM_DESC(noirqdebug, "Disable ir
+diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c
+index 611cd60..d1c80fa 100644
+--- a/kernel/irq/spurious.c
++++ b/kernel/irq/spurious.c
+@@ -341,6 +341,11 @@ MODULE_PARM_DESC(noirqdebug, "Disable irq lockup detection when true");
static int __init irqfixup_setup(char *str)
{
@@ -39,3 +39,6 @@ Index: linux-3.4/kernel/irq/spurious.c
irqfixup = 2;
printk(KERN_WARNING "Misrouted IRQ fixup and polling support "
"enabled\n");
+--
+1.7.10.4
+
diff --git a/patches/genirq-force-threading.patch b/patches/0082-genirq-force-threading.patch.patch
index b841d80..f864384 100644
--- a/patches/genirq-force-threading.patch
+++ b/patches/0082-genirq-force-threading.patch.patch
@@ -1,6 +1,7 @@
-Subject: genirq-force-threading.patch
+From 72c869543eb7baec36ab1419c69947ced668e8b3 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Sun, 03 Apr 2011 11:57:29 +0200
+Date: Sun, 3 Apr 2011 11:57:29 +0200
+Subject: [PATCH 082/254] genirq-force-threading.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/irq/manage.c | 2 ++
2 files changed, 8 insertions(+), 2 deletions(-)
-Index: linux-3.4/include/linux/interrupt.h
-===================================================================
---- linux-3.4.orig/include/linux/interrupt.h
-+++ linux-3.4/include/linux/interrupt.h
-@@ -394,9 +394,13 @@ static inline int disable_irq_wake(unsig
+diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
+index d2cc272..9027bde 100644
+--- a/include/linux/interrupt.h
++++ b/include/linux/interrupt.h
+@@ -394,9 +394,13 @@ static inline int disable_irq_wake(unsigned int irq)
#ifdef CONFIG_IRQ_FORCED_THREADING
@@ -28,10 +29,10 @@ Index: linux-3.4/include/linux/interrupt.h
#endif
#ifndef __ARCH_SET_SOFTIRQ_PENDING
-Index: linux-3.4/kernel/irq/manage.c
-===================================================================
---- linux-3.4.orig/kernel/irq/manage.c
-+++ linux-3.4/kernel/irq/manage.c
+diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
+index 89a3ea8..975b3a1 100644
+--- a/kernel/irq/manage.c
++++ b/kernel/irq/manage.c
@@ -18,6 +18,7 @@
#include "internals.h"
@@ -40,7 +41,7 @@ Index: linux-3.4/kernel/irq/manage.c
__read_mostly bool force_irqthreads;
static int __init setup_forced_irqthreads(char *arg)
-@@ -26,6 +27,7 @@ static int __init setup_forced_irqthread
+@@ -26,6 +27,7 @@ static int __init setup_forced_irqthreads(char *arg)
return 0;
}
early_param("threadirqs", setup_forced_irqthreads);
@@ -48,3 +49,6 @@ Index: linux-3.4/kernel/irq/manage.c
#endif
/**
+--
+1.7.10.4
+
diff --git a/patches/drivers-net-fix-livelock-issues.patch b/patches/0083-drivers-net-fix-livelock-issues.patch
index 4e133ee..4ab376e 100644
--- a/patches/drivers-net-fix-livelock-issues.patch
+++ b/patches/0083-drivers-net-fix-livelock-issues.patch
@@ -1,6 +1,7 @@
+From f9e8367cb4930badcc5c5911b0c900f2edaa06e2 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 20 Jun 2009 11:36:54 +0200
-Subject: drivers/net: fix livelock issues
+Subject: [PATCH 083/254] drivers/net: fix livelock issues
Preempt-RT runs into a live lock issue with the NETDEV_TX_LOCKED micro
optimization. The reason is that the softirq thread is rescheduling
@@ -10,7 +11,6 @@ monoplize the CPU and livelock on UP systems.
Remove it.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 6 +-----
drivers/net/ethernet/atheros/atl1e/atl1e_main.c | 3 +--
@@ -21,11 +21,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
drivers/net/rionet.c | 6 +-----
7 files changed, 10 insertions(+), 31 deletions(-)
-Index: linux-3.4/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-===================================================================
---- linux-3.4.orig/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-+++ linux-3.4/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-@@ -2240,11 +2240,7 @@ static netdev_tx_t atl1c_xmit_frame(stru
+diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+index 1ef0c92..7cb889c 100644
+--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
++++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+@@ -2240,11 +2240,7 @@ static netdev_tx_t atl1c_xmit_frame(struct sk_buff *skb,
}
tpd_req = atl1c_cal_tpd_req(skb);
@@ -38,11 +38,11 @@ Index: linux-3.4/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
if (atl1c_tpd_avail(adapter, type) < tpd_req) {
/* no enough descriptor, just stop queue */
-Index: linux-3.4/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
-===================================================================
---- linux-3.4.orig/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
-+++ linux-3.4/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
-@@ -1822,8 +1822,7 @@ static netdev_tx_t atl1e_xmit_frame(stru
+diff --git a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
+index 93ff2b2..cecc414 100644
+--- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
++++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
+@@ -1822,8 +1822,7 @@ static netdev_tx_t atl1e_xmit_frame(struct sk_buff *skb,
return NETDEV_TX_OK;
}
tpd_req = atl1e_cal_tdp_req(skb);
@@ -52,11 +52,11 @@ Index: linux-3.4/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
if (atl1e_tpd_avail(adapter) < tpd_req) {
/* no enough descriptor, just stop queue */
-Index: linux-3.4/drivers/net/ethernet/chelsio/cxgb/sge.c
-===================================================================
---- linux-3.4.orig/drivers/net/ethernet/chelsio/cxgb/sge.c
-+++ linux-3.4/drivers/net/ethernet/chelsio/cxgb/sge.c
-@@ -1678,8 +1678,7 @@ static int t1_sge_tx(struct sk_buff *skb
+diff --git a/drivers/net/ethernet/chelsio/cxgb/sge.c b/drivers/net/ethernet/chelsio/cxgb/sge.c
+index 47a8435..279c04e 100644
+--- a/drivers/net/ethernet/chelsio/cxgb/sge.c
++++ b/drivers/net/ethernet/chelsio/cxgb/sge.c
+@@ -1678,8 +1678,7 @@ static int t1_sge_tx(struct sk_buff *skb, struct adapter *adapter,
struct cmdQ *q = &sge->cmdQ[qid];
unsigned int credits, pidx, genbit, count, use_sched_skb = 0;
@@ -66,11 +66,11 @@ Index: linux-3.4/drivers/net/ethernet/chelsio/cxgb/sge.c
reclaim_completed_tx(sge, q);
-Index: linux-3.4/drivers/net/ethernet/neterion/s2io.c
-===================================================================
---- linux-3.4.orig/drivers/net/ethernet/neterion/s2io.c
-+++ linux-3.4/drivers/net/ethernet/neterion/s2io.c
-@@ -4089,12 +4089,7 @@ static netdev_tx_t s2io_xmit(struct sk_b
+diff --git a/drivers/net/ethernet/neterion/s2io.c b/drivers/net/ethernet/neterion/s2io.c
+index 6338ef8..ad2f094 100644
+--- a/drivers/net/ethernet/neterion/s2io.c
++++ b/drivers/net/ethernet/neterion/s2io.c
+@@ -4089,12 +4089,7 @@ static netdev_tx_t s2io_xmit(struct sk_buff *skb, struct net_device *dev)
[skb->priority & (MAX_TX_FIFOS - 1)];
fifo = &mac_control->fifos[queue];
@@ -84,11 +84,11 @@ Index: linux-3.4/drivers/net/ethernet/neterion/s2io.c
if (sp->config.multiq) {
if (__netif_subqueue_stopped(dev, fifo->fifo_no)) {
-Index: linux-3.4/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
-===================================================================
---- linux-3.4.orig/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
-+++ linux-3.4/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
-@@ -2131,10 +2131,9 @@ static int pch_gbe_xmit_frame(struct sk_
+diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
+index 1e38d50..f017954 100644
+--- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
++++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
+@@ -2128,10 +2128,9 @@ static int pch_gbe_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
adapter->stats.tx_length_errors++;
return NETDEV_TX_OK;
}
@@ -102,11 +102,11 @@ Index: linux-3.4/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
if (unlikely(!PCH_GBE_DESC_UNUSED(tx_ring))) {
netif_stop_queue(netdev);
spin_unlock_irqrestore(&tx_ring->tx_lock, flags);
-Index: linux-3.4/drivers/net/ethernet/tehuti/tehuti.c
-===================================================================
---- linux-3.4.orig/drivers/net/ethernet/tehuti/tehuti.c
-+++ linux-3.4/drivers/net/ethernet/tehuti/tehuti.c
-@@ -1606,13 +1606,8 @@ static netdev_tx_t bdx_tx_transmit(struc
+diff --git a/drivers/net/ethernet/tehuti/tehuti.c b/drivers/net/ethernet/tehuti/tehuti.c
+index ad973ff..1afa33c 100644
+--- a/drivers/net/ethernet/tehuti/tehuti.c
++++ b/drivers/net/ethernet/tehuti/tehuti.c
+@@ -1606,13 +1606,8 @@ static netdev_tx_t bdx_tx_transmit(struct sk_buff *skb,
unsigned long flags;
ENTER;
@@ -122,11 +122,11 @@ Index: linux-3.4/drivers/net/ethernet/tehuti/tehuti.c
/* build tx descriptor */
BDX_ASSERT(f->m.wptr >= f->m.memsz); /* started with valid wptr */
-Index: linux-3.4/drivers/net/rionet.c
-===================================================================
---- linux-3.4.orig/drivers/net/rionet.c
-+++ linux-3.4/drivers/net/rionet.c
-@@ -176,11 +176,7 @@ static int rionet_start_xmit(struct sk_b
+diff --git a/drivers/net/rionet.c b/drivers/net/rionet.c
+index 91d2588..d4c418e 100644
+--- a/drivers/net/rionet.c
++++ b/drivers/net/rionet.c
+@@ -176,11 +176,7 @@ static int rionet_start_xmit(struct sk_buff *skb, struct net_device *ndev)
u16 destid;
unsigned long flags;
@@ -139,3 +139,6 @@ Index: linux-3.4/drivers/net/rionet.c
if ((rnet->tx_cnt + 1) > RIONET_TX_RING_SIZE) {
netif_stop_queue(ndev);
+--
+1.7.10.4
+
diff --git a/patches/drivers-net-vortex-fix-locking-issues.patch b/patches/0084-drivers-net-vortex-fix-locking-issues.patch
index 5fbd0ee..7223367 100644
--- a/patches/drivers-net-vortex-fix-locking-issues.patch
+++ b/patches/0084-drivers-net-vortex-fix-locking-issues.patch
@@ -1,6 +1,7 @@
+From 9cf115d6ea077948debb6e45c23c4d533566e673 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <rostedt@goodmis.org>
Date: Fri, 3 Jul 2009 08:30:00 -0500
-Subject: drivers/net: vortex fix locking issues
+Subject: [PATCH 084/254] drivers/net: vortex fix locking issues
Argh, cut and paste wasn't enough...
@@ -16,12 +17,15 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
1 file changed, 4 insertions(+), 4 deletions(-)
Signed-off-by: Ingo Molnar <mingo@elte.hu>
+---
+ drivers/net/ethernet/3com/3c59x.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
-Index: linux-3.4/drivers/net/ethernet/3com/3c59x.c
-===================================================================
---- linux-3.4.orig/drivers/net/ethernet/3com/3c59x.c
-+++ linux-3.4/drivers/net/ethernet/3com/3c59x.c
-@@ -843,9 +843,9 @@ static void poll_vortex(struct net_devic
+diff --git a/drivers/net/ethernet/3com/3c59x.c b/drivers/net/ethernet/3com/3c59x.c
+index e463d10..848aeea 100644
+--- a/drivers/net/ethernet/3com/3c59x.c
++++ b/drivers/net/ethernet/3com/3c59x.c
+@@ -843,9 +843,9 @@ static void poll_vortex(struct net_device *dev)
{
struct vortex_private *vp = netdev_priv(dev);
unsigned long flags;
@@ -33,7 +37,7 @@ Index: linux-3.4/drivers/net/ethernet/3com/3c59x.c
}
#endif
-@@ -1920,12 +1920,12 @@ static void vortex_tx_timeout(struct net
+@@ -1920,12 +1920,12 @@ static void vortex_tx_timeout(struct net_device *dev)
* Block interrupts because vortex_interrupt does a bare spin_lock()
*/
unsigned long flags;
@@ -48,3 +52,6 @@ Index: linux-3.4/drivers/net/ethernet/3com/3c59x.c
}
}
+--
+1.7.10.4
+
diff --git a/patches/drivers-net-gianfar-make-rt-aware.patch b/patches/0085-drivers-net-gianfar-Make-RT-aware.patch
index 9bfc2b4..6757597 100644
--- a/patches/drivers-net-gianfar-make-rt-aware.patch
+++ b/patches/0085-drivers-net-gianfar-Make-RT-aware.patch
@@ -1,6 +1,7 @@
+From 5c5f25631ca4074dc78d803b27a010316172bf11 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 1 Apr 2010 20:20:57 +0200
-Subject: drivers: net: gianfar: Make RT aware
+Subject: [PATCH 085/254] drivers: net: gianfar: Make RT aware
The adjust_link() disables interrupts before taking the queue
locks. On RT those locks are converted to "sleeping" locks and
@@ -10,15 +11,14 @@ local_irq_save/restore_nort.
Reported-by: Xianghua Xiao <xiaoxianghua@gmail.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Xianghua Xiao <xiaoxianghua@gmail.com>
-
---
drivers/net/ethernet/freescale/gianfar.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
-Index: linux-3.4/drivers/net/ethernet/freescale/gianfar.c
-===================================================================
---- linux-3.4.orig/drivers/net/ethernet/freescale/gianfar.c
-+++ linux-3.4/drivers/net/ethernet/freescale/gianfar.c
+diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c
+index e7bed53..3a42d36 100644
+--- a/drivers/net/ethernet/freescale/gianfar.c
++++ b/drivers/net/ethernet/freescale/gianfar.c
@@ -1643,7 +1643,7 @@ void stop_gfar(struct net_device *dev)
@@ -37,7 +37,7 @@ Index: linux-3.4/drivers/net/ethernet/freescale/gianfar.c
/* Free the IRQs */
if (priv->device_flags & FSL_GIANFAR_DEV_HAS_MULTI_INTR) {
-@@ -2948,7 +2948,7 @@ static void adjust_link(struct net_devic
+@@ -2948,7 +2948,7 @@ static void adjust_link(struct net_device *dev)
struct phy_device *phydev = priv->phydev;
int new_state = 0;
@@ -46,7 +46,7 @@ Index: linux-3.4/drivers/net/ethernet/freescale/gianfar.c
lock_tx_qs(priv);
if (phydev->link) {
-@@ -3015,7 +3015,7 @@ static void adjust_link(struct net_devic
+@@ -3015,7 +3015,7 @@ static void adjust_link(struct net_device *dev)
if (new_state && netif_msg_link(priv))
phy_print_status(phydev);
unlock_tx_qs(priv);
@@ -55,3 +55,6 @@ Index: linux-3.4/drivers/net/ethernet/freescale/gianfar.c
}
/* Update the hash table based on the current list of multicast
+--
+1.7.10.4
+
diff --git a/patches/usb-fix-mouse-problem-copying-large-data.patch b/patches/0086-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch
index 008b53a..a3dd658 100644
--- a/patches/usb-fix-mouse-problem-copying-large-data.patch
+++ b/patches/0086-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch
@@ -1,6 +1,8 @@
+From b720e15183d6fa696c2d782174e80bd94eb593e8 Mon Sep 17 00:00:00 2001
From: Wu Zhangjin <wuzj@lemote.com>
Date: Mon, 4 Jan 2010 11:33:02 +0800
-Subject: USB: Fix the mouse problem when copying large amounts of data
+Subject: [PATCH 086/254] USB: Fix the mouse problem when copying large
+ amounts of data
When copying large amounts of data between the USB storage devices and
the hard disk, the USB mouse will not work, this patch fixes it.
@@ -10,16 +12,15 @@ sure whether it is producible on other platforms]
Signed-off-by: Hu Hongbing <huhb@lemote.com>
Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
-
---
drivers/usb/host/ohci-hcd.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
-Index: linux-3.4/drivers/usb/host/ohci-hcd.c
-===================================================================
---- linux-3.4.orig/drivers/usb/host/ohci-hcd.c
-+++ linux-3.4/drivers/usb/host/ohci-hcd.c
-@@ -829,9 +829,13 @@ static irqreturn_t ohci_irq (struct usb_
+diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
+index 235171f..0157357 100644
+--- a/drivers/usb/host/ohci-hcd.c
++++ b/drivers/usb/host/ohci-hcd.c
+@@ -829,9 +829,13 @@ static irqreturn_t ohci_irq (struct usb_hcd *hcd)
}
if (ints & OHCI_INTR_WDH) {
@@ -36,3 +37,6 @@ Index: linux-3.4/drivers/usb/host/ohci-hcd.c
}
if (quirk_zfmicro(ohci) && (ints & OHCI_INTR_SF)) {
+--
+1.7.10.4
+
diff --git a/patches/local-var.patch b/patches/0087-local-var.patch.patch
index 3ba067b..164bd5c 100644
--- a/patches/local-var.patch
+++ b/patches/0087-local-var.patch.patch
@@ -1,16 +1,17 @@
-Subject: local-var.patch
+From 229b6b535b2ca1d4f5990ff2abc0bdde245fbec1 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 24 Jun 2011 18:40:37 +0200
+Subject: [PATCH 087/254] local-var.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/percpu.h | 5 +++++
1 file changed, 5 insertions(+)
-Index: linux-3.4/include/linux/percpu.h
-===================================================================
---- linux-3.4.orig/include/linux/percpu.h
-+++ linux-3.4/include/linux/percpu.h
+diff --git a/include/linux/percpu.h b/include/linux/percpu.h
+index 21638ae..3d13ce0 100644
+--- a/include/linux/percpu.h
++++ b/include/linux/percpu.h
@@ -48,6 +48,11 @@
preempt_enable(); \
} while (0)
@@ -23,3 +24,6 @@ Index: linux-3.4/include/linux/percpu.h
/* minimum unit size, also is the maximum supported allocation size */
#define PCPU_MIN_UNIT_SIZE PFN_ALIGN(32 << 10)
+--
+1.7.10.4
+
diff --git a/patches/rt-local-irq-lock.patch b/patches/0088-rt-local-irq-lock.patch.patch
index d05af60..362a536 100644
--- a/patches/rt-local-irq-lock.patch
+++ b/patches/0088-rt-local-irq-lock.patch.patch
@@ -1,16 +1,19 @@
-Subject: rt-local-irq-lock.patch
+From 4c5f3e94757f35cdf087a86d4dbae1ab13434abc Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 20 Jun 2011 09:03:47 +0200
+Subject: [PATCH 088/254] rt-local-irq-lock.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- include/linux/locallock.h | 230 ++++++++++++++++++++++++++++++++++++++++++++++
+ include/linux/locallock.h | 230 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 230 insertions(+)
+ create mode 100644 include/linux/locallock.h
-Index: linux-3.4/include/linux/locallock.h
-===================================================================
+diff --git a/include/linux/locallock.h b/include/linux/locallock.h
+new file mode 100644
+index 0000000..8fbc393
--- /dev/null
-+++ linux-3.4/include/linux/locallock.h
++++ b/include/linux/locallock.h
@@ -0,0 +1,230 @@
+#ifndef _LINUX_LOCALLOCK_H
+#define _LINUX_LOCALLOCK_H
@@ -242,3 +245,6 @@ Index: linux-3.4/include/linux/locallock.h
+#endif
+
+#endif
+--
+1.7.10.4
+
diff --git a/patches/cpu-rt-variants.patch b/patches/0089-cpu-rt-variants.patch.patch
index 0e49fdb..9a773f9 100644
--- a/patches/cpu-rt-variants.patch
+++ b/patches/0089-cpu-rt-variants.patch.patch
@@ -1,17 +1,18 @@
-Subject: cpu-rt-variants.patch
+From c30ad6d48b86e1e3932b45c58c083412dac87f7e Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 17 Jun 2011 15:42:38 +0200
+Subject: [PATCH 089/254] cpu-rt-variants.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/smp.h | 8 ++++++++
1 file changed, 8 insertions(+)
-Index: linux-3.4/include/linux/smp.h
-===================================================================
---- linux-3.4.orig/include/linux/smp.h
-+++ linux-3.4/include/linux/smp.h
-@@ -219,6 +219,14 @@ smp_call_function_any(const struct cpuma
+diff --git a/include/linux/smp.h b/include/linux/smp.h
+index 10530d9..04e7ed9 100644
+--- a/include/linux/smp.h
++++ b/include/linux/smp.h
+@@ -219,6 +219,14 @@ smp_call_function_any(const struct cpumask *mask, smp_call_func_t func,
#define get_cpu() ({ preempt_disable(); smp_processor_id(); })
#define put_cpu() preempt_enable()
@@ -26,3 +27,6 @@ Index: linux-3.4/include/linux/smp.h
/*
* Callback to arch code if there's nosmp or maxcpus=0 on the
* boot command line:
+--
+1.7.10.4
+
diff --git a/patches/mm-slab-wrap-functions.patch b/patches/0090-mm-slab-wrap-functions.patch.patch
index 6392b20..8ea9743 100644
--- a/patches/mm-slab-wrap-functions.patch
+++ b/patches/0090-mm-slab-wrap-functions.patch.patch
@@ -1,16 +1,17 @@
-Subject: mm-slab-wrap-functions.patch
+From 0947ed3b3134d325d31fe344a8bf9b28fe512041 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 18 Jun 2011 19:44:43 +0200
+Subject: [PATCH 090/254] mm-slab-wrap-functions.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- mm/slab.c | 152 ++++++++++++++++++++++++++++++++++++++++++--------------------
+ mm/slab.c | 152 ++++++++++++++++++++++++++++++++++++++++++-------------------
1 file changed, 104 insertions(+), 48 deletions(-)
-Index: linux-3.4/mm/slab.c
-===================================================================
---- linux-3.4.orig/mm/slab.c
-+++ linux-3.4/mm/slab.c
+diff --git a/mm/slab.c b/mm/slab.c
+index 80c57f9..dc84364 100644
+--- a/mm/slab.c
++++ b/mm/slab.c
@@ -116,6 +116,7 @@
#include <linux/kmemcheck.h>
#include <linux/memory.h>
@@ -19,7 +20,7 @@ Index: linux-3.4/mm/slab.c
#include <asm/cacheflush.h>
#include <asm/tlbflush.h>
-@@ -726,12 +727,40 @@ static void slab_set_debugobj_lock_class
+@@ -726,12 +727,40 @@ static void slab_set_debugobj_lock_classes(struct kmem_cache *cachep)
#endif
static DEFINE_PER_CPU(struct delayed_work, slab_reap_work);
@@ -60,7 +61,7 @@ Index: linux-3.4/mm/slab.c
static inline struct kmem_cache *__find_general_cachep(size_t size,
gfp_t gfpflags)
{
-@@ -1080,9 +1109,10 @@ static void reap_alien(struct kmem_cache
+@@ -1080,9 +1109,10 @@ static void reap_alien(struct kmem_cache *cachep, struct kmem_list3 *l3)
if (l3->alien) {
struct array_cache *ac = l3->alien[node];
@@ -73,7 +74,7 @@ Index: linux-3.4/mm/slab.c
}
}
}
-@@ -1097,9 +1127,9 @@ static void drain_alien_cache(struct kme
+@@ -1097,9 +1127,9 @@ static void drain_alien_cache(struct kmem_cache *cachep,
for_each_online_node(i) {
ac = alien[i];
if (ac) {
@@ -85,7 +86,7 @@ Index: linux-3.4/mm/slab.c
}
}
}
-@@ -1178,11 +1208,11 @@ static int init_cache_nodelists_node(int
+@@ -1178,11 +1208,11 @@ static int init_cache_nodelists_node(int node)
cachep->nodelists[node] = l3;
}
@@ -99,7 +100,7 @@ Index: linux-3.4/mm/slab.c
}
return 0;
}
-@@ -1207,7 +1237,7 @@ static void __cpuinit cpuup_canceled(lon
+@@ -1207,7 +1237,7 @@ static void __cpuinit cpuup_canceled(long cpu)
if (!l3)
goto free_array_cache;
@@ -108,7 +109,7 @@ Index: linux-3.4/mm/slab.c
/* Free limit for this kmem_list3 */
l3->free_limit -= cachep->batchcount;
-@@ -1215,7 +1245,7 @@ static void __cpuinit cpuup_canceled(lon
+@@ -1215,7 +1245,7 @@ static void __cpuinit cpuup_canceled(long cpu)
free_block(cachep, nc->entry, nc->avail, node);
if (!cpumask_empty(mask)) {
@@ -117,7 +118,7 @@ Index: linux-3.4/mm/slab.c
goto free_array_cache;
}
-@@ -1229,7 +1259,7 @@ static void __cpuinit cpuup_canceled(lon
+@@ -1229,7 +1259,7 @@ static void __cpuinit cpuup_canceled(long cpu)
alien = l3->alien;
l3->alien = NULL;
@@ -126,7 +127,7 @@ Index: linux-3.4/mm/slab.c
kfree(shared);
if (alien) {
-@@ -1303,7 +1333,7 @@ static int __cpuinit cpuup_prepare(long
+@@ -1303,7 +1333,7 @@ static int __cpuinit cpuup_prepare(long cpu)
l3 = cachep->nodelists[node];
BUG_ON(!l3);
@@ -135,7 +136,7 @@ Index: linux-3.4/mm/slab.c
if (!l3->shared) {
/*
* We are serialised from CPU_DEAD or
-@@ -1318,7 +1348,7 @@ static int __cpuinit cpuup_prepare(long
+@@ -1318,7 +1348,7 @@ static int __cpuinit cpuup_prepare(long cpu)
alien = NULL;
}
#endif
@@ -162,7 +163,7 @@ Index: linux-3.4/mm/slab.c
}
static void check_irq_on(void)
-@@ -2600,13 +2632,12 @@ static void drain_array(struct kmem_cach
+@@ -2600,13 +2632,12 @@ static void drain_array(struct kmem_cache *cachep, struct kmem_list3 *l3,
struct array_cache *ac,
int force, int node);
@@ -204,7 +205,7 @@ Index: linux-3.4/mm/slab.c
check_irq_on();
for_each_online_node(node) {
l3 = cachep->nodelists[node];
-@@ -2650,10 +2693,10 @@ static int drain_freelist(struct kmem_ca
+@@ -2650,10 +2693,10 @@ static int drain_freelist(struct kmem_cache *cache,
nr_freed = 0;
while (nr_freed < tofree && !list_empty(&l3->slabs_free)) {
@@ -217,7 +218,7 @@ Index: linux-3.4/mm/slab.c
goto out;
}
-@@ -2667,7 +2710,7 @@ static int drain_freelist(struct kmem_ca
+@@ -2667,7 +2710,7 @@ static int drain_freelist(struct kmem_cache *cache,
* to the cache.
*/
l3->free_objects -= cache->num;
@@ -226,7 +227,7 @@ Index: linux-3.4/mm/slab.c
slab_destroy(cache, slabp);
nr_freed++;
}
-@@ -2962,7 +3005,7 @@ static int cache_grow(struct kmem_cache
+@@ -2962,7 +3005,7 @@ static int cache_grow(struct kmem_cache *cachep,
offset *= cachep->colour_off;
if (local_flags & __GFP_WAIT)
@@ -235,7 +236,7 @@ Index: linux-3.4/mm/slab.c
/*
* The test for missing atomic flag is performed here, rather than
-@@ -2992,7 +3035,7 @@ static int cache_grow(struct kmem_cache
+@@ -2992,7 +3035,7 @@ static int cache_grow(struct kmem_cache *cachep,
cache_init_objs(cachep, slabp);
if (local_flags & __GFP_WAIT)
@@ -267,7 +268,7 @@ Index: linux-3.4/mm/slab.c
if (obj) {
/*
* Insert into the appropriate per node queues
-@@ -3522,7 +3565,7 @@ __cache_alloc_node(struct kmem_cache *ca
+@@ -3522,7 +3565,7 @@ __cache_alloc_node(struct kmem_cache *cachep, gfp_t flags, int nodeid,
return NULL;
cache_alloc_debugcheck_before(cachep, flags);
@@ -276,7 +277,7 @@ Index: linux-3.4/mm/slab.c
if (nodeid == NUMA_NO_NODE)
nodeid = slab_node;
-@@ -3547,7 +3590,7 @@ __cache_alloc_node(struct kmem_cache *ca
+@@ -3547,7 +3590,7 @@ __cache_alloc_node(struct kmem_cache *cachep, gfp_t flags, int nodeid,
/* ___cache_alloc_node can fall back to other nodes */
ptr = ____cache_alloc_node(cachep, flags, nodeid);
out:
@@ -285,7 +286,7 @@ Index: linux-3.4/mm/slab.c
ptr = cache_alloc_debugcheck_after(cachep, flags, ptr, caller);
kmemleak_alloc_recursive(ptr, obj_size(cachep), 1, cachep->flags,
flags);
-@@ -3607,9 +3650,9 @@ __cache_alloc(struct kmem_cache *cachep,
+@@ -3607,9 +3650,9 @@ __cache_alloc(struct kmem_cache *cachep, gfp_t flags, void *caller)
return NULL;
cache_alloc_debugcheck_before(cachep, flags);
@@ -297,7 +298,7 @@ Index: linux-3.4/mm/slab.c
objp = cache_alloc_debugcheck_after(cachep, flags, objp, caller);
kmemleak_alloc_recursive(objp, obj_size(cachep), 1, cachep->flags,
flags);
-@@ -3922,9 +3965,9 @@ void kmem_cache_free(struct kmem_cache *
+@@ -3922,9 +3965,9 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp)
debug_check_no_locks_freed(objp, obj_size(cachep));
if (!(cachep->flags & SLAB_DEBUG_OBJECTS))
debug_check_no_obj_freed(objp, obj_size(cachep));
@@ -321,7 +322,7 @@ Index: linux-3.4/mm/slab.c
}
EXPORT_SYMBOL(kfree);
-@@ -3997,7 +4040,7 @@ static int alloc_kmemlist(struct kmem_ca
+@@ -3997,7 +4040,7 @@ static int alloc_kmemlist(struct kmem_cache *cachep, gfp_t gfp)
if (l3) {
struct array_cache *shared = l3->shared;
@@ -330,7 +331,7 @@ Index: linux-3.4/mm/slab.c
if (shared)
free_block(cachep, shared->entry,
-@@ -4010,7 +4053,7 @@ static int alloc_kmemlist(struct kmem_ca
+@@ -4010,7 +4053,7 @@ static int alloc_kmemlist(struct kmem_cache *cachep, gfp_t gfp)
}
l3->free_limit = (1 + nr_cpus_node(node)) *
cachep->batchcount + cachep->num;
@@ -373,7 +374,7 @@ Index: linux-3.4/mm/slab.c
/* Always called with the cache_chain_mutex held */
static int do_tune_cpucache(struct kmem_cache *cachep, int limit,
-@@ -4093,7 +4147,7 @@ static int do_tune_cpucache(struct kmem_
+@@ -4093,7 +4147,7 @@ static int do_tune_cpucache(struct kmem_cache *cachep, int limit,
}
new->cachep = cachep;
@@ -382,7 +383,7 @@ Index: linux-3.4/mm/slab.c
check_irq_on();
cachep->batchcount = batchcount;
-@@ -4104,9 +4158,11 @@ static int do_tune_cpucache(struct kmem_
+@@ -4104,9 +4158,11 @@ static int do_tune_cpucache(struct kmem_cache *cachep, int limit,
struct array_cache *ccold = new->new[i];
if (!ccold)
continue;
@@ -396,7 +397,7 @@ Index: linux-3.4/mm/slab.c
kfree(ccold);
}
kfree(new);
-@@ -4182,7 +4238,7 @@ static void drain_array(struct kmem_cach
+@@ -4182,7 +4238,7 @@ static void drain_array(struct kmem_cache *cachep, struct kmem_list3 *l3,
if (ac->touched && !force) {
ac->touched = 0;
} else {
@@ -405,7 +406,7 @@ Index: linux-3.4/mm/slab.c
if (ac->avail) {
tofree = force ? ac->avail : (ac->limit + 4) / 5;
if (tofree > ac->avail)
-@@ -4192,7 +4248,7 @@ static void drain_array(struct kmem_cach
+@@ -4192,7 +4248,7 @@ static void drain_array(struct kmem_cache *cachep, struct kmem_list3 *l3,
memmove(ac->entry, &(ac->entry[tofree]),
sizeof(void *) * ac->avail);
}
@@ -414,7 +415,7 @@ Index: linux-3.4/mm/slab.c
}
}
-@@ -4331,7 +4387,7 @@ static int s_show(struct seq_file *m, vo
+@@ -4331,7 +4387,7 @@ static int s_show(struct seq_file *m, void *p)
continue;
check_irq_on();
@@ -423,7 +424,7 @@ Index: linux-3.4/mm/slab.c
list_for_each_entry(slabp, &l3->slabs_full, list) {
if (slabp->inuse != cachep->num && !error)
-@@ -4356,7 +4412,7 @@ static int s_show(struct seq_file *m, vo
+@@ -4356,7 +4412,7 @@ static int s_show(struct seq_file *m, void *p)
if (l3->shared)
shared_avail += l3->shared->avail;
@@ -432,7 +433,7 @@ Index: linux-3.4/mm/slab.c
}
num_slabs += active_slabs;
num_objs = num_slabs * cachep->num;
-@@ -4585,13 +4641,13 @@ static int leaks_show(struct seq_file *m
+@@ -4585,13 +4641,13 @@ static int leaks_show(struct seq_file *m, void *p)
continue;
check_irq_on();
@@ -448,3 +449,6 @@ Index: linux-3.4/mm/slab.c
}
name = cachep->name;
if (n[0] == n[1]) {
+--
+1.7.10.4
+
diff --git a/patches/rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch b/patches/0091-slab-Fix-__do_drain-to-use-the-right-array-cache.patch
index bb4905e..68604da 100644
--- a/patches/rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch
+++ b/patches/0091-slab-Fix-__do_drain-to-use-the-right-array-cache.patch
@@ -1,6 +1,7 @@
-Subject: slab: Fix __do_drain to use the right array cache
+From 315adcb4decf8588f28e6fd7cf0dc87752ebfb63 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <rostedt@goodmis.org>
Date: Tue, 11 Oct 2011 23:56:23 -0400
+Subject: [PATCH 091/254] slab: Fix __do_drain to use the right array cache
The array cache in __do_drain() was using the cpu_cache_get() function
which uses smp_processor_id() to get the proper array. On mainline, this
@@ -33,16 +34,15 @@ Cc: Clark Williams <clark@redhat.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1318391783.13262.11.camel@gandalf.stny.rr.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
mm/slab.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/mm/slab.c
-===================================================================
---- linux-3.4.orig/mm/slab.c
-+++ linux-3.4/mm/slab.c
-@@ -2638,7 +2638,7 @@ static void __do_drain(void *arg, unsign
+diff --git a/mm/slab.c b/mm/slab.c
+index dc84364..341748b 100644
+--- a/mm/slab.c
++++ b/mm/slab.c
+@@ -2638,7 +2638,7 @@ static void __do_drain(void *arg, unsigned int cpu)
struct array_cache *ac;
int node = cpu_to_mem(cpu);
@@ -51,3 +51,6 @@ Index: linux-3.4/mm/slab.c
spin_lock(&cachep->nodelists[node]->list_lock);
free_block(cachep, ac->entry, ac->avail, node);
spin_unlock(&cachep->nodelists[node]->list_lock);
+--
+1.7.10.4
+
diff --git a/patches/mm-slab-more-lock-breaks.patch b/patches/0092-mm-More-lock-breaks-in-slab.c.patch
index 3eb1a6e..a7c3bbf 100644
--- a/patches/mm-slab-more-lock-breaks.patch
+++ b/patches/0092-mm-More-lock-breaks-in-slab.c.patch
@@ -1,22 +1,22 @@
+From 2f99ddba7220c589f3ee3f45d8a7fd0d2a79f846 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
Date: Fri, 3 Jul 2009 08:44:43 -0500
-Subject: mm: More lock breaks in slab.c
+Subject: [PATCH 092/254] mm: More lock breaks in slab.c
Handle __free_pages outside of the locked regions. This reduces the
lock contention on the percpu slab locks in -rt significantly.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
- mm/slab.c | 90 ++++++++++++++++++++++++++++++++++++++++++++++----------------
+ mm/slab.c | 90 ++++++++++++++++++++++++++++++++++++++++++++++---------------
1 file changed, 68 insertions(+), 22 deletions(-)
-Index: linux-3.4/mm/slab.c
-===================================================================
---- linux-3.4.orig/mm/slab.c
-+++ linux-3.4/mm/slab.c
-@@ -727,6 +727,7 @@ static void slab_set_debugobj_lock_class
+diff --git a/mm/slab.c b/mm/slab.c
+index 341748b..15bce6b 100644
+--- a/mm/slab.c
++++ b/mm/slab.c
+@@ -727,6 +727,7 @@ static void slab_set_debugobj_lock_classes(struct kmem_cache *cachep)
#endif
static DEFINE_PER_CPU(struct delayed_work, slab_reap_work);
@@ -24,7 +24,7 @@ Index: linux-3.4/mm/slab.c
static DEFINE_LOCAL_IRQ_LOCK(slab_lock);
#ifndef CONFIG_PREEMPT_RT_BASE
-@@ -742,14 +743,39 @@ slab_on_each_cpu(void (*func)(void *arg,
+@@ -742,14 +743,39 @@ slab_on_each_cpu(void (*func)(void *arg, int this_cpu), void *arg)
{
unsigned int i;
@@ -68,7 +68,7 @@ Index: linux-3.4/mm/slab.c
static inline struct array_cache *cpu_cache_get(struct kmem_cache *cachep)
{
return cachep->array[smp_processor_id()];
-@@ -1245,7 +1271,7 @@ static void __cpuinit cpuup_canceled(lon
+@@ -1245,7 +1271,7 @@ static void __cpuinit cpuup_canceled(long cpu)
free_block(cachep, nc->entry, nc->avail, node);
if (!cpumask_empty(mask)) {
@@ -77,7 +77,7 @@ Index: linux-3.4/mm/slab.c
goto free_array_cache;
}
-@@ -1259,7 +1285,7 @@ static void __cpuinit cpuup_canceled(lon
+@@ -1259,7 +1285,7 @@ static void __cpuinit cpuup_canceled(long cpu)
alien = l3->alien;
l3->alien = NULL;
@@ -95,7 +95,7 @@ Index: linux-3.4/mm/slab.c
for (i = 0; i < NUM_INIT_LISTS; i++) {
kmem_list3_init(&initkmem_list3[i]);
-@@ -1868,12 +1896,14 @@ static void *kmem_getpages(struct kmem_c
+@@ -1868,12 +1896,14 @@ static void *kmem_getpages(struct kmem_cache *cachep, gfp_t flags, int nodeid)
/*
* Interface to system's page release.
*/
@@ -112,7 +112,7 @@ Index: linux-3.4/mm/slab.c
kmemcheck_free_shadow(page, cachep->gfporder);
if (cachep->flags & SLAB_RECLAIM_ACCOUNT)
-@@ -1889,7 +1919,13 @@ static void kmem_freepages(struct kmem_c
+@@ -1889,7 +1919,13 @@ static void kmem_freepages(struct kmem_cache *cachep, void *addr)
}
if (current->reclaim_state)
current->reclaim_state->reclaimed_slab += nr_freed;
@@ -127,7 +127,7 @@ Index: linux-3.4/mm/slab.c
}
static void kmem_rcu_free(struct rcu_head *head)
-@@ -1897,7 +1933,7 @@ static void kmem_rcu_free(struct rcu_hea
+@@ -1897,7 +1933,7 @@ static void kmem_rcu_free(struct rcu_head *head)
struct slab_rcu *slab_rcu = (struct slab_rcu *)head;
struct kmem_cache *cachep = slab_rcu->cachep;
@@ -136,7 +136,7 @@ Index: linux-3.4/mm/slab.c
if (OFF_SLAB(cachep))
kmem_cache_free(cachep->slabp_cache, slab_rcu);
}
-@@ -2116,7 +2152,8 @@ static void slab_destroy_debugcheck(stru
+@@ -2116,7 +2152,8 @@ static void slab_destroy_debugcheck(struct kmem_cache *cachep, struct slab *slab
* Before calling the slab must have been unlinked from the cache. The
* cache-lock is not held/needed.
*/
@@ -146,7 +146,7 @@ Index: linux-3.4/mm/slab.c
{
void *addr = slabp->s_mem - slabp->colouroff;
-@@ -2129,7 +2166,7 @@ static void slab_destroy(struct kmem_cac
+@@ -2129,7 +2166,7 @@ static void slab_destroy(struct kmem_cache *cachep, struct slab *slabp)
slab_rcu->addr = addr;
call_rcu(&slab_rcu->head, kmem_rcu_free);
} else {
@@ -173,7 +173,7 @@ Index: linux-3.4/mm/slab.c
}
#endif
-@@ -2711,7 +2754,7 @@ static int drain_freelist(struct kmem_ca
+@@ -2711,7 +2754,7 @@ static int drain_freelist(struct kmem_cache *cache,
*/
l3->free_objects -= cache->num;
local_spin_unlock_irq(slab_lock, &l3->list_lock);
@@ -182,7 +182,7 @@ Index: linux-3.4/mm/slab.c
nr_freed++;
}
out:
-@@ -3046,7 +3089,7 @@ static int cache_grow(struct kmem_cache
+@@ -3046,7 +3089,7 @@ static int cache_grow(struct kmem_cache *cachep,
spin_unlock(&l3->list_lock);
return 1;
opps1:
@@ -191,7 +191,7 @@ Index: linux-3.4/mm/slab.c
failed:
if (local_flags & __GFP_WAIT)
local_lock_irq(slab_lock);
-@@ -3700,7 +3743,7 @@ static void free_block(struct kmem_cache
+@@ -3700,7 +3743,7 @@ static void free_block(struct kmem_cache *cachep, void **objpp, int nr_objects,
* a different cache, refer to comments before
* alloc_slabmgmt.
*/
@@ -200,7 +200,7 @@ Index: linux-3.4/mm/slab.c
} else {
list_add(&slabp->list, &l3->slabs_free);
}
-@@ -3967,7 +4010,7 @@ void kmem_cache_free(struct kmem_cache *
+@@ -3967,7 +4010,7 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp)
debug_check_no_obj_freed(objp, obj_size(cachep));
local_lock_irqsave(slab_lock, flags);
__cache_free(cachep, objp, __builtin_return_address(0));
@@ -218,7 +218,7 @@ Index: linux-3.4/mm/slab.c
}
EXPORT_SYMBOL(kfree);
-@@ -4053,7 +4096,8 @@ static int alloc_kmemlist(struct kmem_ca
+@@ -4053,7 +4096,8 @@ static int alloc_kmemlist(struct kmem_cache *cachep, gfp_t gfp)
}
l3->free_limit = (1 + nr_cpus_node(node)) *
cachep->batchcount + cachep->num;
@@ -228,7 +228,7 @@ Index: linux-3.4/mm/slab.c
kfree(shared);
free_alien_cache(new_alien);
continue;
-@@ -4119,7 +4163,9 @@ static void do_ccupdate_local(void *info
+@@ -4119,7 +4163,9 @@ static void do_ccupdate_local(void *info)
#else
static void do_ccupdate_local(void *info, int cpu)
{
@@ -238,7 +238,7 @@ Index: linux-3.4/mm/slab.c
}
#endif
-@@ -4161,8 +4207,8 @@ static int do_tune_cpucache(struct kmem_
+@@ -4161,8 +4207,8 @@ static int do_tune_cpucache(struct kmem_cache *cachep, int limit,
local_spin_lock_irq(slab_lock,
&cachep->nodelists[cpu_to_mem(i)]->list_lock);
free_block(cachep, ccold->entry, ccold->avail, cpu_to_mem(i));
@@ -249,3 +249,6 @@ Index: linux-3.4/mm/slab.c
kfree(ccold);
}
kfree(new);
+--
+1.7.10.4
+
diff --git a/patches/mm-page_alloc-rt-friendly-per-cpu-pages.patch b/patches/0093-mm-page_alloc-rt-friendly-per-cpu-pages.patch
index 8222bfb..102dd1e 100644
--- a/patches/mm-page_alloc-rt-friendly-per-cpu-pages.patch
+++ b/patches/0093-mm-page_alloc-rt-friendly-per-cpu-pages.patch
@@ -1,6 +1,7 @@
+From 1a3e6582f2b090f8dd747add534454d7a3fe8a51 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:37 -0500
-Subject: mm: page_alloc: rt-friendly per-cpu pages
+Subject: [PATCH 093/254] mm: page_alloc: rt-friendly per-cpu pages
rt-friendly per-cpu pages: convert the irqs-off per-cpu locking
method into a preemptible, explicit-per-cpu-locks method.
@@ -11,15 +12,14 @@ Contains fixes from:
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
mm/page_alloc.c | 53 +++++++++++++++++++++++++++++++++++++----------------
1 file changed, 37 insertions(+), 16 deletions(-)
-Index: linux-3.4/mm/page_alloc.c
-===================================================================
---- linux-3.4.orig/mm/page_alloc.c
-+++ linux-3.4/mm/page_alloc.c
+diff --git a/mm/page_alloc.c b/mm/page_alloc.c
+index b27e8cb..dbe4146 100644
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
@@ -57,6 +57,7 @@
#include <linux/ftrace_event.h>
#include <linux/memcontrol.h>
@@ -47,7 +47,7 @@ Index: linux-3.4/mm/page_alloc.c
int page_group_by_mobility_disabled __read_mostly;
static void set_pageblock_migratetype(struct page *page, int migratetype)
-@@ -721,13 +734,13 @@ static void __free_pages_ok(struct page
+@@ -721,13 +734,13 @@ static void __free_pages_ok(struct page *page, unsigned int order)
if (!free_pages_prepare(page, order))
return;
@@ -63,7 +63,7 @@ Index: linux-3.4/mm/page_alloc.c
}
void __meminit __free_pages_bootmem(struct page *page, unsigned int order)
-@@ -1113,14 +1126,14 @@ void drain_zone_pages(struct zone *zone,
+@@ -1113,14 +1126,14 @@ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp)
unsigned long flags;
int to_drain;
@@ -80,7 +80,7 @@ Index: linux-3.4/mm/page_alloc.c
}
#endif
-@@ -1140,7 +1153,7 @@ static void drain_pages(unsigned int cpu
+@@ -1140,7 +1153,7 @@ static void drain_pages(unsigned int cpu)
struct per_cpu_pageset *pset;
struct per_cpu_pages *pcp;
@@ -89,7 +89,7 @@ Index: linux-3.4/mm/page_alloc.c
pset = per_cpu_ptr(zone->pageset, cpu);
pcp = &pset->pcp;
-@@ -1148,7 +1161,7 @@ static void drain_pages(unsigned int cpu
+@@ -1148,7 +1161,7 @@ static void drain_pages(unsigned int cpu)
free_pcppages_bulk(zone, pcp->count, pcp);
pcp->count = 0;
}
@@ -111,7 +111,7 @@ Index: linux-3.4/mm/page_alloc.c
}
#ifdef CONFIG_HIBERNATION
-@@ -1257,7 +1275,7 @@ void free_hot_cold_page(struct page *pag
+@@ -1257,7 +1275,7 @@ void free_hot_cold_page(struct page *page, int cold)
migratetype = get_pageblock_migratetype(page);
set_page_private(page, migratetype);
@@ -120,7 +120,7 @@ Index: linux-3.4/mm/page_alloc.c
if (unlikely(wasMlocked))
free_page_mlock(page);
__count_vm_event(PGFREE);
-@@ -1289,7 +1307,7 @@ void free_hot_cold_page(struct page *pag
+@@ -1289,7 +1307,7 @@ void free_hot_cold_page(struct page *page, int cold)
}
out:
@@ -184,7 +184,7 @@ Index: linux-3.4/mm/page_alloc.c
}
return 0;
}
-@@ -4892,6 +4912,7 @@ static int page_alloc_cpu_notify(struct
+@@ -4892,6 +4912,7 @@ static int page_alloc_cpu_notify(struct notifier_block *self,
void __init page_alloc_init(void)
{
hotcpu_notifier(page_alloc_cpu_notify, 0);
@@ -192,3 +192,6 @@ Index: linux-3.4/mm/page_alloc.c
}
/*
+--
+1.7.10.4
+
diff --git a/patches/mm-page_alloc-reduce-lock-sections-further.patch b/patches/0094-mm-page_alloc-reduce-lock-sections-further.patch
index 52527fa..012bccf 100644
--- a/patches/mm-page_alloc-reduce-lock-sections-further.patch
+++ b/patches/0094-mm-page_alloc-reduce-lock-sections-further.patch
@@ -1,6 +1,7 @@
+From 753098a549728270dc0c5ea577099aa1145f6b35 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
Date: Fri, 3 Jul 2009 08:44:37 -0500
-Subject: mm: page_alloc reduce lock sections further
+Subject: [PATCH 094/254] mm: page_alloc reduce lock sections further
Split out the pages which are to be freed into a separate list and
call free_pages_bulk() outside of the percpu page allocator locks.
@@ -8,14 +9,14 @@ call free_pages_bulk() outside of the percpu page allocator locks.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- mm/page_alloc.c | 77 ++++++++++++++++++++++++++++++++++++++++++--------------
+ mm/page_alloc.c | 77 +++++++++++++++++++++++++++++++++++++++++--------------
1 file changed, 58 insertions(+), 19 deletions(-)
-Index: linux-3.4/mm/page_alloc.c
-===================================================================
---- linux-3.4.orig/mm/page_alloc.c
-+++ linux-3.4/mm/page_alloc.c
-@@ -632,7 +632,7 @@ static inline int free_pages_check(struc
+diff --git a/mm/page_alloc.c b/mm/page_alloc.c
+index dbe4146..2edd044 100644
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
+@@ -632,7 +632,7 @@ static inline int free_pages_check(struct page *page)
}
/*
@@ -24,7 +25,7 @@ Index: linux-3.4/mm/page_alloc.c
* Assumes all pages on list are in same zone, and of same order.
* count is the number of pages to free.
*
-@@ -643,16 +643,42 @@ static inline int free_pages_check(struc
+@@ -643,16 +643,42 @@ static inline int free_pages_check(struct page *page)
* pinned" detection logic.
*/
static void free_pcppages_bulk(struct zone *zone, int count,
@@ -71,7 +72,7 @@ Index: linux-3.4/mm/page_alloc.c
while (to_free) {
struct page *page;
struct list_head *list;
-@@ -668,7 +694,7 @@ static void free_pcppages_bulk(struct zo
+@@ -668,7 +694,7 @@ static void free_pcppages_bulk(struct zone *zone, int count,
batch_free++;
if (++migratetype == MIGRATE_PCPTYPES)
migratetype = 0;
@@ -80,7 +81,7 @@ Index: linux-3.4/mm/page_alloc.c
} while (list_empty(list));
/* This is the only non-empty list. Free them all. */
-@@ -677,27 +703,24 @@ static void free_pcppages_bulk(struct zo
+@@ -677,27 +703,24 @@ static void free_pcppages_bulk(struct zone *zone, int count,
do {
page = list_last_entry(list, struct page, lru);
@@ -113,7 +114,7 @@ Index: linux-3.4/mm/page_alloc.c
}
static bool free_pages_prepare(struct page *page, unsigned int order)
-@@ -1124,6 +1147,7 @@ static int rmqueue_bulk(struct zone *zon
+@@ -1124,6 +1147,7 @@ static int rmqueue_bulk(struct zone *zone, unsigned int order,
void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp)
{
unsigned long flags;
@@ -121,7 +122,7 @@ Index: linux-3.4/mm/page_alloc.c
int to_drain;
local_lock_irqsave(pa_lock, flags);
-@@ -1131,9 +1155,10 @@ void drain_zone_pages(struct zone *zone,
+@@ -1131,9 +1155,10 @@ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp)
to_drain = pcp->batch;
else
to_drain = pcp->count;
@@ -133,7 +134,7 @@ Index: linux-3.4/mm/page_alloc.c
}
#endif
-@@ -1152,16 +1177,21 @@ static void drain_pages(unsigned int cpu
+@@ -1152,16 +1177,21 @@ static void drain_pages(unsigned int cpu)
for_each_populated_zone(zone) {
struct per_cpu_pageset *pset;
struct per_cpu_pages *pcp;
@@ -157,7 +158,7 @@ Index: linux-3.4/mm/page_alloc.c
}
}
-@@ -1302,8 +1332,15 @@ void free_hot_cold_page(struct page *pag
+@@ -1302,8 +1332,15 @@ void free_hot_cold_page(struct page *page, int cold)
list_add(&page->lru, &pcp->lists[migratetype]);
pcp->count++;
if (pcp->count >= pcp->high) {
@@ -190,3 +191,6 @@ Index: linux-3.4/mm/page_alloc.c
setup_pageset(pset, batch);
cpu_unlock_irqrestore(cpu, flags);
}
+--
+1.7.10.4
+
diff --git a/patches/mm-page-alloc-fix.patch b/patches/0095-mm-page-alloc-fix.patch.patch
index 1356b18..138608b 100644
--- a/patches/mm-page-alloc-fix.patch
+++ b/patches/0095-mm-page-alloc-fix.patch.patch
@@ -1,17 +1,18 @@
-Subject: mm-page-alloc-fix.patch
+From db7e4121c00feb835c8448deb41681e6e397be5d Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 21 Jul 2011 16:47:49 +0200
+Subject: [PATCH 095/254] mm-page-alloc-fix.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
mm/page_alloc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-Index: linux-3.4/mm/page_alloc.c
-===================================================================
---- linux-3.4.orig/mm/page_alloc.c
-+++ linux-3.4/mm/page_alloc.c
-@@ -2095,8 +2095,8 @@ __alloc_pages_direct_compact(gfp_t gfp_m
+diff --git a/mm/page_alloc.c b/mm/page_alloc.c
+index 2edd044..4a68c8f 100644
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
+@@ -2095,8 +2095,8 @@ __alloc_pages_direct_compact(gfp_t gfp_mask, unsigned int order,
if (*did_some_progress != COMPACT_SKIPPED) {
/* Page migration frees to the PCP lists but we want merging */
@@ -22,3 +23,6 @@ Index: linux-3.4/mm/page_alloc.c
page = get_page_from_freelist(gfp_mask, nodemask,
order, zonelist, high_zoneidx,
+--
+1.7.10.4
+
diff --git a/patches/mm-convert-swap-to-percpu-locked.patch b/patches/0096-mm-convert-swap-to-percpu-locked.patch
index 220d0b7..682fa72 100644
--- a/patches/mm-convert-swap-to-percpu-locked.patch
+++ b/patches/0096-mm-convert-swap-to-percpu-locked.patch
@@ -1,18 +1,18 @@
+From 9ca3bd4b72406a819c4b8b3569f8624f0acd1e21 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:51 -0500
-Subject: mm: convert swap to percpu locked
+Subject: [PATCH 096/254] mm: convert swap to percpu locked
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
mm/swap.c | 33 +++++++++++++++++++++------------
1 file changed, 21 insertions(+), 12 deletions(-)
-Index: linux-3.4/mm/swap.c
-===================================================================
---- linux-3.4.orig/mm/swap.c
-+++ linux-3.4/mm/swap.c
+diff --git a/mm/swap.c b/mm/swap.c
+index 5c13f13..2051da9 100644
+--- a/mm/swap.c
++++ b/mm/swap.c
@@ -30,6 +30,7 @@
#include <linux/backing-dev.h>
#include <linux/memcontrol.h>
@@ -21,7 +21,7 @@ Index: linux-3.4/mm/swap.c
#include "internal.h"
-@@ -40,6 +41,9 @@ static DEFINE_PER_CPU(struct pagevec[NR_
+@@ -40,6 +41,9 @@ static DEFINE_PER_CPU(struct pagevec[NR_LRU_LISTS], lru_add_pvecs);
static DEFINE_PER_CPU(struct pagevec, lru_rotate_pvecs);
static DEFINE_PER_CPU(struct pagevec, lru_deactivate_pvecs);
@@ -31,7 +31,7 @@ Index: linux-3.4/mm/swap.c
/*
* This path almost never happens for VM activity - pages are normally
* freed via pagevecs. But it gets used by networking.
-@@ -268,11 +272,11 @@ void rotate_reclaimable_page(struct page
+@@ -268,11 +272,11 @@ void rotate_reclaimable_page(struct page *page)
unsigned long flags;
page_cache_get(page);
@@ -122,3 +122,6 @@ Index: linux-3.4/mm/swap.c
#ifdef CONFIG_SWAP
bdi_init(swapper_space.backing_dev_info);
#endif
+--
+1.7.10.4
+
diff --git a/patches/mm-make-vmstat-rt-aware.patch b/patches/0097-mm-make-vmstat-rt-aware.patch
index 8792ceb..725b679 100644
--- a/patches/mm-make-vmstat-rt-aware.patch
+++ b/patches/0097-mm-make-vmstat-rt-aware.patch
@@ -1,20 +1,20 @@
+From 2cccd8835852bff2d08c024e63f9952d243aa089 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:13 -0500
-Subject: [PATCH] mm: make vmstat -rt aware
+Subject: [PATCH 097/254] mm: make vmstat -rt aware
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
include/linux/vmstat.h | 4 ++++
mm/vmstat.c | 6 ++++++
2 files changed, 10 insertions(+)
-Index: linux-3.4/include/linux/vmstat.h
-===================================================================
---- linux-3.4.orig/include/linux/vmstat.h
-+++ linux-3.4/include/linux/vmstat.h
-@@ -29,7 +29,9 @@ DECLARE_PER_CPU(struct vm_event_state, v
+diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
+index 65efb92..1b3f2ef 100644
+--- a/include/linux/vmstat.h
++++ b/include/linux/vmstat.h
+@@ -29,7 +29,9 @@ DECLARE_PER_CPU(struct vm_event_state, vm_event_states);
static inline void __count_vm_event(enum vm_event_item item)
{
@@ -24,7 +24,7 @@ Index: linux-3.4/include/linux/vmstat.h
}
static inline void count_vm_event(enum vm_event_item item)
-@@ -39,7 +41,9 @@ static inline void count_vm_event(enum v
+@@ -39,7 +41,9 @@ static inline void count_vm_event(enum vm_event_item item)
static inline void __count_vm_events(enum vm_event_item item, long delta)
{
@@ -34,11 +34,11 @@ Index: linux-3.4/include/linux/vmstat.h
}
static inline void count_vm_events(enum vm_event_item item, long delta)
-Index: linux-3.4/mm/vmstat.c
-===================================================================
---- linux-3.4.orig/mm/vmstat.c
-+++ linux-3.4/mm/vmstat.c
-@@ -216,6 +216,7 @@ void __mod_zone_page_state(struct zone *
+diff --git a/mm/vmstat.c b/mm/vmstat.c
+index 7db1b9b..172212f 100644
+--- a/mm/vmstat.c
++++ b/mm/vmstat.c
+@@ -216,6 +216,7 @@ void __mod_zone_page_state(struct zone *zone, enum zone_stat_item item,
long x;
long t;
@@ -46,7 +46,7 @@ Index: linux-3.4/mm/vmstat.c
x = delta + __this_cpu_read(*p);
t = __this_cpu_read(pcp->stat_threshold);
-@@ -225,6 +226,7 @@ void __mod_zone_page_state(struct zone *
+@@ -225,6 +226,7 @@ void __mod_zone_page_state(struct zone *zone, enum zone_stat_item item,
x = 0;
}
__this_cpu_write(*p, x);
@@ -54,7 +54,7 @@ Index: linux-3.4/mm/vmstat.c
}
EXPORT_SYMBOL(__mod_zone_page_state);
-@@ -257,6 +259,7 @@ void __inc_zone_state(struct zone *zone,
+@@ -257,6 +259,7 @@ void __inc_zone_state(struct zone *zone, enum zone_stat_item item)
s8 __percpu *p = pcp->vm_stat_diff + item;
s8 v, t;
@@ -62,7 +62,7 @@ Index: linux-3.4/mm/vmstat.c
v = __this_cpu_inc_return(*p);
t = __this_cpu_read(pcp->stat_threshold);
if (unlikely(v > t)) {
-@@ -265,6 +268,7 @@ void __inc_zone_state(struct zone *zone,
+@@ -265,6 +268,7 @@ void __inc_zone_state(struct zone *zone, enum zone_stat_item item)
zone_page_state_add(v + overstep, zone, item);
__this_cpu_write(*p, -overstep);
}
@@ -70,7 +70,7 @@ Index: linux-3.4/mm/vmstat.c
}
void __inc_zone_page_state(struct page *page, enum zone_stat_item item)
-@@ -279,6 +283,7 @@ void __dec_zone_state(struct zone *zone,
+@@ -279,6 +283,7 @@ void __dec_zone_state(struct zone *zone, enum zone_stat_item item)
s8 __percpu *p = pcp->vm_stat_diff + item;
s8 v, t;
@@ -78,7 +78,7 @@ Index: linux-3.4/mm/vmstat.c
v = __this_cpu_dec_return(*p);
t = __this_cpu_read(pcp->stat_threshold);
if (unlikely(v < - t)) {
-@@ -287,6 +292,7 @@ void __dec_zone_state(struct zone *zone,
+@@ -287,6 +292,7 @@ void __dec_zone_state(struct zone *zone, enum zone_stat_item item)
zone_page_state_add(v - overstep, zone, item);
__this_cpu_write(*p, overstep);
}
@@ -86,3 +86,6 @@ Index: linux-3.4/mm/vmstat.c
}
void __dec_zone_page_state(struct page *page, enum zone_stat_item item)
+--
+1.7.10.4
+
diff --git a/patches/mm-shrink-the-page-frame-to-rt-size.patch b/patches/0098-mm-shrink-the-page-frame-to-rt-size.patch
index 5b756e1..41f8395 100644
--- a/patches/mm-shrink-the-page-frame-to-rt-size.patch
+++ b/patches/0098-mm-shrink-the-page-frame-to-rt-size.patch
@@ -1,6 +1,7 @@
+From 24e8b77414d2b64ff09972b33fc63f6bea5e7464 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <peterz@infradead.org>
Date: Fri, 3 Jul 2009 08:44:54 -0500
-Subject: mm: shrink the page frame to !-rt size
+Subject: [PATCH 098/254] mm: shrink the page frame to !-rt size
He below is a boot-tested hack to shrink the page frame size back to
normal.
@@ -10,18 +11,17 @@ page-frames.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
include/linux/mm.h | 46 +++++++++++++++++++++++++++++++++++++++-------
include/linux/mm_types.h | 6 +++++-
mm/memory.c | 32 ++++++++++++++++++++++++++++++++
3 files changed, 76 insertions(+), 8 deletions(-)
-Index: linux-3.4/include/linux/mm.h
-===================================================================
---- linux-3.4.orig/include/linux/mm.h
-+++ linux-3.4/include/linux/mm.h
-@@ -1200,27 +1200,59 @@ static inline pmd_t *pmd_alloc(struct mm
+diff --git a/include/linux/mm.h b/include/linux/mm.h
+index 74aa71b..7e11734 100644
+--- a/include/linux/mm.h
++++ b/include/linux/mm.h
+@@ -1200,27 +1200,59 @@ static inline pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long a
* overflow into the next struct page (as it might with DEBUG_SPINLOCK).
* When freeing, reset page->mapping so free_pages_check won't complain.
*/
@@ -88,10 +88,10 @@ Index: linux-3.4/include/linux/mm.h
static inline void pgtable_page_dtor(struct page *page)
{
pte_lock_deinit(page);
-Index: linux-3.4/include/linux/mm_types.h
-===================================================================
---- linux-3.4.orig/include/linux/mm_types.h
-+++ linux-3.4/include/linux/mm_types.h
+diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
+index 3cc3062..e70ea9b 100644
+--- a/include/linux/mm_types.h
++++ b/include/linux/mm_types.h
@@ -118,7 +118,11 @@ struct page {
* system if PG_buddy is set.
*/
@@ -105,11 +105,11 @@ Index: linux-3.4/include/linux/mm_types.h
#endif
struct kmem_cache *slab; /* SLUB: Pointer to slab */
struct page *first_page; /* Compound tail pages */
-Index: linux-3.4/mm/memory.c
-===================================================================
---- linux-3.4.orig/mm/memory.c
-+++ linux-3.4/mm/memory.c
-@@ -4033,3 +4033,35 @@ void copy_user_huge_page(struct page *ds
+diff --git a/mm/memory.c b/mm/memory.c
+index 346246c..68676fd 100644
+--- a/mm/memory.c
++++ b/mm/memory.c
+@@ -4033,3 +4033,35 @@ void copy_user_huge_page(struct page *dst, struct page *src,
}
}
#endif /* CONFIG_TRANSPARENT_HUGEPAGE || CONFIG_HUGETLBFS */
@@ -145,3 +145,6 @@ Index: linux-3.4/mm/memory.c
+}
+
+#endif
+--
+1.7.10.4
+
diff --git a/patches/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch b/patches/0099-ARM-Initialize-ptl-lock-for-vector-page.patch
index a74d13f..fa21f5d 100644
--- a/patches/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch
+++ b/patches/0099-ARM-Initialize-ptl-lock-for-vector-page.patch
@@ -1,6 +1,7 @@
-Subject: ARM: Initialize ptl->lock for vector page
+From 7cfce4f6584f2ec2bf2e6b88f83a872f43ab23ac Mon Sep 17 00:00:00 2001
From: Frank Rowand <frank.rowand@am.sony.com>
Date: Sat, 1 Oct 2011 18:58:13 -0700
+Subject: [PATCH 099/254] ARM: Initialize ptl->lock for vector page
Without this patch, ARM can not use SPLIT_PTLOCK_CPUS if
PREEMPT_RT_FULL=y because vectors_user_mapping() creates a
@@ -33,11 +34,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/arm/kernel/process.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
-Index: linux-3.4/arch/arm/kernel/process.c
-===================================================================
---- linux-3.4.orig/arch/arm/kernel/process.c
-+++ linux-3.4/arch/arm/kernel/process.c
-@@ -526,6 +526,31 @@ unsigned long arch_randomize_brk(struct
+diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
+index 2b7b017..ed2300e 100644
+--- a/arch/arm/kernel/process.c
++++ b/arch/arm/kernel/process.c
+@@ -526,6 +526,31 @@ unsigned long arch_randomize_brk(struct mm_struct *mm)
}
#ifdef CONFIG_MMU
@@ -69,3 +70,6 @@ Index: linux-3.4/arch/arm/kernel/process.c
/*
* The vectors page is always readable from user space for the
* atomic helpers and the signal restart code. Insert it into the
+--
+1.7.10.4
+
diff --git a/patches/mm-allow-slab-rt.patch b/patches/0100-mm-Allow-only-slab-on-RT.patch
index 12c9ecc..eaefd93 100644
--- a/patches/mm-allow-slab-rt.patch
+++ b/patches/0100-mm-Allow-only-slab-on-RT.patch
@@ -1,18 +1,18 @@
+From 49b44b9159d636a1db1114c2c4d1da259b008d26 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:44:03 -0500
-Subject: mm: Allow only slab on RT
+Subject: [PATCH 100/254] mm: Allow only slab on RT
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
init/Kconfig | 2 ++
1 file changed, 2 insertions(+)
-Index: linux-3.4/init/Kconfig
-===================================================================
---- linux-3.4.orig/init/Kconfig
-+++ linux-3.4/init/Kconfig
+diff --git a/init/Kconfig b/init/Kconfig
+index 6cfd71d..7c0b369 100644
+--- a/init/Kconfig
++++ b/init/Kconfig
@@ -1265,6 +1265,7 @@ config SLAB
config SLUB
@@ -29,3 +29,6 @@ Index: linux-3.4/init/Kconfig
help
SLOB replaces the stock allocator with a drastically simpler
allocator. SLOB is generally more space efficient but
+--
+1.7.10.4
+
diff --git a/patches/radix-tree-rt-aware.patch b/patches/0101-radix-tree-rt-aware.patch.patch
index dd58a92..b8ba2ae 100644
--- a/patches/radix-tree-rt-aware.patch
+++ b/patches/0101-radix-tree-rt-aware.patch.patch
@@ -1,6 +1,7 @@
-Subject: radix-tree-rt-aware.patch
+From a445bba67453dbe5c6d8fd1d802c6902d9e27c14 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 17 Jul 2011 21:33:18 +0200
+Subject: [PATCH 101/254] radix-tree-rt-aware.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
lib/radix-tree.c | 5 ++++-
2 files changed, 11 insertions(+), 2 deletions(-)
-Index: linux-3.4/include/linux/radix-tree.h
-===================================================================
---- linux-3.4.orig/include/linux/radix-tree.h
-+++ linux-3.4/include/linux/radix-tree.h
-@@ -230,7 +230,13 @@ unsigned long radix_tree_next_hole(struc
+diff --git a/include/linux/radix-tree.h b/include/linux/radix-tree.h
+index 0d04cd6..d94fc30 100644
+--- a/include/linux/radix-tree.h
++++ b/include/linux/radix-tree.h
+@@ -230,7 +230,13 @@ unsigned long radix_tree_next_hole(struct radix_tree_root *root,
unsigned long index, unsigned long max_scan);
unsigned long radix_tree_prev_hole(struct radix_tree_root *root,
unsigned long index, unsigned long max_scan);
@@ -26,7 +27,7 @@ Index: linux-3.4/include/linux/radix-tree.h
void radix_tree_init(void);
void *radix_tree_tag_set(struct radix_tree_root *root,
unsigned long index, unsigned int tag);
-@@ -255,7 +261,7 @@ unsigned long radix_tree_locate_item(str
+@@ -255,7 +261,7 @@ unsigned long radix_tree_locate_item(struct radix_tree_root *root, void *item);
static inline void radix_tree_preload_end(void)
{
@@ -35,11 +36,11 @@ Index: linux-3.4/include/linux/radix-tree.h
}
/**
-Index: linux-3.4/lib/radix-tree.c
-===================================================================
---- linux-3.4.orig/lib/radix-tree.c
-+++ linux-3.4/lib/radix-tree.c
-@@ -202,12 +202,13 @@ radix_tree_node_alloc(struct radix_tree_
+diff --git a/lib/radix-tree.c b/lib/radix-tree.c
+index 86516f5..bfd5a2e 100644
+--- a/lib/radix-tree.c
++++ b/lib/radix-tree.c
+@@ -202,12 +202,13 @@ radix_tree_node_alloc(struct radix_tree_root *root)
* succeed in getting a node here (and never reach
* kmem_cache_alloc)
*/
@@ -54,7 +55,7 @@ Index: linux-3.4/lib/radix-tree.c
}
if (ret == NULL)
ret = kmem_cache_alloc(radix_tree_node_cachep, gfp_mask);
-@@ -242,6 +243,7 @@ radix_tree_node_free(struct radix_tree_n
+@@ -242,6 +243,7 @@ radix_tree_node_free(struct radix_tree_node *node)
call_rcu(&node->rcu_head, radix_tree_node_rcu_free);
}
@@ -70,3 +71,6 @@ Index: linux-3.4/lib/radix-tree.c
/*
* Return the maximum key which can be store into a
+--
+1.7.10.4
+
diff --git a/patches/panic-disable-random-on-rt.patch b/patches/0102-panic-disable-random-on-rt.patch
index 56135a7..f348c64 100644
--- a/patches/panic-disable-random-on-rt.patch
+++ b/patches/0102-panic-disable-random-on-rt.patch
@@ -1,13 +1,16 @@
+From 56e3a48b9d90abd6e8a07522ab3e0e4f604437eb Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
+Date: Thu, 7 Jun 2012 07:46:55 -0400
+Subject: [PATCH 102/254] panic-disable-random-on-rt
---
kernel/panic.c | 2 ++
1 file changed, 2 insertions(+)
-Index: linux-3.4/kernel/panic.c
-===================================================================
---- linux-3.4.orig/kernel/panic.c
-+++ linux-3.4/kernel/panic.c
+diff --git a/kernel/panic.c b/kernel/panic.c
+index 8ed89a1..f1c847a 100644
+--- a/kernel/panic.c
++++ b/kernel/panic.c
@@ -363,9 +363,11 @@ static u64 oops_id;
static int init_oops_id(void)
@@ -20,3 +23,6 @@ Index: linux-3.4/kernel/panic.c
oops_id++;
return 0;
+--
+1.7.10.4
+
diff --git a/patches/ipc-make-rt-aware.patch b/patches/0103-ipc-Make-the-ipc-code-rt-aware.patch
index 2a4736b..3d5a085 100644
--- a/patches/ipc-make-rt-aware.patch
+++ b/patches/0103-ipc-Make-the-ipc-code-rt-aware.patch
@@ -1,6 +1,7 @@
+From f4e1e96b1ca05b8a18d64da8a4f4784702b18eea Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:12 -0500
-Subject: ipc: Make the ipc code -rt aware
+Subject: [PATCH 103/254] ipc: Make the ipc code -rt aware
RT serializes the code with the (rt)spinlock but keeps preemption
enabled. Some parts of the code need to be atomic nevertheless.
@@ -9,17 +10,16 @@ Protect it with preempt_disable/enable_rt pairts.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
ipc/mqueue.c | 5 +++++
ipc/msg.c | 16 ++++++++++++++++
2 files changed, 21 insertions(+)
-Index: linux-3.4/ipc/mqueue.c
-===================================================================
---- linux-3.4.orig/ipc/mqueue.c
-+++ linux-3.4/ipc/mqueue.c
-@@ -813,12 +813,17 @@ static inline void pipelined_send(struct
+diff --git a/ipc/mqueue.c b/ipc/mqueue.c
+index 28bd64d..dd9e66a 100644
+--- a/ipc/mqueue.c
++++ b/ipc/mqueue.c
+@@ -813,12 +813,17 @@ static inline void pipelined_send(struct mqueue_inode_info *info,
struct msg_msg *message,
struct ext_wait_queue *receiver)
{
@@ -37,11 +37,11 @@ Index: linux-3.4/ipc/mqueue.c
}
/* pipelined_receive() - if there is task waiting in sys_mq_timedsend()
-Index: linux-3.4/ipc/msg.c
-===================================================================
---- linux-3.4.orig/ipc/msg.c
-+++ linux-3.4/ipc/msg.c
-@@ -259,12 +259,20 @@ static void expunge_all(struct msg_queue
+diff --git a/ipc/msg.c b/ipc/msg.c
+index 7385de2..06642ac 100644
+--- a/ipc/msg.c
++++ b/ipc/msg.c
+@@ -259,12 +259,20 @@ static void expunge_all(struct msg_queue *msq, int res)
while (tmp != &msq->q_receivers) {
struct msg_receiver *msr;
@@ -62,7 +62,7 @@ Index: linux-3.4/ipc/msg.c
}
}
-@@ -611,6 +619,12 @@ static inline int pipelined_send(struct
+@@ -611,6 +619,12 @@ static inline int pipelined_send(struct msg_queue *msq, struct msg_msg *msg)
!security_msg_queue_msgrcv(msq, msg, msr->r_tsk,
msr->r_msgtype, msr->r_mode)) {
@@ -75,7 +75,7 @@ Index: linux-3.4/ipc/msg.c
list_del(&msr->r_list);
if (msr->r_maxsize < msg->m_ts) {
msr->r_msg = NULL;
-@@ -624,9 +638,11 @@ static inline int pipelined_send(struct
+@@ -624,9 +638,11 @@ static inline int pipelined_send(struct msg_queue *msq, struct msg_msg *msg)
wake_up_process(msr->r_tsk);
smp_mb();
msr->r_msg = msg;
@@ -87,3 +87,6 @@ Index: linux-3.4/ipc/msg.c
}
}
return 0;
+--
+1.7.10.4
+
diff --git a/patches/ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch b/patches/0104-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch
index 96d7b36..fcf2de9 100644
--- a/patches/ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch
+++ b/patches/0104-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch
@@ -1,6 +1,8 @@
-Subject: ipc/mqueue: Add a critical section to avoid a deadlock
+From 2ded5887a4d56a020415f34397465880fe50a4c7 Mon Sep 17 00:00:00 2001
From: KOBAYASHI Yoshitake <yoshitake.kobayashi@toshiba.co.jp>
Date: Sat, 23 Jul 2011 11:57:36 +0900
+Subject: [PATCH 104/254] ipc/mqueue: Add a critical section to avoid a
+ deadlock
(Repost for v3.0-rt1 and changed the distination addreses)
I have tested the following patch on v3.0-rt1 with PREEMPT_RT_FULL.
@@ -21,7 +23,6 @@ Description of the problem
*. receiver will never wake up and cannot change sender's state to
STATE_READY because sender has higher priority
-
Signed-off-by: Yoshitake Kobayashi <yoshitake.kobayashi@toshiba.co.jp>
Cc: viro@zeniv.linux.org.uk
Cc: dchinner@redhat.com
@@ -34,11 +35,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
ipc/mqueue.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
-Index: linux-3.4/ipc/mqueue.c
-===================================================================
---- linux-3.4.orig/ipc/mqueue.c
-+++ linux-3.4/ipc/mqueue.c
-@@ -837,15 +837,19 @@ static inline void pipelined_receive(str
+diff --git a/ipc/mqueue.c b/ipc/mqueue.c
+index dd9e66a..e630272 100644
+--- a/ipc/mqueue.c
++++ b/ipc/mqueue.c
+@@ -837,15 +837,19 @@ static inline void pipelined_receive(struct mqueue_inode_info *info)
wake_up_interruptible(&info->wait_q);
return;
}
@@ -60,3 +61,6 @@ Index: linux-3.4/ipc/mqueue.c
size_t, msg_len, unsigned int, msg_prio,
const struct timespec __user *, u_abs_timeout)
{
+--
+1.7.10.4
+
diff --git a/patches/relay-fix-timer-madness.patch b/patches/0105-relay-fix-timer-madness.patch
index bed2a52..94bb943 100644
--- a/patches/relay-fix-timer-madness.patch
+++ b/patches/0105-relay-fix-timer-madness.patch
@@ -1,6 +1,7 @@
+From b59674991e230268228d4686fae0ff5301128dc8 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:44:07 -0500
-Subject: relay: fix timer madness
+Subject: [PATCH 105/254] relay: fix timer madness
remove timer calls (!!!) from deep within the tracing infrastructure.
This was totally bogus code that can cause lockups and worse. Poll
@@ -8,16 +9,15 @@ the buffer every 2 jiffies for now.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
kernel/relay.c | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
-Index: linux-3.4/kernel/relay.c
-===================================================================
---- linux-3.4.orig/kernel/relay.c
-+++ linux-3.4/kernel/relay.c
-@@ -340,6 +340,10 @@ static void wakeup_readers(unsigned long
+diff --git a/kernel/relay.c b/kernel/relay.c
+index ab56a17..0fb9799 100644
+--- a/kernel/relay.c
++++ b/kernel/relay.c
+@@ -340,6 +340,10 @@ static void wakeup_readers(unsigned long data)
{
struct rchan_buf *buf = (struct rchan_buf *)data;
wake_up_interruptible(&buf->read_wait);
@@ -28,7 +28,7 @@ Index: linux-3.4/kernel/relay.c
}
/**
-@@ -357,6 +361,7 @@ static void __relay_reset(struct rchan_b
+@@ -357,6 +361,7 @@ static void __relay_reset(struct rchan_buf *buf, unsigned int init)
init_waitqueue_head(&buf->read_wait);
kref_init(&buf->kref);
setup_timer(&buf->timer, wakeup_readers, (unsigned long)buf);
@@ -36,7 +36,7 @@ Index: linux-3.4/kernel/relay.c
} else
del_timer_sync(&buf->timer);
-@@ -739,15 +744,6 @@ size_t relay_switch_subbuf(struct rchan_
+@@ -739,15 +744,6 @@ size_t relay_switch_subbuf(struct rchan_buf *buf, size_t length)
else
buf->early_bytes += buf->chan->subbuf_size -
buf->padding[old_subbuf];
@@ -52,3 +52,6 @@ Index: linux-3.4/kernel/relay.c
}
old = buf->data;
+--
+1.7.10.4
+
diff --git a/patches/net-ipv4-route-use-locks-on-up-rt.patch b/patches/0106-net-ipv4-route-use-locks-on-up-rt.patch.patch
index a991568..d8059da 100644
--- a/patches/net-ipv4-route-use-locks-on-up-rt.patch
+++ b/patches/0106-net-ipv4-route-use-locks-on-up-rt.patch.patch
@@ -1,16 +1,17 @@
-Subject: net-ipv4-route-use-locks-on-up-rt.patch
+From a0723564ec359fa0d95cff21ade4d658e070418c Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 15 Jul 2011 16:24:45 +0200
+Subject: [PATCH 106/254] net-ipv4-route-use-locks-on-up-rt.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
net/ipv4/route.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/net/ipv4/route.c
-===================================================================
---- linux-3.4.orig/net/ipv4/route.c
-+++ linux-3.4/net/ipv4/route.c
+diff --git a/net/ipv4/route.c b/net/ipv4/route.c
+index 167ea10..eea5d9e 100644
+--- a/net/ipv4/route.c
++++ b/net/ipv4/route.c
@@ -250,7 +250,7 @@ struct rt_hash_bucket {
};
@@ -20,3 +21,6 @@ Index: linux-3.4/net/ipv4/route.c
/*
* Instead of using one spinlock for each rt_hash_bucket, we use a table of spinlocks
* The size of this table is a power of two and depends on the number of CPUS.
+--
+1.7.10.4
+
diff --git a/patches/workqueue-avoid-the-lock-in-cpu-dying.patch b/patches/0107-workqueue-avoid-the-lock-in-cpu-dying.patch.patch
index 0089e40..4598766 100644
--- a/patches/workqueue-avoid-the-lock-in-cpu-dying.patch
+++ b/patches/0107-workqueue-avoid-the-lock-in-cpu-dying.patch.patch
@@ -1,17 +1,18 @@
-Subject: workqueue-avoid-the-lock-in-cpu-dying.patch
+From 5d5748ce329a4e00ddbd1d34d8aaa4713b6a5405 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 24 Jun 2011 20:39:24 +0200
+Subject: [PATCH 107/254] workqueue-avoid-the-lock-in-cpu-dying.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/workqueue.c | 30 ++++++++++++++++++++----------
1 file changed, 20 insertions(+), 10 deletions(-)
-Index: linux-3.4/kernel/workqueue.c
-===================================================================
---- linux-3.4.orig/kernel/workqueue.c
-+++ linux-3.4/kernel/workqueue.c
-@@ -3505,6 +3505,25 @@ static int __devinit workqueue_cpu_callb
+diff --git a/kernel/workqueue.c b/kernel/workqueue.c
+index 50e0d00..3fd5280 100644
+--- a/kernel/workqueue.c
++++ b/kernel/workqueue.c
+@@ -3505,6 +3505,25 @@ static int __devinit workqueue_cpu_callback(struct notifier_block *nfb,
kthread_stop(new_trustee);
return NOTIFY_BAD;
}
@@ -37,7 +38,7 @@ Index: linux-3.4/kernel/workqueue.c
}
/* some are called w/ irq disabled, don't disturb irq status */
-@@ -3524,16 +3543,6 @@ static int __devinit workqueue_cpu_callb
+@@ -3524,16 +3543,6 @@ static int __devinit workqueue_cpu_callback(struct notifier_block *nfb,
gcwq->first_idle = new_worker;
break;
@@ -54,7 +55,7 @@ Index: linux-3.4/kernel/workqueue.c
case CPU_POST_DEAD:
gcwq->trustee_state = TRUSTEE_BUTCHER;
/* fall through */
-@@ -3567,6 +3576,7 @@ static int __devinit workqueue_cpu_callb
+@@ -3567,6 +3576,7 @@ static int __devinit workqueue_cpu_callback(struct notifier_block *nfb,
spin_unlock_irqrestore(&gcwq->lock, flags);
@@ -62,3 +63,6 @@ Index: linux-3.4/kernel/workqueue.c
return notifier_from_errno(0);
}
+--
+1.7.10.4
+
diff --git a/patches/timers-prepare-for-full-preemption.patch b/patches/0108-timers-prepare-for-full-preemption.patch
index 01cdcea..20077da 100644
--- a/patches/timers-prepare-for-full-preemption.patch
+++ b/patches/0108-timers-prepare-for-full-preemption.patch
@@ -1,6 +1,7 @@
+From d14ceeafc2bbe3633ef1fe6501cfe4101a71c3ae Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:34 -0500
-Subject: timers: prepare for full preemption
+Subject: [PATCH 108/254] timers: prepare for full preemption
When softirqs can be preempted we need to make sure that cancelling
the timer from the active thread can not deadlock vs. a running timer
@@ -8,17 +9,16 @@ callback. Add a waitqueue to resolve that.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
include/linux/timer.h | 2 +-
kernel/timer.c | 35 ++++++++++++++++++++++++++++++++---
2 files changed, 33 insertions(+), 4 deletions(-)
-Index: linux-3.4/include/linux/timer.h
-===================================================================
---- linux-3.4.orig/include/linux/timer.h
-+++ linux-3.4/include/linux/timer.h
-@@ -276,7 +276,7 @@ extern void add_timer(struct timer_list
+diff --git a/include/linux/timer.h b/include/linux/timer.h
+index 6abd913..b703477 100644
+--- a/include/linux/timer.h
++++ b/include/linux/timer.h
+@@ -276,7 +276,7 @@ extern void add_timer(struct timer_list *timer);
extern int try_to_del_timer_sync(struct timer_list *timer);
@@ -27,10 +27,10 @@ Index: linux-3.4/include/linux/timer.h
extern int del_timer_sync(struct timer_list *timer);
#else
# define del_timer_sync(t) del_timer(t)
-Index: linux-3.4/kernel/timer.c
-===================================================================
---- linux-3.4.orig/kernel/timer.c
-+++ linux-3.4/kernel/timer.c
+diff --git a/kernel/timer.c b/kernel/timer.c
+index a297ffc..d7ad9d0 100644
+--- a/kernel/timer.c
++++ b/kernel/timer.c
@@ -75,6 +75,7 @@ struct tvec_root {
struct tvec_base {
spinlock_t lock;
@@ -39,7 +39,7 @@ Index: linux-3.4/kernel/timer.c
unsigned long timer_jiffies;
unsigned long next_timer;
struct tvec_root tv1;
-@@ -725,12 +726,15 @@ __mod_timer(struct timer_list *timer, un
+@@ -725,12 +726,15 @@ __mod_timer(struct timer_list *timer, unsigned long expires,
debug_activate(timer, expires);
@@ -55,7 +55,7 @@ Index: linux-3.4/kernel/timer.c
new_base = per_cpu(tvec_bases, cpu);
if (base != new_base) {
-@@ -931,6 +935,29 @@ void add_timer_on(struct timer_list *tim
+@@ -931,6 +935,29 @@ void add_timer_on(struct timer_list *timer, int cpu)
}
EXPORT_SYMBOL_GPL(add_timer_on);
@@ -94,7 +94,7 @@ Index: linux-3.4/kernel/timer.c
/**
* del_timer_sync - deactivate a timer and wait for the handler to finish.
* @timer: the timer to be deactivated
-@@ -1063,7 +1090,7 @@ int del_timer_sync(struct timer_list *ti
+@@ -1063,7 +1090,7 @@ int del_timer_sync(struct timer_list *timer)
int ret = try_to_del_timer_sync(timer);
if (ret >= 0)
return ret;
@@ -103,7 +103,7 @@ Index: linux-3.4/kernel/timer.c
}
}
EXPORT_SYMBOL(del_timer_sync);
-@@ -1174,10 +1201,11 @@ static inline void __run_timers(struct t
+@@ -1174,10 +1201,11 @@ static inline void __run_timers(struct tvec_base *base)
spin_unlock_irq(&base->lock);
call_timer_fn(timer, fn, data);
@@ -116,7 +116,7 @@ Index: linux-3.4/kernel/timer.c
spin_unlock_irq(&base->lock);
}
-@@ -1684,6 +1712,7 @@ static int __cpuinit init_timers_cpu(int
+@@ -1684,6 +1712,7 @@ static int __cpuinit init_timers_cpu(int cpu)
}
spin_lock_init(&base->lock);
@@ -124,3 +124,6 @@ Index: linux-3.4/kernel/timer.c
for (j = 0; j < TVN_SIZE; j++) {
INIT_LIST_HEAD(base->tv5.vec + j);
+--
+1.7.10.4
+
diff --git a/patches/timers-preempt-rt-support.patch b/patches/0109-timers-preempt-rt-support.patch
index f45871d..4b77b27 100644
--- a/patches/timers-preempt-rt-support.patch
+++ b/patches/0109-timers-preempt-rt-support.patch
@@ -1,6 +1,7 @@
+From edfb5ce4f0ee8d91dce5ce52dc5b08955760ab69 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:20 -0500
-Subject: timers: preempt-rt support
+Subject: [PATCH 109/254] timers: preempt-rt support
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
@@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/timer.c | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
-Index: linux-3.4/kernel/timer.c
-===================================================================
---- linux-3.4.orig/kernel/timer.c
-+++ linux-3.4/kernel/timer.c
-@@ -1344,6 +1344,22 @@ unsigned long get_next_timer_interrupt(u
+diff --git a/kernel/timer.c b/kernel/timer.c
+index d7ad9d0..05cee31 100644
+--- a/kernel/timer.c
++++ b/kernel/timer.c
+@@ -1344,6 +1344,22 @@ unsigned long get_next_timer_interrupt(unsigned long now)
*/
if (cpu_is_offline(smp_processor_id()))
return now + NEXT_TIMER_MAX_DELTA;
@@ -35,7 +36,7 @@ Index: linux-3.4/kernel/timer.c
spin_lock(&base->lock);
if (time_before_eq(base->next_timer, base->timer_jiffies))
base->next_timer = __next_timer_interrupt(base);
-@@ -1352,7 +1368,7 @@ unsigned long get_next_timer_interrupt(u
+@@ -1352,7 +1368,7 @@ unsigned long get_next_timer_interrupt(unsigned long now)
if (time_before_eq(expires, now))
return now;
@@ -44,3 +45,6 @@ Index: linux-3.4/kernel/timer.c
return cmp_next_hrtimer_event(now, expires);
}
#endif
+--
+1.7.10.4
+
diff --git a/patches/timers-fix-timer-hotplug-on-rt.patch b/patches/0110-timers-fix-timer-hotplug-on-rt.patch
index da011e2..b266b05 100644
--- a/patches/timers-fix-timer-hotplug-on-rt.patch
+++ b/patches/0110-timers-fix-timer-hotplug-on-rt.patch
@@ -1,22 +1,22 @@
+From 3049c9ad6f9c65642d2697e34d5b4149d131e47a Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:32 -0500
-Subject: timers: fix timer hotplug on -rt
+Subject: [PATCH 110/254] timers: fix timer hotplug on -rt
Here we are in the CPU_DEAD notifier, and we must not sleep nor
enable interrupts.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
kernel/timer.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
-Index: linux-3.4/kernel/timer.c
-===================================================================
---- linux-3.4.orig/kernel/timer.c
-+++ linux-3.4/kernel/timer.c
-@@ -1764,6 +1764,7 @@ static void __cpuinit migrate_timers(int
+diff --git a/kernel/timer.c b/kernel/timer.c
+index 05cee31..7ba0602 100644
+--- a/kernel/timer.c
++++ b/kernel/timer.c
+@@ -1764,6 +1764,7 @@ static void __cpuinit migrate_timers(int cpu)
{
struct tvec_base *old_base;
struct tvec_base *new_base;
@@ -24,7 +24,7 @@ Index: linux-3.4/kernel/timer.c
int i;
BUG_ON(cpu_online(cpu));
-@@ -1773,8 +1774,11 @@ static void __cpuinit migrate_timers(int
+@@ -1773,8 +1774,11 @@ static void __cpuinit migrate_timers(int cpu)
* The caller is globally serialized and nobody else
* takes two locks at once, deadlock is not possible.
*/
@@ -38,7 +38,7 @@ Index: linux-3.4/kernel/timer.c
BUG_ON(old_base->running_timer);
-@@ -1788,7 +1792,9 @@ static void __cpuinit migrate_timers(int
+@@ -1788,7 +1792,9 @@ static void __cpuinit migrate_timers(int cpu)
}
spin_unlock(&old_base->lock);
@@ -49,3 +49,6 @@ Index: linux-3.4/kernel/timer.c
put_cpu_var(tvec_bases);
}
#endif /* CONFIG_HOTPLUG_CPU */
+--
+1.7.10.4
+
diff --git a/patches/timers-mov-printk_tick-to-soft-interrupt.patch b/patches/0111-timers-mov-printk_tick-to-soft-interrupt.patch
index e4049b6..ed296c6 100644
--- a/patches/timers-mov-printk_tick-to-soft-interrupt.patch
+++ b/patches/0111-timers-mov-printk_tick-to-soft-interrupt.patch
@@ -1,18 +1,18 @@
+From 0195ce0fcdf0acab030cdcb618713df2894e25e9 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 3 Jul 2009 08:44:30 -0500
-Subject: timers: mov printk_tick to soft interrupt
+Subject: [PATCH 111/254] timers: mov printk_tick to soft interrupt
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
-
---
kernel/timer.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/kernel/timer.c
-===================================================================
---- linux-3.4.orig/kernel/timer.c
-+++ linux-3.4/kernel/timer.c
+diff --git a/kernel/timer.c b/kernel/timer.c
+index 7ba0602..e069d9f 100644
+--- a/kernel/timer.c
++++ b/kernel/timer.c
@@ -1386,7 +1386,6 @@ void update_process_times(int user_tick)
account_process_tick(p, user_tick);
run_local_timers();
@@ -21,7 +21,7 @@ Index: linux-3.4/kernel/timer.c
#ifdef CONFIG_IRQ_WORK
if (in_irq())
irq_work_run();
-@@ -1402,6 +1401,7 @@ static void run_timer_softirq(struct sof
+@@ -1402,6 +1401,7 @@ static void run_timer_softirq(struct softirq_action *h)
{
struct tvec_base *base = __this_cpu_read(tvec_bases);
@@ -29,3 +29,6 @@ Index: linux-3.4/kernel/timer.c
hrtimer_run_pending();
if (time_after_eq(jiffies, base->timer_jiffies))
+--
+1.7.10.4
+
diff --git a/patches/timer-delay-waking-softirqs-from-the-jiffy-tick.patch b/patches/0112-timer-delay-waking-softirqs-from-the-jiffy-tick.patch
index 665c2ce..a49edb3 100644
--- a/patches/timer-delay-waking-softirqs-from-the-jiffy-tick.patch
+++ b/patches/0112-timer-delay-waking-softirqs-from-the-jiffy-tick.patch
@@ -1,6 +1,7 @@
+From 05a573daf2b67795cbde1d30d73ca3998fda08ec Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <peterz@infradead.org>
Date: Fri, 21 Aug 2009 11:56:45 +0200
-Subject: timer: delay waking softirqs from the jiffy tick
+Subject: [PATCH 112/254] timer: delay waking softirqs from the jiffy tick
People were complaining about broken balancing with the recent -rt
series.
@@ -51,15 +52,14 @@ behaviour.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
kernel/timer.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/kernel/timer.c
-===================================================================
---- linux-3.4.orig/kernel/timer.c
-+++ linux-3.4/kernel/timer.c
+diff --git a/kernel/timer.c b/kernel/timer.c
+index e069d9f..8e410fc 100644
+--- a/kernel/timer.c
++++ b/kernel/timer.c
@@ -1384,13 +1384,13 @@ void update_process_times(int user_tick)
/* Note: this timer irq context must be accounted for as well. */
@@ -75,3 +75,6 @@ Index: linux-3.4/kernel/timer.c
run_posix_cpu_timers(p);
}
+--
+1.7.10.4
+
diff --git a/patches/timers-avoid-the-base-null-otptimization-on-rt.patch b/patches/0113-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch
index abd11fb..2aafcdc 100644
--- a/patches/timers-avoid-the-base-null-otptimization-on-rt.patch
+++ b/patches/0113-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch
@@ -1,6 +1,8 @@
-Subject: timers: Avoid the switch timers base set to NULL trick on RT
+From 6d9c72ad290430366a7d8266cc8e64a60d4db440 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 21 Jul 2011 15:23:39 +0200
+Subject: [PATCH 113/254] timers: Avoid the switch timers base set to NULL
+ trick on RT
On RT that code is preemptible, so we cannot assign NULL to timers
base as a preempter would spin forever in lock_timer_base().
@@ -10,11 +12,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/timer.c | 40 ++++++++++++++++++++++++++++++++--------
1 file changed, 32 insertions(+), 8 deletions(-)
-Index: linux-3.4/kernel/timer.c
-===================================================================
---- linux-3.4.orig/kernel/timer.c
-+++ linux-3.4/kernel/timer.c
-@@ -700,6 +700,36 @@ static struct tvec_base *lock_timer_base
+diff --git a/kernel/timer.c b/kernel/timer.c
+index 8e410fc..cc2588b 100644
+--- a/kernel/timer.c
++++ b/kernel/timer.c
+@@ -700,6 +700,36 @@ static struct tvec_base *lock_timer_base(struct timer_list *timer,
}
}
@@ -51,7 +53,7 @@ Index: linux-3.4/kernel/timer.c
static inline int
__mod_timer(struct timer_list *timer, unsigned long expires,
bool pending_only, int pinned)
-@@ -745,14 +775,8 @@ __mod_timer(struct timer_list *timer, un
+@@ -745,14 +775,8 @@ __mod_timer(struct timer_list *timer, unsigned long expires,
* handler yet has not finished. This also guarantees that
* the timer is serialized wrt itself.
*/
@@ -68,3 +70,6 @@ Index: linux-3.4/kernel/timer.c
}
timer->expires = expires;
+--
+1.7.10.4
+
diff --git a/patches/rfc-printk-don-27t-call-printk_tick-in-printk_needs_cpu.patch b/patches/0114-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch
index c3efd9a..c079358 100644
--- a/patches/rfc-printk-don-27t-call-printk_tick-in-printk_needs_cpu.patch
+++ b/patches/0114-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch
@@ -1,6 +1,8 @@
-Subject: printk: Don't call printk_tick in printk_needs_cpu() on RT
+From 0e8f1f227bcdb1e2e10579a437f427658a253c72 Mon Sep 17 00:00:00 2001
From: Yong Zhang <yong.zhang0@gmail.com>
Date: Sun, 16 Oct 2011 18:56:45 +0800
+Subject: [PATCH 114/254] printk: Don't call printk_tick in printk_needs_cpu()
+ on RT
printk_tick() can't be called in atomic context when RT is enabled,
otherwise below warning will show:
@@ -30,10 +32,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/printk.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-Index: linux-3.4/kernel/printk.c
-===================================================================
---- linux-3.4.orig/kernel/printk.c
-+++ linux-3.4/kernel/printk.c
+diff --git a/kernel/printk.c b/kernel/printk.c
+index 300952e..9a27a94 100644
+--- a/kernel/printk.c
++++ b/kernel/printk.c
@@ -1298,8 +1298,8 @@ void printk_tick(void)
int printk_needs_cpu(int cpu)
@@ -45,3 +47,6 @@ Index: linux-3.4/kernel/printk.c
return __this_cpu_read(printk_pending);
}
+--
+1.7.10.4
+
diff --git a/patches/hrtimers-prepare-full-preemption.patch b/patches/0115-hrtimers-prepare-full-preemption.patch
index 7828640..d14d54f 100644
--- a/patches/hrtimers-prepare-full-preemption.patch
+++ b/patches/0115-hrtimers-prepare-full-preemption.patch
@@ -1,13 +1,13 @@
+From 65d2631ab165636de0c213ba1766531185ee4c84 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:34 -0500
-Subject: hrtimers: prepare full preemption
+Subject: [PATCH 115/254] hrtimers: prepare full preemption
Make cancellation of a running callback in softirq context safe
against preemption.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
include/linux/hrtimer.h | 10 ++++++++++
kernel/hrtimer.c | 33 ++++++++++++++++++++++++++++++++-
@@ -15,10 +15,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/posix-timers.c | 33 +++++++++++++++++++++++++++++++++
4 files changed, 76 insertions(+), 1 deletion(-)
-Index: linux-3.4/include/linux/hrtimer.h
-===================================================================
---- linux-3.4.orig/include/linux/hrtimer.h
-+++ linux-3.4/include/linux/hrtimer.h
+diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
+index fd0dc30..e8b395d 100644
+--- a/include/linux/hrtimer.h
++++ b/include/linux/hrtimer.h
@@ -187,6 +187,9 @@ struct hrtimer_cpu_base {
unsigned long nr_hangs;
ktime_t max_hang_time;
@@ -29,7 +29,7 @@ Index: linux-3.4/include/linux/hrtimer.h
struct hrtimer_clock_base clock_base[HRTIMER_MAX_CLOCK_BASES];
};
-@@ -374,6 +377,13 @@ static inline int hrtimer_restart(struct
+@@ -374,6 +377,13 @@ static inline int hrtimer_restart(struct hrtimer *timer)
return hrtimer_start_expires(timer, HRTIMER_MODE_ABS);
}
@@ -43,11 +43,11 @@ Index: linux-3.4/include/linux/hrtimer.h
/* Query timers: */
extern ktime_t hrtimer_get_remaining(const struct hrtimer *timer);
extern int hrtimer_get_res(const clockid_t which_clock, struct timespec *tp);
-Index: linux-3.4/kernel/hrtimer.c
-===================================================================
---- linux-3.4.orig/kernel/hrtimer.c
-+++ linux-3.4/kernel/hrtimer.c
-@@ -847,6 +847,32 @@ u64 hrtimer_forward(struct hrtimer *time
+diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
+index 1a3695e..905e2cd2 100644
+--- a/kernel/hrtimer.c
++++ b/kernel/hrtimer.c
+@@ -847,6 +847,32 @@ u64 hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval)
}
EXPORT_SYMBOL_GPL(hrtimer_forward);
@@ -80,7 +80,7 @@ Index: linux-3.4/kernel/hrtimer.c
/*
* enqueue_hrtimer - internal function to (re)start a timer
*
-@@ -1073,7 +1099,7 @@ int hrtimer_cancel(struct hrtimer *timer
+@@ -1073,7 +1099,7 @@ int hrtimer_cancel(struct hrtimer *timer)
if (ret >= 0)
return ret;
@@ -98,7 +98,7 @@ Index: linux-3.4/kernel/hrtimer.c
}
/*
-@@ -1638,6 +1666,9 @@ static void __cpuinit init_hrtimers_cpu(
+@@ -1638,6 +1666,9 @@ static void __cpuinit init_hrtimers_cpu(int cpu)
}
hrtimer_init_hres(cpu_base);
@@ -108,10 +108,10 @@ Index: linux-3.4/kernel/hrtimer.c
}
#ifdef CONFIG_HOTPLUG_CPU
-Index: linux-3.4/kernel/itimer.c
-===================================================================
---- linux-3.4.orig/kernel/itimer.c
-+++ linux-3.4/kernel/itimer.c
+diff --git a/kernel/itimer.c b/kernel/itimer.c
+index 8d262b4..d051390 100644
+--- a/kernel/itimer.c
++++ b/kernel/itimer.c
@@ -213,6 +213,7 @@ again:
/* We are sharing ->siglock with it_real_fn() */
if (hrtimer_try_to_cancel(timer) < 0) {
@@ -120,11 +120,11 @@ Index: linux-3.4/kernel/itimer.c
goto again;
}
expires = timeval_to_ktime(value->it_value);
-Index: linux-3.4/kernel/posix-timers.c
-===================================================================
---- linux-3.4.orig/kernel/posix-timers.c
-+++ linux-3.4/kernel/posix-timers.c
-@@ -766,6 +766,20 @@ SYSCALL_DEFINE1(timer_getoverrun, timer_
+diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
+index 7b73c34..6a74800 100644
+--- a/kernel/posix-timers.c
++++ b/kernel/posix-timers.c
+@@ -766,6 +766,20 @@ SYSCALL_DEFINE1(timer_getoverrun, timer_t, timer_id)
return overrun;
}
@@ -182,7 +182,7 @@ Index: linux-3.4/kernel/posix-timers.c
spin_lock(&current->sighand->siglock);
list_del(&timer->list);
-@@ -920,8 +943,18 @@ static void itimer_delete(struct k_itime
+@@ -920,8 +943,18 @@ static void itimer_delete(struct k_itimer *timer)
retry_delete:
spin_lock_irqsave(&timer->it_lock, flags);
@@ -201,3 +201,6 @@ Index: linux-3.4/kernel/posix-timers.c
goto retry_delete;
}
list_del(&timer->list);
+--
+1.7.10.4
+
diff --git a/patches/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch b/patches/0116-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch
index ff50cc3..b6aaa95 100644
--- a/patches/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch
+++ b/patches/0116-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch
@@ -1,6 +1,8 @@
+From 438bb0c0c010581bc8fb445665279ab877df0b91 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 3 Jul 2009 08:44:31 -0500
-Subject: hrtimer: fixup hrtimer callback changes for preempt-rt
+Subject: [PATCH 116/254] hrtimer: fixup hrtimer callback changes for
+ preempt-rt
In preempt-rt we can not call the callbacks which take sleeping locks
from the timer interrupt context.
@@ -10,20 +12,19 @@ delivery problem for real.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
-
---
- include/linux/hrtimer.h | 3
- kernel/hrtimer.c | 190 ++++++++++++++++++++++++++++++++++++++++++-----
- kernel/sched/core.c | 1
- kernel/sched/rt.c | 1
- kernel/time/tick-sched.c | 1
- kernel/watchdog.c | 1
+ include/linux/hrtimer.h | 3 +
+ kernel/hrtimer.c | 190 +++++++++++++++++++++++++++++++++++++++++-----
+ kernel/sched/core.c | 1 +
+ kernel/sched/rt.c | 1 +
+ kernel/time/tick-sched.c | 1 +
+ kernel/watchdog.c | 1 +
6 files changed, 179 insertions(+), 18 deletions(-)
-Index: linux-3.4/include/linux/hrtimer.h
-===================================================================
---- linux-3.4.orig/include/linux/hrtimer.h
-+++ linux-3.4/include/linux/hrtimer.h
+diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
+index e8b395d..0e37086 100644
+--- a/include/linux/hrtimer.h
++++ b/include/linux/hrtimer.h
@@ -111,6 +111,8 @@ struct hrtimer {
enum hrtimer_restart (*function)(struct hrtimer *);
struct hrtimer_clock_base *base;
@@ -41,11 +42,11 @@ Index: linux-3.4/include/linux/hrtimer.h
ktime_t resolution;
ktime_t (*get_time)(void);
ktime_t softirq_time;
-Index: linux-3.4/kernel/hrtimer.c
-===================================================================
---- linux-3.4.orig/kernel/hrtimer.c
-+++ linux-3.4/kernel/hrtimer.c
-@@ -589,8 +589,7 @@ static int hrtimer_reprogram(struct hrti
+diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
+index 905e2cd2..1dd627b 100644
+--- a/kernel/hrtimer.c
++++ b/kernel/hrtimer.c
+@@ -589,8 +589,7 @@ static int hrtimer_reprogram(struct hrtimer *timer,
* When the callback is running, we do not reprogram the clock event
* device. The timer callback is either running on a different CPU or
* the callback is executed in the hrtimer_interrupt context. The
@@ -55,7 +56,7 @@ Index: linux-3.4/kernel/hrtimer.c
*/
if (hrtimer_callback_running(timer))
return 0;
-@@ -625,6 +624,9 @@ static int hrtimer_reprogram(struct hrti
+@@ -625,6 +624,9 @@ static int hrtimer_reprogram(struct hrtimer *timer,
return res;
}
@@ -65,7 +66,7 @@ Index: linux-3.4/kernel/hrtimer.c
/*
* Initialize the high resolution related parts of cpu_base
*/
-@@ -644,7 +646,29 @@ static inline int hrtimer_enqueue_reprog
+@@ -644,7 +646,29 @@ static inline int hrtimer_enqueue_reprogram(struct hrtimer *timer,
struct hrtimer_clock_base *base,
int wakeup)
{
@@ -95,7 +96,7 @@ Index: linux-3.4/kernel/hrtimer.c
if (wakeup) {
raw_spin_unlock(&base->cpu_base->lock);
raise_softirq_irqoff(HRTIMER_SOFTIRQ);
-@@ -733,6 +757,11 @@ static inline int hrtimer_enqueue_reprog
+@@ -733,6 +757,11 @@ static inline int hrtimer_enqueue_reprogram(struct hrtimer *timer,
}
static inline void hrtimer_init_hres(struct hrtimer_cpu_base *base) { }
static inline void retrigger_next_event(void *arg) { }
@@ -107,7 +108,7 @@ Index: linux-3.4/kernel/hrtimer.c
#endif /* CONFIG_HIGH_RES_TIMERS */
-@@ -864,9 +893,9 @@ void hrtimer_wait_for_timer(const struct
+@@ -864,9 +893,9 @@ void hrtimer_wait_for_timer(const struct hrtimer *timer)
{
struct hrtimer_clock_base *base = timer->base;
@@ -119,7 +120,7 @@ Index: linux-3.4/kernel/hrtimer.c
}
#else
-@@ -916,6 +945,11 @@ static void __remove_hrtimer(struct hrti
+@@ -916,6 +945,11 @@ static void __remove_hrtimer(struct hrtimer *timer,
if (!(timer->state & HRTIMER_STATE_ENQUEUED))
goto out;
@@ -131,7 +132,7 @@ Index: linux-3.4/kernel/hrtimer.c
next_timer = timerqueue_getnext(&base->active);
timerqueue_del(&base->active, &timer->node);
if (&timer->node == next_timer) {
-@@ -1178,6 +1212,7 @@ static void __hrtimer_init(struct hrtime
+@@ -1178,6 +1212,7 @@ static void __hrtimer_init(struct hrtimer *timer, clockid_t clock_id,
base = hrtimer_clockid_to_base(clock_id);
timer->base = &cpu_base->clock_base[base];
@@ -139,7 +140,7 @@ Index: linux-3.4/kernel/hrtimer.c
timerqueue_init(&timer->node);
#ifdef CONFIG_TIMER_STATS
-@@ -1261,10 +1296,118 @@ static void __run_hrtimer(struct hrtimer
+@@ -1261,10 +1296,118 @@ static void __run_hrtimer(struct hrtimer *timer, ktime_t *now)
timer->state &= ~HRTIMER_STATE_CALLBACK;
}
@@ -260,7 +261,7 @@ Index: linux-3.4/kernel/hrtimer.c
/*
* High resolution timer interrupt
* Called with interrupts disabled
-@@ -1273,7 +1416,7 @@ void hrtimer_interrupt(struct clock_even
+@@ -1273,7 +1416,7 @@ void hrtimer_interrupt(struct clock_event_device *dev)
{
struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases);
ktime_t expires_next, now, entry_time, delta;
@@ -343,7 +344,7 @@ Index: linux-3.4/kernel/hrtimer.c
}
/*
-@@ -1525,6 +1679,7 @@ static enum hrtimer_restart hrtimer_wake
+@@ -1525,6 +1679,7 @@ static enum hrtimer_restart hrtimer_wakeup(struct hrtimer *timer)
void hrtimer_init_sleeper(struct hrtimer_sleeper *sl, struct task_struct *task)
{
sl->timer.function = hrtimer_wakeup;
@@ -351,7 +352,7 @@ Index: linux-3.4/kernel/hrtimer.c
sl->task = task;
}
EXPORT_SYMBOL_GPL(hrtimer_init_sleeper);
-@@ -1663,6 +1818,7 @@ static void __cpuinit init_hrtimers_cpu(
+@@ -1663,6 +1818,7 @@ static void __cpuinit init_hrtimers_cpu(int cpu)
for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++) {
cpu_base->clock_base[i].cpu_base = cpu_base;
timerqueue_init_head(&cpu_base->clock_base[i].active);
@@ -369,11 +370,11 @@ Index: linux-3.4/kernel/hrtimer.c
}
/**
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
-@@ -480,6 +480,7 @@ static void init_rq_hrtick(struct rq *rq
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index 7274881..29fa0de 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
+@@ -480,6 +480,7 @@ static void init_rq_hrtick(struct rq *rq)
hrtimer_init(&rq->hrtick_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
rq->hrtick_timer.function = hrtick;
@@ -381,11 +382,11 @@ Index: linux-3.4/kernel/sched/core.c
}
#else /* CONFIG_SCHED_HRTICK */
static inline void hrtick_clear(struct rq *rq)
-Index: linux-3.4/kernel/sched/rt.c
-===================================================================
---- linux-3.4.orig/kernel/sched/rt.c
-+++ linux-3.4/kernel/sched/rt.c
-@@ -41,6 +41,7 @@ void init_rt_bandwidth(struct rt_bandwid
+diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
+index 44af55e..8bb9f00 100644
+--- a/kernel/sched/rt.c
++++ b/kernel/sched/rt.c
+@@ -41,6 +41,7 @@ void init_rt_bandwidth(struct rt_bandwidth *rt_b, u64 period, u64 runtime)
hrtimer_init(&rt_b->rt_period_timer,
CLOCK_MONOTONIC, HRTIMER_MODE_REL);
@@ -393,11 +394,11 @@ Index: linux-3.4/kernel/sched/rt.c
rt_b->rt_period_timer.function = sched_rt_period_timer;
}
-Index: linux-3.4/kernel/time/tick-sched.c
-===================================================================
---- linux-3.4.orig/kernel/time/tick-sched.c
-+++ linux-3.4/kernel/time/tick-sched.c
-@@ -830,6 +830,7 @@ void tick_setup_sched_timer(void)
+diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
+index a607a7c..5d409b0 100644
+--- a/kernel/time/tick-sched.c
++++ b/kernel/time/tick-sched.c
+@@ -840,6 +840,7 @@ void tick_setup_sched_timer(void)
* Emulate tick processing via per-CPU hrtimers:
*/
hrtimer_init(&ts->sched_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS);
@@ -405,11 +406,11 @@ Index: linux-3.4/kernel/time/tick-sched.c
ts->sched_timer.function = tick_sched_timer;
/* Get the next period (per cpu) */
-Index: linux-3.4/kernel/watchdog.c
-===================================================================
---- linux-3.4.orig/kernel/watchdog.c
-+++ linux-3.4/kernel/watchdog.c
-@@ -441,6 +441,7 @@ static void watchdog_prepare_cpu(int cpu
+diff --git a/kernel/watchdog.c b/kernel/watchdog.c
+index de08263..87192eb 100644
+--- a/kernel/watchdog.c
++++ b/kernel/watchdog.c
+@@ -441,6 +441,7 @@ static void watchdog_prepare_cpu(int cpu)
WARN_ON(per_cpu(softlockup_watchdog, cpu));
hrtimer_init(hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
hrtimer->function = watchdog_timer_fn;
@@ -417,3 +418,6 @@ Index: linux-3.4/kernel/watchdog.c
}
static int watchdog_enable(int cpu)
+--
+1.7.10.4
+
diff --git a/patches/peter_zijlstra-frob-hrtimer.patch b/patches/0117-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch
index c9a8772..68b8531 100644
--- a/patches/peter_zijlstra-frob-hrtimer.patch
+++ b/patches/0117-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch
@@ -1,6 +1,8 @@
-Subject: hrtimer: Don't call the timer handler from hrtimer_start
+From 5f52a6b183444fe3031052d7618c44c580a6272e Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
-Date: Fri Aug 12 17:39:54 CEST 2011
+Date: Fri, 12 Aug 2011 17:39:54 +0200
+Subject: [PATCH 117/254] hrtimer: Don't call the timer handler from
+ hrtimer_start
[<ffffffff812de4a9>] __delay+0xf/0x11
[<ffffffff812e36e9>] do_raw_spin_lock+0xd2/0x13c
@@ -30,11 +32,11 @@ Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
kernel/hrtimer.c | 48 +++++++++++++++++++++++-------------------------
1 file changed, 23 insertions(+), 25 deletions(-)
-Index: linux-3.4/kernel/hrtimer.c
-===================================================================
---- linux-3.4.orig/kernel/hrtimer.c
-+++ linux-3.4/kernel/hrtimer.c
-@@ -646,37 +646,24 @@ static inline int hrtimer_enqueue_reprog
+diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
+index 1dd627b..358442b 100644
+--- a/kernel/hrtimer.c
++++ b/kernel/hrtimer.c
+@@ -646,37 +646,24 @@ static inline int hrtimer_enqueue_reprogram(struct hrtimer *timer,
struct hrtimer_clock_base *base,
int wakeup)
{
@@ -82,7 +84,7 @@ Index: linux-3.4/kernel/hrtimer.c
}
return 0;
-@@ -1046,8 +1033,19 @@ int __hrtimer_start_range_ns(struct hrti
+@@ -1046,8 +1033,19 @@ int __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
*
* XXX send_remote_softirq() ?
*/
@@ -104,3 +106,6 @@ Index: linux-3.4/kernel/hrtimer.c
unlock_hrtimer_base(timer, &flags);
+--
+1.7.10.4
+
diff --git a/patches/0118-hrtimer-Add-missing-debug_activate-aid-Was-Re-ANNOUN.patch b/patches/0118-hrtimer-Add-missing-debug_activate-aid-Was-Re-ANNOUN.patch
new file mode 100644
index 0000000..9a9b135
--- /dev/null
+++ b/patches/0118-hrtimer-Add-missing-debug_activate-aid-Was-Re-ANNOUN.patch
@@ -0,0 +1,41 @@
+From 264c71ad62a42e3b2b5ae90dda3e145971dd6374 Mon Sep 17 00:00:00 2001
+From: Yong Zhang <yong.zhang0@gmail.com>
+Date: Thu, 13 Oct 2011 15:52:30 +0800
+Subject: [PATCH 118/254] hrtimer: Add missing debug_activate() aid [Was: Re:
+ [ANNOUNCE] 3.0.6-rt17]
+
+On Fri, Oct 07, 2011 at 10:25:25AM -0700, Fernando Lopez-Lezcano wrote:
+> On 10/06/2011 06:15 PM, Thomas Gleixner wrote:
+> >Dear RT Folks,
+> >
+> >I'm pleased to announce the 3.0.6-rt17 release.
+>
+> Hi and thanks again. So far this one is not hanging which is very
+> good news. But I still see the hrtimer_fixup_activate warnings I
+> reported for rt16...
+
+Hi Fernando,
+
+I think below patch will smooth your concern?
+
+Thanks,
+Yong
+---
+ kernel/hrtimer.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
+index 358442b..d363df8 100644
+--- a/kernel/hrtimer.c
++++ b/kernel/hrtimer.c
+@@ -1042,6 +1042,7 @@ int __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
+ * remove it again and report a failure. This avoids
+ * stale base->first entries.
+ */
++ debug_deactivate(timer);
+ __remove_hrtimer(timer, new_base,
+ timer->state & HRTIMER_STATE_CALLBACK, 0);
+ }
+--
+1.7.10.4
+
diff --git a/patches/hrtimer-fix-reprogram-madness.patch b/patches/0119-hrtimer-fix-reprogram-madness.patch.patch
index c257998..39ef954 100644
--- a/patches/hrtimer-fix-reprogram-madness.patch
+++ b/patches/0119-hrtimer-fix-reprogram-madness.patch.patch
@@ -1,17 +1,18 @@
-Subject: hrtimer-fix-reprogram-madness.patch
+From d91014fd188d15df1adff750d23e3f115f407705 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 14 Sep 2011 14:48:43 +0200
+Subject: [PATCH 119/254] hrtimer-fix-reprogram-madness.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/hrtimer.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
-Index: linux-3.4/kernel/hrtimer.c
-===================================================================
---- linux-3.4.orig/kernel/hrtimer.c
-+++ linux-3.4/kernel/hrtimer.c
-@@ -1317,7 +1317,11 @@ static void hrtimer_rt_reprogram(int res
+diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
+index d363df8..3991464 100644
+--- a/kernel/hrtimer.c
++++ b/kernel/hrtimer.c
+@@ -1317,7 +1317,11 @@ static void hrtimer_rt_reprogram(int restart, struct hrtimer *timer,
if (!enqueue_hrtimer(timer, base))
return;
@@ -24,7 +25,7 @@ Index: linux-3.4/kernel/hrtimer.c
goto requeue;
} else if (hrtimer_active(timer)) {
-@@ -1326,6 +1330,7 @@ static void hrtimer_rt_reprogram(int res
+@@ -1326,6 +1330,7 @@ static void hrtimer_rt_reprogram(int restart, struct hrtimer *timer,
* the event device.
*/
if (&timer->node == base->active.next &&
@@ -40,3 +41,6 @@ Index: linux-3.4/kernel/hrtimer.c
}
/*
+--
+1.7.10.4
+
diff --git a/patches/timer-fd-avoid-live-lock.patch b/patches/0120-timer-fd-Prevent-live-lock.patch
index 5544090..4be5da1 100644
--- a/patches/timer-fd-avoid-live-lock.patch
+++ b/patches/0120-timer-fd-Prevent-live-lock.patch
@@ -1,6 +1,7 @@
-Subject: timer-fd: Prevent live lock
+From 45e80542dc4abd6e4267c25ce13925bd64aed41d Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 25 Jan 2012 11:08:40 +0100
+Subject: [PATCH 120/254] timer-fd: Prevent live lock
If hrtimer_try_to_cancel() requires a retry, then depending on the
priority setting te retry loop might prevent timer callback completion
@@ -14,11 +15,11 @@ Cc: stable-rt@vger.kernel.org
fs/timerfd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/fs/timerfd.c
-===================================================================
---- linux-3.4.orig/fs/timerfd.c
-+++ linux-3.4/fs/timerfd.c
-@@ -313,7 +313,7 @@ SYSCALL_DEFINE4(timerfd_settime, int, uf
+diff --git a/fs/timerfd.c b/fs/timerfd.c
+index dffeb37..57f0e4e 100644
+--- a/fs/timerfd.c
++++ b/fs/timerfd.c
+@@ -313,7 +313,7 @@ SYSCALL_DEFINE4(timerfd_settime, int, ufd, int, flags,
if (hrtimer_try_to_cancel(&ctx->tmr) >= 0)
break;
spin_unlock_irq(&ctx->wqh.lock);
@@ -27,3 +28,6 @@ Index: linux-3.4/fs/timerfd.c
}
/*
+--
+1.7.10.4
+
diff --git a/patches/posix-timers-thread-posix-cpu-timers-on-rt.patch b/patches/0121-posix-timers-thread-posix-cpu-timers-on-rt.patch
index 2a67ae9..066e33a 100644
--- a/patches/posix-timers-thread-posix-cpu-timers-on-rt.patch
+++ b/patches/0121-posix-timers-thread-posix-cpu-timers-on-rt.patch
@@ -1,6 +1,7 @@
+From 5636d7164b0f6cf67a00dde938b3726b0a833ff3 Mon Sep 17 00:00:00 2001
From: John Stultz <johnstul@us.ibm.com>
Date: Fri, 3 Jul 2009 08:29:58 -0500
-Subject: posix-timers: thread posix-cpu-timers on -rt
+Subject: [PATCH 121/254] posix-timers: thread posix-cpu-timers on -rt
posix-cpu-timer code takes non -rt safe locks in hard irq
context. Move it to a thread.
@@ -9,19 +10,18 @@ context. Move it to a thread.
Signed-off-by: John Stultz <johnstul@us.ibm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
- include/linux/init_task.h | 7 +
- include/linux/sched.h | 3
- init/main.c | 1
- kernel/fork.c | 3
- kernel/posix-cpu-timers.c | 182 ++++++++++++++++++++++++++++++++++++++++++++--
+ include/linux/init_task.h | 7 ++
+ include/linux/sched.h | 3 +
+ init/main.c | 1 +
+ kernel/fork.c | 3 +
+ kernel/posix-cpu-timers.c | 182 +++++++++++++++++++++++++++++++++++++++++++--
5 files changed, 190 insertions(+), 6 deletions(-)
-Index: linux-3.4/include/linux/init_task.h
-===================================================================
---- linux-3.4.orig/include/linux/init_task.h
-+++ linux-3.4/include/linux/init_task.h
+diff --git a/include/linux/init_task.h b/include/linux/init_task.h
+index e4baff5..29334a5 100644
+--- a/include/linux/init_task.h
++++ b/include/linux/init_task.h
@@ -132,6 +132,12 @@ extern struct cred init_cred;
# define INIT_PERF_EVENTS(tsk)
#endif
@@ -43,10 +43,10 @@ Index: linux-3.4/include/linux/init_task.h
.pids = { \
[PIDTYPE_PID] = INIT_PID_LINK(PIDTYPE_PID), \
[PIDTYPE_PGID] = INIT_PID_LINK(PIDTYPE_PGID), \
-Index: linux-3.4/include/linux/sched.h
-===================================================================
---- linux-3.4.orig/include/linux/sched.h
-+++ linux-3.4/include/linux/sched.h
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index 5b63855..b997506 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
@@ -1403,6 +1403,9 @@ struct task_struct {
struct task_cputime cputime_expires;
@@ -57,10 +57,10 @@ Index: linux-3.4/include/linux/sched.h
/* process credentials */
const struct cred __rcu *real_cred; /* objective and real subjective task
-Index: linux-3.4/init/main.c
-===================================================================
---- linux-3.4.orig/init/main.c
-+++ linux-3.4/init/main.c
+diff --git a/init/main.c b/init/main.c
+index cb54cd3..894d2bd 100644
+--- a/init/main.c
++++ b/init/main.c
@@ -68,6 +68,7 @@
#include <linux/shmem_fs.h>
#include <linux/slab.h>
@@ -69,11 +69,11 @@ Index: linux-3.4/init/main.c
#include <asm/io.h>
#include <asm/bugs.h>
-Index: linux-3.4/kernel/fork.c
-===================================================================
---- linux-3.4.orig/kernel/fork.c
-+++ linux-3.4/kernel/fork.c
-@@ -1096,6 +1096,9 @@ void mm_init_owner(struct mm_struct *mm,
+diff --git a/kernel/fork.c b/kernel/fork.c
+index abb8ee1..03fc790 100644
+--- a/kernel/fork.c
++++ b/kernel/fork.c
+@@ -1097,6 +1097,9 @@ void mm_init_owner(struct mm_struct *mm, struct task_struct *p)
*/
static void posix_cpu_timers_init(struct task_struct *tsk)
{
@@ -83,11 +83,11 @@ Index: linux-3.4/kernel/fork.c
tsk->cputime_expires.prof_exp = 0;
tsk->cputime_expires.virt_exp = 0;
tsk->cputime_expires.sched_exp = 0;
-Index: linux-3.4/kernel/posix-cpu-timers.c
-===================================================================
---- linux-3.4.orig/kernel/posix-cpu-timers.c
-+++ linux-3.4/kernel/posix-cpu-timers.c
-@@ -682,7 +682,7 @@ static int posix_cpu_timer_set(struct k_
+diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
+index 125cb67..63468d1 100644
+--- a/kernel/posix-cpu-timers.c
++++ b/kernel/posix-cpu-timers.c
+@@ -682,7 +682,7 @@ static int posix_cpu_timer_set(struct k_itimer *timer, int flags,
/*
* Disarm any old timer after extracting its expiry time.
*/
@@ -96,7 +96,7 @@ Index: linux-3.4/kernel/posix-cpu-timers.c
ret = 0;
old_incr = timer->it.cpu.incr;
-@@ -1198,7 +1198,7 @@ void posix_cpu_timer_schedule(struct k_i
+@@ -1198,7 +1198,7 @@ void posix_cpu_timer_schedule(struct k_itimer *timer)
/*
* Now re-arm for the new expiry time.
*/
@@ -105,7 +105,7 @@ Index: linux-3.4/kernel/posix-cpu-timers.c
arm_timer(timer);
spin_unlock(&p->sighand->siglock);
-@@ -1262,10 +1262,11 @@ static inline int fastpath_timer_check(s
+@@ -1262,10 +1262,11 @@ static inline int fastpath_timer_check(struct task_struct *tsk)
sig = tsk->signal;
if (sig->cputimer.running) {
struct task_cputime group_sample;
@@ -119,7 +119,7 @@ Index: linux-3.4/kernel/posix-cpu-timers.c
if (task_cputime_expired(&group_sample, &sig->cputime_expires))
return 1;
-@@ -1279,13 +1280,13 @@ static inline int fastpath_timer_check(s
+@@ -1279,13 +1280,13 @@ static inline int fastpath_timer_check(struct task_struct *tsk)
* already updated our counts. We need to check if any timers fire now.
* Interrupts are disabled.
*/
@@ -135,7 +135,7 @@ Index: linux-3.4/kernel/posix-cpu-timers.c
/*
* The fast path checks that there are no expired thread or thread
-@@ -1343,6 +1344,175 @@ void run_posix_cpu_timers(struct task_st
+@@ -1343,6 +1344,175 @@ void run_posix_cpu_timers(struct task_struct *tsk)
}
}
@@ -311,3 +311,6 @@ Index: linux-3.4/kernel/posix-cpu-timers.c
/*
* Set one of the process-wide special case CPU timers or RLIMIT_CPU.
* The tsk->sighand->siglock must be held by the caller.
+--
+1.7.10.4
+
diff --git a/patches/posix-timers-shorten-cpu-timers-thread.patch b/patches/0122-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch
index b837a1e..c507e89 100644
--- a/patches/posix-timers-shorten-cpu-timers-thread.patch
+++ b/patches/0122-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch
@@ -1,6 +1,8 @@
+From 7f263b61f3e919e070b5c3f15e75bb3dd34fde15 Mon Sep 17 00:00:00 2001
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Date: Fri, 3 Jul 2009 08:30:00 -0500
-Subject: posix-timers: Shorten posix_cpu_timers/<CPU> kernel thread names
+Subject: [PATCH 122/254] posix-timers: Shorten posix_cpu_timers/<CPU> kernel
+ thread names
Shorten the softirq kernel thread names because they always overflow the
limited comm length, appearing as "posix_cpu_timer" CPU# times.
@@ -8,16 +10,15 @@ limited comm length, appearing as "posix_cpu_timer" CPU# times.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
kernel/posix-cpu-timers.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/kernel/posix-cpu-timers.c
-===================================================================
---- linux-3.4.orig/kernel/posix-cpu-timers.c
-+++ linux-3.4/kernel/posix-cpu-timers.c
-@@ -1451,7 +1451,7 @@ static int posix_cpu_thread_call(struct
+diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
+index 63468d1..09eb469 100644
+--- a/kernel/posix-cpu-timers.c
++++ b/kernel/posix-cpu-timers.c
+@@ -1451,7 +1451,7 @@ static int posix_cpu_thread_call(struct notifier_block *nfb,
switch (action) {
case CPU_UP_PREPARE:
p = kthread_create(posix_cpu_timers_thread, hcpu,
@@ -26,3 +27,6 @@ Index: linux-3.4/kernel/posix-cpu-timers.c
if (IS_ERR(p))
return NOTIFY_BAD;
p->flags |= PF_NOFREEZE;
+--
+1.7.10.4
+
diff --git a/patches/posix-timers-avoid-wakeups-when-no-timers-are-active.patch b/patches/0123-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch
index fe24274..6f8828d 100644
--- a/patches/posix-timers-avoid-wakeups-when-no-timers-are-active.patch
+++ b/patches/0123-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch
@@ -1,19 +1,20 @@
+From 16c3b81e730b0c4206dff56a12709b61fb315668 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 3 Jul 2009 08:44:44 -0500
-Subject: posix-timers: Avoid wakeups when no timers are active
+Subject: [PATCH 123/254] posix-timers: Avoid wakeups when no timers are
+ active
Waking the thread even when no timers are scheduled is useless.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
kernel/posix-cpu-timers.c | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
-Index: linux-3.4/kernel/posix-cpu-timers.c
-===================================================================
---- linux-3.4.orig/kernel/posix-cpu-timers.c
-+++ linux-3.4/kernel/posix-cpu-timers.c
+diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
+index 09eb469..2af6ea6 100644
+--- a/kernel/posix-cpu-timers.c
++++ b/kernel/posix-cpu-timers.c
@@ -1408,6 +1408,21 @@ wait_to_die:
return 0;
}
@@ -36,7 +37,7 @@ Index: linux-3.4/kernel/posix-cpu-timers.c
void run_posix_cpu_timers(struct task_struct *tsk)
{
unsigned long cpu = smp_processor_id();
-@@ -1420,7 +1435,7 @@ void run_posix_cpu_timers(struct task_st
+@@ -1420,7 +1435,7 @@ void run_posix_cpu_timers(struct task_struct *tsk)
tasklist = per_cpu(posix_timer_tasklist, cpu);
/* check to see if we're already queued */
@@ -45,7 +46,7 @@ Index: linux-3.4/kernel/posix-cpu-timers.c
get_task_struct(tsk);
if (tasklist) {
tsk->posix_timer_list = tasklist;
-@@ -1432,9 +1447,9 @@ void run_posix_cpu_timers(struct task_st
+@@ -1432,9 +1447,9 @@ void run_posix_cpu_timers(struct task_struct *tsk)
tsk->posix_timer_list = tsk;
}
per_cpu(posix_timer_tasklist, cpu) = tsk;
@@ -57,3 +58,6 @@ Index: linux-3.4/kernel/posix-cpu-timers.c
}
/*
+--
+1.7.10.4
+
diff --git a/patches/sched-delay-put-task.patch b/patches/0124-sched-delay-put-task.patch.patch
index e5a4b68..538f000 100644
--- a/patches/sched-delay-put-task.patch
+++ b/patches/0124-sched-delay-put-task.patch.patch
@@ -1,6 +1,7 @@
-Subject: sched-delay-put-task.patch
+From 9b6b3aa178d68353a93391da03f0409e147523c8 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 31 May 2011 16:59:16 +0200
+Subject: [PATCH 124/254] sched-delay-put-task.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/fork.c | 11 +++++++++++
2 files changed, 24 insertions(+)
-Index: linux-3.4/include/linux/sched.h
-===================================================================
---- linux-3.4.orig/include/linux/sched.h
-+++ linux-3.4/include/linux/sched.h
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index b997506..0fbffda 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
@@ -1635,6 +1635,9 @@ struct task_struct {
#ifdef CONFIG_HAVE_HW_BREAKPOINT
atomic_t ptrace_bp_refcnt;
@@ -38,7 +39,7 @@ Index: linux-3.4/include/linux/sched.h
extern void __put_task_struct(struct task_struct *t);
static inline void put_task_struct(struct task_struct *t)
-@@ -1826,6 +1838,7 @@ static inline void put_task_struct(struc
+@@ -1826,6 +1838,7 @@ static inline void put_task_struct(struct task_struct *t)
if (atomic_dec_and_test(&t->usage))
__put_task_struct(t);
}
@@ -46,11 +47,11 @@ Index: linux-3.4/include/linux/sched.h
extern void task_times(struct task_struct *p, cputime_t *ut, cputime_t *st);
extern void thread_group_times(struct task_struct *p, cputime_t *ut, cputime_t *st);
-Index: linux-3.4/kernel/fork.c
-===================================================================
---- linux-3.4.orig/kernel/fork.c
-+++ linux-3.4/kernel/fork.c
-@@ -201,7 +201,18 @@ void __put_task_struct(struct task_struc
+diff --git a/kernel/fork.c b/kernel/fork.c
+index 03fc790..a9ca927 100644
+--- a/kernel/fork.c
++++ b/kernel/fork.c
+@@ -202,7 +202,18 @@ void __put_task_struct(struct task_struct *tsk)
if (!profile_handoff_task(tsk))
free_task(tsk);
}
@@ -69,3 +70,6 @@ Index: linux-3.4/kernel/fork.c
/*
* macro override instead of weak attribute alias, to workaround
+--
+1.7.10.4
+
diff --git a/patches/sched-limit-nr-migrate.patch b/patches/0125-sched-limit-nr-migrate.patch.patch
index 3213842..6e10f23 100644
--- a/patches/sched-limit-nr-migrate.patch
+++ b/patches/0125-sched-limit-nr-migrate.patch.patch
@@ -1,16 +1,17 @@
-Subject: sched-limit-nr-migrate.patch
+From 6669fe4415901f4fd29d674ce4543650549b2f4f Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Mon, 06 Jun 2011 12:12:51 +0200
+Date: Mon, 6 Jun 2011 12:12:51 +0200
+Subject: [PATCH 125/254] sched-limit-nr-migrate.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/sched/core.c | 4 ++++
1 file changed, 4 insertions(+)
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index 29fa0de..22a962b 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
@@ -263,7 +263,11 @@ late_initcall(sched_init_debug);
* Number of tasks to iterate in a single balance run.
* Limited because this is done with IRQs disabled.
@@ -23,3 +24,6 @@ Index: linux-3.4/kernel/sched/core.c
/*
* period over which we average the RT time consumption, measured
+--
+1.7.10.4
+
diff --git a/patches/sched-mmdrop-delayed.patch b/patches/0126-sched-mmdrop-delayed.patch.patch
index 38c7e62..2394383 100644
--- a/patches/sched-mmdrop-delayed.patch
+++ b/patches/0126-sched-mmdrop-delayed.patch.patch
@@ -1,6 +1,7 @@
-Subject: sched-mmdrop-delayed.patch
+From 55afb3a80293421413fd0c20e33200a5bad7b224 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Mon, 06 Jun 2011 12:20:33 +0200
+Date: Mon, 6 Jun 2011 12:20:33 +0200
+Subject: [PATCH 126/254] sched-mmdrop-delayed.patch
Needs thread context (pgd_lock) -> ifdeffed. workqueues wont work with
RT
@@ -13,10 +14,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/sched/core.c | 21 +++++++++++++++++++--
4 files changed, 49 insertions(+), 3 deletions(-)
-Index: linux-3.4/include/linux/mm_types.h
-===================================================================
---- linux-3.4.orig/include/linux/mm_types.h
-+++ linux-3.4/include/linux/mm_types.h
+diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
+index e70ea9b..8574996 100644
+--- a/include/linux/mm_types.h
++++ b/include/linux/mm_types.h
@@ -12,6 +12,7 @@
#include <linux/completion.h>
#include <linux/cpumask.h>
@@ -35,11 +36,11 @@ Index: linux-3.4/include/linux/mm_types.h
};
static inline void mm_init_cpumask(struct mm_struct *mm)
-Index: linux-3.4/include/linux/sched.h
-===================================================================
---- linux-3.4.orig/include/linux/sched.h
-+++ linux-3.4/include/linux/sched.h
-@@ -2324,12 +2324,24 @@ extern struct mm_struct * mm_alloc(void)
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index 0fbffda..a198e77 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
+@@ -2324,12 +2324,24 @@ extern struct mm_struct * mm_alloc(void);
/* mmdrop drops the mm and the page tables */
extern void __mmdrop(struct mm_struct *);
@@ -64,11 +65,11 @@ Index: linux-3.4/include/linux/sched.h
/* mmput gets rid of the mappings and all user-space */
extern void mmput(struct mm_struct *);
/* Grab a reference to a task's mm, if it is not already going away */
-Index: linux-3.4/kernel/fork.c
-===================================================================
---- linux-3.4.orig/kernel/fork.c
-+++ linux-3.4/kernel/fork.c
-@@ -206,7 +206,7 @@ EXPORT_SYMBOL_GPL(__put_task_struct);
+diff --git a/kernel/fork.c b/kernel/fork.c
+index a9ca927..f5d609a 100644
+--- a/kernel/fork.c
++++ b/kernel/fork.c
+@@ -207,7 +207,7 @@ EXPORT_SYMBOL_GPL(__put_task_struct);
#else
void __put_task_struct_cb(struct rcu_head *rhp)
{
@@ -77,7 +78,7 @@ Index: linux-3.4/kernel/fork.c
__put_task_struct(tsk);
-@@ -572,6 +572,19 @@ void __mmdrop(struct mm_struct *mm)
+@@ -573,6 +573,19 @@ void __mmdrop(struct mm_struct *mm)
}
EXPORT_SYMBOL_GPL(__mmdrop);
@@ -97,11 +98,11 @@ Index: linux-3.4/kernel/fork.c
/*
* Decrement the use count and release all resources for an mm.
*/
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
-@@ -1934,8 +1934,12 @@ static void finish_task_switch(struct rq
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index 22a962b..9f07282 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
+@@ -1934,8 +1934,12 @@ static void finish_task_switch(struct rq *rq, struct task_struct *prev)
finish_arch_post_lock_switch();
fire_sched_in_preempt_notifiers(current);
@@ -115,7 +116,7 @@ Index: linux-3.4/kernel/sched/core.c
if (unlikely(prev_state == TASK_DEAD)) {
/*
* Remove function-return probe instances associated with this
-@@ -5075,6 +5079,8 @@ static int migration_cpu_stop(void *data
+@@ -5075,6 +5079,8 @@ static int migration_cpu_stop(void *data)
#ifdef CONFIG_HOTPLUG_CPU
@@ -138,7 +139,7 @@ Index: linux-3.4/kernel/sched/core.c
}
/*
-@@ -5408,6 +5419,12 @@ migration_call(struct notifier_block *nf
+@@ -5408,6 +5419,12 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu)
migrate_nr_uninterruptible(rq);
calc_global_load_remove(rq);
break;
@@ -151,3 +152,6 @@ Index: linux-3.4/kernel/sched/core.c
#endif
}
+--
+1.7.10.4
+
diff --git a/patches/sched-rt-mutex-wakeup.patch b/patches/0127-sched-rt-mutex-wakeup.patch.patch
index 86dc1fb..3b4b28b 100644
--- a/patches/sched-rt-mutex-wakeup.patch
+++ b/patches/0127-sched-rt-mutex-wakeup.patch.patch
@@ -1,6 +1,7 @@
-Subject: sched-rt-mutex-wakeup.patch
+From b32e0d79fd156a9477def3adb0dc83ee4bba9a82 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 25 Jun 2011 09:21:04 +0200
+Subject: [PATCH 127/254] sched-rt-mutex-wakeup.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/sched/core.c | 31 ++++++++++++++++++++++++++++++-
2 files changed, 33 insertions(+), 1 deletion(-)
-Index: linux-3.4/include/linux/sched.h
-===================================================================
---- linux-3.4.orig/include/linux/sched.h
-+++ linux-3.4/include/linux/sched.h
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index a198e77..d177da5 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
@@ -1109,6 +1109,7 @@ struct sched_domain;
#define WF_SYNC 0x01 /* waker goes to sleep after wakup */
#define WF_FORK 0x02 /* child wakeup after fork */
@@ -28,7 +29,7 @@ Index: linux-3.4/include/linux/sched.h
void *stack;
atomic_t usage;
unsigned int flags; /* per process flags, defined below */
-@@ -2234,6 +2236,7 @@ extern void xtime_update(unsigned long t
+@@ -2234,6 +2236,7 @@ extern void xtime_update(unsigned long ticks);
extern int wake_up_state(struct task_struct *tsk, unsigned int state);
extern int wake_up_process(struct task_struct *tsk);
@@ -36,11 +37,11 @@ Index: linux-3.4/include/linux/sched.h
extern void wake_up_new_task(struct task_struct *tsk);
#ifdef CONFIG_SMP
extern void kick_process(struct task_struct *tsk);
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
-@@ -1586,8 +1586,25 @@ try_to_wake_up(struct task_struct *p, un
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index 9f07282..d775bd8 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
+@@ -1586,8 +1586,25 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags)
smp_wmb();
raw_spin_lock_irqsave(&p->pi_lock, flags);
@@ -67,7 +68,7 @@ Index: linux-3.4/kernel/sched/core.c
success = 1; /* we're going to change ->state */
cpu = task_cpu(p);
-@@ -1659,6 +1676,18 @@ int wake_up_process(struct task_struct *
+@@ -1659,6 +1676,18 @@ int wake_up_process(struct task_struct *p)
}
EXPORT_SYMBOL(wake_up_process);
@@ -86,3 +87,6 @@ Index: linux-3.4/kernel/sched/core.c
int wake_up_state(struct task_struct *p, unsigned int state)
{
return try_to_wake_up(p, state, 0);
+--
+1.7.10.4
+
diff --git a/patches/sched-might-sleep-do-not-account-rcu-depth.patch b/patches/0128-sched-might-sleep-do-not-account-rcu-depth.patch.patch
index 1bf06b9..0b47500 100644
--- a/patches/sched-might-sleep-do-not-account-rcu-depth.patch
+++ b/patches/0128-sched-might-sleep-do-not-account-rcu-depth.patch.patch
@@ -1,6 +1,7 @@
-Subject: sched-might-sleep-do-not-account-rcu-depth.patch
+From 547a1cce0f7776269cd124f0b0e7b541e30c37ff Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Tue, 07 Jun 2011 09:19:06 +0200
+Date: Tue, 7 Jun 2011 09:19:06 +0200
+Subject: [PATCH 128/254] sched-might-sleep-do-not-account-rcu-depth.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/sched/core.c | 3 ++-
2 files changed, 9 insertions(+), 1 deletion(-)
-Index: linux-3.4/include/linux/rcupdate.h
-===================================================================
---- linux-3.4.orig/include/linux/rcupdate.h
-+++ linux-3.4/include/linux/rcupdate.h
+diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
+index 20fb776..23a500f 100644
+--- a/include/linux/rcupdate.h
++++ b/include/linux/rcupdate.h
@@ -156,6 +156,11 @@ void synchronize_rcu(void);
* types of kernel builds, the rcu_read_lock() nesting depth is unknowable.
*/
@@ -24,7 +25,7 @@ Index: linux-3.4/include/linux/rcupdate.h
#else /* #ifdef CONFIG_PREEMPT_RCU */
-@@ -179,6 +184,8 @@ static inline int rcu_preempt_depth(void
+@@ -179,6 +184,8 @@ static inline int rcu_preempt_depth(void)
return 0;
}
@@ -33,11 +34,11 @@ Index: linux-3.4/include/linux/rcupdate.h
#endif /* #else #ifdef CONFIG_PREEMPT_RCU */
/* Internal to kernel */
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
-@@ -7092,7 +7092,8 @@ void __init sched_init(void)
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index d775bd8..2fd05d5 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
+@@ -7094,7 +7094,8 @@ void __init sched_init(void)
#ifdef CONFIG_DEBUG_ATOMIC_SLEEP
static inline int preempt_count_equals(int preempt_offset)
{
@@ -47,3 +48,6 @@ Index: linux-3.4/kernel/sched/core.c
return (nested == preempt_offset);
}
+--
+1.7.10.4
+
diff --git a/patches/sched-cond-resched.patch b/patches/0129-sched-cond-resched.patch.patch
index c95479f..50c38f0 100644
--- a/patches/sched-cond-resched.patch
+++ b/patches/0129-sched-cond-resched.patch.patch
@@ -1,16 +1,17 @@
-Subject: sched-cond-resched.patch
+From 2e498010c46ec1155b28d7b13699e5e8e221a098 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Tue, 07 Jun 2011 11:25:03 +0200
+Date: Tue, 7 Jun 2011 11:25:03 +0200
+Subject: [PATCH 129/254] sched-cond-resched.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/sched/core.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index 2fd05d5..053b830 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
@@ -4554,9 +4554,17 @@ static inline int should_resched(void)
static void __cond_resched(void)
@@ -32,3 +33,6 @@ Index: linux-3.4/kernel/sched/core.c
}
int __sched _cond_resched(void)
+--
+1.7.10.4
+
diff --git a/patches/cond-resched-softirq-rt.patch b/patches/0130-cond-resched-softirq-fix.patch.patch
index 2f89bbc..5fd6311 100644
--- a/patches/cond-resched-softirq-rt.patch
+++ b/patches/0130-cond-resched-softirq-fix.patch.patch
@@ -1,6 +1,7 @@
-Subject: cond-resched-softirq-fix.patch
+From 291b9f561d7d218e6a71c3ae2bc408a95e7d8671 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 14 Jul 2011 09:56:44 +0200
+Subject: [PATCH 130/254] cond-resched-softirq-fix.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/sched/core.c | 2 ++
2 files changed, 6 insertions(+)
-Index: linux-3.4/include/linux/sched.h
-===================================================================
---- linux-3.4.orig/include/linux/sched.h
-+++ linux-3.4/include/linux/sched.h
-@@ -2700,12 +2700,16 @@ extern int __cond_resched_lock(spinlock_
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index d177da5..b76e0c8 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
+@@ -2700,12 +2700,16 @@ extern int __cond_resched_lock(spinlock_t *lock);
__cond_resched_lock(lock); \
})
@@ -29,11 +30,11 @@ Index: linux-3.4/include/linux/sched.h
/*
* Does a critical section need to be broken due to another
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
-@@ -4605,6 +4605,7 @@ int __cond_resched_lock(spinlock_t *lock
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index 053b830..9bc29c2 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
+@@ -4605,6 +4605,7 @@ int __cond_resched_lock(spinlock_t *lock)
}
EXPORT_SYMBOL(__cond_resched_lock);
@@ -49,3 +50,6 @@ Index: linux-3.4/kernel/sched/core.c
/**
* yield - yield the current processor to other threads.
+--
+1.7.10.4
+
diff --git a/patches/cond-resched-lock-rt-tweak.patch b/patches/0131-cond-resched-lock-rt-tweak.patch.patch
index e387fdf..400d612 100644
--- a/patches/cond-resched-lock-rt-tweak.patch
+++ b/patches/0131-cond-resched-lock-rt-tweak.patch.patch
@@ -1,16 +1,17 @@
-Subject: cond-resched-lock-rt-tweak.patch
+From a76da69ec9dc8d3bbc2080c656484ace4e5ecd3e Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 17 Jul 2011 22:51:33 +0200
+Subject: [PATCH 131/254] cond-resched-lock-rt-tweak.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/sched.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/include/linux/sched.h
-===================================================================
---- linux-3.4.orig/include/linux/sched.h
-+++ linux-3.4/include/linux/sched.h
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index b76e0c8..a6b9a6d 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
@@ -2689,7 +2689,7 @@ extern int _cond_resched(void);
extern int __cond_resched_lock(spinlock_t *lock);
@@ -20,3 +21,6 @@ Index: linux-3.4/include/linux/sched.h
#define PREEMPT_LOCK_OFFSET PREEMPT_OFFSET
#else
#define PREEMPT_LOCK_OFFSET 0
+--
+1.7.10.4
+
diff --git a/patches/sched-disable-ttwu-queue.patch b/patches/0132-sched-disable-ttwu-queue.patch.patch
index df63565..6be2518 100644
--- a/patches/sched-disable-ttwu-queue.patch
+++ b/patches/0132-sched-disable-ttwu-queue.patch.patch
@@ -1,16 +1,17 @@
-Subject: sched-disable-ttwu-queue.patch
+From 2acb13ba89b9fb28be0741fbdb8a702fee32fa6a Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 13 Sep 2011 16:42:35 +0200
+Subject: [PATCH 132/254] sched-disable-ttwu-queue.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/sched/features.h | 4 ++++
1 file changed, 4 insertions(+)
-Index: linux-3.4/kernel/sched/features.h
-===================================================================
---- linux-3.4.orig/kernel/sched/features.h
-+++ linux-3.4/kernel/sched/features.h
+diff --git a/kernel/sched/features.h b/kernel/sched/features.h
+index de00a48..27afd1e 100644
+--- a/kernel/sched/features.h
++++ b/kernel/sched/features.h
@@ -60,11 +60,15 @@ SCHED_FEAT(OWNER_SPIN, true)
*/
SCHED_FEAT(NONTASK_POWER, true)
@@ -27,3 +28,6 @@ Index: linux-3.4/kernel/sched/features.h
SCHED_FEAT(FORCE_SD_OVERLAP, false)
SCHED_FEAT(RT_RUNTIME_SHARE, true)
+--
+1.7.10.4
+
diff --git a/patches/sched-disable-rt-group-sched-on-rt.patch b/patches/0133-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch
index e6e3b93..1512402 100644
--- a/patches/sched-disable-rt-group-sched-on-rt.patch
+++ b/patches/0133-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch
@@ -1,6 +1,7 @@
-Subject: sched: Disable CONFIG_RT_GROUP_SCHED on RT
+From 475462c5d5d0a6dd4a65a302c5aea8258889a27d Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 18 Jul 2011 17:03:52 +0200
+Subject: [PATCH 133/254] sched: Disable CONFIG_RT_GROUP_SCHED on RT
Carsten reported problems when running:
@@ -16,10 +17,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
init/Kconfig | 1 +
1 file changed, 1 insertion(+)
-Index: linux-3.4/init/Kconfig
-===================================================================
---- linux-3.4.orig/init/Kconfig
-+++ linux-3.4/init/Kconfig
+diff --git a/init/Kconfig b/init/Kconfig
+index 7c0b369..c06208b 100644
+--- a/init/Kconfig
++++ b/init/Kconfig
@@ -746,6 +746,7 @@ config RT_GROUP_SCHED
bool "Group scheduling for SCHED_RR/FIFO"
depends on EXPERIMENTAL
@@ -28,3 +29,6 @@ Index: linux-3.4/init/Kconfig
default n
help
This feature lets you explicitly allocate real CPU bandwidth
+--
+1.7.10.4
+
diff --git a/patches/sched-ttwu-ensure-success-return-is-correct.patch b/patches/0134-sched-ttwu-Return-success-when-only-changing-the-sav.patch
index 9aeffde..c42dec0 100644
--- a/patches/sched-ttwu-ensure-success-return-is-correct.patch
+++ b/patches/0134-sched-ttwu-Return-success-when-only-changing-the-sav.patch
@@ -1,6 +1,8 @@
-Subject: sched: ttwu: Return success when only changing the saved_state value
+From b62543135be26f84f600b0ce4e1b776eff52ee4e Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 13 Dec 2011 21:42:19 +0100
+Subject: [PATCH 134/254] sched: ttwu: Return success when only changing the
+ saved_state value
When a task blocks on a rt lock, it saves the current state in
p->saved_state, so a lock related wake up will not destroy the
@@ -18,11 +20,11 @@ Cc: stable-rt@vger.kernel.org
kernel/sched/core.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
-@@ -1593,8 +1593,10 @@ try_to_wake_up(struct task_struct *p, un
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index 9bc29c2..ea45f8b 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
+@@ -1593,8 +1593,10 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags)
* if the wakeup condition is true.
*/
if (!(wake_flags & WF_LOCK_SLEEPER)) {
@@ -34,3 +36,6 @@ Index: linux-3.4/kernel/sched/core.c
}
goto out;
}
+--
+1.7.10.4
+
diff --git a/patches/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch b/patches/0135-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch
index 0159c7f..e32d3b5 100644
--- a/patches/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch
+++ b/patches/0135-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch
@@ -1,6 +1,8 @@
+From 038029d827e4fae2a0a3043fc12f85e2d1fb4ce4 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:27 -0500
-Subject: stop_machine: convert stop_machine_run() to PREEMPT_RT
+Subject: [PATCH 135/254] stop_machine: convert stop_machine_run() to
+ PREEMPT_RT
Instead of playing with non-preemption, introduce explicit
startup serialization. This is more robust and cleaner as
@@ -8,16 +10,15 @@ well.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
kernel/stop_machine.c | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
-Index: linux-3.4/kernel/stop_machine.c
-===================================================================
---- linux-3.4.orig/kernel/stop_machine.c
-+++ linux-3.4/kernel/stop_machine.c
-@@ -135,6 +135,7 @@ void stop_one_cpu_nowait(unsigned int cp
+diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c
+index 2f194e9..61779f8 100644
+--- a/kernel/stop_machine.c
++++ b/kernel/stop_machine.c
+@@ -135,6 +135,7 @@ void stop_one_cpu_nowait(unsigned int cpu, cpu_stop_fn_t fn, void *arg,
/* static data for stop_cpus */
static DEFINE_MUTEX(stop_cpus_mutex);
@@ -25,7 +26,7 @@ Index: linux-3.4/kernel/stop_machine.c
static DEFINE_PER_CPU(struct cpu_stop_work, stop_cpus_work);
static void queue_stop_cpus_work(const struct cpumask *cpumask,
-@@ -153,15 +154,14 @@ static void queue_stop_cpus_work(const s
+@@ -153,15 +154,14 @@ static void queue_stop_cpus_work(const struct cpumask *cpumask,
}
/*
@@ -62,3 +63,6 @@ Index: linux-3.4/kernel/stop_machine.c
/* cpu stop callbacks are not allowed to sleep */
preempt_disable();
+--
+1.7.10.4
+
diff --git a/patches/stomp-machine-mark-stomper-thread.patch b/patches/0136-stomp-machine-mark-stomper-thread.patch.patch
index 8445ba1..2b3fd97 100644
--- a/patches/stomp-machine-mark-stomper-thread.patch
+++ b/patches/0136-stomp-machine-mark-stomper-thread.patch.patch
@@ -1,6 +1,7 @@
-Subject: stomp-machine-mark-stomper-thread.patch
+From c356330d5783b22dc8c4ef209d2b392a0873bd77 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 17 Jul 2011 19:53:19 +0200
+Subject: [PATCH 136/254] stomp-machine-mark-stomper-thread.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/stop_machine.c | 1 +
2 files changed, 2 insertions(+)
-Index: linux-3.4/include/linux/sched.h
-===================================================================
---- linux-3.4.orig/include/linux/sched.h
-+++ linux-3.4/include/linux/sched.h
-@@ -1864,6 +1864,7 @@ extern void thread_group_times(struct ta
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index a6b9a6d..cdfc16e 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
+@@ -1864,6 +1864,7 @@ extern void thread_group_times(struct task_struct *p, cputime_t *ut, cputime_t *
#define PF_FROZEN 0x00010000 /* frozen for system suspend */
#define PF_FSTRANS 0x00020000 /* inside a filesystem transaction */
#define PF_KSWAPD 0x00040000 /* I am kswapd */
@@ -20,11 +21,11 @@ Index: linux-3.4/include/linux/sched.h
#define PF_LESS_THROTTLE 0x00100000 /* Throttle me less: I clean memory */
#define PF_KTHREAD 0x00200000 /* I am a kernel thread */
#define PF_RANDOMIZE 0x00400000 /* randomize virtual address space */
-Index: linux-3.4/kernel/stop_machine.c
-===================================================================
---- linux-3.4.orig/kernel/stop_machine.c
-+++ linux-3.4/kernel/stop_machine.c
-@@ -327,6 +327,7 @@ static int __cpuinit cpu_stop_cpu_callba
+diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c
+index 61779f8..484a335 100644
+--- a/kernel/stop_machine.c
++++ b/kernel/stop_machine.c
+@@ -327,6 +327,7 @@ static int __cpuinit cpu_stop_cpu_callback(struct notifier_block *nfb,
if (IS_ERR(p))
return notifier_from_errno(PTR_ERR(p));
get_task_struct(p);
@@ -32,3 +33,6 @@ Index: linux-3.4/kernel/stop_machine.c
kthread_bind(p, cpu);
sched_set_stop_task(cpu, p);
stopper->thread = p;
+--
+1.7.10.4
+
diff --git a/patches/stomp-machine-raw-lock.patch b/patches/0137-stomp-machine-raw-lock.patch.patch
index bf9424d..c750259 100644
--- a/patches/stomp-machine-raw-lock.patch
+++ b/patches/0137-stomp-machine-raw-lock.patch.patch
@@ -1,16 +1,17 @@
-Subject: stomp-machine-raw-lock.patch
+From 4c3d72d9e932819638bb4c5961528f26bbd20103 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 29 Jun 2011 11:01:51 +0200
+Subject: [PATCH 137/254] stomp-machine-raw-lock.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- kernel/stop_machine.c | 58 +++++++++++++++++++++++++++++++++++---------------
+ kernel/stop_machine.c | 58 ++++++++++++++++++++++++++++++++++---------------
1 file changed, 41 insertions(+), 17 deletions(-)
-Index: linux-3.4/kernel/stop_machine.c
-===================================================================
---- linux-3.4.orig/kernel/stop_machine.c
-+++ linux-3.4/kernel/stop_machine.c
+diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c
+index 484a335..561ba3a 100644
+--- a/kernel/stop_machine.c
++++ b/kernel/stop_machine.c
@@ -29,12 +29,12 @@ struct cpu_stop_done {
atomic_t nr_todo; /* nr left to execute */
bool executed; /* actually executed? */
@@ -26,7 +27,7 @@ Index: linux-3.4/kernel/stop_machine.c
bool enabled; /* is this stopper enabled? */
struct list_head works; /* list of pending works */
struct task_struct *thread; /* stopper thread */
-@@ -47,7 +47,7 @@ static void cpu_stop_init_done(struct cp
+@@ -47,7 +47,7 @@ static void cpu_stop_init_done(struct cpu_stop_done *done, unsigned int nr_todo)
{
memset(done, 0, sizeof(*done));
atomic_set(&done->nr_todo, nr_todo);
@@ -35,7 +36,7 @@ Index: linux-3.4/kernel/stop_machine.c
}
/* signal completion unless @done is NULL */
-@@ -56,8 +56,10 @@ static void cpu_stop_signal_done(struct
+@@ -56,8 +56,10 @@ static void cpu_stop_signal_done(struct cpu_stop_done *done, bool executed)
if (done) {
if (executed)
done->executed = true;
@@ -48,7 +49,7 @@ Index: linux-3.4/kernel/stop_machine.c
}
}
-@@ -67,7 +69,7 @@ static void cpu_stop_queue_work(struct c
+@@ -67,7 +69,7 @@ static void cpu_stop_queue_work(struct cpu_stopper *stopper,
{
unsigned long flags;
@@ -57,7 +58,7 @@ Index: linux-3.4/kernel/stop_machine.c
if (stopper->enabled) {
list_add_tail(&work->list, &stopper->works);
-@@ -75,7 +77,23 @@ static void cpu_stop_queue_work(struct c
+@@ -75,7 +77,23 @@ static void cpu_stop_queue_work(struct cpu_stopper *stopper,
} else
cpu_stop_signal_done(work->done, false);
@@ -82,7 +83,7 @@ Index: linux-3.4/kernel/stop_machine.c
}
/**
-@@ -109,7 +127,7 @@ int stop_one_cpu(unsigned int cpu, cpu_s
+@@ -109,7 +127,7 @@ int stop_one_cpu(unsigned int cpu, cpu_stop_fn_t fn, void *arg)
cpu_stop_init_done(&done, 1);
cpu_stop_queue_work(&per_cpu(cpu_stopper, cpu), &work);
@@ -91,7 +92,7 @@ Index: linux-3.4/kernel/stop_machine.c
return done.executed ? done.ret : -ENOENT;
}
-@@ -171,7 +189,7 @@ static int __stop_cpus(const struct cpum
+@@ -171,7 +189,7 @@ static int __stop_cpus(const struct cpumask *cpumask,
cpu_stop_init_done(&done, cpumask_weight(cpumask));
queue_stop_cpus_work(cpumask, fn, arg, &done);
@@ -130,7 +131,7 @@ Index: linux-3.4/kernel/stop_machine.c
} else
schedule();
-@@ -337,9 +361,9 @@ static int __cpuinit cpu_stop_cpu_callba
+@@ -337,9 +361,9 @@ static int __cpuinit cpu_stop_cpu_callback(struct notifier_block *nfb,
/* strictly unnecessary, as first user will wake it */
wake_up_process(stopper->thread);
/* mark enabled */
@@ -142,7 +143,7 @@ Index: linux-3.4/kernel/stop_machine.c
break;
#ifdef CONFIG_HOTPLUG_CPU
-@@ -352,11 +376,11 @@ static int __cpuinit cpu_stop_cpu_callba
+@@ -352,11 +376,11 @@ static int __cpuinit cpu_stop_cpu_callback(struct notifier_block *nfb,
/* kill the stopper */
kthread_stop(stopper->thread);
/* drain remaining works */
@@ -165,7 +166,7 @@ Index: linux-3.4/kernel/stop_machine.c
INIT_LIST_HEAD(&stopper->works);
}
-@@ -581,7 +605,7 @@ int stop_machine_from_inactive_cpu(int (
+@@ -581,7 +605,7 @@ int stop_machine_from_inactive_cpu(int (*fn)(void *), void *data,
ret = stop_machine_cpu_stop(&smdata);
/* Busy wait for completion. */
@@ -174,3 +175,6 @@ Index: linux-3.4/kernel/stop_machine.c
cpu_relax();
mutex_unlock(&stop_cpus_mutex);
+--
+1.7.10.4
+
diff --git a/patches/hotplug-light-get-online-cpus.patch b/patches/0138-hotplug-Lightweight-get-online-cpus.patch
index 1ea75af..95651f4 100644
--- a/patches/hotplug-light-get-online-cpus.patch
+++ b/patches/0138-hotplug-Lightweight-get-online-cpus.patch
@@ -1,6 +1,7 @@
-Subject: hotplug: Lightweight get online cpus
+From 353333584f5ad2ba7fa8f08b2fb8142f90ba2721 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 15 Jun 2011 12:36:06 +0200
+Subject: [PATCH 138/254] hotplug: Lightweight get online cpus
get_online_cpus() is a heavy weight function which involves a global
mutex. migrate_disable() wants a simpler construct which prevents only
@@ -12,14 +13,14 @@ tasks on the cpu which should be brought down.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- include/linux/cpu.h | 4 +
- kernel/cpu.c | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++--
+ include/linux/cpu.h | 4 ++
+ kernel/cpu.c | 127 +++++++++++++++++++++++++++++++++++++++++++++++++--
2 files changed, 128 insertions(+), 3 deletions(-)
-Index: linux-3.4/include/linux/cpu.h
-===================================================================
---- linux-3.4.orig/include/linux/cpu.h
-+++ linux-3.4/include/linux/cpu.h
+diff --git a/include/linux/cpu.h b/include/linux/cpu.h
+index ee28844..00d2f6f8 100644
+--- a/include/linux/cpu.h
++++ b/include/linux/cpu.h
@@ -176,6 +176,8 @@ extern struct bus_type cpu_subsys;
extern void get_online_cpus(void);
@@ -29,7 +30,7 @@ Index: linux-3.4/include/linux/cpu.h
#define hotcpu_notifier(fn, pri) cpu_notifier(fn, pri)
#define register_hotcpu_notifier(nb) register_cpu_notifier(nb)
#define unregister_hotcpu_notifier(nb) unregister_cpu_notifier(nb)
-@@ -198,6 +200,8 @@ static inline void cpu_hotplug_driver_un
+@@ -198,6 +200,8 @@ static inline void cpu_hotplug_driver_unlock(void)
#define get_online_cpus() do { } while (0)
#define put_online_cpus() do { } while (0)
@@ -38,10 +39,10 @@ Index: linux-3.4/include/linux/cpu.h
#define hotcpu_notifier(fn, pri) do { (void)(fn); } while (0)
/* These aren't inline functions due to a GCC bug. */
#define register_hotcpu_notifier(nb) ({ (void)(nb); 0; })
-Index: linux-3.4/kernel/cpu.c
-===================================================================
---- linux-3.4.orig/kernel/cpu.c
-+++ linux-3.4/kernel/cpu.c
+diff --git a/kernel/cpu.c b/kernel/cpu.c
+index 2060c6e..8aaa210 100644
+--- a/kernel/cpu.c
++++ b/kernel/cpu.c
@@ -58,6 +58,102 @@ static struct {
.refcount = 0,
};
@@ -145,7 +146,7 @@ Index: linux-3.4/kernel/cpu.c
void get_online_cpus(void)
{
might_sleep();
-@@ -210,13 +306,14 @@ static int __ref take_cpu_down(void *_pa
+@@ -210,13 +306,14 @@ static int __ref take_cpu_down(void *_param)
/* Requires cpu_add_remove_lock to be held */
static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
{
@@ -161,7 +162,7 @@ Index: linux-3.4/kernel/cpu.c
if (num_online_cpus() == 1)
return -EBUSY;
-@@ -224,7 +321,20 @@ static int __ref _cpu_down(unsigned int
+@@ -224,7 +321,20 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
if (!cpu_online(cpu))
return -EINVAL;
@@ -183,7 +184,7 @@ Index: linux-3.4/kernel/cpu.c
err = __cpu_notify(CPU_DOWN_PREPARE | mod, hcpu, -1, &nr_calls);
if (err) {
-@@ -232,7 +342,16 @@ static int __ref _cpu_down(unsigned int
+@@ -232,7 +342,16 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
__cpu_notify(CPU_DOWN_FAILED | mod, hcpu, nr_calls, NULL);
printk("%s: attempt to take down CPU %u failed\n",
__func__, cpu);
@@ -201,7 +202,7 @@ Index: linux-3.4/kernel/cpu.c
}
err = __stop_machine(take_cpu_down, &tcd_param, cpumask_of(cpu));
-@@ -263,6 +382,8 @@ static int __ref _cpu_down(unsigned int
+@@ -263,6 +382,8 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
check_for_tasks(cpu);
out_release:
@@ -210,3 +211,6 @@ Index: linux-3.4/kernel/cpu.c
cpu_hotplug_done();
if (!err)
cpu_notify_nofail(CPU_POST_DEAD | mod, hcpu);
+--
+1.7.10.4
+
diff --git a/patches/hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch b/patches/0139-hotplug-sync_unplug-No.patch
index 9094f60..22a9462 100644
--- a/patches/hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch
+++ b/patches/0139-hotplug-sync_unplug-No.patch
@@ -1,6 +1,7 @@
-Subject: hotplug: sync_unplug: No "\n" in task name
+From a58b7d3b9599cf30835b4f2f191676428a516053 Mon Sep 17 00:00:00 2001
From: Yong Zhang <yong.zhang0@gmail.com>
Date: Sun, 16 Oct 2011 18:56:43 +0800
+Subject: [PATCH 139/254] hotplug: sync_unplug: No " " in task name
Otherwise the output will look a little odd.
@@ -11,11 +12,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/cpu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/kernel/cpu.c
-===================================================================
---- linux-3.4.orig/kernel/cpu.c
-+++ linux-3.4/kernel/cpu.c
-@@ -138,7 +138,7 @@ static int cpu_unplug_begin(unsigned int
+diff --git a/kernel/cpu.c b/kernel/cpu.c
+index 8aaa210..da4ed4f 100644
+--- a/kernel/cpu.c
++++ b/kernel/cpu.c
+@@ -138,7 +138,7 @@ static int cpu_unplug_begin(unsigned int cpu)
struct task_struct *tsk;
init_completion(&hp->synced);
@@ -24,3 +25,6 @@ Index: linux-3.4/kernel/cpu.c
if (IS_ERR(tsk))
return (PTR_ERR(tsk));
kthread_bind(tsk, cpu);
+--
+1.7.10.4
+
diff --git a/patches/re-migrate_disable-race-with-cpu-hotplug-3f.patch b/patches/0140-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch
index b068675..66d2264 100644
--- a/patches/re-migrate_disable-race-with-cpu-hotplug-3f.patch
+++ b/patches/0140-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch
@@ -1,6 +1,8 @@
+From 5550b6277d3d290bd4c14ea4081fe5b7da637d89 Mon Sep 17 00:00:00 2001
From: Yong Zhang <yong.zhang0@gmail.com>
Date: Thu, 28 Jul 2011 11:16:00 +0800
-Subject: hotplug: Reread hotplug_pcp on pin_current_cpu() retry
+Subject: [PATCH 140/254] hotplug: Reread hotplug_pcp on pin_current_cpu()
+ retry
When retry happens, it's likely that the task has been migrated to
another cpu (except unplug failed), but it still derefernces the
@@ -17,11 +19,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/cpu.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
-Index: linux-3.4/kernel/cpu.c
-===================================================================
---- linux-3.4.orig/kernel/cpu.c
-+++ linux-3.4/kernel/cpu.c
-@@ -76,9 +76,11 @@ static DEFINE_PER_CPU(struct hotplug_pcp
+diff --git a/kernel/cpu.c b/kernel/cpu.c
+index da4ed4f..1e80dff 100644
+--- a/kernel/cpu.c
++++ b/kernel/cpu.c
+@@ -76,9 +76,11 @@ static DEFINE_PER_CPU(struct hotplug_pcp, hotplug_pcp);
*/
void pin_current_cpu(void)
{
@@ -34,3 +36,6 @@ Index: linux-3.4/kernel/cpu.c
if (!hp->unplug || hp->refcount || preempt_count() > 1 ||
hp->unplug == current || (current->flags & PF_STOMPER)) {
hp->refcount++;
+--
+1.7.10.4
+
diff --git a/patches/sched-migrate-disable.patch b/patches/0141-sched-migrate-disable.patch.patch
index 421e3d8..b2638b5 100644
--- a/patches/sched-migrate-disable.patch
+++ b/patches/0141-sched-migrate-disable.patch.patch
@@ -1,20 +1,21 @@
-Subject: sched-migrate-disable.patch
+From c3c858c0644cc3dc1d26ca8d356f767130413da6 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 16 Jun 2011 13:26:08 +0200
+Subject: [PATCH 141/254] sched-migrate-disable.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- include/linux/preempt.h | 8 ++++
+ include/linux/preempt.h | 8 +++++
include/linux/sched.h | 13 +++++--
- include/linux/smp.h | 1
- kernel/sched/core.c | 88 +++++++++++++++++++++++++++++++++++++++++++++---
- lib/smp_processor_id.c | 6 +--
+ include/linux/smp.h | 1 -
+ kernel/sched/core.c | 88 ++++++++++++++++++++++++++++++++++++++++++++---
+ lib/smp_processor_id.c | 6 ++--
5 files changed, 104 insertions(+), 12 deletions(-)
-Index: linux-3.4/include/linux/preempt.h
-===================================================================
---- linux-3.4.orig/include/linux/preempt.h
-+++ linux-3.4/include/linux/preempt.h
+diff --git a/include/linux/preempt.h b/include/linux/preempt.h
+index 5b46536..c5d2a36 100644
+--- a/include/linux/preempt.h
++++ b/include/linux/preempt.h
@@ -108,6 +108,14 @@ do { \
#endif /* CONFIG_PREEMPT_COUNT */
@@ -30,10 +31,10 @@ Index: linux-3.4/include/linux/preempt.h
#ifdef CONFIG_PREEMPT_RT_FULL
# define preempt_disable_rt() preempt_disable()
# define preempt_enable_rt() preempt_enable()
-Index: linux-3.4/include/linux/sched.h
-===================================================================
---- linux-3.4.orig/include/linux/sched.h
-+++ linux-3.4/include/linux/sched.h
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index cdfc16e..c5f690a 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
@@ -1302,6 +1302,7 @@ struct task_struct {
#endif
@@ -52,7 +53,7 @@ Index: linux-3.4/include/linux/sched.h
#ifdef CONFIG_PREEMPT_RT_FULL
static inline bool cur_pf_disabled(void) { return current->pagefault_disabled; }
#else
-@@ -2773,6 +2771,15 @@ static inline void set_task_cpu(struct t
+@@ -2773,6 +2771,15 @@ static inline void set_task_cpu(struct task_struct *p, unsigned int cpu)
#endif /* CONFIG_SMP */
@@ -68,11 +69,11 @@ Index: linux-3.4/include/linux/sched.h
extern long sched_setaffinity(pid_t pid, const struct cpumask *new_mask);
extern long sched_getaffinity(pid_t pid, struct cpumask *mask);
-Index: linux-3.4/include/linux/smp.h
-===================================================================
---- linux-3.4.orig/include/linux/smp.h
-+++ linux-3.4/include/linux/smp.h
-@@ -80,7 +80,6 @@ void __smp_call_function_single(int cpui
+diff --git a/include/linux/smp.h b/include/linux/smp.h
+index 04e7ed9..980c525 100644
+--- a/include/linux/smp.h
++++ b/include/linux/smp.h
+@@ -80,7 +80,6 @@ void __smp_call_function_single(int cpuid, struct call_single_data *data,
int smp_call_function_any(const struct cpumask *mask,
smp_call_func_t func, void *info, int wait);
@@ -80,11 +81,11 @@ Index: linux-3.4/include/linux/smp.h
/*
* Generic and arch helpers
*/
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
-@@ -4976,11 +4976,12 @@ void __cpuinit init_idle(struct task_str
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index ea45f8b..8109af2 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
+@@ -4976,11 +4976,12 @@ void __cpuinit init_idle(struct task_struct *idle, int cpu)
#ifdef CONFIG_SMP
void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask)
{
@@ -101,7 +102,7 @@ Index: linux-3.4/kernel/sched/core.c
}
/*
-@@ -5031,7 +5032,7 @@ int set_cpus_allowed_ptr(struct task_str
+@@ -5031,7 +5032,7 @@ int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask)
do_set_cpus_allowed(p, new_mask);
/* Can the task run on the task's current CPU? If so, we're done */
@@ -194,11 +195,11 @@ Index: linux-3.4/kernel/sched/core.c
/*
* Move (not current) task off this cpu, onto dest cpu. We're doing
* this because either it can't run here any more (set_cpus_allowed()
-Index: linux-3.4/lib/smp_processor_id.c
-===================================================================
---- linux-3.4.orig/lib/smp_processor_id.c
-+++ linux-3.4/lib/smp_processor_id.c
-@@ -39,9 +39,9 @@ notrace unsigned int debug_smp_processor
+diff --git a/lib/smp_processor_id.c b/lib/smp_processor_id.c
+index 4c0d0e5..0a846e7 100644
+--- a/lib/smp_processor_id.c
++++ b/lib/smp_processor_id.c
+@@ -39,9 +39,9 @@ notrace unsigned int debug_smp_processor_id(void)
if (!printk_ratelimit())
goto out_enable;
@@ -211,3 +212,6 @@ Index: linux-3.4/lib/smp_processor_id.c
print_symbol("caller is %s\n", (long)__builtin_return_address(0));
dump_stack();
+--
+1.7.10.4
+
diff --git a/patches/hotplug-use-migrate-disable.patch b/patches/0142-hotplug-use-migrate-disable.patch.patch
index d818ae1..a5f129f 100644
--- a/patches/hotplug-use-migrate-disable.patch
+++ b/patches/0142-hotplug-use-migrate-disable.patch.patch
@@ -1,17 +1,18 @@
-Subject: hotplug-use-migrate-disable.patch
+From 182c8899eb6e03c18d8bd0c136d1d5663f420c3c Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 17 Jul 2011 19:35:29 +0200
+Subject: [PATCH 142/254] hotplug-use-migrate-disable.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/cpu.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
-Index: linux-3.4/kernel/cpu.c
-===================================================================
---- linux-3.4.orig/kernel/cpu.c
-+++ linux-3.4/kernel/cpu.c
-@@ -329,14 +329,13 @@ static int __ref _cpu_down(unsigned int
+diff --git a/kernel/cpu.c b/kernel/cpu.c
+index 1e80dff..c8aee90 100644
+--- a/kernel/cpu.c
++++ b/kernel/cpu.c
+@@ -329,14 +329,13 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
cpumask_andnot(cpumask, cpu_online_mask, cpumask_of(cpu));
set_cpus_allowed_ptr(current, cpumask);
free_cpumask_var(cpumask);
@@ -28,7 +29,7 @@ Index: linux-3.4/kernel/cpu.c
err = __cpu_notify(CPU_DOWN_PREPARE | mod, hcpu, -1, &nr_calls);
if (err) {
-@@ -386,6 +385,7 @@ static int __ref _cpu_down(unsigned int
+@@ -386,6 +385,7 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
out_release:
cpu_unplug_done(cpu);
out_cancel:
@@ -36,3 +37,6 @@ Index: linux-3.4/kernel/cpu.c
cpu_hotplug_done();
if (!err)
cpu_notify_nofail(CPU_POST_DEAD | mod, hcpu);
+--
+1.7.10.4
+
diff --git a/patches/hotplug-call-cpu_unplug_begin-a-little-early.patch b/patches/0143-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch
index 15ae737..e6a00d1 100644
--- a/patches/hotplug-call-cpu_unplug_begin-a-little-early.patch
+++ b/patches/0143-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch
@@ -1,6 +1,7 @@
-Subject: hotplug: Call cpu_unplug_begin() before DOWN_PREPARE
+From b068855e8db2def867d640e75f8a1ada4ae102e4 Mon Sep 17 00:00:00 2001
From: Yong Zhang <yong.zhang0@gmail.com>
Date: Sun, 16 Oct 2011 18:56:44 +0800
+Subject: [PATCH 143/254] hotplug: Call cpu_unplug_begin() before DOWN_PREPARE
cpu_unplug_begin() should be called before CPU_DOWN_PREPARE, because
at CPU_DOWN_PREPARE cpu_active is cleared and sched_domain is
@@ -25,11 +26,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/cpu.c | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
-Index: linux-3.4/kernel/cpu.c
-===================================================================
---- linux-3.4.orig/kernel/cpu.c
-+++ linux-3.4/kernel/cpu.c
-@@ -337,22 +337,20 @@ static int __ref _cpu_down(unsigned int
+diff --git a/kernel/cpu.c b/kernel/cpu.c
+index c8aee90..37b2212 100644
+--- a/kernel/cpu.c
++++ b/kernel/cpu.c
+@@ -337,22 +337,20 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
return -EBUSY;
}
@@ -59,3 +60,6 @@ Index: linux-3.4/kernel/cpu.c
}
err = __stop_machine(take_cpu_down, &tcd_param, cpumask_of(cpu));
+--
+1.7.10.4
+
diff --git a/patches/ftrace-migrate-disable-tracing.patch b/patches/0144-ftrace-migrate-disable-tracing.patch.patch
index e740ea3..bb3f1ac 100644
--- a/patches/ftrace-migrate-disable-tracing.patch
+++ b/patches/0144-ftrace-migrate-disable-tracing.patch.patch
@@ -1,6 +1,7 @@
-Subject: ftrace-migrate-disable-tracing.patch
+From 1c7d9ebbc093201ce3bda8e37a54425f51526b43 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 17 Jul 2011 21:56:42 +0200
+Subject: [PATCH 144/254] ftrace-migrate-disable-tracing.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -10,10 +11,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/trace/trace_output.c | 5 +++++
4 files changed, 14 insertions(+), 4 deletions(-)
-Index: linux-3.4/include/linux/ftrace_event.h
-===================================================================
---- linux-3.4.orig/include/linux/ftrace_event.h
-+++ linux-3.4/include/linux/ftrace_event.h
+diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h
+index 176a939..14cac32 100644
+--- a/include/linux/ftrace_event.h
++++ b/include/linux/ftrace_event.h
@@ -49,7 +49,8 @@ struct trace_entry {
unsigned char flags;
unsigned char preempt_count;
@@ -24,11 +25,11 @@ Index: linux-3.4/include/linux/ftrace_event.h
};
#define FTRACE_MAX_EVENT \
-Index: linux-3.4/kernel/trace/trace.c
-===================================================================
---- linux-3.4.orig/kernel/trace/trace.c
-+++ linux-3.4/kernel/trace/trace.c
-@@ -1179,6 +1179,8 @@ tracing_generic_entry_update(struct trac
+diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
+index 2a22255..0514f8f 100644
+--- a/kernel/trace/trace.c
++++ b/kernel/trace/trace.c
+@@ -1179,6 +1179,8 @@ tracing_generic_entry_update(struct trace_entry *entry, unsigned long flags,
((pc & HARDIRQ_MASK) ? TRACE_FLAG_HARDIRQ : 0) |
((pc & SOFTIRQ_MASK) ? TRACE_FLAG_SOFTIRQ : 0) |
(need_resched() ? TRACE_FLAG_NEED_RESCHED : 0);
@@ -37,7 +38,7 @@ Index: linux-3.4/kernel/trace/trace.c
}
EXPORT_SYMBOL_GPL(tracing_generic_entry_update);
-@@ -1937,9 +1939,10 @@ static void print_lat_help_header(struct
+@@ -1937,9 +1939,10 @@ static void print_lat_help_header(struct seq_file *m)
seq_puts(m, "# | / _----=> need-resched \n");
seq_puts(m, "# || / _---=> hardirq/softirq \n");
seq_puts(m, "# ||| / _--=> preempt-depth \n");
@@ -51,11 +52,11 @@ Index: linux-3.4/kernel/trace/trace.c
}
static void print_event_info(struct trace_array *tr, struct seq_file *m)
-Index: linux-3.4/kernel/trace/trace_events.c
-===================================================================
---- linux-3.4.orig/kernel/trace/trace_events.c
-+++ linux-3.4/kernel/trace/trace_events.c
-@@ -116,6 +116,7 @@ static int trace_define_common_fields(vo
+diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
+index 29111da..4c3a7b3 100644
+--- a/kernel/trace/trace_events.c
++++ b/kernel/trace/trace_events.c
+@@ -116,6 +116,7 @@ static int trace_define_common_fields(void)
__common_field(unsigned char, flags);
__common_field(unsigned char, preempt_count);
__common_field(int, pid);
@@ -63,11 +64,11 @@ Index: linux-3.4/kernel/trace/trace_events.c
__common_field(int, padding);
return ret;
-Index: linux-3.4/kernel/trace/trace_output.c
-===================================================================
---- linux-3.4.orig/kernel/trace/trace_output.c
-+++ linux-3.4/kernel/trace/trace_output.c
-@@ -593,6 +593,11 @@ int trace_print_lat_fmt(struct trace_seq
+diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c
+index df611a0..1b79535 100644
+--- a/kernel/trace/trace_output.c
++++ b/kernel/trace/trace_output.c
+@@ -593,6 +593,11 @@ int trace_print_lat_fmt(struct trace_seq *s, struct trace_entry *entry)
else
ret = trace_seq_putc(s, '.');
@@ -79,3 +80,6 @@ Index: linux-3.4/kernel/trace/trace_output.c
return ret;
}
+--
+1.7.10.4
+
diff --git a/patches/rt-tracing-show-padding-as-unsigned-short.patch b/patches/0145-tracing-Show-padding-as-unsigned-short.patch
index 6a057a5..59af5ce 100644
--- a/patches/rt-tracing-show-padding-as-unsigned-short.patch
+++ b/patches/0145-tracing-Show-padding-as-unsigned-short.patch
@@ -1,6 +1,7 @@
-Subject: tracing: Show padding as unsigned short
+From 67e8baa3796fafa41c234078a03c32f24fefb669 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <rostedt@goodmis.org>
Date: Wed, 16 Nov 2011 13:19:35 -0500
+Subject: [PATCH 145/254] tracing: Show padding as unsigned short
RT added two bytes to trace migrate disable counting to the trace events
and used two bytes of the padding to make the change. The structures and
@@ -19,7 +20,6 @@ format:
field:unsigned short common_migrate_disable; offset:8; size:2; signed:0;
field:int common_padding; offset:10; size:2; signed:0;
-
The field for common_padding has the correct size and offset, but the
use of "int" might confuse some parsers (and people that are reading
it). This needs to be changed to "unsigned short".
@@ -28,16 +28,15 @@ Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Link: http://lkml.kernel.org/r/1321467575.4181.36.camel@frodo
Cc: stable-rt@vger.kernel.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
kernel/trace/trace_events.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/kernel/trace/trace_events.c
-===================================================================
---- linux-3.4.orig/kernel/trace/trace_events.c
-+++ linux-3.4/kernel/trace/trace_events.c
-@@ -117,7 +117,7 @@ static int trace_define_common_fields(vo
+diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
+index 4c3a7b3..9d94e2f 100644
+--- a/kernel/trace/trace_events.c
++++ b/kernel/trace/trace_events.c
+@@ -117,7 +117,7 @@ static int trace_define_common_fields(void)
__common_field(unsigned char, preempt_count);
__common_field(int, pid);
__common_field(unsigned short, migrate_disable);
@@ -46,3 +45,6 @@ Index: linux-3.4/kernel/trace/trace_events.c
return ret;
}
+--
+1.7.10.4
+
diff --git a/patches/migrate-disable-rt-variant.patch b/patches/0146-migrate-disable-rt-variant.patch.patch
index e27d9c8..2728965 100644
--- a/patches/migrate-disable-rt-variant.patch
+++ b/patches/0146-migrate-disable-rt-variant.patch.patch
@@ -1,16 +1,17 @@
-Subject: migrate-disable-rt-variant.patch
+From dd372aa42ee2841694bb45fec44d222fb9351a26 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 17 Jul 2011 19:48:20 +0200
+Subject: [PATCH 146/254] migrate-disable-rt-variant.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/preempt.h | 4 ++++
1 file changed, 4 insertions(+)
-Index: linux-3.4/include/linux/preempt.h
-===================================================================
---- linux-3.4.orig/include/linux/preempt.h
-+++ linux-3.4/include/linux/preempt.h
+diff --git a/include/linux/preempt.h b/include/linux/preempt.h
+index c5d2a36..714a08c 100644
+--- a/include/linux/preempt.h
++++ b/include/linux/preempt.h
@@ -121,11 +121,15 @@ extern void migrate_enable(void);
# define preempt_enable_rt() preempt_enable()
# define preempt_disable_nort() do { } while (0)
@@ -27,3 +28,6 @@ Index: linux-3.4/include/linux/preempt.h
#endif
#ifdef CONFIG_PREEMPT_NOTIFIERS
+--
+1.7.10.4
+
diff --git a/patches/peter_zijlstra-frob-migrate_disable.patch b/patches/0147-sched-Optimize-migrate_disable.patch
index 083eca4..eab724a 100644
--- a/patches/peter_zijlstra-frob-migrate_disable.patch
+++ b/patches/0147-sched-Optimize-migrate_disable.patch
@@ -1,6 +1,7 @@
-Subject: sched: Optimize migrate_disable
+From 5f62a7e342d8a1dc417de82b3a861e08a5e087de Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
-Date: Thu Aug 11 15:03:35 CEST 2011
+Date: Thu, 11 Aug 2011 15:03:35 +0200
+Subject: [PATCH 147/254] sched: Optimize migrate_disable
Change from task_rq_lock() to raw_spin_lock(&rq->lock) to avoid a few
atomic ops. See comment on why it should be safe.
@@ -11,10 +12,10 @@ Link: http://lkml.kernel.org/n/tip-cbz6hkl5r5mvwtx5s3tor2y6@git.kernel.org
kernel/sched/core.c | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index 8109af2..d64b1e5 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
@@ -5071,7 +5071,19 @@ void migrate_disable(void)
preempt_enable();
return;
@@ -67,3 +68,6 @@ Index: linux-3.4/kernel/sched/core.c
unpin_current_cpu();
preempt_enable();
}
+--
+1.7.10.4
+
diff --git a/patches/peter_zijlstra-frob-migrate_disable-2.patch b/patches/0148-sched-Generic-migrate_disable.patch
index 9b3ac59..b7fa37f 100644
--- a/patches/peter_zijlstra-frob-migrate_disable-2.patch
+++ b/patches/0148-sched-Generic-migrate_disable.patch
@@ -1,6 +1,7 @@
-Subject: sched: Generic migrate_disable
+From 5ea10c6a47754a1c2227ddc702029ca829947a29 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
-Date: Thu Aug 11 15:14:58 CEST 2011
+Date: Thu, 11 Aug 2011 15:14:58 +0200
+Subject: [PATCH 148/254] sched: Generic migrate_disable
Make migrate_disable() be a preempt_disable() for !rt kernels. This
allows generic code to use it but still enforces that these code
@@ -21,10 +22,10 @@ Link: http://lkml.kernel.org/n/tip-275i87sl8e1jcamtchmehonm@git.kernel.org
lib/smp_processor_id.c | 2 +-
6 files changed, 30 insertions(+), 23 deletions(-)
-Index: linux-3.4/include/linux/preempt.h
-===================================================================
---- linux-3.4.orig/include/linux/preempt.h
-+++ linux-3.4/include/linux/preempt.h
+diff --git a/include/linux/preempt.h b/include/linux/preempt.h
+index 714a08c..5af46d0 100644
+--- a/include/linux/preempt.h
++++ b/include/linux/preempt.h
@@ -108,28 +108,25 @@ do { \
#endif /* CONFIG_PREEMPT_COUNT */
@@ -63,10 +64,10 @@ Index: linux-3.4/include/linux/preempt.h
#endif
#ifdef CONFIG_PREEMPT_NOTIFIERS
-Index: linux-3.4/include/linux/sched.h
-===================================================================
---- linux-3.4.orig/include/linux/sched.h
-+++ linux-3.4/include/linux/sched.h
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index c5f690a..cf6809b 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
@@ -1302,7 +1302,9 @@ struct task_struct {
#endif
@@ -77,7 +78,7 @@ Index: linux-3.4/include/linux/sched.h
cpumask_t cpus_allowed;
#ifdef CONFIG_PREEMPT_RCU
-@@ -2771,11 +2773,22 @@ static inline void set_task_cpu(struct t
+@@ -2771,11 +2773,22 @@ static inline void set_task_cpu(struct task_struct *p, unsigned int cpu)
#endif /* CONFIG_SMP */
@@ -100,11 +101,11 @@ Index: linux-3.4/include/linux/sched.h
return &p->cpus_allowed;
}
-Index: linux-3.4/include/linux/smp.h
-===================================================================
---- linux-3.4.orig/include/linux/smp.h
-+++ linux-3.4/include/linux/smp.h
-@@ -218,13 +218,8 @@ smp_call_function_any(const struct cpuma
+diff --git a/include/linux/smp.h b/include/linux/smp.h
+index 980c525..3001ba5 100644
+--- a/include/linux/smp.h
++++ b/include/linux/smp.h
+@@ -218,13 +218,8 @@ smp_call_function_any(const struct cpumask *mask, smp_call_func_t func,
#define get_cpu() ({ preempt_disable(); smp_processor_id(); })
#define put_cpu() preempt_enable()
@@ -120,11 +121,11 @@ Index: linux-3.4/include/linux/smp.h
/*
* Callback to arch code if there's nosmp or maxcpus=0 on the
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
-@@ -4976,7 +4976,7 @@ void __cpuinit init_idle(struct task_str
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index d64b1e5..bfd712b 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
+@@ -4976,7 +4976,7 @@ void __cpuinit init_idle(struct task_struct *idle, int cpu)
#ifdef CONFIG_SMP
void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask)
{
@@ -133,7 +134,7 @@ Index: linux-3.4/kernel/sched/core.c
if (p->sched_class && p->sched_class->set_cpus_allowed)
p->sched_class->set_cpus_allowed(p, new_mask);
p->rt.nr_cpus_allowed = cpumask_weight(new_mask);
-@@ -5032,7 +5032,7 @@ int set_cpus_allowed_ptr(struct task_str
+@@ -5032,7 +5032,7 @@ int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask)
do_set_cpus_allowed(p, new_mask);
/* Can the task run on the task's current CPU? If so, we're done */
@@ -158,11 +159,11 @@ Index: linux-3.4/kernel/sched/core.c
/*
* Move (not current) task off this cpu, onto dest cpu. We're doing
-Index: linux-3.4/kernel/trace/trace.c
-===================================================================
---- linux-3.4.orig/kernel/trace/trace.c
-+++ linux-3.4/kernel/trace/trace.c
-@@ -1180,7 +1180,7 @@ tracing_generic_entry_update(struct trac
+diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
+index 0514f8f..096ca81 100644
+--- a/kernel/trace/trace.c
++++ b/kernel/trace/trace.c
+@@ -1180,7 +1180,7 @@ tracing_generic_entry_update(struct trace_entry *entry, unsigned long flags,
((pc & SOFTIRQ_MASK) ? TRACE_FLAG_SOFTIRQ : 0) |
(need_resched() ? TRACE_FLAG_NEED_RESCHED : 0);
@@ -171,11 +172,11 @@ Index: linux-3.4/kernel/trace/trace.c
}
EXPORT_SYMBOL_GPL(tracing_generic_entry_update);
-Index: linux-3.4/lib/smp_processor_id.c
-===================================================================
---- linux-3.4.orig/lib/smp_processor_id.c
-+++ linux-3.4/lib/smp_processor_id.c
-@@ -41,7 +41,7 @@ notrace unsigned int debug_smp_processor
+diff --git a/lib/smp_processor_id.c b/lib/smp_processor_id.c
+index 0a846e7..dbb1570 100644
+--- a/lib/smp_processor_id.c
++++ b/lib/smp_processor_id.c
+@@ -41,7 +41,7 @@ notrace unsigned int debug_smp_processor_id(void)
printk(KERN_ERR "BUG: using smp_processor_id() in preemptible [%08x %08x] "
"code: %s/%d\n", preempt_count() - 1,
@@ -184,3 +185,6 @@ Index: linux-3.4/lib/smp_processor_id.c
print_symbol("caller is %s\n", (long)__builtin_return_address(0));
dump_stack();
+--
+1.7.10.4
+
diff --git a/patches/sched-rt-fix-migrate_enable-thinko.patch b/patches/0149-sched-rt-Fix-migrate_enable-thinko.patch
index 23d5f38..9ecaa43 100644
--- a/patches/sched-rt-fix-migrate_enable-thinko.patch
+++ b/patches/0149-sched-rt-Fix-migrate_enable-thinko.patch
@@ -1,6 +1,7 @@
-Subject: sched, rt: Fix migrate_enable() thinko
+From 04fc8a5ba12789b04829d727620195e8a7731ad8 Mon Sep 17 00:00:00 2001
From: Mike Galbraith <efault@gmx.de>
Date: Tue, 23 Aug 2011 16:12:43 +0200
+Subject: [PATCH 149/254] sched, rt: Fix migrate_enable() thinko
Assigning mask = tsk_cpus_allowed(p) after p->migrate_disable = 0 ensures
that we won't see a mask change.. no push/pull, we stack tasks on one CPU.
@@ -14,16 +15,15 @@ Cc: Paul E. McKenney <paulmck@us.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1314108763.6689.4.camel@marge.simson.net
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
kernel/sched/core.c | 4 +++-
kernel/sched/debug.c | 7 +++++++
2 files changed, 10 insertions(+), 1 deletion(-)
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index bfd712b..7ab052a 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
@@ -5128,12 +5128,14 @@ void migrate_enable(void)
*/
rq = this_rq();
@@ -40,11 +40,11 @@ Index: linux-3.4/kernel/sched/core.c
if (p->sched_class->set_cpus_allowed)
p->sched_class->set_cpus_allowed(p, mask);
p->rt.nr_cpus_allowed = cpumask_weight(mask);
-Index: linux-3.4/kernel/sched/debug.c
-===================================================================
---- linux-3.4.orig/kernel/sched/debug.c
-+++ linux-3.4/kernel/sched/debug.c
-@@ -237,6 +237,9 @@ void print_rt_rq(struct seq_file *m, int
+diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
+index 09acaa1..451512ff 100644
+--- a/kernel/sched/debug.c
++++ b/kernel/sched/debug.c
+@@ -237,6 +237,9 @@ void print_rt_rq(struct seq_file *m, int cpu, struct rt_rq *rt_rq)
P(rt_throttled);
PN(rt_time);
PN(rt_runtime);
@@ -54,7 +54,7 @@ Index: linux-3.4/kernel/sched/debug.c
#undef PN
#undef P
-@@ -485,6 +488,10 @@ void proc_sched_show_task(struct task_st
+@@ -485,6 +488,10 @@ void proc_sched_show_task(struct task_struct *p, struct seq_file *m)
P(se.load.weight);
P(policy);
P(prio);
@@ -65,3 +65,6 @@ Index: linux-3.4/kernel/sched/debug.c
#undef PN
#undef __PN
#undef P
+--
+1.7.10.4
+
diff --git a/patches/sched-teach-migrate_disable-about-atomic-contexts.patch b/patches/0150-sched-teach-migrate_disable-about-atomic-contexts.patch
index f1c3495..8b3bbdc 100644
--- a/patches/sched-teach-migrate_disable-about-atomic-contexts.patch
+++ b/patches/0150-sched-teach-migrate_disable-about-atomic-contexts.patch
@@ -1,10 +1,7 @@
-Subject: sched: Teach migrate_disable about atomic contexts
-From: Peter Zijlstra <peterz@infradead.org>
-Date: Fri, 02 Sep 2011 14:41:37 +0200
-
-Subject: sched: teach migrate_disable about atomic contexts
+From 1624ae7fe05d4a93a56645f5942b9cbe4184bb0d Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
-Date: Fri Sep 02 14:29:27 CEST 2011
+Date: Fri, 2 Sep 2011 14:29:27 +0200
+Subject: [PATCH 150/254] sched: teach migrate_disable about atomic contexts
<NMI> [<ffffffff812dafd8>] spin_bug+0x94/0xa8
[<ffffffff812db07f>] do_raw_spin_lock+0x43/0xea
@@ -37,10 +34,10 @@ Link: http://lkml.kernel.org/n/tip-wbot4vsmwhi8vmbf83hsclk6@git.kernel.org
kernel/sched/core.c | 21 +++++++++++++++++++++
2 files changed, 24 insertions(+)
-Index: linux-3.4/include/linux/sched.h
-===================================================================
---- linux-3.4.orig/include/linux/sched.h
-+++ linux-3.4/include/linux/sched.h
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index cf6809b..01f2d96 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
@@ -1304,6 +1304,9 @@ struct task_struct {
unsigned int policy;
#ifdef CONFIG_PREEMPT_RT_FULL
@@ -51,10 +48,10 @@ Index: linux-3.4/include/linux/sched.h
#endif
cpumask_t cpus_allowed;
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index 7ab052a..a73841e 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
@@ -5059,6 +5059,17 @@ void migrate_disable(void)
unsigned long flags;
struct rq *rq;
@@ -90,3 +87,6 @@ Index: linux-3.4/kernel/sched/core.c
WARN_ON_ONCE(p->migrate_disable <= 0);
preempt_disable();
+--
+1.7.10.4
+
diff --git a/patches/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch b/patches/0151-sched-Postpone-actual-migration-disalbe-to-schedule.patch
index 529c33c..5e76ea8 100644
--- a/patches/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch
+++ b/patches/0151-sched-Postpone-actual-migration-disalbe-to-schedule.patch
@@ -1,6 +1,7 @@
-Subject: sched: Postpone actual migration disalbe to schedule
+From 6b6bfe05620c254ceb9293dffec2b4d98b10854c Mon Sep 17 00:00:00 2001
From: Steven Rostedt <rostedt@goodmis.org>
Date: Tue, 27 Sep 2011 08:40:23 -0400
+Subject: [PATCH 151/254] sched: Postpone actual migration disalbe to schedule
The migrate_disable() can cause a bit of a overhead to the RT kernel,
as changing the affinity is expensive to do at every lock encountered.
@@ -17,16 +18,15 @@ Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Clark Williams <williams@redhat.com>
Link: http://lkml.kernel.org/r/20110927124422.779693167@goodmis.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
- kernel/sched/core.c | 251 +++++++++++++++++++++++++++-------------------------
+ kernel/sched/core.c | 251 +++++++++++++++++++++++++++------------------------
1 file changed, 132 insertions(+), 119 deletions(-)
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
-@@ -3136,6 +3136,135 @@ static inline void schedule_debug(struct
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index a73841e..c62dd4d 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
+@@ -3136,6 +3136,135 @@ static inline void schedule_debug(struct task_struct *prev)
schedstat_inc(this_rq(), sched_count);
}
@@ -171,7 +171,7 @@ Index: linux-3.4/kernel/sched/core.c
switch_count = &prev->nivcsw;
if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) {
if (unlikely(signal_pending_state(prev->state, prev))) {
-@@ -4976,7 +5107,7 @@ void __cpuinit init_idle(struct task_str
+@@ -4976,7 +5107,7 @@ void __cpuinit init_idle(struct task_struct *idle, int cpu)
#ifdef CONFIG_SMP
void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask)
{
@@ -305,3 +305,6 @@ Index: linux-3.4/kernel/sched/core.c
/*
* Move (not current) task off this cpu, onto dest cpu. We're doing
* this because either it can't run here any more (set_cpus_allowed()
+--
+1.7.10.4
+
diff --git a/patches/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch b/patches/0152-sched-Do-not-compare-cpu-masks-in-scheduler.patch
index b908fde..5cdc4e6 100644
--- a/patches/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch
+++ b/patches/0152-sched-Do-not-compare-cpu-masks-in-scheduler.patch
@@ -1,22 +1,22 @@
-Subject: sched: Do not compare cpu masks in scheduler
-Date: Tue, 27 Sep 2011 08:40:24 -0400
+From ec44acdf36c1481528c767931c43631e687e4182 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
+Date: Tue, 27 Sep 2011 08:40:24 -0400
+Subject: [PATCH 152/254] sched: Do not compare cpu masks in scheduler
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Clark Williams <williams@redhat.com>
Link: http://lkml.kernel.org/r/20110927124423.128129033@goodmis.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
kernel/sched/core.c | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
-@@ -3164,16 +3164,12 @@ static inline void update_migrate_disabl
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index c62dd4d..e9d2386 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
+@@ -3164,16 +3164,12 @@ static inline void update_migrate_disable(struct task_struct *p)
*/
mask = tsk_cpus_allowed(p);
@@ -38,3 +38,6 @@ Index: linux-3.4/kernel/sched/core.c
}
void migrate_disable(void)
+--
+1.7.10.4
+
diff --git a/patches/rt-sched-have-migrate_disable-ignore-bounded-threads.patch b/patches/0153-sched-Have-migrate_disable-ignore-bounded-threads.patch
index 23eec22..0c01ed8 100644
--- a/patches/rt-sched-have-migrate_disable-ignore-bounded-threads.patch
+++ b/patches/0153-sched-Have-migrate_disable-ignore-bounded-threads.patch
@@ -1,21 +1,21 @@
-Subject: sched: Have migrate_disable ignore bounded threads
-Date: Tue, 27 Sep 2011 08:40:25 -0400
+From 2a2532c181d21f2258e3ca6540aea98697b1bd3c Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
+Date: Tue, 27 Sep 2011 08:40:25 -0400
+Subject: [PATCH 153/254] sched: Have migrate_disable ignore bounded threads
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Clark Williams <williams@redhat.com>
Link: http://lkml.kernel.org/r/20110927124423.567944215@goodmis.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
kernel/sched/core.c | 23 +++++++++--------------
1 file changed, 9 insertions(+), 14 deletions(-)
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index e9d2386..8e69311 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
@@ -3176,7 +3176,7 @@ void migrate_disable(void)
{
struct task_struct *p = current;
@@ -68,3 +68,6 @@ Index: linux-3.4/kernel/sched/core.c
raw_spin_unlock_irqrestore(&rq->lock, flags);
} else
p->migrate_disable = 0;
+--
+1.7.10.4
+
diff --git a/patches/sched-clear-pf-thread-bound-on-fallback-rq.patch b/patches/0154-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch
index ac3751a..a4a9467 100644
--- a/patches/sched-clear-pf-thread-bound-on-fallback-rq.patch
+++ b/patches/0154-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch
@@ -1,16 +1,17 @@
-Subject: sched-clear-pf-thread-bound-on-fallback-rq.patch
+From 5f6b77994cfc10b79ad4f22614ee3d80b34722d4 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Fri, 04 Nov 2011 20:48:36 +0100
+Date: Fri, 4 Nov 2011 20:48:36 +0100
+Subject: [PATCH 154/254] sched-clear-pf-thread-bound-on-fallback-rq.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/sched/core.c | 6 ++++++
1 file changed, 6 insertions(+)
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index 8e69311..60e46f4 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
@@ -1325,6 +1325,12 @@ out:
}
}
@@ -24,3 +25,6 @@ Index: linux-3.4/kernel/sched/core.c
return dest_cpu;
}
+--
+1.7.10.4
+
diff --git a/patches/ftrace-crap.patch b/patches/0155-ftrace-crap.patch.patch
index 88bee83..fd06e39 100644
--- a/patches/ftrace-crap.patch
+++ b/patches/0155-ftrace-crap.patch.patch
@@ -1,6 +1,7 @@
-Subject: ftrace-crap.patch
+From 7f67e2deb1219acdb14e5ab1a80dd21b8cb128b5 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Fri, 09 Sep 2011 16:55:53 +0200
+Date: Fri, 9 Sep 2011 16:55:53 +0200
+Subject: [PATCH 155/254] ftrace-crap.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/trace/trace.h | 1 -
2 files changed, 24 insertions(+), 3 deletions(-)
-Index: linux-3.4/kernel/trace/trace.c
-===================================================================
---- linux-3.4.orig/kernel/trace/trace.c
-+++ linux-3.4/kernel/trace/trace.c
+diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
+index 096ca81..6665bea 100644
+--- a/kernel/trace/trace.c
++++ b/kernel/trace/trace.c
@@ -414,11 +414,13 @@ EXPORT_SYMBOL_GPL(tracing_is_on);
*/
void trace_wake_up(void)
@@ -26,7 +27,7 @@ Index: linux-3.4/kernel/trace/trace.c
}
static int __init set_buf_size(char *str)
-@@ -775,6 +777,12 @@ update_max_tr_single(struct trace_array
+@@ -775,6 +777,12 @@ update_max_tr_single(struct trace_array *tr, struct task_struct *tsk, int cpu)
}
#endif /* CONFIG_TRACER_MAX_TRACE */
@@ -39,7 +40,7 @@ Index: linux-3.4/kernel/trace/trace.c
/**
* register_tracer - register a tracer with the ftrace system.
* @type - the plugin for the tracer
-@@ -3303,6 +3311,7 @@ static int tracing_release_pipe(struct i
+@@ -3303,6 +3311,7 @@ static int tracing_release_pipe(struct inode *inode, struct file *file)
return 0;
}
@@ -47,7 +48,7 @@ Index: linux-3.4/kernel/trace/trace.c
static unsigned int
tracing_poll_pipe(struct file *filp, poll_table *poll_table)
{
-@@ -3324,8 +3333,7 @@ tracing_poll_pipe(struct file *filp, pol
+@@ -3324,8 +3333,7 @@ tracing_poll_pipe(struct file *filp, poll_table *poll_table)
}
}
@@ -57,7 +58,7 @@ Index: linux-3.4/kernel/trace/trace.c
{
DEFINE_WAIT(wait);
-@@ -3336,6 +3344,20 @@ void default_wait_pipe(struct trace_iter
+@@ -3336,6 +3344,20 @@ void default_wait_pipe(struct trace_iterator *iter)
finish_wait(&trace_wait, &wait);
}
@@ -78,11 +79,11 @@ Index: linux-3.4/kernel/trace/trace.c
/*
* This is a make-shift waitqueue.
-Index: linux-3.4/kernel/trace/trace.h
-===================================================================
---- linux-3.4.orig/kernel/trace/trace.h
-+++ linux-3.4/kernel/trace/trace.h
-@@ -354,7 +354,6 @@ void trace_init_global_iter(struct trace
+diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
+index f95d65d..fe96b7c 100644
+--- a/kernel/trace/trace.h
++++ b/kernel/trace/trace.h
+@@ -354,7 +354,6 @@ void trace_init_global_iter(struct trace_iterator *iter);
void tracing_iter_reset(struct trace_iterator *iter, int cpu);
@@ -90,3 +91,6 @@ Index: linux-3.4/kernel/trace/trace.h
void poll_wait_pipe(struct trace_iterator *iter);
void ftrace(struct trace_array *tr,
+--
+1.7.10.4
+
diff --git a/patches/rt-ring-buffer-convert-reader_lock-from-raw_spin_lock-into-spin_lock.patch b/patches/0156-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch
index 4dd5156..3f1b9d9 100644
--- a/patches/rt-ring-buffer-convert-reader_lock-from-raw_spin_lock-into-spin_lock.patch
+++ b/patches/0156-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch
@@ -1,6 +1,8 @@
-Subject: ring-buffer: Convert reader_lock from raw_spin_lock into spin_lock
+From 855e5ce553c98cd1f4c8c64fb174b94978211f73 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <rostedt@goodmis.org>
Date: Tue, 27 Sep 2011 13:56:50 -0400
+Subject: [PATCH 156/254] ring-buffer: Convert reader_lock from raw_spin_lock
+ into spin_lock
The reader_lock is mostly taken in normal context with interrupts enabled.
But because ftrace_dump() can happen anywhere, it is used as a spin lock
@@ -37,17 +39,14 @@ Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Clark Williams <clark@redhat.com>
Link: http://lkml.kernel.org/r/1317146210.26514.33.camel@gandalf.stny.rr.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
-
-
---
- kernel/trace/ring_buffer.c | 151 ++++++++++++++++++++++++---------------------
+ kernel/trace/ring_buffer.c | 151 ++++++++++++++++++++++++--------------------
1 file changed, 81 insertions(+), 70 deletions(-)
-Index: linux-3.4/kernel/trace/ring_buffer.c
-===================================================================
---- linux-3.4.orig/kernel/trace/ring_buffer.c
-+++ linux-3.4/kernel/trace/ring_buffer.c
+diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
+index cf8d11e..24efd16 100644
+--- a/kernel/trace/ring_buffer.c
++++ b/kernel/trace/ring_buffer.c
@@ -446,7 +446,7 @@ struct ring_buffer_per_cpu {
int cpu;
atomic_t record_disabled;
@@ -57,7 +56,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
arch_spinlock_t lock;
struct lock_class_key lock_key;
struct list_head *pages;
-@@ -1017,6 +1017,44 @@ static int rb_allocate_pages(struct ring
+@@ -1017,6 +1017,44 @@ static int rb_allocate_pages(struct ring_buffer_per_cpu *cpu_buffer,
return -ENOMEM;
}
@@ -102,7 +101,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
static struct ring_buffer_per_cpu *
rb_allocate_cpu_buffer(struct ring_buffer *buffer, int cpu)
{
-@@ -1032,7 +1070,7 @@ rb_allocate_cpu_buffer(struct ring_buffe
+@@ -1032,7 +1070,7 @@ rb_allocate_cpu_buffer(struct ring_buffer *buffer, int cpu)
cpu_buffer->cpu = cpu;
cpu_buffer->buffer = buffer;
@@ -111,7 +110,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
lockdep_set_class(&cpu_buffer->reader_lock, buffer->reader_lock_key);
cpu_buffer->lock = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED;
-@@ -1227,9 +1265,11 @@ rb_remove_pages(struct ring_buffer_per_c
+@@ -1227,9 +1265,11 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages)
{
struct buffer_page *bpage;
struct list_head *p;
@@ -124,7 +123,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
rb_head_page_deactivate(cpu_buffer);
for (i = 0; i < nr_pages; i++) {
-@@ -1247,7 +1287,7 @@ rb_remove_pages(struct ring_buffer_per_c
+@@ -1247,7 +1287,7 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages)
rb_check_pages(cpu_buffer);
out:
@@ -133,7 +132,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
}
static void
-@@ -1256,9 +1296,11 @@ rb_insert_pages(struct ring_buffer_per_c
+@@ -1256,9 +1296,11 @@ rb_insert_pages(struct ring_buffer_per_cpu *cpu_buffer,
{
struct buffer_page *bpage;
struct list_head *p;
@@ -146,7 +145,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
rb_head_page_deactivate(cpu_buffer);
for (i = 0; i < nr_pages; i++) {
-@@ -1273,7 +1315,7 @@ rb_insert_pages(struct ring_buffer_per_c
+@@ -1273,7 +1315,7 @@ rb_insert_pages(struct ring_buffer_per_cpu *cpu_buffer,
rb_check_pages(cpu_buffer);
out:
@@ -155,7 +154,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
}
/**
-@@ -2714,7 +2756,7 @@ unsigned long ring_buffer_oldest_event_t
+@@ -2714,7 +2756,7 @@ unsigned long ring_buffer_oldest_event_ts(struct ring_buffer *buffer, int cpu)
return 0;
cpu_buffer = buffer->buffers[cpu];
@@ -164,7 +163,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
/*
* if the tail is on reader_page, oldest time stamp is on the reader
* page
-@@ -2724,7 +2766,7 @@ unsigned long ring_buffer_oldest_event_t
+@@ -2724,7 +2766,7 @@ unsigned long ring_buffer_oldest_event_ts(struct ring_buffer *buffer, int cpu)
else
bpage = rb_set_head_page(cpu_buffer);
ret = bpage->page->time_stamp;
@@ -173,7 +172,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
return ret;
}
-@@ -2888,15 +2930,16 @@ void ring_buffer_iter_reset(struct ring_
+@@ -2888,15 +2930,16 @@ void ring_buffer_iter_reset(struct ring_buffer_iter *iter)
{
struct ring_buffer_per_cpu *cpu_buffer;
unsigned long flags;
@@ -192,7 +191,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
}
EXPORT_SYMBOL_GPL(ring_buffer_iter_reset);
-@@ -3314,21 +3357,6 @@ rb_iter_peek(struct ring_buffer_iter *it
+@@ -3314,21 +3357,6 @@ rb_iter_peek(struct ring_buffer_iter *iter, u64 *ts)
}
EXPORT_SYMBOL_GPL(ring_buffer_iter_peek);
@@ -214,7 +213,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
/**
* ring_buffer_peek - peek at the next event to be read
* @buffer: The ring buffer to read
-@@ -3346,22 +3374,17 @@ ring_buffer_peek(struct ring_buffer *buf
+@@ -3346,22 +3374,17 @@ ring_buffer_peek(struct ring_buffer *buffer, int cpu, u64 *ts,
struct ring_buffer_per_cpu *cpu_buffer = buffer->buffers[cpu];
struct ring_buffer_event *event;
unsigned long flags;
@@ -240,7 +239,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
if (event && event->type_len == RINGBUF_TYPE_PADDING)
goto again;
-@@ -3383,11 +3406,12 @@ ring_buffer_iter_peek(struct ring_buffer
+@@ -3383,11 +3406,12 @@ ring_buffer_iter_peek(struct ring_buffer_iter *iter, u64 *ts)
struct ring_buffer_per_cpu *cpu_buffer = iter->cpu_buffer;
struct ring_buffer_event *event;
unsigned long flags;
@@ -255,7 +254,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
if (event && event->type_len == RINGBUF_TYPE_PADDING)
goto again;
-@@ -3413,9 +3437,7 @@ ring_buffer_consume(struct ring_buffer *
+@@ -3413,9 +3437,7 @@ ring_buffer_consume(struct ring_buffer *buffer, int cpu, u64 *ts,
struct ring_buffer_per_cpu *cpu_buffer;
struct ring_buffer_event *event = NULL;
unsigned long flags;
@@ -266,7 +265,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
again:
/* might be called in atomic */
-@@ -3425,9 +3447,7 @@ ring_buffer_consume(struct ring_buffer *
+@@ -3425,9 +3447,7 @@ ring_buffer_consume(struct ring_buffer *buffer, int cpu, u64 *ts,
goto out;
cpu_buffer = buffer->buffers[cpu];
@@ -277,7 +276,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
event = rb_buffer_peek(cpu_buffer, ts, lost_events);
if (event) {
-@@ -3435,9 +3455,8 @@ ring_buffer_consume(struct ring_buffer *
+@@ -3435,9 +3455,8 @@ ring_buffer_consume(struct ring_buffer *buffer, int cpu, u64 *ts,
rb_advance_reader(cpu_buffer);
}
@@ -289,7 +288,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
out:
preempt_enable();
-@@ -3522,17 +3541,18 @@ ring_buffer_read_start(struct ring_buffe
+@@ -3522,17 +3541,18 @@ ring_buffer_read_start(struct ring_buffer_iter *iter)
{
struct ring_buffer_per_cpu *cpu_buffer;
unsigned long flags;
@@ -310,7 +309,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
}
EXPORT_SYMBOL_GPL(ring_buffer_read_start);
-@@ -3566,8 +3586,9 @@ ring_buffer_read(struct ring_buffer_iter
+@@ -3566,8 +3586,9 @@ ring_buffer_read(struct ring_buffer_iter *iter, u64 *ts)
struct ring_buffer_event *event;
struct ring_buffer_per_cpu *cpu_buffer = iter->cpu_buffer;
unsigned long flags;
@@ -321,7 +320,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
again:
event = rb_iter_peek(iter, ts);
if (!event)
-@@ -3578,7 +3599,7 @@ ring_buffer_read(struct ring_buffer_iter
+@@ -3578,7 +3599,7 @@ ring_buffer_read(struct ring_buffer_iter *iter, u64 *ts)
rb_advance_iter(iter);
out:
@@ -330,7 +329,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
return event;
}
-@@ -3643,13 +3664,14 @@ void ring_buffer_reset_cpu(struct ring_b
+@@ -3643,13 +3664,14 @@ void ring_buffer_reset_cpu(struct ring_buffer *buffer, int cpu)
{
struct ring_buffer_per_cpu *cpu_buffer = buffer->buffers[cpu];
unsigned long flags;
@@ -346,7 +345,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
if (RB_WARN_ON(cpu_buffer, local_read(&cpu_buffer->committing)))
goto out;
-@@ -3661,7 +3683,7 @@ void ring_buffer_reset_cpu(struct ring_b
+@@ -3661,7 +3683,7 @@ void ring_buffer_reset_cpu(struct ring_buffer *buffer, int cpu)
arch_spin_unlock(&cpu_buffer->lock);
out:
@@ -355,7 +354,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
atomic_dec(&cpu_buffer->record_disabled);
}
-@@ -3688,22 +3710,16 @@ int ring_buffer_empty(struct ring_buffer
+@@ -3688,22 +3710,16 @@ int ring_buffer_empty(struct ring_buffer *buffer)
{
struct ring_buffer_per_cpu *cpu_buffer;
unsigned long flags;
@@ -381,7 +380,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
if (!ret)
return 0;
-@@ -3722,22 +3738,16 @@ int ring_buffer_empty_cpu(struct ring_bu
+@@ -3722,22 +3738,16 @@ int ring_buffer_empty_cpu(struct ring_buffer *buffer, int cpu)
{
struct ring_buffer_per_cpu *cpu_buffer;
unsigned long flags;
@@ -407,7 +406,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
return ret;
}
-@@ -3912,6 +3922,7 @@ int ring_buffer_read_page(struct ring_bu
+@@ -3912,6 +3922,7 @@ int ring_buffer_read_page(struct ring_buffer *buffer,
unsigned int commit;
unsigned int read;
u64 save_timestamp;
@@ -415,7 +414,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
int ret = -1;
if (!cpumask_test_cpu(cpu, buffer->cpumask))
-@@ -3933,7 +3944,7 @@ int ring_buffer_read_page(struct ring_bu
+@@ -3933,7 +3944,7 @@ int ring_buffer_read_page(struct ring_buffer *buffer,
if (!bpage)
goto out;
@@ -424,7 +423,7 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
reader = rb_get_reader_page(cpu_buffer);
if (!reader)
-@@ -4057,7 +4068,7 @@ int ring_buffer_read_page(struct ring_bu
+@@ -4057,7 +4068,7 @@ int ring_buffer_read_page(struct ring_buffer *buffer,
memset(&bpage->data[commit], 0, BUF_PAGE_SIZE - commit);
out_unlock:
@@ -433,3 +432,6 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
out:
return ret;
+--
+1.7.10.4
+
diff --git a/patches/net-netif_rx_ni-migrate-disable.patch b/patches/0157-net-netif_rx_ni-migrate-disable.patch.patch
index 007147d..0ebeb32 100644
--- a/patches/net-netif_rx_ni-migrate-disable.patch
+++ b/patches/0157-net-netif_rx_ni-migrate-disable.patch.patch
@@ -1,17 +1,18 @@
-Subject: net-netif_rx_ni-migrate-disable.patch
+From 26e4db613e73a4b3c005c8d60824df9472a82d34 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 17 Jul 2011 16:29:27 +0200
+Subject: [PATCH 157/254] net-netif_rx_ni-migrate-disable.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
net/core/dev.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-Index: linux-3.4/net/core/dev.c
-===================================================================
---- linux-3.4.orig/net/core/dev.c
-+++ linux-3.4/net/core/dev.c
-@@ -2986,11 +2986,11 @@ int netif_rx_ni(struct sk_buff *skb)
+diff --git a/net/core/dev.c b/net/core/dev.c
+index ca7a845..8b645be 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -2960,11 +2960,11 @@ int netif_rx_ni(struct sk_buff *skb)
{
int err;
@@ -25,3 +26,6 @@ Index: linux-3.4/net/core/dev.c
return err;
}
+--
+1.7.10.4
+
diff --git a/patches/softirq-sanitize-softirq-pending.patch b/patches/0158-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch
index eae4b5a..f5d0d2f 100644
--- a/patches/softirq-sanitize-softirq-pending.patch
+++ b/patches/0158-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch
@@ -1,20 +1,20 @@
+From b386df3a309763cebb6761c78ca2f046cf4a7046 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 3 Jul 2009 13:16:38 -0500
-Subject: softirq: Sanitize softirq pending for NOHZ/RT
+Subject: [PATCH 158/254] softirq: Sanitize softirq pending for NOHZ/RT
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
- include/linux/interrupt.h | 2 +
- kernel/softirq.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++
- kernel/time/tick-sched.c | 8 ------
+ include/linux/interrupt.h | 2 ++
+ kernel/softirq.c | 61 +++++++++++++++++++++++++++++++++++++++++++++
+ kernel/time/tick-sched.c | 8 +-----
3 files changed, 64 insertions(+), 7 deletions(-)
-Index: linux-3.4/include/linux/interrupt.h
-===================================================================
---- linux-3.4.orig/include/linux/interrupt.h
-+++ linux-3.4/include/linux/interrupt.h
-@@ -464,6 +464,8 @@ extern void __raise_softirq_irqoff(unsig
+diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
+index 9027bde..d3b1727 100644
+--- a/include/linux/interrupt.h
++++ b/include/linux/interrupt.h
+@@ -464,6 +464,8 @@ extern void __raise_softirq_irqoff(unsigned int nr);
extern void raise_softirq_irqoff(unsigned int nr);
extern void raise_softirq(unsigned int nr);
@@ -23,10 +23,10 @@ Index: linux-3.4/include/linux/interrupt.h
/* This is the worklist that queues up per-cpu softirq work.
*
* send_remote_sendirq() adds work to these lists, and
-Index: linux-3.4/kernel/softirq.c
-===================================================================
---- linux-3.4.orig/kernel/softirq.c
-+++ linux-3.4/kernel/softirq.c
+diff --git a/kernel/softirq.c b/kernel/softirq.c
+index 6ec3a78..6f84f09 100644
+--- a/kernel/softirq.c
++++ b/kernel/softirq.c
@@ -61,6 +61,67 @@ char *softirq_to_name[NR_SOFTIRQS] = {
"TASKLET", "SCHED", "HRTIMER", "RCU"
};
@@ -95,11 +95,11 @@ Index: linux-3.4/kernel/softirq.c
/*
* we cannot loop indefinitely here to avoid userspace starvation,
* but we also don't want to introduce a worst case 1/HZ latency
-Index: linux-3.4/kernel/time/tick-sched.c
-===================================================================
---- linux-3.4.orig/kernel/time/tick-sched.c
-+++ linux-3.4/kernel/time/tick-sched.c
-@@ -307,13 +307,7 @@ static void tick_nohz_stop_sched_tick(st
+diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
+index 5d409b0..9f958cb 100644
+--- a/kernel/time/tick-sched.c
++++ b/kernel/time/tick-sched.c
+@@ -307,13 +307,7 @@ static void tick_nohz_stop_sched_tick(struct tick_sched *ts)
return;
if (unlikely(local_softirq_pending() && cpu_online(cpu))) {
@@ -114,3 +114,6 @@ Index: linux-3.4/kernel/time/tick-sched.c
return;
}
+--
+1.7.10.4
+
diff --git a/patches/lockdep-no-softirq-accounting-on-rt.patch b/patches/0159-lockdep-rt.patch.patch
index b9155a4..55f5cc3 100644
--- a/patches/lockdep-no-softirq-accounting-on-rt.patch
+++ b/patches/0159-lockdep-rt.patch.patch
@@ -1,6 +1,7 @@
-Subject: lockdep-rt.patch
+From 7ff52f393b9c154a33b8e633a28843efe047b848 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 17 Jul 2011 18:51:23 +0200
+Subject: [PATCH 159/254] lockdep-rt.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/lockdep.c | 2 ++
2 files changed, 9 insertions(+), 3 deletions(-)
-Index: linux-3.4/include/linux/irqflags.h
-===================================================================
---- linux-3.4.orig/include/linux/irqflags.h
-+++ linux-3.4/include/linux/irqflags.h
+diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h
+index 37b13c4..a52b35d 100644
+--- a/include/linux/irqflags.h
++++ b/include/linux/irqflags.h
@@ -25,8 +25,6 @@
# define trace_softirqs_enabled(p) ((p)->softirqs_enabled)
# define trace_hardirq_enter() do { current->hardirq_context++; } while (0)
@@ -38,11 +39,11 @@ Index: linux-3.4/include/linux/irqflags.h
#endif
#if defined(CONFIG_IRQSOFF_TRACER) || \
-Index: linux-3.4/kernel/lockdep.c
-===================================================================
---- linux-3.4.orig/kernel/lockdep.c
-+++ linux-3.4/kernel/lockdep.c
-@@ -3495,6 +3495,7 @@ static void check_flags(unsigned long fl
+diff --git a/kernel/lockdep.c b/kernel/lockdep.c
+index ea9ee45..6537c1c 100644
+--- a/kernel/lockdep.c
++++ b/kernel/lockdep.c
+@@ -3495,6 +3495,7 @@ static void check_flags(unsigned long flags)
}
}
@@ -50,7 +51,7 @@ Index: linux-3.4/kernel/lockdep.c
/*
* We dont accurately track softirq state in e.g.
* hardirq contexts (such as on 4KSTACKS), so only
-@@ -3509,6 +3510,7 @@ static void check_flags(unsigned long fl
+@@ -3509,6 +3510,7 @@ static void check_flags(unsigned long flags)
DEBUG_LOCKS_WARN_ON(!current->softirqs_enabled);
}
}
@@ -58,3 +59,6 @@ Index: linux-3.4/kernel/lockdep.c
if (!debug_locks)
print_irqtrace_events(current);
+--
+1.7.10.4
+
diff --git a/patches/mutex-no-spin-on-rt.patch b/patches/0160-mutex-no-spin-on-rt.patch.patch
index 1af4bb4..93167ab 100644
--- a/patches/mutex-no-spin-on-rt.patch
+++ b/patches/0160-mutex-no-spin-on-rt.patch.patch
@@ -1,19 +1,23 @@
-Subject: mutex-no-spin-on-rt.patch
+From 1a84d346ae3188e2704e97a6812081e766c0df0a Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 17 Jul 2011 21:51:45 +0200
+Subject: [PATCH 160/254] mutex-no-spin-on-rt.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/Kconfig.locks | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/kernel/Kconfig.locks
-===================================================================
---- linux-3.4.orig/kernel/Kconfig.locks
-+++ linux-3.4/kernel/Kconfig.locks
+diff --git a/kernel/Kconfig.locks b/kernel/Kconfig.locks
+index 2251882..033ebc0 100644
+--- a/kernel/Kconfig.locks
++++ b/kernel/Kconfig.locks
@@ -199,4 +199,4 @@ config INLINE_WRITE_UNLOCK_IRQRESTORE
def_bool !DEBUG_SPINLOCK && ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE
config MUTEX_SPIN_ON_OWNER
- def_bool SMP && !DEBUG_MUTEXES
+ def_bool SMP && !DEBUG_MUTEXES && !PREEMPT_RT_FULL
+--
+1.7.10.4
+
diff --git a/patches/softirq-local-lock.patch b/patches/0161-softirq-local-lock.patch.patch
index 9719c76..7312896 100644
--- a/patches/softirq-local-lock.patch
+++ b/patches/0161-softirq-local-lock.patch.patch
@@ -1,20 +1,21 @@
-Subject: softirq-local-lock.patch
+From 53fe4bdbd9588eea351ed97ba2c17805081b8c5b Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Jun 2011 15:57:18 +0200
+Subject: [PATCH 161/254] softirq-local-lock.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- include/linux/hardirq.h | 16 +++-
- include/linux/interrupt.h | 12 +++
- include/linux/sched.h | 1
- init/main.c | 1
- kernel/softirq.c | 166 +++++++++++++++++++++++++++++++++++++++++++++-
+ include/linux/hardirq.h | 16 ++++-
+ include/linux/interrupt.h | 12 ++++
+ include/linux/sched.h | 1 +
+ init/main.c | 1 +
+ kernel/softirq.c | 166 ++++++++++++++++++++++++++++++++++++++++++++-
5 files changed, 191 insertions(+), 5 deletions(-)
-Index: linux-3.4/include/linux/hardirq.h
-===================================================================
---- linux-3.4.orig/include/linux/hardirq.h
-+++ linux-3.4/include/linux/hardirq.h
+diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h
+index bb7f309..cbd7c99 100644
+--- a/include/linux/hardirq.h
++++ b/include/linux/hardirq.h
@@ -60,7 +60,11 @@
#define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT)
#define NMI_OFFSET (1UL << NMI_SHIFT)
@@ -55,10 +56,10 @@ Index: linux-3.4/include/linux/hardirq.h
/*
* Are we in NMI context?
-Index: linux-3.4/include/linux/interrupt.h
-===================================================================
---- linux-3.4.orig/include/linux/interrupt.h
-+++ linux-3.4/include/linux/interrupt.h
+diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
+index d3b1727..e53bd8b 100644
+--- a/include/linux/interrupt.h
++++ b/include/linux/interrupt.h
@@ -456,7 +456,13 @@ struct softirq_action
asmlinkage void do_softirq(void);
@@ -73,7 +74,7 @@ Index: linux-3.4/include/linux/interrupt.h
extern void open_softirq(int nr, void (*action)(struct softirq_action *));
extern void softirq_init(void);
extern void __raise_softirq_irqoff(unsigned int nr);
-@@ -643,6 +649,12 @@ void tasklet_hrtimer_cancel(struct taskl
+@@ -643,6 +649,12 @@ void tasklet_hrtimer_cancel(struct tasklet_hrtimer *ttimer)
tasklet_kill(&ttimer->tasklet);
}
@@ -86,10 +87,10 @@ Index: linux-3.4/include/linux/interrupt.h
/*
* Autoprobing for irqs:
*
-Index: linux-3.4/include/linux/sched.h
-===================================================================
---- linux-3.4.orig/include/linux/sched.h
-+++ linux-3.4/include/linux/sched.h
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index 01f2d96..372c15d 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
@@ -1645,6 +1645,7 @@ struct task_struct {
#endif
#ifdef CONFIG_PREEMPT_RT_BASE
@@ -98,11 +99,11 @@ Index: linux-3.4/include/linux/sched.h
#endif
};
-Index: linux-3.4/init/main.c
-===================================================================
---- linux-3.4.orig/init/main.c
-+++ linux-3.4/init/main.c
-@@ -490,6 +490,7 @@ asmlinkage void __init start_kernel(void
+diff --git a/init/main.c b/init/main.c
+index 894d2bd..a998050 100644
+--- a/init/main.c
++++ b/init/main.c
+@@ -490,6 +490,7 @@ asmlinkage void __init start_kernel(void)
* Interrupts are still disabled. Do necessary setups, then
* enable them
*/
@@ -110,10 +111,10 @@ Index: linux-3.4/init/main.c
tick_init();
boot_cpu_init();
page_address_init();
-Index: linux-3.4/kernel/softirq.c
-===================================================================
---- linux-3.4.orig/kernel/softirq.c
-+++ linux-3.4/kernel/softirq.c
+diff --git a/kernel/softirq.c b/kernel/softirq.c
+index 6f84f09..a6207be 100644
+--- a/kernel/softirq.c
++++ b/kernel/softirq.c
@@ -24,6 +24,7 @@
#include <linux/ftrace.h>
#include <linux/smp.h>
@@ -122,7 +123,7 @@ Index: linux-3.4/kernel/softirq.c
#define CREATE_TRACE_POINTS
#include <trace/events/irq.h>
-@@ -165,6 +166,7 @@ static void handle_pending_softirqs(u32
+@@ -165,6 +166,7 @@ static void handle_pending_softirqs(u32 pending, int cpu)
local_irq_disable();
}
@@ -323,3 +324,6 @@ Index: linux-3.4/kernel/softirq.c
}
/*
+--
+1.7.10.4
+
diff --git a/patches/softirq-export-in-serving-softirq.patch b/patches/0162-softirq-Export-in_serving_softirq.patch
index bfd034d..eea3332 100644
--- a/patches/softirq-export-in-serving-softirq.patch
+++ b/patches/0162-softirq-Export-in_serving_softirq.patch
@@ -1,6 +1,7 @@
-Subject: softirq: Export in_serving_softirq()
+From f8562fa3e37de0e015d4df4c6e3c2ff31b64b1f8 Mon Sep 17 00:00:00 2001
From: John Kacur <jkacur@redhat.com>
Date: Mon, 14 Nov 2011 02:44:43 +0100
+Subject: [PATCH 162/254] softirq: Export in_serving_softirq()
ERROR: "in_serving_softirq" [net/sched/cls_cgroup.ko] undefined!
@@ -11,15 +12,14 @@ Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
Cc: stable-rt@vger.kernel.org
Link: http://lkml.kernel.org/r/1321235083-21756-2-git-send-email-jkacur@redhat.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
kernel/softirq.c | 1 +
1 file changed, 1 insertion(+)
-Index: linux-3.4/kernel/softirq.c
-===================================================================
---- linux-3.4.orig/kernel/softirq.c
-+++ linux-3.4/kernel/softirq.c
+diff --git a/kernel/softirq.c b/kernel/softirq.c
+index a6207be..5741cf7 100644
+--- a/kernel/softirq.c
++++ b/kernel/softirq.c
@@ -439,6 +439,7 @@ int in_serving_softirq(void)
preempt_enable();
return res;
@@ -28,3 +28,6 @@ Index: linux-3.4/kernel/softirq.c
/*
* Called with bh and local interrupts disabled. For full RT cpu must
+--
+1.7.10.4
+
diff --git a/patches/harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch b/patches/0163-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch
index 1212379..71df81e 100644
--- a/patches/harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch
+++ b/patches/0163-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch
@@ -1,6 +1,11 @@
-Subject: hardirq.h: Define softirq_count() as OUL to kill build warning
+From a23dd7b2fcd3bcc30d5c251e2f11cc9ecccbb15e Mon Sep 17 00:00:00 2001
From: Yong Zhang <yong.zhang0@gmail.com>
Date: Thu, 13 Oct 2011 17:19:09 +0800
+Subject: [PATCH 163/254] hardirq.h: Define softirq_count() as OUL to kill
+ build warning
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
kernel/lockdep.c: In function ‘print_bad_irq_dependency’:
kernel/lockdep.c:1476:3: warning: format ‘%lu’ expects type ‘long unsigned int’, but argument 7 has type ‘unsigned int’
@@ -22,10 +27,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
include/linux/hardirq.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/include/linux/hardirq.h
-===================================================================
---- linux-3.4.orig/include/linux/hardirq.h
-+++ linux-3.4/include/linux/hardirq.h
+diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h
+index cbd7c99..318d91e 100644
+--- a/include/linux/hardirq.h
++++ b/include/linux/hardirq.h
@@ -84,7 +84,7 @@
# define softirq_count() (preempt_count() & SOFTIRQ_MASK)
# define in_serving_softirq() (softirq_count() & SOFTIRQ_OFFSET)
@@ -35,3 +40,6 @@ Index: linux-3.4/include/linux/hardirq.h
extern int in_serving_softirq(void);
#endif
+--
+1.7.10.4
+
diff --git a/patches/softirq-fix-unplug-deadlock.patch b/patches/0164-softirq-Fix-unplug-deadlock.patch
index 9789c5c..de43ab8 100644
--- a/patches/softirq-fix-unplug-deadlock.patch
+++ b/patches/0164-softirq-Fix-unplug-deadlock.patch
@@ -1,10 +1,7 @@
-Subject: softirq: Fix unplug deadlock
-From: Peter Zijlstra <peterz@infradead.org>
-Date: Fri, 30 Sep 2011 15:59:16 +0200
-
-Subject: [RT] softirq: Fix unplug deadlock
+From 97d633c25fa0a630fd2aa232826ed9dbf5cdbebb Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
-Date: Fri Sep 30 15:52:14 CEST 2011
+Date: Fri, 30 Sep 2011 15:52:14 +0200
+Subject: [PATCH 164/254] softirq: Fix unplug deadlock
If ksoftirqd gets woken during hot-unplug, __thread_do_softirq() will
call pin_current_cpu() which will block on the held cpu_hotplug.lock.
@@ -30,11 +27,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/softirq.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
-Index: linux-3.4/kernel/softirq.c
-===================================================================
---- linux-3.4.orig/kernel/softirq.c
-+++ linux-3.4/kernel/softirq.c
-@@ -1078,9 +1078,8 @@ static int __cpuinit cpu_callback(struct
+diff --git a/kernel/softirq.c b/kernel/softirq.c
+index 5741cf7..d1fdb91 100644
+--- a/kernel/softirq.c
++++ b/kernel/softirq.c
+@@ -1078,9 +1078,8 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb,
int hotcpu = (unsigned long)hcpu;
struct task_struct *p;
@@ -45,7 +42,7 @@ Index: linux-3.4/kernel/softirq.c
p = kthread_create_on_node(run_ksoftirqd,
hcpu,
cpu_to_node(hotcpu),
-@@ -1093,19 +1092,16 @@ static int __cpuinit cpu_callback(struct
+@@ -1093,19 +1092,16 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb,
per_cpu(ksoftirqd, hotcpu) = p;
break;
case CPU_ONLINE:
@@ -66,3 +63,6 @@ Index: linux-3.4/kernel/softirq.c
static const struct sched_param param = {
.sched_priority = MAX_RT_PRIO-1
};
+--
+1.7.10.4
+
diff --git a/patches/softirq-disable-softirq-stacks-for-rt.patch b/patches/0165-softirq-disable-softirq-stacks-for-rt.patch.patch
index f87be58..bfbb972 100644
--- a/patches/softirq-disable-softirq-stacks-for-rt.patch
+++ b/patches/0165-softirq-disable-softirq-stacks-for-rt.patch.patch
@@ -1,6 +1,7 @@
-Subject: softirq-disable-softirq-stacks-for-rt.patch
+From c9a4a2d6a1d8de5571aeeb27718cb492d5136747 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 18 Jul 2011 13:59:17 +0200
+Subject: [PATCH 165/254] softirq-disable-softirq-stacks-for-rt.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -15,11 +16,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
include/linux/interrupt.h | 3 +--
9 files changed, 17 insertions(+), 3 deletions(-)
-Index: linux-3.4/arch/powerpc/kernel/irq.c
-===================================================================
---- linux-3.4.orig/arch/powerpc/kernel/irq.c
-+++ linux-3.4/arch/powerpc/kernel/irq.c
-@@ -523,6 +523,7 @@ void irq_ctx_init(void)
+diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
+index 641da9e..7841465 100644
+--- a/arch/powerpc/kernel/irq.c
++++ b/arch/powerpc/kernel/irq.c
+@@ -538,6 +538,7 @@ void irq_ctx_init(void)
}
}
@@ -27,7 +28,7 @@ Index: linux-3.4/arch/powerpc/kernel/irq.c
static inline void do_softirq_onstack(void)
{
struct thread_info *curtp, *irqtp;
-@@ -559,6 +560,7 @@ void do_softirq(void)
+@@ -574,6 +575,7 @@ void do_softirq(void)
local_irq_restore(flags);
}
@@ -35,10 +36,10 @@ Index: linux-3.4/arch/powerpc/kernel/irq.c
irq_hw_number_t virq_to_hw(unsigned int virq)
{
-Index: linux-3.4/arch/powerpc/kernel/misc_32.S
-===================================================================
---- linux-3.4.orig/arch/powerpc/kernel/misc_32.S
-+++ linux-3.4/arch/powerpc/kernel/misc_32.S
+diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S
+index 7cd07b4..46c6073 100644
+--- a/arch/powerpc/kernel/misc_32.S
++++ b/arch/powerpc/kernel/misc_32.S
@@ -36,6 +36,7 @@
.text
@@ -55,10 +56,10 @@ Index: linux-3.4/arch/powerpc/kernel/misc_32.S
_GLOBAL(call_handle_irq)
mflr r0
-Index: linux-3.4/arch/powerpc/kernel/misc_64.S
-===================================================================
---- linux-3.4.orig/arch/powerpc/kernel/misc_64.S
-+++ linux-3.4/arch/powerpc/kernel/misc_64.S
+diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S
+index 616921e..2961d75 100644
+--- a/arch/powerpc/kernel/misc_64.S
++++ b/arch/powerpc/kernel/misc_64.S
@@ -29,6 +29,7 @@
.text
@@ -75,10 +76,10 @@ Index: linux-3.4/arch/powerpc/kernel/misc_64.S
_GLOBAL(call_handle_irq)
ld r8,0(r6)
-Index: linux-3.4/arch/sh/kernel/irq.c
-===================================================================
---- linux-3.4.orig/arch/sh/kernel/irq.c
-+++ linux-3.4/arch/sh/kernel/irq.c
+diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c
+index a3ee919..9127bc0 100644
+--- a/arch/sh/kernel/irq.c
++++ b/arch/sh/kernel/irq.c
@@ -149,6 +149,7 @@ void irq_ctx_exit(int cpu)
hardirq_ctx[cpu] = NULL;
}
@@ -95,11 +96,11 @@ Index: linux-3.4/arch/sh/kernel/irq.c
#else
static inline void handle_one_irq(unsigned int irq)
{
-Index: linux-3.4/arch/sparc/kernel/irq_64.c
-===================================================================
---- linux-3.4.orig/arch/sparc/kernel/irq_64.c
-+++ linux-3.4/arch/sparc/kernel/irq_64.c
-@@ -698,6 +698,7 @@ void __irq_entry handler_irq(int pil, st
+diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c
+index dff2c3d..618d4c2 100644
+--- a/arch/sparc/kernel/irq_64.c
++++ b/arch/sparc/kernel/irq_64.c
+@@ -698,6 +698,7 @@ void __irq_entry handler_irq(int pil, struct pt_regs *regs)
set_irq_regs(old_regs);
}
@@ -115,10 +116,10 @@ Index: linux-3.4/arch/sparc/kernel/irq_64.c
#ifdef CONFIG_HOTPLUG_CPU
void fixup_irqs(void)
-Index: linux-3.4/arch/x86/kernel/entry_64.S
-===================================================================
---- linux-3.4.orig/arch/x86/kernel/entry_64.S
-+++ linux-3.4/arch/x86/kernel/entry_64.S
+diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
+index cdc79b5..1bfb07b 100644
+--- a/arch/x86/kernel/entry_64.S
++++ b/arch/x86/kernel/entry_64.S
@@ -1240,6 +1240,7 @@ ENTRY(kernel_execve)
CFI_ENDPROC
END(kernel_execve)
@@ -135,10 +136,10 @@ Index: linux-3.4/arch/x86/kernel/entry_64.S
#ifdef CONFIG_XEN
zeroentry xen_hypervisor_callback xen_do_hypervisor_callback
-Index: linux-3.4/arch/x86/kernel/irq_32.c
-===================================================================
---- linux-3.4.orig/arch/x86/kernel/irq_32.c
-+++ linux-3.4/arch/x86/kernel/irq_32.c
+diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c
+index 58b7f27..a7b4e1b 100644
+--- a/arch/x86/kernel/irq_32.c
++++ b/arch/x86/kernel/irq_32.c
@@ -149,6 +149,7 @@ void __cpuinit irq_ctx_init(int cpu)
cpu, per_cpu(hardirq_ctx, cpu), per_cpu(softirq_ctx, cpu));
}
@@ -155,11 +156,11 @@ Index: linux-3.4/arch/x86/kernel/irq_32.c
bool handle_irq(unsigned irq, struct pt_regs *regs)
{
-Index: linux-3.4/arch/x86/kernel/irq_64.c
-===================================================================
---- linux-3.4.orig/arch/x86/kernel/irq_64.c
-+++ linux-3.4/arch/x86/kernel/irq_64.c
-@@ -88,7 +88,7 @@ bool handle_irq(unsigned irq, struct pt_
+diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c
+index d04d3ec..831f247 100644
+--- a/arch/x86/kernel/irq_64.c
++++ b/arch/x86/kernel/irq_64.c
+@@ -88,7 +88,7 @@ bool handle_irq(unsigned irq, struct pt_regs *regs)
return true;
}
@@ -173,10 +174,10 @@ Index: linux-3.4/arch/x86/kernel/irq_64.c
local_irq_restore(flags);
}
+#endif
-Index: linux-3.4/include/linux/interrupt.h
-===================================================================
---- linux-3.4.orig/include/linux/interrupt.h
-+++ linux-3.4/include/linux/interrupt.h
+diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
+index e53bd8b..5dde591 100644
+--- a/include/linux/interrupt.h
++++ b/include/linux/interrupt.h
@@ -454,10 +454,9 @@ struct softirq_action
void (*action)(struct softirq_action *);
};
@@ -189,3 +190,6 @@ Index: linux-3.4/include/linux/interrupt.h
static inline void thread_do_softirq(void) { do_softirq(); }
#else
extern void thread_do_softirq(void);
+--
+1.7.10.4
+
diff --git a/patches/softirq-make-fifo.patch b/patches/0166-softirq-make-fifo.patch.patch
index 9226544..dd9ff03 100644
--- a/patches/softirq-make-fifo.patch
+++ b/patches/0166-softirq-make-fifo.patch.patch
@@ -1,16 +1,17 @@
-Subject: softirq-make-fifo.patch
+From e42bb604131ce7d7464718e5398bb828d01d4971 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 21 Jul 2011 21:06:43 +0200
+Subject: [PATCH 166/254] softirq-make-fifo.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/softirq.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
-Index: linux-3.4/kernel/softirq.c
-===================================================================
---- linux-3.4.orig/kernel/softirq.c
-+++ linux-3.4/kernel/softirq.c
+diff --git a/kernel/softirq.c b/kernel/softirq.c
+index d1fdb91..86561c0 100644
+--- a/kernel/softirq.c
++++ b/kernel/softirq.c
@@ -372,6 +372,8 @@ asmlinkage void do_softirq(void)
static inline void local_bh_disable_nort(void) { local_bh_disable(); }
@@ -50,7 +51,7 @@ Index: linux-3.4/kernel/softirq.c
set_current_state(TASK_INTERRUPTIBLE);
while (!kthread_should_stop()) {
-@@ -1002,6 +1020,7 @@ static int run_ksoftirqd(void * __bind_c
+@@ -1002,6 +1020,7 @@ static int run_ksoftirqd(void * __bind_cpu)
wait_to_die:
preempt_enable();
@@ -58,3 +59,6 @@ Index: linux-3.4/kernel/softirq.c
/* Wait for kthread_stop */
set_current_state(TASK_INTERRUPTIBLE);
while (!kthread_should_stop()) {
+--
+1.7.10.4
+
diff --git a/patches/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch b/patches/0167-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch
index 08ccce8..0738ca2 100644
--- a/patches/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch
+++ b/patches/0167-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch
@@ -1,6 +1,8 @@
-Subject: tasklet: Prevent tasklets from going into infinite spin in RT
+From 16e1ba12f5ccba5c7c5c9543396a86d0055532e6 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
-Date: Tue Nov 29 20:18:22 2011 -0500
+Date: Tue, 29 Nov 2011 20:18:22 -0500
+Subject: [PATCH 167/254] tasklet: Prevent tasklets from going into infinite
+ spin in RT
When CONFIG_PREEMPT_RT_FULL is enabled, tasklets run as threads,
and spinlocks turn are mutexes. But this can cause issues with
@@ -9,21 +11,21 @@ if a tasklets are disabled with tasklet_disable(), the tasklet
count is increased. When a tasklet runs, it checks this counter
and if it is set, it adds itself back on the softirq queue and
returns.
-
+
The problem arises in RT because ksoftirq will see that a softirq
is ready to run (the tasklet softirq just re-armed itself), and will
not sleep, but instead run the softirqs again. The tasklet softirq
will still see that the count is non-zero and will not execute
the tasklet and requeue itself on the softirq again, which will
cause ksoftirqd to run it again and again and again.
-
+
It gets worse because ksoftirqd runs as a real-time thread.
If it preempted the task that disabled tasklets, and that task
has migration disabled, or can't run for other reasons, the tasklet
softirq will never run because the count will never be zero, and
ksoftirqd will go into an infinite loop. As an RT task, it this
becomes a big problem.
-
+
This is a hack solution to have tasklet_disable stop tasklets, and
when a tasklet runs, instead of requeueing the tasklet softirqd
it delays it. When tasklet_enable() is called, and tasklets are
@@ -31,21 +33,20 @@ waiting, then the tasklet_enable() will kick the tasklets to continue.
This prevents the lock up from ksoftirq going into an infinite loop.
[ rostedt@goodmis.org: ported to 3.0-rt ]
-
+
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
- include/linux/interrupt.h | 39 ++++----
- kernel/softirq.c | 208 +++++++++++++++++++++++++++++++++-------------
+ include/linux/interrupt.h | 39 ++++-----
+ kernel/softirq.c | 208 ++++++++++++++++++++++++++++++++-------------
2 files changed, 170 insertions(+), 77 deletions(-)
-Index: linux-3.4/include/linux/interrupt.h
-===================================================================
---- linux-3.4.orig/include/linux/interrupt.h
-+++ linux-3.4/include/linux/interrupt.h
-@@ -511,8 +511,9 @@ extern void __send_remote_softirq(struct
+diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
+index 5dde591..be33625 100644
+--- a/include/linux/interrupt.h
++++ b/include/linux/interrupt.h
+@@ -511,8 +511,9 @@ extern void __send_remote_softirq(struct call_single_data *cp, int cpu,
to be executed on some cpu at least once after this.
* If the tasklet is already scheduled, but its execution is still not
started, it will be executed only once.
@@ -57,7 +58,7 @@ Index: linux-3.4/include/linux/interrupt.h
* Tasklet is strictly serialized wrt itself, but not
wrt another tasklets. If client needs some intertask synchronization,
he makes it with spinlocks.
-@@ -537,27 +538,36 @@ struct tasklet_struct name = { NULL, 0,
+@@ -537,27 +538,36 @@ struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(1), func, data }
enum
{
TASKLET_STATE_SCHED, /* Tasklet is scheduled for execution */
@@ -100,7 +101,7 @@ Index: linux-3.4/include/linux/interrupt.h
#define tasklet_unlock_wait(t) do { } while (0)
#define tasklet_unlock(t) do { } while (0)
#endif
-@@ -606,17 +616,8 @@ static inline void tasklet_disable(struc
+@@ -606,17 +616,8 @@ static inline void tasklet_disable(struct tasklet_struct *t)
smp_mb();
}
@@ -120,10 +121,10 @@ Index: linux-3.4/include/linux/interrupt.h
extern void tasklet_kill(struct tasklet_struct *t);
extern void tasklet_kill_immediate(struct tasklet_struct *t, unsigned int cpu);
-Index: linux-3.4/kernel/softirq.c
-===================================================================
---- linux-3.4.orig/kernel/softirq.c
-+++ linux-3.4/kernel/softirq.c
+diff --git a/kernel/softirq.c b/kernel/softirq.c
+index 86561c0..aec7d69 100644
+--- a/kernel/softirq.c
++++ b/kernel/softirq.c
@@ -21,6 +21,7 @@
#include <linux/freezer.h>
#include <linux/kthread.h>
@@ -182,7 +183,7 @@ Index: linux-3.4/kernel/softirq.c
local_irq_restore(flags);
}
-@@ -675,10 +706,7 @@ void __tasklet_hi_schedule(struct taskle
+@@ -675,10 +706,7 @@ void __tasklet_hi_schedule(struct tasklet_struct *t)
unsigned long flags;
local_irq_save(flags);
@@ -340,7 +341,7 @@ Index: linux-3.4/kernel/softirq.c
static void tasklet_hi_action(struct softirq_action *a)
{
struct tasklet_struct *list;
-@@ -740,29 +837,7 @@ static void tasklet_hi_action(struct sof
+@@ -740,29 +837,7 @@ static void tasklet_hi_action(struct softirq_action *a)
__this_cpu_write(tasklet_hi_vec.tail, &__get_cpu_var(tasklet_hi_vec).head);
local_irq_enable();
@@ -371,7 +372,7 @@ Index: linux-3.4/kernel/softirq.c
}
-@@ -785,7 +860,7 @@ void tasklet_kill(struct tasklet_struct
+@@ -785,7 +860,7 @@ void tasklet_kill(struct tasklet_struct *t)
while (test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) {
do {
@@ -404,3 +405,6 @@ Index: linux-3.4/kernel/softirq.c
static int run_ksoftirqd(void * __bind_cpu)
{
ksoftirqd_set_sched_params();
+--
+1.7.10.4
+
diff --git a/patches/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch b/patches/0168-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch
index 2d19198..53e117f 100644
--- a/patches/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch
+++ b/patches/0168-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch
@@ -1,6 +1,8 @@
-Subject: genirq: Allow disabling of softirq processing in irq thread context
+From 4b34dc0ebfc3a18eb944cb4f99f1f339828ab086 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 31 Jan 2012 13:01:27 +0100
+Subject: [PATCH 168/254] genirq: Allow disabling of softirq processing in irq
+ thread context
The processing of softirqs in irq thread context is a performance gain
for the non-rt workloads of a system, but it's counterproductive for
@@ -18,10 +20,10 @@ Cc: stable-rt@vger.kernel.org
kernel/softirq.c | 7 +++++++
5 files changed, 37 insertions(+), 2 deletions(-)
-Index: linux-3.4/include/linux/interrupt.h
-===================================================================
---- linux-3.4.orig/include/linux/interrupt.h
-+++ linux-3.4/include/linux/interrupt.h
+diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
+index be33625..773dbc9 100644
+--- a/include/linux/interrupt.h
++++ b/include/linux/interrupt.h
@@ -59,6 +59,7 @@
* IRQF_NO_THREAD - Interrupt cannot be threaded
* IRQF_EARLY_RESUME - Resume IRQ early during syscore instead of at device
@@ -38,11 +40,11 @@ Index: linux-3.4/include/linux/interrupt.h
#define IRQF_TIMER (__IRQF_TIMER | IRQF_NO_SUSPEND | IRQF_NO_THREAD)
-Index: linux-3.4/include/linux/irq.h
-===================================================================
---- linux-3.4.orig/include/linux/irq.h
-+++ linux-3.4/include/linux/irq.h
-@@ -73,6 +73,7 @@ typedef void (*irq_preflow_handler_t)(st
+diff --git a/include/linux/irq.h b/include/linux/irq.h
+index b27cfcf..496fa99 100644
+--- a/include/linux/irq.h
++++ b/include/linux/irq.h
+@@ -73,6 +73,7 @@ typedef void (*irq_preflow_handler_t)(struct irq_data *data);
* IRQ_MOVE_PCNTXT - Interrupt can be migrated from process context
* IRQ_NESTED_TRHEAD - Interrupt nests into another thread
* IRQ_PER_CPU_DEVID - Dev_id is a per-cpu variable
@@ -66,11 +68,11 @@ Index: linux-3.4/include/linux/irq.h
#define IRQ_NO_BALANCING_MASK (IRQ_PER_CPU | IRQ_NO_BALANCING)
-Index: linux-3.4/kernel/irq/manage.c
-===================================================================
---- linux-3.4.orig/kernel/irq/manage.c
-+++ linux-3.4/kernel/irq/manage.c
-@@ -749,7 +749,15 @@ irq_forced_thread_fn(struct irq_desc *de
+diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
+index 975b3a1..cd4eb0a 100644
+--- a/kernel/irq/manage.c
++++ b/kernel/irq/manage.c
+@@ -749,7 +749,15 @@ irq_forced_thread_fn(struct irq_desc *desc, struct irqaction *action)
local_bh_disable();
ret = action->thread_fn(action->irq, action->dev_id);
irq_finalize_oneshot(desc, action);
@@ -87,7 +89,7 @@ Index: linux-3.4/kernel/irq/manage.c
return ret;
}
-@@ -1071,6 +1079,9 @@ __setup_irq(unsigned int irq, struct irq
+@@ -1071,6 +1079,9 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
irqd_set(&desc->irq_data, IRQD_NO_BALANCING);
}
@@ -97,10 +99,10 @@ Index: linux-3.4/kernel/irq/manage.c
/* Set default affinity mask once everything is setup */
setup_affinity(irq, desc, mask);
-Index: linux-3.4/kernel/irq/settings.h
-===================================================================
---- linux-3.4.orig/kernel/irq/settings.h
-+++ linux-3.4/kernel/irq/settings.h
+diff --git a/kernel/irq/settings.h b/kernel/irq/settings.h
+index 1162f10..0d2c381 100644
+--- a/kernel/irq/settings.h
++++ b/kernel/irq/settings.h
@@ -14,6 +14,7 @@ enum {
_IRQ_NO_BALANCING = IRQ_NO_BALANCING,
_IRQ_NESTED_THREAD = IRQ_NESTED_THREAD,
@@ -117,7 +119,7 @@ Index: linux-3.4/kernel/irq/settings.h
#undef IRQF_MODIFY_MASK
#define IRQF_MODIFY_MASK GOT_YOU_MORON
-@@ -36,6 +38,16 @@ irq_settings_clr_and_set(struct irq_desc
+@@ -36,6 +38,16 @@ irq_settings_clr_and_set(struct irq_desc *desc, u32 clr, u32 set)
desc->status_use_accessors |= (set & _IRQF_MODIFY_MASK);
}
@@ -134,11 +136,11 @@ Index: linux-3.4/kernel/irq/settings.h
static inline bool irq_settings_is_per_cpu(struct irq_desc *desc)
{
return desc->status_use_accessors & _IRQ_PER_CPU;
-Index: linux-3.4/kernel/softirq.c
-===================================================================
---- linux-3.4.orig/kernel/softirq.c
-+++ linux-3.4/kernel/softirq.c
-@@ -425,6 +425,13 @@ void local_bh_enable_ip(unsigned long ip
+diff --git a/kernel/softirq.c b/kernel/softirq.c
+index aec7d69..35fb713 100644
+--- a/kernel/softirq.c
++++ b/kernel/softirq.c
+@@ -425,6 +425,13 @@ void local_bh_enable_ip(unsigned long ip)
}
EXPORT_SYMBOL(local_bh_enable_ip);
@@ -152,3 +154,6 @@ Index: linux-3.4/kernel/softirq.c
/* For tracing */
int notrace __in_softirq(void)
{
+--
+1.7.10.4
+
diff --git a/patches/local-vars-migrate-disable.patch b/patches/0169-local-vars-migrate-disable.patch.patch
index 92c68b8..cecfff9 100644
--- a/patches/local-vars-migrate-disable.patch
+++ b/patches/0169-local-vars-migrate-disable.patch.patch
@@ -1,16 +1,17 @@
-Subject: local-vars-migrate-disable.patch
+From abf8657c4b436e6985819f5e5ea2ea35c40024a7 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 28 Jun 2011 20:42:16 +0200
+Subject: [PATCH 169/254] local-vars-migrate-disable.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/percpu.h | 28 ++++++++++++++++++++++++----
1 file changed, 24 insertions(+), 4 deletions(-)
-Index: linux-3.4/include/linux/percpu.h
-===================================================================
---- linux-3.4.orig/include/linux/percpu.h
-+++ linux-3.4/include/linux/percpu.h
+diff --git a/include/linux/percpu.h b/include/linux/percpu.h
+index 3d13ce0..5a56f183 100644
+--- a/include/linux/percpu.h
++++ b/include/linux/percpu.h
@@ -48,10 +48,30 @@
preempt_enable(); \
} while (0)
@@ -46,3 +47,6 @@ Index: linux-3.4/include/linux/percpu.h
/* minimum unit size, also is the maximum supported allocation size */
#define PCPU_MIN_UNIT_SIZE PFN_ALIGN(32 << 10)
+--
+1.7.10.4
+
diff --git a/patches/md-raid5-percpu-handling-rt-aware.patch b/patches/0170-md-raid5-Make-raid5_percpu-handling-RT-aware.patch
index c1ee398..423a42e 100644
--- a/patches/md-raid5-percpu-handling-rt-aware.patch
+++ b/patches/0170-md-raid5-Make-raid5_percpu-handling-RT-aware.patch
@@ -1,6 +1,7 @@
+From 93a97b0d7da5b7f98e10205d691f3566a8551eac Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 6 Apr 2010 16:51:31 +0200
-Subject: md: raid5: Make raid5_percpu handling RT aware
+Subject: [PATCH 170/254] md: raid5: Make raid5_percpu handling RT aware
__raid_run_ops() disables preemption with get_cpu() around the access
to the raid5_percpu variables. That causes scheduling while atomic
@@ -12,17 +13,16 @@ preemptible.
Reported-by: Udo van den Heuvel <udovdh@xs4all.nl>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Udo van den Heuvel <udovdh@xs4all.nl>
-
---
drivers/md/raid5.c | 7 +++++--
drivers/md/raid5.h | 1 +
2 files changed, 6 insertions(+), 2 deletions(-)
-Index: linux-3.4/drivers/md/raid5.c
-===================================================================
---- linux-3.4.orig/drivers/md/raid5.c
-+++ linux-3.4/drivers/md/raid5.c
-@@ -1309,8 +1309,9 @@ static void __raid_run_ops(struct stripe
+diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
+index f351422..02e2ea3 100644
+--- a/drivers/md/raid5.c
++++ b/drivers/md/raid5.c
+@@ -1309,8 +1309,9 @@ static void __raid_run_ops(struct stripe_head *sh, unsigned long ops_request)
struct raid5_percpu *percpu;
unsigned long cpu;
@@ -33,7 +33,7 @@ Index: linux-3.4/drivers/md/raid5.c
if (test_bit(STRIPE_OP_BIOFILL, &ops_request)) {
ops_run_biofill(sh);
overlap_clear++;
-@@ -1362,7 +1363,8 @@ static void __raid_run_ops(struct stripe
+@@ -1362,7 +1363,8 @@ static void __raid_run_ops(struct stripe_head *sh, unsigned long ops_request)
if (test_and_clear_bit(R5_Overlap, &dev->flags))
wake_up(&sh->raid_conf->wait_for_overlap);
}
@@ -43,7 +43,7 @@ Index: linux-3.4/drivers/md/raid5.c
}
#ifdef CONFIG_MULTICORE_RAID456
-@@ -4758,6 +4760,7 @@ static int raid5_alloc_percpu(struct r5c
+@@ -4758,6 +4760,7 @@ static int raid5_alloc_percpu(struct r5conf *conf)
break;
}
per_cpu_ptr(conf->percpu, cpu)->scribble = scribble;
@@ -51,10 +51,10 @@ Index: linux-3.4/drivers/md/raid5.c
}
#ifdef CONFIG_HOTPLUG_CPU
conf->cpu_notify.notifier_call = raid456_cpu_notify;
-Index: linux-3.4/drivers/md/raid5.h
-===================================================================
---- linux-3.4.orig/drivers/md/raid5.h
-+++ linux-3.4/drivers/md/raid5.h
+diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h
+index 8d8e139..a784311 100644
+--- a/drivers/md/raid5.h
++++ b/drivers/md/raid5.h
@@ -417,6 +417,7 @@ struct r5conf {
int recovery_disabled;
/* per cpu variables */
@@ -63,3 +63,6 @@ Index: linux-3.4/drivers/md/raid5.h
struct page *spare_page; /* Used when checking P/Q in raid6 */
void *scribble; /* space for constructing buffer
* lists and performing address
+--
+1.7.10.4
+
diff --git a/patches/rtmutex-lock-killable.patch b/patches/0171-rtmutex-lock-killable.patch.patch
index 29e07a9..e3d0034 100644
--- a/patches/rtmutex-lock-killable.patch
+++ b/patches/0171-rtmutex-lock-killable.patch.patch
@@ -1,6 +1,7 @@
-Subject: rtmutex-lock-killable.patch
+From 7cb954ae94f931342bb795da13915aab4f1dc59a Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Thu, 09 Jun 2011 11:43:52 +0200
+Date: Thu, 9 Jun 2011 11:43:52 +0200
+Subject: [PATCH 171/254] rtmutex-lock-killable.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/rtmutex.c | 33 +++++++++++++++++++++++++++------
2 files changed, 28 insertions(+), 6 deletions(-)
-Index: linux-3.4/include/linux/rtmutex.h
-===================================================================
---- linux-3.4.orig/include/linux/rtmutex.h
-+++ linux-3.4/include/linux/rtmutex.h
-@@ -90,6 +90,7 @@ extern void rt_mutex_destroy(struct rt_m
+diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h
+index de17134..3561eb2 100644
+--- a/include/linux/rtmutex.h
++++ b/include/linux/rtmutex.h
+@@ -90,6 +90,7 @@ extern void rt_mutex_destroy(struct rt_mutex *lock);
extern void rt_mutex_lock(struct rt_mutex *lock);
extern int rt_mutex_lock_interruptible(struct rt_mutex *lock,
int detect_deadlock);
@@ -20,10 +21,10 @@ Index: linux-3.4/include/linux/rtmutex.h
extern int rt_mutex_timed_lock(struct rt_mutex *lock,
struct hrtimer_sleeper *timeout,
int detect_deadlock);
-Index: linux-3.4/kernel/rtmutex.c
-===================================================================
---- linux-3.4.orig/kernel/rtmutex.c
-+++ linux-3.4/kernel/rtmutex.c
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index a242e69..f641ce9 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
@@ -791,12 +791,12 @@ EXPORT_SYMBOL_GPL(rt_mutex_lock);
/**
* rt_mutex_lock_interruptible - lock a rt_mutex interruptible
@@ -40,7 +41,7 @@ Index: linux-3.4/kernel/rtmutex.c
* -EDEADLK when the lock would deadlock (when deadlock detection is on)
*/
int __sched rt_mutex_lock_interruptible(struct rt_mutex *lock,
-@@ -810,17 +810,38 @@ int __sched rt_mutex_lock_interruptible(
+@@ -810,17 +810,38 @@ int __sched rt_mutex_lock_interruptible(struct rt_mutex *lock,
EXPORT_SYMBOL_GPL(rt_mutex_lock_interruptible);
/**
@@ -82,3 +83,6 @@ Index: linux-3.4/kernel/rtmutex.c
* -ETIMEDOUT when the timeout expired
* -EDEADLK when the lock would deadlock (when deadlock detection is on)
*/
+--
+1.7.10.4
+
diff --git a/patches/rtmutex-futex-prepare-rt.patch b/patches/0172-rtmutex-futex-prepare-rt.patch.patch
index 564f395..4ebb39a 100644
--- a/patches/rtmutex-futex-prepare-rt.patch
+++ b/patches/0172-rtmutex-futex-prepare-rt.patch.patch
@@ -1,18 +1,19 @@
-Subject: rtmutex-futex-prepare-rt.patch
+From 3d5fbf68c9f175a2869a26d5088d39aaad97dacd Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 10 Jun 2011 11:04:15 +0200
+Subject: [PATCH 172/254] rtmutex-futex-prepare-rt.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- kernel/futex.c | 77 ++++++++++++++++++++++++++++++++++++++----------
+ kernel/futex.c | 77 ++++++++++++++++++++++++++++++++++++++---------
kernel/rtmutex.c | 31 ++++++++++++++++---
- kernel/rtmutex_common.h | 2 +
+ kernel/rtmutex_common.h | 2 ++
3 files changed, 91 insertions(+), 19 deletions(-)
-Index: linux-3.4/kernel/futex.c
-===================================================================
---- linux-3.4.orig/kernel/futex.c
-+++ linux-3.4/kernel/futex.c
+diff --git a/kernel/futex.c b/kernel/futex.c
+index e2b0fb9..9decb1c 100644
+--- a/kernel/futex.c
++++ b/kernel/futex.c
@@ -1423,6 +1423,16 @@ retry_private:
requeue_pi_wake_futex(this, &key2, hb2);
drop_count++;
@@ -30,7 +31,7 @@ Index: linux-3.4/kernel/futex.c
} else if (ret) {
/* -EDEADLK */
this->pi_state = NULL;
-@@ -2267,7 +2277,7 @@ static int futex_wait_requeue_pi(u32 __u
+@@ -2267,7 +2277,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags,
struct hrtimer_sleeper timeout, *to = NULL;
struct rt_mutex_waiter rt_waiter;
struct rt_mutex *pi_mutex = NULL;
@@ -39,7 +40,7 @@ Index: linux-3.4/kernel/futex.c
union futex_key key2 = FUTEX_KEY_INIT;
struct futex_q q = futex_q_init;
int res, ret;
-@@ -2311,20 +2321,55 @@ static int futex_wait_requeue_pi(u32 __u
+@@ -2311,20 +2321,55 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags,
/* Queue the futex_q, drop the hb lock, wait for wakeup. */
futex_wait_queue_me(hb, &q, to);
@@ -106,7 +107,7 @@ Index: linux-3.4/kernel/futex.c
/* Check if the requeue code acquired the second futex for us. */
if (!q.rt_waiter) {
-@@ -2333,9 +2378,10 @@ static int futex_wait_requeue_pi(u32 __u
+@@ -2333,9 +2378,10 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags,
* did a lock-steal - fix up the PI-state in that case.
*/
if (q.pi_state && (q.pi_state->owner != current)) {
@@ -119,7 +120,7 @@ Index: linux-3.4/kernel/futex.c
}
} else {
/*
-@@ -2348,7 +2394,8 @@ static int futex_wait_requeue_pi(u32 __u
+@@ -2348,7 +2394,8 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags,
ret = rt_mutex_finish_proxy_lock(pi_mutex, to, &rt_waiter, 1);
debug_rt_mutex_free_waiter(&rt_waiter);
@@ -129,11 +130,11 @@ Index: linux-3.4/kernel/futex.c
/*
* Fixup the pi_state owner and possibly acquire the lock if we
* haven't already.
-Index: linux-3.4/kernel/rtmutex.c
-===================================================================
---- linux-3.4.orig/kernel/rtmutex.c
-+++ linux-3.4/kernel/rtmutex.c
-@@ -67,6 +67,11 @@ static void fixup_rt_mutex_waiters(struc
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index f641ce9..1e98e24 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -67,6 +67,11 @@ static void fixup_rt_mutex_waiters(struct rt_mutex *lock)
clear_rt_mutex_waiters(lock);
}
@@ -145,7 +146,7 @@ Index: linux-3.4/kernel/rtmutex.c
/*
* We can speed up the acquire/release, if the architecture
* supports cmpxchg and if there's no debugging state to be set up
-@@ -196,7 +201,7 @@ static int rt_mutex_adjust_prio_chain(st
+@@ -196,7 +201,7 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
* reached or the state of the chain has changed while we
* dropped the locks.
*/
@@ -154,7 +155,7 @@ Index: linux-3.4/kernel/rtmutex.c
goto out_unlock_pi;
/*
-@@ -399,6 +404,23 @@ static int task_blocks_on_rt_mutex(struc
+@@ -399,6 +404,23 @@ static int task_blocks_on_rt_mutex(struct rt_mutex *lock,
int chain_walk = 0, res;
raw_spin_lock_irqsave(&task->pi_lock, flags);
@@ -178,7 +179,7 @@ Index: linux-3.4/kernel/rtmutex.c
__rt_mutex_adjust_prio(task);
waiter->task = task;
waiter->lock = lock;
-@@ -423,7 +445,7 @@ static int task_blocks_on_rt_mutex(struc
+@@ -423,7 +445,7 @@ static int task_blocks_on_rt_mutex(struct rt_mutex *lock,
plist_add(&waiter->pi_list_entry, &owner->pi_waiters);
__rt_mutex_adjust_prio(owner);
@@ -187,7 +188,7 @@ Index: linux-3.4/kernel/rtmutex.c
chain_walk = 1;
raw_spin_unlock_irqrestore(&owner->pi_lock, flags);
}
-@@ -517,7 +539,7 @@ static void remove_waiter(struct rt_mute
+@@ -517,7 +539,7 @@ static void remove_waiter(struct rt_mutex *lock,
}
__rt_mutex_adjust_prio(owner);
@@ -196,7 +197,7 @@ Index: linux-3.4/kernel/rtmutex.c
chain_walk = 1;
raw_spin_unlock_irqrestore(&owner->pi_lock, flags);
-@@ -551,7 +573,8 @@ void rt_mutex_adjust_pi(struct task_stru
+@@ -551,7 +573,8 @@ void rt_mutex_adjust_pi(struct task_struct *task)
raw_spin_lock_irqsave(&task->pi_lock, flags);
waiter = task->pi_blocked_on;
@@ -206,11 +207,11 @@ Index: linux-3.4/kernel/rtmutex.c
raw_spin_unlock_irqrestore(&task->pi_lock, flags);
return;
}
-Index: linux-3.4/kernel/rtmutex_common.h
-===================================================================
---- linux-3.4.orig/kernel/rtmutex_common.h
-+++ linux-3.4/kernel/rtmutex_common.h
-@@ -103,6 +103,8 @@ static inline struct task_struct *rt_mut
+diff --git a/kernel/rtmutex_common.h b/kernel/rtmutex_common.h
+index 53a66c8..b43d832 100644
+--- a/kernel/rtmutex_common.h
++++ b/kernel/rtmutex_common.h
+@@ -103,6 +103,8 @@ static inline struct task_struct *rt_mutex_owner(struct rt_mutex *lock)
/*
* PI-futex support (proxy locking functions, etc.):
*/
@@ -219,3 +220,6 @@ Index: linux-3.4/kernel/rtmutex_common.h
extern struct task_struct *rt_mutex_next_owner(struct rt_mutex *lock);
extern void rt_mutex_init_proxy_locked(struct rt_mutex *lock,
struct task_struct *proxy_owner);
+--
+1.7.10.4
+
diff --git a/patches/futex-requeue-pi-fix.patch b/patches/0173-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch
index cc22b0c..225682a 100644
--- a/patches/futex-requeue-pi-fix.patch
+++ b/patches/0173-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch
@@ -1,11 +1,12 @@
-Subject: futex: Fix bug on when a requeued RT task times out
+From 89de3f1d1b0c2488b7b78804ec7728d68776bda8 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <rostedt@goodmis.org>
+Date: Thu, 7 Jun 2012 07:47:03 -0400
+Subject: [PATCH 173/254] futex: Fix bug on when a requeued RT task times out
Requeue with timeout causes a bug with PREEMPT_RT_FULL.
The bug comes from a timed out condition.
-
TASK 1 TASK 2
------ ------
futex_wait_requeue_pi()
@@ -15,13 +16,12 @@ The bug comes from a timed out condition.
double_lock_hb();
raw_spin_lock(pi_lock);
- if (current->pi_blocked_on) {
+ if (current->pi_blocked_on) {
} else {
current->pi_blocked_on = PI_WAKE_INPROGRESS;
run_spin_unlock(pi_lock);
spin_lock(hb->lock); <-- blocked!
-
plist_for_each_entry_safe(this) {
rt_mutex_start_proxy_lock();
task_blocks_on_rt_mutex();
@@ -47,18 +47,16 @@ appropriately.
Cc: stable-rt@vger.kernel.org
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
-
---
kernel/rtmutex.c | 32 +++++++++++++++++++++++++++++++-
kernel/rtmutex_common.h | 1 +
2 files changed, 32 insertions(+), 1 deletion(-)
-Index: linux-3.4/kernel/rtmutex.c
-===================================================================
---- linux-3.4.orig/kernel/rtmutex.c
-+++ linux-3.4/kernel/rtmutex.c
-@@ -69,7 +69,8 @@ static void fixup_rt_mutex_waiters(struc
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index 1e98e24..7a96797 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -69,7 +69,8 @@ static void fixup_rt_mutex_waiters(struct rt_mutex *lock)
static int rt_mutex_real_waiter(struct rt_mutex_waiter *waiter)
{
@@ -68,7 +66,7 @@ Index: linux-3.4/kernel/rtmutex.c
}
/*
-@@ -1002,6 +1003,35 @@ int rt_mutex_start_proxy_lock(struct rt_
+@@ -1002,6 +1003,35 @@ int rt_mutex_start_proxy_lock(struct rt_mutex *lock,
return 1;
}
@@ -104,11 +102,11 @@ Index: linux-3.4/kernel/rtmutex.c
ret = task_blocks_on_rt_mutex(lock, waiter, task, detect_deadlock);
if (ret && !rt_mutex_owner(lock)) {
-Index: linux-3.4/kernel/rtmutex_common.h
-===================================================================
---- linux-3.4.orig/kernel/rtmutex_common.h
-+++ linux-3.4/kernel/rtmutex_common.h
-@@ -104,6 +104,7 @@ static inline struct task_struct *rt_mut
+diff --git a/kernel/rtmutex_common.h b/kernel/rtmutex_common.h
+index b43d832..47290ec 100644
+--- a/kernel/rtmutex_common.h
++++ b/kernel/rtmutex_common.h
+@@ -104,6 +104,7 @@ static inline struct task_struct *rt_mutex_owner(struct rt_mutex *lock)
* PI-futex support (proxy locking functions, etc.):
*/
#define PI_WAKEUP_INPROGRESS ((struct rt_mutex_waiter *) 1)
@@ -116,3 +114,6 @@ Index: linux-3.4/kernel/rtmutex_common.h
extern struct task_struct *rt_mutex_next_owner(struct rt_mutex *lock);
extern void rt_mutex_init_proxy_locked(struct rt_mutex *lock,
+--
+1.7.10.4
+
diff --git a/patches/rt-mutex-add-sleeping-spinlocks-support.patch b/patches/0174-rt-mutex-add-sleeping-spinlocks-support.patch.patch
index 729a51a..00aa062 100644
--- a/patches/rt-mutex-add-sleeping-spinlocks-support.patch
+++ b/patches/0174-rt-mutex-add-sleeping-spinlocks-support.patch.patch
@@ -1,19 +1,20 @@
-Subject: rt-mutex-add-sleeping-spinlocks-support.patch
+From 5e13cb03461a0bc561ad03ec3108311d741e2fe0 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 10 Jun 2011 11:21:25 +0200
+Subject: [PATCH 174/254] rt-mutex-add-sleeping-spinlocks-support.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- include/linux/rtmutex.h | 35 +++-
- kernel/futex.c | 3
- kernel/rtmutex.c | 384 +++++++++++++++++++++++++++++++++++++++++++++---
- kernel/rtmutex_common.h | 9 +
+ include/linux/rtmutex.h | 35 ++++-
+ kernel/futex.c | 3 +-
+ kernel/rtmutex.c | 384 ++++++++++++++++++++++++++++++++++++++++++++---
+ kernel/rtmutex_common.h | 9 ++
4 files changed, 404 insertions(+), 27 deletions(-)
-Index: linux-3.4/include/linux/rtmutex.h
-===================================================================
---- linux-3.4.orig/include/linux/rtmutex.h
-+++ linux-3.4/include/linux/rtmutex.h
+diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h
+index 3561eb2..928d93e 100644
+--- a/include/linux/rtmutex.h
++++ b/include/linux/rtmutex.h
@@ -29,9 +29,10 @@ struct rt_mutex {
raw_spinlock_t wait_lock;
struct plist_head wait_list;
@@ -72,11 +73,11 @@ Index: linux-3.4/include/linux/rtmutex.h
#define DEFINE_RT_MUTEX(mutexname) \
struct rt_mutex mutexname = __RT_MUTEX_INITIALIZER(mutexname)
-Index: linux-3.4/kernel/futex.c
-===================================================================
---- linux-3.4.orig/kernel/futex.c
-+++ linux-3.4/kernel/futex.c
-@@ -2299,8 +2299,7 @@ static int futex_wait_requeue_pi(u32 __u
+diff --git a/kernel/futex.c b/kernel/futex.c
+index 9decb1c..3ee96ed 100644
+--- a/kernel/futex.c
++++ b/kernel/futex.c
+@@ -2299,8 +2299,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags,
* The waiter is allocated on our stack, manipulated by the requeue
* code while we sleep on uaddr.
*/
@@ -86,10 +87,10 @@ Index: linux-3.4/kernel/futex.c
ret = get_futex_key(uaddr2, flags & FLAGS_SHARED, &key2, VERIFY_WRITE);
if (unlikely(ret != 0))
-Index: linux-3.4/kernel/rtmutex.c
-===================================================================
---- linux-3.4.orig/kernel/rtmutex.c
-+++ linux-3.4/kernel/rtmutex.c
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index 7a96797..f9baaae 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
@@ -8,6 +8,12 @@
* Copyright (C) 2005 Kihon Technologies Inc., Steven Rostedt
* Copyright (C) 2006 Esben Nielsen
@@ -103,7 +104,7 @@ Index: linux-3.4/kernel/rtmutex.c
* See Documentation/rt-mutex-design.txt for details.
*/
#include <linux/spinlock.h>
-@@ -96,6 +102,12 @@ static inline void mark_rt_mutex_waiters
+@@ -96,6 +102,12 @@ static inline void mark_rt_mutex_waiters(struct rt_mutex *lock)
}
#endif
@@ -116,7 +117,7 @@ Index: linux-3.4/kernel/rtmutex.c
/*
* Calculate task priority from the waiter list priority
*
-@@ -142,6 +154,14 @@ static void rt_mutex_adjust_prio(struct
+@@ -142,6 +154,14 @@ static void rt_mutex_adjust_prio(struct task_struct *task)
raw_spin_unlock_irqrestore(&task->pi_lock, flags);
}
@@ -131,7 +132,7 @@ Index: linux-3.4/kernel/rtmutex.c
/*
* Max number of times we'll walk the boosting chain:
*/
-@@ -253,13 +273,15 @@ static int rt_mutex_adjust_prio_chain(st
+@@ -253,13 +273,15 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
/* Release the task */
raw_spin_unlock_irqrestore(&task->pi_lock, flags);
if (!rt_mutex_owner(lock)) {
@@ -150,7 +151,7 @@ Index: linux-3.4/kernel/rtmutex.c
raw_spin_unlock(&lock->wait_lock);
goto out_put_task;
}
-@@ -304,6 +326,25 @@ static int rt_mutex_adjust_prio_chain(st
+@@ -304,6 +326,25 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
return ret;
}
@@ -176,7 +177,7 @@ Index: linux-3.4/kernel/rtmutex.c
/*
* Try to take an rt-mutex
*
-@@ -313,8 +354,9 @@ static int rt_mutex_adjust_prio_chain(st
+@@ -313,8 +354,9 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
* @task: the task which wants to acquire the lock
* @waiter: the waiter that is queued to the lock's wait list. (could be NULL)
*/
@@ -188,7 +189,7 @@ Index: linux-3.4/kernel/rtmutex.c
{
/*
* We have to be careful here if the atomic speedups are
-@@ -347,12 +389,14 @@ static int try_to_take_rt_mutex(struct r
+@@ -347,12 +389,14 @@ static int try_to_take_rt_mutex(struct rt_mutex *lock, struct task_struct *task,
* 3) it is top waiter
*/
if (rt_mutex_has_waiters(lock)) {
@@ -207,7 +208,7 @@ Index: linux-3.4/kernel/rtmutex.c
if (waiter || rt_mutex_has_waiters(lock)) {
unsigned long flags;
struct rt_mutex_waiter *top;
-@@ -377,7 +421,6 @@ static int try_to_take_rt_mutex(struct r
+@@ -377,7 +421,6 @@ static int try_to_take_rt_mutex(struct rt_mutex *lock, struct task_struct *task,
raw_spin_unlock_irqrestore(&task->pi_lock, flags);
}
@@ -215,7 +216,7 @@ Index: linux-3.4/kernel/rtmutex.c
debug_rt_mutex_lock(lock);
rt_mutex_set_owner(lock, task);
-@@ -387,6 +430,13 @@ static int try_to_take_rt_mutex(struct r
+@@ -387,6 +430,13 @@ static int try_to_take_rt_mutex(struct rt_mutex *lock, struct task_struct *task,
return 1;
}
@@ -229,7 +230,7 @@ Index: linux-3.4/kernel/rtmutex.c
/*
* Task blocks on lock.
*
-@@ -501,7 +551,7 @@ static void wakeup_next_waiter(struct rt
+@@ -501,7 +551,7 @@ static void wakeup_next_waiter(struct rt_mutex *lock)
raw_spin_unlock_irqrestore(&current->pi_lock, flags);
@@ -238,7 +239,7 @@ Index: linux-3.4/kernel/rtmutex.c
}
/*
-@@ -580,18 +630,315 @@ void rt_mutex_adjust_pi(struct task_stru
+@@ -580,18 +630,315 @@ void rt_mutex_adjust_pi(struct task_struct *task)
return;
}
@@ -557,7 +558,7 @@ Index: linux-3.4/kernel/rtmutex.c
* @timeout: the pre-initialized and started timer, or NULL for none
* @waiter: the pre-initialized rt_mutex_waiter
*
-@@ -647,9 +994,10 @@ rt_mutex_slowlock(struct rt_mutex *lock,
+@@ -647,9 +994,10 @@ rt_mutex_slowlock(struct rt_mutex *lock, int state,
struct rt_mutex_waiter waiter;
int ret = 0;
@@ -569,7 +570,7 @@ Index: linux-3.4/kernel/rtmutex.c
/* Try to acquire the lock again: */
if (try_to_take_rt_mutex(lock, current, NULL)) {
-@@ -702,6 +1050,7 @@ rt_mutex_slowtrylock(struct rt_mutex *lo
+@@ -702,6 +1050,7 @@ rt_mutex_slowtrylock(struct rt_mutex *lock)
int ret = 0;
raw_spin_lock(&lock->wait_lock);
@@ -600,10 +601,10 @@ Index: linux-3.4/kernel/rtmutex.c
debug_rt_mutex_proxy_lock(lock, proxy_owner);
rt_mutex_set_owner(lock, proxy_owner);
rt_mutex_deadlock_account_lock(lock, proxy_owner);
-Index: linux-3.4/kernel/rtmutex_common.h
-===================================================================
---- linux-3.4.orig/kernel/rtmutex_common.h
-+++ linux-3.4/kernel/rtmutex_common.h
+diff --git a/kernel/rtmutex_common.h b/kernel/rtmutex_common.h
+index 47290ec..6ec3dc1 100644
+--- a/kernel/rtmutex_common.h
++++ b/kernel/rtmutex_common.h
@@ -49,6 +49,7 @@ struct rt_mutex_waiter {
struct plist_node pi_list_entry;
struct task_struct *task;
@@ -612,7 +613,7 @@ Index: linux-3.4/kernel/rtmutex_common.h
#ifdef CONFIG_DEBUG_RT_MUTEXES
unsigned long ip;
struct pid *deadlock_task_pid;
-@@ -126,4 +127,12 @@ extern int rt_mutex_finish_proxy_lock(st
+@@ -126,4 +127,12 @@ extern int rt_mutex_finish_proxy_lock(struct rt_mutex *lock,
# include "rtmutex.h"
#endif
@@ -625,3 +626,6 @@ Index: linux-3.4/kernel/rtmutex_common.h
+}
+
#endif
+--
+1.7.10.4
+
diff --git a/patches/spinlock-types-separate-raw.patch b/patches/0175-spinlock-types-separate-raw.patch.patch
index e7ebba1..efa2619 100644
--- a/patches/spinlock-types-separate-raw.patch
+++ b/patches/0175-spinlock-types-separate-raw.patch.patch
@@ -1,19 +1,22 @@
-Subject: spinlock-types-separate-raw.patch
+From 6ef5af49045a61ce49c11fbd9f9f8c7d05103d3e Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 29 Jun 2011 19:34:01 +0200
+Subject: [PATCH 175/254] spinlock-types-separate-raw.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- include/linux/rwlock_types.h | 4 +
- include/linux/spinlock_types.h | 74 ------------------------------------
+ include/linux/rwlock_types.h | 4 ++
+ include/linux/spinlock_types.h | 74 +----------------------------------
include/linux/spinlock_types_nort.h | 33 ++++++++++++++++
- include/linux/spinlock_types_raw.h | 56 +++++++++++++++++++++++++++
+ include/linux/spinlock_types_raw.h | 56 ++++++++++++++++++++++++++
4 files changed, 95 insertions(+), 72 deletions(-)
+ create mode 100644 include/linux/spinlock_types_nort.h
+ create mode 100644 include/linux/spinlock_types_raw.h
-Index: linux-3.4/include/linux/rwlock_types.h
-===================================================================
---- linux-3.4.orig/include/linux/rwlock_types.h
-+++ linux-3.4/include/linux/rwlock_types.h
+diff --git a/include/linux/rwlock_types.h b/include/linux/rwlock_types.h
+index cc0072e..5317cd9 100644
+--- a/include/linux/rwlock_types.h
++++ b/include/linux/rwlock_types.h
@@ -1,6 +1,10 @@
#ifndef __LINUX_RWLOCK_TYPES_H
#define __LINUX_RWLOCK_TYPES_H
@@ -25,10 +28,10 @@ Index: linux-3.4/include/linux/rwlock_types.h
/*
* include/linux/rwlock_types.h - generic rwlock type definitions
* and initializers
-Index: linux-3.4/include/linux/spinlock_types.h
-===================================================================
---- linux-3.4.orig/include/linux/spinlock_types.h
-+++ linux-3.4/include/linux/spinlock_types.h
+diff --git a/include/linux/spinlock_types.h b/include/linux/spinlock_types.h
+index 73548eb..5c8664d 100644
+--- a/include/linux/spinlock_types.h
++++ b/include/linux/spinlock_types.h
@@ -9,79 +9,9 @@
* Released under the General Public License (GPL).
*/
@@ -111,10 +114,11 @@ Index: linux-3.4/include/linux/spinlock_types.h
#include <linux/rwlock_types.h>
-Index: linux-3.4/include/linux/spinlock_types_nort.h
-===================================================================
+diff --git a/include/linux/spinlock_types_nort.h b/include/linux/spinlock_types_nort.h
+new file mode 100644
+index 0000000..f1dac1f
--- /dev/null
-+++ linux-3.4/include/linux/spinlock_types_nort.h
++++ b/include/linux/spinlock_types_nort.h
@@ -0,0 +1,33 @@
+#ifndef __LINUX_SPINLOCK_TYPES_NORT_H
+#define __LINUX_SPINLOCK_TYPES_NORT_H
@@ -149,10 +153,11 @@ Index: linux-3.4/include/linux/spinlock_types_nort.h
+#define DEFINE_SPINLOCK(x) spinlock_t x = __SPIN_LOCK_UNLOCKED(x)
+
+#endif
-Index: linux-3.4/include/linux/spinlock_types_raw.h
-===================================================================
+diff --git a/include/linux/spinlock_types_raw.h b/include/linux/spinlock_types_raw.h
+new file mode 100644
+index 0000000..edffc4d
--- /dev/null
-+++ linux-3.4/include/linux/spinlock_types_raw.h
++++ b/include/linux/spinlock_types_raw.h
@@ -0,0 +1,56 @@
+#ifndef __LINUX_SPINLOCK_TYPES_RAW_H
+#define __LINUX_SPINLOCK_TYPES_RAW_H
@@ -210,3 +215,6 @@ Index: linux-3.4/include/linux/spinlock_types_raw.h
+#define DEFINE_RAW_SPINLOCK(x) raw_spinlock_t x = __RAW_SPIN_LOCK_UNLOCKED(x)
+
+#endif
+--
+1.7.10.4
+
diff --git a/patches/rtmutex-avoid-include-hell.patch b/patches/0176-rtmutex-avoid-include-hell.patch.patch
index 6a06ee7..5b6396e 100644
--- a/patches/rtmutex-avoid-include-hell.patch
+++ b/patches/0176-rtmutex-avoid-include-hell.patch.patch
@@ -1,16 +1,17 @@
-Subject: rtmutex-avoid-include-hell.patch
+From 2851b5924eb0b22bcb2a6a70f1c8aae250dd256f Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 29 Jun 2011 20:06:39 +0200
+Subject: [PATCH 176/254] rtmutex-avoid-include-hell.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/rtmutex.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/include/linux/rtmutex.h
-===================================================================
---- linux-3.4.orig/include/linux/rtmutex.h
-+++ linux-3.4/include/linux/rtmutex.h
+diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h
+index 928d93e..5ebd0bb 100644
+--- a/include/linux/rtmutex.h
++++ b/include/linux/rtmutex.h
@@ -14,7 +14,7 @@
#include <linux/linkage.h>
@@ -20,3 +21,6 @@ Index: linux-3.4/include/linux/rtmutex.h
extern int max_lock_depth; /* for sysctl */
+--
+1.7.10.4
+
diff --git a/patches/rt-add-rt-spinlock-to-headers.patch b/patches/0177-rt-add-rt-spinlocks.patch.patch
index b15a244..7c4b93b 100644
--- a/patches/rt-add-rt-spinlock-to-headers.patch
+++ b/patches/0177-rt-add-rt-spinlocks.patch.patch
@@ -1,18 +1,22 @@
-Subject: rt-add-rt-spinlocks.patch
+From fb608d0c600f6332a56c08f77afe4691d99dd487 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 29 Jun 2011 19:43:35 +0200
+Subject: [PATCH 177/254] rt-add-rt-spinlocks.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/rwlock_types_rt.h | 33 +++++++++++++++++++++++++
- include/linux/spinlock_types.h | 11 ++++++--
- include/linux/spinlock_types_rt.h | 49 ++++++++++++++++++++++++++++++++++++++
+ include/linux/spinlock_types.h | 11 ++++++---
+ include/linux/spinlock_types_rt.h | 49 +++++++++++++++++++++++++++++++++++++
3 files changed, 90 insertions(+), 3 deletions(-)
+ create mode 100644 include/linux/rwlock_types_rt.h
+ create mode 100644 include/linux/spinlock_types_rt.h
-Index: linux-3.4/include/linux/rwlock_types_rt.h
-===================================================================
+diff --git a/include/linux/rwlock_types_rt.h b/include/linux/rwlock_types_rt.h
+new file mode 100644
+index 0000000..b138321
--- /dev/null
-+++ linux-3.4/include/linux/rwlock_types_rt.h
++++ b/include/linux/rwlock_types_rt.h
@@ -0,0 +1,33 @@
+#ifndef __LINUX_RWLOCK_TYPES_RT_H
+#define __LINUX_RWLOCK_TYPES_RT_H
@@ -47,10 +51,10 @@ Index: linux-3.4/include/linux/rwlock_types_rt.h
+ rwlock_t name __cacheline_aligned_in_smp = __RW_LOCK_UNLOCKED(name)
+
+#endif
-Index: linux-3.4/include/linux/spinlock_types.h
-===================================================================
---- linux-3.4.orig/include/linux/spinlock_types.h
-+++ linux-3.4/include/linux/spinlock_types.h
+diff --git a/include/linux/spinlock_types.h b/include/linux/spinlock_types.h
+index 5c8664d..10bac71 100644
+--- a/include/linux/spinlock_types.h
++++ b/include/linux/spinlock_types.h
@@ -11,8 +11,13 @@
#include <linux/spinlock_types_raw.h>
@@ -68,10 +72,11 @@ Index: linux-3.4/include/linux/spinlock_types.h
+#endif
#endif /* __LINUX_SPINLOCK_TYPES_H */
-Index: linux-3.4/include/linux/spinlock_types_rt.h
-===================================================================
+diff --git a/include/linux/spinlock_types_rt.h b/include/linux/spinlock_types_rt.h
+new file mode 100644
+index 0000000..1fe8fc0
--- /dev/null
-+++ linux-3.4/include/linux/spinlock_types_rt.h
++++ b/include/linux/spinlock_types_rt.h
@@ -0,0 +1,49 @@
+#ifndef __LINUX_SPINLOCK_TYPES_RT_H
+#define __LINUX_SPINLOCK_TYPES_RT_H
@@ -122,3 +127,6 @@ Index: linux-3.4/include/linux/spinlock_types_rt.h
+ spinlock_t name __cacheline_aligned_in_smp = __SPIN_LOCK_UNLOCKED(name)
+
+#endif
+--
+1.7.10.4
+
diff --git a/patches/rt-add-rt-to-mutex-headers.patch b/patches/0178-rt-add-rt-to-mutex-headers.patch.patch
index cb0f6b8..3b3b2b5 100644
--- a/patches/rt-add-rt-to-mutex-headers.patch
+++ b/patches/0178-rt-add-rt-to-mutex-headers.patch.patch
@@ -1,17 +1,19 @@
-Subject: rt-add-rt-to-mutex-headers.patch
+From bc08c18230d93db55420200759871e7a2cb929a6 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 29 Jun 2011 20:56:22 +0200
+Subject: [PATCH 178/254] rt-add-rt-to-mutex-headers.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- include/linux/mutex.h | 21 +++++++----
- include/linux/mutex_rt.h | 84 +++++++++++++++++++++++++++++++++++++++++++++++
+ include/linux/mutex.h | 21 ++++++++----
+ include/linux/mutex_rt.h | 84 ++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 98 insertions(+), 7 deletions(-)
+ create mode 100644 include/linux/mutex_rt.h
-Index: linux-3.4/include/linux/mutex.h
-===================================================================
---- linux-3.4.orig/include/linux/mutex.h
-+++ linux-3.4/include/linux/mutex.h
+diff --git a/include/linux/mutex.h b/include/linux/mutex.h
+index 9121595..bdf1da2 100644
+--- a/include/linux/mutex.h
++++ b/include/linux/mutex.h
@@ -17,6 +17,17 @@
#include <linux/atomic.h>
@@ -44,7 +46,7 @@ Index: linux-3.4/include/linux/mutex.h
#define __MUTEX_INITIALIZER(lockname) \
{ .count = ATOMIC_INIT(1) \
, .wait_lock = __SPIN_LOCK_UNLOCKED(lockname.wait_lock) \
-@@ -167,6 +171,9 @@ extern int __must_check mutex_lock_killa
+@@ -167,6 +171,9 @@ extern int __must_check mutex_lock_killable(struct mutex *lock);
*/
extern int mutex_trylock(struct mutex *lock);
extern void mutex_unlock(struct mutex *lock);
@@ -54,10 +56,11 @@ Index: linux-3.4/include/linux/mutex.h
extern int atomic_dec_and_mutex_lock(atomic_t *cnt, struct mutex *lock);
#ifndef CONFIG_HAVE_ARCH_MUTEX_CPU_RELAX
-Index: linux-3.4/include/linux/mutex_rt.h
-===================================================================
+diff --git a/include/linux/mutex_rt.h b/include/linux/mutex_rt.h
+new file mode 100644
+index 0000000..c38a44b
--- /dev/null
-+++ linux-3.4/include/linux/mutex_rt.h
++++ b/include/linux/mutex_rt.h
@@ -0,0 +1,84 @@
+#ifndef __LINUX_MUTEX_RT_H
+#define __LINUX_MUTEX_RT_H
@@ -143,3 +146,6 @@ Index: linux-3.4/include/linux/mutex_rt.h
+} while (0)
+
+#endif
+--
+1.7.10.4
+
diff --git a/patches/rwsem-add-rt-variant.patch b/patches/0179-rwsem-add-rt-variant.patch.patch
index c3c44e1..24ea424 100644
--- a/patches/rwsem-add-rt-variant.patch
+++ b/patches/0179-rwsem-add-rt-variant.patch.patch
@@ -1,18 +1,20 @@
-Subject: rwsem-add-rt-variant.patch
+From c6907cecffe8ee349ebed3c0f6a523a478edc4c7 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 29 Jun 2011 21:02:53 +0200
+Subject: [PATCH 179/254] rwsem-add-rt-variant.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- include/linux/rwsem.h | 6 ++
- include/linux/rwsem_rt.h | 105 +++++++++++++++++++++++++++++++++++++++++++++++
- lib/Makefile | 3 +
+ include/linux/rwsem.h | 6 +++
+ include/linux/rwsem_rt.h | 105 ++++++++++++++++++++++++++++++++++++++++++++++
+ lib/Makefile | 3 ++
3 files changed, 114 insertions(+)
+ create mode 100644 include/linux/rwsem_rt.h
-Index: linux-3.4/include/linux/rwsem.h
-===================================================================
---- linux-3.4.orig/include/linux/rwsem.h
-+++ linux-3.4/include/linux/rwsem.h
+diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h
+index 54bd7cd..3f7df4a 100644
+--- a/include/linux/rwsem.h
++++ b/include/linux/rwsem.h
@@ -16,6 +16,10 @@
#include <linux/atomic.h>
@@ -24,17 +26,18 @@ Index: linux-3.4/include/linux/rwsem.h
struct rw_semaphore;
#ifdef CONFIG_RWSEM_GENERIC_SPINLOCK
-@@ -130,4 +134,6 @@ extern void down_write_nested(struct rw_
+@@ -130,4 +134,6 @@ extern void down_write_nested(struct rw_semaphore *sem, int subclass);
# define down_write_nested(sem, subclass) down_write(sem)
#endif
+#endif /* !PREEMPT_RT_FULL */
+
#endif /* _LINUX_RWSEM_H */
-Index: linux-3.4/include/linux/rwsem_rt.h
-===================================================================
+diff --git a/include/linux/rwsem_rt.h b/include/linux/rwsem_rt.h
+new file mode 100644
+index 0000000..802c690
--- /dev/null
-+++ linux-3.4/include/linux/rwsem_rt.h
++++ b/include/linux/rwsem_rt.h
@@ -0,0 +1,105 @@
+#ifndef _LINUX_RWSEM_RT_H
+#define _LINUX_RWSEM_RT_H
@@ -141,11 +144,11 @@ Index: linux-3.4/include/linux/rwsem_rt.h
+}
+
+#endif
-Index: linux-3.4/lib/Makefile
-===================================================================
---- linux-3.4.orig/lib/Makefile
-+++ linux-3.4/lib/Makefile
-@@ -38,8 +38,11 @@ obj-$(CONFIG_HAS_IOMEM) += iomap_copy.o
+diff --git a/lib/Makefile b/lib/Makefile
+index 18515f0..a8da407 100644
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -38,8 +38,11 @@ obj-$(CONFIG_HAS_IOMEM) += iomap_copy.o devres.o
obj-$(CONFIG_CHECK_SIGNATURE) += check_signature.o
obj-$(CONFIG_DEBUG_LOCKING_API_SELFTESTS) += locking-selftest.o
obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock_debug.o
@@ -157,3 +160,6 @@ Index: linux-3.4/lib/Makefile
CFLAGS_hweight.o = $(subst $(quote),,$(CONFIG_ARCH_HWEIGHT_CFLAGS))
obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o
+--
+1.7.10.4
+
diff --git a/patches/rt-add-rt-locks.patch b/patches/0180-rt-Add-the-preempt-rt-lock-replacement-APIs.patch
index db1a4ec..b661226 100644
--- a/patches/rt-add-rt-locks.patch
+++ b/patches/0180-rt-Add-the-preempt-rt-lock-replacement-APIs.patch
@@ -1,27 +1,31 @@
+From e3c4bf3991c02c7be02a1faee4678dd462a86f06 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 26 Jul 2009 19:39:56 +0200
-Subject: rt: Add the preempt-rt lock replacement APIs
+Subject: [PATCH 180/254] rt: Add the preempt-rt lock replacement APIs
Map spinlocks, rwlocks, rw_semaphores and semaphores to the rt_mutex
based locking functions for preempt-rt.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
- include/linux/rwlock_rt.h | 123 ++++++++++
- include/linux/spinlock.h | 12 -
- include/linux/spinlock_api_smp.h | 4
- include/linux/spinlock_rt.h | 156 +++++++++++++
- kernel/Makefile | 9
- kernel/rt.c | 442 +++++++++++++++++++++++++++++++++++++++
- kernel/spinlock.c | 7
- lib/spinlock_debug.c | 5
+ include/linux/rwlock_rt.h | 123 +++++++++++
+ include/linux/spinlock.h | 12 +-
+ include/linux/spinlock_api_smp.h | 4 +-
+ include/linux/spinlock_rt.h | 156 ++++++++++++++
+ kernel/Makefile | 9 +-
+ kernel/rt.c | 442 ++++++++++++++++++++++++++++++++++++++
+ kernel/spinlock.c | 7 +
+ lib/spinlock_debug.c | 5 +
8 files changed, 754 insertions(+), 4 deletions(-)
+ create mode 100644 include/linux/rwlock_rt.h
+ create mode 100644 include/linux/spinlock_rt.h
+ create mode 100644 kernel/rt.c
-Index: linux-3.4/include/linux/rwlock_rt.h
-===================================================================
+diff --git a/include/linux/rwlock_rt.h b/include/linux/rwlock_rt.h
+new file mode 100644
+index 0000000..853ee36
--- /dev/null
-+++ linux-3.4/include/linux/rwlock_rt.h
++++ b/include/linux/rwlock_rt.h
@@ -0,0 +1,123 @@
+#ifndef __LINUX_RWLOCK_RT_H
+#define __LINUX_RWLOCK_RT_H
@@ -146,11 +150,11 @@ Index: linux-3.4/include/linux/rwlock_rt.h
+ } while (0)
+
+#endif
-Index: linux-3.4/include/linux/spinlock.h
-===================================================================
---- linux-3.4.orig/include/linux/spinlock.h
-+++ linux-3.4/include/linux/spinlock.h
-@@ -254,7 +254,11 @@ static inline void do_raw_spin_unlock(ra
+diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h
+index 7d537ce..0c11a7c 100644
+--- a/include/linux/spinlock.h
++++ b/include/linux/spinlock.h
+@@ -254,7 +254,11 @@ static inline void do_raw_spin_unlock(raw_spinlock_t *lock) __releases(lock)
#define raw_spin_can_lock(lock) (!raw_spin_is_locked(lock))
/* Include rwlock functions */
@@ -163,7 +167,7 @@ Index: linux-3.4/include/linux/spinlock.h
/*
* Pull the _spin_*()/_read_*()/_write_*() functions/declarations:
-@@ -265,6 +269,10 @@ static inline void do_raw_spin_unlock(ra
+@@ -265,6 +269,10 @@ static inline void do_raw_spin_unlock(raw_spinlock_t *lock) __releases(lock)
# include <linux/spinlock_api_up.h>
#endif
@@ -174,18 +178,18 @@ Index: linux-3.4/include/linux/spinlock.h
/*
* Map the spin_lock functions to the raw variants for PREEMPT_RT=n
*/
-@@ -394,4 +402,6 @@ extern int _atomic_dec_and_lock(atomic_t
+@@ -394,4 +402,6 @@ extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock);
#define atomic_dec_and_lock(atomic, lock) \
__cond_lock(lock, _atomic_dec_and_lock(atomic, lock))
+#endif /* !PREEMPT_RT_FULL */
+
#endif /* __LINUX_SPINLOCK_H */
-Index: linux-3.4/include/linux/spinlock_api_smp.h
-===================================================================
---- linux-3.4.orig/include/linux/spinlock_api_smp.h
-+++ linux-3.4/include/linux/spinlock_api_smp.h
-@@ -191,6 +191,8 @@ static inline int __raw_spin_trylock_bh(
+diff --git a/include/linux/spinlock_api_smp.h b/include/linux/spinlock_api_smp.h
+index 51df117..3f68f50 100644
+--- a/include/linux/spinlock_api_smp.h
++++ b/include/linux/spinlock_api_smp.h
+@@ -191,6 +191,8 @@ static inline int __raw_spin_trylock_bh(raw_spinlock_t *lock)
return 0;
}
@@ -195,10 +199,11 @@ Index: linux-3.4/include/linux/spinlock_api_smp.h
+#endif
#endif /* __LINUX_SPINLOCK_API_SMP_H */
-Index: linux-3.4/include/linux/spinlock_rt.h
-===================================================================
+diff --git a/include/linux/spinlock_rt.h b/include/linux/spinlock_rt.h
+new file mode 100644
+index 0000000..205ca95
--- /dev/null
-+++ linux-3.4/include/linux/spinlock_rt.h
++++ b/include/linux/spinlock_rt.h
@@ -0,0 +1,156 @@
+#ifndef __LINUX_SPINLOCK_RT_H
+#define __LINUX_SPINLOCK_RT_H
@@ -356,11 +361,11 @@ Index: linux-3.4/include/linux/spinlock_rt.h
+ atomic_dec_and_spin_lock(atomic, lock)
+
+#endif
-Index: linux-3.4/kernel/Makefile
-===================================================================
---- linux-3.4.orig/kernel/Makefile
-+++ linux-3.4/kernel/Makefile
-@@ -7,8 +7,8 @@ obj-y = fork.o exec_domain.o panic.o
+diff --git a/kernel/Makefile b/kernel/Makefile
+index cb41b95..f4bf68a 100644
+--- a/kernel/Makefile
++++ b/kernel/Makefile
+@@ -7,8 +7,8 @@ obj-y = fork.o exec_domain.o panic.o printk.o \
sysctl.o sysctl_binary.o capability.o ptrace.o timer.o user.o \
signal.o sys.o kmod.o workqueue.o pid.o \
rcupdate.o extable.o params.o posix-timers.o \
@@ -391,10 +396,11 @@ Index: linux-3.4/kernel/Makefile
obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o
obj-$(CONFIG_SMP) += smp.o
ifneq ($(CONFIG_SMP),y)
-Index: linux-3.4/kernel/rt.c
-===================================================================
+diff --git a/kernel/rt.c b/kernel/rt.c
+new file mode 100644
+index 0000000..092d6b3
--- /dev/null
-+++ linux-3.4/kernel/rt.c
++++ b/kernel/rt.c
@@ -0,0 +1,442 @@
+/*
+ * kernel/rt.c
@@ -838,11 +844,11 @@ Index: linux-3.4/kernel/rt.c
+ return 1;
+}
+EXPORT_SYMBOL(atomic_dec_and_mutex_lock);
-Index: linux-3.4/kernel/spinlock.c
-===================================================================
---- linux-3.4.orig/kernel/spinlock.c
-+++ linux-3.4/kernel/spinlock.c
-@@ -110,8 +110,11 @@ void __lockfunc __raw_##op##_lock_bh(loc
+diff --git a/kernel/spinlock.c b/kernel/spinlock.c
+index 5cdd806..da9775b 100644
+--- a/kernel/spinlock.c
++++ b/kernel/spinlock.c
+@@ -110,8 +110,11 @@ void __lockfunc __raw_##op##_lock_bh(locktype##_t *lock) \
* __[spin|read|write]_lock_bh()
*/
BUILD_LOCK_OPS(spin, raw_spinlock);
@@ -854,7 +860,7 @@ Index: linux-3.4/kernel/spinlock.c
#endif
-@@ -195,6 +198,8 @@ void __lockfunc _raw_spin_unlock_bh(raw_
+@@ -195,6 +198,8 @@ void __lockfunc _raw_spin_unlock_bh(raw_spinlock_t *lock)
EXPORT_SYMBOL(_raw_spin_unlock_bh);
#endif
@@ -863,7 +869,7 @@ Index: linux-3.4/kernel/spinlock.c
#ifndef CONFIG_INLINE_READ_TRYLOCK
int __lockfunc _raw_read_trylock(rwlock_t *lock)
{
-@@ -339,6 +344,8 @@ void __lockfunc _raw_write_unlock_bh(rwl
+@@ -339,6 +344,8 @@ void __lockfunc _raw_write_unlock_bh(rwlock_t *lock)
EXPORT_SYMBOL(_raw_write_unlock_bh);
#endif
@@ -872,11 +878,11 @@ Index: linux-3.4/kernel/spinlock.c
#ifdef CONFIG_DEBUG_LOCK_ALLOC
void __lockfunc _raw_spin_lock_nested(raw_spinlock_t *lock, int subclass)
-Index: linux-3.4/lib/spinlock_debug.c
-===================================================================
---- linux-3.4.orig/lib/spinlock_debug.c
-+++ linux-3.4/lib/spinlock_debug.c
-@@ -31,6 +31,7 @@ void __raw_spin_lock_init(raw_spinlock_t
+diff --git a/lib/spinlock_debug.c b/lib/spinlock_debug.c
+index 525d160..5f5eae5 100644
+--- a/lib/spinlock_debug.c
++++ b/lib/spinlock_debug.c
+@@ -31,6 +31,7 @@ void __raw_spin_lock_init(raw_spinlock_t *lock, const char *name,
EXPORT_SYMBOL(__raw_spin_lock_init);
@@ -884,7 +890,7 @@ Index: linux-3.4/lib/spinlock_debug.c
void __rwlock_init(rwlock_t *lock, const char *name,
struct lock_class_key *key)
{
-@@ -48,6 +49,7 @@ void __rwlock_init(rwlock_t *lock, const
+@@ -48,6 +49,7 @@ void __rwlock_init(rwlock_t *lock, const char *name,
}
EXPORT_SYMBOL(__rwlock_init);
@@ -892,7 +898,7 @@ Index: linux-3.4/lib/spinlock_debug.c
static void spin_dump(raw_spinlock_t *lock, const char *msg)
{
-@@ -155,6 +157,7 @@ void do_raw_spin_unlock(raw_spinlock_t *
+@@ -155,6 +157,7 @@ void do_raw_spin_unlock(raw_spinlock_t *lock)
arch_spin_unlock(&lock->raw_lock);
}
@@ -906,3 +912,6 @@ Index: linux-3.4/lib/spinlock_debug.c
}
+
+#endif
+--
+1.7.10.4
+
diff --git a/patches/tasklist-lock-fix-section-conflict.patch b/patches/0181-rwlocks-Fix-section-mismatch.patch
index 82be75d..97b3575 100644
--- a/patches/tasklist-lock-fix-section-conflict.patch
+++ b/patches/0181-rwlocks-Fix-section-mismatch.patch
@@ -1,12 +1,16 @@
-Subject: rwlocks: Fix section mismatch
+From e756ad41f643e72d9cf513e41176d367942d362e Mon Sep 17 00:00:00 2001
From: John Kacur <jkacur@redhat.com>
-Date: Mon, 19 Sep 2011 11:09:27 +0200 (CEST)
+Date: Mon, 19 Sep 2011 11:09:27 +0200
+Subject: [PATCH 181/254] rwlocks: Fix section mismatch
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
This fixes the following build error for the preempt-rt kernel.
make kernel/fork.o
CC kernel/fork.o
-kernel/fork.c:90: error: section of ¡tasklist_lock¢ conflicts with previous declaration
+kernel/fork.c:90: error: section of ¡tasklist_lock¢ conflicts with previous declaration
make[2]: *** [kernel/fork.o] Error 1
make[1]: *** [kernel/fork.o] Error 2
@@ -33,10 +37,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/fork.c | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
-Index: linux-3.4/include/linux/rwlock_types.h
-===================================================================
---- linux-3.4.orig/include/linux/rwlock_types.h
-+++ linux-3.4/include/linux/rwlock_types.h
+diff --git a/include/linux/rwlock_types.h b/include/linux/rwlock_types.h
+index 5317cd9..d0da966 100644
+--- a/include/linux/rwlock_types.h
++++ b/include/linux/rwlock_types.h
@@ -47,6 +47,7 @@ typedef struct {
RW_DEP_MAP_INIT(lockname) }
#endif
@@ -46,11 +50,11 @@ Index: linux-3.4/include/linux/rwlock_types.h
+ rwlock_t name __cacheline_aligned_in_smp = __RW_LOCK_UNLOCKED(name)
#endif /* __LINUX_RWLOCK_TYPES_H */
-Index: linux-3.4/kernel/fork.c
-===================================================================
---- linux-3.4.orig/kernel/fork.c
-+++ linux-3.4/kernel/fork.c
-@@ -90,7 +90,7 @@ int max_threads; /* tunable limit on nr
+diff --git a/kernel/fork.c b/kernel/fork.c
+index f5d609a..97041ae 100644
+--- a/kernel/fork.c
++++ b/kernel/fork.c
+@@ -91,7 +91,7 @@ int max_threads; /* tunable limit on nr_threads */
DEFINE_PER_CPU(unsigned long, process_counts) = 0;
@@ -59,3 +63,6 @@ Index: linux-3.4/kernel/fork.c
#ifdef CONFIG_PROVE_RCU
int lockdep_tasklist_lock_is_held(void)
+--
+1.7.10.4
+
diff --git a/patches/timer-handle-idle-trylock-in-get-next-timer-irq.patch b/patches/0182-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch
index 4762fae..caa3946 100644
--- a/patches/timer-handle-idle-trylock-in-get-next-timer-irq.patch
+++ b/patches/0182-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch
@@ -1,6 +1,7 @@
-Subject: timer-handle-idle-trylock-in-get-next-timer-irq.patch
+From 07bee10d53f7420f05d560156a245ed8ab9dd89b Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 17 Jul 2011 22:08:38 +0200
+Subject: [PATCH 182/254] timer-handle-idle-trylock-in-get-next-timer-irq.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -9,11 +10,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/timer.c | 7 ++++---
3 files changed, 16 insertions(+), 10 deletions(-)
-Index: linux-3.4/include/linux/spinlock_rt.h
-===================================================================
---- linux-3.4.orig/include/linux/spinlock_rt.h
-+++ linux-3.4/include/linux/spinlock_rt.h
-@@ -51,7 +51,17 @@ extern void __lockfunc __rt_spin_unlock(
+diff --git a/include/linux/spinlock_rt.h b/include/linux/spinlock_rt.h
+index 205ca95..3b555b4 100644
+--- a/include/linux/spinlock_rt.h
++++ b/include/linux/spinlock_rt.h
+@@ -51,7 +51,17 @@ extern void __lockfunc __rt_spin_unlock(struct rt_mutex *lock);
#define spin_lock_irq(lock) spin_lock(lock)
@@ -32,10 +33,10 @@ Index: linux-3.4/include/linux/spinlock_rt.h
#ifdef CONFIG_LOCKDEP
# define spin_lock_nested(lock, subclass) \
-Index: linux-3.4/kernel/rtmutex.c
-===================================================================
---- linux-3.4.orig/kernel/rtmutex.c
-+++ linux-3.4/kernel/rtmutex.c
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index f9baaae..921c90b 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
@@ -861,15 +861,10 @@ EXPORT_SYMBOL(rt_spin_unlock_wait);
int __lockfunc rt_spin_trylock(spinlock_t *lock)
@@ -53,11 +54,11 @@ Index: linux-3.4/kernel/rtmutex.c
return ret;
}
EXPORT_SYMBOL(rt_spin_trylock);
-Index: linux-3.4/kernel/timer.c
-===================================================================
---- linux-3.4.orig/kernel/timer.c
-+++ linux-3.4/kernel/timer.c
-@@ -1373,13 +1373,14 @@ unsigned long get_next_timer_interrupt(u
+diff --git a/kernel/timer.c b/kernel/timer.c
+index cc2588b..f6f2958 100644
+--- a/kernel/timer.c
++++ b/kernel/timer.c
+@@ -1373,13 +1373,14 @@ unsigned long get_next_timer_interrupt(unsigned long now)
/*
* On PREEMPT_RT we cannot sleep here. If the trylock does not
* succeed then we return the worst-case 'expires in 1 tick'
@@ -75,3 +76,6 @@ Index: linux-3.4/kernel/timer.c
} else {
expires = now + 1;
}
+--
+1.7.10.4
+
diff --git a/patches/rcu-force-preempt-rcu-for-rt.patch b/patches/0183-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch
index a18cc01..34a9eb5 100644
--- a/patches/rcu-force-preempt-rcu-for-rt.patch
+++ b/patches/0183-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch
@@ -1,6 +1,7 @@
-Subject: RCU: Force PREEMPT_RCU for PREEMPT-RT
+From 69f2453211e2bf585dc4c405634eb9755f8f99d9 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:30 -0500
+Subject: [PATCH 183/254] RCU: Force PREEMPT_RCU for PREEMPT-RT
PREEMPT_RT relies on PREEMPT_RCU - only allow RCU to be configured
interactively in the !PREEMPT_RT case.
@@ -14,10 +15,10 @@ Link: http://lkml.kernel.org/n/tip-j1y0phicu6s6pu8guku2vca0@git.kernel.org
init/Kconfig | 1 -
1 file changed, 1 deletion(-)
-Index: linux-3.4/init/Kconfig
-===================================================================
---- linux-3.4.orig/init/Kconfig
-+++ linux-3.4/init/Kconfig
+diff --git a/init/Kconfig b/init/Kconfig
+index c06208b..7c0b369 100644
+--- a/init/Kconfig
++++ b/init/Kconfig
@@ -746,7 +746,6 @@ config RT_GROUP_SCHED
bool "Group scheduling for SCHED_RR/FIFO"
depends on EXPERIMENTAL
@@ -26,3 +27,6 @@ Index: linux-3.4/init/Kconfig
default n
help
This feature lets you explicitly allocate real CPU bandwidth
+--
+1.7.10.4
+
diff --git a/patches/peter_zijlstra-frob-rcu.patch b/patches/0184-rcu-Frob-softirq-test.patch
index 4b51fb7..6678a0f 100644
--- a/patches/peter_zijlstra-frob-rcu.patch
+++ b/patches/0184-rcu-Frob-softirq-test.patch
@@ -1,6 +1,7 @@
-Subject: rcu: Frob softirq test
+From 7b331e32ab5108318cbaf325239d7dde4f336213 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
-Date: Sat Aug 13 00:23:17 CEST 2011
+Date: Sat, 13 Aug 2011 00:23:17 +0200
+Subject: [PATCH 184/254] rcu: Frob softirq test
With RT_FULL we get the below wreckage:
@@ -10,15 +11,15 @@ With RT_FULL we get the below wreckage:
[ 126.060490] -------------------------------------------------------
[ 126.060492] irq/24-eth0/1235 is trying to acquire lock:
[ 126.060495] (&(lock)->wait_lock#2){+.+...}, at: [<ffffffff81501c81>] rt_mutex_slowunlock+0x16/0x55
-[ 126.060503]
+[ 126.060503]
[ 126.060504] but task is already holding lock:
[ 126.060506] (&p->pi_lock){-...-.}, at: [<ffffffff81074fdc>] try_to_wake_up+0x35/0x429
-[ 126.060511]
+[ 126.060511]
[ 126.060511] which lock already depends on the new lock.
-[ 126.060513]
-[ 126.060514]
+[ 126.060513]
+[ 126.060514]
[ 126.060514] the existing dependency chain (in reverse order) is:
-[ 126.060516]
+[ 126.060516]
[ 126.060516] -> #1 (&p->pi_lock){-...-.}:
[ 126.060519] [<ffffffff810afe9e>] lock_acquire+0x145/0x18a
[ 126.060524] [<ffffffff8150291e>] _raw_spin_lock_irqsave+0x4b/0x85
@@ -29,7 +30,7 @@ With RT_FULL we get the below wreckage:
[ 126.060541] [<ffffffff810d90ce>] rcu_boost_kthread+0x7d/0x9b
[ 126.060544] [<ffffffff8109a760>] kthread+0x99/0xa1
[ 126.060547] [<ffffffff81509b14>] kernel_thread_helper+0x4/0x10
-[ 126.060551]
+[ 126.060551]
[ 126.060552] -> #0 (&(lock)->wait_lock#2){+.+...}:
[ 126.060555] [<ffffffff810af1b8>] __lock_acquire+0x1157/0x1816
[ 126.060558] [<ffffffff810afe9e>] lock_acquire+0x145/0x18a
@@ -49,23 +50,23 @@ With RT_FULL we get the below wreckage:
[ 126.060603] [<ffffffff810d582c>] irq_thread+0xde/0x1af
[ 126.060606] [<ffffffff8109a760>] kthread+0x99/0xa1
[ 126.060608] [<ffffffff81509b14>] kernel_thread_helper+0x4/0x10
-[ 126.060611]
+[ 126.060611]
[ 126.060612] other info that might help us debug this:
-[ 126.060614]
+[ 126.060614]
[ 126.060615] Possible unsafe locking scenario:
-[ 126.060616]
+[ 126.060616]
[ 126.060617] CPU0 CPU1
[ 126.060619] ---- ----
[ 126.060620] lock(&p->pi_lock);
[ 126.060623] lock(&(lock)->wait_lock);
[ 126.060625] lock(&p->pi_lock);
[ 126.060627] lock(&(lock)->wait_lock);
-[ 126.060629]
+[ 126.060629]
[ 126.060629] *** DEADLOCK ***
-[ 126.060630]
+[ 126.060630]
[ 126.060632] 1 lock held by irq/24-eth0/1235:
[ 126.060633] #0: (&p->pi_lock){-...-.}, at: [<ffffffff81074fdc>] try_to_wake_up+0x35/0x429
-[ 126.060638]
+[ 126.060638]
[ 126.060638] stack backtrace:
[ 126.060641] Pid: 1235, comm: irq/24-eth0 Not tainted 3.0.1-rt10+ #30
[ 126.060643] Call Trace:
@@ -153,11 +154,11 @@ Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
kernel/rcutree_plugin.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/kernel/rcutree_plugin.h
-===================================================================
---- linux-3.4.orig/kernel/rcutree_plugin.h
-+++ linux-3.4/kernel/rcutree_plugin.h
-@@ -339,7 +339,7 @@ static noinline void rcu_read_unlock_spe
+diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
+index c023464..e4cc151 100644
+--- a/kernel/rcutree_plugin.h
++++ b/kernel/rcutree_plugin.h
+@@ -339,7 +339,7 @@ static noinline void rcu_read_unlock_special(struct task_struct *t)
}
/* Hardware IRQ handlers cannot block. */
@@ -166,3 +167,6 @@ Index: linux-3.4/kernel/rcutree_plugin.h
local_irq_restore(flags);
return;
}
+--
+1.7.10.4
+
diff --git a/patches/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch b/patches/0185-rcu-Merge-RCU-bh-into-RCU-preempt.patch
index b7d1ffd..44ef018 100644
--- a/patches/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch
+++ b/patches/0185-rcu-Merge-RCU-bh-into-RCU-preempt.patch
@@ -1,6 +1,7 @@
-Subject: rcu: Merge RCU-bh into RCU-preempt
-Date: Wed, 5 Oct 2011 11:59:38 -0700
+From 7cc52761d84c1457e9816676b4d37069b2498c39 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
+Date: Wed, 5 Oct 2011 11:59:38 -0700
+Subject: [PATCH 185/254] rcu: Merge RCU-bh into RCU-preempt
The Linux kernel has long RCU-bh read-side critical sections that
intolerably increase scheduling latency under mainline's RCU-bh rules,
@@ -22,7 +23,6 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Link: http://lkml.kernel.org/r/20111005185938.GA20403@linux.vnet.ibm.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
include/linux/rcupdate.h | 25 +++++++++++++++++++++++++
include/linux/rcutree.h | 18 ++++++++++++++++--
@@ -30,11 +30,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/rcutree.c | 10 ++++++++++
4 files changed, 53 insertions(+), 2 deletions(-)
-Index: linux-3.4/include/linux/rcupdate.h
-===================================================================
---- linux-3.4.orig/include/linux/rcupdate.h
-+++ linux-3.4/include/linux/rcupdate.h
-@@ -101,6 +101,9 @@ extern void call_rcu(struct rcu_head *he
+diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
+index 23a500f..888d24a 100644
+--- a/include/linux/rcupdate.h
++++ b/include/linux/rcupdate.h
+@@ -101,6 +101,9 @@ extern void call_rcu(struct rcu_head *head,
#endif /* #else #ifdef CONFIG_PREEMPT_RCU */
@@ -44,7 +44,7 @@ Index: linux-3.4/include/linux/rcupdate.h
/**
* call_rcu_bh() - Queue an RCU for invocation after a quicker grace period.
* @head: structure to be used for queueing the RCU updates.
-@@ -121,6 +124,7 @@ extern void call_rcu(struct rcu_head *he
+@@ -121,6 +124,7 @@ extern void call_rcu(struct rcu_head *head,
*/
extern void call_rcu_bh(struct rcu_head *head,
void (*func)(struct rcu_head *head));
@@ -52,7 +52,7 @@ Index: linux-3.4/include/linux/rcupdate.h
/**
* call_rcu_sched() - Queue an RCU for invocation after sched grace period.
-@@ -190,7 +194,13 @@ static inline int rcu_preempt_depth(void
+@@ -190,7 +194,13 @@ static inline int rcu_preempt_depth(void)
/* Internal to kernel */
extern void rcu_sched_qs(int cpu);
@@ -66,7 +66,7 @@ Index: linux-3.4/include/linux/rcupdate.h
extern void rcu_check_callbacks(int cpu, int user);
struct notifier_block;
extern void rcu_idle_enter(void);
-@@ -331,7 +341,14 @@ static inline int rcu_read_lock_held(voi
+@@ -331,7 +341,14 @@ static inline int rcu_read_lock_held(void)
* rcu_read_lock_bh_held() is defined out of line to avoid #include-file
* hell.
*/
@@ -96,7 +96,7 @@ Index: linux-3.4/include/linux/rcupdate.h
}
/*
-@@ -793,10 +814,14 @@ static inline void rcu_read_lock_bh(void
+@@ -793,10 +814,14 @@ static inline void rcu_read_lock_bh(void)
*/
static inline void rcu_read_unlock_bh(void)
{
@@ -111,10 +111,10 @@ Index: linux-3.4/include/linux/rcupdate.h
local_bh_enable();
}
-Index: linux-3.4/include/linux/rcutree.h
-===================================================================
---- linux-3.4.orig/include/linux/rcutree.h
-+++ linux-3.4/include/linux/rcutree.h
+diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h
+index e8ee5dd..5b2d03e 100644
+--- a/include/linux/rcutree.h
++++ b/include/linux/rcutree.h
@@ -57,7 +57,11 @@ static inline void exit_rcu(void)
#endif /* #else #ifdef CONFIG_TREE_PREEMPT_RCU */
@@ -127,7 +127,7 @@ Index: linux-3.4/include/linux/rcutree.h
extern void synchronize_sched_expedited(void);
extern void synchronize_rcu_expedited(void);
-@@ -85,19 +89,29 @@ static inline void synchronize_rcu_bh_ex
+@@ -85,19 +89,29 @@ static inline void synchronize_rcu_bh_expedited(void)
}
extern void rcu_barrier(void);
@@ -159,10 +159,10 @@ Index: linux-3.4/include/linux/rcutree.h
/* A context switch is a grace period for RCU-sched and RCU-bh. */
static inline int rcu_blocking_is_gp(void)
{
-Index: linux-3.4/kernel/rcupdate.c
-===================================================================
---- linux-3.4.orig/kernel/rcupdate.c
-+++ linux-3.4/kernel/rcupdate.c
+diff --git a/kernel/rcupdate.c b/kernel/rcupdate.c
+index a86f174..63fc4b3 100644
+--- a/kernel/rcupdate.c
++++ b/kernel/rcupdate.c
@@ -77,6 +77,7 @@ int debug_lockdep_rcu_enabled(void)
}
EXPORT_SYMBOL_GPL(debug_lockdep_rcu_enabled);
@@ -179,10 +179,10 @@ Index: linux-3.4/kernel/rcupdate.c
#endif /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */
-Index: linux-3.4/kernel/rcutree.c
-===================================================================
---- linux-3.4.orig/kernel/rcutree.c
-+++ linux-3.4/kernel/rcutree.c
+diff --git a/kernel/rcutree.c b/kernel/rcutree.c
+index d0c5baf..69e959e 100644
+--- a/kernel/rcutree.c
++++ b/kernel/rcutree.c
@@ -172,6 +172,7 @@ void rcu_sched_qs(int cpu)
rdp->passed_quiesce = 1;
}
@@ -215,7 +215,7 @@ Index: linux-3.4/kernel/rcutree.c
/*
* Record the number of times rcutorture tests have been initiated and
-@@ -1884,6 +1888,7 @@ void call_rcu_sched(struct rcu_head *hea
+@@ -1884,6 +1888,7 @@ void call_rcu_sched(struct rcu_head *head, void (*func)(struct rcu_head *rcu))
}
EXPORT_SYMBOL_GPL(call_rcu_sched);
@@ -223,7 +223,7 @@ Index: linux-3.4/kernel/rcutree.c
/*
* Queue an RCU callback for invocation after a quicker grace period.
*/
-@@ -1892,6 +1897,7 @@ void call_rcu_bh(struct rcu_head *head,
+@@ -1892,6 +1897,7 @@ void call_rcu_bh(struct rcu_head *head, void (*func)(struct rcu_head *rcu))
__call_rcu(head, func, &rcu_bh_state, 0);
}
EXPORT_SYMBOL_GPL(call_rcu_bh);
@@ -247,7 +247,7 @@ Index: linux-3.4/kernel/rcutree.c
static atomic_t sync_sched_expedited_started = ATOMIC_INIT(0);
static atomic_t sync_sched_expedited_done = ATOMIC_INIT(0);
-@@ -2223,6 +2231,7 @@ static void _rcu_barrier(struct rcu_stat
+@@ -2223,6 +2231,7 @@ static void _rcu_barrier(struct rcu_state *rsp,
mutex_unlock(&rcu_barrier_mutex);
}
@@ -263,3 +263,6 @@ Index: linux-3.4/kernel/rcutree.c
/**
* rcu_barrier_sched - Wait for in-flight call_rcu_sched() callbacks.
+--
+1.7.10.4
+
diff --git a/patches/rcu-fix-macro-substitution.patch b/patches/0186-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch
index 0d91977..e805d86 100644
--- a/patches/rcu-fix-macro-substitution.patch
+++ b/patches/0186-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch
@@ -1,6 +1,11 @@
-Subject: rcu: Fix macro substitution for synchronize_rcu_bh() on RT
+From f77eb9984f28292bbe0c9c920c28655db1df2a3c Mon Sep 17 00:00:00 2001
From: John Kacur <jkacur@redhat.com>
Date: Mon, 14 Nov 2011 02:44:42 +0100
+Subject: [PATCH 186/254] rcu: Fix macro substitution for synchronize_rcu_bh()
+ on RT
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
kernel/rcutorture.c:492: error: ‘synchronize_rcu_bh’ undeclared here (not in a function)
@@ -20,10 +25,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
include/linux/rcutree.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/include/linux/rcutree.h
-===================================================================
---- linux-3.4.orig/include/linux/rcutree.h
-+++ linux-3.4/include/linux/rcutree.h
+diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h
+index 5b2d03e..ba517b5 100644
+--- a/include/linux/rcutree.h
++++ b/include/linux/rcutree.h
@@ -60,7 +60,7 @@ static inline void exit_rcu(void)
#ifndef CONFIG_PREEMPT_RT_FULL
extern void synchronize_rcu_bh(void);
@@ -33,3 +38,6 @@ Index: linux-3.4/include/linux/rcutree.h
#endif
extern void synchronize_sched_expedited(void);
extern void synchronize_rcu_expedited(void);
+--
+1.7.10.4
+
diff --git a/patches/rcu-tiny-merge-bh.patch b/patches/0187-rcu-more-fallout.patch.patch
index dda27f5..853f227 100644
--- a/patches/rcu-tiny-merge-bh.patch
+++ b/patches/0187-rcu-more-fallout.patch.patch
@@ -1,17 +1,18 @@
-Subject: rcu-more-fallout.patch
+From afa85870aee823433c96fb171fa0da55e4427f0a Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 14 Nov 2011 10:57:54 +0100
+Subject: [PATCH 187/254] rcu-more-fallout.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/rcutiny.c | 2 ++
1 file changed, 2 insertions(+)
-Index: linux-3.4/kernel/rcutiny.c
-===================================================================
---- linux-3.4.orig/kernel/rcutiny.c
-+++ linux-3.4/kernel/rcutiny.c
-@@ -368,6 +368,7 @@ void call_rcu_sched(struct rcu_head *hea
+diff --git a/kernel/rcutiny.c b/kernel/rcutiny.c
+index 37a5444..fc581fb 100644
+--- a/kernel/rcutiny.c
++++ b/kernel/rcutiny.c
+@@ -368,6 +368,7 @@ void call_rcu_sched(struct rcu_head *head, void (*func)(struct rcu_head *rcu))
}
EXPORT_SYMBOL_GPL(call_rcu_sched);
@@ -19,8 +20,11 @@ Index: linux-3.4/kernel/rcutiny.c
/*
* Post an RCU bottom-half callback to be invoked after any subsequent
* quiescent state.
-@@ -377,3 +378,4 @@ void call_rcu_bh(struct rcu_head *head,
+@@ -377,3 +378,4 @@ void call_rcu_bh(struct rcu_head *head, void (*func)(struct rcu_head *rcu))
__call_rcu(head, func, &rcu_bh_ctrlblk);
}
EXPORT_SYMBOL_GPL(call_rcu_bh);
+#endif
+--
+1.7.10.4
+
diff --git a/patches/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch b/patches/0188-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch
index f116bc7..fd4e932 100644
--- a/patches/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch
+++ b/patches/0188-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch
@@ -1,6 +1,7 @@
-Subject: rcu: Make ksoftirqd do RCU quiescent states
+From 210fece04f7700ccfc8306487616876169778489 Mon Sep 17 00:00:00 2001
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Date: Wed, 5 Oct 2011 11:45:18 -0700
+Subject: [PATCH 188/254] rcu: Make ksoftirqd do RCU quiescent states
Implementing RCU-bh in terms of RCU-preempt makes the system vulnerable
to network-based denial-of-service attacks. This patch therefore
@@ -21,7 +22,6 @@ in cases where __do_softirq() is invoked directly from ksoftirqd.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Link: http://lkml.kernel.org/r/20111005184518.GA21601@linux.vnet.ibm.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
include/linux/rcupdate.h | 6 ------
kernel/rcutree.c | 7 ++++++-
@@ -30,11 +30,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/softirq.c | 20 +++++++++++++-------
5 files changed, 21 insertions(+), 15 deletions(-)
-Index: linux-3.4/include/linux/rcupdate.h
-===================================================================
---- linux-3.4.orig/include/linux/rcupdate.h
-+++ linux-3.4/include/linux/rcupdate.h
-@@ -194,13 +194,7 @@ static inline int rcu_preempt_depth(void
+diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
+index 888d24a..aaf8b7d 100644
+--- a/include/linux/rcupdate.h
++++ b/include/linux/rcupdate.h
+@@ -194,13 +194,7 @@ static inline int rcu_preempt_depth(void)
/* Internal to kernel */
extern void rcu_sched_qs(int cpu);
@@ -48,10 +48,10 @@ Index: linux-3.4/include/linux/rcupdate.h
extern void rcu_check_callbacks(int cpu, int user);
struct notifier_block;
extern void rcu_idle_enter(void);
-Index: linux-3.4/kernel/rcutree.c
-===================================================================
---- linux-3.4.orig/kernel/rcutree.c
-+++ linux-3.4/kernel/rcutree.c
+diff --git a/kernel/rcutree.c b/kernel/rcutree.c
+index 69e959e..a9ca0e0 100644
+--- a/kernel/rcutree.c
++++ b/kernel/rcutree.c
@@ -172,7 +172,12 @@ void rcu_sched_qs(int cpu)
rdp->passed_quiesce = 1;
}
@@ -66,10 +66,10 @@ Index: linux-3.4/kernel/rcutree.c
void rcu_bh_qs(int cpu)
{
struct rcu_data *rdp = &per_cpu(rcu_bh_data, cpu);
-Index: linux-3.4/kernel/rcutree.h
-===================================================================
---- linux-3.4.orig/kernel/rcutree.h
-+++ linux-3.4/kernel/rcutree.h
+diff --git a/kernel/rcutree.h b/kernel/rcutree.h
+index cdd1be0..6ee6525 100644
+--- a/kernel/rcutree.h
++++ b/kernel/rcutree.h
@@ -423,6 +423,7 @@ DECLARE_PER_CPU(char, rcu_cpu_has_work);
/* Forward declarations for rcutree_plugin.h */
static void rcu_bootup_announce(void);
@@ -78,11 +78,11 @@ Index: linux-3.4/kernel/rcutree.h
static void rcu_preempt_note_context_switch(int cpu);
static int rcu_preempt_blocked_readers_cgp(struct rcu_node *rnp);
#ifdef CONFIG_HOTPLUG_CPU
-Index: linux-3.4/kernel/rcutree_plugin.h
-===================================================================
---- linux-3.4.orig/kernel/rcutree_plugin.h
-+++ linux-3.4/kernel/rcutree_plugin.h
-@@ -1899,7 +1899,7 @@ static void __cpuinit rcu_prepare_kthrea
+diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
+index e4cc151..14acafc 100644
+--- a/kernel/rcutree_plugin.h
++++ b/kernel/rcutree_plugin.h
+@@ -1899,7 +1899,7 @@ static void __cpuinit rcu_prepare_kthreads(int cpu)
#endif /* #else #ifdef CONFIG_RCU_BOOST */
@@ -91,10 +91,10 @@ Index: linux-3.4/kernel/rcutree_plugin.h
/*
* Check to see if any future RCU-related work will need to be done
-Index: linux-3.4/kernel/softirq.c
-===================================================================
---- linux-3.4.orig/kernel/softirq.c
-+++ linux-3.4/kernel/softirq.c
+diff --git a/kernel/softirq.c b/kernel/softirq.c
+index 35fb713..34fe1db 100644
+--- a/kernel/softirq.c
++++ b/kernel/softirq.c
@@ -139,7 +139,7 @@ static void wakeup_softirqd(void)
wake_up_process(tsk);
}
@@ -104,7 +104,7 @@ Index: linux-3.4/kernel/softirq.c
{
struct softirq_action *h = softirq_vec;
unsigned int prev_count = preempt_count();
-@@ -162,7 +162,8 @@ static void handle_pending_softirqs(u32
+@@ -162,7 +162,8 @@ static void handle_pending_softirqs(u32 pending, int cpu)
prev_count, (unsigned int) preempt_count());
preempt_count() = prev_count;
}
@@ -123,7 +123,7 @@ Index: linux-3.4/kernel/softirq.c
pending = local_softirq_pending();
if (pending && --max_restart)
-@@ -384,7 +385,12 @@ static inline void ksoftirqd_clr_sched_p
+@@ -384,7 +385,12 @@ static inline void ksoftirqd_clr_sched_params(void) { }
static DEFINE_LOCAL_IRQ_LOCK(local_softirq_lock);
static DEFINE_PER_CPU(struct task_struct *, local_softirq_runner);
@@ -164,3 +164,6 @@ Index: linux-3.4/kernel/softirq.c
local_unlock(local_softirq_lock);
unpin_current_cpu();
preempt_disable();
+--
+1.7.10.4
+
diff --git a/patches/rcu-fix-build-break.patch b/patches/0189-rcu-Fix-build-break.patch
index 2b0c525..fb6f8f6 100644
--- a/patches/rcu-fix-build-break.patch
+++ b/patches/0189-rcu-Fix-build-break.patch
@@ -1,6 +1,10 @@
-Subject: rcu: Fix build break
+From e7c571622f31858d6ba0c268fc6753b2729292bd Mon Sep 17 00:00:00 2001
From: John Kacur <jkacur@redhat.com>
Date: Fri, 13 Apr 2012 12:54:21 +0200
+Subject: [PATCH 189/254] rcu: Fix build break
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
A build break can occur with the following config options enabled
@@ -28,10 +32,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/rcutree_plugin.h | 5 +++++
1 file changed, 5 insertions(+)
-Index: linux-3.4/kernel/rcutree_plugin.h
-===================================================================
---- linux-3.4.orig/kernel/rcutree_plugin.h
-+++ linux-3.4/kernel/rcutree_plugin.h
+diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
+index 14acafc..2844d7d 100644
+--- a/kernel/rcutree_plugin.h
++++ b/kernel/rcutree_plugin.h
@@ -1914,6 +1914,9 @@ int rcu_needs_cpu(int cpu)
{
return rcu_cpu_has_callbacks(cpu);
@@ -42,7 +46,7 @@ Index: linux-3.4/kernel/rcutree_plugin.h
/*
* Because we do not have RCU_FAST_NO_HZ, don't bother initializing for it.
-@@ -1984,6 +1987,7 @@ static DEFINE_PER_CPU(struct hrtimer, rc
+@@ -1984,6 +1987,7 @@ static DEFINE_PER_CPU(struct hrtimer, rcu_idle_gp_timer);
static ktime_t rcu_idle_gp_wait; /* If some non-lazy callbacks. */
static ktime_t rcu_idle_lazy_gp_wait; /* If only lazy callbacks. */
@@ -58,3 +62,6 @@ Index: linux-3.4/kernel/rcutree_plugin.h
/*
* Does the specified flavor of RCU have non-lazy callbacks pending on
+--
+1.7.10.4
+
diff --git a/patches/rt-rcutree-warn-fix.patch b/patches/0190-rt-rcutree-Move-misplaced-prototype.patch
index 21cab1d..86a4b6a 100644
--- a/patches/rt-rcutree-warn-fix.patch
+++ b/patches/0190-rt-rcutree-Move-misplaced-prototype.patch
@@ -1,6 +1,10 @@
-Subject: rt/rcutree: Move misplaced prototype
+From 51cfc2756061597259440c9537250f2ee4f5593b Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
-Date: Wed Dec 14 12:51:28 CET 2011
+Date: Wed, 14 Dec 2011 12:51:28 +0100
+Subject: [PATCH 190/254] rt/rcutree: Move misplaced prototype
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
Fix this warning on x86 defconfig:
@@ -12,15 +16,14 @@ usage site that needs it.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
----
kernel/rcutree.c | 2 ++
kernel/rcutree.h | 1 -
2 files changed, 2 insertions(+), 1 deletion(-)
-Index: linux-3.4/kernel/rcutree.c
-===================================================================
---- linux-3.4.orig/kernel/rcutree.c
-+++ linux-3.4/kernel/rcutree.c
+diff --git a/kernel/rcutree.c b/kernel/rcutree.c
+index a9ca0e0..0c3f4a9 100644
+--- a/kernel/rcutree.c
++++ b/kernel/rcutree.c
@@ -173,6 +173,8 @@ void rcu_sched_qs(int cpu)
}
@@ -30,10 +33,10 @@ Index: linux-3.4/kernel/rcutree.c
void rcu_bh_qs(int cpu)
{
rcu_preempt_qs(cpu);
-Index: linux-3.4/kernel/rcutree.h
-===================================================================
---- linux-3.4.orig/kernel/rcutree.h
-+++ linux-3.4/kernel/rcutree.h
+diff --git a/kernel/rcutree.h b/kernel/rcutree.h
+index 6ee6525..cdd1be0 100644
+--- a/kernel/rcutree.h
++++ b/kernel/rcutree.h
@@ -423,7 +423,6 @@ DECLARE_PER_CPU(char, rcu_cpu_has_work);
/* Forward declarations for rcutree_plugin.h */
static void rcu_bootup_announce(void);
@@ -42,3 +45,6 @@ Index: linux-3.4/kernel/rcutree.h
static void rcu_preempt_note_context_switch(int cpu);
static int rcu_preempt_blocked_readers_cgp(struct rcu_node *rnp);
#ifdef CONFIG_HOTPLUG_CPU
+--
+1.7.10.4
+
diff --git a/patches/lglocks-rt.patch b/patches/0191-lglocks-rt.patch.patch
index 47e23cd..16978f3 100644
--- a/patches/lglocks-rt.patch
+++ b/patches/0191-lglocks-rt.patch.patch
@@ -1,16 +1,17 @@
-Subject: lglocks-rt.patch
+From 7c73d9c0f16b94781ac7bc46f8d03282f16138c1 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 15 Jun 2011 11:02:21 +0200
+Subject: [PATCH 191/254] lglocks-rt.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- include/linux/lglock.h | 99 +++++++++++++++++++++++++++++++++++++++++++++++++
+ include/linux/lglock.h | 99 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 99 insertions(+)
-Index: linux-3.4/include/linux/lglock.h
-===================================================================
---- linux-3.4.orig/include/linux/lglock.h
-+++ linux-3.4/include/linux/lglock.h
+diff --git a/include/linux/lglock.h b/include/linux/lglock.h
+index 87f402c..52b289f 100644
+--- a/include/linux/lglock.h
++++ b/include/linux/lglock.h
@@ -71,6 +71,8 @@
extern void name##_global_lock_online(void); \
extern void name##_global_unlock_online(void); \
@@ -122,3 +123,6 @@ Index: linux-3.4/include/linux/lglock.h
+#endif /* PRREMPT_RT_FULL */
+
#endif
+--
+1.7.10.4
+
diff --git a/patches/drivers-serial-cleanup-locking-for-rt.patch b/patches/0192-serial-8250-Clean-up-the-locking-for-rt.patch
index 2169649..ae31e3d 100644
--- a/patches/drivers-serial-cleanup-locking-for-rt.patch
+++ b/patches/0192-serial-8250-Clean-up-the-locking-for-rt.patch
@@ -1,19 +1,19 @@
+From c655029cab5114938471c24eb07877bda0bf5a79 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:01 -0500
-Subject: serial: 8250: Clean up the locking for -rt
+Subject: [PATCH 192/254] serial: 8250: Clean up the locking for -rt
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
drivers/tty/serial/8250/8250.c | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)
-Index: linux-3.4/drivers/tty/serial/8250/8250.c
-===================================================================
---- linux-3.4.orig/drivers/tty/serial/8250/8250.c
-+++ linux-3.4/drivers/tty/serial/8250/8250.c
-@@ -2807,14 +2807,10 @@ serial8250_console_write(struct console
+diff --git a/drivers/tty/serial/8250/8250.c b/drivers/tty/serial/8250/8250.c
+index d537431..6ede5a7 100644
+--- a/drivers/tty/serial/8250/8250.c
++++ b/drivers/tty/serial/8250/8250.c
+@@ -2808,14 +2808,10 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count)
touch_nmi_watchdog();
@@ -32,7 +32,7 @@ Index: linux-3.4/drivers/tty/serial/8250/8250.c
/*
* First save the IER then disable the interrupts
-@@ -2846,8 +2842,7 @@ serial8250_console_write(struct console
+@@ -2847,8 +2843,7 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count)
serial8250_modem_status(up);
if (locked)
@@ -42,3 +42,6 @@ Index: linux-3.4/drivers/tty/serial/8250/8250.c
}
static int __init serial8250_console_setup(struct console *co, char *options)
+--
+1.7.10.4
+
diff --git a/patches/drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch b/patches/0193-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch
index 95e225f..691becc 100644
--- a/patches/drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch
+++ b/patches/0193-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch
@@ -1,19 +1,20 @@
+From f53be20f3c15d2f21e3771b9fe78dd1043c45449 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:30:01 -0500
-Subject: serial: 8250: Call flush_to_ldisc when the irq is threaded
+Subject: [PATCH 193/254] serial: 8250: Call flush_to_ldisc when the irq is
+ threaded
Signed-off-by: Ingo Molnar <mingo@elte.hu>
-
---
drivers/tty/serial/8250/8250.c | 2 ++
drivers/tty/tty_buffer.c | 4 ++++
2 files changed, 6 insertions(+)
-Index: linux-3.4/drivers/tty/serial/8250/8250.c
-===================================================================
---- linux-3.4.orig/drivers/tty/serial/8250/8250.c
-+++ linux-3.4/drivers/tty/serial/8250/8250.c
-@@ -1584,12 +1584,14 @@ static irqreturn_t serial8250_interrupt(
+diff --git a/drivers/tty/serial/8250/8250.c b/drivers/tty/serial/8250/8250.c
+index 6ede5a7..ff93c70 100644
+--- a/drivers/tty/serial/8250/8250.c
++++ b/drivers/tty/serial/8250/8250.c
+@@ -1584,12 +1584,14 @@ static irqreturn_t serial8250_interrupt(int irq, void *dev_id)
l = l->next;
@@ -28,11 +29,11 @@ Index: linux-3.4/drivers/tty/serial/8250/8250.c
} while (l != end);
spin_unlock(&i->lock);
-Index: linux-3.4/drivers/tty/tty_buffer.c
-===================================================================
---- linux-3.4.orig/drivers/tty/tty_buffer.c
-+++ linux-3.4/drivers/tty/tty_buffer.c
-@@ -493,10 +493,14 @@ void tty_flip_buffer_push(struct tty_str
+diff --git a/drivers/tty/tty_buffer.c b/drivers/tty/tty_buffer.c
+index 6c9b7cd..a56c223 100644
+--- a/drivers/tty/tty_buffer.c
++++ b/drivers/tty/tty_buffer.c
+@@ -493,10 +493,14 @@ void tty_flip_buffer_push(struct tty_struct *tty)
tty->buf.tail->commit = tty->buf.tail->used;
spin_unlock_irqrestore(&tty->buf.lock, flags);
@@ -47,3 +48,6 @@ Index: linux-3.4/drivers/tty/tty_buffer.c
}
EXPORT_SYMBOL(tty_flip_buffer_push);
+--
+1.7.10.4
+
diff --git a/patches/drivers-tty-fix-omap-lock-crap.patch b/patches/0194-drivers-tty-fix-omap-lock-crap.patch.patch
index a33e39c..88b44ba 100644
--- a/patches/drivers-tty-fix-omap-lock-crap.patch
+++ b/patches/0194-drivers-tty-fix-omap-lock-crap.patch.patch
@@ -1,17 +1,18 @@
-Subject: drivers-tty-fix-omap-lock-crap.patch
+From 6ac91cfbd7eb639ac5fee86c423d67e912274af5 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 28 Jul 2011 13:32:57 +0200
+Subject: [PATCH 194/254] drivers-tty-fix-omap-lock-crap.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/tty/serial/omap-serial.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
-Index: linux-3.4/drivers/tty/serial/omap-serial.c
-===================================================================
---- linux-3.4.orig/drivers/tty/serial/omap-serial.c
-+++ linux-3.4/drivers/tty/serial/omap-serial.c
-@@ -1064,13 +1064,10 @@ serial_omap_console_write(struct console
+diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
+index d00b38e..f697492 100644
+--- a/drivers/tty/serial/omap-serial.c
++++ b/drivers/tty/serial/omap-serial.c
+@@ -1064,13 +1064,10 @@ serial_omap_console_write(struct console *co, const char *s,
pm_runtime_get_sync(&up->pdev->dev);
@@ -28,7 +29,7 @@ Index: linux-3.4/drivers/tty/serial/omap-serial.c
/*
* First save the IER then disable the interrupts
-@@ -1099,8 +1096,7 @@ serial_omap_console_write(struct console
+@@ -1099,8 +1096,7 @@ serial_omap_console_write(struct console *co, const char *s,
pm_runtime_mark_last_busy(&up->pdev->dev);
pm_runtime_put_autosuspend(&up->pdev->dev);
if (locked)
@@ -38,3 +39,6 @@ Index: linux-3.4/drivers/tty/serial/omap-serial.c
}
static int __init
+--
+1.7.10.4
+
diff --git a/patches/rt-serial-warn-fix.patch b/patches/0195-rt-Improve-the-serial-console-PASS_LIMIT.patch
index 66a21ff..e4381c9 100644
--- a/patches/rt-serial-warn-fix.patch
+++ b/patches/0195-rt-Improve-the-serial-console-PASS_LIMIT.patch
@@ -1,6 +1,10 @@
-Subject: rt: Improve the serial console PASS_LIMIT
+From 5d84a334b8ae986fa35200ab0fcdc6f9c7ff49b3 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
-Date: Wed Dec 14 13:05:54 CET 2011
+Date: Wed, 14 Dec 2011 13:05:54 +0100
+Subject: [PATCH 195/254] rt: Improve the serial console PASS_LIMIT
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
Beyond the warning:
@@ -15,11 +19,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
drivers/tty/serial/8250/8250.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
-Index: linux-3.4/drivers/tty/serial/8250/8250.c
-===================================================================
---- linux-3.4.orig/drivers/tty/serial/8250/8250.c
-+++ linux-3.4/drivers/tty/serial/8250/8250.c
-@@ -80,7 +80,16 @@ static unsigned int skip_txen_test; /* f
+diff --git a/drivers/tty/serial/8250/8250.c b/drivers/tty/serial/8250/8250.c
+index ff93c70..a785ec0 100644
+--- a/drivers/tty/serial/8250/8250.c
++++ b/drivers/tty/serial/8250/8250.c
+@@ -80,7 +80,16 @@ static unsigned int skip_txen_test; /* force skip of txen test at init time */
#define DEBUG_INTR(fmt...) do { } while (0)
#endif
@@ -37,7 +41,7 @@ Index: linux-3.4/drivers/tty/serial/8250/8250.c
#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE)
-@@ -1584,14 +1593,12 @@ static irqreturn_t serial8250_interrupt(
+@@ -1584,14 +1593,12 @@ static irqreturn_t serial8250_interrupt(int irq, void *dev_id)
l = l->next;
@@ -52,3 +56,6 @@ Index: linux-3.4/drivers/tty/serial/8250/8250.c
} while (l != end);
spin_unlock(&i->lock);
+--
+1.7.10.4
+
diff --git a/patches/fs-namespace-preemption-fix.patch b/patches/0196-fs-namespace-preemption-fix.patch
index 398bebc..0969927 100644
--- a/patches/fs-namespace-preemption-fix.patch
+++ b/patches/0196-fs-namespace-preemption-fix.patch
@@ -1,6 +1,7 @@
+From 62f993e8154c906f3e4b44e1fbf97b48f0a37238 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 19 Jul 2009 08:44:27 -0500
-Subject: fs: namespace preemption fix
+Subject: [PATCH 196/254] fs: namespace preemption fix
On RT we cannot loop with preemption disabled here as
mnt_make_readonly() might have been preempted. We can safely enable
@@ -8,15 +9,14 @@ preemption while waiting for MNT_WRITE_HOLD to be cleared. Safe on !RT
as well.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
fs/namespace.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
-Index: linux-3.4/fs/namespace.c
-===================================================================
---- linux-3.4.orig/fs/namespace.c
-+++ linux-3.4/fs/namespace.c
+diff --git a/fs/namespace.c b/fs/namespace.c
+index e608199..7fd0981 100644
+--- a/fs/namespace.c
++++ b/fs/namespace.c
@@ -313,8 +313,11 @@ int mnt_want_write(struct vfsmount *m)
* incremented count after it has set MNT_WRITE_HOLD.
*/
@@ -30,3 +30,6 @@ Index: linux-3.4/fs/namespace.c
/*
* After the slowpath clears MNT_WRITE_HOLD, mnt_is_readonly will
* be set to match its requirements. So we must not load that until
+--
+1.7.10.4
+
diff --git a/patches/mm-protect-activate-switch-mm.patch b/patches/0197-mm-protect-activate-switch-mm.patch.patch
index fa18bfa..86f29e0 100644
--- a/patches/mm-protect-activate-switch-mm.patch
+++ b/patches/0197-mm-protect-activate-switch-mm.patch.patch
@@ -1,6 +1,7 @@
-Subject: mm-protect-activate-switch-mm.patch
+From 9cb182d73e54bace6bc9b221b8a22dce8a0894cd Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Mon, 04 Jul 2011 09:48:40 +0200
+Date: Mon, 4 Jul 2011 09:48:40 +0200
+Subject: [PATCH 197/254] mm-protect-activate-switch-mm.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -8,11 +9,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
mm/mmu_context.c | 2 ++
2 files changed, 4 insertions(+)
-Index: linux-3.4/fs/exec.c
-===================================================================
---- linux-3.4.orig/fs/exec.c
-+++ linux-3.4/fs/exec.c
-@@ -840,10 +840,12 @@ static int exec_mmap(struct mm_struct *m
+diff --git a/fs/exec.c b/fs/exec.c
+index b1fd202..db02d76 100644
+--- a/fs/exec.c
++++ b/fs/exec.c
+@@ -840,10 +840,12 @@ static int exec_mmap(struct mm_struct *mm)
}
}
task_lock(tsk);
@@ -25,10 +26,10 @@ Index: linux-3.4/fs/exec.c
task_unlock(tsk);
arch_pick_mmap_layout(mm);
if (old_mm) {
-Index: linux-3.4/mm/mmu_context.c
-===================================================================
---- linux-3.4.orig/mm/mmu_context.c
-+++ linux-3.4/mm/mmu_context.c
+diff --git a/mm/mmu_context.c b/mm/mmu_context.c
+index 3dcfaf4..8ca7e6b 100644
+--- a/mm/mmu_context.c
++++ b/mm/mmu_context.c
@@ -26,6 +26,7 @@ void use_mm(struct mm_struct *mm)
struct task_struct *tsk = current;
@@ -45,3 +46,6 @@ Index: linux-3.4/mm/mmu_context.c
task_unlock(tsk);
if (active_mm != mm)
+--
+1.7.10.4
+
diff --git a/patches/mm-protect-activate_mm-by-preempt_-disable-7cenable-_rt.patch b/patches/0198-mm-Protect-activate_mm-by-preempt_-disable-7Cenable-.patch
index 9d08ba6..4050fe1 100644
--- a/patches/mm-protect-activate_mm-by-preempt_-disable-7cenable-_rt.patch
+++ b/patches/0198-mm-Protect-activate_mm-by-preempt_-disable-7Cenable-.patch
@@ -1,8 +1,8 @@
-Subject: mm: Protect activate_mm() by preempt_[disable%7Cenable]_rt()
-From: Yong Zhang <yong.zhang0@gmail.com>
-Date: Tue, 15 May 2012 13:53:56 +0800
-
+From ad500f887104977355965bc047751ea54ab84bd3 Mon Sep 17 00:00:00 2001
From: Yong Zhang <yong.zhang@windriver.com>
+Date: Tue, 15 May 2012 13:53:56 +0800
+Subject: [PATCH 198/254] mm: Protect activate_mm() by
+ preempt_[disable%7Cenable]_rt()
Otherwise there will be warning on ARM like below:
@@ -79,11 +79,5 @@ index 8ca7e6b..1385e48 100644
if (active_mm != mm)
--
-1.7.5.4
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-
+1.7.10.4
diff --git a/patches/fs-block-rt-support.patch b/patches/0199-fs-block-rt-support.patch.patch
index 44f531e..331fd81 100644
--- a/patches/fs-block-rt-support.patch
+++ b/patches/0199-fs-block-rt-support.patch.patch
@@ -1,6 +1,7 @@
-Subject: fs-block-rt-support.patch
+From 8f54f28e8dbf9a16876456ea1f334f5ab6394c90 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 14 Jun 2011 17:05:09 +0200
+Subject: [PATCH 199/254] fs-block-rt-support.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -8,10 +9,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
fs/file.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
-Index: linux-3.4/block/blk-core.c
-===================================================================
---- linux-3.4.orig/block/blk-core.c
-+++ linux-3.4/block/blk-core.c
+diff --git a/block/blk-core.c b/block/blk-core.c
+index 0d947d0..f068328 100644
+--- a/block/blk-core.c
++++ b/block/blk-core.c
@@ -237,7 +237,7 @@ EXPORT_SYMBOL(blk_delay_queue);
**/
void blk_start_queue(struct request_queue *q)
@@ -21,11 +22,11 @@ Index: linux-3.4/block/blk-core.c
queue_flag_clear(QUEUE_FLAG_STOPPED, q);
__blk_run_queue(q);
-Index: linux-3.4/fs/file.c
-===================================================================
---- linux-3.4.orig/fs/file.c
-+++ linux-3.4/fs/file.c
-@@ -105,14 +105,14 @@ void free_fdtable_rcu(struct rcu_head *r
+diff --git a/fs/file.c b/fs/file.c
+index 6f176f5..9f5343d 100644
+--- a/fs/file.c
++++ b/fs/file.c
+@@ -105,14 +105,14 @@ void free_fdtable_rcu(struct rcu_head *rcu)
kfree(fdt->open_fds);
kfree(fdt);
} else {
@@ -42,3 +43,6 @@ Index: linux-3.4/fs/file.c
}
}
+--
+1.7.10.4
+
diff --git a/patches/fs-ntfs-disable-interrupt-non-rt.patch b/patches/0200-fs-ntfs-disable-interrupt-only-on-RT.patch
index ea2d512..e8ff8f2 100644
--- a/patches/fs-ntfs-disable-interrupt-non-rt.patch
+++ b/patches/0200-fs-ntfs-disable-interrupt-only-on-RT.patch
@@ -1,6 +1,7 @@
+From 993c6ac287cf33b0baa800658638ba03d071c70b Mon Sep 17 00:00:00 2001
From: Mike Galbraith <efault@gmx.de>
Date: Fri, 3 Jul 2009 08:44:12 -0500
-Subject: fs: ntfs: disable interrupt only on !RT
+Subject: [PATCH 200/254] fs: ntfs: disable interrupt only on !RT
On Sat, 2007-10-27 at 11:44 +0200, Ingo Molnar wrote:
> * Nick Piggin <nickpiggin@yahoo.com.au> wrote:
@@ -34,16 +35,15 @@ instead?
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
fs/ntfs/aops.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-Index: linux-3.4/fs/ntfs/aops.c
-===================================================================
---- linux-3.4.orig/fs/ntfs/aops.c
-+++ linux-3.4/fs/ntfs/aops.c
-@@ -144,13 +144,13 @@ static void ntfs_end_buffer_async_read(s
+diff --git a/fs/ntfs/aops.c b/fs/ntfs/aops.c
+index 4e4ca73..f5d4565 100644
+--- a/fs/ntfs/aops.c
++++ b/fs/ntfs/aops.c
+@@ -144,13 +144,13 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate)
recs = PAGE_CACHE_SIZE / rec_size;
/* Should have been verified before we got here... */
BUG_ON(!recs);
@@ -59,3 +59,6 @@ Index: linux-3.4/fs/ntfs/aops.c
flush_dcache_page(page);
if (likely(page_uptodate && !PageError(page)))
SetPageUptodate(page);
+--
+1.7.10.4
+
diff --git a/patches/x86-mce-timer-hrtimer.patch b/patches/0201-x86-Convert-mce-timer-to-hrtimer.patch
index 9bc04d8..f90d485 100644
--- a/patches/x86-mce-timer-hrtimer.patch
+++ b/patches/0201-x86-Convert-mce-timer-to-hrtimer.patch
@@ -1,21 +1,21 @@
+From 367f65888c6a9acc8ce518f561c706576967828f Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 13 Dec 2010 16:33:39 +0100
-Subject: x86: Convert mce timer to hrtimer
+Subject: [PATCH 201/254] x86: Convert mce timer to hrtimer
mce_timer is started in atomic contexts of cpu bringup. This results
in might_sleep() warnings on RT. Convert mce_timer to a hrtimer to
avoid this.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
- arch/x86/kernel/cpu/mcheck/mce.c | 49 ++++++++++++++++++---------------------
+ arch/x86/kernel/cpu/mcheck/mce.c | 49 ++++++++++++++++++--------------------
1 file changed, 23 insertions(+), 26 deletions(-)
-Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c
-===================================================================
---- linux-3.4.orig/arch/x86/kernel/cpu/mcheck/mce.c
-+++ linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c
+diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
+index 61604ae..473e40d 100644
+--- a/arch/x86/kernel/cpu/mcheck/mce.c
++++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -38,6 +38,7 @@
#include <linux/debugfs.h>
#include <linux/irq_work.h>
@@ -24,7 +24,7 @@ Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c
#include <asm/processor.h>
#include <asm/mce.h>
-@@ -1229,17 +1230,14 @@ void mce_log_therm_throt_event(__u64 sta
+@@ -1245,17 +1246,14 @@ void mce_log_therm_throt_event(__u64 status)
* poller finds an MCE, poll 2x faster. When the poller finds no more
* errors, poll 2x slower (up to check_interval seconds).
*/
@@ -47,7 +47,7 @@ Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c
if (mce_available(__this_cpu_ptr(&cpu_info))) {
machine_check_poll(MCP_TIMESTAMP,
-@@ -1252,21 +1250,22 @@ static void mce_start_timer(unsigned lon
+@@ -1268,21 +1266,22 @@ static void mce_start_timer(unsigned long data)
*/
n = &__get_cpu_var(mce_next_interval);
if (mce_notify_irq())
@@ -76,7 +76,7 @@ Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c
}
static void mce_do_trigger(struct work_struct *work)
-@@ -1496,10 +1495,11 @@ static void __mcheck_cpu_init_vendor(str
+@@ -1512,10 +1511,11 @@ static void __mcheck_cpu_init_vendor(struct cpuinfo_x86 *c)
static void __mcheck_cpu_init_timer(void)
{
@@ -91,7 +91,7 @@ Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c
if (mce_ignore_ce)
return;
-@@ -1507,8 +1507,9 @@ static void __mcheck_cpu_init_timer(void
+@@ -1523,8 +1523,9 @@ static void __mcheck_cpu_init_timer(void)
*n = check_interval * HZ;
if (!*n)
return;
@@ -103,7 +103,7 @@ Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c
}
/* Handle unconfigured int18 (should never happen) */
-@@ -2160,6 +2161,8 @@ static void __cpuinit mce_disable_cpu(vo
+@@ -2176,6 +2177,8 @@ static void __cpuinit mce_disable_cpu(void *h)
if (!mce_available(__this_cpu_ptr(&cpu_info)))
return;
@@ -112,7 +112,7 @@ Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c
if (!(action & CPU_TASKS_FROZEN))
cmci_clear();
for (i = 0; i < banks; i++) {
-@@ -2186,6 +2189,7 @@ static void __cpuinit mce_reenable_cpu(v
+@@ -2202,6 +2205,7 @@ static void __cpuinit mce_reenable_cpu(void *h)
if (b->init)
wrmsrl(MSR_IA32_MCx_CTL(i), b->ctl);
}
@@ -120,7 +120,7 @@ Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c
}
/* Get notified when a cpu comes on/off. Be hotplug friendly. */
-@@ -2193,7 +2197,6 @@ static int __cpuinit
+@@ -2209,7 +2213,6 @@ static int __cpuinit
mce_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu)
{
unsigned int cpu = (unsigned long)hcpu;
@@ -128,7 +128,7 @@ Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c
switch (action) {
case CPU_ONLINE:
-@@ -2210,16 +2213,10 @@ mce_cpu_callback(struct notifier_block *
+@@ -2226,16 +2229,10 @@ mce_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu)
break;
case CPU_DOWN_PREPARE:
case CPU_DOWN_PREPARE_FROZEN:
@@ -145,3 +145,6 @@ Index: linux-3.4/arch/x86/kernel/cpu/mcheck/mce.c
smp_call_function_single(cpu, mce_reenable_cpu, &action, 1);
break;
case CPU_POST_DEAD:
+--
+1.7.10.4
+
diff --git a/patches/x86-stackprot-no-random-on-rt.patch b/patches/0202-x86-stackprotector-Avoid-random-pool-on-rt.patch
index e57cc94..76d6fa8 100644
--- a/patches/x86-stackprot-no-random-on-rt.patch
+++ b/patches/0202-x86-stackprotector-Avoid-random-pool-on-rt.patch
@@ -1,6 +1,7 @@
+From 3a89ad2c74b2ca5ae8f4e62c99134769d0681565 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Thu, 16 Dec 2010 14:25:18 +0100
-Subject: x86: stackprotector: Avoid random pool on rt
+Subject: [PATCH 202/254] x86: stackprotector: Avoid random pool on rt
CPU bringup calls into the random pool to initialize the stack
canary. During boot that works nicely even on RT as the might sleep
@@ -12,15 +13,14 @@ entropy and we rely on the TSC randomnness.
Reported-by: Carsten Emde <carsten.emde@osadl.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
arch/x86/include/asm/stackprotector.h | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
-Index: linux-3.4/arch/x86/include/asm/stackprotector.h
-===================================================================
---- linux-3.4.orig/arch/x86/include/asm/stackprotector.h
-+++ linux-3.4/arch/x86/include/asm/stackprotector.h
+diff --git a/arch/x86/include/asm/stackprotector.h b/arch/x86/include/asm/stackprotector.h
+index b5d9533..0f3d7b1 100644
+--- a/arch/x86/include/asm/stackprotector.h
++++ b/arch/x86/include/asm/stackprotector.h
@@ -57,7 +57,7 @@
*/
static __always_inline void boot_init_stack_canary(void)
@@ -30,7 +30,7 @@ Index: linux-3.4/arch/x86/include/asm/stackprotector.h
u64 tsc;
#ifdef CONFIG_X86_64
-@@ -68,8 +68,16 @@ static __always_inline void boot_init_st
+@@ -68,8 +68,16 @@ static __always_inline void boot_init_stack_canary(void)
* of randomness. The TSC only matters for very early init,
* there it already has some randomness on most systems. Later
* on during the bootup the random pool has true entropy too.
@@ -47,3 +47,6 @@ Index: linux-3.4/arch/x86/include/asm/stackprotector.h
tsc = __native_read_tsc();
canary += tsc + (tsc << 32UL);
+--
+1.7.10.4
+
diff --git a/patches/x86-use-gen-rwsem-spinlocks-rt.patch b/patches/0203-x86-Use-generic-rwsem_spinlocks-on-rt.patch
index b40e59d..0951a32 100644
--- a/patches/x86-use-gen-rwsem-spinlocks-rt.patch
+++ b/patches/0203-x86-Use-generic-rwsem_spinlocks-on-rt.patch
@@ -1,20 +1,20 @@
+From 17114f8caac8992a29fc2d14f212803706b07bba Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 26 Jul 2009 02:21:32 +0200
-Subject: x86: Use generic rwsem_spinlocks on -rt
+Subject: [PATCH 203/254] x86: Use generic rwsem_spinlocks on -rt
Simplifies the separation of anon_rw_semaphores and rw_semaphores for
-rt.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
arch/x86/Kconfig | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-Index: linux-3.4/arch/x86/Kconfig
-===================================================================
---- linux-3.4.orig/arch/x86/Kconfig
-+++ linux-3.4/arch/x86/Kconfig
+diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
+index c9866b0..f556832 100644
+--- a/arch/x86/Kconfig
++++ b/arch/x86/Kconfig
@@ -155,10 +155,10 @@ config ARCH_MAY_HAVE_PC_FDC
def_bool ISA_DMA_API
@@ -28,3 +28,6 @@ Index: linux-3.4/arch/x86/Kconfig
config ARCH_HAS_CPU_IDLE_WAIT
def_bool y
+--
+1.7.10.4
+
diff --git a/patches/x86-disable-debug-stack.patch b/patches/0204-x86-Disable-IST-stacks-for-debug-int-3-stack-fault-f.patch
index 365e550..479d909 100644
--- a/patches/x86-disable-debug-stack.patch
+++ b/patches/0204-x86-Disable-IST-stacks-for-debug-int-3-stack-fault-f.patch
@@ -1,6 +1,8 @@
+From fd81d275b85dea3f1898b6f7c37b060433a9b873 Mon Sep 17 00:00:00 2001
From: Andi Kleen <ak@suse.de>
Date: Fri, 3 Jul 2009 08:44:10 -0500
-Subject: x86: Disable IST stacks for debug/int 3/stack fault for PREEMPT_RT
+Subject: [PATCH 204/254] x86: Disable IST stacks for debug/int 3/stack fault
+ for PREEMPT_RT
Normally the x86-64 trap handlers for debug/int 3/stack fault run
on a special interrupt stack to make them more robust
@@ -41,10 +43,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/dumpstack_64.c | 4 ++++
3 files changed, 21 insertions(+), 6 deletions(-)
-Index: linux-3.4/arch/x86/include/asm/page_64_types.h
-===================================================================
---- linux-3.4.orig/arch/x86/include/asm/page_64_types.h
-+++ linux-3.4/arch/x86/include/asm/page_64_types.h
+diff --git a/arch/x86/include/asm/page_64_types.h b/arch/x86/include/asm/page_64_types.h
+index 7639dbf..0883ecd 100644
+--- a/arch/x86/include/asm/page_64_types.h
++++ b/arch/x86/include/asm/page_64_types.h
@@ -14,12 +14,21 @@
#define IRQ_STACK_ORDER 2
#define IRQ_STACK_SIZE (PAGE_SIZE << IRQ_STACK_ORDER)
@@ -73,11 +75,11 @@ Index: linux-3.4/arch/x86/include/asm/page_64_types.h
#define PUD_PAGE_SIZE (_AC(1, UL) << PUD_SHIFT)
#define PUD_PAGE_MASK (~(PUD_PAGE_SIZE-1))
-Index: linux-3.4/arch/x86/kernel/cpu/common.c
-===================================================================
---- linux-3.4.orig/arch/x86/kernel/cpu/common.c
-+++ linux-3.4/arch/x86/kernel/cpu/common.c
-@@ -1056,7 +1056,9 @@ DEFINE_PER_CPU(struct task_struct *, fpu
+diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
+index cf79302..f743261 100644
+--- a/arch/x86/kernel/cpu/common.c
++++ b/arch/x86/kernel/cpu/common.c
+@@ -1056,7 +1056,9 @@ DEFINE_PER_CPU(struct task_struct *, fpu_owner_task);
*/
static const unsigned int exception_stack_sizes[N_EXCEPTION_STACKS] = {
[0 ... N_EXCEPTION_STACKS - 1] = EXCEPTION_STKSZ,
@@ -87,10 +89,10 @@ Index: linux-3.4/arch/x86/kernel/cpu/common.c
};
static DEFINE_PER_CPU_PAGE_ALIGNED(char, exception_stacks
-Index: linux-3.4/arch/x86/kernel/dumpstack_64.c
-===================================================================
---- linux-3.4.orig/arch/x86/kernel/dumpstack_64.c
-+++ linux-3.4/arch/x86/kernel/dumpstack_64.c
+diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c
+index 17107bd..9d50b30 100644
+--- a/arch/x86/kernel/dumpstack_64.c
++++ b/arch/x86/kernel/dumpstack_64.c
@@ -21,10 +21,14 @@
(N_EXCEPTION_STACKS + DEBUG_STKSZ/EXCEPTION_STKSZ - 2)
@@ -106,3 +108,6 @@ Index: linux-3.4/arch/x86/kernel/dumpstack_64.c
[ MCE_STACK-1 ] = "#MC",
#if DEBUG_STKSZ > EXCEPTION_STKSZ
[ N_EXCEPTION_STACKS ...
+--
+1.7.10.4
+
diff --git a/patches/workqueue-use-get-cpu-light.patch b/patches/0205-workqueue-use-get-cpu-light.patch.patch
index 99d9f32..8bb7a0b 100644
--- a/patches/workqueue-use-get-cpu-light.patch
+++ b/patches/0205-workqueue-use-get-cpu-light.patch.patch
@@ -1,17 +1,18 @@
-Subject: workqueue-use-get-cpu-light.patch
+From 38e29726b7881eebda42ae2b71bbaef0ecaf96ad Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 17 Jul 2011 21:42:26 +0200
+Subject: [PATCH 205/254] workqueue-use-get-cpu-light.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/workqueue.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-Index: linux-3.4/kernel/workqueue.c
-===================================================================
---- linux-3.4.orig/kernel/workqueue.c
-+++ linux-3.4/kernel/workqueue.c
-@@ -1058,8 +1058,8 @@ int queue_work(struct workqueue_struct *
+diff --git a/kernel/workqueue.c b/kernel/workqueue.c
+index 3fd5280..33d1095 100644
+--- a/kernel/workqueue.c
++++ b/kernel/workqueue.c
+@@ -1058,8 +1058,8 @@ int queue_work(struct workqueue_struct *wq, struct work_struct *work)
{
int ret;
@@ -22,3 +23,6 @@ Index: linux-3.4/kernel/workqueue.c
return ret;
}
+--
+1.7.10.4
+
diff --git a/patches/epoll-use-get-cpu-light.patch b/patches/0206-epoll.patch.patch
index e706ea7..1f852cd 100644
--- a/patches/epoll-use-get-cpu-light.patch
+++ b/patches/0206-epoll.patch.patch
@@ -1,17 +1,18 @@
-Subject: epoll.patch
+From 6e413cd229ba88f8faa0f52b4609b13525bd35f0 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Fri, 08 Jul 2011 16:35:35 +0200
+Date: Fri, 8 Jul 2011 16:35:35 +0200
+Subject: [PATCH 206/254] epoll.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
fs/eventpoll.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-Index: linux-3.4/fs/eventpoll.c
-===================================================================
---- linux-3.4.orig/fs/eventpoll.c
-+++ linux-3.4/fs/eventpoll.c
-@@ -488,12 +488,12 @@ static int ep_poll_wakeup_proc(void *pri
+diff --git a/fs/eventpoll.c b/fs/eventpoll.c
+index c0b3c70..39a2364 100644
+--- a/fs/eventpoll.c
++++ b/fs/eventpoll.c
+@@ -488,12 +488,12 @@ static int ep_poll_wakeup_proc(void *priv, void *cookie, int call_nests)
*/
static void ep_poll_safewake(wait_queue_head_t *wq)
{
@@ -26,3 +27,6 @@ Index: linux-3.4/fs/eventpoll.c
}
static void ep_remove_wait_queue(struct eppoll_entry *pwq)
+--
+1.7.10.4
+
diff --git a/patches/mm-vmalloc-use-get-cpu-light.patch b/patches/0207-mm-vmalloc.patch.patch
index 82c485e..7500521 100644
--- a/patches/mm-vmalloc-use-get-cpu-light.patch
+++ b/patches/0207-mm-vmalloc.patch.patch
@@ -1,17 +1,18 @@
-Subject: mm-vmalloc.patch
+From acbe781b028928b5c94a975d2541009ec7fd7b4d Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 12 Jul 2011 11:39:36 +0200
+Subject: [PATCH 207/254] mm-vmalloc.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
mm/vmalloc.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
-Index: linux-3.4/mm/vmalloc.c
-===================================================================
---- linux-3.4.orig/mm/vmalloc.c
-+++ linux-3.4/mm/vmalloc.c
-@@ -782,7 +782,7 @@ static struct vmap_block *new_vmap_block
+diff --git a/mm/vmalloc.c b/mm/vmalloc.c
+index 94dff88..b852968 100644
+--- a/mm/vmalloc.c
++++ b/mm/vmalloc.c
+@@ -782,7 +782,7 @@ static struct vmap_block *new_vmap_block(gfp_t gfp_mask)
struct vmap_block *vb;
struct vmap_area *va;
unsigned long vb_idx;
@@ -20,7 +21,7 @@ Index: linux-3.4/mm/vmalloc.c
node = numa_node_id();
-@@ -821,12 +821,13 @@ static struct vmap_block *new_vmap_block
+@@ -821,12 +821,13 @@ static struct vmap_block *new_vmap_block(gfp_t gfp_mask)
BUG_ON(err);
radix_tree_preload_end();
@@ -36,7 +37,7 @@ Index: linux-3.4/mm/vmalloc.c
return vb;
}
-@@ -900,7 +901,7 @@ static void *vb_alloc(unsigned long size
+@@ -900,7 +901,7 @@ static void *vb_alloc(unsigned long size, gfp_t gfp_mask)
struct vmap_block *vb;
unsigned long addr = 0;
unsigned int order;
@@ -45,7 +46,7 @@ Index: linux-3.4/mm/vmalloc.c
BUG_ON(size & ~PAGE_MASK);
BUG_ON(size > PAGE_SIZE*VMAP_MAX_ALLOC);
-@@ -908,7 +909,8 @@ static void *vb_alloc(unsigned long size
+@@ -908,7 +909,8 @@ static void *vb_alloc(unsigned long size, gfp_t gfp_mask)
again:
rcu_read_lock();
@@ -64,3 +65,6 @@ Index: linux-3.4/mm/vmalloc.c
rcu_read_unlock();
if (!addr) {
+--
+1.7.10.4
+
diff --git a/patches/workqueue-sanity.patch b/patches/0208-workqueue-Fix-cpuhotplug-trainwreck.patch
index 7995c22..f785c0f 100644
--- a/patches/workqueue-sanity.patch
+++ b/patches/0208-workqueue-Fix-cpuhotplug-trainwreck.patch
@@ -1,6 +1,7 @@
-Subject: workqueue: Fix cpuhotplug trainwreck
+From 008de7041b9fabee84fadcb0eb56fbab8a94ba27 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
-Date: Fri Sep 30 11:57:58 CEST 2011
+Date: Fri, 30 Sep 2011 11:57:58 +0200
+Subject: [PATCH 208/254] workqueue: Fix cpuhotplug trainwreck
The current workqueue code does crazy stuff on cpu unplug, it relies on
forced affine breakage, thereby violating per-cpu expectations. Worse,
@@ -27,15 +28,15 @@ this and loose ~250 lines of code.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- include/linux/cpu.h | 6
- include/linux/workqueue.h | 5
- kernel/workqueue.c | 560 ++++++++++++----------------------------------
- 3 files changed, 154 insertions(+), 417 deletions(-)
+ include/linux/cpu.h | 6 +-
+ include/linux/workqueue.h | 5 +-
+ kernel/workqueue.c | 556 ++++++++++++---------------------------------
+ 3 files changed, 152 insertions(+), 415 deletions(-)
-Index: linux-3.4/include/linux/cpu.h
-===================================================================
---- linux-3.4.orig/include/linux/cpu.h
-+++ linux-3.4/include/linux/cpu.h
+diff --git a/include/linux/cpu.h b/include/linux/cpu.h
+index 00d2f6f8..a6bda1b 100644
+--- a/include/linux/cpu.h
++++ b/include/linux/cpu.h
@@ -75,8 +75,10 @@ enum {
/* migration should happen before other stuff but after perf */
CPU_PRI_PERF = 20,
@@ -49,10 +50,10 @@ Index: linux-3.4/include/linux/cpu.h
};
#define CPU_ONLINE 0x0002 /* CPU (unsigned)v is up */
-Index: linux-3.4/include/linux/workqueue.h
-===================================================================
---- linux-3.4.orig/include/linux/workqueue.h
-+++ linux-3.4/include/linux/workqueue.h
+diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
+index af15545..9849be1 100644
+--- a/include/linux/workqueue.h
++++ b/include/linux/workqueue.h
@@ -254,9 +254,10 @@ enum {
WQ_MEM_RECLAIM = 1 << 3, /* may be used for memory reclaim */
WQ_HIGHPRI = 1 << 4, /* high priority */
@@ -66,10 +67,10 @@ Index: linux-3.4/include/linux/workqueue.h
WQ_MAX_ACTIVE = 512, /* I like 512, better ideas? */
WQ_MAX_UNBOUND_PER_CPU = 4, /* 4 * #cpus for unbound wq */
-Index: linux-3.4/kernel/workqueue.c
-===================================================================
---- linux-3.4.orig/kernel/workqueue.c
-+++ linux-3.4/kernel/workqueue.c
+diff --git a/kernel/workqueue.c b/kernel/workqueue.c
+index 33d1095..ba977c4 100644
+--- a/kernel/workqueue.c
++++ b/kernel/workqueue.c
@@ -41,6 +41,7 @@
#include <linux/debug_locks.h>
#include <linux/lockdep.h>
@@ -86,7 +87,9 @@ Index: linux-3.4/kernel/workqueue.c
- WORKER_REBIND = 1 << 5, /* mom is home, come back */
- WORKER_CPU_INTENSIVE = 1 << 6, /* cpu intensive */
- WORKER_UNBOUND = 1 << 7, /* worker is unbound */
--
++ WORKER_CPU_INTENSIVE = 1 << 4, /* cpu intensive */
++ WORKER_UNBOUND = 1 << 5, /* worker is unbound */
+
- WORKER_NOT_RUNNING = WORKER_PREP | WORKER_ROGUE | WORKER_REBIND |
- WORKER_CPU_INTENSIVE | WORKER_UNBOUND,
-
@@ -96,9 +99,6 @@ Index: linux-3.4/kernel/workqueue.c
- TRUSTEE_BUTCHER = 2, /* butcher workers */
- TRUSTEE_RELEASE = 3, /* release workers */
- TRUSTEE_DONE = 4, /* trustee is done */
-+ WORKER_CPU_INTENSIVE = 1 << 4, /* cpu intensive */
-+ WORKER_UNBOUND = 1 << 5, /* worker is unbound */
-+
+ WORKER_NOT_RUNNING = WORKER_PREP | WORKER_CPU_INTENSIVE | WORKER_UNBOUND,
BUSY_WORKER_HASH_ORDER = 6, /* 64 pointers */
@@ -131,7 +131,7 @@ Index: linux-3.4/kernel/workqueue.c
} ____cacheline_aligned_in_smp;
/*
-@@ -969,13 +956,38 @@ static bool is_chained_work(struct workq
+@@ -969,13 +956,38 @@ static bool is_chained_work(struct workqueue_struct *wq)
return false;
}
@@ -173,7 +173,7 @@ Index: linux-3.4/kernel/workqueue.c
unsigned long flags;
debug_work_activate(work);
-@@ -1021,27 +1033,32 @@ static void __queue_work(unsigned int cp
+@@ -1021,27 +1033,32 @@ static void __queue_work(unsigned int cpu, struct workqueue_struct *wq,
spin_lock_irqsave(&gcwq->lock, flags);
}
@@ -223,7 +223,7 @@ Index: linux-3.4/kernel/workqueue.c
}
/**
-@@ -1058,34 +1075,19 @@ int queue_work(struct workqueue_struct *
+@@ -1058,34 +1075,19 @@ int queue_work(struct workqueue_struct *wq, struct work_struct *work)
{
int ret;
@@ -261,7 +261,7 @@ Index: linux-3.4/kernel/workqueue.c
}
EXPORT_SYMBOL_GPL(queue_work_on);
-@@ -1131,6 +1133,8 @@ int queue_delayed_work_on(int cpu, struc
+@@ -1131,6 +1133,8 @@ int queue_delayed_work_on(int cpu, struct workqueue_struct *wq,
struct timer_list *timer = &dwork->timer;
struct work_struct *work = &dwork->work;
@@ -270,7 +270,7 @@ Index: linux-3.4/kernel/workqueue.c
if (!test_and_set_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(work))) {
unsigned int lcpu;
-@@ -1196,12 +1200,13 @@ static void worker_enter_idle(struct wor
+@@ -1196,12 +1200,13 @@ static void worker_enter_idle(struct worker *worker)
/* idle_list is LIFO */
list_add(&worker->entry, &gcwq->idle_list);
@@ -322,7 +322,7 @@ Index: linux-3.4/kernel/workqueue.c
/* on creation a worker is in !idle && prep state */
worker->flags = WORKER_PREP;
}
-@@ -1658,13 +1645,6 @@ static bool manage_workers(struct worker
+@@ -1658,13 +1645,6 @@ static bool manage_workers(struct worker *worker)
gcwq->flags &= ~GCWQ_MANAGING_WORKERS;
@@ -537,7 +537,10 @@ Index: linux-3.4/kernel/workqueue.c
- */
- gcwq->trustee_state = TRUSTEE_IN_CHARGE;
- wake_up_all(&gcwq->trustee_wait);
--
++ if (wq->flags & WQ_NON_AFFINE)
++ list_move(&work->entry, &non_affine_works);
++ }
+
- /*
- * The original cpu is in the process of dying and may go away
- * anytime now. When that happens, we and all workers would
@@ -551,15 +554,11 @@ Index: linux-3.4/kernel/workqueue.c
- while (gcwq->nr_workers != gcwq->nr_idle ||
- gcwq->flags & GCWQ_FREEZING ||
- gcwq->trustee_state == TRUSTEE_IN_CHARGE) {
-+ if (wq->flags & WQ_NON_AFFINE)
-+ list_move(&work->entry, &non_affine_works);
-+ }
-+
+ while (!list_empty(&gcwq->worklist)) {
int nr_works = 0;
list_for_each_entry(work, &gcwq->worklist, entry) {
-@@ -3383,200 +3263,55 @@ static int __cpuinit trustee_thread(void
+@@ -3383,200 +3263,55 @@ static int __cpuinit trustee_thread(void *__gcwq)
wake_up_process(worker->task);
}
@@ -607,7 +606,9 @@ Index: linux-3.4/kernel/workqueue.c
- for_each_busy_worker(worker, i, pos, gcwq) {
- struct work_struct *rebind_work = &worker->rebind_work;
--
++ spin_lock_irq(&gcwq->lock);
++ }
+
- /*
- * Rebind_work may race with future cpu hotplug
- * operations. Use a separate flag to mark that
@@ -615,27 +616,25 @@ Index: linux-3.4/kernel/workqueue.c
- */
- worker->flags |= WORKER_REBIND;
- worker->flags &= ~WORKER_ROGUE;
-+ spin_lock_irq(&gcwq->lock);
-+ }
++ WARN_ON(gcwq->nr_workers != gcwq->nr_idle);
- /* queue rebind_work, wq doesn't matter, use the default one */
- if (test_and_set_bit(WORK_STRUCT_PENDING_BIT,
- work_data_bits(rebind_work)))
- continue;
-+ WARN_ON(gcwq->nr_workers != gcwq->nr_idle);
++ list_for_each_entry_safe(worker, n, &gcwq->idle_list, entry)
++ destroy_worker(worker);
- debug_work_activate(rebind_work);
- insert_work(get_cwq(gcwq->cpu, system_wq), rebind_work,
- worker->scheduled.next,
- work_color_to_flags(WORK_NO_COLOR));
- }
-+ list_for_each_entry_safe(worker, n, &gcwq->idle_list, entry)
-+ destroy_worker(worker);
++ WARN_ON(gcwq->nr_workers || gcwq->nr_idle);
- /* relinquish manager role */
- gcwq->flags &= ~GCWQ_MANAGING_WORKERS;
-+ WARN_ON(gcwq->nr_workers || gcwq->nr_idle);
-
+-
- /* notify completion */
- gcwq->trustee = NULL;
- gcwq->trustee_state = TRUSTEE_DONE;
@@ -806,3 +805,6 @@ Index: linux-3.4/kernel/workqueue.c
}
/* create the initial worker */
+--
+1.7.10.4
+
diff --git a/patches/workqueue-fix-PF_THREAD_BOUND.patch b/patches/0209-workqueue-Fix-PF_THREAD_BOUND-abuse.patch
index ef12b06..bb0190c 100644
--- a/patches/workqueue-fix-PF_THREAD_BOUND.patch
+++ b/patches/0209-workqueue-Fix-PF_THREAD_BOUND-abuse.patch
@@ -1,6 +1,7 @@
-Subject: workqueue: Fix PF_THREAD_BOUND abuse
+From b94b06f3787d4a380958d6783a05a4c2a576751c Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
-Date: Mon Oct 03 12:43:25 CEST 2011
+Date: Mon, 3 Oct 2011 12:43:25 +0200
+Subject: [PATCH 209/254] workqueue: Fix PF_THREAD_BOUND abuse
PF_THREAD_BOUND is set by kthread_bind() and means the thread is bound
to a particular cpu for correctness. The workqueue code abuses this
@@ -28,10 +29,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/workqueue.c | 29 ++++++++++++++++++++---------
1 file changed, 20 insertions(+), 9 deletions(-)
-Index: linux-3.4/kernel/workqueue.c
-===================================================================
---- linux-3.4.orig/kernel/workqueue.c
-+++ linux-3.4/kernel/workqueue.c
+diff --git a/kernel/workqueue.c b/kernel/workqueue.c
+index ba977c4..dc50d5d 100644
+--- a/kernel/workqueue.c
++++ b/kernel/workqueue.c
@@ -1283,8 +1283,14 @@ __acquires(&gcwq->lock)
return false;
if (task_cpu(task) == gcwq->cpu &&
@@ -67,7 +68,7 @@ Index: linux-3.4/kernel/workqueue.c
static struct worker *alloc_worker(void)
{
struct worker *worker;
-@@ -1360,15 +1378,9 @@ static struct worker *create_worker(stru
+@@ -1360,15 +1378,9 @@ static struct worker *create_worker(struct global_cwq *gcwq, bool bind)
if (IS_ERR(worker->task))
goto fail;
@@ -92,7 +93,7 @@ Index: linux-3.4/kernel/workqueue.c
}
schedule();
-@@ -2995,7 +3007,6 @@ struct workqueue_struct *__alloc_workque
+@@ -2995,7 +3007,6 @@ struct workqueue_struct *__alloc_workqueue_key(const char *fmt,
if (IS_ERR(rescuer->task))
goto err;
@@ -100,3 +101,6 @@ Index: linux-3.4/kernel/workqueue.c
wake_up_process(rescuer->task);
}
+--
+1.7.10.4
+
diff --git a/patches/workqueue-hotplug-fix.patch b/patches/0210-workqueue-Use-get_cpu_light-in-flush_gcwq.patch
index 804d359..5ca7c89 100644
--- a/patches/workqueue-hotplug-fix.patch
+++ b/patches/0210-workqueue-Use-get_cpu_light-in-flush_gcwq.patch
@@ -1,6 +1,7 @@
-Subject: workqueue: Use get_cpu_light() in flush_gcwq()
+From 14434bb5624ef99ee80a2e898b14d9d1b2c3057b Mon Sep 17 00:00:00 2001
From: Yong Zhang <yong.zhang0@gmail.com>
Date: Sun, 16 Oct 2011 18:56:46 +0800
+Subject: [PATCH 210/254] workqueue: Use get_cpu_light() in flush_gcwq()
BUG: sleeping function called from invalid context at kernel/rtmutex.c:645
in_atomic(): 1, irqs_disabled(): 0, pid: 1739, name: bash
@@ -58,11 +59,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/workqueue.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-Index: linux-3.4/kernel/workqueue.c
-===================================================================
---- linux-3.4.orig/kernel/workqueue.c
-+++ linux-3.4/kernel/workqueue.c
-@@ -3297,14 +3297,14 @@ static void flush_gcwq(struct global_cwq
+diff --git a/kernel/workqueue.c b/kernel/workqueue.c
+index dc50d5d..d3da5a8 100644
+--- a/kernel/workqueue.c
++++ b/kernel/workqueue.c
+@@ -3297,14 +3297,14 @@ static void flush_gcwq(struct global_cwq *gcwq)
spin_unlock_irq(&gcwq->lock);
@@ -79,3 +80,6 @@ Index: linux-3.4/kernel/workqueue.c
}
static int __devinit workqueue_cpu_down_callback(struct notifier_block *nfb,
+--
+1.7.10.4
+
diff --git a/patches/workqueue-more-hotplug-fallout.patch b/patches/0211-hotplug-stuff.patch.patch
index 99b4f5c..d751c32 100644
--- a/patches/workqueue-more-hotplug-fallout.patch
+++ b/patches/0211-hotplug-stuff.patch.patch
@@ -1,6 +1,7 @@
-Subject: hotplug-stuff.patch
+From 85e7f33e2015f71bfeb18f5d1aa6c21b9e6e93c3 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Fri, 04 Nov 2011 18:58:24 +0100
+Date: Fri, 4 Nov 2011 18:58:24 +0100
+Subject: [PATCH 211/254] hotplug-stuff.patch
Do not take lock for non handled cases (might be atomic context)
@@ -9,11 +10,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/workqueue.c | 5 +++++
1 file changed, 5 insertions(+)
-Index: linux-3.4/kernel/workqueue.c
-===================================================================
---- linux-3.4.orig/kernel/workqueue.c
-+++ linux-3.4/kernel/workqueue.c
-@@ -3215,6 +3215,11 @@ static int __devinit workqueue_cpu_up_ca
+diff --git a/kernel/workqueue.c b/kernel/workqueue.c
+index d3da5a8..bc867e8 100644
+--- a/kernel/workqueue.c
++++ b/kernel/workqueue.c
+@@ -3215,6 +3215,11 @@ static int __devinit workqueue_cpu_up_callback(struct notifier_block *nfb,
new_worker = create_worker(gcwq, false);
if (!new_worker)
return NOTIFY_BAD;
@@ -25,3 +26,6 @@ Index: linux-3.4/kernel/workqueue.c
}
/* some are called w/ irq disabled, don't disturb irq status */
+--
+1.7.10.4
+
diff --git a/patches/debugobjects-rt.patch b/patches/0212-debugobjects-rt.patch.patch
index cdbcddb..dd6b6bd 100644
--- a/patches/debugobjects-rt.patch
+++ b/patches/0212-debugobjects-rt.patch.patch
@@ -1,17 +1,18 @@
-Subject: debugobjects-rt.patch
+From 9a9a3cdff8aab5ae9a38ccd7a9fc6234d1fbd5db Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 17 Jul 2011 21:41:35 +0200
+Subject: [PATCH 212/254] debugobjects-rt.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
lib/debugobjects.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
-Index: linux-3.4/lib/debugobjects.c
-===================================================================
---- linux-3.4.orig/lib/debugobjects.c
-+++ linux-3.4/lib/debugobjects.c
-@@ -310,7 +310,10 @@ __debug_object_init(void *addr, struct d
+diff --git a/lib/debugobjects.c b/lib/debugobjects.c
+index 0ab9ae8..84c2f50 100644
+--- a/lib/debugobjects.c
++++ b/lib/debugobjects.c
+@@ -310,7 +310,10 @@ __debug_object_init(void *addr, struct debug_obj_descr *descr, int onstack)
struct debug_obj *obj;
unsigned long flags;
@@ -23,7 +24,7 @@ Index: linux-3.4/lib/debugobjects.c
db = get_bucket((unsigned long) addr);
-@@ -1053,9 +1056,9 @@ static int __init debug_objects_replace_
+@@ -1053,9 +1056,9 @@ static int __init debug_objects_replace_static_objects(void)
}
}
@@ -34,3 +35,6 @@ Index: linux-3.4/lib/debugobjects.c
return 0;
free:
hlist_for_each_entry_safe(obj, node, tmp, &objects, node) {
+--
+1.7.10.4
+
diff --git a/patches/jump-label-rt.patch b/patches/0213-jump-label-rt.patch.patch
index f141dc1..b0378ff 100644
--- a/patches/jump-label-rt.patch
+++ b/patches/0213-jump-label-rt.patch.patch
@@ -1,16 +1,17 @@
-Subject: jump-label-rt.patch
+From 0a231456704cecda016d3f3ae7067f7d3b4b6d88 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 13 Jul 2011 11:03:16 +0200
+Subject: [PATCH 213/254] jump-label-rt.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
include/linux/jump_label.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-Index: linux-3.4/include/linux/jump_label.h
-===================================================================
---- linux-3.4.orig/include/linux/jump_label.h
-+++ linux-3.4/include/linux/jump_label.h
+diff --git a/include/linux/jump_label.h b/include/linux/jump_label.h
+index c513a40..f47f3e0 100644
+--- a/include/linux/jump_label.h
++++ b/include/linux/jump_label.h
@@ -51,7 +51,8 @@
#include <linux/compiler.h>
#include <linux/workqueue.h>
@@ -21,3 +22,6 @@ Index: linux-3.4/include/linux/jump_label.h
struct static_key {
atomic_t enabled;
+--
+1.7.10.4
+
diff --git a/patches/skbufhead-raw-lock.patch b/patches/0214-skbufhead-raw-lock.patch.patch
index b58cce7..a5bf74e 100644
--- a/patches/skbufhead-raw-lock.patch
+++ b/patches/0214-skbufhead-raw-lock.patch.patch
@@ -1,6 +1,7 @@
-Subject: skbufhead-raw-lock.patch
+From 94c95413115480f4e886da598bbf94d3167c2e50 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 12 Jul 2011 15:38:34 +0200
+Subject: [PATCH 214/254] skbufhead-raw-lock.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -9,11 +10,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
net/core/dev.c | 26 ++++++++++++++++++++------
3 files changed, 28 insertions(+), 6 deletions(-)
-Index: linux-3.4/include/linux/netdevice.h
-===================================================================
---- linux-3.4.orig/include/linux/netdevice.h
-+++ linux-3.4/include/linux/netdevice.h
-@@ -1743,6 +1743,7 @@ struct softnet_data {
+diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
+index 33900a5..1fcc9ba 100644
+--- a/include/linux/netdevice.h
++++ b/include/linux/netdevice.h
+@@ -1734,6 +1734,7 @@ struct softnet_data {
unsigned dropped;
struct sk_buff_head input_pkt_queue;
struct napi_struct backlog;
@@ -21,10 +22,10 @@ Index: linux-3.4/include/linux/netdevice.h
};
static inline void input_queue_head_incr(struct softnet_data *sd)
-Index: linux-3.4/include/linux/skbuff.h
-===================================================================
---- linux-3.4.orig/include/linux/skbuff.h
-+++ linux-3.4/include/linux/skbuff.h
+diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
+index 111f26b..fc97282 100644
+--- a/include/linux/skbuff.h
++++ b/include/linux/skbuff.h
@@ -132,6 +132,7 @@ struct sk_buff_head {
__u32 qlen;
@@ -33,7 +34,7 @@ Index: linux-3.4/include/linux/skbuff.h
};
struct sk_buff;
-@@ -967,6 +968,12 @@ static inline void skb_queue_head_init(s
+@@ -967,6 +968,12 @@ static inline void skb_queue_head_init(struct sk_buff_head *list)
__skb_queue_head_init(list);
}
@@ -46,11 +47,11 @@ Index: linux-3.4/include/linux/skbuff.h
static inline void skb_queue_head_init_class(struct sk_buff_head *list,
struct lock_class_key *class)
{
-Index: linux-3.4/net/core/dev.c
-===================================================================
---- linux-3.4.orig/net/core/dev.c
-+++ linux-3.4/net/core/dev.c
-@@ -220,14 +220,14 @@ static inline struct hlist_head *dev_ind
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 8b645be..4e15710 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -220,14 +220,14 @@ static inline struct hlist_head *dev_index_hash(struct net *net, int ifindex)
static inline void rps_lock(struct softnet_data *sd)
{
#ifdef CONFIG_RPS
@@ -67,7 +68,7 @@ Index: linux-3.4/net/core/dev.c
#endif
}
-@@ -3353,7 +3353,7 @@ static void flush_backlog(void *arg)
+@@ -3327,7 +3327,7 @@ static void flush_backlog(void *arg)
skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) {
if (skb->dev == dev) {
__skb_unlink(skb, &sd->input_pkt_queue);
@@ -76,7 +77,7 @@ Index: linux-3.4/net/core/dev.c
input_queue_head_incr(sd);
}
}
-@@ -3362,10 +3362,13 @@ static void flush_backlog(void *arg)
+@@ -3336,10 +3336,13 @@ static void flush_backlog(void *arg)
skb_queue_walk_safe(&sd->process_queue, skb, tmp) {
if (skb->dev == dev) {
__skb_unlink(skb, &sd->process_queue);
@@ -91,7 +92,7 @@ Index: linux-3.4/net/core/dev.c
}
static int napi_gro_complete(struct sk_buff *skb)
-@@ -3849,10 +3852,17 @@ static void net_rx_action(struct softirq
+@@ -3823,10 +3826,17 @@ static void net_rx_action(struct softirq_action *h)
struct softnet_data *sd = &__get_cpu_var(softnet_data);
unsigned long time_limit = jiffies + 2;
int budget = netdev_budget;
@@ -109,7 +110,7 @@ Index: linux-3.4/net/core/dev.c
while (!list_empty(&sd->poll_list)) {
struct napi_struct *n;
int work, weight;
-@@ -6279,6 +6289,9 @@ static int dev_cpu_callback(struct notif
+@@ -6253,6 +6263,9 @@ static int dev_cpu_callback(struct notifier_block *nfb,
netif_rx(skb);
input_queue_head_incr(oldsd);
}
@@ -119,7 +120,7 @@ Index: linux-3.4/net/core/dev.c
return NOTIFY_OK;
}
-@@ -6542,8 +6555,9 @@ static int __init net_dev_init(void)
+@@ -6516,8 +6529,9 @@ static int __init net_dev_init(void)
struct softnet_data *sd = &per_cpu(softnet_data, i);
memset(sd, 0, sizeof(*sd));
@@ -131,3 +132,6 @@ Index: linux-3.4/net/core/dev.c
sd->completion_queue = NULL;
INIT_LIST_HEAD(&sd->poll_list);
sd->output_queue = NULL;
+--
+1.7.10.4
+
diff --git a/patches/perf-move-irq-work-to-softirq-in-rt.patch b/patches/0215-x86-no-perf-irq-work-rt.patch.patch
index 982fb01..f21d18c 100644
--- a/patches/perf-move-irq-work-to-softirq-in-rt.patch
+++ b/patches/0215-x86-no-perf-irq-work-rt.patch.patch
@@ -1,6 +1,7 @@
-Subject: x86-no-perf-irq-work-rt.patch
+From 5e442c5442292fce309d8b97742a310691868f52 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 13 Jul 2011 14:05:05 +0200
+Subject: [PATCH 215/254] x86-no-perf-irq-work-rt.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -9,11 +10,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/timer.c | 6 +++++-
3 files changed, 9 insertions(+), 1 deletion(-)
-Index: linux-3.4/arch/x86/kernel/irq_work.c
-===================================================================
---- linux-3.4.orig/arch/x86/kernel/irq_work.c
-+++ linux-3.4/arch/x86/kernel/irq_work.c
-@@ -18,6 +18,7 @@ void smp_irq_work_interrupt(struct pt_re
+diff --git a/arch/x86/kernel/irq_work.c b/arch/x86/kernel/irq_work.c
+index ca8f703..129b8bb 100644
+--- a/arch/x86/kernel/irq_work.c
++++ b/arch/x86/kernel/irq_work.c
+@@ -18,6 +18,7 @@ void smp_irq_work_interrupt(struct pt_regs *regs)
irq_exit();
}
@@ -26,10 +27,10 @@ Index: linux-3.4/arch/x86/kernel/irq_work.c
#endif
}
+#endif
-Index: linux-3.4/kernel/irq_work.c
-===================================================================
---- linux-3.4.orig/kernel/irq_work.c
-+++ linux-3.4/kernel/irq_work.c
+diff --git a/kernel/irq_work.c b/kernel/irq_work.c
+index 1588e3b..170c2ea 100644
+--- a/kernel/irq_work.c
++++ b/kernel/irq_work.c
@@ -107,8 +107,10 @@ void irq_work_run(void)
if (llist_empty(this_list))
return;
@@ -41,10 +42,10 @@ Index: linux-3.4/kernel/irq_work.c
llnode = llist_del_all(this_list);
while (llnode != NULL) {
-Index: linux-3.4/kernel/timer.c
-===================================================================
---- linux-3.4.orig/kernel/timer.c
-+++ linux-3.4/kernel/timer.c
+diff --git a/kernel/timer.c b/kernel/timer.c
+index f6f2958..935f46d 100644
+--- a/kernel/timer.c
++++ b/kernel/timer.c
@@ -1412,7 +1412,7 @@ void update_process_times(int user_tick)
scheduler_tick();
run_local_timers();
@@ -54,7 +55,7 @@ Index: linux-3.4/kernel/timer.c
if (in_irq())
irq_work_run();
#endif
-@@ -1426,6 +1426,10 @@ static void run_timer_softirq(struct sof
+@@ -1426,6 +1426,10 @@ static void run_timer_softirq(struct softirq_action *h)
{
struct tvec_base *base = __this_cpu_read(tvec_bases);
@@ -65,3 +66,6 @@ Index: linux-3.4/kernel/timer.c
printk_tick();
hrtimer_run_pending();
+--
+1.7.10.4
+
diff --git a/patches/console-make-rt-friendly.patch b/patches/0216-console-make-rt-friendly.patch.patch
index 6cd2477..fc28006 100644
--- a/patches/console-make-rt-friendly.patch
+++ b/patches/0216-console-make-rt-friendly.patch.patch
@@ -1,17 +1,18 @@
-Subject: console-make-rt-friendly.patch
+From 507c4332d4927f598030bffd1125fcb92aa27caf Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 17 Jul 2011 22:43:07 +0200
+Subject: [PATCH 216/254] console-make-rt-friendly.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/printk.c | 26 +++++++++++++++++++++++---
1 file changed, 23 insertions(+), 3 deletions(-)
-Index: linux-3.4/kernel/printk.c
-===================================================================
---- linux-3.4.orig/kernel/printk.c
-+++ linux-3.4/kernel/printk.c
-@@ -507,6 +507,7 @@ static void __call_console_drivers(unsig
+diff --git a/kernel/printk.c b/kernel/printk.c
+index 9a27a94..28baa36 100644
+--- a/kernel/printk.c
++++ b/kernel/printk.c
+@@ -507,6 +507,7 @@ static void __call_console_drivers(unsigned start, unsigned end)
{
struct console *con;
@@ -19,7 +20,7 @@ Index: linux-3.4/kernel/printk.c
for_each_console(con) {
if (exclusive_console && con != exclusive_console)
continue;
-@@ -515,6 +516,7 @@ static void __call_console_drivers(unsig
+@@ -515,6 +516,7 @@ static void __call_console_drivers(unsigned start, unsigned end)
(con->flags & CON_ANYTIME)))
con->write(con, &LOG_BUF(start), end - start);
}
@@ -27,7 +28,7 @@ Index: linux-3.4/kernel/printk.c
}
#ifdef CONFIG_EARLY_PRINTK
-@@ -839,12 +841,18 @@ static inline int can_use_console(unsign
+@@ -839,12 +841,18 @@ static inline int can_use_console(unsigned int cpu)
* interrupts disabled. It should return with 'lockbuf_lock'
* released but interrupts still disabled.
*/
@@ -48,7 +49,7 @@ Index: linux-3.4/kernel/printk.c
retval = 1;
/*
-@@ -1021,8 +1029,15 @@ asmlinkage int vprintk(const char *fmt,
+@@ -1021,8 +1029,15 @@ asmlinkage int vprintk(const char *fmt, va_list args)
* will release 'logbuf_lock' regardless of whether it
* actually gets the semaphore or not.
*/
@@ -82,3 +83,6 @@ Index: linux-3.4/kernel/printk.c
}
console_locked = 0;
+--
+1.7.10.4
+
diff --git a/patches/fix-printk-flush-of-messages-1.patch b/patches/0217-fix-printk-flush-of-messages.patch
index 093be03..90aa902 100644
--- a/patches/fix-printk-flush-of-messages-1.patch
+++ b/patches/0217-fix-printk-flush-of-messages.patch
@@ -1,7 +1,7 @@
-Subject: fix printk flush of messages
+From 0dd23da86ddf5dcf89763af6254c29db05d6d6a4 Mon Sep 17 00:00:00 2001
From: Frank Rowand <frank.rowand@am.sony.com>
Date: Wed, 16 May 2012 18:09:36 -0700
-
+Subject: [PATCH 217/254] fix printk flush of messages
Updates console-make-rt-friendly.patch
@@ -26,11 +26,9 @@ printk() because:
console_unlock()
# this is where the printk() output would be flushed
-
On system boot some printk() output is flushed because register_console()
and tty_open() call console_unlock().
-
This change also fixes the problem that was previously fixed by
preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch
@@ -38,16 +36,15 @@ Signed-off-by: Frank Rowand <frank.rowand@am.sony.com>
Cc: Frank <Frank_Rowand@sonyusa.com>
Link: http://lkml.kernel.org/r/4FB44FD0.4090800@am.sony.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
- kernel/printk.c | 2 1 + 1 - 0 !
+ kernel/printk.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: b/kernel/printk.c
-===================================================================
+diff --git a/kernel/printk.c b/kernel/printk.c
+index 28baa36..7109711 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
-@@ -847,7 +847,7 @@ static int console_trylock_for_printk(un
+@@ -847,7 +847,7 @@ static int console_trylock_for_printk(unsigned int cpu, unsigned long flags)
int retval = 0, wake = 0;
#ifdef CONFIG_PREEMPT_RT_FULL
int lock = !early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
@@ -56,10 +53,6 @@ Index: b/kernel/printk.c
#else
int lock = 1;
#endif
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-
+--
+1.7.10.4
diff --git a/patches/power-use-generic-rwsem-on-rt.patch b/patches/0218-power-use-generic-rwsem-on-rt.patch
index 8477131..4e09c13 100644
--- a/patches/power-use-generic-rwsem-on-rt.patch
+++ b/patches/0218-power-use-generic-rwsem-on-rt.patch
@@ -1,13 +1,16 @@
+From 5e0150900328e7cb66bfcb1d93edba3486787953 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
+Date: Thu, 7 Jun 2012 07:47:08 -0400
+Subject: [PATCH 218/254] power-use-generic-rwsem-on-rt
---
arch/powerpc/Kconfig | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-Index: linux-3.4/arch/powerpc/Kconfig
-===================================================================
---- linux-3.4.orig/arch/powerpc/Kconfig
-+++ linux-3.4/arch/powerpc/Kconfig
+diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
+index feab3ba..981d71f 100644
+--- a/arch/powerpc/Kconfig
++++ b/arch/powerpc/Kconfig
@@ -69,10 +69,11 @@ config LOCKDEP_SUPPORT
config RWSEM_GENERIC_SPINLOCK
@@ -21,3 +24,6 @@ Index: linux-3.4/arch/powerpc/Kconfig
config GENERIC_LOCKBREAK
bool
+--
+1.7.10.4
+
diff --git a/patches/power-disable-highmem-on-rt.patch b/patches/0219-power-disable-highmem-on-rt.patch.patch
index bca5ebb..47914e2 100644
--- a/patches/power-disable-highmem-on-rt.patch
+++ b/patches/0219-power-disable-highmem-on-rt.patch.patch
@@ -1,16 +1,17 @@
-Subject: power-disable-highmem-on-rt.patch
+From 694bfc7ca3a3ae3730371f1f695b2f56ad66b852 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 18 Jul 2011 17:08:34 +0200
+Subject: [PATCH 219/254] power-disable-highmem-on-rt.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/powerpc/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/arch/powerpc/Kconfig
-===================================================================
---- linux-3.4.orig/arch/powerpc/Kconfig
-+++ linux-3.4/arch/powerpc/Kconfig
+diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
+index 981d71f..86e2322 100644
+--- a/arch/powerpc/Kconfig
++++ b/arch/powerpc/Kconfig
@@ -283,7 +283,7 @@ menu "Kernel options"
config HIGHMEM
@@ -20,3 +21,6 @@ Index: linux-3.4/arch/powerpc/Kconfig
source kernel/time/Kconfig
source kernel/Kconfig.hz
+--
+1.7.10.4
+
diff --git a/patches/arm-disable-highmem-on-rt.patch b/patches/0220-arm-disable-highmem-on-rt.patch.patch
index 0d0c20d..0a78609 100644
--- a/patches/arm-disable-highmem-on-rt.patch
+++ b/patches/0220-arm-disable-highmem-on-rt.patch.patch
@@ -1,17 +1,18 @@
-Subject: arm-disable-highmem-on-rt.patch
+From 161ec6574febd2f331db39197134a32c0bfbf444 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 18 Jul 2011 17:09:28 +0200
+Subject: [PATCH 220/254] arm-disable-highmem-on-rt.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/arm/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/arch/arm/Kconfig
-===================================================================
---- linux-3.4.orig/arch/arm/Kconfig
-+++ linux-3.4/arch/arm/Kconfig
-@@ -1716,7 +1716,7 @@ config HAVE_ARCH_PFN_VALID
+diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
+index bf4258c..07e1bbb 100644
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -1725,7 +1725,7 @@ config HAVE_ARCH_PFN_VALID
config HIGHMEM
bool "High Memory Support"
@@ -20,3 +21,6 @@ Index: linux-3.4/arch/arm/Kconfig
help
The address space of ARM processors is only 4 Gigabytes large
and it has to accommodate user address space, kernel address
+--
+1.7.10.4
+
diff --git a/patches/arm-at91-tclib-default-to-tclib-timer-for-rt.patch b/patches/0221-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch
index c61e1bb..80ea624 100644
--- a/patches/arm-at91-tclib-default-to-tclib-timer-for-rt.patch
+++ b/patches/0221-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch
@@ -1,20 +1,20 @@
+From 079e1560eb08178d778c90339b699c38f8424456 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 1 May 2010 18:29:35 +0200
-Subject: ARM: at91: tclib: Default to tclib timer for RT
+Subject: [PATCH 221/254] ARM: at91: tclib: Default to tclib timer for RT
RT is not too happy about the shared timer interrupt in AT91
devices. Default to tclib timer for RT.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
drivers/misc/Kconfig | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-Index: linux-3.4/drivers/misc/Kconfig
-===================================================================
---- linux-3.4.orig/drivers/misc/Kconfig
-+++ linux-3.4/drivers/misc/Kconfig
+diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
+index eead6ce..ecda1c4 100644
+--- a/drivers/misc/Kconfig
++++ b/drivers/misc/Kconfig
@@ -72,6 +72,7 @@ config AB8500_PWM
config ATMEL_TCLIB
bool "Atmel AT32/AT91 Timer/Counter Library"
@@ -32,3 +32,6 @@ Index: linux-3.4/drivers/misc/Kconfig
help
Select this to use 32 KiHz base clock rate as TC block clock
source for clock events.
+--
+1.7.10.4
+
diff --git a/patches/mips-disable-highmem-on-rt.patch b/patches/0222-mips-disable-highmem-on-rt.patch.patch
index 305d3c7..089aa5c 100644
--- a/patches/mips-disable-highmem-on-rt.patch
+++ b/patches/0222-mips-disable-highmem-on-rt.patch.patch
@@ -1,16 +1,17 @@
-Subject: mips-disable-highmem-on-rt.patch
+From a0e5d7f885a17838fd8e2b1dd596e2ded5aba699 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 18 Jul 2011 17:10:12 +0200
+Subject: [PATCH 222/254] mips-disable-highmem-on-rt.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/mips/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/arch/mips/Kconfig
-===================================================================
---- linux-3.4.orig/arch/mips/Kconfig
-+++ linux-3.4/arch/mips/Kconfig
+diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
+index ce30e2f..f0bc185 100644
+--- a/arch/mips/Kconfig
++++ b/arch/mips/Kconfig
@@ -2081,7 +2081,7 @@ config CPU_R4400_WORKAROUNDS
#
config HIGHMEM
@@ -20,3 +21,6 @@ Index: linux-3.4/arch/mips/Kconfig
config CPU_SUPPORTS_HIGHMEM
bool
+--
+1.7.10.4
+
diff --git a/patches/net-tx-action-avoid-livelock-on-rt.patch b/patches/0223-net-Avoid-livelock-in-net_tx_action-on-RT.patch
index 5219bfd..5cfab73 100644
--- a/patches/net-tx-action-avoid-livelock-on-rt.patch
+++ b/patches/0223-net-Avoid-livelock-in-net_tx_action-on-RT.patch
@@ -1,6 +1,7 @@
-Subject: net: Avoid livelock in net_tx_action() on RT
+From 43d4d77a05a874fbee941bc57be8c74f96a0f201 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <srostedt@redhat.com>
-Date: Thu, 06 Oct 2011 10:48:39 -0400
+Date: Thu, 6 Oct 2011 10:48:39 -0400
+Subject: [PATCH 223/254] net: Avoid livelock in net_tx_action() on RT
qdisc_lock is taken w/o disabling interrupts or bottom halfs. So code
holding a qdisc_lock() can be interrupted and softirqs can run on the
@@ -37,16 +38,15 @@ Cc: Clark Williams <williams@redhat.com>
Cc: John Kacur <jkacur@redhat.com>
Cc: Luis Claudio R. Goncalves <lclaudio@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-
---
net/core/dev.c | 32 +++++++++++++++++++++++++++++++-
1 file changed, 31 insertions(+), 1 deletion(-)
-Index: linux-3.4/net/core/dev.c
-===================================================================
---- linux-3.4.orig/net/core/dev.c
-+++ linux-3.4/net/core/dev.c
-@@ -2996,6 +2996,36 @@ int netif_rx_ni(struct sk_buff *skb)
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 4e15710..252c15a 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -2970,6 +2970,36 @@ int netif_rx_ni(struct sk_buff *skb)
}
EXPORT_SYMBOL(netif_rx_ni);
@@ -83,7 +83,7 @@ Index: linux-3.4/net/core/dev.c
static void net_tx_action(struct softirq_action *h)
{
struct softnet_data *sd = &__get_cpu_var(softnet_data);
-@@ -3034,7 +3064,7 @@ static void net_tx_action(struct softirq
+@@ -3008,7 +3038,7 @@ static void net_tx_action(struct softirq_action *h)
head = head->next_sched;
root_lock = qdisc_lock(q);
@@ -92,3 +92,6 @@ Index: linux-3.4/net/core/dev.c
smp_mb__before_clear_bit();
clear_bit(__QDISC_STATE_SCHED,
&q->state);
+--
+1.7.10.4
+
diff --git a/patches/ping-sysrq.patch b/patches/0224-ping-sysrq.patch.patch
index 78b8922..3ec07bf 100644
--- a/patches/ping-sysrq.patch
+++ b/patches/0224-ping-sysrq.patch.patch
@@ -1,6 +1,7 @@
-Subject: ping-sysrq.patch
+From c803398f4d9f6cc144970307c26dad5f8eb255f3 Mon Sep 17 00:00:00 2001
From: Carsten Emde <C.Emde@osadl.org>
Date: Tue, 19 Jul 2011 13:51:17 +0100
+Subject: [PATCH 224/254] ping-sysrq.patch
There are (probably rare) situations when a system crashed and the system
console becomes unresponsive but the network icmp layer still is alive.
@@ -10,7 +11,6 @@ This patch provides this facility. Please consult the updated documentation
Documentation/sysrq.txt for details.
Signed-off-by: Carsten Emde <C.Emde@osadl.org>
-
---
Documentation/sysrq.txt | 11 +++++++++--
include/net/netns/ipv4.h | 1 +
@@ -18,11 +18,11 @@ Signed-off-by: Carsten Emde <C.Emde@osadl.org>
net/ipv4/sysctl_net_ipv4.c | 7 +++++++
4 files changed, 47 insertions(+), 2 deletions(-)
-Index: linux-3.4/Documentation/sysrq.txt
-===================================================================
---- linux-3.4.orig/Documentation/sysrq.txt
-+++ linux-3.4/Documentation/sysrq.txt
-@@ -57,10 +57,17 @@ On PowerPC - Press 'ALT - Print Screen (
+diff --git a/Documentation/sysrq.txt b/Documentation/sysrq.txt
+index 642f844..bd283ed 100644
+--- a/Documentation/sysrq.txt
++++ b/Documentation/sysrq.txt
+@@ -57,10 +57,17 @@ On PowerPC - Press 'ALT - Print Screen (or F13) - <command key>,
On other - If you know of the key combos for other architectures, please
let me know so I can add them to this section.
@@ -42,10 +42,10 @@ Index: linux-3.4/Documentation/sysrq.txt
* What are the 'command' keys?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'b' - Will immediately reboot the system without syncing or unmounting
-Index: linux-3.4/include/net/netns/ipv4.h
-===================================================================
---- linux-3.4.orig/include/net/netns/ipv4.h
-+++ linux-3.4/include/net/netns/ipv4.h
+diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h
+index bbd023a..643911e 100644
+--- a/include/net/netns/ipv4.h
++++ b/include/net/netns/ipv4.h
@@ -47,6 +47,7 @@ struct netns_ipv4 {
int sysctl_icmp_echo_ignore_all;
@@ -54,10 +54,10 @@ Index: linux-3.4/include/net/netns/ipv4.h
int sysctl_icmp_ignore_bogus_error_responses;
int sysctl_icmp_ratelimit;
int sysctl_icmp_ratemask;
-Index: linux-3.4/net/ipv4/icmp.c
-===================================================================
---- linux-3.4.orig/net/ipv4/icmp.c
-+++ linux-3.4/net/ipv4/icmp.c
+diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c
+index 2cb2bf8..9a37732 100644
+--- a/net/ipv4/icmp.c
++++ b/net/ipv4/icmp.c
@@ -69,6 +69,7 @@
#include <linux/jiffies.h>
#include <linux/kernel.h>
@@ -97,7 +97,7 @@ Index: linux-3.4/net/ipv4/icmp.c
* Handle ICMP_ECHO ("ping") requests.
*
* RFC 1122: 3.2.2.6 MUST have an echo server that answers ICMP echo
-@@ -825,6 +850,11 @@ static void icmp_echo(struct sk_buff *sk
+@@ -825,6 +850,11 @@ static void icmp_echo(struct sk_buff *skb)
icmp_param.data_len = skb->len;
icmp_param.head_len = sizeof(struct icmphdr);
icmp_reply(&icmp_param, skb);
@@ -109,11 +109,11 @@ Index: linux-3.4/net/ipv4/icmp.c
}
}
-Index: linux-3.4/net/ipv4/sysctl_net_ipv4.c
-===================================================================
---- linux-3.4.orig/net/ipv4/sysctl_net_ipv4.c
-+++ linux-3.4/net/ipv4/sysctl_net_ipv4.c
-@@ -718,6 +718,13 @@ static struct ctl_table ipv4_net_table[]
+diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c
+index 7a7724d..96c6109 100644
+--- a/net/ipv4/sysctl_net_ipv4.c
++++ b/net/ipv4/sysctl_net_ipv4.c
+@@ -718,6 +718,13 @@ static struct ctl_table ipv4_net_table[] = {
.proc_handler = proc_dointvec
},
{
@@ -127,3 +127,6 @@ Index: linux-3.4/net/ipv4/sysctl_net_ipv4.c
.procname = "icmp_ignore_bogus_error_responses",
.data = &init_net.ipv4.sysctl_icmp_ignore_bogus_error_responses,
.maxlen = sizeof(int),
+--
+1.7.10.4
+
diff --git a/patches/kgb-serial-hackaround.patch b/patches/0225-kgdb-serial-Short-term-workaround.patch
index c2d5867..a6c7be7 100644
--- a/patches/kgb-serial-hackaround.patch
+++ b/patches/0225-kgdb-serial-Short-term-workaround.patch
@@ -1,6 +1,7 @@
+From bc1ba0690f016621a8051ae75e509ef05a49c31d Mon Sep 17 00:00:00 2001
From: Jason Wessel <jason.wessel@windriver.com>
Date: Thu, 28 Jul 2011 12:42:23 -0500
-Subject: kgdb/serial: Short term workaround
+Subject: [PATCH 225/254] kgdb/serial: Short term workaround
On 07/27/2011 04:37 PM, Thomas Gleixner wrote:
> - KGDB (not yet disabled) is reportedly unusable on -rt right now due
@@ -16,17 +17,16 @@ change separation between the console and the HW to have a polled mode
Thanks,
Jason.
-
---
drivers/tty/serial/8250/8250.c | 3 ++-
include/linux/kdb.h | 2 ++
kernel/debug/kdb/kdb_io.c | 6 ++----
3 files changed, 6 insertions(+), 5 deletions(-)
-Index: linux-3.4/drivers/tty/serial/8250/8250.c
-===================================================================
---- linux-3.4.orig/drivers/tty/serial/8250/8250.c
-+++ linux-3.4/drivers/tty/serial/8250/8250.c
+diff --git a/drivers/tty/serial/8250/8250.c b/drivers/tty/serial/8250/8250.c
+index a785ec0..0db379e 100644
+--- a/drivers/tty/serial/8250/8250.c
++++ b/drivers/tty/serial/8250/8250.c
@@ -38,6 +38,7 @@
#include <linux/nmi.h>
#include <linux/mutex.h>
@@ -35,7 +35,7 @@ Index: linux-3.4/drivers/tty/serial/8250/8250.c
#ifdef CONFIG_SPARC
#include <linux/sunserialcore.h>
#endif
-@@ -2816,7 +2817,7 @@ serial8250_console_write(struct console
+@@ -2817,7 +2818,7 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count)
touch_nmi_watchdog();
@@ -44,11 +44,11 @@ Index: linux-3.4/drivers/tty/serial/8250/8250.c
locked = spin_trylock_irqsave(&port->lock, flags);
else
spin_lock_irqsave(&port->lock, flags);
-Index: linux-3.4/include/linux/kdb.h
-===================================================================
---- linux-3.4.orig/include/linux/kdb.h
-+++ linux-3.4/include/linux/kdb.h
-@@ -150,12 +150,14 @@ extern int kdb_register(char *, kdb_func
+diff --git a/include/linux/kdb.h b/include/linux/kdb.h
+index 0647258..0d1ebfc 100644
+--- a/include/linux/kdb.h
++++ b/include/linux/kdb.h
+@@ -150,12 +150,14 @@ extern int kdb_register(char *, kdb_func_t, char *, char *, short);
extern int kdb_register_repeat(char *, kdb_func_t, char *, char *,
short, kdb_repeat_t);
extern int kdb_unregister(char *);
@@ -63,11 +63,11 @@ Index: linux-3.4/include/linux/kdb.h
#endif /* CONFIG_KGDB_KDB */
enum {
KDB_NOT_INITIALIZED,
-Index: linux-3.4/kernel/debug/kdb/kdb_io.c
-===================================================================
---- linux-3.4.orig/kernel/debug/kdb/kdb_io.c
-+++ linux-3.4/kernel/debug/kdb/kdb_io.c
-@@ -553,7 +553,6 @@ int vkdb_printf(const char *fmt, va_list
+diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c
+index bb9520f..eb68a9d 100644
+--- a/kernel/debug/kdb/kdb_io.c
++++ b/kernel/debug/kdb/kdb_io.c
+@@ -553,7 +553,6 @@ int vkdb_printf(const char *fmt, va_list ap)
int diag;
int linecount;
int logging, saved_loglevel = 0;
@@ -75,7 +75,7 @@ Index: linux-3.4/kernel/debug/kdb/kdb_io.c
int got_printf_lock = 0;
int retlen = 0;
int fnd, len;
-@@ -564,8 +563,6 @@ int vkdb_printf(const char *fmt, va_list
+@@ -564,8 +563,6 @@ int vkdb_printf(const char *fmt, va_list ap)
unsigned long uninitialized_var(flags);
preempt_disable();
@@ -104,3 +104,6 @@ Index: linux-3.4/kernel/debug/kdb/kdb_io.c
return r;
}
+--
+1.7.10.4
+
diff --git a/patches/sysfs-realtime-entry.patch b/patches/0226-add-sys-kernel-realtime-entry.patch
index d14cc0c..517f01e 100644
--- a/patches/sysfs-realtime-entry.patch
+++ b/patches/0226-add-sys-kernel-realtime-entry.patch
@@ -1,6 +1,7 @@
-Subject: add /sys/kernel/realtime entry
+From 6b2dabfab924f14fd871d6225e05b2eba8de21ca Mon Sep 17 00:00:00 2001
From: Clark Williams <williams@redhat.com>
-Date: Sat Jul 30 21:55:53 2011 -0500
+Date: Sat, 30 Jul 2011 21:55:53 -0500
+Subject: [PATCH 226/254] add /sys/kernel/realtime entry
Add a /sys/kernel entry to indicate that the kernel is a
realtime kernel.
@@ -17,10 +18,10 @@ Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
kernel/ksysfs.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
-Index: linux-3.4/kernel/ksysfs.c
-===================================================================
---- linux-3.4.orig/kernel/ksysfs.c
-+++ linux-3.4/kernel/ksysfs.c
+diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c
+index 4e316e1..a546d33 100644
+--- a/kernel/ksysfs.c
++++ b/kernel/ksysfs.c
@@ -133,6 +133,15 @@ KERNEL_ATTR_RO(vmcoreinfo);
#endif /* CONFIG_KEXEC */
@@ -37,7 +38,7 @@ Index: linux-3.4/kernel/ksysfs.c
/* whether file capabilities are enabled */
static ssize_t fscaps_show(struct kobject *kobj,
struct kobj_attribute *attr, char *buf)
-@@ -182,6 +191,9 @@ static struct attribute * kernel_attrs[]
+@@ -182,6 +191,9 @@ static struct attribute * kernel_attrs[] = {
&kexec_crash_size_attr.attr,
&vmcoreinfo_attr.attr,
#endif
@@ -47,3 +48,6 @@ Index: linux-3.4/kernel/ksysfs.c
NULL
};
+--
+1.7.10.4
+
diff --git a/patches/peter_zijlstra-re-_3_0-rt4.patch b/patches/0227-mm-rt-kmap_atomic-scheduling.patch
index c2acc75..d986c5b 100644
--- a/patches/peter_zijlstra-re-_3_0-rt4.patch
+++ b/patches/0227-mm-rt-kmap_atomic-scheduling.patch
@@ -1,6 +1,7 @@
-Subject: mm, rt: kmap_atomic scheduling
+From d9d0e5f354d483635a64462d8b5cd1f592bc7597 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <peterz@infradead.org>
Date: Thu, 28 Jul 2011 10:43:51 +0200
+Subject: [PATCH 227/254] mm, rt: kmap_atomic scheduling
In fact, with migrate_disable() existing one could play games with
kmap_atomic. You could save/restore the kmap_atomic slots on context
@@ -20,10 +21,10 @@ Link: http://lkml.kernel.org/r/1311842631.5890.208.camel@twins
mm/memory.c | 2 ++
3 files changed, 43 insertions(+)
-Index: linux-3.4/arch/x86/kernel/process_32.c
-===================================================================
---- linux-3.4.orig/arch/x86/kernel/process_32.c
-+++ linux-3.4/arch/x86/kernel/process_32.c
+diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
+index ae68473..2b0882a 100644
+--- a/arch/x86/kernel/process_32.c
++++ b/arch/x86/kernel/process_32.c
@@ -36,6 +36,7 @@
#include <linux/uaccess.h>
#include <linux/io.h>
@@ -32,7 +33,7 @@ Index: linux-3.4/arch/x86/kernel/process_32.c
#include <asm/pgtable.h>
#include <asm/ldt.h>
-@@ -285,6 +286,41 @@ __switch_to(struct task_struct *prev_p,
+@@ -285,6 +286,41 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
task_thread_info(next_p)->flags & _TIF_WORK_CTXSW_NEXT))
__switch_to_xtra(prev_p, next_p, tss);
@@ -74,10 +75,10 @@ Index: linux-3.4/arch/x86/kernel/process_32.c
/*
* Leave lazy mode, flushing any hypercalls made here.
* This must be done before restoring TLS segments so
-Index: linux-3.4/include/linux/sched.h
-===================================================================
---- linux-3.4.orig/include/linux/sched.h
-+++ linux-3.4/include/linux/sched.h
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index 372c15d..7fc8321 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
@@ -63,6 +63,7 @@ struct sched_param {
#include <linux/nodemask.h>
#include <linux/mm_types.h>
@@ -97,10 +98,10 @@ Index: linux-3.4/include/linux/sched.h
};
#ifdef CONFIG_PREEMPT_RT_FULL
-Index: linux-3.4/mm/memory.c
-===================================================================
---- linux-3.4.orig/mm/memory.c
-+++ linux-3.4/mm/memory.c
+diff --git a/mm/memory.c b/mm/memory.c
+index 68676fd..c63016b 100644
+--- a/mm/memory.c
++++ b/mm/memory.c
@@ -3470,6 +3470,7 @@ unlock:
#ifdef CONFIG_PREEMPT_RT_FULL
void pagefault_disable(void)
@@ -117,3 +118,6 @@ Index: linux-3.4/mm/memory.c
}
EXPORT_SYMBOL_GPL(pagefault_enable);
#endif
+--
+1.7.10.4
+
diff --git a/patches/ipc-sem-rework-semaphore-wakeups.patch b/patches/0228-ipc-sem-Rework-semaphore-wakeups.patch
index 0984945..52ee255 100644
--- a/patches/ipc-sem-rework-semaphore-wakeups.patch
+++ b/patches/0228-ipc-sem-Rework-semaphore-wakeups.patch
@@ -1,10 +1,7 @@
-Subject: ipc/sem: Rework semaphore wakeups
-From: Peter Zijlstra <peterz@infradead.org>
-Date: Wed, 14 Sep 2011 11:57:04 +0200
-
-Subject: ipc/sem: Rework semaphore wakeups
+From 9afeb23d2f66cfd8b899a3201e712a730bfb8780 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
-Date: Tue Sep 13 15:09:40 CEST 2011
+Date: Tue, 13 Sep 2011 15:09:40 +0200
+Subject: [PATCH 228/254] ipc/sem: Rework semaphore wakeups
Current sysv sems have a weird ass wakeup scheme that involves keeping
preemption disabled over a potential O(n^2) loop and busy waiting on
@@ -31,10 +28,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
ipc/sem.c | 10 ++++++++++
1 file changed, 10 insertions(+)
-Index: linux-3.4/ipc/sem.c
-===================================================================
---- linux-3.4.orig/ipc/sem.c
-+++ linux-3.4/ipc/sem.c
+diff --git a/ipc/sem.c b/ipc/sem.c
+index 5215a81..5eaf684 100644
+--- a/ipc/sem.c
++++ b/ipc/sem.c
@@ -461,6 +461,13 @@ undo:
static void wake_up_sem_queue_prepare(struct list_head *pt,
struct sem_queue *q, int error)
@@ -49,7 +46,7 @@ Index: linux-3.4/ipc/sem.c
if (list_empty(pt)) {
/*
* Hold preempt off so that we don't get preempted and have the
-@@ -472,6 +479,7 @@ static void wake_up_sem_queue_prepare(st
+@@ -472,6 +479,7 @@ static void wake_up_sem_queue_prepare(struct list_head *pt,
q->pid = error;
list_add_tail(&q->simple_list, pt);
@@ -57,7 +54,7 @@ Index: linux-3.4/ipc/sem.c
}
/**
-@@ -485,6 +493,7 @@ static void wake_up_sem_queue_prepare(st
+@@ -485,6 +493,7 @@ static void wake_up_sem_queue_prepare(struct list_head *pt,
*/
static void wake_up_sem_queue_do(struct list_head *pt)
{
@@ -65,7 +62,7 @@ Index: linux-3.4/ipc/sem.c
struct sem_queue *q, *t;
int did_something;
-@@ -497,6 +506,7 @@ static void wake_up_sem_queue_do(struct
+@@ -497,6 +506,7 @@ static void wake_up_sem_queue_do(struct list_head *pt)
}
if (did_something)
preempt_enable();
@@ -73,3 +70,6 @@ Index: linux-3.4/ipc/sem.c
}
static void unlink_queue(struct sem_array *sma, struct sem_queue *q)
+--
+1.7.10.4
+
diff --git a/patches/x86-kvm-require-const-tsc-for-rt.patch b/patches/0229-x86-kvm-require-const-tsc-for-rt.patch.patch
index b30770e..bd9a158 100644
--- a/patches/x86-kvm-require-const-tsc-for-rt.patch
+++ b/patches/0229-x86-kvm-require-const-tsc-for-rt.patch.patch
@@ -1,16 +1,17 @@
-Subject: x86-kvm-require-const-tsc-for-rt.patch
+From b8c361d7ce775159ab35a1f5f8f548f963bd2979 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Sun, 06 Nov 2011 12:26:18 +0100
+Date: Sun, 6 Nov 2011 12:26:18 +0100
+Subject: [PATCH 229/254] x86-kvm-require-const-tsc-for-rt.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/x86/kvm/x86.c | 7 +++++++
1 file changed, 7 insertions(+)
-Index: linux-3.4/arch/x86/kvm/x86.c
-===================================================================
---- linux-3.4.orig/arch/x86/kvm/x86.c
-+++ linux-3.4/arch/x86/kvm/x86.c
+diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
+index 185a2b8..937bdec 100644
+--- a/arch/x86/kvm/x86.c
++++ b/arch/x86/kvm/x86.c
@@ -4882,6 +4882,13 @@ int kvm_arch_init(void *opaque)
goto out;
}
@@ -25,3 +26,6 @@ Index: linux-3.4/arch/x86/kvm/x86.c
r = kvm_mmu_module_init();
if (r)
goto out;
+--
+1.7.10.4
+
diff --git a/patches/scsi-fcoe-rt-aware.patch b/patches/0230-scsi-fcoe-rt-aware.patch.patch
index c362cab..f3d9fd6 100644
--- a/patches/scsi-fcoe-rt-aware.patch
+++ b/patches/0230-scsi-fcoe-rt-aware.patch.patch
@@ -1,6 +1,7 @@
-Subject: scsi-fcoe-rt-aware.patch
+From 5b7316c598f121fb9f97cc5272c10fdc9632e707 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sat, 12 Nov 2011 14:00:48 +0100
+Subject: [PATCH 230/254] scsi-fcoe-rt-aware.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -9,11 +10,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
drivers/scsi/libfc/fc_exch.c | 4 ++--
3 files changed, 12 insertions(+), 12 deletions(-)
-Index: linux-3.4/drivers/scsi/fcoe/fcoe.c
-===================================================================
---- linux-3.4.orig/drivers/scsi/fcoe/fcoe.c
-+++ linux-3.4/drivers/scsi/fcoe/fcoe.c
-@@ -1222,7 +1222,7 @@ static void fcoe_percpu_thread_destroy(u
+diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
+index 335e851..7f791b9 100644
+--- a/drivers/scsi/fcoe/fcoe.c
++++ b/drivers/scsi/fcoe/fcoe.c
+@@ -1222,7 +1222,7 @@ static void fcoe_percpu_thread_destroy(unsigned int cpu)
struct sk_buff *skb;
#ifdef CONFIG_SMP
struct fcoe_percpu_s *p0;
@@ -22,7 +23,7 @@ Index: linux-3.4/drivers/scsi/fcoe/fcoe.c
#endif /* CONFIG_SMP */
FCOE_DBG("Destroying receive thread for CPU %d\n", cpu);
-@@ -1278,7 +1278,7 @@ static void fcoe_percpu_thread_destroy(u
+@@ -1278,7 +1278,7 @@ static void fcoe_percpu_thread_destroy(unsigned int cpu)
kfree_skb(skb);
spin_unlock_bh(&p->fcoe_rx_list.lock);
}
@@ -46,7 +47,7 @@ Index: linux-3.4/drivers/scsi/fcoe/fcoe.c
return rc;
}
-@@ -1738,7 +1738,7 @@ static void fcoe_recv_frame(struct sk_bu
+@@ -1738,7 +1738,7 @@ static void fcoe_recv_frame(struct sk_buff *skb)
*/
hp = (struct fcoe_hdr *) skb_network_header(skb);
@@ -55,7 +56,7 @@ Index: linux-3.4/drivers/scsi/fcoe/fcoe.c
if (unlikely(FC_FCOE_DECAPS_VER(hp) != FC_FCOE_VER)) {
if (stats->ErrorFrames < 5)
printk(KERN_WARNING "fcoe: FCoE version "
-@@ -1770,13 +1770,13 @@ static void fcoe_recv_frame(struct sk_bu
+@@ -1770,13 +1770,13 @@ static void fcoe_recv_frame(struct sk_buff *skb)
goto drop;
if (!fcoe_filter_frames(lport, fp)) {
@@ -71,11 +72,11 @@ Index: linux-3.4/drivers/scsi/fcoe/fcoe.c
kfree_skb(skb);
}
-Index: linux-3.4/drivers/scsi/fcoe/fcoe_ctlr.c
-===================================================================
---- linux-3.4.orig/drivers/scsi/fcoe/fcoe_ctlr.c
-+++ linux-3.4/drivers/scsi/fcoe/fcoe_ctlr.c
-@@ -719,7 +719,7 @@ static unsigned long fcoe_ctlr_age_fcfs(
+diff --git a/drivers/scsi/fcoe/fcoe_ctlr.c b/drivers/scsi/fcoe/fcoe_ctlr.c
+index 249a106..753fcb9 100644
+--- a/drivers/scsi/fcoe/fcoe_ctlr.c
++++ b/drivers/scsi/fcoe/fcoe_ctlr.c
+@@ -719,7 +719,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip)
unsigned long sel_time = 0;
struct fcoe_dev_stats *stats;
@@ -84,7 +85,7 @@ Index: linux-3.4/drivers/scsi/fcoe/fcoe_ctlr.c
list_for_each_entry_safe(fcf, next, &fip->fcfs, list) {
deadline = fcf->time + fcf->fka_period + fcf->fka_period / 2;
-@@ -752,7 +752,7 @@ static unsigned long fcoe_ctlr_age_fcfs(
+@@ -752,7 +752,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip)
sel_time = fcf->time;
}
}
@@ -93,11 +94,11 @@ Index: linux-3.4/drivers/scsi/fcoe/fcoe_ctlr.c
if (sel_time && !fip->sel_fcf && !fip->sel_time) {
sel_time += msecs_to_jiffies(FCOE_CTLR_START_DELAY);
fip->sel_time = sel_time;
-Index: linux-3.4/drivers/scsi/libfc/fc_exch.c
-===================================================================
---- linux-3.4.orig/drivers/scsi/libfc/fc_exch.c
-+++ linux-3.4/drivers/scsi/libfc/fc_exch.c
-@@ -724,10 +724,10 @@ static struct fc_exch *fc_exch_em_alloc(
+diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c
+index aceffad..fb4e6ce 100644
+--- a/drivers/scsi/libfc/fc_exch.c
++++ b/drivers/scsi/libfc/fc_exch.c
+@@ -724,10 +724,10 @@ static struct fc_exch *fc_exch_em_alloc(struct fc_lport *lport,
}
memset(ep, 0, sizeof(*ep));
@@ -110,3 +111,6 @@ Index: linux-3.4/drivers/scsi/libfc/fc_exch.c
/* peek cache of free slot */
if (pool->left != FC_XID_UNKNOWN) {
+--
+1.7.10.4
+
diff --git a/patches/x86-crypto-reduce-preempt-disabled-regions.patch b/patches/0231-x86-crypto-Reduce-preempt-disabled-regions.patch
index 545736d..bdcd1eb 100644
--- a/patches/x86-crypto-reduce-preempt-disabled-regions.patch
+++ b/patches/0231-x86-crypto-Reduce-preempt-disabled-regions.patch
@@ -1,6 +1,7 @@
-Subject: x86: crypto: Reduce preempt disabled regions
+From 406447c2ae8035b0fa5ba55601e200e4f5c26bd8 Mon Sep 17 00:00:00 2001
From: Peter Zijlstra <peterz@infradead.org>
Date: Mon, 14 Nov 2011 18:19:27 +0100
+Subject: [PATCH 231/254] x86: crypto: Reduce preempt disabled regions
Restrict the preempt disabled regions to the actual floating point
operations and enable preemption for the administrative actions.
@@ -16,11 +17,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/crypto/aesni-intel_glue.c | 24 +++++++++++++-----------
1 file changed, 13 insertions(+), 11 deletions(-)
-Index: linux-3.4/arch/x86/crypto/aesni-intel_glue.c
-===================================================================
---- linux-3.4.orig/arch/x86/crypto/aesni-intel_glue.c
-+++ linux-3.4/arch/x86/crypto/aesni-intel_glue.c
-@@ -290,14 +290,14 @@ static int ecb_encrypt(struct blkcipher_
+diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c
+index c799352..0efa514 100644
+--- a/arch/x86/crypto/aesni-intel_glue.c
++++ b/arch/x86/crypto/aesni-intel_glue.c
+@@ -290,14 +290,14 @@ static int ecb_encrypt(struct blkcipher_desc *desc,
err = blkcipher_walk_virt(desc, &walk);
desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP;
@@ -38,7 +39,7 @@ Index: linux-3.4/arch/x86/crypto/aesni-intel_glue.c
return err;
}
-@@ -314,14 +314,14 @@ static int ecb_decrypt(struct blkcipher_
+@@ -314,14 +314,14 @@ static int ecb_decrypt(struct blkcipher_desc *desc,
err = blkcipher_walk_virt(desc, &walk);
desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP;
@@ -55,7 +56,7 @@ Index: linux-3.4/arch/x86/crypto/aesni-intel_glue.c
return err;
}
-@@ -360,14 +360,14 @@ static int cbc_encrypt(struct blkcipher_
+@@ -360,14 +360,14 @@ static int cbc_encrypt(struct blkcipher_desc *desc,
err = blkcipher_walk_virt(desc, &walk);
desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP;
@@ -72,7 +73,7 @@ Index: linux-3.4/arch/x86/crypto/aesni-intel_glue.c
return err;
}
-@@ -384,14 +384,14 @@ static int cbc_decrypt(struct blkcipher_
+@@ -384,14 +384,14 @@ static int cbc_decrypt(struct blkcipher_desc *desc,
err = blkcipher_walk_virt(desc, &walk);
desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP;
@@ -89,7 +90,7 @@ Index: linux-3.4/arch/x86/crypto/aesni-intel_glue.c
return err;
}
-@@ -446,18 +446,20 @@ static int ctr_crypt(struct blkcipher_de
+@@ -446,18 +446,20 @@ static int ctr_crypt(struct blkcipher_desc *desc,
err = blkcipher_walk_virt_block(desc, &walk, AES_BLOCK_SIZE);
desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP;
@@ -112,3 +113,6 @@ Index: linux-3.4/arch/x86/crypto/aesni-intel_glue.c
return err;
}
+--
+1.7.10.4
+
diff --git a/patches/dm-make-rt-aware.patch b/patches/0232-dm-Make-rt-aware.patch
index 216853a..da351d4 100644
--- a/patches/dm-make-rt-aware.patch
+++ b/patches/0232-dm-Make-rt-aware.patch
@@ -1,6 +1,7 @@
-Subject: dm: Make rt aware
+From b324196d1bf1db92f47fe571af77a0cbb4edae3d Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Mon, 14 Nov 2011 23:06:09 +0100
+Subject: [PATCH 232/254] dm: Make rt aware
Use the BUG_ON_NORT variant for the irq_disabled() checks. RT has
interrupts legitimately enabled here as we cant deadlock against the
@@ -13,11 +14,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
drivers/md/dm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-Index: linux-3.4/drivers/md/dm.c
-===================================================================
---- linux-3.4.orig/drivers/md/dm.c
-+++ linux-3.4/drivers/md/dm.c
-@@ -1648,14 +1648,14 @@ static void dm_request_fn(struct request
+diff --git a/drivers/md/dm.c b/drivers/md/dm.c
+index e24143c..ad7d7e3 100644
+--- a/drivers/md/dm.c
++++ b/drivers/md/dm.c
+@@ -1648,14 +1648,14 @@ static void dm_request_fn(struct request_queue *q)
if (map_request(ti, clone, md))
goto requeued;
@@ -34,3 +35,6 @@ Index: linux-3.4/drivers/md/dm.c
spin_lock(q->queue_lock);
delay_and_out:
+--
+1.7.10.4
+
diff --git a/patches/cpumask-disable-offstack-on-rt.patch b/patches/0233-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch
index 541a2da..b37dfb0 100644
--- a/patches/cpumask-disable-offstack-on-rt.patch
+++ b/patches/0233-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch
@@ -1,6 +1,7 @@
-Subject: cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT
+From acabd9923cbbad6d7793e8ce5123e258dad9f0f3 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 14 Dec 2011 01:03:49 +0100
+Subject: [PATCH 233/254] cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT
We can't deal with the cpumask allocations which happen in atomic
context (see arch/x86/kernel/apic/io_apic.c) on RT right now.
@@ -11,10 +12,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
lib/Kconfig | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
-Index: linux-3.4/arch/x86/Kconfig
-===================================================================
---- linux-3.4.orig/arch/x86/Kconfig
-+++ linux-3.4/arch/x86/Kconfig
+diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
+index f556832..98c1a17 100644
+--- a/arch/x86/Kconfig
++++ b/arch/x86/Kconfig
@@ -750,7 +750,7 @@ config IOMMU_HELPER
config MAXSMP
bool "Enable Maximum number of SMP Processors and NUMA Nodes"
@@ -24,10 +25,10 @@ Index: linux-3.4/arch/x86/Kconfig
---help---
Enable maximum number of CPUS and NUMA Nodes for this architecture.
If unsure, say N.
-Index: linux-3.4/lib/Kconfig
-===================================================================
---- linux-3.4.orig/lib/Kconfig
-+++ linux-3.4/lib/Kconfig
+diff --git a/lib/Kconfig b/lib/Kconfig
+index 4a8aba2..4c03fe3 100644
+--- a/lib/Kconfig
++++ b/lib/Kconfig
@@ -303,6 +303,7 @@ config CHECK_SIGNATURE
config CPUMASK_OFFSTACK
@@ -36,3 +37,6 @@ Index: linux-3.4/lib/Kconfig
help
Use dynamic allocation for cpumask_var_t, instead of putting
them on the stack. This is a bit more expensive, but avoids
+--
+1.7.10.4
+
diff --git a/patches/seqlock-prevent-rt-starvation.patch b/patches/0234-seqlock-Prevent-rt-starvation.patch
index 690490d..783a81d 100644
--- a/patches/seqlock-prevent-rt-starvation.patch
+++ b/patches/0234-seqlock-Prevent-rt-starvation.patch
@@ -1,6 +1,7 @@
-Subject: seqlock: Prevent rt starvation
+From 37cb948b3bff19151590f61c467b2c5daf30f25f Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 22 Feb 2012 12:03:30 +0100
+Subject: [PATCH 234/254] seqlock: Prevent rt starvation
If a low prio writer gets preempted while holding the seqlock write
locked, a high prio reader spins forever on RT.
@@ -15,17 +16,16 @@ possible.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable-rt@vger.kernel.org
-
---
- include/linux/seqlock.h | 55 +++++++++++++++++++++++++++++++++++++++---------
- include/net/neighbour.h | 2 -
+ include/linux/seqlock.h | 55 ++++++++++++++++++++++++++++++++++++++---------
+ include/net/neighbour.h | 2 +-
2 files changed, 46 insertions(+), 11 deletions(-)
-Index: linux-3.4/include/linux/seqlock.h
-===================================================================
---- linux-3.4.orig/include/linux/seqlock.h
-+++ linux-3.4/include/linux/seqlock.h
-@@ -125,18 +125,30 @@ static inline int read_seqcount_retry(co
+diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h
+index 1829905..c2dcae4 100644
+--- a/include/linux/seqlock.h
++++ b/include/linux/seqlock.h
+@@ -146,18 +146,30 @@ static inline int read_seqcount_retry(const seqcount_t *s, unsigned start)
* Sequence counter only version assumes that callers are using their
* own mutexing.
*/
@@ -58,7 +58,7 @@ Index: linux-3.4/include/linux/seqlock.h
/**
* write_seqcount_barrier - invalidate in-progress read-side seq operations
* @s: pointer to seqcount_t
-@@ -177,10 +189,33 @@ typedef struct {
+@@ -198,10 +210,33 @@ typedef struct {
/*
* Read side functions for starting and finalizing a read side section.
*/
@@ -92,7 +92,7 @@ Index: linux-3.4/include/linux/seqlock.h
static inline unsigned read_seqretry(const seqlock_t *sl, unsigned start)
{
-@@ -195,36 +230,36 @@ static inline unsigned read_seqretry(con
+@@ -216,36 +251,36 @@ static inline unsigned read_seqretry(const seqlock_t *sl, unsigned start)
static inline void write_seqlock(seqlock_t *sl)
{
spin_lock(&sl->lock);
@@ -135,7 +135,7 @@ Index: linux-3.4/include/linux/seqlock.h
spin_unlock_irq(&sl->lock);
}
-@@ -233,7 +268,7 @@ static inline unsigned long __write_seql
+@@ -254,7 +289,7 @@ static inline unsigned long __write_seqlock_irqsave(seqlock_t *sl)
unsigned long flags;
spin_lock_irqsave(&sl->lock, flags);
@@ -144,7 +144,7 @@ Index: linux-3.4/include/linux/seqlock.h
return flags;
}
-@@ -243,7 +278,7 @@ static inline unsigned long __write_seql
+@@ -264,7 +299,7 @@ static inline unsigned long __write_seqlock_irqsave(seqlock_t *sl)
static inline void
write_sequnlock_irqrestore(seqlock_t *sl, unsigned long flags)
{
@@ -153,10 +153,10 @@ Index: linux-3.4/include/linux/seqlock.h
spin_unlock_irqrestore(&sl->lock, flags);
}
-Index: linux-3.4/include/net/neighbour.h
-===================================================================
---- linux-3.4.orig/include/net/neighbour.h
-+++ linux-3.4/include/net/neighbour.h
+diff --git a/include/net/neighbour.h b/include/net/neighbour.h
+index 34c996f..8e626fa 100644
+--- a/include/net/neighbour.h
++++ b/include/net/neighbour.h
@@ -394,7 +394,7 @@ struct neighbour_cb {
#define NEIGH_CB(skb) ((struct neighbour_cb *)(skb)->cb)
@@ -166,3 +166,6 @@ Index: linux-3.4/include/net/neighbour.h
const struct net_device *dev)
{
unsigned int seq;
+--
+1.7.10.4
+
diff --git a/patches/rfc-timer-fix-hotplug-for-rt.patch b/patches/0235-timer-Fix-hotplug-for-rt.patch
index e77d962..dc7ed39 100644
--- a/patches/rfc-timer-fix-hotplug-for-rt.patch
+++ b/patches/0235-timer-Fix-hotplug-for-rt.patch
@@ -1,6 +1,7 @@
-Subject: timer: Fix hotplug for -rt
+From 9443e28e45773a451760c707ccae097514a103f3 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <rostedt@goodmis.org>
-Date: Thu, 01 Mar 2012 13:55:28 -0500
+Date: Thu, 1 Mar 2012 13:55:28 -0500
+Subject: [PATCH 235/254] timer: Fix hotplug for -rt
Revert the RT patch:
Author: Ingo Molnar <mingo@elte.hu>
@@ -28,11 +29,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/timer.c | 16 +++++-----------
1 file changed, 5 insertions(+), 11 deletions(-)
-Index: linux-3.4/kernel/timer.c
-===================================================================
---- linux-3.4.orig/kernel/timer.c
-+++ linux-3.4/kernel/timer.c
-@@ -1793,21 +1793,17 @@ static void __cpuinit migrate_timers(int
+diff --git a/kernel/timer.c b/kernel/timer.c
+index 935f46d..5413ff6 100644
+--- a/kernel/timer.c
++++ b/kernel/timer.c
+@@ -1793,21 +1793,17 @@ static void __cpuinit migrate_timers(int cpu)
{
struct tvec_base *old_base;
struct tvec_base *new_base;
@@ -57,7 +58,7 @@ Index: linux-3.4/kernel/timer.c
BUG_ON(old_base->running_timer);
-@@ -1821,10 +1817,8 @@ static void __cpuinit migrate_timers(int
+@@ -1821,10 +1817,8 @@ static void __cpuinit migrate_timers(int cpu)
}
spin_unlock(&old_base->lock);
@@ -70,3 +71,6 @@ Index: linux-3.4/kernel/timer.c
}
#endif /* CONFIG_HOTPLUG_CPU */
+--
+1.7.10.4
+
diff --git a/patches/rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch b/patches/0236-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch
index fbb854b..07f02db 100644
--- a/patches/rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch
+++ b/patches/0236-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch
@@ -1,6 +1,8 @@
-Subject: futex/rt: Fix possible lockup when taking pi_lock in proxy handler
+From 0141b9ebba9ddbbbf918afb6e58206085bf73176 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <rostedt@goodmis.org>
-Date: Thu, 01 Mar 2012 13:55:29 -0500
+Date: Thu, 1 Mar 2012 13:55:29 -0500
+Subject: [PATCH 236/254] futex/rt: Fix possible lockup when taking pi_lock in
+ proxy handler
When taking the pi_lock, we must disable interrupts because the
pi_lock can also be taken in an interrupt handler.
@@ -19,11 +21,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/rtmutex.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
-Index: linux-3.4/kernel/rtmutex.c
-===================================================================
---- linux-3.4.orig/kernel/rtmutex.c
-+++ linux-3.4/kernel/rtmutex.c
-@@ -1365,14 +1365,14 @@ int rt_mutex_start_proxy_lock(struct rt_
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index 921c90b..3bff726 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -1365,14 +1365,14 @@ int rt_mutex_start_proxy_lock(struct rt_mutex *lock,
* PI_REQUEUE_INPROGRESS, so that if the task is waking up
* it will know that we are in the process of requeuing it.
*/
@@ -41,3 +43,6 @@ Index: linux-3.4/kernel/rtmutex.c
#endif
ret = task_blocks_on_rt_mutex(lock, waiter, task, detect_deadlock);
+--
+1.7.10.4
+
diff --git a/patches/rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch b/patches/0237-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch
index c621057..10ee43b 100644
--- a/patches/rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch
+++ b/patches/0237-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch
@@ -1,6 +1,8 @@
-Subject: ring-buffer/rt: Check for irqs disabled before grabbing reader lock
+From 92629fda1f8a103120c9e45fd0fbf35043bb1819 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <rostedt@goodmis.org>
-Date: Thu, 01 Mar 2012 13:55:32 -0500
+Date: Thu, 1 Mar 2012 13:55:32 -0500
+Subject: [PATCH 237/254] ring-buffer/rt: Check for irqs disabled before
+ grabbing reader lock
In RT the reader lock is a mutex and we can not grab it when preemption is
disabled. The in_atomic() check that is there does not check if irqs are
@@ -18,10 +20,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/trace/ring_buffer.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: linux-3.4/kernel/trace/ring_buffer.c
-===================================================================
---- linux-3.4.orig/kernel/trace/ring_buffer.c
-+++ linux-3.4/kernel/trace/ring_buffer.c
+diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
+index 24efd16..e59be41 100644
+--- a/kernel/trace/ring_buffer.c
++++ b/kernel/trace/ring_buffer.c
@@ -1022,7 +1022,7 @@ static inline int ok_to_lock(void)
if (in_nmi())
return 0;
@@ -31,3 +33,6 @@ Index: linux-3.4/kernel/trace/ring_buffer.c
return 0;
#endif
return 1;
+--
+1.7.10.4
+
diff --git a/patches/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch b/patches/0238-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch
index 51a5b3d..0a88092 100644
--- a/patches/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch
+++ b/patches/0238-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch
@@ -1,6 +1,8 @@
-Subject: sched/rt: Fix wait_task_interactive() to test rt_spin_lock state
+From db0885badb2f017b1606bbe2868b0d8b0d313c48 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <rostedt@goodmis.org>
-Date: Thu, 01 Mar 2012 13:55:33 -0500
+Date: Thu, 1 Mar 2012 13:55:33 -0500
+Subject: [PATCH 238/254] sched/rt: Fix wait_task_interactive() to test
+ rt_spin_lock state
The wait_task_interactive() will have a task sleep waiting for another
task to have a certain state. But it ignores the rt_spin_locks state
@@ -22,11 +24,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/sched/core.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
-Index: linux-3.4/kernel/sched/core.c
-===================================================================
---- linux-3.4.orig/kernel/sched/core.c
-+++ linux-3.4/kernel/sched/core.c
-@@ -1174,7 +1174,8 @@ unsigned long wait_task_inactive(struct
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index 60e46f4..f6888c4 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
+@@ -1174,7 +1174,8 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state)
* is actually now running somewhere else!
*/
while (task_running(rq, p)) {
@@ -36,7 +38,7 @@ Index: linux-3.4/kernel/sched/core.c
return 0;
cpu_relax();
}
-@@ -1189,7 +1190,8 @@ unsigned long wait_task_inactive(struct
+@@ -1189,7 +1190,8 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state)
running = task_running(rq, p);
on_rq = p->on_rq;
ncsw = 0;
@@ -46,3 +48,6 @@ Index: linux-3.4/kernel/sched/core.c
ncsw = p->nvcsw | LONG_MIN; /* sets MSB */
task_rq_unlock(rq, p, &flags);
+--
+1.7.10.4
+
diff --git a/patches/rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch b/patches/0239-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch
index eb19630..2462424 100644
--- a/patches/rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch
+++ b/patches/0239-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch
@@ -1,6 +1,7 @@
-Subject: lglock/rt: Use non-rt for_each_cpu() in -rt code
+From 9f2f611a9c7da035474f6e390d5e0045d5cd0196 Mon Sep 17 00:00:00 2001
From: Steven Rostedt <rostedt@goodmis.org>
-Date: Thu, 01 Mar 2012 13:55:30 -0500
+Date: Thu, 1 Mar 2012 13:55:30 -0500
+Subject: [PATCH 239/254] lglock/rt: Use non-rt for_each_cpu() in -rt code
Currently the RT version of the lglocks() does a for_each_online_cpu()
in the name##_global_lock_online() functions. Non-rt uses its own
@@ -33,10 +34,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
include/linux/lglock.h | 35 ++++++++++++++++++++++++++++++++---
1 file changed, 32 insertions(+), 3 deletions(-)
-Index: linux-3.4/include/linux/lglock.h
-===================================================================
---- linux-3.4.orig/include/linux/lglock.h
-+++ linux-3.4/include/linux/lglock.h
+diff --git a/include/linux/lglock.h b/include/linux/lglock.h
+index 52b289f..cdfcef3 100644
+--- a/include/linux/lglock.h
++++ b/include/linux/lglock.h
@@ -203,9 +203,31 @@
#else /* !PREEMPT_RT_FULL */
#define DEFINE_LGLOCK(name) \
@@ -106,3 +107,6 @@ Index: linux-3.4/include/linux/lglock.h
} \
EXPORT_SYMBOL(name##_global_unlock_online); \
\
+--
+1.7.10.4
+
diff --git a/patches/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch b/patches/0240-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch
index 2f0c879..60c379d 100644
--- a/patches/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch
+++ b/patches/0240-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch
@@ -1,6 +1,7 @@
-Subject: cpu: Make hotplug.lock a "sleeping" spinlock on RT
+From 79ad71a22479f95149020ed986734f19631ef4db Mon Sep 17 00:00:00 2001
From: Steven Rostedt <rostedt@goodmis.org>
-Date: Fri, 02 Mar 2012 10:36:57 -0500
+Date: Fri, 2 Mar 2012 10:36:57 -0500
+Subject: [PATCH 240/254] cpu: Make hotplug.lock a "sleeping" spinlock on RT
Tasks can block on hotplug.lock in pin_current_cpu(), but their state
might be != RUNNING. So the mutex wakeup will set the state
@@ -22,10 +23,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/cpu.c | 35 ++++++++++++++++++++++++++---------
1 file changed, 26 insertions(+), 9 deletions(-)
-Index: linux-3.4/kernel/cpu.c
-===================================================================
---- linux-3.4.orig/kernel/cpu.c
-+++ linux-3.4/kernel/cpu.c
+diff --git a/kernel/cpu.c b/kernel/cpu.c
+index 37b2212..d79d33a 100644
+--- a/kernel/cpu.c
++++ b/kernel/cpu.c
@@ -46,7 +46,12 @@ static int cpu_hotplug_disabled;
static struct {
@@ -121,3 +122,6 @@ Index: linux-3.4/kernel/cpu.c
}
#else /* #if CONFIG_HOTPLUG_CPU */
+--
+1.7.10.4
+
diff --git a/patches/softirq-preempt-fix-3-re.txt b/patches/0241-softirq-Check-preemption-after-reenabling-interrupts.patch
index 154309e..abf4eb1 100644
--- a/patches/softirq-preempt-fix-3-re.txt
+++ b/patches/0241-softirq-Check-preemption-after-reenabling-interrupts.patch
@@ -1,6 +1,8 @@
-Subject: softirq: Check preemption after reenabling interrupts
+From 7e1ea7c350d233b1d278c6bed830e0aad08f3195 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Sun, 13 Nov 2011 17:17:09 +0100 (CET)
+Date: Sun, 13 Nov 2011 17:17:09 +0100
+Subject: [PATCH 241/254] softirq: Check preemption after reenabling
+ interrupts
raise_softirq_irqoff() disables interrupts and wakes the softirq
daemon, but after reenabling interrupts there is no preemption check,
@@ -20,11 +22,11 @@ Cc: stable-rt@vger.kernel.org
net/core/dev.c | 6 ++++++
4 files changed, 15 insertions(+)
-Index: linux-3.4/block/blk-iopoll.c
-===================================================================
---- linux-3.4.orig/block/blk-iopoll.c
-+++ linux-3.4/block/blk-iopoll.c
-@@ -38,6 +38,7 @@ void blk_iopoll_sched(struct blk_iopoll
+diff --git a/block/blk-iopoll.c b/block/blk-iopoll.c
+index 58916af..f7ca9b4 100644
+--- a/block/blk-iopoll.c
++++ b/block/blk-iopoll.c
+@@ -38,6 +38,7 @@ void blk_iopoll_sched(struct blk_iopoll *iop)
list_add_tail(&iop->list, &__get_cpu_var(blk_cpu_iopoll));
__raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ);
local_irq_restore(flags);
@@ -32,7 +34,7 @@ Index: linux-3.4/block/blk-iopoll.c
}
EXPORT_SYMBOL(blk_iopoll_sched);
-@@ -135,6 +136,7 @@ static void blk_iopoll_softirq(struct so
+@@ -135,6 +136,7 @@ static void blk_iopoll_softirq(struct softirq_action *h)
__raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ);
local_irq_enable();
@@ -40,7 +42,7 @@ Index: linux-3.4/block/blk-iopoll.c
}
/**
-@@ -204,6 +206,7 @@ static int __cpuinit blk_iopoll_cpu_noti
+@@ -204,6 +206,7 @@ static int __cpuinit blk_iopoll_cpu_notify(struct notifier_block *self,
&__get_cpu_var(blk_cpu_iopoll));
__raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ);
local_irq_enable();
@@ -48,10 +50,10 @@ Index: linux-3.4/block/blk-iopoll.c
}
return NOTIFY_OK;
-Index: linux-3.4/block/blk-softirq.c
-===================================================================
---- linux-3.4.orig/block/blk-softirq.c
-+++ linux-3.4/block/blk-softirq.c
+diff --git a/block/blk-softirq.c b/block/blk-softirq.c
+index 467c8de..3fe2368 100644
+--- a/block/blk-softirq.c
++++ b/block/blk-softirq.c
@@ -51,6 +51,7 @@ static void trigger_softirq(void *data)
raise_softirq_irqoff(BLOCK_SOFTIRQ);
@@ -60,7 +62,7 @@ Index: linux-3.4/block/blk-softirq.c
}
/*
-@@ -93,6 +94,7 @@ static int __cpuinit blk_cpu_notify(stru
+@@ -93,6 +94,7 @@ static int __cpuinit blk_cpu_notify(struct notifier_block *self,
&__get_cpu_var(blk_cpu_done));
raise_softirq_irqoff(BLOCK_SOFTIRQ);
local_irq_enable();
@@ -76,10 +78,10 @@ Index: linux-3.4/block/blk-softirq.c
}
/**
-Index: linux-3.4/include/linux/preempt.h
-===================================================================
---- linux-3.4.orig/include/linux/preempt.h
-+++ linux-3.4/include/linux/preempt.h
+diff --git a/include/linux/preempt.h b/include/linux/preempt.h
+index 5af46d0..5e71285 100644
+--- a/include/linux/preempt.h
++++ b/include/linux/preempt.h
@@ -56,8 +56,10 @@ do { \
#ifndef CONFIG_PREEMPT_RT_BASE
@@ -99,11 +101,11 @@ Index: linux-3.4/include/linux/preempt.h
#endif /* CONFIG_PREEMPT_COUNT */
-Index: linux-3.4/net/core/dev.c
-===================================================================
---- linux-3.4.orig/net/core/dev.c
-+++ linux-3.4/net/core/dev.c
-@@ -1803,6 +1803,7 @@ static inline void __netif_reschedule(st
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 252c15a..292930b 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -1807,6 +1807,7 @@ static inline void __netif_reschedule(struct Qdisc *q)
sd->output_queue_tailp = &q->next_sched;
raise_softirq_irqoff(NET_TX_SOFTIRQ);
local_irq_restore(flags);
@@ -111,7 +113,7 @@ Index: linux-3.4/net/core/dev.c
}
void __netif_schedule(struct Qdisc *q)
-@@ -1824,6 +1825,7 @@ void dev_kfree_skb_irq(struct sk_buff *s
+@@ -1828,6 +1829,7 @@ void dev_kfree_skb_irq(struct sk_buff *skb)
sd->completion_queue = skb;
raise_softirq_irqoff(NET_TX_SOFTIRQ);
local_irq_restore(flags);
@@ -119,7 +121,7 @@ Index: linux-3.4/net/core/dev.c
}
}
EXPORT_SYMBOL(dev_kfree_skb_irq);
-@@ -2923,6 +2925,7 @@ enqueue:
+@@ -2897,6 +2899,7 @@ enqueue:
rps_unlock(sd);
local_irq_restore(flags);
@@ -127,7 +129,7 @@ Index: linux-3.4/net/core/dev.c
atomic_long_inc(&skb->dev->rx_dropped);
kfree_skb(skb);
-@@ -3736,6 +3739,7 @@ static void net_rps_action_and_irq_enabl
+@@ -3710,6 +3713,7 @@ static void net_rps_action_and_irq_enable(struct softnet_data *sd)
} else
#endif
local_irq_enable();
@@ -135,7 +137,7 @@ Index: linux-3.4/net/core/dev.c
}
static int process_backlog(struct napi_struct *napi, int quota)
-@@ -3808,6 +3812,7 @@ void __napi_schedule(struct napi_struct
+@@ -3782,6 +3786,7 @@ void __napi_schedule(struct napi_struct *n)
local_irq_save(flags);
____napi_schedule(&__get_cpu_var(softnet_data), n);
local_irq_restore(flags);
@@ -143,7 +145,7 @@ Index: linux-3.4/net/core/dev.c
}
EXPORT_SYMBOL(__napi_schedule);
-@@ -6309,6 +6314,7 @@ static int dev_cpu_callback(struct notif
+@@ -6283,6 +6288,7 @@ static int dev_cpu_callback(struct notifier_block *nfb,
raise_softirq_irqoff(NET_TX_SOFTIRQ);
local_irq_enable();
@@ -151,3 +153,6 @@ Index: linux-3.4/net/core/dev.c
/* Process offline CPU's input_pkt_queue */
while ((skb = __skb_dequeue(&oldsd->process_queue))) {
+--
+1.7.10.4
+
diff --git a/patches/scsi-qla2xxx-fix-bug-sleeping-function-called-from-invalid-context.patch b/patches/0242-scsi-qla2xxx-Use-local_irq_save_nort-in-qla2x00_poll.patch
index eeb4106..dc192c7 100644
--- a/patches/scsi-qla2xxx-fix-bug-sleeping-function-called-from-invalid-context.patch
+++ b/patches/0242-scsi-qla2xxx-Use-local_irq_save_nort-in-qla2x00_poll.patch
@@ -1,6 +1,8 @@
-Subject: scsi: qla2xxx: Use local_irq_save_nort() in qla2x00_poll
+From 6bb8daed8c93420994cc403f6a46a49875cd9548 Mon Sep 17 00:00:00 2001
From: John Kacur <jkacur@redhat.com>
Date: Fri, 27 Apr 2012 12:48:46 +0200
+Subject: [PATCH 242/254] scsi: qla2xxx: Use local_irq_save_nort() in
+ qla2x00_poll
RT triggers the following:
@@ -26,7 +28,7 @@ Cc: stable-rt@vger.kernel.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/scsi/qla2xxx/qla_inline.h | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/scsi/qla2xxx/qla_inline.h b/drivers/scsi/qla2xxx/qla_inline.h
index 6e45764..28d9a8d 100644
@@ -48,11 +50,5 @@ index 6e45764..28d9a8d 100644
static inline uint8_t *
--
-1.7.1
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-
+1.7.10.4
diff --git a/patches/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch b/patches/0243-net-RT-REmove-preemption-disabling-in-netif_rx.patch
index 7586d53..fa2c728 100644
--- a/patches/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch
+++ b/patches/0243-net-RT-REmove-preemption-disabling-in-netif_rx.patch
@@ -1,6 +1,7 @@
-Subject: [UPSTREAM]net,RT:REmove preemption disabling in netif_rx()
+From d55d112e535de088b1181a559beb28af867a9973 Mon Sep 17 00:00:00 2001
From: Priyanka Jain <Priyanka.Jain@freescale.com>
Date: Thu, 17 May 2012 09:35:11 +0530
+Subject: [PATCH 243/254] net,RT:REmove preemption disabling in netif_rx()
1)enqueue_to_backlog() (called from netif_rx) should be
bind to a particluar CPU. This can be achieved by
@@ -30,15 +31,13 @@ Link: http://lkml.kernel.org/r/1337227511-2271-1-git-send-email-Priyanka.Jain@fr
Cc: stable-rt@vger.kernel.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
- Testing: Tested successfully on p4080ds(8-core SMP system)
-
net/core/dev.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
-Index: linux-3.4/net/core/dev.c
-===================================================================
---- linux-3.4.orig/net/core/dev.c
-+++ linux-3.4/net/core/dev.c
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 292930b..382a810 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
@@ -2937,7 +2937,7 @@ int netif_rx(struct sk_buff *skb)
struct rps_dev_flow voidflow, *rflow = &voidflow;
int cpu;
@@ -65,3 +64,6 @@ Index: linux-3.4/net/core/dev.c
}
return ret;
}
+--
+1.7.10.4
+
diff --git a/patches/rt-introduce-cpu-chill.patch b/patches/0244-rt-Introduce-cpu_chill.patch
index 8f7ffe5..f6c45b1 100644
--- a/patches/rt-introduce-cpu-chill.patch
+++ b/patches/0244-rt-Introduce-cpu_chill.patch
@@ -1,6 +1,7 @@
-Subject: rt: Introduce cpu_chill()
+From 8683e309156564c997bbaefe425bee35721cf1a9 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Wed, 07 Mar 2012 20:51:03 +0100
+Date: Wed, 7 Mar 2012 20:51:03 +0100
+Subject: [PATCH 244/254] rt: Introduce cpu_chill()
Retry loops on RT might loop forever when the modifying side was
preempted. Add cpu_chill() to replace cpu_relax(). cpu_chill()
@@ -13,11 +14,11 @@ Cc: stable-rt@vger.kernel.org
include/linux/delay.h | 6 ++++++
1 file changed, 6 insertions(+)
-Index: linux-3.4/include/linux/delay.h
-===================================================================
---- linux-3.4.orig/include/linux/delay.h
-+++ linux-3.4/include/linux/delay.h
-@@ -52,4 +52,10 @@ static inline void ssleep(unsigned int s
+diff --git a/include/linux/delay.h b/include/linux/delay.h
+index a6ecb34..e23a7c0 100644
+--- a/include/linux/delay.h
++++ b/include/linux/delay.h
+@@ -52,4 +52,10 @@ static inline void ssleep(unsigned int seconds)
msleep(seconds * 1000);
}
@@ -28,3 +29,6 @@ Index: linux-3.4/include/linux/delay.h
+#endif
+
#endif /* defined(_LINUX_DELAY_H) */
+--
+1.7.10.4
+
diff --git a/patches/fs-dcache-use-cpu-chill-in-trylock-loops.patch b/patches/0245-fs-dcache-Use-cpu_chill-in-trylock-loops.patch
index 9cf4eb9..f5fb369 100644
--- a/patches/fs-dcache-use-cpu-chill-in-trylock-loops.patch
+++ b/patches/0245-fs-dcache-Use-cpu_chill-in-trylock-loops.patch
@@ -1,6 +1,7 @@
-Subject: fs: dcache: Use cpu_chill() in trylock loops
+From bccda5d209770dcfe9afecf21af911ba65d8c0ff Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Wed, 07 Mar 2012 21:00:34 +0100
+Date: Wed, 7 Mar 2012 21:00:34 +0100
+Subject: [PATCH 245/254] fs: dcache: Use cpu_chill() in trylock loops
Retry loops on RT might loop forever when the modifying side was
preempted. Use cpu_chill() instead of cpu_relax() to let the system
@@ -15,10 +16,10 @@ Cc: stable-rt@vger.kernel.org
fs/namespace.c | 3 ++-
4 files changed, 8 insertions(+), 5 deletions(-)
-Index: linux-3.4/fs/autofs4/autofs_i.h
-===================================================================
---- linux-3.4.orig/fs/autofs4/autofs_i.h
-+++ linux-3.4/fs/autofs4/autofs_i.h
+diff --git a/fs/autofs4/autofs_i.h b/fs/autofs4/autofs_i.h
+index 908e184..bdd1788 100644
+--- a/fs/autofs4/autofs_i.h
++++ b/fs/autofs4/autofs_i.h
@@ -34,6 +34,7 @@
#include <linux/sched.h>
#include <linux/mount.h>
@@ -27,10 +28,10 @@ Index: linux-3.4/fs/autofs4/autofs_i.h
#include <asm/current.h>
#include <asm/uaccess.h>
-Index: linux-3.4/fs/autofs4/expire.c
-===================================================================
---- linux-3.4.orig/fs/autofs4/expire.c
-+++ linux-3.4/fs/autofs4/expire.c
+diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c
+index 1feb68e..859badd 100644
+--- a/fs/autofs4/expire.c
++++ b/fs/autofs4/expire.c
@@ -171,7 +171,7 @@ again:
parent = p->d_parent;
if (!spin_trylock(&parent->d_lock)) {
@@ -40,10 +41,10 @@ Index: linux-3.4/fs/autofs4/expire.c
goto relock;
}
spin_unlock(&p->d_lock);
-Index: linux-3.4/fs/dcache.c
-===================================================================
---- linux-3.4.orig/fs/dcache.c
-+++ linux-3.4/fs/dcache.c
+diff --git a/fs/dcache.c b/fs/dcache.c
+index b80531c..0801198 100644
+--- a/fs/dcache.c
++++ b/fs/dcache.c
@@ -37,6 +37,7 @@
#include <linux/rculist_bl.h>
#include <linux/prefetch.h>
@@ -52,7 +53,7 @@ Index: linux-3.4/fs/dcache.c
#include "internal.h"
#include "mount.h"
-@@ -454,7 +455,7 @@ static inline struct dentry *dentry_kill
+@@ -472,7 +473,7 @@ static inline struct dentry *dentry_kill(struct dentry *dentry, int ref)
if (inode && !spin_trylock(&inode->i_lock)) {
relock:
spin_unlock(&dentry->d_lock);
@@ -61,7 +62,7 @@ Index: linux-3.4/fs/dcache.c
return dentry; /* try again with same dentry */
}
if (IS_ROOT(dentry))
-@@ -840,7 +841,7 @@ relock:
+@@ -858,7 +859,7 @@ relock:
if (!spin_trylock(&dentry->d_lock)) {
spin_unlock(&dcache_lru_lock);
@@ -70,7 +71,7 @@ Index: linux-3.4/fs/dcache.c
goto relock;
}
-@@ -2022,7 +2023,7 @@ again:
+@@ -2040,7 +2041,7 @@ again:
if (dentry->d_count == 1) {
if (inode && !spin_trylock(&inode->i_lock)) {
spin_unlock(&dentry->d_lock);
@@ -79,10 +80,10 @@ Index: linux-3.4/fs/dcache.c
goto again;
}
dentry->d_flags &= ~DCACHE_CANT_MOUNT;
-Index: linux-3.4/fs/namespace.c
-===================================================================
---- linux-3.4.orig/fs/namespace.c
-+++ linux-3.4/fs/namespace.c
+diff --git a/fs/namespace.c b/fs/namespace.c
+index 7fd0981..4d20e76 100644
+--- a/fs/namespace.c
++++ b/fs/namespace.c
@@ -20,6 +20,7 @@
#include <linux/fs_struct.h> /* get_fs_root et.al. */
#include <linux/fsnotify.h> /* fsnotify_vfsmount_delete */
@@ -100,3 +101,6 @@ Index: linux-3.4/fs/namespace.c
preempt_disable();
}
/*
+--
+1.7.10.4
+
diff --git a/patches/net-use-cpu-chill.patch b/patches/0246-net-Use-cpu_chill-instead-of-cpu_relax.patch
index f262038..b036eca 100644
--- a/patches/net-use-cpu-chill.patch
+++ b/patches/0246-net-Use-cpu_chill-instead-of-cpu_relax.patch
@@ -1,6 +1,7 @@
-Subject: net: Use cpu_chill() instead of cpu_relax()
+From e7f64acb6922edf6cf061ec45841edf226e6beaf Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
-Date: Wed, 07 Mar 2012 21:10:04 +0100
+Date: Wed, 7 Mar 2012 21:10:04 +0100
+Subject: [PATCH 246/254] net: Use cpu_chill() instead of cpu_relax()
Retry loops on RT might loop forever when the modifying side was
preempted. Use cpu_chill() instead of cpu_relax() to let the system
@@ -13,10 +14,10 @@ Cc: stable-rt@vger.kernel.org
net/rds/ib_rdma.c | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
-Index: linux-3.4/net/packet/af_packet.c
-===================================================================
---- linux-3.4.orig/net/packet/af_packet.c
-+++ linux-3.4/net/packet/af_packet.c
+diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
+index 4f2c0df..8194092 100644
+--- a/net/packet/af_packet.c
++++ b/net/packet/af_packet.c
@@ -88,6 +88,7 @@
#include <linux/virtio_net.h>
#include <linux/errqueue.h>
@@ -25,7 +26,7 @@ Index: linux-3.4/net/packet/af_packet.c
#ifdef CONFIG_INET
#include <net/inet_common.h>
-@@ -672,7 +673,7 @@ static void prb_retire_rx_blk_timer_expi
+@@ -672,7 +673,7 @@ static void prb_retire_rx_blk_timer_expired(unsigned long data)
if (BLOCK_NUM_PKTS(pbd)) {
while (atomic_read(&pkc->blk_fill_in_prog)) {
/* Waiting for skb_copy_bits to finish... */
@@ -34,7 +35,7 @@ Index: linux-3.4/net/packet/af_packet.c
}
}
-@@ -927,7 +928,7 @@ static void prb_retire_current_block(str
+@@ -927,7 +928,7 @@ static void prb_retire_current_block(struct tpacket_kbdq_core *pkc,
if (!(status & TP_STATUS_BLK_TMO)) {
while (atomic_read(&pkc->blk_fill_in_prog)) {
/* Waiting for skb_copy_bits to finish... */
@@ -43,10 +44,10 @@ Index: linux-3.4/net/packet/af_packet.c
}
}
prb_close_block(pkc, pbd, po, status);
-Index: linux-3.4/net/rds/ib_rdma.c
-===================================================================
---- linux-3.4.orig/net/rds/ib_rdma.c
-+++ linux-3.4/net/rds/ib_rdma.c
+diff --git a/net/rds/ib_rdma.c b/net/rds/ib_rdma.c
+index e8fdb17..5a44c6e 100644
+--- a/net/rds/ib_rdma.c
++++ b/net/rds/ib_rdma.c
@@ -34,6 +34,7 @@
#include <linux/slab.h>
#include <linux/rculist.h>
@@ -55,7 +56,7 @@ Index: linux-3.4/net/rds/ib_rdma.c
#include "rds.h"
#include "ib.h"
-@@ -286,7 +287,7 @@ static inline void wait_clean_list_grace
+@@ -286,7 +287,7 @@ static inline void wait_clean_list_grace(void)
for_each_online_cpu(cpu) {
flag = &per_cpu(clean_list_grace, cpu);
while (test_bit(CLEAN_LIST_BUSY_BIT, flag))
@@ -64,3 +65,6 @@ Index: linux-3.4/net/rds/ib_rdma.c
}
}
+--
+1.7.10.4
+
diff --git a/patches/ntp-make-ntp-lock-raw-sigh.patch b/patches/0247-ntp-Make-ntp_lock-raw.patch
index 28d3f19..3e71e35 100644
--- a/patches/ntp-make-ntp-lock-raw-sigh.patch
+++ b/patches/0247-ntp-Make-ntp_lock-raw.patch
@@ -1,6 +1,7 @@
-Subject: ntp: Make ntp_lock raw.
+From d435d1b9e9b9400d18c19478a5f9687b5f47d7d1 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 10 Apr 2012 11:14:55 +0200
+Subject: [PATCH 247/254] ntp: Make ntp_lock raw.
This needs to be revisited. Not sure whether we can avoid to make this
lock raw, but it'd really like to.
@@ -10,10 +11,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/time/ntp.c | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
-Index: linux-3.4/kernel/time/ntp.c
-===================================================================
---- linux-3.4.orig/kernel/time/ntp.c
-+++ linux-3.4/kernel/time/ntp.c
+diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
+index f03fd83..82897ea 100644
+--- a/kernel/time/ntp.c
++++ b/kernel/time/ntp.c
@@ -22,7 +22,7 @@
* NTP timekeeping variables:
*/
@@ -89,7 +90,7 @@ Index: linux-3.4/kernel/time/ntp.c
txc->time.tv_sec = ts.tv_sec;
txc->time.tv_usec = ts.tv_nsec;
-@@ -898,7 +898,7 @@ void hardpps(const struct timespec *phas
+@@ -898,7 +898,7 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
pts_norm = pps_normalize_ts(*phase_ts);
@@ -98,7 +99,7 @@ Index: linux-3.4/kernel/time/ntp.c
/* clear the error bits, they will be set again if needed */
time_status &= ~(STA_PPSJITTER | STA_PPSWANDER | STA_PPSERROR);
-@@ -911,7 +911,7 @@ void hardpps(const struct timespec *phas
+@@ -911,7 +911,7 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
* just start the frequency interval */
if (unlikely(pps_fbase.tv_sec == 0)) {
pps_fbase = *raw_ts;
@@ -107,7 +108,7 @@ Index: linux-3.4/kernel/time/ntp.c
return;
}
-@@ -926,7 +926,7 @@ void hardpps(const struct timespec *phas
+@@ -926,7 +926,7 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
time_status |= STA_PPSJITTER;
/* restart the frequency calibration interval */
pps_fbase = *raw_ts;
@@ -116,7 +117,7 @@ Index: linux-3.4/kernel/time/ntp.c
pr_err("hardpps: PPSJITTER: bad pulse\n");
return;
}
-@@ -943,7 +943,7 @@ void hardpps(const struct timespec *phas
+@@ -943,7 +943,7 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
hardpps_update_phase(pts_norm.nsec);
@@ -125,3 +126,6 @@ Index: linux-3.4/kernel/time/ntp.c
}
EXPORT_SYMBOL(hardpps);
+--
+1.7.10.4
+
diff --git a/patches/mips-remove-smp-reserve-lock.patch b/patches/0248-mips-remove-smp-reserve-lock.patch.patch
index 70c0d00..be5817a 100644
--- a/patches/mips-remove-smp-reserve-lock.patch
+++ b/patches/0248-mips-remove-smp-reserve-lock.patch.patch
@@ -1,6 +1,7 @@
-Subject: mips-remove-smp-reserve-lock.patch
+From 397e573a94db8a2f9656d4f53752ae8dad58ddd0 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 22 May 2012 21:15:10 +0200
+Subject: [PATCH 248/254] mips-remove-smp-reserve-lock.patch
Instead of making the lock raw, remove it as it protects nothing.
@@ -10,10 +11,10 @@ Cc: stable-rt@vger.kernel.org
arch/mips/cavium-octeon/smp.c | 6 ------
1 file changed, 6 deletions(-)
-Index: linux-3.4/arch/mips/cavium-octeon/smp.c
-===================================================================
---- linux-3.4.orig/arch/mips/cavium-octeon/smp.c
-+++ linux-3.4/arch/mips/cavium-octeon/smp.c
+diff --git a/arch/mips/cavium-octeon/smp.c b/arch/mips/cavium-octeon/smp.c
+index 97e7ce9..4b93048 100644
+--- a/arch/mips/cavium-octeon/smp.c
++++ b/arch/mips/cavium-octeon/smp.c
@@ -257,8 +257,6 @@ DEFINE_PER_CPU(int, cpu_state);
extern void fixup_irqs(void);
@@ -41,3 +42,6 @@ Index: linux-3.4/arch/mips/cavium-octeon/smp.c
return 0;
}
+--
+1.7.10.4
+
diff --git a/patches/lockdep-selftest-convert-spinlock-to-raw-spinlock.patch b/patches/0249-lockdep-Selftest-convert-spinlock-to-raw-spinlock.patch
index d721a17..981a44a 100644
--- a/patches/lockdep-selftest-convert-spinlock-to-raw-spinlock.patch
+++ b/patches/0249-lockdep-Selftest-convert-spinlock-to-raw-spinlock.patch
@@ -1,8 +1,7 @@
-Subject: lockdep: Selftest: convert spinlock to raw spinlock
-From: Yong Zhang <yong.zhang0@gmail.com>
-Date: Mon, 16 Apr 2012 15:01:55 +0800
-
+From 810c1a92939156526432c0ea8d247e75256d6812 Mon Sep 17 00:00:00 2001
From: Yong Zhang <yong.zhang@windriver.com>
+Date: Mon, 16 Apr 2012 15:01:55 +0800
+Subject: [PATCH 249/254] lockdep: Selftest: convert spinlock to raw spinlock
spinlock is sleepable on -rt and can not be used in
interrupt context.
@@ -13,7 +12,7 @@ Link: http://lkml.kernel.org/r/1334559716-18447-2-git-send-email-yong.zhang0@gma
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
lib/locking-selftest.c | 34 +++++++++++++++++-----------------
- 1 files changed, 17 insertions(+), 17 deletions(-)
+ 1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/lib/locking-selftest.c b/lib/locking-selftest.c
index 7aae0f2..c3eb261 100644
@@ -91,11 +90,5 @@ index 7aae0f2..c3eb261 100644
mutex_init(&mutex_##x); \
init_rwsem(&rwsem_##x); \
--
-1.7.5.4
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-
+1.7.10.4
diff --git a/patches/lockdep-selftest-only-do-hardirq-context-test-for-raw-spinlock.patch b/patches/0250-lockdep-Selftest-Only-do-hardirq-context-test-for-ra.patch
index 3299fdc..34bc43f 100644
--- a/patches/lockdep-selftest-only-do-hardirq-context-test-for-raw-spinlock.patch
+++ b/patches/0250-lockdep-Selftest-Only-do-hardirq-context-test-for-ra.patch
@@ -1,8 +1,8 @@
-Subject: lockdep: Selftest: Only do hardirq context test for raw spinlock
-From: Yong Zhang <yong.zhang0@gmail.com>
-Date: Mon, 16 Apr 2012 15:01:56 +0800
-
+From d22cf55a3529b48497d509f34c261da4195a619a Mon Sep 17 00:00:00 2001
From: Yong Zhang <yong.zhang@windriver.com>
+Date: Mon, 16 Apr 2012 15:01:56 +0800
+Subject: [PATCH 250/254] lockdep: Selftest: Only do hardirq context test for
+ raw spinlock
On -rt there is no softirq context any more and rwlock is sleepable,
disable softirq context test and rwlock+irq test.
@@ -13,7 +13,7 @@ Link: http://lkml.kernel.org/r/1334559716-18447-3-git-send-email-yong.zhang0@gma
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
lib/locking-selftest.c | 23 +++++++++++++++++++++++
- 1 files changed, 23 insertions(+), 0 deletions(-)
+ 1 file changed, 23 insertions(+)
diff --git a/lib/locking-selftest.c b/lib/locking-selftest.c
index c3eb261..23b8564 100644
@@ -57,11 +57,5 @@ index c3eb261..23b8564 100644
if (unexpected_testcase_failures) {
printk("-----------------------------------------------------------------\n");
--
-1.7.5.4
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-
+1.7.10.4
diff --git a/patches/genirq-add-default-mask-cmdline-option.patch b/patches/0251-genirq-Add-default-affinity-mask-command-line-option.patch
index 505e377..84f442c 100644
--- a/patches/genirq-add-default-mask-cmdline-option.patch
+++ b/patches/0251-genirq-Add-default-affinity-mask-command-line-option.patch
@@ -1,6 +1,8 @@
-Subject: genirq: Add default affinity mask command line option
+From 96957a07c9aa75405ed3e4baea4a3f81072556e8 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 25 May 2012 16:59:47 +0200
+Subject: [PATCH 251/254] genirq: Add default affinity mask command line
+ option
If we isolate CPUs, then we don't want random device interrupts on
them. Even w/o the user space irq balancer enabled we can end up with
@@ -14,11 +16,11 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/irq/irqdesc.c | 21 +++++++++++++++++++--
2 files changed, 28 insertions(+), 2 deletions(-)
-Index: linux-3.4/Documentation/kernel-parameters.txt
-===================================================================
---- linux-3.4.orig/Documentation/kernel-parameters.txt
-+++ linux-3.4/Documentation/kernel-parameters.txt
-@@ -1126,6 +1126,15 @@ bytes respectively. Such letter suffixes
+diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
+index 1e0150e..67d1350 100644
+--- a/Documentation/kernel-parameters.txt
++++ b/Documentation/kernel-parameters.txt
+@@ -1126,6 +1126,15 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
See comment before ip2_setup() in
drivers/char/ip2/ip2base.c.
@@ -34,10 +36,10 @@ Index: linux-3.4/Documentation/kernel-parameters.txt
irqfixup [HW]
When an interrupt is not handled search all handlers
for it. Intended to get systems with badly broken
-Index: linux-3.4/kernel/irq/irqdesc.c
-===================================================================
---- linux-3.4.orig/kernel/irq/irqdesc.c
-+++ linux-3.4/kernel/irq/irqdesc.c
+diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c
+index 192a302..473b2b6 100644
+--- a/kernel/irq/irqdesc.c
++++ b/kernel/irq/irqdesc.c
@@ -23,10 +23,27 @@
static struct lock_class_key irq_desc_lock_class;
@@ -68,3 +70,6 @@ Index: linux-3.4/kernel/irq/irqdesc.c
}
#else
static void __init init_irq_default_affinity(void)
+--
+1.7.10.4
+
diff --git a/patches/kconfig-disable-a-few-options-rt.patch b/patches/0252-kconfig-disable-a-few-options-rt.patch.patch
index 44ebc86..49652ec 100644
--- a/patches/kconfig-disable-a-few-options-rt.patch
+++ b/patches/0252-kconfig-disable-a-few-options-rt.patch.patch
@@ -1,6 +1,7 @@
-Subject: kconfig-disable-a-few-options-rt.patch
+From 5f15bcbbcb0417d4aebadf86333111c4f7c5aa13 Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Sun, 24 Jul 2011 12:11:43 +0200
+Subject: [PATCH 252/254] kconfig-disable-a-few-options-rt.patch
Disable stuff which is known to have issues on RT
@@ -11,10 +12,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
mm/Kconfig | 2 +-
3 files changed, 3 insertions(+), 1 deletion(-)
-Index: linux-3.4/arch/Kconfig
-===================================================================
---- linux-3.4.orig/arch/Kconfig
-+++ linux-3.4/arch/Kconfig
+diff --git a/arch/Kconfig b/arch/Kconfig
+index 684eb5a..417ff4c 100644
+--- a/arch/Kconfig
++++ b/arch/Kconfig
@@ -6,6 +6,7 @@ config OPROFILE
tristate "OProfile system profiling"
depends on PROFILING
@@ -23,10 +24,10 @@ Index: linux-3.4/arch/Kconfig
select RING_BUFFER
select RING_BUFFER_ALLOW_SWAP
help
-Index: linux-3.4/drivers/net/Kconfig
-===================================================================
---- linux-3.4.orig/drivers/net/Kconfig
-+++ linux-3.4/drivers/net/Kconfig
+diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
+index b982854..8b53d92 100644
+--- a/drivers/net/Kconfig
++++ b/drivers/net/Kconfig
@@ -156,6 +156,7 @@ config MACVTAP
config NETCONSOLE
@@ -35,10 +36,10 @@ Index: linux-3.4/drivers/net/Kconfig
---help---
If you want to log kernel messages over the network, enable this.
See <file:Documentation/networking/netconsole.txt> for details.
-Index: linux-3.4/mm/Kconfig
-===================================================================
---- linux-3.4.orig/mm/Kconfig
-+++ linux-3.4/mm/Kconfig
+diff --git a/mm/Kconfig b/mm/Kconfig
+index e338407..096f436 100644
+--- a/mm/Kconfig
++++ b/mm/Kconfig
@@ -313,7 +313,7 @@ config NOMMU_INITIAL_TRIM_EXCESS
config TRANSPARENT_HUGEPAGE
@@ -48,3 +49,6 @@ Index: linux-3.4/mm/Kconfig
select COMPACTION
help
Transparent Hugepages allows the kernel to use huge pages and
+--
+1.7.10.4
+
diff --git a/patches/kconfig-preempt-rt-full.patch b/patches/0253-kconfig-preempt-rt-full.patch.patch
index cb75d7d..8f0e1ec 100644
--- a/patches/kconfig-preempt-rt-full.patch
+++ b/patches/0253-kconfig-preempt-rt-full.patch.patch
@@ -1,6 +1,7 @@
-Subject: kconfig-preempt-rt-full.patch
+From 45cfcd97364a7e452976a92c995c697d4f366a7a Mon Sep 17 00:00:00 2001
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 29 Jun 2011 14:58:57 +0200
+Subject: [PATCH 253/254] kconfig-preempt-rt-full.patch
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
@@ -9,20 +10,20 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
scripts/mkcompile_h | 4 +++-
3 files changed, 11 insertions(+), 2 deletions(-)
-Index: linux-3.4/init/Makefile
-===================================================================
---- linux-3.4.orig/init/Makefile
-+++ linux-3.4/init/Makefile
+diff --git a/init/Makefile b/init/Makefile
+index 0bf677a..6b473cd 100644
+--- a/init/Makefile
++++ b/init/Makefile
@@ -29,4 +29,4 @@ silent_chk_compile.h = :
include/generated/compile.h: FORCE
@$($(quiet)chk_compile.h)
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkcompile_h $@ \
- "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" "$(CC) $(KBUILD_CFLAGS)"
+ "$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" "$(CONFIG_PREEMPT_RT_FULL)" "$(CC) $(KBUILD_CFLAGS)"
-Index: linux-3.4/kernel/Kconfig.preempt
-===================================================================
---- linux-3.4.orig/kernel/Kconfig.preempt
-+++ linux-3.4/kernel/Kconfig.preempt
+diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
+index 885efbd..c9f006b 100644
+--- a/kernel/Kconfig.preempt
++++ b/kernel/Kconfig.preempt
@@ -67,6 +67,13 @@ config PREEMPT_RTB
enables changes which are preliminary for the full preemptiple
RT kernel.
@@ -37,10 +38,10 @@ Index: linux-3.4/kernel/Kconfig.preempt
endchoice
config PREEMPT_COUNT
-Index: linux-3.4/scripts/mkcompile_h
-===================================================================
---- linux-3.4.orig/scripts/mkcompile_h
-+++ linux-3.4/scripts/mkcompile_h
+diff --git a/scripts/mkcompile_h b/scripts/mkcompile_h
+index f221ddf..5f44009 100755
+--- a/scripts/mkcompile_h
++++ b/scripts/mkcompile_h
@@ -4,7 +4,8 @@ TARGET=$1
ARCH=$2
SMP=$3
@@ -59,3 +60,6 @@ Index: linux-3.4/scripts/mkcompile_h
UTS_VERSION="$UTS_VERSION $CONFIG_FLAGS $TIMESTAMP"
# Truncate to maximum length
+--
+1.7.10.4
+
diff --git a/patches/0254-Linux-3.4.1-rt9-REBASE.patch b/patches/0254-Linux-3.4.1-rt9-REBASE.patch
new file mode 100644
index 0000000..5421b2b
--- /dev/null
+++ b/patches/0254-Linux-3.4.1-rt9-REBASE.patch
@@ -0,0 +1,19 @@
+From ae6dddd875e34e5ac7ee93e8e27cd71b1fe09d48 Mon Sep 17 00:00:00 2001
+From: Steven Rostedt <rostedt@goodmis.org>
+Date: Thu, 7 Jun 2012 09:56:33 -0400
+Subject: [PATCH 254/254] Linux 3.4.1-rt9 REBASE
+
+---
+ localversion-rt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/localversion-rt b/localversion-rt
+index 700c857..22746d6 100644
+--- a/localversion-rt
++++ b/localversion-rt
+@@ -1 +1 @@
+--rt8
++-rt9
+--
+1.7.10.4
+
diff --git a/patches/arm-enable-interrupts-in-signal-code.patch b/patches/arm-enable-interrupts-in-signal-code.patch
deleted file mode 100644
index 1187330..0000000
--- a/patches/arm-enable-interrupts-in-signal-code.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Subject: arm-enable-interrupts-in-signal-code.patch
-From: Thomas Gleixner <tglx@linutronix.de>
-Date: Sat, 16 Jul 2011 16:27:13 +0200
-
-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
----
- arch/arm/kernel/signal.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-Index: linux-3.4/arch/arm/kernel/signal.c
-===================================================================
---- linux-3.4.orig/arch/arm/kernel/signal.c
-+++ linux-3.4/arch/arm/kernel/signal.c
-@@ -664,6 +664,9 @@ static void do_signal(struct pt_regs *re
- if (!user_mode(regs))
- return;
-
-+ local_irq_enable();
-+ preempt_check_resched();
-+
- /*
- * If we were from a system call, check for system call restarting...
- */
diff --git a/patches/hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch b/patches/hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch
deleted file mode 100644
index 8e20b73..0000000
--- a/patches/hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-Subject: hrtimer: Add missing debug_activate() aid [Was: Re: [ANNOUNCE] 3.0.6-rt17]
-From: Yong Zhang <yong.zhang0@gmail.com>
-Date: Thu, 13 Oct 2011 15:52:30 +0800
-
-On Fri, Oct 07, 2011 at 10:25:25AM -0700, Fernando Lopez-Lezcano wrote:
-> On 10/06/2011 06:15 PM, Thomas Gleixner wrote:
-> >Dear RT Folks,
-> >
-> >I'm pleased to announce the 3.0.6-rt17 release.
->
-> Hi and thanks again. So far this one is not hanging which is very
-> good news. But I still see the hrtimer_fixup_activate warnings I
-> reported for rt16...
-
-Hi Fernando,
-
-I think below patch will smooth your concern?
-
-Thanks,
-Yong
-
----
-From: Yong Zhang <yong.zhang0@gmail.com>
-Subject: [PATCH -rt] hrtimer: Add missing debug_activate() aid
-
-It will fix below warning, which is also reported by Fernando:
-
-[ 7.616090] ------------[ cut here ]------------
-[ 7.616093] WARNING: at kernel/hrtimer.c:391 hrtimer_fixup_activate+0x27/0x50()
-[ 7.616094] Hardware name: OptiPlex 755
-[ 7.616096] Modules linked in:
-[ 7.616099] Pid: 0, comm: kworker/0:0 Tainted: G W 3.0.6-rt17-00284-g9d73a61 #15
-[ 7.616100] Call Trace:
-[ 7.616103] [<c014d9a2>] warn_slowpath_common+0x72/0xa0
-[ 7.616106] [<c0175417>] ? hrtimer_fixup_activate+0x27/0x50
-[ 7.616109] [<c0175417>] ? hrtimer_fixup_activate+0x27/0x50
-[ 7.616112] [<c014d9f2>] warn_slowpath_null+0x22/0x30
-[ 7.616115] [<c0175417>] hrtimer_fixup_activate+0x27/0x50
-[ 7.616118] [<c03b3ab0>] debug_object_activate+0x100/0x130
-[ 7.616121] [<c0176b96>] ? hrtimer_start_range_ns+0x26/0x30
-[ 7.616123] [<c0175a59>] enqueue_hrtimer+0x19/0x100
-[ 7.616126] [<c0176b96>] ? hrtimer_start_range_ns+0x26/0x30
-[ 7.616129] [<c0176744>] __hrtimer_start_range_ns+0x144/0x540
-[ 7.616132] [<c072705a>] ? _raw_spin_unlock_irqrestore+0x3a/0x80
-[ 7.616136] [<c0176b96>] hrtimer_start_range_ns+0x26/0x30
-[ 7.616139] [<c01852b5>] tick_nohz_restart_sched_tick+0x185/0x1b0
-[ 7.616142] [<c0101878>] cpu_idle+0x98/0xc0
-[ 7.616146] [<c071fcd8>] start_secondary+0x1d3/0x1da
-[ 7.616148] ---[ end trace 0000000000000003 ]---
-
-Reported-by: Fernando Lopez-Lezcano <nando@ccrma.stanford.edu>
-Signed-off-by: Yong Zhang <yong.zhang0@gmail.com>
-Link: http://lkml.kernel.org/r/20111013075230.GA2740@zhy
-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
----
- kernel/hrtimer.c | 1 +
- 1 file changed, 1 insertion(+)
-
-Index: linux-3.4/kernel/hrtimer.c
-===================================================================
---- linux-3.4.orig/kernel/hrtimer.c
-+++ linux-3.4/kernel/hrtimer.c
-@@ -1042,6 +1042,7 @@ int __hrtimer_start_range_ns(struct hrti
- * remove it again and report a failure. This avoids
- * stale base->first entries.
- */
-+ debug_deactivate(timer);
- __remove_hrtimer(timer, new_base,
- timer->state & HRTIMER_STATE_CALLBACK, 0);
- }
diff --git a/patches/series b/patches/series
index eddd67e..f8bd8f4 100644
--- a/patches/series
+++ b/patches/series
@@ -1,590 +1,254 @@
-###########################################################
-# DELTA against a known Linus release (3.2.5)
-###########################################################
-
-############################################################
-# UPSTREAM changes queued for 3.3 or 3.2
-############################################################
-re-possible-slab-deadlock-while-doing-ifenslave-1.patch
-
-# Should go to stable 3.0.x!
-
-############################################################
-# UPSTREAM FIXES, patches pending
-############################################################
-# rtc-deal-with-errors-correctly.patch -- 3.0.1
-# rtc-fix-hrtimer-deadlock.patch -- 3.0.1
-# rtc-limit-frequency.patch -- 3.0.1
-
-# Some variant of this is in 3.1
-
-############################################################
-# Stuff broken upstream, patches submitted
-############################################################
-x86-kprobes-remove-bogus-preempt-enable.patch
-
-############################################################
-# Stuff which needs addressing upstream, but requires more
-# information
-############################################################
-tick-skew.patch
-x86-hpet-disable-msi-on-lenovo-w510.patch
-
-############################################################
-# Stuff broken upstream, need to be sent
-############################################################
-
-############################################################
-# Submitted on LKML
-############################################################
-# SCHED BLOCK/WQ
-block-shorten-interrupt-disabled-regions.patch
-sched-distangle-worker-accounting-from-rq-3elock.patch
-
-############################################################
-# Submitted to mips ML
-############################################################
-mips-enable-interrupts-in-signal.patch
-
-############################################################
-# Submitted to ARM ML
-############################################################
-arm-enable-interrupts-in-signal-code.patch
-
-############################################################
-# Submitted on LKML
-############################################################
-
-# JBD
-
-# SCHED
-
-############################################################
-# Submitted on ppc-devel
-############################################################
-
-############################################################
-# Submitted to net-dev
-############################################################
-
-############################################################
-# Pending in tip
-############################################################
-
-# WATCHDOG
-
-# CLOCKSOURCE
-
-# RTMUTEX CLEANUP
-
-# RAW SPINLOCKS
-
-# X86
-
-############################################################
-# Pending in peterz's scheduler queue
-############################################################
-
-
-############################################################
-# Stuff which should go upstream ASAP
-############################################################
-
-# Timekeeping / VDSO
-
-# SEQLOCK
-seqlock-remove-unused-functions.patch
-seqlock-use-seqcount.patch
-#seqlock-provide-seq-spin-lock.patch
-#fs-struct-use-seqlock.patch
-#fs-dentry-use-seqlock.patch
-
-# VFS. Al Viro provided this so we can deal with the seqcount simpler
-
-# RAW SPINLOCKS
-timekeeping-split-xtime-lock.patch
-intel_idle-convert-i7300_idle_lock-to-raw-spinlock.patch
-
-# MM memcg
-
-# Tracing
-tracing-account-for-preempt-off-in-preempt_schedule.patch
-
-# PTRACE/SIGNAL crap
-signal-revert-ptrace-preempt-magic.patch
-
-# ARM IRQF_NO_TRHEAD / IRQ THREADING SUPPORT
-arm-mark-pmu-interupt-no-thread.patch
-arm-allow-irq-threading.patch
-arm-convert-boot-lock-to-raw.patch
-
-# PREEMPT_ENABLE_NO_RESCHED
-
-# SIGNALS / POSIXTIMERS
-arm-omap-make-wakeupgen_lock-raw.patch
-signals-do-not-wake-self.patch
-posix-timers-no-broadcast.patch
-signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch
-oleg-signal-rt-fix.patch
-
-# SCHED
-
-# GENERIC CMPXCHG
-generic-cmpxchg-use-raw-local-irq.patch
-
-# SHORTEN PREEMPT DISABLED
-drivers-random-reduce-preempt-disabled-region.patch
-
-# CLOCKSOURCE
-arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch
-clocksource-tclib-allow-higher-clockrates.patch
-
-# HW LATENCY DETECTOR - this really wants a rewrite
-#hw-latency-detector.patch
-
-# DRIVERS NET
-drivers-net-tulip-add-missing-pci-disable.patch
-drivers-net-8139-disable-irq-nosync.patch
-drivers-net-ehea-mark-rx-irq-no-thread.patch
-drivers-net-at91-make-mdio-protection-rt-safe.patch
-
-# PREEMPT
-
-# PAGEFAULT DISABLE
-mm-prepare-pf-disable-discoupling.patch
-arch-use-pagefault-disabled.patch
-peter_zijlstra-frob-pagefault_disable.patch
-peterz-raw_pagefault_disable.patch
-# highmem-explicitly-disable-preemption.patch -- peterz
-filemap-fix-up.patch
-mm-remove-preempt-count-from-pf.patch
-
-# HIGHMEM
-x86-highmem-warn.patch
-
-# PM
-suspend-prevernt-might-sleep-splats.patch
-
-# DEVICE TREE
-of-fixup-recursive-locking.patch
-of-convert-devtree-lock.patch
-
-# MM/LISTS
-list-add-list-last-entry.patch
-mm-page-alloc-use-list-last-entry.patch
-mm-slab-move-debug-out.patch
-
-# INCLUDE MESS
-pid-h-include-atomic-h.patch
-sysctl-include-atomic-h.patch
-
-# NETWORKING
-net-flip-lock-dep-thingy.patch
-
-# SOFTIRQ
-softirq-thread-do-softirq.patch
-softirq-split-out-code.patch
-
-# X86
-x86-io-apic-migra-no-unmask.patch
-fix-rt-int3-x86_32-3.2-rt.patch
-
-# RCU
-
-# LOCKING INIT FIXES
-locking-various-init-fixes.patch
-# rtc-tegra-lock-init.patch -- 3.0.1
-
-# PCI
-pci-access-use-__wake_up_all_locked.patch
-
-#####################################################
-# Stuff which should go mainline, but wants some care
-#####################################################
-
-# SEQLOCK
-
-# ANON RW SEMAPHORES
-
-# TRACING
-latency-hist.patch
-
-# HW latency detector
-hwlatdetect.patch
-
-##################################################
-# REAL RT STUFF starts here
-##################################################
-
-# Add RT to version
-localversion.patch
-
-# PRINTK
-early-printk-consolidate.patch
-printk-kill.patch
-printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch
-
-# BASE RT CONFIG
-rt-preempt-base-config.patch
-
-# WARN/BUG_ON_RT
-bug-rt-dependend-variants.patch
-
-# LOCAL_IRQ_RT/NON_RT
-local-irq-rt-depending-variants.patch
-
-# PREEMPT NORT
-preempt-nort-rt-variants.patch
-
-# ANNOTATE local_irq_disable sites
-ata-disable-interrupts-if-non-rt.patch
-ide-use-nort-local-irq-variants.patch
-infiniband-mellanox-ib-use-nort-irq.patch
-inpt-gameport-use-local-irq-nort.patch
-acpi-use-local-irq-nort.patch
-user-use-local-irq-nort.patch
-resource-counters-use-localirq-nort.patch
-usb-hcd-use-local-irq-nort.patch
-tty-use-local-irq-nort.patch
-mm-scatterlist-dont-disable-irqs-on-RT.patch
-
-# Sigh
-signal-fix-up-rcu-wreckage.patch
-
-# ANNOTATE BUG/WARNON
-net-wireless-warn-nort.patch
-
-# BIT SPINLOCKS - SIGH
-mm-cgroup-page-bit-spinlock.patch
-fs-replace-bh_uptodate_lock-for-rt.patch
-fs-jbd-replace-bh_state-lock.patch
-
-# GENIRQ
-genirq-nodebug-shirq.patch
-genirq-disable-random-call-on-preempt-rt.patch
-genirq-disable-irqpoll-on-rt.patch
-genirq-force-threading.patch
-
-# DRIVERS NET
-drivers-net-fix-livelock-issues.patch
-drivers-net-vortex-fix-locking-issues.patch
-drivers-net-gianfar-make-rt-aware.patch
-
-# DRIVERS USB
-# Revisit. Looks weird
-#usb-rt-support.patch
-usb-fix-mouse-problem-copying-large-data.patch
-
-# LOCAL_IRQ_LOCKS
-local-var.patch
-rt-local-irq-lock.patch
-cpu-rt-variants.patch
-
-# MM SLAB
-mm-slab-wrap-functions.patch
-rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch
-mm-slab-more-lock-breaks.patch
-
-# MM PAGE_ALLOC
-mm-page_alloc-rt-friendly-per-cpu-pages.patch
-mm-page_alloc-reduce-lock-sections-further.patch
-mm-page-alloc-fix.patch
-
-# MM SWAP
-mm-convert-swap-to-percpu-locked.patch
-
-# MM vmstat
-mm-make-vmstat-rt-aware.patch
-
-# MM memory
-#mm-memory-rt.patch - ZAP... is unused
-mm-shrink-the-page-frame-to-rt-size.patch
-re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch
-
-# MM SLAB only
-mm-allow-slab-rt.patch
-
-# Revisit for avr/frv/ia64/mn10300/sh/sparc ...
-#mm-quicklists-percpu-locked.patch
-
-# RADIX TREE
-radix-tree-rt-aware.patch
-
-# PANIC
-panic-disable-random-on-rt.patch
-
-# IPC
-ipc-make-rt-aware.patch
-ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch
-
-# RELAY
-relay-fix-timer-madness.patch
-
-# NETWORKING
-net-ipv4-route-use-locks-on-up-rt.patch
-
-# WORKQUEUE SIGH
-workqueue-avoid-the-lock-in-cpu-dying.patch
-
-# TIMERS
-timers-prepare-for-full-preemption.patch
-timers-preempt-rt-support.patch
-timers-fix-timer-hotplug-on-rt.patch
-timers-mov-printk_tick-to-soft-interrupt.patch
-timer-delay-waking-softirqs-from-the-jiffy-tick.patch
-timers-avoid-the-base-null-otptimization-on-rt.patch
-
-# More PRINTK
-rfc-printk-don-27t-call-printk_tick-in-printk_needs_cpu.patch
-
-# HRTIMERS
-hrtimers-prepare-full-preemption.patch
-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch
-peter_zijlstra-frob-hrtimer.patch
-hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch
-hrtimer-fix-reprogram-madness.patch
-timer-fd-avoid-live-lock.patch
-
-# POSIX-CPU-TIMERS
-posix-timers-thread-posix-cpu-timers-on-rt.patch
-posix-timers-shorten-cpu-timers-thread.patch
-posix-timers-avoid-wakeups-when-no-timers-are-active.patch
-
-# SCHEDULER
-sched-delay-put-task.patch
-sched-limit-nr-migrate.patch
-sched-mmdrop-delayed.patch
-sched-rt-mutex-wakeup.patch
-sched-might-sleep-do-not-account-rcu-depth.patch
-# CHECKME sched-load-balance-break-on-rq-contention.patch
-sched-cond-resched.patch
-cond-resched-softirq-rt.patch
-cond-resched-lock-rt-tweak.patch
-sched-disable-ttwu-queue.patch
-sched-disable-rt-group-sched-on-rt.patch
-sched-ttwu-ensure-success-return-is-correct.patch
-
-# STOP MACHINE
-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch
-stomp-machine-mark-stomper-thread.patch
-stomp-machine-raw-lock.patch
-
-# MIGRATE DISABLE AND PER CPU
-hotplug-light-get-online-cpus.patch
-hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch
-re-migrate_disable-race-with-cpu-hotplug-3f.patch
-sched-migrate-disable.patch
-hotplug-use-migrate-disable.patch
-hotplug-call-cpu_unplug_begin-a-little-early.patch
-
-ftrace-migrate-disable-tracing.patch
-rt-tracing-show-padding-as-unsigned-short.patch
-
-migrate-disable-rt-variant.patch
-peter_zijlstra-frob-migrate_disable.patch
-peter_zijlstra-frob-migrate_disable-2.patch
-sched-rt-fix-migrate_enable-thinko.patch
-sched-teach-migrate_disable-about-atomic-contexts.patch
-rt-sched-postpone-actual-migration-disalbe-to-schedule.patch
-rt-sched-do-not-compare-cpu-masks-in-scheduler.patch
-rt-sched-have-migrate_disable-ignore-bounded-threads.patch
-sched-clear-pf-thread-bound-on-fallback-rq.patch
-
-# FTRACE
-ftrace-crap.patch
-rt-ring-buffer-convert-reader_lock-from-raw_spin_lock-into-spin_lock.patch
-
-# NETWORKING
-net-netif_rx_ni-migrate-disable.patch
-
-# NOHZ
-softirq-sanitize-softirq-pending.patch
-
-# LOCKDEP
-lockdep-no-softirq-accounting-on-rt.patch
-
-# SOFTIRQ local lock
-mutex-no-spin-on-rt.patch
-softirq-local-lock.patch
-softirq-export-in-serving-softirq.patch
-harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch
-softirq-fix-unplug-deadlock.patch
-softirq-disable-softirq-stacks-for-rt.patch
-softirq-make-fifo.patch
-tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch
-irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch
-
-# LOCAL VARS and GETCPU STUFF
-local-vars-migrate-disable.patch
-
-# RAID5
-md-raid5-percpu-handling-rt-aware.patch
-
-# RTMUTEX
-rtmutex-lock-killable.patch
-
-# FUTEX/RTMUTEX
-rtmutex-futex-prepare-rt.patch
-futex-requeue-pi-fix.patch
-
-# RTMUTEX
-rt-mutex-add-sleeping-spinlocks-support.patch
-spinlock-types-separate-raw.patch
-rtmutex-avoid-include-hell.patch
-rt-add-rt-spinlock-to-headers.patch
-rt-add-rt-to-mutex-headers.patch
-rwsem-add-rt-variant.patch
-rt-add-rt-locks.patch
-
-# RTMUTEX Fallout
-tasklist-lock-fix-section-conflict.patch
-
-# NOHZ/RTMUTEX
-timer-handle-idle-trylock-in-get-next-timer-irq.patch
-
-# RCU
-rcu-force-preempt-rcu-for-rt.patch
-peter_zijlstra-frob-rcu.patch
-rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch
-rcu-fix-macro-substitution.patch
-rcu-tiny-merge-bh.patch
-patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch
-rcu-fix-build-break.patch
-rt-rcutree-warn-fix.patch
-
-# LGLOCKS - lovely
-lglocks-rt.patch
-
-# DRIVERS SERIAL
-drivers-serial-cleanup-locking-for-rt.patch
-drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch
-drivers-tty-fix-omap-lock-crap.patch
-rt-serial-warn-fix.patch
-
-# FS
-fs-namespace-preemption-fix.patch
-mm-protect-activate-switch-mm.patch
-mm-protect-activate_mm-by-preempt_-disable-7cenable-_rt.patch
-fs-block-rt-support.patch
-fs-ntfs-disable-interrupt-non-rt.patch
-
-# X86
-x86-mce-timer-hrtimer.patch
-x86-stackprot-no-random-on-rt.patch
-# x86-no-highmem-with-rt.patch -- peterz
-x86-use-gen-rwsem-spinlocks-rt.patch
-x86-disable-debug-stack.patch
-
-# CPU get light
-workqueue-use-get-cpu-light.patch
-epoll-use-get-cpu-light.patch
-mm-vmalloc-use-get-cpu-light.patch
-
-# WORKQUEUE more fixes
-workqueue-sanity.patch
-workqueue-fix-PF_THREAD_BOUND.patch
-workqueue-hotplug-fix.patch
-workqueue-more-hotplug-fallout.patch
-
-# DEBUGOBJECTS
-debugobjects-rt.patch
-
-# JUMPLABEL
-jump-label-rt.patch
-
-# NET
-skbufhead-raw-lock.patch
-
-# PERF
-perf-move-irq-work-to-softirq-in-rt.patch
-
-# CONSOLE. NEEDS more thought !!!
-console-make-rt-friendly.patch
-fix-printk-flush-of-messages-1.patch
-
-# POWERC
-power-use-generic-rwsem-on-rt.patch
-power-disable-highmem-on-rt.patch
-
-# ARM
-arm-disable-highmem-on-rt.patch
-arm-at91-tclib-default-to-tclib-timer-for-rt.patch
-
-# MIPS
-mips-disable-highmem-on-rt.patch
-
-# NETWORK livelock fix
-net-tx-action-avoid-livelock-on-rt.patch
-
-# NETWORK DEBUGGING AID
-ping-sysrq.patch
-
-# KGDB
-kgb-serial-hackaround.patch
-
-# SYSFS - RT indicator
-sysfs-realtime-entry.patch
-
-# KMAP/HIGHMEM
-peter_zijlstra-re-_3_0-rt4.patch
-
-# IPC
-ipc-sem-rework-semaphore-wakeups.patch
-
-# SYSRQ
-
-# KVM require constant freq TSC (smp function call -> cpufreq)
-x86-kvm-require-const-tsc-for-rt.patch
-
-# SCSI/FCOE
-scsi-fcoe-rt-aware.patch
-
-# X86 crypto
-x86-crypto-reduce-preempt-disabled-regions.patch
-
-# Device mapper
-dm-make-rt-aware.patch
-
-# ACPI
-# Dropped those two as they cause a scheduling in atomic failure and
-# we have no clue why we made those locks raw in the first place.
-# acpi-make-gbl-hardware-lock-raw.patch
-# acpi-make-ec-lock-raw-as-well.patch
-
-# This one is just a follow up to the raw spin locks
-# Simple raw spinlock based waitqueue
-# wait-simple-version.patch
-# acpi-gpe-use-wait-simple.patch
-
-# CPUMASK OFFSTACK
-cpumask-disable-offstack-on-rt.patch
-
-# Various fixes - fold them back
-seqlock-prevent-rt-starvation.patch
-#fs-protect-opencoded-isize-seqcount.patch
-#net-u64-stat-protect-seqcount.patch
-rfc-timer-fix-hotplug-for-rt.patch
-rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch
-rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch
-rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch
-rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch
-
-cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch
-
-softirq-preempt-fix-3-re.txt
-scsi-qla2xxx-fix-bug-sleeping-function-called-from-invalid-context.patch
-upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch
-
-rt-introduce-cpu-chill.patch
-fs-dcache-use-cpu-chill-in-trylock-loops.patch
-net-use-cpu-chill.patch
-
-ntp-make-ntp-lock-raw-sigh.patch
-
-# Enable full RT
-mips-remove-smp-reserve-lock.patch
-lockdep-selftest-convert-spinlock-to-raw-spinlock.patch
-lockdep-selftest-only-do-hardirq-context-test-for-raw-spinlock.patch
-genirq-add-default-mask-cmdline-option.patch
-kconfig-disable-a-few-options-rt.patch
-kconfig-preempt-rt-full.patch
+0001-Revert-workqueue-skip-nr_running-sanity-check-in-wor.patch
+0002-slab-lockdep-Annotate-all-slab-caches.patch
+0003-x86-kprobes-Remove-remove-bogus-preempt_enable.patch
+0004-tick-Add-tick-skew-boot-option.patch
+0005-x86-hpet-Disable-MSI-on-Lenovo-W510.patch
+0006-block-Shorten-interrupt-disabled-regions.patch
+0007-sched-Distangle-worker-accounting-from-rq-3Elock.patch
+0008-mips-enable-interrupts-in-signal.patch.patch
+0009-arm-enable-interrupts-in-signal-code.patch.patch
+0010-seqlock-Remove-unused-functions.patch
+0011-seqlock-Use-seqcount.patch
+0012-timekeeping-Split-xtime_lock.patch
+0013-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch
+0014-tracing-Account-for-preempt-off-in-preempt_schedule.patch
+0015-signal-revert-ptrace-preempt-magic.patch.patch
+0016-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch
+0017-arm-Allow-forced-irq-threading.patch
+0018-preempt-rt-Convert-arm-boot_lock-to-raw.patch
+0019-arm-omap-make-wakeupgen_lock-raw.patch.patch
+0020-signals-Do-not-wakeup-self.patch
+0021-posix-timers-Prevent-broadcast-signals.patch
+0022-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch
+0023-signal-x86-Delay-calling-signals-in-atomic.patch
+0024-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch
+0025-drivers-random-Reduce-preempt-disabled-region.patch
+0026-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch
+0027-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch
+0028-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch
+0029-drivers-net-Use-disable_irq_nosync-in-8139too.patch
+0030-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch
+0031-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch
+0032-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch
+0033-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch
+0034-mm-pagefault_disabled.patch
+0035-mm-raw_pagefault_disable.patch
+0036-filemap-fix-up.patch.patch
+0037-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch
+0038-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch
+0039-suspend-Prevent-might-sleep-splats.patch
+0040-OF-Fixup-resursive-locking-code-paths.patch
+0041-of-convert-devtree-lock.patch.patch
+0042-list-add-list-last-entry.patch.patch
+0043-mm-page-alloc-use-list-last-entry.patch.patch
+0044-mm-slab-move-debug-out.patch.patch
+0045-rwsem-inlcude-fix.patch.patch
+0046-sysctl-include-fix.patch.patch
+0047-net-flip-lock-dep-thingy.patch.patch
+0048-softirq-thread-do-softirq.patch.patch
+0049-softirq-split-out-code.patch.patch
+0050-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch
+0051-x86-Do-not-disable-preemption-in-int3-on-32bit.patch
+0052-locking-various-init-fixes.patch.patch
+0053-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch
+0054-latency-hist.patch.patch
+0055-hwlatdetect.patch.patch
+0056-localversion.patch.patch
+0057-early-printk-consolidate.patch.patch
+0058-printk-kill.patch.patch
+0059-printk-force_early_printk-boot-param-to-help-with-de.patch
+0060-rt-preempt-base-config.patch.patch
+0061-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch
+0062-rt-local_irq_-variants-depending-on-RT-RT.patch
+0063-preempt-Provide-preempt_-_-no-rt-variants.patch
+0064-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch
+0065-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch
+0066-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch
+0067-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch
+0068-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch
+0069-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch
+0070-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch
+0071-usb-Use-local_irq_-_nort-variants.patch
+0072-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch
+0073-mm-scatterlist-dont-disable-irqs-on-RT.patch
+0074-signal-fix-up-rcu-wreckage.patch.patch
+0075-net-wireless-warn-nort.patch.patch
+0076-mm-Replace-cgroup_page-bit-spinlock.patch
+0077-buffer_head-Replace-bh_uptodate_lock-for-rt.patch
+0078-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch
+0079-genirq-Disable-DEBUG_SHIRQ-for-rt.patch
+0080-genirq-Disable-random-call-on-preempt-rt.patch
+0081-genirq-disable-irqpoll-on-rt.patch
+0082-genirq-force-threading.patch.patch
+0083-drivers-net-fix-livelock-issues.patch
+0084-drivers-net-vortex-fix-locking-issues.patch
+0085-drivers-net-gianfar-Make-RT-aware.patch
+0086-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch
+0087-local-var.patch.patch
+0088-rt-local-irq-lock.patch.patch
+0089-cpu-rt-variants.patch.patch
+0090-mm-slab-wrap-functions.patch.patch
+0091-slab-Fix-__do_drain-to-use-the-right-array-cache.patch
+0092-mm-More-lock-breaks-in-slab.c.patch
+0093-mm-page_alloc-rt-friendly-per-cpu-pages.patch
+0094-mm-page_alloc-reduce-lock-sections-further.patch
+0095-mm-page-alloc-fix.patch.patch
+0096-mm-convert-swap-to-percpu-locked.patch
+0097-mm-make-vmstat-rt-aware.patch
+0098-mm-shrink-the-page-frame-to-rt-size.patch
+0099-ARM-Initialize-ptl-lock-for-vector-page.patch
+0100-mm-Allow-only-slab-on-RT.patch
+0101-radix-tree-rt-aware.patch.patch
+0102-panic-disable-random-on-rt.patch
+0103-ipc-Make-the-ipc-code-rt-aware.patch
+0104-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch
+0105-relay-fix-timer-madness.patch
+0106-net-ipv4-route-use-locks-on-up-rt.patch.patch
+0107-workqueue-avoid-the-lock-in-cpu-dying.patch.patch
+0108-timers-prepare-for-full-preemption.patch
+0109-timers-preempt-rt-support.patch
+0110-timers-fix-timer-hotplug-on-rt.patch
+0111-timers-mov-printk_tick-to-soft-interrupt.patch
+0112-timer-delay-waking-softirqs-from-the-jiffy-tick.patch
+0113-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch
+0114-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch
+0115-hrtimers-prepare-full-preemption.patch
+0116-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch
+0117-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch
+0118-hrtimer-Add-missing-debug_activate-aid-Was-Re-ANNOUN.patch
+0119-hrtimer-fix-reprogram-madness.patch.patch
+0120-timer-fd-Prevent-live-lock.patch
+0121-posix-timers-thread-posix-cpu-timers-on-rt.patch
+0122-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch
+0123-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch
+0124-sched-delay-put-task.patch.patch
+0125-sched-limit-nr-migrate.patch.patch
+0126-sched-mmdrop-delayed.patch.patch
+0127-sched-rt-mutex-wakeup.patch.patch
+0128-sched-might-sleep-do-not-account-rcu-depth.patch.patch
+0129-sched-cond-resched.patch.patch
+0130-cond-resched-softirq-fix.patch.patch
+0131-cond-resched-lock-rt-tweak.patch.patch
+0132-sched-disable-ttwu-queue.patch.patch
+0133-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch
+0134-sched-ttwu-Return-success-when-only-changing-the-sav.patch
+0135-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch
+0136-stomp-machine-mark-stomper-thread.patch.patch
+0137-stomp-machine-raw-lock.patch.patch
+0138-hotplug-Lightweight-get-online-cpus.patch
+0139-hotplug-sync_unplug-No.patch
+0140-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch
+0141-sched-migrate-disable.patch.patch
+0142-hotplug-use-migrate-disable.patch.patch
+0143-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch
+0144-ftrace-migrate-disable-tracing.patch.patch
+0145-tracing-Show-padding-as-unsigned-short.patch
+0146-migrate-disable-rt-variant.patch.patch
+0147-sched-Optimize-migrate_disable.patch
+0148-sched-Generic-migrate_disable.patch
+0149-sched-rt-Fix-migrate_enable-thinko.patch
+0150-sched-teach-migrate_disable-about-atomic-contexts.patch
+0151-sched-Postpone-actual-migration-disalbe-to-schedule.patch
+0152-sched-Do-not-compare-cpu-masks-in-scheduler.patch
+0153-sched-Have-migrate_disable-ignore-bounded-threads.patch
+0154-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch
+0155-ftrace-crap.patch.patch
+0156-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch
+0157-net-netif_rx_ni-migrate-disable.patch.patch
+0158-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch
+0159-lockdep-rt.patch.patch
+0160-mutex-no-spin-on-rt.patch.patch
+0161-softirq-local-lock.patch.patch
+0162-softirq-Export-in_serving_softirq.patch
+0163-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch
+0164-softirq-Fix-unplug-deadlock.patch
+0165-softirq-disable-softirq-stacks-for-rt.patch.patch
+0166-softirq-make-fifo.patch.patch
+0167-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch
+0168-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch
+0169-local-vars-migrate-disable.patch.patch
+0170-md-raid5-Make-raid5_percpu-handling-RT-aware.patch
+0171-rtmutex-lock-killable.patch.patch
+0172-rtmutex-futex-prepare-rt.patch.patch
+0173-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch
+0174-rt-mutex-add-sleeping-spinlocks-support.patch.patch
+0175-spinlock-types-separate-raw.patch.patch
+0176-rtmutex-avoid-include-hell.patch.patch
+0177-rt-add-rt-spinlocks.patch.patch
+0178-rt-add-rt-to-mutex-headers.patch.patch
+0179-rwsem-add-rt-variant.patch.patch
+0180-rt-Add-the-preempt-rt-lock-replacement-APIs.patch
+0181-rwlocks-Fix-section-mismatch.patch
+0182-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch
+0183-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch
+0184-rcu-Frob-softirq-test.patch
+0185-rcu-Merge-RCU-bh-into-RCU-preempt.patch
+0186-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch
+0187-rcu-more-fallout.patch.patch
+0188-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch
+0189-rcu-Fix-build-break.patch
+0190-rt-rcutree-Move-misplaced-prototype.patch
+0191-lglocks-rt.patch.patch
+0192-serial-8250-Clean-up-the-locking-for-rt.patch
+0193-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch
+0194-drivers-tty-fix-omap-lock-crap.patch.patch
+0195-rt-Improve-the-serial-console-PASS_LIMIT.patch
+0196-fs-namespace-preemption-fix.patch
+0197-mm-protect-activate-switch-mm.patch.patch
+0198-mm-Protect-activate_mm-by-preempt_-disable-7Cenable-.patch
+0199-fs-block-rt-support.patch.patch
+0200-fs-ntfs-disable-interrupt-only-on-RT.patch
+0201-x86-Convert-mce-timer-to-hrtimer.patch
+0202-x86-stackprotector-Avoid-random-pool-on-rt.patch
+0203-x86-Use-generic-rwsem_spinlocks-on-rt.patch
+0204-x86-Disable-IST-stacks-for-debug-int-3-stack-fault-f.patch
+0205-workqueue-use-get-cpu-light.patch.patch
+0206-epoll.patch.patch
+0207-mm-vmalloc.patch.patch
+0208-workqueue-Fix-cpuhotplug-trainwreck.patch
+0209-workqueue-Fix-PF_THREAD_BOUND-abuse.patch
+0210-workqueue-Use-get_cpu_light-in-flush_gcwq.patch
+0211-hotplug-stuff.patch.patch
+0212-debugobjects-rt.patch.patch
+0213-jump-label-rt.patch.patch
+0214-skbufhead-raw-lock.patch.patch
+0215-x86-no-perf-irq-work-rt.patch.patch
+0216-console-make-rt-friendly.patch.patch
+0217-fix-printk-flush-of-messages.patch
+0218-power-use-generic-rwsem-on-rt.patch
+0219-power-disable-highmem-on-rt.patch.patch
+0220-arm-disable-highmem-on-rt.patch.patch
+0221-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch
+0222-mips-disable-highmem-on-rt.patch.patch
+0223-net-Avoid-livelock-in-net_tx_action-on-RT.patch
+0224-ping-sysrq.patch.patch
+0225-kgdb-serial-Short-term-workaround.patch
+0226-add-sys-kernel-realtime-entry.patch
+0227-mm-rt-kmap_atomic-scheduling.patch
+0228-ipc-sem-Rework-semaphore-wakeups.patch
+0229-x86-kvm-require-const-tsc-for-rt.patch.patch
+0230-scsi-fcoe-rt-aware.patch.patch
+0231-x86-crypto-Reduce-preempt-disabled-regions.patch
+0232-dm-Make-rt-aware.patch
+0233-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch
+0234-seqlock-Prevent-rt-starvation.patch
+0235-timer-Fix-hotplug-for-rt.patch
+0236-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch
+0237-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch
+0238-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch
+0239-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch
+0240-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch
+0241-softirq-Check-preemption-after-reenabling-interrupts.patch
+0242-scsi-qla2xxx-Use-local_irq_save_nort-in-qla2x00_poll.patch
+0243-net-RT-REmove-preemption-disabling-in-netif_rx.patch
+0244-rt-Introduce-cpu_chill.patch
+0245-fs-dcache-Use-cpu_chill-in-trylock-loops.patch
+0246-net-Use-cpu_chill-instead-of-cpu_relax.patch
+0247-ntp-Make-ntp_lock-raw.patch
+0248-mips-remove-smp-reserve-lock.patch.patch
+0249-lockdep-Selftest-convert-spinlock-to-raw-spinlock.patch
+0250-lockdep-Selftest-Only-do-hardirq-context-test-for-ra.patch
+0251-genirq-Add-default-affinity-mask-command-line-option.patch
+0252-kconfig-disable-a-few-options-rt.patch.patch
+0253-kconfig-preempt-rt-full.patch.patch
+0254-Linux-3.4.1-rt9-REBASE.patch