From 06a0e0f4c1fb67f7cd1e97f146eabbaf474693d1 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sat, 17 Aug 2013 13:23:28 +0000 Subject: [PATCH] [rt] Update to 3.10.6-rt3 svn path=/dists/sid/linux/; revision=20515 --- debian/changelog | 2 + ...el-SRCU-provide-a-static-initializer.patch | 14 +- ...highmem-add-a-already-used-pte-check.patch | 8 +- .../0003-arm-highmem-flush-tlb-on-unmap.patch | 8 +- ...k-unlock-symetry-versus-pi_lock-and-.patch | 8 +- ...intk-drop-the-logbuf_lock-more-often.patch | 8 +- ...acpi_gbl_hardware-lock-back-to-a-raw.patch | 32 ++-- .../all/rt/arch-use-pagefault-disabled.patch | 134 ++++++----------- .../all/rt/arm-allow-irq-threading.patch | 23 +++ ...ove-irq-handler-when-clock-is-unused.patch | 14 +- ...-tclib-default-to-tclib-timer-for-rt.patch | 8 +- .../all/rt/arm-convert-boot-lock-to-raw.patch | 60 ++++---- .../all/rt/arm-disable-highmem-on-rt.patch | 8 +- .../all/rt/arm-enable-highmem-for-rt.patch | 26 ++-- .../rt/arm-mark-pmu-interupt-no-thread.patch | 24 +++ .../all/rt/arm-preempt-lazy-support.patch | 38 ++--- .../rt/ata-disable-interrupts-if-non-rt.patch | 8 +- ...k-shorten-interrupt-disabled-regions.patch | 8 +- .../features/all/rt/block-use-cpu-chill.patch | 8 +- .../all/rt/bug-rt-dependend-variants.patch | 8 +- ...source-tclib-allow-higher-clockrates.patch | 14 +- .../completion-use-simple-wait-queues.patch | 36 ++--- .../all/rt/cond-resched-lock-rt-tweak.patch | 10 +- .../all/rt/cond-resched-softirq-rt.patch | 20 +-- ...t-cpsw-Use-fallback-for-active_slave.patch | 32 ---- ...psw-use-a-lock-around-source-testing.patch | 65 -------- ...tplug-lock-a-sleeping-spinlock-on-rt.patch | 8 +- .../all/rt/cpu-rt-rework-cpu-down.patch | 30 ++-- .../features/all/rt/cpu-rt-variants.patch | 8 +- .../rt/cpumask-disable-offstack-on-rt.patch | 14 +- .../features/all/rt/debugobjects-rt.patch | 8 +- .../features/all/rt/dm-make-rt-aware.patch | 10 +- .../drivers-net-8139-disable-irq-nosync.patch | 8 +- .../rt/drivers-net-fix-livelock-issues.patch | 48 +++--- .../drivers-net-gianfar-make-rt-aware.patch | 8 +- ...rs-net-tulip-add-missing-pci-disable.patch | 8 +- ...rivers-net-vortex-fix-locking-issues.patch | 8 +- ...andom-reduce-preempt-disabled-region.patch | 8 +- ...all-flush_to_ldisc-when-the-irq-is-t.patch | 8 +- ...rivers-serial-cleanup-locking-for-rt.patch | 8 +- .../rt/drivers-tty-fix-omap-lock-crap.patch | 8 +- ...rivers-tty-pl011-irq-disable-madness.patch | 8 +- ...op-trace_i915_gem_ring_dispatch-onrt.patch | 8 +- .../all/rt/early-printk-consolidate.patch | 14 +- .../all/rt/epoll-use-get-cpu-light.patch | 8 +- .../features/all/rt/filemap-fix-up.patch | 8 +- .../all/rt/fix-rt-int3-x86_32-3.2-rt.patch | 8 +- .../features/all/rt/fs-block-rt-support.patch | 8 +- ...cache-use-cpu-chill-in-trylock-loops.patch | 26 ++-- ...e-spin_lock-from-the-condition-in-wh.patch | 8 +- ...jbd-pull-plug-when-waiting-for-space.patch | 8 +- .../all/rt/fs-jbd-replace-bh_state-lock.patch | 14 +- .../all/rt/fs-namespace-preemption-fix.patch | 8 +- .../rt/fs-ntfs-disable-interrupt-non-rt.patch | 8 +- .../fs-replace-bh_uptodate_lock-for-rt.patch | 20 +-- .../rt/ftrace-migrate-disable-tracing.patch | 34 ++--- .../all/rt/futex-requeue-pi-fix.patch | 16 +- .../all/rt/genirq-disable-irqpoll-on-rt.patch | 8 +- .../all/rt/genirq-force-threading.patch | 14 +- .../all/rt/genirq-nodebug-shirq.patch | 8 +- ...-allow-the-user-not-to-do-the-wbinvd.patch | 12 +- ...q_count-as-oul-to-kill-build-warning.patch | 8 +- ...call-cpu_unplug_begin-a-little-early.patch | 8 +- .../rt/hotplug-light-get-online-cpus.patch | 14 +- ...ync_unplug-no-27-5cn-27-in-task-name.patch | 8 +- .../all/rt/hotplug-use-migrate-disable.patch | 8 +- ...-with-smp_processor_id-in-preemptibl.patch | 79 ++++++++++ ...timer-callback-changes-for-preempt-r.patch | 40 ++--- ...raise-softirq-if-hrtimer-irq-stalled.patch | 12 +- .../rt/hrtimers-prepare-full-preemption.patch | 34 ++--- .../patches/features/all/rt/hwlatdetect.patch | 22 +-- ...-omap-drop-the-lock-hard-irq-context.patch | 8 +- .../features/all/rt/i915_compile_fix.patch | 10 +- .../rt/ide-use-nort-local-irq-variants.patch | 44 ++---- .../patches/features/all/rt/idle-state.patch | 10 +- .../idr-use-local-lock-for-protection.patch | 14 +- .../infiniband-mellanox-ib-use-nort-irq.patch | 8 +- .../rt/inpt-gameport-use-local-irq-nort.patch | 8 +- .../features/all/rt/ipc-make-rt-aware.patch | 14 +- ...critical-section-to-avoid-a-deadlock.patch | 8 +- .../rt/ipc-sem-rework-semaphore-wakeups.patch | 8 +- ...irq-processing-in-irq-thread-context.patch | 32 ++-- .../features/all/rt/jump-label-rt.patch | 8 +- .../rt/kconfig-disable-a-few-options-rt.patch | 20 +-- .../all/rt/kconfig-preempt-rt-full.patch | 22 +-- ...pu-down-problem-if-kthread-s-cpu-is-.patch | 8 +- ...restore-original-cpu-mask-oncpu-down.patch | 8 +- .../all/rt/kgb-serial-hackaround.patch | 20 +-- .../features/all/rt/latency-hist.patch | 62 +++----- .../patches/features/all/rt/lglocks-rt.patch | 14 +- .../all/rt/list-add-list-last-entry.patch | 8 +- ..._bl.h-make-list-head-locking-RT-safe.patch | 18 ++- .../rt/local-irq-rt-depending-variants.patch | 14 +- .../patches/features/all/rt/local-var.patch | 8 +- .../all/rt/local-vars-migrate-disable.patch | 8 +- .../features/all/rt/localversion.patch | 8 +- .../lockdep-no-softirq-accounting-on-rt.patch | 14 +- ...ardirq-context-test-for-raw-spinlock.patch | 8 +- .../md-raid5-percpu-handling-rt-aware.patch | 22 ++- .../all/rt/might-sleep-check-for-idle.patch | 10 +- .../all/rt/migrate-disable-rt-variant.patch | 8 +- .../all/rt/mips-disable-highmem-on-rt.patch | 8 +- .../rt/mips-enable-interrupts-in-signal.patch | 8 +- .../features/all/rt/mm-allow-slab-rt.patch | 8 +- .../rt/mm-bounce-local-irq-save-nort.patch | 8 +- .../all/rt/mm-cgroup-page-bit-spinlock.patch | 14 +- .../rt/mm-convert-swap-to-percpu-locked.patch | 8 +- .../all/rt/mm-disable-slab-on-rt.patch | 19 ++- .../features/all/rt/mm-enable-slub.patch | 16 +- .../all/rt/mm-make-vmstat-rt-aware.patch | 14 +- .../features/all/rt/mm-page-alloc-fix.patch | 8 +- .../mm-page-alloc-use-list-last-entry.patch | 8 +- ...e-alloc-use-local-lock-on-target-cpu.patch | 8 +- ...e_alloc-reduce-lock-sections-further.patch | 8 +- ...page_alloc-rt-friendly-per-cpu-pages.patch | 8 +- .../mm-prepare-pf-disable-discoupling.patch | 28 ++-- .../rt/mm-protect-activate-switch-mm.patch | 14 +- .../rt/mm-remove-preempt-count-from-pf.patch | 12 +- .../all/rt/mm-rt-kmap-atomic-scheduling.patch | 50 +++--- ...-scatterlist-dont-disable-irqs-on-RT.patch | 8 +- .../mm-shrink-the-page-frame-to-rt-size.patch | 22 +-- .../all/rt/mm-slab-more-lock-breaks.patch | 8 +- .../all/rt/mm-slab-move-debug-out.patch | 8 +- .../all/rt/mm-slab-wrap-functions.patch | 8 +- .../all/rt/mm-vmalloc-use-get-cpu-light.patch | 8 +- .../all/rt/mmci-remove-bogus-irq-save.patch | 8 +- .../move_sched_delayed_work_to_helper.patch | 8 +- .../features/all/rt/mutex-no-spin-on-rt.patch | 8 +- ...al-irq-disable-alloc-atomic-headache.patch | 8 +- ...et-dev-make-devnet-rename-seq-static.patch | 14 +- ...ble-xt-write-recseq-begin-rt-fallout.patch | 14 +- .../all/rt/net-flip-lock-dep-thingy.patch | 8 +- .../net-make-devnet_rename_seq-a-mutex.patch | 8 +- ...net-netif-rx-ni-use-local-bh-disable.patch | 10 +- .../rt/net-netif_rx_ni-migrate-disable.patch | 8 +- .../net-tx-action-avoid-livelock-on-rt.patch | 8 +- .../features/all/rt/net-use-cpu-chill.patch | 14 +- ...e-cpu-light-in-ip-send-unicast-reply.patch | 8 +- .../all/rt/net-wireless-warn-nort.patch | 10 +- .../features/all/rt/oleg-signal-rt-fix.patch | 26 ++-- .../all/rt/panic-disable-random-on-rt.patch | 8 +- ...ce-rcu-bh-qs-where-safe-from-softirq.patch | 26 ++-- .../pci-access-use-__wake_up_all_locked.patch | 8 +- .../all/rt/percpu-rwsem-compilefix.patch | 8 +- .../perf-make-swevent-hrtimer-irqsafe.patch | 10 +- .../perf-move-irq-work-to-softirq-in-rt.patch | 20 +-- ...eter_zijlstra-frob-migrate_disable-2.patch | 50 +++--- .../peter_zijlstra-frob-migrate_disable.patch | 16 +- ...eter_zijlstra-frob-pagefault_disable.patch | 142 ++++++------------ .../all/rt/peter_zijlstra-frob-rcu.patch | 8 +- .../all/rt/peterz-raw_pagefault_disable.patch | 18 +-- .../all/rt/peterz-srcu-crypto-chain.patch | 20 +-- .../all/rt/pid-h-include-atomic-h.patch | 8 +- .../patches/features/all/rt/ping-sysrq.patch | 28 ++-- ...id-wakeups-when-no-timers-are-active.patch | 8 +- .../all/rt/posix-timers-no-broadcast.patch | 8 +- ...six-timers-shorten-cpu-timers-thread.patch | 8 +- ...timers-thread-posix-cpu-timers-on-rt.patch | 32 ++-- .../all/rt/power-disable-highmem-on-rt.patch | 8 +- .../rt/power-use-generic-rwsem-on-rt.patch | 8 +- ...vide-a-default-in-mpc52xx_irqhost_ma.patch | 45 ++++++ .../all/rt/powerpc-preempt-lazy-support.patch | 55 +++---- ...pc-mark-low-level-handlers-no-thread.patch | 36 +++++ .../all/rt/preempt-lazy-support.patch | 88 ++++------- .../all/rt/preempt-nort-rt-variants.patch | 8 +- ...27-boot-param-to-help-with-debugging.patch | 8 +- .../patches/features/all/rt/printk-kill.patch | 20 +-- .../features/all/rt/printk-rt-aware.patch | 8 +- .../features/all/rt/radix-tree-rt-aware.patch | 14 +- .../all/rt/random-make-it-work-on-rt.patch | 32 ++-- .../rt/rcu-disable-rcu-fast-no-hz-on-rt.patch | 8 +- ...merge-rcu-bh-into-rcu-preempt-for-rt.patch | 26 ++-- .../all/rt/rcu-more-swait-conversions.patch | 14 +- .../features/all/rt/rcu-tiny-merge-bh.patch | 8 +- .../all/rt/rcu-tiny-solve-rt-mistery.patch | 8 +- .../all/rt/rcutiny-use-simple-waitqueue.patch | 8 +- ...ate_disable-race-with-cpu-hotplug-3f.patch | 8 +- ...l-arm-coredump-fails-for-cpu-3e-3d-4.patch | 15 +- .../all/rt/relay-fix-timer-madness.patch | 8 +- .../resource-counters-use-localirq-nort.patch | 8 +- ...c3689b886308247da295a228a54df49a44f6.patch | 31 ---- ...968f8f7c624587de729115d802372b9063dd.patch | 31 ---- ...f83b04e0c362a2fc660dbad980d24af209fc.patch | 52 ------- ...teractive-to-test-rt_spin_lock-state.patch | 8 +- .../features/all/rt/rt-add-rt-locks.patch | 44 ++---- .../rt/rt-add-rt-spinlock-to-headers.patch | 16 +- .../all/rt/rt-add-rt-to-mutex-headers.patch | 12 +- .../all/rt/rt-introduce-cpu-chill.patch | 8 +- .../features/all/rt/rt-local-irq-lock.patch | 6 +- ...mutex-add-sleeping-spinlocks-support.patch | 52 +++---- .../all/rt/rt-preempt-base-config.patch | 10 +- .../all/rt/rt-rw-lockdep-annotations.patch | 8 +- ...o-not-compare-cpu-masks-in-scheduler.patch | 10 +- ...grate_disable-ignore-bounded-threads.patch | 14 +- ...actual-migration-disalbe-to-schedule.patch | 16 +- .../features/all/rt/rt-serial-warn-fix.patch | 8 +- ...acing-show-padding-as-unsigned-short.patch | 10 +- .../all/rt/rtmutex-avoid-include-hell.patch | 8 +- .../all/rt/rtmutex-futex-prepare-rt.patch | 30 ++-- .../all/rt/rtmutex-lock-killable.patch | 18 +-- .../all/rt/rwsem-add-rt-variant.patch | 18 +-- .../sched-adjust-reset-on-fork-always.patch | 10 +- ...-better-debug-output-for-might-sleep.patch | 14 +- ...clear-pf-thread-bound-on-fallback-rq.patch | 8 +- .../features/all/rt/sched-cond-resched.patch | 10 +- ...consider-pi-boosting-in-setscheduler.patch | 34 ++--- .../all/rt/sched-delay-put-task.patch | 20 +-- .../sched-disable-rt-group-sched-on-rt.patch | 8 +- .../all/rt/sched-disable-ttwu-queue.patch | 8 +- .../all/rt/sched-enqueue-to-head.patch | 10 +- .../all/rt/sched-limit-nr-migrate.patch | 8 +- ...might-sleep-do-not-account-rcu-depth.patch | 16 +- .../all/rt/sched-migrate-disable.patch | 36 ++--- .../all/rt/sched-mmdrop-delayed.patch | 34 ++--- .../sched-rt-fix-migrate_enable-thinko.patch | 16 +- .../all/rt/sched-rt-mutex-wakeup.patch | 22 +-- ...igrate_disable-about-atomic-contexts.patch | 18 +-- ...twu-ensure-success-return-is-correct.patch | 8 +- ...Only-wake-up-idle-workers-if-not-blo.patch | 10 +- .../features/all/rt/scsi-fcoe-rt-aware.patch | 20 +-- ...function-called-from-invalid-context.patch | 8 +- .../rt/seqlock-prevent-rt-starvation.patch | 20 +-- .../all/rt/signal-fix-up-rcu-wreckage.patch | 8 +- .../signal-revert-ptrace-preempt-magic.patch | 8 +- ...t-tasks-to-cache-one-sigqueue-struct.patch | 32 ++-- .../features/all/rt/skbufhead-raw-lock.patch | 32 ++-- .../all/rt/slub-enable-irqs-for-no-wait.patch | 8 +- .../all/rt/slub_delay_ctor_on_rt.patch | 8 +- ...ohz-pending-debug-code-to-new-scheme.patch | 12 +- ...oftirq-disable-softirq-stacks-for-rt.patch | 56 +++---- .../softirq-export-in-serving-softirq.patch | 8 +- ...lock-after-per-cpu-section-is-set-up.patch | 8 +- .../features/all/rt/softirq-local-lock.patch | 34 ++--- .../features/all/rt/softirq-make-fifo.patch | 8 +- ...rq-make-serving-softirqs-a-task-flag.patch | 14 +- .../all/rt/softirq-preempt-fix-3-re.patch | 38 ++--- .../rt/softirq-sanitize-softirq-pending.patch | 22 +-- .../rt/softirq-split-handling-function.patch | 8 +- .../features/all/rt/softirq-split-locks.patch | 16 +- .../all/rt/softirq-split-out-code.patch | 8 +- .../all/rt/softirq-thread-do-softirq.patch | 14 +- .../all/rt/spinlock-types-separate-raw.patch | 22 +-- ...achine-deal-clever-with-stopper-lock.patch | 8 +- .../all/rt/stomp-machine-raw-lock.patch | 8 +- ...nvert-stop_machine_run-to-PREEMPT_RT.patch | 8 +- .../suspend-prevernt-might-sleep-splats.patch | 20 +-- .../all/rt/sysctl-include-atomic-h.patch | 8 +- .../all/rt/sysfs-realtime-entry.patch | 8 +- ...-from-going-into-infinite-spin-in-rt.patch | 14 +- .../tasklist-lock-fix-section-conflict.patch | 16 +- .../rt/timekeeping-split-jiffies-lock.patch | 32 ++-- ...-waking-softirqs-from-the-jiffy-tick.patch | 8 +- .../all/rt/timer-fd-avoid-live-lock.patch | 8 +- ...e-idle-trylock-in-get-next-timer-irq.patch | 22 +-- ...id-the-base-null-otptimization-on-rt.patch | 8 +- .../all/rt/timers-preempt-rt-support.patch | 8 +- ...-prepare-for-full-preemption-improve.patch | 8 +- .../timers-prepare-for-full-preemption.patch | 14 +- ...-for-preempt-off-in-preempt_schedule.patch | 10 +- .../all/rt/treercu-use-simple-waitqueue.patch | 14 +- ...ove-preemption-disabling-in-netif_rx.patch | 12 +- ...fix-mouse-problem-copying-large-data.patch | 8 +- .../all/rt/usb-hcd-use-local-irq-nort.patch | 8 +- .../all/rt/user-use-local-irq-nort.patch | 8 +- .../rt/vtime-split-lock-and-seqcount.patch | 26 ++-- .../all/rt/wait-simple-implementation.patch | 16 +- .../wait-simple-rework-for-completions.patch | 14 +- ...rk-around-irqsafe-timer-optimization.patch | 114 +++++++++++++- .../rt/workqueue-distangle-from-rq-lock.patch | 20 +-- .../all/rt/workqueue-use-locallock.patch | 10 +- .../features/all/rt/workqueue-use-rcu.patch | 22 ++- ...ypto-reduce-preempt-disabled-regions.patch | 8 +- .../all/rt/x86-disable-debug-stack.patch | 20 +-- .../all/rt/x86-io-apic-migra-no-unmask.patch | 8 +- .../rt/x86-kvm-require-const-tsc-for-rt.patch | 8 +- ...ce-wakeups-to-threads-for-PREEMPT_RT.patch | 10 +- .../rt/x86-mce-fix-mce-timer-interval.patch | 8 +- .../all/rt/x86-mce-timer-hrtimer.patch | 8 +- .../features/all/rt/x86-preempt-lazy.patch | 32 ++-- .../rt/x86-stackprot-no-random-on-rt.patch | 8 +- .../rt/x86-use-gen-rwsem-spinlocks-rt.patch | 8 +- debian/patches/series-rt | 14 +- 282 files changed, 1907 insertions(+), 2898 deletions(-) create mode 100644 debian/patches/features/all/rt/arm-allow-irq-threading.patch create mode 100644 debian/patches/features/all/rt/arm-mark-pmu-interupt-no-thread.patch delete mode 100644 debian/patches/features/all/rt/cpsw-net-cpsw-Use-fallback-for-active_slave.patch delete mode 100644 debian/patches/features/all/rt/cpsw-net-cpsw-use-a-lock-around-source-testing.patch create mode 100644 debian/patches/features/all/rt/hpsa-fix-warning-with-smp_processor_id-in-preemptibl.patch create mode 100644 debian/patches/features/all/rt/powerpc-52xx-provide-a-default-in-mpc52xx_irqhost_ma.patch create mode 100644 debian/patches/features/all/rt/ppc-mark-low-level-handlers-no-thread.patch delete mode 100644 debian/patches/features/all/rt/revert-80d5c3689b886308247da295a228a54df49a44f6.patch delete mode 100644 debian/patches/features/all/rt/revert-f646968f8f7c624587de729115d802372b9063dd.patch delete mode 100644 debian/patches/features/all/rt/revert-f9a8f83b04e0c362a2fc660dbad980d24af209fc.patch diff --git a/debian/changelog b/debian/changelog index 6f38dc3ae..faf2a9adc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -69,6 +69,8 @@ linux (3.10.7-1) UNRELEASED; urgency=low * [armel/orion5x] I2C: mv64xxx: fix race between FSM/interrupt and process context (Closes: #622325) * [arm] Fix the world famous typo with is_gate_vma() + * [rt] Update to 3.10.6-rt3 + - hpsa: fix warning with smp_processor_id() in preemptible [ Thorsten Glaser ] * [m68k] debian/patches/bugfix/m68k/atari-irqs.patch: patch from mailing list diff --git a/debian/patches/features/all/rt/0002-kernel-SRCU-provide-a-static-initializer.patch b/debian/patches/features/all/rt/0002-kernel-SRCU-provide-a-static-initializer.patch index d3904fad3..94437d2b3 100644 --- a/debian/patches/features/all/rt/0002-kernel-SRCU-provide-a-static-initializer.patch +++ b/debian/patches/features/all/rt/0002-kernel-SRCU-provide-a-static-initializer.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior Date: Tue, 19 Mar 2013 14:44:30 +0100 Subject: [PATCH] kernel/SRCU: provide a static initializer -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz There are macros for static initializer for the three out of four possible notifier types, that are: @@ -18,10 +18,8 @@ Signed-off-by: Sebastian Andrzej Siewior include/linux/srcu.h | 8 ++++---- 2 files changed, 29 insertions(+), 13 deletions(-) -Index: linux-stable/include/linux/notifier.h -=================================================================== ---- linux-stable.orig/include/linux/notifier.h -+++ linux-stable/include/linux/notifier.h +--- a/include/linux/notifier.h ++++ b/include/linux/notifier.h @@ -6,7 +6,7 @@ * * Alan Cox @@ -101,10 +99,8 @@ Index: linux-stable/include/linux/notifier.h /* CPU notfiers are defined in include/linux/cpu.h. */ /* netdevice notifiers are defined in include/linux/netdevice.h */ -Index: linux-stable/include/linux/srcu.h -=================================================================== ---- linux-stable.orig/include/linux/srcu.h -+++ linux-stable/include/linux/srcu.h +--- a/include/linux/srcu.h ++++ b/include/linux/srcu.h @@ -84,10 +84,10 @@ int init_srcu_struct(struct srcu_struct void process_srcu(struct work_struct *work); diff --git a/debian/patches/features/all/rt/0002-x86-highmem-add-a-already-used-pte-check.patch b/debian/patches/features/all/rt/0002-x86-highmem-add-a-already-used-pte-check.patch index 84d39dcff..e1b88eeeb 100644 --- a/debian/patches/features/all/rt/0002-x86-highmem-add-a-already-used-pte-check.patch +++ b/debian/patches/features/all/rt/0002-x86-highmem-add-a-already-used-pte-check.patch @@ -2,7 +2,7 @@ From 65513f34449eedb6b84c24a3583266534c1627e4 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 11 Mar 2013 17:09:55 +0100 Subject: [PATCH 2/6] x86/highmem: add a "already used pte" check -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz This is a copy from kmap_atomic_prot(). @@ -11,10 +11,8 @@ Signed-off-by: Sebastian Andrzej Siewior arch/x86/mm/iomap_32.c | 2 ++ 1 file changed, 2 insertions(+) -Index: linux-stable/arch/x86/mm/iomap_32.c -=================================================================== ---- linux-stable.orig/arch/x86/mm/iomap_32.c -+++ linux-stable/arch/x86/mm/iomap_32.c +--- a/arch/x86/mm/iomap_32.c ++++ b/arch/x86/mm/iomap_32.c @@ -65,6 +65,8 @@ void *kmap_atomic_prot_pfn(unsigned long type = kmap_atomic_idx_push(); idx = type + KM_TYPE_NR * smp_processor_id(); diff --git a/debian/patches/features/all/rt/0003-arm-highmem-flush-tlb-on-unmap.patch b/debian/patches/features/all/rt/0003-arm-highmem-flush-tlb-on-unmap.patch index 146fdc04a..85b3ba58a 100644 --- a/debian/patches/features/all/rt/0003-arm-highmem-flush-tlb-on-unmap.patch +++ b/debian/patches/features/all/rt/0003-arm-highmem-flush-tlb-on-unmap.patch @@ -2,7 +2,7 @@ From e2ca4d092d9c6e6b07b465b4d81da207bbcc7437 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 11 Mar 2013 21:37:27 +0100 Subject: [PATCH 3/6] arm/highmem: flush tlb on unmap -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz The tlb should be flushed on unmap and thus make the mapping entry invalid. This is only done in the non-debug case which does not look @@ -13,10 +13,8 @@ Signed-off-by: Sebastian Andrzej Siewior arch/arm/mm/highmem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/arch/arm/mm/highmem.c -=================================================================== ---- linux-stable.orig/arch/arm/mm/highmem.c -+++ linux-stable/arch/arm/mm/highmem.c +--- a/arch/arm/mm/highmem.c ++++ b/arch/arm/mm/highmem.c @@ -95,10 +95,10 @@ void __kunmap_atomic(void *kvaddr) __cpuc_flush_dcache_area((void *)vaddr, PAGE_SIZE); #ifdef CONFIG_DEBUG_HIGHMEM diff --git a/debian/patches/features/all/rt/0005-futex-Ensure-lock-unlock-symetry-versus-pi_lock-and-.patch b/debian/patches/features/all/rt/0005-futex-Ensure-lock-unlock-symetry-versus-pi_lock-and-.patch index d2f581faf..a972008d2 100644 --- a/debian/patches/features/all/rt/0005-futex-Ensure-lock-unlock-symetry-versus-pi_lock-and-.patch +++ b/debian/patches/features/all/rt/0005-futex-Ensure-lock-unlock-symetry-versus-pi_lock-and-.patch @@ -3,7 +3,7 @@ From: Thomas Gleixner Date: Fri, 1 Mar 2013 11:17:42 +0100 Subject: [PATCH 5/6] futex: Ensure lock/unlock symetry versus pi_lock and hash bucket lock -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz In exit_pi_state_list() we have the following locking construct: @@ -31,10 +31,8 @@ Signed-off-by: Sebastian Andrzej Siewior kernel/futex.c | 2 ++ 1 file changed, 2 insertions(+) -Index: linux-stable/kernel/futex.c -=================================================================== ---- linux-stable.orig/kernel/futex.c -+++ linux-stable/kernel/futex.c +--- a/kernel/futex.c ++++ b/kernel/futex.c @@ -571,7 +571,9 @@ void exit_pi_state_list(struct task_stru * task still owns the PI-state: */ diff --git a/debian/patches/features/all/rt/HACK-printk-drop-the-logbuf_lock-more-often.patch b/debian/patches/features/all/rt/HACK-printk-drop-the-logbuf_lock-more-often.patch index 849583411..cd5d9d137 100644 --- a/debian/patches/features/all/rt/HACK-printk-drop-the-logbuf_lock-more-often.patch +++ b/debian/patches/features/all/rt/HACK-printk-drop-the-logbuf_lock-more-often.patch @@ -2,7 +2,7 @@ From b72b514282ffad0d665ea94932b968f388304079 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 21 Mar 2013 19:01:05 +0100 Subject: [PATCH] HACK: printk: drop the logbuf_lock more often -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz The lock is hold with irgs off. The latency drops 500us+ on my arm bugs with a "full" buffer after executing "dmesg" on the shell. @@ -12,10 +12,8 @@ Signed-off-by: Sebastian Andrzej Siewior kernel/printk.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) -Index: linux-stable/kernel/printk.c -=================================================================== ---- linux-stable.orig/kernel/printk.c -+++ linux-stable/kernel/printk.c +--- a/kernel/printk.c ++++ b/kernel/printk.c @@ -1034,6 +1034,7 @@ static int syslog_print_all(char __user { char *text; diff --git a/debian/patches/features/all/rt/acpi-rt-Convert-acpi_gbl_hardware-lock-back-to-a-raw.patch b/debian/patches/features/all/rt/acpi-rt-Convert-acpi_gbl_hardware-lock-back-to-a-raw.patch index f1802c040..084175a9e 100644 --- a/debian/patches/features/all/rt/acpi-rt-Convert-acpi_gbl_hardware-lock-back-to-a-raw.patch +++ b/debian/patches/features/all/rt/acpi-rt-Convert-acpi_gbl_hardware-lock-back-to-a-raw.patch @@ -1,7 +1,7 @@ From: Steven Rostedt Date: Wed, 13 Feb 2013 09:26:05 -0500 Subject: [PATCH] acpi/rt: Convert acpi_gbl_hardware lock back to a raw_spinlock_t -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz We hit the following bug with 3.6-rt: @@ -71,10 +71,8 @@ Signed-off-by: Sebastian Andrzej Siewior include/acpi/platform/aclinux.h | 14 ++++++++++++++ 5 files changed, 21 insertions(+), 7 deletions(-) -Index: linux-stable/drivers/acpi/acpica/acglobal.h -=================================================================== ---- linux-stable.orig/drivers/acpi/acpica/acglobal.h -+++ linux-stable/drivers/acpi/acpica/acglobal.h +--- a/drivers/acpi/acpica/acglobal.h ++++ b/drivers/acpi/acpica/acglobal.h @@ -223,7 +223,7 @@ ACPI_EXTERN u8 acpi_gbl_global_lock_pend * interrupt level */ @@ -84,10 +82,8 @@ Index: linux-stable/drivers/acpi/acpica/acglobal.h ACPI_EXTERN acpi_spinlock acpi_gbl_reference_count_lock; /* Mutex for _OSI support */ -Index: linux-stable/drivers/acpi/acpica/hwregs.c -=================================================================== ---- linux-stable.orig/drivers/acpi/acpica/hwregs.c -+++ linux-stable/drivers/acpi/acpica/hwregs.c +--- a/drivers/acpi/acpica/hwregs.c ++++ b/drivers/acpi/acpica/hwregs.c @@ -269,14 +269,14 @@ acpi_status acpi_hw_clear_acpi_status(vo ACPI_BITMASK_ALL_FIXED_STATUS, ACPI_FORMAT_UINT64(acpi_gbl_xpm1a_status.address))); @@ -105,10 +101,8 @@ Index: linux-stable/drivers/acpi/acpica/hwregs.c if (ACPI_FAILURE(status)) goto exit; -Index: linux-stable/drivers/acpi/acpica/hwxface.c -=================================================================== ---- linux-stable.orig/drivers/acpi/acpica/hwxface.c -+++ linux-stable/drivers/acpi/acpica/hwxface.c +--- a/drivers/acpi/acpica/hwxface.c ++++ b/drivers/acpi/acpica/hwxface.c @@ -365,7 +365,7 @@ acpi_status acpi_write_bit_register(u32 return_ACPI_STATUS(AE_BAD_PARAMETER); } @@ -127,10 +121,8 @@ Index: linux-stable/drivers/acpi/acpica/hwxface.c return_ACPI_STATUS(status); } -Index: linux-stable/drivers/acpi/acpica/utmutex.c -=================================================================== ---- linux-stable.orig/drivers/acpi/acpica/utmutex.c -+++ linux-stable/drivers/acpi/acpica/utmutex.c +--- a/drivers/acpi/acpica/utmutex.c ++++ b/drivers/acpi/acpica/utmutex.c @@ -88,7 +88,7 @@ acpi_status acpi_ut_mutex_initialize(voi return_ACPI_STATUS (status); } @@ -149,10 +141,8 @@ Index: linux-stable/drivers/acpi/acpica/utmutex.c acpi_os_delete_lock(acpi_gbl_reference_count_lock); /* Delete the reader/writer lock */ -Index: linux-stable/include/acpi/platform/aclinux.h -=================================================================== ---- linux-stable.orig/include/acpi/platform/aclinux.h -+++ linux-stable/include/acpi/platform/aclinux.h +--- a/include/acpi/platform/aclinux.h ++++ b/include/acpi/platform/aclinux.h @@ -72,6 +72,7 @@ #define acpi_cache_t struct kmem_cache diff --git a/debian/patches/features/all/rt/arch-use-pagefault-disabled.patch b/debian/patches/features/all/rt/arch-use-pagefault-disabled.patch index 5f4d77020..55dd3eb0a 100644 --- a/debian/patches/features/all/rt/arch-use-pagefault-disabled.patch +++ b/debian/patches/features/all/rt/arch-use-pagefault-disabled.patch @@ -1,7 +1,7 @@ Subject: mm: Fixup all fault handlers to check current->pagefault_disable From: Thomas Gleixner Date: Thu, 17 Mar 2011 11:32:28 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Necessary for decoupling pagefault disable from preempt count. @@ -31,10 +31,8 @@ Signed-off-by: Thomas Gleixner arch/xtensa/mm/fault.c | 2 +- 22 files changed, 26 insertions(+), 23 deletions(-) -Index: linux-stable/arch/alpha/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/alpha/mm/fault.c -+++ linux-stable/arch/alpha/mm/fault.c +--- a/arch/alpha/mm/fault.c ++++ b/arch/alpha/mm/fault.c @@ -108,7 +108,7 @@ do_page_fault(unsigned long address, uns /* If we're in an interrupt context, or have no user context, @@ -44,10 +42,8 @@ Index: linux-stable/arch/alpha/mm/fault.c goto no_context; #ifdef CONFIG_ALPHA_LARGE_VMALLOC -Index: linux-stable/arch/arm/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/arm/mm/fault.c -+++ linux-stable/arch/arm/mm/fault.c +--- a/arch/arm/mm/fault.c ++++ b/arch/arm/mm/fault.c @@ -279,7 +279,7 @@ do_page_fault(unsigned long addr, unsign * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -57,10 +53,8 @@ Index: linux-stable/arch/arm/mm/fault.c goto no_context; /* -Index: linux-stable/arch/avr32/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/avr32/mm/fault.c -+++ linux-stable/arch/avr32/mm/fault.c +--- a/arch/avr32/mm/fault.c ++++ b/arch/avr32/mm/fault.c @@ -81,7 +81,8 @@ asmlinkage void do_page_fault(unsigned l * If we're in an interrupt or have no user context, we must * not take the fault... @@ -71,10 +65,8 @@ Index: linux-stable/arch/avr32/mm/fault.c goto no_context; local_irq_enable(); -Index: linux-stable/arch/cris/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/cris/mm/fault.c -+++ linux-stable/arch/cris/mm/fault.c +--- a/arch/cris/mm/fault.c ++++ b/arch/cris/mm/fault.c @@ -114,7 +114,7 @@ do_page_fault(unsigned long address, str * user context, we must not take the fault. */ @@ -84,10 +76,8 @@ Index: linux-stable/arch/cris/mm/fault.c goto no_context; retry: -Index: linux-stable/arch/frv/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/frv/mm/fault.c -+++ linux-stable/arch/frv/mm/fault.c +--- a/arch/frv/mm/fault.c ++++ b/arch/frv/mm/fault.c @@ -78,7 +78,7 @@ asmlinkage void do_page_fault(int datamm * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -97,10 +87,8 @@ Index: linux-stable/arch/frv/mm/fault.c goto no_context; down_read(&mm->mmap_sem); -Index: linux-stable/arch/ia64/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/ia64/mm/fault.c -+++ linux-stable/arch/ia64/mm/fault.c +--- a/arch/ia64/mm/fault.c ++++ b/arch/ia64/mm/fault.c @@ -98,7 +98,7 @@ ia64_do_page_fault (unsigned long addres /* * If we're in an interrupt or have no user context, we must not take the fault.. @@ -110,10 +98,8 @@ Index: linux-stable/arch/ia64/mm/fault.c goto no_context; #ifdef CONFIG_VIRTUAL_MEM_MAP -Index: linux-stable/arch/m32r/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/m32r/mm/fault.c -+++ linux-stable/arch/m32r/mm/fault.c +--- a/arch/m32r/mm/fault.c ++++ b/arch/m32r/mm/fault.c @@ -114,7 +114,7 @@ asmlinkage void do_page_fault(struct pt_ * 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.. @@ -123,10 +109,8 @@ Index: linux-stable/arch/m32r/mm/fault.c goto bad_area_nosemaphore; /* When running in the kernel we expect faults to occur only to -Index: linux-stable/arch/m68k/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/m68k/mm/fault.c -+++ linux-stable/arch/m68k/mm/fault.c +--- a/arch/m68k/mm/fault.c ++++ b/arch/m68k/mm/fault.c @@ -85,7 +85,7 @@ int do_page_fault(struct pt_regs *regs, * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -136,10 +120,8 @@ Index: linux-stable/arch/m68k/mm/fault.c goto no_context; retry: -Index: linux-stable/arch/microblaze/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/microblaze/mm/fault.c -+++ linux-stable/arch/microblaze/mm/fault.c +--- a/arch/microblaze/mm/fault.c ++++ b/arch/microblaze/mm/fault.c @@ -108,7 +108,7 @@ void do_page_fault(struct pt_regs *regs, if ((error_code & 0x13) == 0x13 || (error_code & 0x11) == 0x11) is_write = 0; @@ -149,10 +131,8 @@ Index: linux-stable/arch/microblaze/mm/fault.c if (kernel_mode(regs)) goto bad_area_nosemaphore; -Index: linux-stable/arch/mips/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/mips/mm/fault.c -+++ linux-stable/arch/mips/mm/fault.c +--- a/arch/mips/mm/fault.c ++++ b/arch/mips/mm/fault.c @@ -89,7 +89,7 @@ asmlinkage void __kprobes do_page_fault( * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -162,10 +142,8 @@ Index: linux-stable/arch/mips/mm/fault.c goto bad_area_nosemaphore; retry: -Index: linux-stable/arch/mn10300/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/mn10300/mm/fault.c -+++ linux-stable/arch/mn10300/mm/fault.c +--- a/arch/mn10300/mm/fault.c ++++ b/arch/mn10300/mm/fault.c @@ -168,7 +168,7 @@ asmlinkage void do_page_fault(struct pt_ * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -175,10 +153,8 @@ Index: linux-stable/arch/mn10300/mm/fault.c goto no_context; retry: -Index: linux-stable/arch/parisc/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/parisc/mm/fault.c -+++ linux-stable/arch/parisc/mm/fault.c +--- a/arch/parisc/mm/fault.c ++++ b/arch/parisc/mm/fault.c @@ -177,7 +177,7 @@ void do_page_fault(struct pt_regs *regs, int fault; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; @@ -188,10 +164,8 @@ Index: linux-stable/arch/parisc/mm/fault.c goto no_context; retry: -Index: linux-stable/arch/powerpc/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/powerpc/mm/fault.c -+++ linux-stable/arch/powerpc/mm/fault.c +--- a/arch/powerpc/mm/fault.c ++++ b/arch/powerpc/mm/fault.c @@ -264,7 +264,7 @@ int __kprobes do_page_fault(struct pt_re if (!arch_irq_disabled_regs(regs)) local_irq_enable(); @@ -201,10 +175,8 @@ Index: linux-stable/arch/powerpc/mm/fault.c if (!user_mode(regs)) { rc = SIGSEGV; goto bail; -Index: linux-stable/arch/s390/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/s390/mm/fault.c -+++ linux-stable/arch/s390/mm/fault.c +--- a/arch/s390/mm/fault.c ++++ b/arch/s390/mm/fault.c @@ -296,7 +296,8 @@ static inline int do_exception(struct pt * user context. */ @@ -225,10 +197,8 @@ Index: linux-stable/arch/s390/mm/fault.c goto no_context; down_read(&mm->mmap_sem); -Index: linux-stable/arch/score/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/score/mm/fault.c -+++ linux-stable/arch/score/mm/fault.c +--- a/arch/score/mm/fault.c ++++ b/arch/score/mm/fault.c @@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_ * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -238,10 +208,8 @@ Index: linux-stable/arch/score/mm/fault.c goto bad_area_nosemaphore; down_read(&mm->mmap_sem); -Index: linux-stable/arch/sh/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/sh/mm/fault.c -+++ linux-stable/arch/sh/mm/fault.c +--- a/arch/sh/mm/fault.c ++++ b/arch/sh/mm/fault.c @@ -440,7 +440,7 @@ asmlinkage void __kprobes do_page_fault( * If we're in an interrupt, have no user context or are running * in an atomic region then we must not take the fault: @@ -251,10 +219,8 @@ Index: linux-stable/arch/sh/mm/fault.c bad_area_nosemaphore(regs, error_code, address); return; } -Index: linux-stable/arch/sparc/mm/fault_32.c -=================================================================== ---- linux-stable.orig/arch/sparc/mm/fault_32.c -+++ linux-stable/arch/sparc/mm/fault_32.c +--- a/arch/sparc/mm/fault_32.c ++++ b/arch/sparc/mm/fault_32.c @@ -200,7 +200,7 @@ asmlinkage void do_sparc_fault(struct pt * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -264,10 +230,8 @@ Index: linux-stable/arch/sparc/mm/fault_32.c goto no_context; perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); -Index: linux-stable/arch/sparc/mm/fault_64.c -=================================================================== ---- linux-stable.orig/arch/sparc/mm/fault_64.c -+++ linux-stable/arch/sparc/mm/fault_64.c +--- a/arch/sparc/mm/fault_64.c ++++ b/arch/sparc/mm/fault_64.c @@ -321,7 +321,7 @@ asmlinkage void __kprobes do_sparc64_fau * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -277,10 +241,8 @@ Index: linux-stable/arch/sparc/mm/fault_64.c goto intr_or_no_mm; perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); -Index: linux-stable/arch/tile/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/tile/mm/fault.c -+++ linux-stable/arch/tile/mm/fault.c +--- a/arch/tile/mm/fault.c ++++ b/arch/tile/mm/fault.c @@ -360,7 +360,7 @@ static int handle_page_fault(struct pt_r * If we're in an interrupt, have no user context or are running in an * atomic region then we must not take the fault. @@ -290,10 +252,8 @@ Index: linux-stable/arch/tile/mm/fault.c vma = NULL; /* happy compiler */ goto bad_area_nosemaphore; } -Index: linux-stable/arch/um/kernel/trap.c -=================================================================== ---- linux-stable.orig/arch/um/kernel/trap.c -+++ linux-stable/arch/um/kernel/trap.c +--- a/arch/um/kernel/trap.c ++++ b/arch/um/kernel/trap.c @@ -39,7 +39,7 @@ int handle_page_fault(unsigned long addr * If the fault was during atomic operation, don't take the fault, just * fail. @@ -303,10 +263,8 @@ Index: linux-stable/arch/um/kernel/trap.c goto out_nosemaphore; retry: -Index: linux-stable/arch/x86/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/x86/mm/fault.c -+++ linux-stable/arch/x86/mm/fault.c +--- a/arch/x86/mm/fault.c ++++ b/arch/x86/mm/fault.c @@ -1104,7 +1104,7 @@ __do_page_fault(struct pt_regs *regs, un * If we're in an interrupt, have no user context or are running * in an atomic region then we must not take the fault: @@ -316,10 +274,8 @@ Index: linux-stable/arch/x86/mm/fault.c bad_area_nosemaphore(regs, error_code, address); return; } -Index: linux-stable/arch/xtensa/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/xtensa/mm/fault.c -+++ linux-stable/arch/xtensa/mm/fault.c +--- a/arch/xtensa/mm/fault.c ++++ b/arch/xtensa/mm/fault.c @@ -57,7 +57,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.. diff --git a/debian/patches/features/all/rt/arm-allow-irq-threading.patch b/debian/patches/features/all/rt/arm-allow-irq-threading.patch new file mode 100644 index 000000000..832f173a8 --- /dev/null +++ b/debian/patches/features/all/rt/arm-allow-irq-threading.patch @@ -0,0 +1,23 @@ +Subject: arm: Allow forced irq threading +From: Thomas Gleixner +Date: Sat, 16 Jul 2011 13:15:20 +0200 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz + +All timer interrupts and the perf interrupt are marked NO_THREAD, so +its safe to allow forced interrupt threading. + +Signed-off-by: Thomas Gleixner +--- + arch/arm/Kconfig | 1 + + 1 file changed, 1 insertion(+) + +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -19,6 +19,7 @@ config ARM + select GENERIC_STRNCPY_FROM_USER + select GENERIC_STRNLEN_USER + select HARDIRQS_SW_RESEND ++ select IRQ_FORCED_THREADING + select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL + select HAVE_ARCH_KGDB + select HAVE_ARCH_SECCOMP_FILTER diff --git a/debian/patches/features/all/rt/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch b/debian/patches/features/all/rt/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch index 7be13d30b..3cf31cea3 100644 --- a/debian/patches/features/all/rt/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch +++ b/debian/patches/features/all/rt/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch @@ -1,7 +1,7 @@ From: Benedikt Spranger Date: Sat, 6 Mar 2010 17:47:10 +0100 Subject: ARM: AT91: PIT: Remove irq handler when clock event is unused -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Setup and remove the interrupt handler in clock event mode selection. This avoids calling the (shared) interrupt handler when the device is @@ -15,10 +15,8 @@ Signed-off-by: Thomas Gleixner arch/arm/mach-at91/at91sam926x_time.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) -Index: linux-stable/arch/arm/mach-at91/at91rm9200_time.c -=================================================================== ---- linux-stable.orig/arch/arm/mach-at91/at91rm9200_time.c -+++ linux-stable/arch/arm/mach-at91/at91rm9200_time.c +--- a/arch/arm/mach-at91/at91rm9200_time.c ++++ b/arch/arm/mach-at91/at91rm9200_time.c @@ -134,6 +134,7 @@ clkevt32k_mode(enum clock_event_mode mod break; case CLOCK_EVT_MODE_SHUTDOWN: @@ -27,10 +25,8 @@ Index: linux-stable/arch/arm/mach-at91/at91rm9200_time.c case CLOCK_EVT_MODE_RESUME: irqmask = 0; break; -Index: linux-stable/arch/arm/mach-at91/at91sam926x_time.c -=================================================================== ---- linux-stable.orig/arch/arm/mach-at91/at91sam926x_time.c -+++ linux-stable/arch/arm/mach-at91/at91sam926x_time.c +--- a/arch/arm/mach-at91/at91sam926x_time.c ++++ b/arch/arm/mach-at91/at91sam926x_time.c @@ -77,7 +77,7 @@ static struct clocksource pit_clk = { .flags = CLOCK_SOURCE_IS_CONTINUOUS, }; diff --git a/debian/patches/features/all/rt/arm-at91-tclib-default-to-tclib-timer-for-rt.patch b/debian/patches/features/all/rt/arm-at91-tclib-default-to-tclib-timer-for-rt.patch index 707d44e03..5d6c57557 100644 --- a/debian/patches/features/all/rt/arm-at91-tclib-default-to-tclib-timer-for-rt.patch +++ b/debian/patches/features/all/rt/arm-at91-tclib-default-to-tclib-timer-for-rt.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Sat, 1 May 2010 18:29:35 +0200 Subject: ARM: at91: tclib: Default to tclib timer for RT -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz RT is not too happy about the shared timer interrupt in AT91 devices. Default to tclib timer for RT. @@ -12,10 +12,8 @@ Signed-off-by: Thomas Gleixner drivers/misc/Kconfig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -Index: linux-stable/drivers/misc/Kconfig -=================================================================== ---- linux-stable.orig/drivers/misc/Kconfig -+++ linux-stable/drivers/misc/Kconfig +--- a/drivers/misc/Kconfig ++++ b/drivers/misc/Kconfig @@ -63,6 +63,7 @@ config ATMEL_PWM config ATMEL_TCLIB bool "Atmel AT32/AT91 Timer/Counter Library" diff --git a/debian/patches/features/all/rt/arm-convert-boot-lock-to-raw.patch b/debian/patches/features/all/rt/arm-convert-boot-lock-to-raw.patch index 752614fff..a2e1a67a5 100644 --- a/debian/patches/features/all/rt/arm-convert-boot-lock-to-raw.patch +++ b/debian/patches/features/all/rt/arm-convert-boot-lock-to-raw.patch @@ -1,8 +1,7 @@ -Subject: preempt-rt: Convert arm boot_lock to raw From: Frank Rowand Date: Mon, 19 Sep 2011 14:51:14 -0700 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz - +Subject: [PATCH] preempt-rt: Convert arm boot_lock to raw +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz 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. @@ -25,15 +24,13 @@ Signed-off-by: Thomas Gleixner arch/arm/mach-msm/platsmp.c | 10 +++++----- arch/arm/mach-omap2/omap-smp.c | 10 +++++----- arch/arm/mach-prima2/platsmp.c | 10 +++++----- - arch/arm/mach-spear/platsmp.c | 8 ++++---- + arch/arm/mach-spear/platsmp.c | 10 +++++----- arch/arm/mach-ux500/platsmp.c | 10 +++++----- arch/arm/plat-versatile/platsmp.c | 10 +++++----- - 7 files changed, 35 insertions(+), 35 deletions(-) + 7 files changed, 36 insertions(+), 36 deletions(-) -Index: linux-stable/arch/arm/mach-exynos/platsmp.c -=================================================================== ---- linux-stable.orig/arch/arm/mach-exynos/platsmp.c -+++ linux-stable/arch/arm/mach-exynos/platsmp.c +--- a/arch/arm/mach-exynos/platsmp.c ++++ b/arch/arm/mach-exynos/platsmp.c @@ -71,7 +71,7 @@ static void __iomem *scu_base_addr(void) return (void __iomem *)(S5P_VA_SCU); } @@ -81,10 +78,8 @@ Index: linux-stable/arch/arm/mach-exynos/platsmp.c return pen_release != -1 ? -ENOSYS : 0; } -Index: linux-stable/arch/arm/mach-msm/platsmp.c -=================================================================== ---- linux-stable.orig/arch/arm/mach-msm/platsmp.c -+++ linux-stable/arch/arm/mach-msm/platsmp.c +--- a/arch/arm/mach-msm/platsmp.c ++++ b/arch/arm/mach-msm/platsmp.c @@ -30,7 +30,7 @@ extern void msm_secondary_startup(void); @@ -123,10 +118,8 @@ Index: linux-stable/arch/arm/mach-msm/platsmp.c return pen_release != -1 ? -ENOSYS : 0; } -Index: linux-stable/arch/arm/mach-omap2/omap-smp.c -=================================================================== ---- linux-stable.orig/arch/arm/mach-omap2/omap-smp.c -+++ linux-stable/arch/arm/mach-omap2/omap-smp.c +--- a/arch/arm/mach-omap2/omap-smp.c ++++ b/arch/arm/mach-omap2/omap-smp.c @@ -44,7 +44,7 @@ u16 pm44xx_errata; /* SCU base address */ static void __iomem *scu_base; @@ -165,10 +158,8 @@ Index: linux-stable/arch/arm/mach-omap2/omap-smp.c return 0; } -Index: linux-stable/arch/arm/mach-prima2/platsmp.c -=================================================================== ---- linux-stable.orig/arch/arm/mach-prima2/platsmp.c -+++ linux-stable/arch/arm/mach-prima2/platsmp.c +--- a/arch/arm/mach-prima2/platsmp.c ++++ b/arch/arm/mach-prima2/platsmp.c @@ -23,7 +23,7 @@ static void __iomem *scu_base; static void __iomem *rsc_base; @@ -207,10 +198,17 @@ Index: linux-stable/arch/arm/mach-prima2/platsmp.c return pen_release != -1 ? -ENOSYS : 0; } -Index: linux-stable/arch/arm/mach-spear/platsmp.c -=================================================================== ---- linux-stable.orig/arch/arm/mach-spear/platsmp.c -+++ linux-stable/arch/arm/mach-spear/platsmp.c +--- a/arch/arm/mach-spear/platsmp.c ++++ b/arch/arm/mach-spear/platsmp.c +@@ -20,7 +20,7 @@ + #include + #include "generic.h" + +-static DEFINE_SPINLOCK(boot_lock); ++static DEFINE_RAW_SPINLOCK(boot_lock); + + static void __iomem *scu_base = IOMEM(VA_SCU_BASE); + @@ -36,8 +36,8 @@ static void __cpuinit spear13xx_secondar /* * Synchronise with the boot thread. @@ -240,10 +238,8 @@ Index: linux-stable/arch/arm/mach-spear/platsmp.c return pen_release != -1 ? -ENOSYS : 0; } -Index: linux-stable/arch/arm/mach-ux500/platsmp.c -=================================================================== ---- linux-stable.orig/arch/arm/mach-ux500/platsmp.c -+++ linux-stable/arch/arm/mach-ux500/platsmp.c +--- a/arch/arm/mach-ux500/platsmp.c ++++ b/arch/arm/mach-ux500/platsmp.c @@ -52,7 +52,7 @@ static void __iomem *scu_base_addr(void) return NULL; } @@ -282,10 +278,8 @@ Index: linux-stable/arch/arm/mach-ux500/platsmp.c return pen_release != -1 ? -ENOSYS : 0; } -Index: linux-stable/arch/arm/plat-versatile/platsmp.c -=================================================================== ---- linux-stable.orig/arch/arm/plat-versatile/platsmp.c -+++ linux-stable/arch/arm/plat-versatile/platsmp.c +--- a/arch/arm/plat-versatile/platsmp.c ++++ b/arch/arm/plat-versatile/platsmp.c @@ -31,7 +31,7 @@ static void __cpuinit write_pen_release( outer_clean_range(__pa(&pen_release), __pa(&pen_release + 1)); } diff --git a/debian/patches/features/all/rt/arm-disable-highmem-on-rt.patch b/debian/patches/features/all/rt/arm-disable-highmem-on-rt.patch index 32662ba6f..1439a33d1 100644 --- a/debian/patches/features/all/rt/arm-disable-highmem-on-rt.patch +++ b/debian/patches/features/all/rt/arm-disable-highmem-on-rt.patch @@ -1,17 +1,15 @@ Subject: arm-disable-highmem-on-rt.patch From: Thomas Gleixner Date: Mon, 18 Jul 2011 17:09:28 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- arch/arm/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/arch/arm/Kconfig -=================================================================== ---- linux-stable.orig/arch/arm/Kconfig -+++ linux-stable/arch/arm/Kconfig +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig @@ -1704,7 +1704,7 @@ config HAVE_ARCH_PFN_VALID config HIGHMEM diff --git a/debian/patches/features/all/rt/arm-enable-highmem-for-rt.patch b/debian/patches/features/all/rt/arm-enable-highmem-for-rt.patch index cdb13a985..ea1925725 100644 --- a/debian/patches/features/all/rt/arm-enable-highmem-for-rt.patch +++ b/debian/patches/features/all/rt/arm-enable-highmem-for-rt.patch @@ -1,7 +1,7 @@ Subject: arm-enable-highmem-for-rt.patch From: Thomas Gleixner Date: Wed, 13 Feb 2013 11:03:11 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -11,10 +11,8 @@ Signed-off-by: Thomas Gleixner include/linux/highmem.h | 1 4 files changed, 50 insertions(+), 3 deletions(-) -Index: linux-stable/arch/arm/Kconfig -=================================================================== ---- linux-stable.orig/arch/arm/Kconfig -+++ linux-stable/arch/arm/Kconfig +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig @@ -1704,7 +1704,7 @@ config HAVE_ARCH_PFN_VALID config HIGHMEM @@ -24,10 +22,8 @@ Index: linux-stable/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 -Index: linux-stable/arch/arm/include/asm/switch_to.h -=================================================================== ---- linux-stable.orig/arch/arm/include/asm/switch_to.h -+++ linux-stable/arch/arm/include/asm/switch_to.h +--- a/arch/arm/include/asm/switch_to.h ++++ b/arch/arm/include/asm/switch_to.h @@ -3,6 +3,14 @@ #include @@ -51,10 +47,8 @@ Index: linux-stable/arch/arm/include/asm/switch_to.h last = __switch_to(prev,task_thread_info(prev), task_thread_info(next)); \ } while (0) -Index: linux-stable/arch/arm/mm/highmem.c -=================================================================== ---- linux-stable.orig/arch/arm/mm/highmem.c -+++ linux-stable/arch/arm/mm/highmem.c +--- a/arch/arm/mm/highmem.c ++++ b/arch/arm/mm/highmem.c @@ -38,6 +38,7 @@ EXPORT_SYMBOL(kunmap); void *kmap_atomic(struct page *page) @@ -135,10 +129,8 @@ Index: linux-stable/arch/arm/mm/highmem.c + } +} +#endif -Index: linux-stable/include/linux/highmem.h -=================================================================== ---- linux-stable.orig/include/linux/highmem.h -+++ linux-stable/include/linux/highmem.h +--- a/include/linux/highmem.h ++++ b/include/linux/highmem.h @@ -7,6 +7,7 @@ #include #include diff --git a/debian/patches/features/all/rt/arm-mark-pmu-interupt-no-thread.patch b/debian/patches/features/all/rt/arm-mark-pmu-interupt-no-thread.patch new file mode 100644 index 000000000..dc33d1a4c --- /dev/null +++ b/debian/patches/features/all/rt/arm-mark-pmu-interupt-no-thread.patch @@ -0,0 +1,24 @@ +Subject: arm: Mark pmu interupt IRQF_NO_THREAD +From: Thomas Gleixner +Date: Wed, 16 Mar 2011 14:45:31 +0100 +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz + +PMU interrupts must not be threaded. + +Signed-off-by: Thomas Gleixner +--- + arch/arm/kernel/perf_event_cpu.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/arch/arm/kernel/perf_event_cpu.c ++++ b/arch/arm/kernel/perf_event_cpu.c +@@ -118,7 +118,8 @@ static int cpu_pmu_request_irq(struct ar + continue; + } + +- err = request_irq(irq, handler, IRQF_NOBALANCING, "arm-pmu", ++ err = request_irq(irq, handler, ++ IRQF_NOBALANCING | IRQF_NO_THREAD, "arm-pmu", + cpu_pmu); + if (err) { + pr_err("unable to request IRQ%d for ARM PMU counters\n", diff --git a/debian/patches/features/all/rt/arm-preempt-lazy-support.patch b/debian/patches/features/all/rt/arm-preempt-lazy-support.patch index de5e64dd6..0cd0a81ec 100644 --- a/debian/patches/features/all/rt/arm-preempt-lazy-support.patch +++ b/debian/patches/features/all/rt/arm-preempt-lazy-support.patch @@ -1,7 +1,7 @@ Subject: arm-preempt-lazy-support.patch From: Thomas Gleixner Date: Wed, 31 Oct 2012 12:04:11 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -12,11 +12,9 @@ Signed-off-by: Thomas Gleixner arch/arm/kernel/signal.c | 3 ++- 5 files changed, 18 insertions(+), 3 deletions(-) -Index: linux-stable/arch/arm/Kconfig -=================================================================== ---- linux-stable.orig/arch/arm/Kconfig -+++ linux-stable/arch/arm/Kconfig -@@ -48,6 +48,7 @@ config ARM +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -47,6 +47,7 @@ config ARM select HAVE_MEMBLOCK select HAVE_OPROFILE if (HAVE_PERF_EVENTS) select HAVE_PERF_EVENTS @@ -24,10 +22,8 @@ Index: linux-stable/arch/arm/Kconfig select HAVE_REGS_AND_STACK_ACCESS_API select HAVE_SYSCALL_TRACEPOINTS select HAVE_UID16 -Index: linux-stable/arch/arm/include/asm/thread_info.h -=================================================================== ---- linux-stable.orig/arch/arm/include/asm/thread_info.h -+++ linux-stable/arch/arm/include/asm/thread_info.h +--- a/arch/arm/include/asm/thread_info.h ++++ b/arch/arm/include/asm/thread_info.h @@ -50,6 +50,7 @@ struct cpu_context_save { struct thread_info { unsigned long flags; /* low level flags */ @@ -44,7 +40,7 @@ Index: linux-stable/arch/arm/include/asm/thread_info.h #define TIF_SYSCALL_TRACE 8 #define TIF_SYSCALL_AUDIT 9 #define TIF_SYSCALL_TRACEPOINT 10 -@@ -161,6 +163,7 @@ extern int vfp_restore_user_hwstate(stru +@@ -160,6 +162,7 @@ extern int vfp_restore_user_hwstate(stru #define _TIF_SIGPENDING (1 << TIF_SIGPENDING) #define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) #define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME) @@ -52,10 +48,8 @@ Index: linux-stable/arch/arm/include/asm/thread_info.h #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) #define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT) #define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT) -Index: linux-stable/arch/arm/kernel/asm-offsets.c -=================================================================== ---- linux-stable.orig/arch/arm/kernel/asm-offsets.c -+++ linux-stable/arch/arm/kernel/asm-offsets.c +--- a/arch/arm/kernel/asm-offsets.c ++++ b/arch/arm/kernel/asm-offsets.c @@ -53,6 +53,7 @@ int main(void) BLANK(); DEFINE(TI_FLAGS, offsetof(struct thread_info, flags)); @@ -64,10 +58,8 @@ Index: linux-stable/arch/arm/kernel/asm-offsets.c DEFINE(TI_ADDR_LIMIT, offsetof(struct thread_info, addr_limit)); DEFINE(TI_TASK, offsetof(struct thread_info, task)); DEFINE(TI_EXEC_DOMAIN, offsetof(struct thread_info, exec_domain)); -Index: linux-stable/arch/arm/kernel/entry-armv.S -=================================================================== ---- linux-stable.orig/arch/arm/kernel/entry-armv.S -+++ linux-stable/arch/arm/kernel/entry-armv.S +--- a/arch/arm/kernel/entry-armv.S ++++ b/arch/arm/kernel/entry-armv.S @@ -204,11 +204,18 @@ __irq_svc: #ifdef CONFIG_PREEMPT get_thread_info tsk @@ -98,11 +90,9 @@ Index: linux-stable/arch/arm/kernel/entry-armv.S moveq pc, r8 @ go again b 1b #endif -Index: linux-stable/arch/arm/kernel/signal.c -=================================================================== ---- linux-stable.orig/arch/arm/kernel/signal.c -+++ linux-stable/arch/arm/kernel/signal.c -@@ -576,7 +576,8 @@ asmlinkage int +--- a/arch/arm/kernel/signal.c ++++ b/arch/arm/kernel/signal.c +@@ -584,7 +584,8 @@ asmlinkage int do_work_pending(struct pt_regs *regs, unsigned int thread_flags, int syscall) { do { diff --git a/debian/patches/features/all/rt/ata-disable-interrupts-if-non-rt.patch b/debian/patches/features/all/rt/ata-disable-interrupts-if-non-rt.patch index fae12bbf7..57c8d9c17 100644 --- a/debian/patches/features/all/rt/ata-disable-interrupts-if-non-rt.patch +++ b/debian/patches/features/all/rt/ata-disable-interrupts-if-non-rt.patch @@ -1,7 +1,7 @@ From: Steven Rostedt Date: Fri, 3 Jul 2009 08:44:29 -0500 Subject: ata: Do not disable interrupts in ide code for preempt-rt -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Use the local_irq_*_nort variants. @@ -13,10 +13,8 @@ Signed-off-by: Thomas Gleixner drivers/ata/libata-sff.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) -Index: linux-stable/drivers/ata/libata-sff.c -=================================================================== ---- linux-stable.orig/drivers/ata/libata-sff.c -+++ linux-stable/drivers/ata/libata-sff.c +--- a/drivers/ata/libata-sff.c ++++ b/drivers/ata/libata-sff.c @@ -678,9 +678,9 @@ unsigned int ata_sff_data_xfer_noirq(str unsigned long flags; unsigned int consumed; diff --git a/debian/patches/features/all/rt/block-shorten-interrupt-disabled-regions.patch b/debian/patches/features/all/rt/block-shorten-interrupt-disabled-regions.patch index 6b00169f1..aba501469 100644 --- a/debian/patches/features/all/rt/block-shorten-interrupt-disabled-regions.patch +++ b/debian/patches/features/all/rt/block-shorten-interrupt-disabled-regions.patch @@ -1,7 +1,7 @@ Subject: block: Shorten interrupt disabled regions From: Thomas Gleixner Date: Wed, 22 Jun 2011 19:47:02 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Moving the blk_sched_flush_plug() call out of the interrupt/preempt disabled region in the scheduler allows us to replace @@ -47,10 +47,8 @@ Signed-off-by: Thomas Gleixner block/blk-core.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) -Index: linux-stable/block/blk-core.c -=================================================================== ---- linux-stable.orig/block/blk-core.c -+++ linux-stable/block/blk-core.c +--- a/block/blk-core.c ++++ b/block/blk-core.c @@ -2907,7 +2907,7 @@ static void queue_unplugged(struct reque blk_run_queue_async(q); else diff --git a/debian/patches/features/all/rt/block-use-cpu-chill.patch b/debian/patches/features/all/rt/block-use-cpu-chill.patch index cc6d03ea3..97bab1823 100644 --- a/debian/patches/features/all/rt/block-use-cpu-chill.patch +++ b/debian/patches/features/all/rt/block-use-cpu-chill.patch @@ -1,7 +1,7 @@ Subject: block: Use cpu_chill() for retry loops From: Thomas Gleixner Date: Thu, 20 Dec 2012 18:28:26 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Retry loops on RT might loop forever when the modifying side was preempted. Steven also observed a live lock when there was a @@ -16,10 +16,8 @@ Cc: stable-rt@vger.kernel.org block/blk-ioc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) -Index: linux-stable/block/blk-ioc.c -=================================================================== ---- linux-stable.orig/block/blk-ioc.c -+++ linux-stable/block/blk-ioc.c +--- a/block/blk-ioc.c ++++ b/block/blk-ioc.c @@ -8,6 +8,7 @@ #include #include /* for max_pfn/max_low_pfn */ diff --git a/debian/patches/features/all/rt/bug-rt-dependend-variants.patch b/debian/patches/features/all/rt/bug-rt-dependend-variants.patch index 50761f9f0..4f2b65565 100644 --- a/debian/patches/features/all/rt/bug-rt-dependend-variants.patch +++ b/debian/patches/features/all/rt/bug-rt-dependend-variants.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:58 -0500 Subject: bug: BUG_ON/WARN_ON variants dependend on RT/!RT -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner @@ -10,10 +10,8 @@ Signed-off-by: Thomas Gleixner include/asm-generic/bug.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) -Index: linux-stable/include/asm-generic/bug.h -=================================================================== ---- linux-stable.orig/include/asm-generic/bug.h -+++ linux-stable/include/asm-generic/bug.h +--- a/include/asm-generic/bug.h ++++ b/include/asm-generic/bug.h @@ -202,6 +202,20 @@ extern void warn_slowpath_null(const cha # define WARN_ON_SMP(x) ({0;}) #endif diff --git a/debian/patches/features/all/rt/clocksource-tclib-allow-higher-clockrates.patch b/debian/patches/features/all/rt/clocksource-tclib-allow-higher-clockrates.patch index d9535bfbf..158b206e9 100644 --- a/debian/patches/features/all/rt/clocksource-tclib-allow-higher-clockrates.patch +++ b/debian/patches/features/all/rt/clocksource-tclib-allow-higher-clockrates.patch @@ -1,7 +1,7 @@ From: Benedikt Spranger Date: Mon, 8 Mar 2010 18:57:04 +0100 Subject: clocksource: TCLIB: Allow higher clock rates for clock events -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz As default the TCLIB uses the 32KiHz base clock rate for clock events. Add a compile time selection to allow higher clock resulution. @@ -14,10 +14,8 @@ Signed-off-by: Thomas Gleixner drivers/misc/Kconfig | 12 ++++++++++-- 2 files changed, 26 insertions(+), 16 deletions(-) -Index: linux-stable/drivers/clocksource/tcb_clksrc.c -=================================================================== ---- linux-stable.orig/drivers/clocksource/tcb_clksrc.c -+++ linux-stable/drivers/clocksource/tcb_clksrc.c +--- 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. * @@ -111,10 +109,8 @@ Index: linux-stable/drivers/clocksource/tcb_clksrc.c return 0; } arch_initcall(tcb_clksrc_init); -Index: linux-stable/drivers/misc/Kconfig -=================================================================== ---- linux-stable.orig/drivers/misc/Kconfig -+++ linux-stable/drivers/misc/Kconfig +--- a/drivers/misc/Kconfig ++++ b/drivers/misc/Kconfig @@ -78,8 +78,7 @@ config ATMEL_TCB_CLKSRC are combined to make a single 32-bit timer. diff --git a/debian/patches/features/all/rt/completion-use-simple-wait-queues.patch b/debian/patches/features/all/rt/completion-use-simple-wait-queues.patch index e0c65e98b..31c66ade5 100644 --- a/debian/patches/features/all/rt/completion-use-simple-wait-queues.patch +++ b/debian/patches/features/all/rt/completion-use-simple-wait-queues.patch @@ -1,7 +1,7 @@ Subject: completion: Use simple wait queues From: Thomas Gleixner Date: Fri, 11 Jan 2013 11:23:51 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Completions have no long lasting callbacks and therefor do not need the complex waitqueue variant. Use simple waitqueues which reduces the @@ -14,10 +14,8 @@ Signed-off-by: Thomas Gleixner kernel/sched/core.c | 44 +++++++++++++++++++++++++------------------- 3 files changed, 30 insertions(+), 23 deletions(-) -Index: linux-stable/include/linux/completion.h -=================================================================== ---- linux-stable.orig/include/linux/completion.h -+++ linux-stable/include/linux/completion.h +--- a/include/linux/completion.h ++++ b/include/linux/completion.h @@ -8,7 +8,7 @@ * See kernel/sched.c for details. */ @@ -50,10 +48,8 @@ Index: linux-stable/include/linux/completion.h } extern void wait_for_completion(struct completion *); -Index: linux-stable/include/linux/uprobes.h -=================================================================== ---- linux-stable.orig/include/linux/uprobes.h -+++ linux-stable/include/linux/uprobes.h +--- a/include/linux/uprobes.h ++++ b/include/linux/uprobes.h @@ -26,6 +26,7 @@ #include @@ -62,11 +58,9 @@ Index: linux-stable/include/linux/uprobes.h struct vm_area_struct; struct mm_struct; -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -3028,7 +3028,10 @@ void migrate_disable(void) +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -2988,7 +2988,10 @@ void migrate_disable(void) } #ifdef CONFIG_SCHED_DEBUG @@ -78,7 +72,7 @@ Index: linux-stable/kernel/sched/core.c #endif preempt_disable(); -@@ -3060,7 +3063,10 @@ void migrate_enable(void) +@@ -3020,7 +3023,10 @@ void migrate_enable(void) } #ifdef CONFIG_SCHED_DEBUG @@ -90,7 +84,7 @@ Index: linux-stable/kernel/sched/core.c #endif WARN_ON_ONCE(p->migrate_disable <= 0); -@@ -3515,10 +3521,10 @@ void complete(struct completion *x) +@@ -3475,10 +3481,10 @@ void complete(struct completion *x) { unsigned long flags; @@ -104,7 +98,7 @@ Index: linux-stable/kernel/sched/core.c } EXPORT_SYMBOL(complete); -@@ -3535,10 +3541,10 @@ void complete_all(struct completion *x) +@@ -3495,10 +3501,10 @@ void complete_all(struct completion *x) { unsigned long flags; @@ -118,7 +112,7 @@ Index: linux-stable/kernel/sched/core.c } EXPORT_SYMBOL(complete_all); -@@ -3547,20 +3553,20 @@ do_wait_for_common(struct completion *x, +@@ -3507,20 +3513,20 @@ do_wait_for_common(struct completion *x, long (*action)(long), long timeout, int state) { if (!x->done) { @@ -144,7 +138,7 @@ Index: linux-stable/kernel/sched/core.c if (!x->done) return timeout; } -@@ -3574,9 +3580,9 @@ __wait_for_common(struct completion *x, +@@ -3534,9 +3540,9 @@ __wait_for_common(struct completion *x, { might_sleep(); @@ -156,7 +150,7 @@ Index: linux-stable/kernel/sched/core.c return timeout; } -@@ -3752,12 +3758,12 @@ bool try_wait_for_completion(struct comp +@@ -3712,12 +3718,12 @@ bool try_wait_for_completion(struct comp unsigned long flags; int ret = 1; @@ -171,7 +165,7 @@ Index: linux-stable/kernel/sched/core.c return ret; } EXPORT_SYMBOL(try_wait_for_completion); -@@ -3775,10 +3781,10 @@ bool completion_done(struct completion * +@@ -3735,10 +3741,10 @@ bool completion_done(struct completion * unsigned long flags; int ret = 1; diff --git a/debian/patches/features/all/rt/cond-resched-lock-rt-tweak.patch b/debian/patches/features/all/rt/cond-resched-lock-rt-tweak.patch index a003485c6..01ceb9dc9 100644 --- a/debian/patches/features/all/rt/cond-resched-lock-rt-tweak.patch +++ b/debian/patches/features/all/rt/cond-resched-lock-rt-tweak.patch @@ -1,18 +1,16 @@ Subject: cond-resched-lock-rt-tweak.patch From: Thomas Gleixner Date: Sun, 17 Jul 2011 22:51:33 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- include/linux/sched.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h -@@ -2483,7 +2483,7 @@ extern int _cond_resched(void); +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -2486,7 +2486,7 @@ extern int _cond_resched(void); extern int __cond_resched_lock(spinlock_t *lock); diff --git a/debian/patches/features/all/rt/cond-resched-softirq-rt.patch b/debian/patches/features/all/rt/cond-resched-softirq-rt.patch index cdb19ea58..9f5593f2e 100644 --- a/debian/patches/features/all/rt/cond-resched-softirq-rt.patch +++ b/debian/patches/features/all/rt/cond-resched-softirq-rt.patch @@ -1,7 +1,7 @@ Subject: cond-resched-softirq-fix.patch From: Thomas Gleixner Date: Thu, 14 Jul 2011 09:56:44 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -9,11 +9,9 @@ Signed-off-by: Thomas Gleixner kernel/sched/core.c | 2 ++ 2 files changed, 6 insertions(+) -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h -@@ -2494,12 +2494,16 @@ extern int __cond_resched_lock(spinlock_ +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -2497,12 +2497,16 @@ extern int __cond_resched_lock(spinlock_ __cond_resched_lock(lock); \ }) @@ -30,11 +28,9 @@ Index: linux-stable/include/linux/sched.h /* * Does a critical section need to be broken due to another -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -4443,6 +4443,7 @@ int __cond_resched_lock(spinlock_t *lock +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -4485,6 +4485,7 @@ int __cond_resched_lock(spinlock_t *lock } EXPORT_SYMBOL(__cond_resched_lock); @@ -42,7 +38,7 @@ Index: linux-stable/kernel/sched/core.c int __sched __cond_resched_softirq(void) { BUG_ON(!in_softirq()); -@@ -4456,6 +4457,7 @@ int __sched __cond_resched_softirq(void) +@@ -4498,6 +4499,7 @@ int __sched __cond_resched_softirq(void) return 0; } EXPORT_SYMBOL(__cond_resched_softirq); diff --git a/debian/patches/features/all/rt/cpsw-net-cpsw-Use-fallback-for-active_slave.patch b/debian/patches/features/all/rt/cpsw-net-cpsw-Use-fallback-for-active_slave.patch deleted file mode 100644 index be8079ae0..000000000 --- a/debian/patches/features/all/rt/cpsw-net-cpsw-Use-fallback-for-active_slave.patch +++ /dev/null @@ -1,32 +0,0 @@ -From: Sebastian Andrzej Siewior -Date: Tue, 16 Apr 2013 12:34:09 +0200 -Subject: [PATCH] net/cpsw: Use fallback for active_slave -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz - -In case the .dts has not been yet updated we also try to look for the -old "cpts_active_slave" property. - -Signed-off-by: Sebastian Andrzej Siewior ---- - drivers/net/ethernet/ti/cpsw.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -Index: linux-stable/drivers/net/ethernet/ti/cpsw.c -=================================================================== ---- linux-stable.orig/drivers/net/ethernet/ti/cpsw.c -+++ linux-stable/drivers/net/ethernet/ti/cpsw.c -@@ -1466,8 +1466,12 @@ static int cpsw_probe_dt(struct cpsw_pla - - if (of_property_read_u32(node, "active_slave", &prop)) { - pr_err("Missing active_slave property in the DT.\n"); -- ret = -EINVAL; -- goto error_ret; -+ if (of_property_read_u32(node, "cpts_active_slave", &prop)) { -+ ret = -EINVAL; -+ goto error_ret; -+ } else { -+ pr_err("Using old cpts_active_slave as fallback.\n"); -+ } - } - data->active_slave = prop; - diff --git a/debian/patches/features/all/rt/cpsw-net-cpsw-use-a-lock-around-source-testing.patch b/debian/patches/features/all/rt/cpsw-net-cpsw-use-a-lock-around-source-testing.patch deleted file mode 100644 index 99ffc9402..000000000 --- a/debian/patches/features/all/rt/cpsw-net-cpsw-use-a-lock-around-source-testing.patch +++ /dev/null @@ -1,65 +0,0 @@ -From: Sebastian Andrzej Siewior -Date: Wed, 24 Apr 2013 20:01:22 +0200 -Subject: [PATCH] net/cpsw: use a lock around source testing -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz - -For some reason on RT it happens that the TX interrupt fires over and -over again but according to tx_stat there is nothing going on. Same goes -for RX but not that often. -With this lock around it this is gone. However I still see from time to -time interrupts where each source is set to 0. - -Signed-off-by: Sebastian Andrzej Siewior ---- - drivers/net/ethernet/ti/cpsw.c | 11 +++++++++-- - 1 file changed, 9 insertions(+), 2 deletions(-) - -Index: linux-stable/drivers/net/ethernet/ti/cpsw.c -=================================================================== ---- linux-stable.orig/drivers/net/ethernet/ti/cpsw.c -+++ linux-stable/drivers/net/ethernet/ti/cpsw.c -@@ -490,7 +490,7 @@ void cpsw_rx_handler(void *token, int le - skb_put(skb, len); - cpts_rx_timestamp(priv->cpts, skb); - skb->protocol = eth_type_trans(skb, ndev); -- netif_receive_skb(skb); -+ netif_rx(skb); - priv->stats.rx_bytes += len; - priv->stats.rx_packets++; - } else { -@@ -507,19 +507,24 @@ void cpsw_rx_handler(void *token, int le - static irqreturn_t cpsw_interrupt(int irq, void *dev_id) - { - struct cpsw_priv *priv = dev_id; -+ unsigned long flags; - u32 rx, tx, rx_thresh; - -+ spin_lock_irqsave(&priv->lock, flags); - rx_thresh = __raw_readl(&priv->wr_regs->rx_thresh_stat); - rx = __raw_readl(&priv->wr_regs->rx_stat); - tx = __raw_readl(&priv->wr_regs->tx_stat); -- if (!rx_thresh && !rx && !tx) -+ if (!rx_thresh && !rx && !tx) { -+ spin_unlock_irqrestore(&priv->lock, flags); - return IRQ_NONE; -+ } - - cpsw_intr_disable(priv); - if (priv->irq_enabled == true) { - cpsw_disable_irq(priv); - priv->irq_enabled = false; - } -+ spin_unlock_irqrestore(&priv->lock, flags); - - if (netif_running(priv->ndev)) { - napi_schedule(&priv->napi); -@@ -541,7 +546,9 @@ static int cpsw_poll(struct napi_struct - { - struct cpsw_priv *priv = napi_to_priv(napi); - int num_tx, num_rx; -+ unsigned long flags; - -+ spin_lock_irqsave(&priv->lock, flags); - num_tx = cpdma_chan_process(priv->txch, 128); - if (num_tx) - cpdma_ctlr_eoi(priv->dma, CPDMA_EOI_TX); diff --git a/debian/patches/features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch b/debian/patches/features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch index 927f27ac2..7b02872ca 100644 --- a/debian/patches/features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch +++ b/debian/patches/features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch @@ -1,7 +1,7 @@ Subject: cpu: Make hotplug.lock a "sleeping" spinlock on RT From: Steven Rostedt Date: Fri, 02 Mar 2012 10:36:57 -0500 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Tasks can block on hotplug.lock in pin_current_cpu(), but their state might be != RUNNING. So the mutex wakeup will set the state @@ -23,10 +23,8 @@ Signed-off-by: Thomas Gleixner kernel/cpu.c | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) -Index: linux-stable/kernel/cpu.c -=================================================================== ---- linux-stable.orig/kernel/cpu.c -+++ linux-stable/kernel/cpu.c +--- a/kernel/cpu.c ++++ b/kernel/cpu.c @@ -51,7 +51,12 @@ static int cpu_hotplug_disabled; static struct { diff --git a/debian/patches/features/all/rt/cpu-rt-rework-cpu-down.patch b/debian/patches/features/all/rt/cpu-rt-rework-cpu-down.patch index dbe18bfc5..2ac4ed0bd 100644 --- a/debian/patches/features/all/rt/cpu-rt-rework-cpu-down.patch +++ b/debian/patches/features/all/rt/cpu-rt-rework-cpu-down.patch @@ -1,7 +1,7 @@ From: Steven Rostedt Date: Mon, 16 Jul 2012 08:07:43 +0000 Subject: cpu/rt: Rework cpu down for PREEMPT_RT -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Bringing a CPU down is a pain with the PREEMPT_RT kernel because tasks can be preempted in many more places than in non-RT. In @@ -55,11 +55,9 @@ Signed-off-by: Thomas Gleixner kernel/sched/core.c | 82 ++++++++++++++++- 3 files changed, 284 insertions(+), 45 deletions(-) -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h -@@ -1808,6 +1808,10 @@ extern void do_set_cpus_allowed(struct t +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -1811,6 +1811,10 @@ extern void do_set_cpus_allowed(struct t extern int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask); @@ -70,7 +68,7 @@ Index: linux-stable/include/linux/sched.h #else static inline void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) -@@ -1820,6 +1824,9 @@ static inline int set_cpus_allowed_ptr(s +@@ -1823,6 +1827,9 @@ static inline int set_cpus_allowed_ptr(s return -EINVAL; return 0; } @@ -80,10 +78,8 @@ Index: linux-stable/include/linux/sched.h #endif #ifdef CONFIG_NO_HZ_COMMON -Index: linux-stable/kernel/cpu.c -=================================================================== ---- linux-stable.orig/kernel/cpu.c -+++ linux-stable/kernel/cpu.c +--- a/kernel/cpu.c ++++ b/kernel/cpu.c @@ -51,12 +51,7 @@ static int cpu_hotplug_disabled; static struct { @@ -445,11 +441,9 @@ Index: linux-stable/kernel/cpu.c err = __stop_machine(take_cpu_down, &tcd_param, cpumask_of(cpu)); if (err) { /* CPU didn't die: tell everyone. Can't complain. */ -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -2963,7 +2963,7 @@ void migrate_disable(void) +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -2935,7 +2935,7 @@ void migrate_disable(void) { struct task_struct *p = current; @@ -458,7 +452,7 @@ Index: linux-stable/kernel/sched/core.c #ifdef CONFIG_SCHED_DEBUG p->migrate_disable_atomic++; #endif -@@ -2994,7 +2994,7 @@ void migrate_enable(void) +@@ -2966,7 +2966,7 @@ void migrate_enable(void) unsigned long flags; struct rq *rq; @@ -467,7 +461,7 @@ Index: linux-stable/kernel/sched/core.c #ifdef CONFIG_SCHED_DEBUG p->migrate_disable_atomic--; #endif -@@ -4966,6 +4966,84 @@ void do_set_cpus_allowed(struct task_str +@@ -4969,6 +4969,84 @@ void do_set_cpus_allowed(struct task_str cpumask_copy(&p->cpus_allowed, new_mask); } diff --git a/debian/patches/features/all/rt/cpu-rt-variants.patch b/debian/patches/features/all/rt/cpu-rt-variants.patch index fda028686..fd48f599b 100644 --- a/debian/patches/features/all/rt/cpu-rt-variants.patch +++ b/debian/patches/features/all/rt/cpu-rt-variants.patch @@ -1,17 +1,15 @@ Subject: cpu-rt-variants.patch From: Thomas Gleixner Date: Fri, 17 Jun 2011 15:42:38 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- include/linux/smp.h | 8 ++++++++ 1 file changed, 8 insertions(+) -Index: linux-stable/include/linux/smp.h -=================================================================== ---- linux-stable.orig/include/linux/smp.h -+++ linux-stable/include/linux/smp.h +--- a/include/linux/smp.h ++++ b/include/linux/smp.h @@ -223,6 +223,14 @@ static inline void kick_all_cpus_sync(vo #define get_cpu() ({ preempt_disable(); smp_processor_id(); }) #define put_cpu() preempt_enable() diff --git a/debian/patches/features/all/rt/cpumask-disable-offstack-on-rt.patch b/debian/patches/features/all/rt/cpumask-disable-offstack-on-rt.patch index eb7a22183..b9ea02c55 100644 --- a/debian/patches/features/all/rt/cpumask-disable-offstack-on-rt.patch +++ b/debian/patches/features/all/rt/cpumask-disable-offstack-on-rt.patch @@ -1,7 +1,7 @@ Subject: cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT From: Thomas Gleixner Date: Wed, 14 Dec 2011 01:03:49 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz 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. @@ -12,10 +12,8 @@ Signed-off-by: Thomas Gleixner lib/Kconfig | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) -Index: linux-stable/arch/x86/Kconfig -=================================================================== ---- linux-stable.orig/arch/x86/Kconfig -+++ linux-stable/arch/x86/Kconfig +--- a/arch/x86/Kconfig ++++ b/arch/x86/Kconfig @@ -799,7 +799,7 @@ config IOMMU_HELPER config MAXSMP bool "Enable Maximum number of SMP Processors and NUMA Nodes" @@ -25,10 +23,8 @@ Index: linux-stable/arch/x86/Kconfig ---help--- Enable maximum number of CPUS and NUMA Nodes for this architecture. If unsure, say N. -Index: linux-stable/lib/Kconfig -=================================================================== ---- linux-stable.orig/lib/Kconfig -+++ linux-stable/lib/Kconfig +--- a/lib/Kconfig ++++ b/lib/Kconfig @@ -315,6 +315,7 @@ config CHECK_SIGNATURE config CPUMASK_OFFSTACK diff --git a/debian/patches/features/all/rt/debugobjects-rt.patch b/debian/patches/features/all/rt/debugobjects-rt.patch index 873bccdc1..1941c2c7e 100644 --- a/debian/patches/features/all/rt/debugobjects-rt.patch +++ b/debian/patches/features/all/rt/debugobjects-rt.patch @@ -1,17 +1,15 @@ Subject: debugobjects-rt.patch From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:41:35 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- lib/debugobjects.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) -Index: linux-stable/lib/debugobjects.c -=================================================================== ---- linux-stable.orig/lib/debugobjects.c -+++ linux-stable/lib/debugobjects.c +--- a/lib/debugobjects.c ++++ b/lib/debugobjects.c @@ -308,7 +308,10 @@ __debug_object_init(void *addr, struct d struct debug_obj *obj; unsigned long flags; diff --git a/debian/patches/features/all/rt/dm-make-rt-aware.patch b/debian/patches/features/all/rt/dm-make-rt-aware.patch index ea3038f99..f9a937a75 100644 --- a/debian/patches/features/all/rt/dm-make-rt-aware.patch +++ b/debian/patches/features/all/rt/dm-make-rt-aware.patch @@ -1,7 +1,7 @@ Subject: dm: Make rt aware From: Thomas Gleixner Date: Mon, 14 Nov 2011 23:06:09 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Use the BUG_ON_NORT variant for the irq_disabled() checks. RT has interrupts legitimately enabled here as we cant deadlock against the @@ -14,11 +14,9 @@ Signed-off-by: Thomas Gleixner drivers/md/dm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-stable/drivers/md/dm.c -=================================================================== ---- linux-stable.orig/drivers/md/dm.c -+++ linux-stable/drivers/md/dm.c -@@ -1706,14 +1706,14 @@ static void dm_request_fn(struct request +--- a/drivers/md/dm.c ++++ b/drivers/md/dm.c +@@ -1713,14 +1713,14 @@ static void dm_request_fn(struct request if (map_request(ti, clone, md)) goto requeued; diff --git a/debian/patches/features/all/rt/drivers-net-8139-disable-irq-nosync.patch b/debian/patches/features/all/rt/drivers-net-8139-disable-irq-nosync.patch index 13b8686b6..31aa9d7e9 100644 --- a/debian/patches/features/all/rt/drivers-net-8139-disable-irq-nosync.patch +++ b/debian/patches/features/all/rt/drivers-net-8139-disable-irq-nosync.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:24 -0500 Subject: drivers/net: Use disable_irq_nosync() in 8139too -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Use disable_irq_nosync() instead of disable_irq() as this might be called in atomic context with netpoll. @@ -13,10 +13,8 @@ Signed-off-by: Thomas Gleixner drivers/net/ethernet/realtek/8139too.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/drivers/net/ethernet/realtek/8139too.c -=================================================================== ---- linux-stable.orig/drivers/net/ethernet/realtek/8139too.c -+++ linux-stable/drivers/net/ethernet/realtek/8139too.c +--- a/drivers/net/ethernet/realtek/8139too.c ++++ b/drivers/net/ethernet/realtek/8139too.c @@ -2213,7 +2213,7 @@ static void rtl8139_poll_controller(stru struct rtl8139_private *tp = netdev_priv(dev); const int irq = tp->pci_dev->irq; diff --git a/debian/patches/features/all/rt/drivers-net-fix-livelock-issues.patch b/debian/patches/features/all/rt/drivers-net-fix-livelock-issues.patch index f82a8c271..52be374fd 100644 --- a/debian/patches/features/all/rt/drivers-net-fix-livelock-issues.patch +++ b/debian/patches/features/all/rt/drivers-net-fix-livelock-issues.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Sat, 20 Jun 2009 11:36:54 +0200 Subject: drivers/net: fix livelock issues -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Preempt-RT runs into a live lock issue with the NETDEV_TX_LOCKED micro optimization. The reason is that the softirq thread is rescheduling @@ -22,11 +22,9 @@ Signed-off-by: Thomas Gleixner drivers/net/rionet.c | 6 +----- 7 files changed, 9 insertions(+), 31 deletions(-) -Index: linux-stable/drivers/net/ethernet/atheros/atl1c/atl1c_main.c -=================================================================== ---- linux-stable.orig/drivers/net/ethernet/atheros/atl1c/atl1c_main.c -+++ linux-stable/drivers/net/ethernet/atheros/atl1c/atl1c_main.c -@@ -2168,11 +2168,7 @@ static netdev_tx_t atl1c_xmit_frame(stru +--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c ++++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c +@@ -2206,11 +2206,7 @@ static netdev_tx_t atl1c_xmit_frame(stru } tpd_req = atl1c_cal_tpd_req(skb); @@ -39,11 +37,9 @@ Index: linux-stable/drivers/net/ethernet/atheros/atl1c/atl1c_main.c if (atl1c_tpd_avail(adapter, type) < tpd_req) { /* no enough descriptor, just stop queue */ -Index: linux-stable/drivers/net/ethernet/atheros/atl1e/atl1e_main.c -=================================================================== ---- linux-stable.orig/drivers/net/ethernet/atheros/atl1e/atl1e_main.c -+++ linux-stable/drivers/net/ethernet/atheros/atl1e/atl1e_main.c -@@ -1799,8 +1799,7 @@ static netdev_tx_t atl1e_xmit_frame(stru +--- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c ++++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c +@@ -1838,8 +1838,7 @@ static netdev_tx_t atl1e_xmit_frame(stru return NETDEV_TX_OK; } tpd_req = atl1e_cal_tdp_req(skb); @@ -53,10 +49,8 @@ Index: linux-stable/drivers/net/ethernet/atheros/atl1e/atl1e_main.c if (atl1e_tpd_avail(adapter) < tpd_req) { /* no enough descriptor, just stop queue */ -Index: linux-stable/drivers/net/ethernet/chelsio/cxgb/sge.c -=================================================================== ---- linux-stable.orig/drivers/net/ethernet/chelsio/cxgb/sge.c -+++ linux-stable/drivers/net/ethernet/chelsio/cxgb/sge.c +--- a/drivers/net/ethernet/chelsio/cxgb/sge.c ++++ b/drivers/net/ethernet/chelsio/cxgb/sge.c @@ -1665,8 +1665,7 @@ static int t1_sge_tx(struct sk_buff *skb struct cmdQ *q = &sge->cmdQ[qid]; unsigned int credits, pidx, genbit, count, use_sched_skb = 0; @@ -67,10 +61,8 @@ Index: linux-stable/drivers/net/ethernet/chelsio/cxgb/sge.c reclaim_completed_tx(sge, q); -Index: linux-stable/drivers/net/ethernet/neterion/s2io.c -=================================================================== ---- linux-stable.orig/drivers/net/ethernet/neterion/s2io.c -+++ linux-stable/drivers/net/ethernet/neterion/s2io.c +--- 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_b [skb->priority & (MAX_TX_FIFOS - 1)]; fifo = &mac_control->fifos[queue]; @@ -85,10 +77,8 @@ Index: linux-stable/drivers/net/ethernet/neterion/s2io.c if (sp->config.multiq) { if (__netif_subqueue_stopped(dev, fifo->fifo_no)) { -Index: linux-stable/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c -=================================================================== ---- linux-stable.orig/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c -+++ linux-stable/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +--- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c ++++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c @@ -2109,10 +2109,8 @@ static int pch_gbe_xmit_frame(struct sk_ struct pch_gbe_tx_ring *tx_ring = adapter->tx_ring; unsigned long flags; @@ -102,10 +92,8 @@ Index: linux-stable/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-stable/drivers/net/ethernet/tehuti/tehuti.c -=================================================================== ---- linux-stable.orig/drivers/net/ethernet/tehuti/tehuti.c -+++ linux-stable/drivers/net/ethernet/tehuti/tehuti.c +--- a/drivers/net/ethernet/tehuti/tehuti.c ++++ b/drivers/net/ethernet/tehuti/tehuti.c @@ -1629,13 +1629,8 @@ static netdev_tx_t bdx_tx_transmit(struc unsigned long flags; @@ -122,10 +110,8 @@ Index: linux-stable/drivers/net/ethernet/tehuti/tehuti.c /* build tx descriptor */ BDX_ASSERT(f->m.wptr >= f->m.memsz); /* started with valid wptr */ -Index: linux-stable/drivers/net/rionet.c -=================================================================== ---- linux-stable.orig/drivers/net/rionet.c -+++ linux-stable/drivers/net/rionet.c +--- a/drivers/net/rionet.c ++++ b/drivers/net/rionet.c @@ -174,11 +174,7 @@ static int rionet_start_xmit(struct sk_b unsigned long flags; int add_num = 1; diff --git a/debian/patches/features/all/rt/drivers-net-gianfar-make-rt-aware.patch b/debian/patches/features/all/rt/drivers-net-gianfar-make-rt-aware.patch index ec9551594..d6d4e1490 100644 --- a/debian/patches/features/all/rt/drivers-net-gianfar-make-rt-aware.patch +++ b/debian/patches/features/all/rt/drivers-net-gianfar-make-rt-aware.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Thu, 1 Apr 2010 20:20:57 +0200 Subject: drivers: net: gianfar: Make RT aware -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz The adjust_link() disables interrupts before taking the queue locks. On RT those locks are converted to "sleeping" locks and @@ -16,10 +16,8 @@ Tested-by: Xianghua Xiao drivers/net/ethernet/freescale/gianfar.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -Index: linux-stable/drivers/net/ethernet/freescale/gianfar.c -=================================================================== ---- linux-stable.orig/drivers/net/ethernet/freescale/gianfar.c -+++ linux-stable/drivers/net/ethernet/freescale/gianfar.c +--- a/drivers/net/ethernet/freescale/gianfar.c ++++ b/drivers/net/ethernet/freescale/gianfar.c @@ -1674,7 +1674,7 @@ void stop_gfar(struct net_device *dev) diff --git a/debian/patches/features/all/rt/drivers-net-tulip-add-missing-pci-disable.patch b/debian/patches/features/all/rt/drivers-net-tulip-add-missing-pci-disable.patch index 9776725a1..9f107961e 100644 --- a/debian/patches/features/all/rt/drivers-net-tulip-add-missing-pci-disable.patch +++ b/debian/patches/features/all/rt/drivers-net-tulip-add-missing-pci-disable.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:18 -0500 Subject: drivers/net: tulip_remove_one needs to call pci_disable_device() -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Otherwise the device is not completely shut down. @@ -12,10 +12,8 @@ Signed-off-by: Thomas Gleixner drivers/net/ethernet/dec/tulip/tulip_core.c | 1 + 1 file changed, 1 insertion(+) -Index: linux-stable/drivers/net/ethernet/dec/tulip/tulip_core.c -=================================================================== ---- linux-stable.orig/drivers/net/ethernet/dec/tulip/tulip_core.c -+++ linux-stable/drivers/net/ethernet/dec/tulip/tulip_core.c +--- a/drivers/net/ethernet/dec/tulip/tulip_core.c ++++ b/drivers/net/ethernet/dec/tulip/tulip_core.c @@ -1943,6 +1943,7 @@ static void tulip_remove_one(struct pci_ pci_iounmap(pdev, tp->base_addr); free_netdev (dev); diff --git a/debian/patches/features/all/rt/drivers-net-vortex-fix-locking-issues.patch b/debian/patches/features/all/rt/drivers-net-vortex-fix-locking-issues.patch index 91f051f87..a8b744353 100644 --- a/debian/patches/features/all/rt/drivers-net-vortex-fix-locking-issues.patch +++ b/debian/patches/features/all/rt/drivers-net-vortex-fix-locking-issues.patch @@ -1,7 +1,7 @@ From: Steven Rostedt Date: Fri, 3 Jul 2009 08:30:00 -0500 Subject: drivers/net: vortex fix locking issues -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Argh, cut and paste wasn't enough... @@ -18,10 +18,8 @@ Signed-off-by: Thomas Gleixner Signed-off-by: Ingo Molnar -Index: linux-stable/drivers/net/ethernet/3com/3c59x.c -=================================================================== ---- linux-stable.orig/drivers/net/ethernet/3com/3c59x.c -+++ linux-stable/drivers/net/ethernet/3com/3c59x.c +--- a/drivers/net/ethernet/3com/3c59x.c ++++ b/drivers/net/ethernet/3com/3c59x.c @@ -842,9 +842,9 @@ static void poll_vortex(struct net_devic { struct vortex_private *vp = netdev_priv(dev); diff --git a/debian/patches/features/all/rt/drivers-random-reduce-preempt-disabled-region.patch b/debian/patches/features/all/rt/drivers-random-reduce-preempt-disabled-region.patch index 4323d7619..64ba16705 100644 --- a/debian/patches/features/all/rt/drivers-random-reduce-preempt-disabled-region.patch +++ b/debian/patches/features/all/rt/drivers-random-reduce-preempt-disabled-region.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:30 -0500 Subject: drivers: random: Reduce preempt disabled region -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz No need to keep preemption disabled across the whole function. @@ -12,10 +12,8 @@ Signed-off-by: Thomas Gleixner drivers/char/random.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) -Index: linux-stable/drivers/char/random.c -=================================================================== ---- linux-stable.orig/drivers/char/random.c -+++ linux-stable/drivers/char/random.c +--- a/drivers/char/random.c ++++ b/drivers/char/random.c @@ -676,9 +676,12 @@ static void add_timer_randomness(struct preempt_disable(); /* if over the trickle threshold, use only 1 in 4096 samples */ diff --git a/debian/patches/features/all/rt/drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch b/debian/patches/features/all/rt/drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch index ac61d5aeb..5c29d180b 100644 --- a/debian/patches/features/all/rt/drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch +++ b/debian/patches/features/all/rt/drivers-serial-call-flush_to_ldisc-when-the-irq-is-t.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:01 -0500 Subject: serial: 8250: Call flush_to_ldisc when the irq is threaded -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Ingo Molnar @@ -9,10 +9,8 @@ Signed-off-by: Ingo Molnar drivers/tty/tty_buffer.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) -Index: linux-stable/drivers/tty/tty_buffer.c -=================================================================== ---- linux-stable.orig/drivers/tty/tty_buffer.c -+++ linux-stable/drivers/tty/tty_buffer.c +--- a/drivers/tty/tty_buffer.c ++++ b/drivers/tty/tty_buffer.c @@ -517,10 +517,15 @@ void tty_flip_buffer_push(struct tty_por buf->tail->commit = buf->tail->used; spin_unlock_irqrestore(&buf->lock, flags); diff --git a/debian/patches/features/all/rt/drivers-serial-cleanup-locking-for-rt.patch b/debian/patches/features/all/rt/drivers-serial-cleanup-locking-for-rt.patch index c462d45c1..af3f84496 100644 --- a/debian/patches/features/all/rt/drivers-serial-cleanup-locking-for-rt.patch +++ b/debian/patches/features/all/rt/drivers-serial-cleanup-locking-for-rt.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:01 -0500 Subject: serial: 8250: Clean up the locking for -rt -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner @@ -10,10 +10,8 @@ Signed-off-by: Thomas Gleixner drivers/tty/serial/8250/8250_core.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) -Index: linux-stable/drivers/tty/serial/8250/8250_core.c -=================================================================== ---- linux-stable.orig/drivers/tty/serial/8250/8250_core.c -+++ linux-stable/drivers/tty/serial/8250/8250_core.c +--- a/drivers/tty/serial/8250/8250_core.c ++++ b/drivers/tty/serial/8250/8250_core.c @@ -2860,14 +2860,10 @@ serial8250_console_write(struct console touch_nmi_watchdog(); diff --git a/debian/patches/features/all/rt/drivers-tty-fix-omap-lock-crap.patch b/debian/patches/features/all/rt/drivers-tty-fix-omap-lock-crap.patch index 6eddefb4d..2606da7b6 100644 --- a/debian/patches/features/all/rt/drivers-tty-fix-omap-lock-crap.patch +++ b/debian/patches/features/all/rt/drivers-tty-fix-omap-lock-crap.patch @@ -1,17 +1,15 @@ Subject: drivers-tty-fix-omap-lock-crap.patch From: Thomas Gleixner Date: Thu, 28 Jul 2011 13:32:57 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- drivers/tty/serial/omap-serial.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) -Index: linux-stable/drivers/tty/serial/omap-serial.c -=================================================================== ---- linux-stable.orig/drivers/tty/serial/omap-serial.c -+++ linux-stable/drivers/tty/serial/omap-serial.c +--- a/drivers/tty/serial/omap-serial.c ++++ b/drivers/tty/serial/omap-serial.c @@ -1169,13 +1169,10 @@ serial_omap_console_write(struct console pm_runtime_get_sync(up->dev); diff --git a/debian/patches/features/all/rt/drivers-tty-pl011-irq-disable-madness.patch b/debian/patches/features/all/rt/drivers-tty-pl011-irq-disable-madness.patch index 00a0c3d1b..73060b52f 100644 --- a/debian/patches/features/all/rt/drivers-tty-pl011-irq-disable-madness.patch +++ b/debian/patches/features/all/rt/drivers-tty-pl011-irq-disable-madness.patch @@ -1,17 +1,15 @@ Subject: drivers-tty-pl011-irq-disable-madness.patch From: Thomas Gleixner Date: Tue, 08 Jan 2013 21:36:51 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- drivers/tty/serial/amba-pl011.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) -Index: linux-stable/drivers/tty/serial/amba-pl011.c -=================================================================== ---- linux-stable.orig/drivers/tty/serial/amba-pl011.c -+++ linux-stable/drivers/tty/serial/amba-pl011.c +--- a/drivers/tty/serial/amba-pl011.c ++++ b/drivers/tty/serial/amba-pl011.c @@ -1923,13 +1923,19 @@ pl011_console_write(struct console *co, clk_enable(uap->clk); diff --git a/debian/patches/features/all/rt/drm-i915-drop-trace_i915_gem_ring_dispatch-onrt.patch b/debian/patches/features/all/rt/drm-i915-drop-trace_i915_gem_ring_dispatch-onrt.patch index cb2c68281..878a22c66 100644 --- a/debian/patches/features/all/rt/drm-i915-drop-trace_i915_gem_ring_dispatch-onrt.patch +++ b/debian/patches/features/all/rt/drm-i915-drop-trace_i915_gem_ring_dispatch-onrt.patch @@ -2,7 +2,7 @@ From d841118ac80c5bfb18f47984bc40687eed08b714 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 25 Apr 2013 18:12:52 +0200 Subject: [PATCH] drm/i915: drop trace_i915_gem_ring_dispatch on rt -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz This tracepoint is responsible for: @@ -46,10 +46,8 @@ Signed-off-by: Sebastian Andrzej Siewior drivers/gpu/drm/i915/i915_gem_execbuffer.c | 2 ++ 1 file changed, 2 insertions(+) -Index: linux-stable/drivers/gpu/drm/i915/i915_gem_execbuffer.c -=================================================================== ---- linux-stable.orig/drivers/gpu/drm/i915/i915_gem_execbuffer.c -+++ linux-stable/drivers/gpu/drm/i915/i915_gem_execbuffer.c +--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c ++++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c @@ -1071,7 +1071,9 @@ i915_gem_do_execbuffer(struct drm_device goto err; } diff --git a/debian/patches/features/all/rt/early-printk-consolidate.patch b/debian/patches/features/all/rt/early-printk-consolidate.patch index b94b93599..45ed561a2 100644 --- a/debian/patches/features/all/rt/early-printk-consolidate.patch +++ b/debian/patches/features/all/rt/early-printk-consolidate.patch @@ -1,7 +1,7 @@ Subject: early-printk-consolidate.patch From: Thomas Gleixner Date: Sat, 23 Jul 2011 11:04:08 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -9,10 +9,8 @@ Signed-off-by: Thomas Gleixner arch/sparc/kernel/setup_64.c | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) -Index: linux-stable/arch/sparc/kernel/setup_32.c -=================================================================== ---- linux-stable.orig/arch/sparc/kernel/setup_32.c -+++ linux-stable/arch/sparc/kernel/setup_32.c +--- a/arch/sparc/kernel/setup_32.c ++++ b/arch/sparc/kernel/setup_32.c @@ -309,6 +309,7 @@ void __init setup_arch(char **cmdline_p) boot_flags_init(*cmdline_p); @@ -21,10 +19,8 @@ Index: linux-stable/arch/sparc/kernel/setup_32.c register_console(&prom_early_console); printk("ARCH: "); -Index: linux-stable/arch/sparc/kernel/setup_64.c -=================================================================== ---- linux-stable.orig/arch/sparc/kernel/setup_64.c -+++ linux-stable/arch/sparc/kernel/setup_64.c +--- a/arch/sparc/kernel/setup_64.c ++++ b/arch/sparc/kernel/setup_64.c @@ -551,6 +551,12 @@ static void __init init_sparc64_elf_hwca pause_patch(); } diff --git a/debian/patches/features/all/rt/epoll-use-get-cpu-light.patch b/debian/patches/features/all/rt/epoll-use-get-cpu-light.patch index 8149ef638..37722bc8e 100644 --- a/debian/patches/features/all/rt/epoll-use-get-cpu-light.patch +++ b/debian/patches/features/all/rt/epoll-use-get-cpu-light.patch @@ -1,17 +1,15 @@ Subject: epoll.patch From: Thomas Gleixner Date: Fri, 08 Jul 2011 16:35:35 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- fs/eventpoll.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-stable/fs/eventpoll.c -=================================================================== ---- linux-stable.orig/fs/eventpoll.c -+++ linux-stable/fs/eventpoll.c +--- a/fs/eventpoll.c ++++ b/fs/eventpoll.c @@ -500,12 +500,12 @@ static int ep_poll_wakeup_proc(void *pri */ static void ep_poll_safewake(wait_queue_head_t *wq) diff --git a/debian/patches/features/all/rt/filemap-fix-up.patch b/debian/patches/features/all/rt/filemap-fix-up.patch index b053c765a..e8c2cfacf 100644 --- a/debian/patches/features/all/rt/filemap-fix-up.patch +++ b/debian/patches/features/all/rt/filemap-fix-up.patch @@ -1,7 +1,7 @@ Subject: filemap-fix-up.patch From: Thomas Gleixner Date: Fri, 17 Jun 2011 18:56:24 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner Wrecked-off-by: Peter Zijlstra @@ -10,10 +10,8 @@ Link: http://lkml.kernel.org/n/tip-m6yuzd6ul717hlnl2gj6p3ou@git.kernel.org mm/filemap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/mm/filemap.c -=================================================================== ---- linux-stable.orig/mm/filemap.c -+++ linux-stable/mm/filemap.c +--- a/mm/filemap.c ++++ b/mm/filemap.c @@ -1974,7 +1974,7 @@ size_t iov_iter_copy_from_user_atomic(st char *kaddr; size_t copied; diff --git a/debian/patches/features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch b/debian/patches/features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch index 05f5fd55b..7440a7c7c 100644 --- a/debian/patches/features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch +++ b/debian/patches/features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch @@ -1,6 +1,6 @@ From: Steven Rostedt Subject: x86: Do not disable preemption in int3 on 32bit -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz 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 @@ -23,10 +23,8 @@ Signed-off-by: Thomas Gleixner arch/x86/kernel/traps.c | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) -Index: linux-stable/arch/x86/kernel/traps.c -=================================================================== ---- linux-stable.orig/arch/x86/kernel/traps.c -+++ linux-stable/arch/x86/kernel/traps.c +--- a/arch/x86/kernel/traps.c ++++ b/arch/x86/kernel/traps.c @@ -85,9 +85,21 @@ static inline void conditional_sti(struc local_irq_enable(); } diff --git a/debian/patches/features/all/rt/fs-block-rt-support.patch b/debian/patches/features/all/rt/fs-block-rt-support.patch index 09e2ceeca..f82ee7a69 100644 --- a/debian/patches/features/all/rt/fs-block-rt-support.patch +++ b/debian/patches/features/all/rt/fs-block-rt-support.patch @@ -1,17 +1,15 @@ Subject: fs-block-rt-support.patch From: Thomas Gleixner Date: Tue, 14 Jun 2011 17:05:09 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- block/blk-core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/block/blk-core.c -=================================================================== ---- linux-stable.orig/block/blk-core.c -+++ linux-stable/block/blk-core.c +--- a/block/blk-core.c ++++ b/block/blk-core.c @@ -232,7 +232,7 @@ EXPORT_SYMBOL(blk_delay_queue); **/ void blk_start_queue(struct request_queue *q) diff --git a/debian/patches/features/all/rt/fs-dcache-use-cpu-chill-in-trylock-loops.patch b/debian/patches/features/all/rt/fs-dcache-use-cpu-chill-in-trylock-loops.patch index 6e305d9fd..fe127232b 100644 --- a/debian/patches/features/all/rt/fs-dcache-use-cpu-chill-in-trylock-loops.patch +++ b/debian/patches/features/all/rt/fs-dcache-use-cpu-chill-in-trylock-loops.patch @@ -1,7 +1,7 @@ Subject: fs: dcache: Use cpu_chill() in trylock loops From: Thomas Gleixner Date: Wed, 07 Mar 2012 21:00:34 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Retry loops on RT might loop forever when the modifying side was preempted. Use cpu_chill() instead of cpu_relax() to let the system @@ -16,10 +16,8 @@ Cc: stable-rt@vger.kernel.org fs/namespace.c | 7 ++++--- 4 files changed, 10 insertions(+), 7 deletions(-) -Index: linux-stable/fs/autofs4/autofs_i.h -=================================================================== ---- linux-stable.orig/fs/autofs4/autofs_i.h -+++ linux-stable/fs/autofs4/autofs_i.h +--- a/fs/autofs4/autofs_i.h ++++ b/fs/autofs4/autofs_i.h @@ -34,6 +34,7 @@ #include #include @@ -28,10 +26,8 @@ Index: linux-stable/fs/autofs4/autofs_i.h #include #include -Index: linux-stable/fs/autofs4/expire.c -=================================================================== ---- linux-stable.orig/fs/autofs4/expire.c -+++ linux-stable/fs/autofs4/expire.c +--- a/fs/autofs4/expire.c ++++ b/fs/autofs4/expire.c @@ -157,7 +157,7 @@ again: parent = p->d_parent; if (!spin_trylock(&parent->d_lock)) { @@ -41,10 +37,8 @@ Index: linux-stable/fs/autofs4/expire.c goto relock; } spin_unlock(&p->d_lock); -Index: linux-stable/fs/dcache.c -=================================================================== ---- linux-stable.orig/fs/dcache.c -+++ linux-stable/fs/dcache.c +--- a/fs/dcache.c ++++ b/fs/dcache.c @@ -37,6 +37,7 @@ #include #include @@ -80,10 +74,8 @@ Index: linux-stable/fs/dcache.c goto again; } dentry->d_flags &= ~DCACHE_CANT_MOUNT; -Index: linux-stable/fs/namespace.c -=================================================================== ---- linux-stable.orig/fs/namespace.c -+++ linux-stable/fs/namespace.c +--- a/fs/namespace.c ++++ b/fs/namespace.c @@ -23,6 +23,7 @@ #include #include diff --git a/debian/patches/features/all/rt/fs-fscache-remove-spin_lock-from-the-condition-in-wh.patch b/debian/patches/features/all/rt/fs-fscache-remove-spin_lock-from-the-condition-in-wh.patch index f57629311..71f1ebe1e 100644 --- a/debian/patches/features/all/rt/fs-fscache-remove-spin_lock-from-the-condition-in-wh.patch +++ b/debian/patches/features/all/rt/fs-fscache-remove-spin_lock-from-the-condition-in-wh.patch @@ -2,7 +2,7 @@ From d32f5420ac164141683c51e8a8fce666423de492 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 3 Apr 2013 12:43:30 +0200 Subject: [PATCH] fs/fscache: remove spin_lock() from the condition in while() -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz The spinlock() within the condition in while() will cause a compile error if it is not a function. This is not a problem on mainline but it does not @@ -14,10 +14,8 @@ Signed-off-by: Sebastian Andrzej Siewior fs/fscache/page.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) -Index: linux-stable/fs/fscache/page.c -=================================================================== ---- linux-stable.orig/fs/fscache/page.c -+++ linux-stable/fs/fscache/page.c +--- a/fs/fscache/page.c ++++ b/fs/fscache/page.c @@ -796,11 +796,13 @@ void fscache_invalidate_writes(struct fs _enter(""); diff --git a/debian/patches/features/all/rt/fs-jbd-pull-plug-when-waiting-for-space.patch b/debian/patches/features/all/rt/fs-jbd-pull-plug-when-waiting-for-space.patch index 81e9ad33c..7f337ba10 100644 --- a/debian/patches/features/all/rt/fs-jbd-pull-plug-when-waiting-for-space.patch +++ b/debian/patches/features/all/rt/fs-jbd-pull-plug-when-waiting-for-space.patch @@ -1,7 +1,7 @@ From: Mike Galbraith Date: Wed, 11 Jul 2012 22:05:20 +0000 Subject: fs, jbd: pull your plug when waiting for space -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz With an -rt kernel, and a heavy sync IO load, tasks can jam up on journal locks without unplugging, which can lead to @@ -17,10 +17,8 @@ Signed-off-by: Thomas Gleixner fs/jbd/checkpoint.c | 2 ++ 1 file changed, 2 insertions(+) -Index: linux-stable/fs/jbd/checkpoint.c -=================================================================== ---- linux-stable.orig/fs/jbd/checkpoint.c -+++ linux-stable/fs/jbd/checkpoint.c +--- a/fs/jbd/checkpoint.c ++++ b/fs/jbd/checkpoint.c @@ -129,6 +129,8 @@ void __log_wait_for_space(journal_t *jou if (journal->j_flags & JFS_ABORT) return; diff --git a/debian/patches/features/all/rt/fs-jbd-replace-bh_state-lock.patch b/debian/patches/features/all/rt/fs-jbd-replace-bh_state-lock.patch index 1275f927d..26b040cf4 100644 --- a/debian/patches/features/all/rt/fs-jbd-replace-bh_state-lock.patch +++ b/debian/patches/features/all/rt/fs-jbd-replace-bh_state-lock.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Fri, 18 Mar 2011 10:11:25 +0100 Subject: fs: jbd/jbd2: Make state lock and journal head lock rt safe -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz bit_spin_locks break under RT. @@ -14,10 +14,8 @@ Signed-off-by: Thomas Gleixner include/linux/jbd_common.h | 24 ++++++++++++++++++++++++ 2 files changed, 34 insertions(+) -Index: linux-stable/include/linux/buffer_head.h -=================================================================== ---- linux-stable.orig/include/linux/buffer_head.h -+++ linux-stable/include/linux/buffer_head.h +--- a/include/linux/buffer_head.h ++++ b/include/linux/buffer_head.h @@ -76,6 +76,11 @@ struct buffer_head { atomic_t b_count; /* users using this buffer_head */ #ifdef CONFIG_PREEMPT_RT_BASE @@ -42,10 +40,8 @@ Index: linux-stable/include/linux/buffer_head.h #endif } -Index: linux-stable/include/linux/jbd_common.h -=================================================================== ---- linux-stable.orig/include/linux/jbd_common.h -+++ linux-stable/include/linux/jbd_common.h +--- a/include/linux/jbd_common.h ++++ b/include/linux/jbd_common.h @@ -39,32 +39,56 @@ static inline struct journal_head *bh2jh static inline void jbd_lock_bh_state(struct buffer_head *bh) diff --git a/debian/patches/features/all/rt/fs-namespace-preemption-fix.patch b/debian/patches/features/all/rt/fs-namespace-preemption-fix.patch index 4945c412f..71c3f74f2 100644 --- a/debian/patches/features/all/rt/fs-namespace-preemption-fix.patch +++ b/debian/patches/features/all/rt/fs-namespace-preemption-fix.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Sun, 19 Jul 2009 08:44:27 -0500 Subject: fs: namespace preemption fix -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz On RT we cannot loop with preemption disabled here as mnt_make_readonly() might have been preempted. We can safely enable @@ -14,10 +14,8 @@ Signed-off-by: Thomas Gleixner fs/namespace.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) -Index: linux-stable/fs/namespace.c -=================================================================== ---- linux-stable.orig/fs/namespace.c -+++ linux-stable/fs/namespace.c +--- a/fs/namespace.c ++++ b/fs/namespace.c @@ -315,8 +315,11 @@ int __mnt_want_write(struct vfsmount *m) * incremented count after it has set MNT_WRITE_HOLD. */ diff --git a/debian/patches/features/all/rt/fs-ntfs-disable-interrupt-non-rt.patch b/debian/patches/features/all/rt/fs-ntfs-disable-interrupt-non-rt.patch index ad2b9a5dc..b73d69670 100644 --- a/debian/patches/features/all/rt/fs-ntfs-disable-interrupt-non-rt.patch +++ b/debian/patches/features/all/rt/fs-ntfs-disable-interrupt-non-rt.patch @@ -1,7 +1,7 @@ From: Mike Galbraith Date: Fri, 3 Jul 2009 08:44:12 -0500 Subject: fs: ntfs: disable interrupt only on !RT -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz On Sat, 2007-10-27 at 11:44 +0200, Ingo Molnar wrote: > * Nick Piggin wrote: @@ -40,10 +40,8 @@ Signed-off-by: Thomas Gleixner fs/ntfs/aops.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-stable/fs/ntfs/aops.c -=================================================================== ---- linux-stable.orig/fs/ntfs/aops.c -+++ linux-stable/fs/ntfs/aops.c +--- a/fs/ntfs/aops.c ++++ b/fs/ntfs/aops.c @@ -144,13 +144,13 @@ static void ntfs_end_buffer_async_read(s recs = PAGE_CACHE_SIZE / rec_size; /* Should have been verified before we got here... */ diff --git a/debian/patches/features/all/rt/fs-replace-bh_uptodate_lock-for-rt.patch b/debian/patches/features/all/rt/fs-replace-bh_uptodate_lock-for-rt.patch index 0487fe069..1abc65d33 100644 --- a/debian/patches/features/all/rt/fs-replace-bh_uptodate_lock-for-rt.patch +++ b/debian/patches/features/all/rt/fs-replace-bh_uptodate_lock-for-rt.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Fri, 18 Mar 2011 09:18:52 +0100 Subject: buffer_head: Replace bh_uptodate_lock for -rt -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Wrap the bit_spin_lock calls into a separate inline and add the RT replacements with a real spinlock. @@ -13,10 +13,8 @@ Signed-off-by: Thomas Gleixner include/linux/buffer_head.h | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 21 deletions(-) -Index: linux-stable/fs/buffer.c -=================================================================== ---- linux-stable.orig/fs/buffer.c -+++ linux-stable/fs/buffer.c +--- a/fs/buffer.c ++++ b/fs/buffer.c @@ -288,8 +288,7 @@ static void end_buffer_async_read(struct * decide that the page is now completely done. */ @@ -84,10 +82,8 @@ Index: linux-stable/fs/buffer.c preempt_disable(); __this_cpu_inc(bh_accounting.nr); recalc_bh_state(); -Index: linux-stable/fs/ntfs/aops.c -=================================================================== ---- linux-stable.orig/fs/ntfs/aops.c -+++ linux-stable/fs/ntfs/aops.c +--- a/fs/ntfs/aops.c ++++ b/fs/ntfs/aops.c @@ -108,8 +108,7 @@ static void ntfs_end_buffer_async_read(s "0x%llx.", (unsigned long long)bh->b_blocknr); } @@ -119,10 +115,8 @@ Index: linux-stable/fs/ntfs/aops.c } /** -Index: linux-stable/include/linux/buffer_head.h -=================================================================== ---- linux-stable.orig/include/linux/buffer_head.h -+++ linux-stable/include/linux/buffer_head.h +--- a/include/linux/buffer_head.h ++++ b/include/linux/buffer_head.h @@ -74,8 +74,42 @@ struct buffer_head { struct address_space *b_assoc_map; /* mapping this buffer is associated with */ diff --git a/debian/patches/features/all/rt/ftrace-migrate-disable-tracing.patch b/debian/patches/features/all/rt/ftrace-migrate-disable-tracing.patch index c800e01a2..72ca4a70e 100644 --- a/debian/patches/features/all/rt/ftrace-migrate-disable-tracing.patch +++ b/debian/patches/features/all/rt/ftrace-migrate-disable-tracing.patch @@ -1,7 +1,7 @@ Subject: ftrace-migrate-disable-tracing.patch From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:56:42 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -11,10 +11,8 @@ Signed-off-by: Thomas Gleixner kernel/trace/trace_output.c | 5 +++++ 4 files changed, 15 insertions(+), 4 deletions(-) -Index: linux-stable/include/linux/ftrace_event.h -=================================================================== ---- linux-stable.orig/include/linux/ftrace_event.h -+++ linux-stable/include/linux/ftrace_event.h +--- a/include/linux/ftrace_event.h ++++ b/include/linux/ftrace_event.h @@ -56,6 +56,8 @@ struct trace_entry { unsigned char flags; unsigned char preempt_count; @@ -24,11 +22,9 @@ Index: linux-stable/include/linux/ftrace_event.h }; #define FTRACE_MAX_EVENT \ -Index: linux-stable/kernel/trace/trace.c -=================================================================== ---- linux-stable.orig/kernel/trace/trace.c -+++ linux-stable/kernel/trace/trace.c -@@ -368,7 +368,7 @@ int __trace_puts(unsigned long ip, const +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -399,7 +399,7 @@ int __trace_puts(unsigned long ip, const local_save_flags(irq_flags); buffer = global_trace.trace_buffer.buffer; @@ -37,7 +33,7 @@ Index: linux-stable/kernel/trace/trace.c irq_flags, preempt_count()); if (!event) return 0; -@@ -1419,6 +1419,8 @@ tracing_generic_entry_update(struct trac +@@ -1449,6 +1449,8 @@ tracing_generic_entry_update(struct trac ((pc & HARDIRQ_MASK) ? TRACE_FLAG_HARDIRQ : 0) | ((pc & SOFTIRQ_MASK) ? TRACE_FLAG_SOFTIRQ : 0) | (need_resched() ? TRACE_FLAG_NEED_RESCHED : 0); @@ -46,7 +42,7 @@ Index: linux-stable/kernel/trace/trace.c } EXPORT_SYMBOL_GPL(tracing_generic_entry_update); -@@ -2322,9 +2324,10 @@ static void print_lat_help_header(struct +@@ -2352,9 +2354,10 @@ static void print_lat_help_header(struct seq_puts(m, "# | / _----=> need-resched \n"); seq_puts(m, "# || / _---=> hardirq/softirq \n"); seq_puts(m, "# ||| / _--=> preempt-depth \n"); @@ -60,11 +56,9 @@ Index: linux-stable/kernel/trace/trace.c } static void print_event_info(struct trace_buffer *buf, struct seq_file *m) -Index: linux-stable/kernel/trace/trace_events.c -=================================================================== ---- linux-stable.orig/kernel/trace/trace_events.c -+++ linux-stable/kernel/trace/trace_events.c -@@ -154,6 +154,7 @@ static int trace_define_common_fields(vo +--- a/kernel/trace/trace_events.c ++++ b/kernel/trace/trace_events.c +@@ -171,6 +171,7 @@ static int trace_define_common_fields(vo __common_field(unsigned char, flags); __common_field(unsigned char, preempt_count); __common_field(int, pid); @@ -72,10 +66,8 @@ Index: linux-stable/kernel/trace/trace_events.c return ret; } -Index: linux-stable/kernel/trace/trace_output.c -=================================================================== ---- linux-stable.orig/kernel/trace/trace_output.c -+++ linux-stable/kernel/trace/trace_output.c +--- a/kernel/trace/trace_output.c ++++ b/kernel/trace/trace_output.c @@ -635,6 +635,11 @@ int trace_print_lat_fmt(struct trace_seq else ret = trace_seq_putc(s, '.'); diff --git a/debian/patches/features/all/rt/futex-requeue-pi-fix.patch b/debian/patches/features/all/rt/futex-requeue-pi-fix.patch index 3cd80df17..9a80cac15 100644 --- a/debian/patches/features/all/rt/futex-requeue-pi-fix.patch +++ b/debian/patches/features/all/rt/futex-requeue-pi-fix.patch @@ -1,6 +1,6 @@ From: Steven Rostedt Subject: futex: Fix bug on when a requeued RT task times out -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Requeue with timeout causes a bug with PREEMPT_RT_FULL. @@ -55,10 +55,8 @@ Signed-off-by: Thomas Gleixner kernel/rtmutex_common.h | 1 + 2 files changed, 32 insertions(+), 1 deletion(-) -Index: linux-stable/kernel/rtmutex.c -=================================================================== ---- linux-stable.orig/kernel/rtmutex.c -+++ linux-stable/kernel/rtmutex.c +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c @@ -70,7 +70,8 @@ static void fixup_rt_mutex_waiters(struc static int rt_mutex_real_waiter(struct rt_mutex_waiter *waiter) @@ -69,7 +67,7 @@ Index: linux-stable/kernel/rtmutex.c } /* -@@ -982,6 +983,35 @@ int rt_mutex_start_proxy_lock(struct rt_ +@@ -994,6 +995,35 @@ int rt_mutex_start_proxy_lock(struct rt_ return 1; } @@ -105,10 +103,8 @@ Index: linux-stable/kernel/rtmutex.c ret = task_blocks_on_rt_mutex(lock, waiter, task, detect_deadlock); if (ret && !rt_mutex_owner(lock)) { -Index: linux-stable/kernel/rtmutex_common.h -=================================================================== ---- linux-stable.orig/kernel/rtmutex_common.h -+++ linux-stable/kernel/rtmutex_common.h +--- a/kernel/rtmutex_common.h ++++ b/kernel/rtmutex_common.h @@ -104,6 +104,7 @@ static inline struct task_struct *rt_mut * PI-futex support (proxy locking functions, etc.): */ diff --git a/debian/patches/features/all/rt/genirq-disable-irqpoll-on-rt.patch b/debian/patches/features/all/rt/genirq-disable-irqpoll-on-rt.patch index afa77fdfb..878c82be0 100644 --- a/debian/patches/features/all/rt/genirq-disable-irqpoll-on-rt.patch +++ b/debian/patches/features/all/rt/genirq-disable-irqpoll-on-rt.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:57 -0500 Subject: genirq: disable irqpoll on -rt -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Creates long latencies for no value @@ -12,10 +12,8 @@ Signed-off-by: Thomas Gleixner kernel/irq/spurious.c | 10 ++++++++++ 1 file changed, 10 insertions(+) -Index: linux-stable/kernel/irq/spurious.c -=================================================================== ---- linux-stable.orig/kernel/irq/spurious.c -+++ linux-stable/kernel/irq/spurious.c +--- a/kernel/irq/spurious.c ++++ b/kernel/irq/spurious.c @@ -340,6 +340,11 @@ MODULE_PARM_DESC(noirqdebug, "Disable ir static int __init irqfixup_setup(char *str) diff --git a/debian/patches/features/all/rt/genirq-force-threading.patch b/debian/patches/features/all/rt/genirq-force-threading.patch index cec878cbe..84bd229bb 100644 --- a/debian/patches/features/all/rt/genirq-force-threading.patch +++ b/debian/patches/features/all/rt/genirq-force-threading.patch @@ -1,7 +1,7 @@ Subject: genirq-force-threading.patch From: Thomas Gleixner Date: Sun, 03 Apr 2011 11:57:29 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -9,10 +9,8 @@ Signed-off-by: Thomas Gleixner kernel/irq/manage.c | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) -Index: linux-stable/include/linux/interrupt.h -=================================================================== ---- linux-stable.orig/include/linux/interrupt.h -+++ linux-stable/include/linux/interrupt.h +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h @@ -383,9 +383,13 @@ static inline int disable_irq_wake(unsig @@ -29,10 +27,8 @@ Index: linux-stable/include/linux/interrupt.h #endif #ifndef __ARCH_SET_SOFTIRQ_PENDING -Index: linux-stable/kernel/irq/manage.c -=================================================================== ---- linux-stable.orig/kernel/irq/manage.c -+++ linux-stable/kernel/irq/manage.c +--- a/kernel/irq/manage.c ++++ b/kernel/irq/manage.c @@ -22,6 +22,7 @@ #include "internals.h" diff --git a/debian/patches/features/all/rt/genirq-nodebug-shirq.patch b/debian/patches/features/all/rt/genirq-nodebug-shirq.patch index 92cda948c..3d33c504a 100644 --- a/debian/patches/features/all/rt/genirq-nodebug-shirq.patch +++ b/debian/patches/features/all/rt/genirq-nodebug-shirq.patch @@ -1,17 +1,15 @@ From: Thomas Gleixner Date: Sun, 18 Mar 2011 10:22:04 +0100 Subject: genirq: Disable DEBUG_SHIRQ for rt -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- lib/Kconfig.debug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/lib/Kconfig.debug -=================================================================== ---- linux-stable.orig/lib/Kconfig.debug -+++ linux-stable/lib/Kconfig.debug +--- a/lib/Kconfig.debug ++++ b/lib/Kconfig.debug @@ -164,7 +164,7 @@ config DEBUG_KERNEL config DEBUG_SHIRQ diff --git a/debian/patches/features/all/rt/gpu-i915-allow-the-user-not-to-do-the-wbinvd.patch b/debian/patches/features/all/rt/gpu-i915-allow-the-user-not-to-do-the-wbinvd.patch index b8703259c..8c07a5b04 100644 --- a/debian/patches/features/all/rt/gpu-i915-allow-the-user-not-to-do-the-wbinvd.patch +++ b/debian/patches/features/all/rt/gpu-i915-allow-the-user-not-to-do-the-wbinvd.patch @@ -2,7 +2,7 @@ From b580b7eedc8ee3990b118003c4793291387c40ac Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 21 Jun 2013 11:38:28 +0200 Subject: [PATCH] gpu: i915: allow the user not to do the wbinvd -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz The wbinvd() renders the system with i915 unusable on RT. Using this expensive instruction avoids GPU trouble according to @@ -18,10 +18,8 @@ Signed-off-by: Sebastian Andrzej Siewior drivers/gpu/drm/i915/i915_gem.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) -Index: linux-stable/drivers/gpu/drm/i915/i915_gem.c -=================================================================== ---- linux-stable.orig/drivers/gpu/drm/i915/i915_gem.c -+++ linux-stable/drivers/gpu/drm/i915/i915_gem.c +--- a/drivers/gpu/drm/i915/i915_gem.c ++++ b/drivers/gpu/drm/i915/i915_gem.c @@ -35,6 +35,7 @@ #include #include @@ -30,7 +28,7 @@ Index: linux-stable/drivers/gpu/drm/i915/i915_gem.c static void i915_gem_object_flush_gtt_write_domain(struct drm_i915_gem_object *obj); static void i915_gem_object_flush_cpu_write_domain(struct drm_i915_gem_object *obj); -@@ -2676,6 +2677,10 @@ static inline int fence_number(struct dr +@@ -2713,6 +2714,10 @@ static inline int fence_number(struct dr return fence - dev_priv->fence_regs; } @@ -41,7 +39,7 @@ Index: linux-stable/drivers/gpu/drm/i915/i915_gem.c static void i915_gem_write_fence__ipi(void *data) { wbinvd(); -@@ -2699,8 +2704,16 @@ static void i915_gem_object_update_fence +@@ -2736,8 +2741,16 @@ static void i915_gem_object_update_fence * on each processor in order to manually flush all memory * transactions before updating the fence register. */ diff --git a/debian/patches/features/all/rt/harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch b/debian/patches/features/all/rt/harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch index 4178f9326..824584ddd 100644 --- a/debian/patches/features/all/rt/harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch +++ b/debian/patches/features/all/rt/harirq-h-define-softirq_count-as-oul-to-kill-build-warning.patch @@ -1,7 +1,7 @@ Subject: hardirq.h: Define softirq_count() as OUL to kill build warning From: Yong Zhang Date: Thu, 13 Oct 2011 17:19:09 +0800 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz 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’ @@ -23,10 +23,8 @@ Signed-off-by: Thomas Gleixner include/linux/hardirq.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/include/linux/hardirq.h -=================================================================== ---- linux-stable.orig/include/linux/hardirq.h -+++ linux-stable/include/linux/hardirq.h +--- a/include/linux/hardirq.h ++++ b/include/linux/hardirq.h @@ -85,7 +85,7 @@ # define softirq_count() (preempt_count() & SOFTIRQ_MASK) # define in_serving_softirq() (softirq_count() & SOFTIRQ_OFFSET) diff --git a/debian/patches/features/all/rt/hotplug-call-cpu_unplug_begin-a-little-early.patch b/debian/patches/features/all/rt/hotplug-call-cpu_unplug_begin-a-little-early.patch index 2e8af538a..921477623 100644 --- a/debian/patches/features/all/rt/hotplug-call-cpu_unplug_begin-a-little-early.patch +++ b/debian/patches/features/all/rt/hotplug-call-cpu_unplug_begin-a-little-early.patch @@ -1,7 +1,7 @@ Subject: hotplug: Call cpu_unplug_begin() before DOWN_PREPARE From: Yong Zhang Date: Sun, 16 Oct 2011 18:56:44 +0800 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz cpu_unplug_begin() should be called before CPU_DOWN_PREPARE, because at CPU_DOWN_PREPARE cpu_active is cleared and sched_domain is @@ -26,10 +26,8 @@ Signed-off-by: Thomas Gleixner kernel/cpu.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) -Index: linux-stable/kernel/cpu.c -=================================================================== ---- linux-stable.orig/kernel/cpu.c -+++ linux-stable/kernel/cpu.c +--- a/kernel/cpu.c ++++ b/kernel/cpu.c @@ -411,22 +411,20 @@ static int __ref _cpu_down(unsigned int return -EBUSY; } diff --git a/debian/patches/features/all/rt/hotplug-light-get-online-cpus.patch b/debian/patches/features/all/rt/hotplug-light-get-online-cpus.patch index e22d81086..e361895d7 100644 --- a/debian/patches/features/all/rt/hotplug-light-get-online-cpus.patch +++ b/debian/patches/features/all/rt/hotplug-light-get-online-cpus.patch @@ -1,7 +1,7 @@ Subject: hotplug: Lightweight get online cpus From: Thomas Gleixner Date: Wed, 15 Jun 2011 12:36:06 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz get_online_cpus() is a heavy weight function which involves a global mutex. migrate_disable() wants a simpler construct which prevents only @@ -17,10 +17,8 @@ Signed-off-by: Thomas Gleixner kernel/cpu.c | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 131 insertions(+), 7 deletions(-) -Index: linux-stable/include/linux/cpu.h -=================================================================== ---- linux-stable.orig/include/linux/cpu.h -+++ linux-stable/include/linux/cpu.h +--- a/include/linux/cpu.h ++++ b/include/linux/cpu.h @@ -1,15 +1,15 @@ /* * include/linux/cpu.h - generic cpu definition @@ -59,10 +57,8 @@ Index: linux-stable/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-stable/kernel/cpu.c -=================================================================== ---- linux-stable.orig/kernel/cpu.c -+++ linux-stable/kernel/cpu.c +--- a/kernel/cpu.c ++++ b/kernel/cpu.c @@ -63,6 +63,101 @@ static struct { .refcount = 0, }; diff --git a/debian/patches/features/all/rt/hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch b/debian/patches/features/all/rt/hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch index 4f7f93fac..9279f2e1d 100644 --- a/debian/patches/features/all/rt/hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch +++ b/debian/patches/features/all/rt/hotplug-sync_unplug-no-27-5cn-27-in-task-name.patch @@ -1,7 +1,7 @@ Subject: hotplug: sync_unplug: No "\n" in task name From: Yong Zhang Date: Sun, 16 Oct 2011 18:56:43 +0800 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Otherwise the output will look a little odd. @@ -12,10 +12,8 @@ Signed-off-by: Thomas Gleixner kernel/cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/kernel/cpu.c -=================================================================== ---- linux-stable.orig/kernel/cpu.c -+++ linux-stable/kernel/cpu.c +--- a/kernel/cpu.c ++++ b/kernel/cpu.c @@ -142,7 +142,7 @@ static int cpu_unplug_begin(unsigned int struct task_struct *tsk; diff --git a/debian/patches/features/all/rt/hotplug-use-migrate-disable.patch b/debian/patches/features/all/rt/hotplug-use-migrate-disable.patch index 505f04d60..8593e0d48 100644 --- a/debian/patches/features/all/rt/hotplug-use-migrate-disable.patch +++ b/debian/patches/features/all/rt/hotplug-use-migrate-disable.patch @@ -1,17 +1,15 @@ Subject: hotplug-use-migrate-disable.patch From: Thomas Gleixner Date: Sun, 17 Jul 2011 19:35:29 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- kernel/cpu.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -Index: linux-stable/kernel/cpu.c -=================================================================== ---- linux-stable.orig/kernel/cpu.c -+++ linux-stable/kernel/cpu.c +--- a/kernel/cpu.c ++++ b/kernel/cpu.c @@ -403,14 +403,13 @@ static int __ref _cpu_down(unsigned int cpumask_andnot(cpumask, cpu_online_mask, cpumask_of(cpu)); set_cpus_allowed_ptr(current, cpumask); diff --git a/debian/patches/features/all/rt/hpsa-fix-warning-with-smp_processor_id-in-preemptibl.patch b/debian/patches/features/all/rt/hpsa-fix-warning-with-smp_processor_id-in-preemptibl.patch new file mode 100644 index 000000000..949bd67b8 --- /dev/null +++ b/debian/patches/features/all/rt/hpsa-fix-warning-with-smp_processor_id-in-preemptibl.patch @@ -0,0 +1,79 @@ +From: John Kacur +Date: Fri, 26 Jul 2013 16:06:18 +0200 +Subject: [PATCH] hpsa: fix warning with smp_processor_id() in preemptible + section +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz + +On a 3.6-rt (real-time patch) kernel we are seeing the following BUG +However, it appears to be relevant for non-realtime (mainline) as well. + +|hpsa 0000:03:00.0: hpsa0: <0x323a> at IRQ 67 using DAC +|scsi0 : hpsa +|BUG: using smp_processor_id() in preemptible [0000000000000000] code: kworker/u:0/6 +|caller is enqueue_cmd_and_start_io+0x5a/0x100 [hpsa] +|Pid: 6, comm: kworker/u:0 Not tainted 3.6.11.5-rt37.52.el6rt.x86_64.debug #1 +|Call Trace: +| [] debug_smp_processor_id+0x123/0x150 +| [] enqueue_cmd_and_start_io+0x5a/0x100 [hpsa] +| [] hpsa_scsi_do_simple_cmd_core+0xeb/0x110 [hpsa] +| [] ? swiotlb_dma_mapping_error+0x18/0x30 +| [] ? swiotlb_dma_mapping_error+0x18/0x30 +| [] hpsa_scsi_do_simple_cmd_with_retry+0x91/0x280 [hpsa] +| [] hpsa_scsi_do_report_luns.clone.2+0xd8/0x130 [hpsa] +| [] hpsa_gather_lun_info.clone.3+0x3a/0x1a0 [hpsa] +| [] hpsa_update_scsi_devices+0x11f/0x4f0 [hpsa] +| [] ? sub_preempt_count+0xa9/0xe0 +| [] hpsa_scan_start+0xfd/0x150 [hpsa] +| [] ? rt_spin_lock_slowunlock+0x78/0x90 +| [] do_scsi_scan_host+0x37/0xa0 +| [] do_scan_async+0x1a/0x30 +| [] async_run_entry_fn+0x9b/0x1d0 +| [] process_one_work+0x1f2/0x620 +| [] ? process_one_work+0x180/0x620 +| [] ? worker_thread+0x5e/0x3a0 +| [] ? async_schedule+0x20/0x20 +| [] worker_thread+0x133/0x3a0 +| [] ? manage_workers+0x190/0x190 +| [] kthread+0xa6/0xb0 +| [] kernel_thread_helper+0x4/0x10 +| [] ? finish_task_switch+0x8c/0x110 +| [] ? _raw_spin_unlock_irq+0x3b/0x70 +| [] ? retint_restore_args+0xe/0xe +| [] ? kthreadd+0x1e0/0x1e0 +| [] ? gs_change+0xb/0xb + +------------------- + +This is caused by +enqueue_cmd_and_start_io()-> + set_performant_mode()-> + smp_processor_id() +Which if you have debugging enabled calls debug_processor_id() and triggers the warning. + +The code here is + c->Header.ReplyQueue = smp_processor_id() % h->nreply_queues; + +Since it is not critical that the code complete on the same processor, +but the cpu is a hint used in generating the ReplyQueue and will still work if +the cpu migrates or is preempted, it is safe to use the raw_smp_processor_id() +to surpress the false positve warning. + +Cc: stable-rt@vger.kernel.org +Signed-off-by: John Kacur +Acked-by: Stephen +Signed-off-by: Sebastian Andrzej Siewior +--- + drivers/scsi/hpsa.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/scsi/hpsa.c ++++ b/drivers/scsi/hpsa.c +@@ -583,7 +583,7 @@ static void set_performant_mode(struct c + c->busaddr |= 1 | (h->blockFetchTable[c->Header.SGList] << 1); + if (likely(h->msix_vector)) + c->Header.ReplyQueue = +- smp_processor_id() % h->nreply_queues; ++ raw_smp_processor_id() % h->nreply_queues; + } + } + diff --git a/debian/patches/features/all/rt/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch b/debian/patches/features/all/rt/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch index 978450ea5..ab3cec787 100644 --- a/debian/patches/features/all/rt/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch +++ b/debian/patches/features/all/rt/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Fri, 3 Jul 2009 08:44:31 -0500 Subject: hrtimer: fixup hrtimer callback changes for preempt-rt -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz In preempt-rt we can not call the callbacks which take sleeping locks from the timer interrupt context. @@ -21,10 +21,8 @@ Signed-off-by: Ingo Molnar kernel/watchdog.c | 1 6 files changed, 195 insertions(+), 28 deletions(-) -Index: linux-stable/include/linux/hrtimer.h -=================================================================== ---- linux-stable.orig/include/linux/hrtimer.h -+++ linux-stable/include/linux/hrtimer.h +--- 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; @@ -42,10 +40,8 @@ Index: linux-stable/include/linux/hrtimer.h ktime_t resolution; ktime_t (*get_time)(void); ktime_t softirq_time; -Index: linux-stable/kernel/hrtimer.c -=================================================================== ---- linux-stable.orig/kernel/hrtimer.c -+++ linux-stable/kernel/hrtimer.c +--- a/kernel/hrtimer.c ++++ b/kernel/hrtimer.c @@ -607,8 +607,7 @@ static int hrtimer_reprogram(struct hrti * When the callback is running, we do not reprogram the clock event * device. The timer callback is either running on a different CPU or @@ -415,10 +411,8 @@ Index: linux-stable/kernel/hrtimer.c } /** -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c @@ -489,6 +489,7 @@ static void init_rq_hrtick(struct rq *rq hrtimer_init(&rq->hrtick_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); @@ -427,10 +421,8 @@ Index: linux-stable/kernel/sched/core.c } #else /* CONFIG_SCHED_HRTICK */ static inline void hrtick_clear(struct rq *rq) -Index: linux-stable/kernel/sched/rt.c -=================================================================== ---- linux-stable.orig/kernel/sched/rt.c -+++ linux-stable/kernel/sched/rt.c +--- a/kernel/sched/rt.c ++++ b/kernel/sched/rt.c @@ -43,6 +43,7 @@ void init_rt_bandwidth(struct rt_bandwid hrtimer_init(&rt_b->rt_period_timer, @@ -439,11 +431,9 @@ Index: linux-stable/kernel/sched/rt.c rt_b->rt_period_timer.function = sched_rt_period_timer; } -Index: linux-stable/kernel/time/tick-sched.c -=================================================================== ---- linux-stable.orig/kernel/time/tick-sched.c -+++ linux-stable/kernel/time/tick-sched.c -@@ -1133,6 +1133,7 @@ void tick_setup_sched_timer(void) +--- a/kernel/time/tick-sched.c ++++ b/kernel/time/tick-sched.c +@@ -1128,6 +1128,7 @@ void tick_setup_sched_timer(void) * Emulate tick processing via per-CPU hrtimers: */ hrtimer_init(&ts->sched_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); @@ -451,10 +441,8 @@ Index: linux-stable/kernel/time/tick-sched.c ts->sched_timer.function = tick_sched_timer; /* Get the next period (per cpu) */ -Index: linux-stable/kernel/watchdog.c -=================================================================== ---- linux-stable.orig/kernel/watchdog.c -+++ linux-stable/kernel/watchdog.c +--- a/kernel/watchdog.c ++++ b/kernel/watchdog.c @@ -357,6 +357,7 @@ static void watchdog_enable(unsigned int /* kick off the timer for the hardlockup detector */ hrtimer_init(hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); diff --git a/debian/patches/features/all/rt/hrtimer-raise-softirq-if-hrtimer-irq-stalled.patch b/debian/patches/features/all/rt/hrtimer-raise-softirq-if-hrtimer-irq-stalled.patch index fd9f62a80..f9dd40280 100644 --- a/debian/patches/features/all/rt/hrtimer-raise-softirq-if-hrtimer-irq-stalled.patch +++ b/debian/patches/features/all/rt/hrtimer-raise-softirq-if-hrtimer-irq-stalled.patch @@ -1,7 +1,7 @@ Subject: hrtimer: Raise softirq if hrtimer irq stalled From: Watanabe Date: Sun, 28 Oct 2012 11:13:44 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz When the hrtimer stall detection hits the softirq is not raised. @@ -11,11 +11,9 @@ Cc: stable-rt@vger.kernel.org kernel/hrtimer.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) -Index: linux-stable/kernel/hrtimer.c -=================================================================== ---- linux-stable.orig/kernel/hrtimer.c -+++ linux-stable/kernel/hrtimer.c -@@ -1551,11 +1551,7 @@ retry: +--- a/kernel/hrtimer.c ++++ b/kernel/hrtimer.c +@@ -1556,11 +1556,7 @@ retry: if (expires_next.tv64 == KTIME_MAX || !tick_program_event(expires_next, 0)) { cpu_base->hang_detected = 0; @@ -28,7 +26,7 @@ Index: linux-stable/kernel/hrtimer.c } /* -@@ -1599,6 +1595,9 @@ retry: +@@ -1604,6 +1600,9 @@ retry: tick_program_event(expires_next, 1); printk_once(KERN_WARNING "hrtimer: interrupt took %llu ns\n", ktime_to_ns(delta)); diff --git a/debian/patches/features/all/rt/hrtimers-prepare-full-preemption.patch b/debian/patches/features/all/rt/hrtimers-prepare-full-preemption.patch index 81ede1975..957b8ee54 100644 --- a/debian/patches/features/all/rt/hrtimers-prepare-full-preemption.patch +++ b/debian/patches/features/all/rt/hrtimers-prepare-full-preemption.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:34 -0500 Subject: hrtimers: prepare full preemption -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Make cancellation of a running callback in softirq context safe against preemption. @@ -16,10 +16,8 @@ Signed-off-by: Thomas Gleixner kernel/posix-timers.c | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 76 insertions(+), 1 deletion(-) -Index: linux-stable/include/linux/hrtimer.h -=================================================================== ---- linux-stable.orig/include/linux/hrtimer.h -+++ linux-stable/include/linux/hrtimer.h +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h @@ -193,6 +193,9 @@ struct hrtimer_cpu_base { unsigned long nr_hangs; ktime_t max_hang_time; @@ -44,11 +42,9 @@ Index: linux-stable/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-stable/kernel/hrtimer.c -=================================================================== ---- linux-stable.orig/kernel/hrtimer.c -+++ linux-stable/kernel/hrtimer.c -@@ -863,6 +863,32 @@ u64 hrtimer_forward(struct hrtimer *time +--- a/kernel/hrtimer.c ++++ b/kernel/hrtimer.c +@@ -868,6 +868,32 @@ u64 hrtimer_forward(struct hrtimer *time } EXPORT_SYMBOL_GPL(hrtimer_forward); @@ -81,7 +77,7 @@ Index: linux-stable/kernel/hrtimer.c /* * enqueue_hrtimer - internal function to (re)start a timer * -@@ -1115,7 +1141,7 @@ int hrtimer_cancel(struct hrtimer *timer +@@ -1120,7 +1146,7 @@ int hrtimer_cancel(struct hrtimer *timer if (ret >= 0) return ret; @@ -90,7 +86,7 @@ Index: linux-stable/kernel/hrtimer.c } } EXPORT_SYMBOL_GPL(hrtimer_cancel); -@@ -1532,6 +1558,8 @@ void hrtimer_run_queues(void) +@@ -1530,6 +1556,8 @@ void hrtimer_run_queues(void) } raw_spin_unlock(&cpu_base->lock); } @@ -99,7 +95,7 @@ Index: linux-stable/kernel/hrtimer.c } /* -@@ -1692,6 +1720,9 @@ static void __cpuinit init_hrtimers_cpu( +@@ -1690,6 +1718,9 @@ static void __cpuinit init_hrtimers_cpu( } hrtimer_init_hres(cpu_base); @@ -109,10 +105,8 @@ Index: linux-stable/kernel/hrtimer.c } #ifdef CONFIG_HOTPLUG_CPU -Index: linux-stable/kernel/itimer.c -=================================================================== ---- linux-stable.orig/kernel/itimer.c -+++ linux-stable/kernel/itimer.c +--- 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) { @@ -121,10 +115,8 @@ Index: linux-stable/kernel/itimer.c goto again; } expires = timeval_to_ktime(value->it_value); -Index: linux-stable/kernel/posix-timers.c -=================================================================== ---- linux-stable.orig/kernel/posix-timers.c -+++ linux-stable/kernel/posix-timers.c +--- a/kernel/posix-timers.c ++++ b/kernel/posix-timers.c @@ -818,6 +818,20 @@ SYSCALL_DEFINE1(timer_getoverrun, timer_ return overrun; } diff --git a/debian/patches/features/all/rt/hwlatdetect.patch b/debian/patches/features/all/rt/hwlatdetect.patch index c98aec402..7d8b97866 100644 --- a/debian/patches/features/all/rt/hwlatdetect.patch +++ b/debian/patches/features/all/rt/hwlatdetect.patch @@ -1,7 +1,7 @@ Subject: hwlatdetect.patch From: Carsten Emde Date: Tue, 19 Jul 2011 13:53:12 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Jon Masters developed this wonderful SMI detector. For details please consult Documentation/hwlat_detector.txt. It could be ported to Linux @@ -16,10 +16,8 @@ Signed-off-by: Carsten Emde drivers/misc/hwlat_detector.c | 1212 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 1306 insertions(+) -Index: linux-stable/Documentation/hwlat_detector.txt -=================================================================== --- /dev/null -+++ linux-stable/Documentation/hwlat_detector.txt ++++ b/Documentation/hwlat_detector.txt @@ -0,0 +1,64 @@ +Introduction: +------------- @@ -85,10 +83,8 @@ Index: linux-stable/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-stable/drivers/misc/Kconfig -=================================================================== ---- linux-stable.orig/drivers/misc/Kconfig -+++ linux-stable/drivers/misc/Kconfig +--- 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. @@ -125,19 +121,15 @@ Index: linux-stable/drivers/misc/Kconfig config PHANTOM tristate "Sensable PHANToM (PCI)" depends on PCI -Index: linux-stable/drivers/misc/Makefile -=================================================================== ---- linux-stable.orig/drivers/misc/Makefile -+++ linux-stable/drivers/misc/Makefile +--- a/drivers/misc/Makefile ++++ b/drivers/misc/Makefile @@ -53,3 +53,4 @@ obj-$(CONFIG_INTEL_MEI) += mei/ obj-$(CONFIG_VMWARE_VMCI) += vmw_vmci/ obj-$(CONFIG_LATTICE_ECP3_CONFIG) += lattice-ecp3-config.o obj-$(CONFIG_SRAM) += sram.o +obj-$(CONFIG_HWLAT_DETECTOR) += hwlat_detector.o -Index: linux-stable/drivers/misc/hwlat_detector.c -=================================================================== --- /dev/null -+++ linux-stable/drivers/misc/hwlat_detector.c ++++ b/drivers/misc/hwlat_detector.c @@ -0,0 +1,1212 @@ +/* + * hwlat_detector.c - A simple Hardware Latency detector. diff --git a/debian/patches/features/all/rt/i2c-omap-drop-the-lock-hard-irq-context.patch b/debian/patches/features/all/rt/i2c-omap-drop-the-lock-hard-irq-context.patch index e511d8af3..aa8d47cd1 100644 --- a/debian/patches/features/all/rt/i2c-omap-drop-the-lock-hard-irq-context.patch +++ b/debian/patches/features/all/rt/i2c-omap-drop-the-lock-hard-irq-context.patch @@ -2,7 +2,7 @@ From 5145351047b216cca13aaca99f939a9a594c6c4d Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Thu, 21 Mar 2013 11:35:49 +0100 Subject: [PATCH 2/3] i2c/omap: drop the lock hard irq context -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz The lock is taken while reading two registers. On RT the first lock is taken in hard irq where it might sleep and in the threaded irq. @@ -14,10 +14,8 @@ Signed-off-by: Sebastian Andrzej Siewior drivers/i2c/busses/i2c-omap.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) -Index: linux-stable/drivers/i2c/busses/i2c-omap.c -=================================================================== ---- linux-stable.orig/drivers/i2c/busses/i2c-omap.c -+++ linux-stable/drivers/i2c/busses/i2c-omap.c +--- a/drivers/i2c/busses/i2c-omap.c ++++ b/drivers/i2c/busses/i2c-omap.c @@ -881,15 +881,12 @@ omap_i2c_isr(int irq, void *dev_id) u16 mask; u16 stat; diff --git a/debian/patches/features/all/rt/i915_compile_fix.patch b/debian/patches/features/all/rt/i915_compile_fix.patch index 0b36c7d30..c39737596 100644 --- a/debian/patches/features/all/rt/i915_compile_fix.patch +++ b/debian/patches/features/all/rt/i915_compile_fix.patch @@ -1,6 +1,6 @@ From: Sebastian Andrzej Siewior Subject: gpu/i915: don't open code these things -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz The opencode part is gone in 1f83fee0 ("drm/i915: clear up wedged transitions") the owner check is still there. @@ -10,11 +10,9 @@ Signed-off-by: Sebastian Andrzej Siewior drivers/gpu/drm/i915/i915_gem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/drivers/gpu/drm/i915/i915_gem.c -=================================================================== ---- linux-stable.orig/drivers/gpu/drm/i915/i915_gem.c -+++ linux-stable/drivers/gpu/drm/i915/i915_gem.c -@@ -4412,7 +4412,7 @@ static bool mutex_is_locked_by(struct mu +--- a/drivers/gpu/drm/i915/i915_gem.c ++++ b/drivers/gpu/drm/i915/i915_gem.c +@@ -4449,7 +4449,7 @@ static bool mutex_is_locked_by(struct mu if (!mutex_is_locked(mutex)) return false; diff --git a/debian/patches/features/all/rt/ide-use-nort-local-irq-variants.patch b/debian/patches/features/all/rt/ide-use-nort-local-irq-variants.patch index 4b1575e68..aa4337030 100644 --- a/debian/patches/features/all/rt/ide-use-nort-local-irq-variants.patch +++ b/debian/patches/features/all/rt/ide-use-nort-local-irq-variants.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:16 -0500 Subject: ide: Do not disable interrupts for PREEMPT-RT -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Use the local_irq_*_nort variants. @@ -18,10 +18,8 @@ Signed-off-by: Thomas Gleixner drivers/ide/ide-taskfile.c | 6 +++--- 7 files changed, 16 insertions(+), 16 deletions(-) -Index: linux-stable/drivers/ide/alim15x3.c -=================================================================== ---- linux-stable.orig/drivers/ide/alim15x3.c -+++ linux-stable/drivers/ide/alim15x3.c +--- a/drivers/ide/alim15x3.c ++++ b/drivers/ide/alim15x3.c @@ -234,7 +234,7 @@ static int init_chipset_ali15x3(struct p isa_dev = pci_get_device(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1533, NULL); @@ -40,10 +38,8 @@ Index: linux-stable/drivers/ide/alim15x3.c return 0; } -Index: linux-stable/drivers/ide/hpt366.c -=================================================================== ---- linux-stable.orig/drivers/ide/hpt366.c -+++ linux-stable/drivers/ide/hpt366.c +--- a/drivers/ide/hpt366.c ++++ b/drivers/ide/hpt366.c @@ -1241,7 +1241,7 @@ static int init_dma_hpt366(ide_hwif_t *h dma_old = inb(base + 2); @@ -62,10 +58,8 @@ Index: linux-stable/drivers/ide/hpt366.c printk(KERN_INFO " %s: BM-DMA at 0x%04lx-0x%04lx\n", hwif->name, base, base + 7); -Index: linux-stable/drivers/ide/ide-io-std.c -=================================================================== ---- linux-stable.orig/drivers/ide/ide-io-std.c -+++ linux-stable/drivers/ide/ide-io-std.c +--- 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, unsigned long uninitialized_var(flags); @@ -102,10 +96,8 @@ Index: linux-stable/drivers/ide/ide-io-std.c if (((len + 1) & 3) < 2) return; -Index: linux-stable/drivers/ide/ide-io.c -=================================================================== ---- linux-stable.orig/drivers/ide/ide-io.c -+++ linux-stable/drivers/ide/ide-io.c +--- a/drivers/ide/ide-io.c ++++ b/drivers/ide/ide-io.c @@ -659,7 +659,7 @@ void ide_timer_expiry (unsigned long dat /* disable_irq_nosync ?? */ disable_irq(hwif->irq); @@ -115,10 +107,8 @@ Index: linux-stable/drivers/ide/ide-io.c if (hwif->polling) { startstop = handler(drive); } else if (drive_is_ready(drive)) { -Index: linux-stable/drivers/ide/ide-iops.c -=================================================================== ---- linux-stable.orig/drivers/ide/ide-iops.c -+++ linux-stable/drivers/ide/ide-iops.c +--- a/drivers/ide/ide-iops.c ++++ b/drivers/ide/ide-iops.c @@ -129,12 +129,12 @@ int __ide_wait_stat(ide_drive_t *drive, if ((stat & ATA_BUSY) == 0) break; @@ -134,10 +124,8 @@ Index: linux-stable/drivers/ide/ide-iops.c } /* * Allow status to settle, then read it again. -Index: linux-stable/drivers/ide/ide-probe.c -=================================================================== ---- linux-stable.orig/drivers/ide/ide-probe.c -+++ linux-stable/drivers/ide/ide-probe.c +--- a/drivers/ide/ide-probe.c ++++ b/drivers/ide/ide-probe.c @@ -196,10 +196,10 @@ static void do_identify(ide_drive_t *dri int bswap = 1; @@ -151,10 +139,8 @@ Index: linux-stable/drivers/ide/ide-probe.c drive->dev_flags |= IDE_DFLAG_ID_READ; #ifdef DEBUG -Index: linux-stable/drivers/ide/ide-taskfile.c -=================================================================== ---- linux-stable.orig/drivers/ide/ide-taskfile.c -+++ linux-stable/drivers/ide/ide-taskfile.c +--- a/drivers/ide/ide-taskfile.c ++++ b/drivers/ide/ide-taskfile.c @@ -251,7 +251,7 @@ void ide_pio_bytes(ide_drive_t *drive, s page_is_high = PageHighMem(page); diff --git a/debian/patches/features/all/rt/idle-state.patch b/debian/patches/features/all/rt/idle-state.patch index f85a60037..6bd9cfed9 100644 --- a/debian/patches/features/all/rt/idle-state.patch +++ b/debian/patches/features/all/rt/idle-state.patch @@ -1,18 +1,16 @@ Subject: sched: Init idle->on_rq in init_idle() From: Thomas Gleixner Date: Wed, 09 Jan 2013 23:03:29 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- kernel/sched/core.c | 1 + 1 file changed, 1 insertion(+) -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -5034,6 +5034,7 @@ void __cpuinit init_idle(struct task_str +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -4745,6 +4745,7 @@ void __cpuinit init_idle(struct task_str rcu_read_unlock(); rq->curr = rq->idle = idle; diff --git a/debian/patches/features/all/rt/idr-use-local-lock-for-protection.patch b/debian/patches/features/all/rt/idr-use-local-lock-for-protection.patch index bf686bd87..3a3b79724 100644 --- a/debian/patches/features/all/rt/idr-use-local-lock-for-protection.patch +++ b/debian/patches/features/all/rt/idr-use-local-lock-for-protection.patch @@ -1,6 +1,6 @@ From: Thomas Gleixner Subject: idr: Use local lock instead of preempt enable/disable -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz We need to protect the per cpu variable and prevent migration. @@ -10,10 +10,8 @@ Signed-off-by: Thomas Gleixner lib/idr.c | 37 ++++++++++++++++++++++++++++++++++--- 2 files changed, 38 insertions(+), 3 deletions(-) -Index: linux-stable/include/linux/idr.h -=================================================================== ---- linux-stable.orig/include/linux/idr.h -+++ linux-stable/include/linux/idr.h +--- a/include/linux/idr.h ++++ b/include/linux/idr.h @@ -92,10 +92,14 @@ void idr_init(struct idr *idp); * Each idr_preload() should be matched with an invocation of this * function. See idr_preload() for details. @@ -29,10 +27,8 @@ Index: linux-stable/include/linux/idr.h /** * idr_find - return pointer for given id -Index: linux-stable/lib/idr.c -=================================================================== ---- linux-stable.orig/lib/idr.c -+++ linux-stable/lib/idr.c +--- a/lib/idr.c ++++ b/lib/idr.c @@ -37,6 +37,7 @@ #include #include diff --git a/debian/patches/features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch b/debian/patches/features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch index 3c96073f3..650018adf 100644 --- a/debian/patches/features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch +++ b/debian/patches/features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch @@ -1,7 +1,7 @@ From: Sven-Thorsten Dietrich Date: Fri, 3 Jul 2009 08:30:35 -0500 Subject: infiniband: Mellanox IB driver patch use _nort() primitives -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Fixes in_atomic stack-dump, when Mellanox module is loaded into the RT Kernel. @@ -19,10 +19,8 @@ Signed-off-by: Thomas Gleixner drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-stable/drivers/infiniband/ulp/ipoib/ipoib_multicast.c -=================================================================== ---- linux-stable.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c -+++ linux-stable/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c ++++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c @@ -783,7 +783,7 @@ void ipoib_mcast_restart_task(struct wor ipoib_mcast_stop_thread(dev, 0); diff --git a/debian/patches/features/all/rt/inpt-gameport-use-local-irq-nort.patch b/debian/patches/features/all/rt/inpt-gameport-use-local-irq-nort.patch index 63966820c..61df0bff7 100644 --- a/debian/patches/features/all/rt/inpt-gameport-use-local-irq-nort.patch +++ b/debian/patches/features/all/rt/inpt-gameport-use-local-irq-nort.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:16 -0500 Subject: input: gameport: Do not disable interrupts on PREEMPT_RT -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Use the _nort() primitives. @@ -12,10 +12,8 @@ Signed-off-by: Thomas Gleixner drivers/input/gameport/gameport.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -Index: linux-stable/drivers/input/gameport/gameport.c -=================================================================== ---- linux-stable.orig/drivers/input/gameport/gameport.c -+++ linux-stable/drivers/input/gameport/gameport.c +--- a/drivers/input/gameport/gameport.c ++++ b/drivers/input/gameport/gameport.c @@ -87,12 +87,12 @@ static int gameport_measure_speed(struct tx = 1 << 30; diff --git a/debian/patches/features/all/rt/ipc-make-rt-aware.patch b/debian/patches/features/all/rt/ipc-make-rt-aware.patch index a850adc02..1580cfd3e 100644 --- a/debian/patches/features/all/rt/ipc-make-rt-aware.patch +++ b/debian/patches/features/all/rt/ipc-make-rt-aware.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:12 -0500 Subject: ipc: Make the ipc code -rt aware -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz RT serializes the code with the (rt)spinlock but keeps preemption enabled. Some parts of the code need to be atomic nevertheless. @@ -16,10 +16,8 @@ Signed-off-by: Thomas Gleixner ipc/msg.c | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) -Index: linux-stable/ipc/mqueue.c -=================================================================== ---- linux-stable.orig/ipc/mqueue.c -+++ linux-stable/ipc/mqueue.c +--- a/ipc/mqueue.c ++++ b/ipc/mqueue.c @@ -921,12 +921,17 @@ static inline void pipelined_send(struct struct msg_msg *message, struct ext_wait_queue *receiver) @@ -38,10 +36,8 @@ Index: linux-stable/ipc/mqueue.c } /* pipelined_receive() - if there is task waiting in sys_mq_timedsend() -Index: linux-stable/ipc/msg.c -=================================================================== ---- linux-stable.orig/ipc/msg.c -+++ linux-stable/ipc/msg.c +--- a/ipc/msg.c ++++ b/ipc/msg.c @@ -252,10 +252,18 @@ static void expunge_all(struct msg_queue struct msg_receiver *msr, *t; diff --git a/debian/patches/features/all/rt/ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch b/debian/patches/features/all/rt/ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch index 6f1f4843b..7666eb0ab 100644 --- a/debian/patches/features/all/rt/ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch +++ b/debian/patches/features/all/rt/ipc-mqueue-add-a-critical-section-to-avoid-a-deadlock.patch @@ -1,7 +1,7 @@ Subject: ipc/mqueue: Add a critical section to avoid a deadlock From: KOBAYASHI Yoshitake Date: Sat, 23 Jul 2011 11:57:36 +0900 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz (Repost for v3.0-rt1 and changed the distination addreses) I have tested the following patch on v3.0-rt1 with PREEMPT_RT_FULL. @@ -35,10 +35,8 @@ Signed-off-by: Thomas Gleixner ipc/mqueue.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) -Index: linux-stable/ipc/mqueue.c -=================================================================== ---- linux-stable.orig/ipc/mqueue.c -+++ linux-stable/ipc/mqueue.c +--- a/ipc/mqueue.c ++++ b/ipc/mqueue.c @@ -945,13 +945,18 @@ static inline void pipelined_receive(str wake_up_interruptible(&info->wait_q); return; diff --git a/debian/patches/features/all/rt/ipc-sem-rework-semaphore-wakeups.patch b/debian/patches/features/all/rt/ipc-sem-rework-semaphore-wakeups.patch index 4258c2c56..9f4a95200 100644 --- a/debian/patches/features/all/rt/ipc-sem-rework-semaphore-wakeups.patch +++ b/debian/patches/features/all/rt/ipc-sem-rework-semaphore-wakeups.patch @@ -1,7 +1,7 @@ Subject: ipc/sem: Rework semaphore wakeups From: Peter Zijlstra Date: Wed, 14 Sep 2011 11:57:04 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Subject: ipc/sem: Rework semaphore wakeups From: Peter Zijlstra @@ -32,10 +32,8 @@ Signed-off-by: Thomas Gleixner ipc/sem.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) -Index: linux-stable/ipc/sem.c -=================================================================== ---- linux-stable.orig/ipc/sem.c -+++ linux-stable/ipc/sem.c +--- a/ipc/sem.c ++++ b/ipc/sem.c @@ -155,7 +155,7 @@ static int sysvipc_sem_proc_show(struct * sem_array.sem_pending{,last}, * sem_array.sem_undo: sem_lock() for read/write diff --git a/debian/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch b/debian/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch index cc90f6be4..4b56cc38e 100644 --- a/debian/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch +++ b/debian/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch @@ -1,7 +1,7 @@ Subject: genirq: Allow disabling of softirq processing in irq thread context From: Thomas Gleixner Date: Tue, 31 Jan 2012 13:01:27 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz 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 @@ -19,10 +19,8 @@ Cc: stable-rt@vger.kernel.org kernel/softirq.c | 7 +++++++ 5 files changed, 37 insertions(+), 2 deletions(-) -Index: linux-stable/include/linux/interrupt.h -=================================================================== ---- linux-stable.orig/include/linux/interrupt.h -+++ linux-stable/include/linux/interrupt.h +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h @@ -58,6 +58,7 @@ * IRQF_NO_THREAD - Interrupt cannot be threaded * IRQF_EARLY_RESUME - Resume IRQ early during syscore instead of at device @@ -39,10 +37,8 @@ Index: linux-stable/include/linux/interrupt.h #define IRQF_TIMER (__IRQF_TIMER | IRQF_NO_SUSPEND | IRQF_NO_THREAD) -Index: linux-stable/include/linux/irq.h -=================================================================== ---- linux-stable.orig/include/linux/irq.h -+++ linux-stable/include/linux/irq.h +--- a/include/linux/irq.h ++++ b/include/linux/irq.h @@ -70,6 +70,7 @@ typedef void (*irq_preflow_handler_t)(st * IRQ_MOVE_PCNTXT - Interrupt can be migrated from process context * IRQ_NESTED_TRHEAD - Interrupt nests into another thread @@ -67,10 +63,8 @@ Index: linux-stable/include/linux/irq.h #define IRQ_NO_BALANCING_MASK (IRQ_PER_CPU | IRQ_NO_BALANCING) -Index: linux-stable/kernel/irq/manage.c -=================================================================== ---- linux-stable.orig/kernel/irq/manage.c -+++ linux-stable/kernel/irq/manage.c +--- a/kernel/irq/manage.c ++++ b/kernel/irq/manage.c @@ -783,7 +783,15 @@ irq_forced_thread_fn(struct irq_desc *de local_bh_disable(); ret = action->thread_fn(action->irq, action->dev_id); @@ -98,10 +92,8 @@ Index: linux-stable/kernel/irq/manage.c /* Set default affinity mask once everything is setup */ setup_affinity(irq, desc, mask); -Index: linux-stable/kernel/irq/settings.h -=================================================================== ---- linux-stable.orig/kernel/irq/settings.h -+++ linux-stable/kernel/irq/settings.h +--- 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, @@ -135,10 +127,8 @@ Index: linux-stable/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-stable/kernel/softirq.c -=================================================================== ---- linux-stable.orig/kernel/softirq.c -+++ linux-stable/kernel/softirq.c +--- 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); diff --git a/debian/patches/features/all/rt/jump-label-rt.patch b/debian/patches/features/all/rt/jump-label-rt.patch index 6173bb6db..3695c7c0c 100644 --- a/debian/patches/features/all/rt/jump-label-rt.patch +++ b/debian/patches/features/all/rt/jump-label-rt.patch @@ -1,17 +1,15 @@ Subject: jump-label-rt.patch From: Thomas Gleixner Date: Wed, 13 Jul 2011 11:03:16 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- include/linux/jump_label.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -Index: linux-stable/include/linux/jump_label.h -=================================================================== ---- linux-stable.orig/include/linux/jump_label.h -+++ linux-stable/include/linux/jump_label.h +--- a/include/linux/jump_label.h ++++ b/include/linux/jump_label.h @@ -50,7 +50,8 @@ #include #include diff --git a/debian/patches/features/all/rt/kconfig-disable-a-few-options-rt.patch b/debian/patches/features/all/rt/kconfig-disable-a-few-options-rt.patch index f72f081e1..83906840c 100644 --- a/debian/patches/features/all/rt/kconfig-disable-a-few-options-rt.patch +++ b/debian/patches/features/all/rt/kconfig-disable-a-few-options-rt.patch @@ -1,7 +1,7 @@ Subject: kconfig-disable-a-few-options-rt.patch From: Thomas Gleixner Date: Sun, 24 Jul 2011 12:11:43 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Disable stuff which is known to have issues on RT @@ -12,10 +12,8 @@ Signed-off-by: Thomas Gleixner mm/Kconfig | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) -Index: linux-stable/arch/Kconfig -=================================================================== ---- linux-stable.orig/arch/Kconfig -+++ linux-stable/arch/Kconfig +--- a/arch/Kconfig ++++ b/arch/Kconfig @@ -6,6 +6,7 @@ config OPROFILE tristate "OProfile system profiling" depends on PROFILING @@ -24,10 +22,8 @@ Index: linux-stable/arch/Kconfig select RING_BUFFER select RING_BUFFER_ALLOW_SWAP help -Index: linux-stable/drivers/net/Kconfig -=================================================================== ---- linux-stable.orig/drivers/net/Kconfig -+++ linux-stable/drivers/net/Kconfig +--- a/drivers/net/Kconfig ++++ b/drivers/net/Kconfig @@ -164,6 +164,7 @@ config VXLAN config NETCONSOLE @@ -36,10 +32,8 @@ Index: linux-stable/drivers/net/Kconfig ---help--- If you want to log kernel messages over the network, enable this. See for details. -Index: linux-stable/mm/Kconfig -=================================================================== ---- linux-stable.orig/mm/Kconfig -+++ linux-stable/mm/Kconfig +--- a/mm/Kconfig ++++ b/mm/Kconfig @@ -384,7 +384,7 @@ config NOMMU_INITIAL_TRIM_EXCESS config TRANSPARENT_HUGEPAGE diff --git a/debian/patches/features/all/rt/kconfig-preempt-rt-full.patch b/debian/patches/features/all/rt/kconfig-preempt-rt-full.patch index 9192bde72..8e68919d9 100644 --- a/debian/patches/features/all/rt/kconfig-preempt-rt-full.patch +++ b/debian/patches/features/all/rt/kconfig-preempt-rt-full.patch @@ -1,7 +1,7 @@ Subject: kconfig-preempt-rt-full.patch From: Thomas Gleixner Date: Wed, 29 Jun 2011 14:58:57 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -10,22 +10,18 @@ Signed-off-by: Thomas Gleixner scripts/mkcompile_h | 4 +++- 3 files changed, 12 insertions(+), 2 deletions(-) -Index: linux-stable/init/Makefile -=================================================================== ---- linux-stable.orig/init/Makefile -+++ linux-stable/init/Makefile +--- a/init/Makefile ++++ b/init/Makefile @@ -33,4 +33,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-stable/kernel/Kconfig.preempt -=================================================================== ---- linux-stable.orig/kernel/Kconfig.preempt -+++ linux-stable/kernel/Kconfig.preempt +--- a/kernel/Kconfig.preempt ++++ b/kernel/Kconfig.preempt @@ -73,6 +73,14 @@ config PREEMPT_RTB - enables changes which are preliminary for the full preemptiple + enables changes which are preliminary for the full preemptible RT kernel. +config PREEMPT_RT_FULL @@ -39,10 +35,8 @@ Index: linux-stable/kernel/Kconfig.preempt endchoice config PREEMPT_COUNT -Index: linux-stable/scripts/mkcompile_h -=================================================================== ---- linux-stable.orig/scripts/mkcompile_h -+++ linux-stable/scripts/mkcompile_h +--- a/scripts/mkcompile_h ++++ b/scripts/mkcompile_h @@ -4,7 +4,8 @@ TARGET=$1 ARCH=$2 SMP=$3 diff --git a/debian/patches/features/all/rt/kernel-cpu-fix-cpu-down-problem-if-kthread-s-cpu-is-.patch b/debian/patches/features/all/rt/kernel-cpu-fix-cpu-down-problem-if-kthread-s-cpu-is-.patch index d9c607762..9eede15ac 100644 --- a/debian/patches/features/all/rt/kernel-cpu-fix-cpu-down-problem-if-kthread-s-cpu-is-.patch +++ b/debian/patches/features/all/rt/kernel-cpu-fix-cpu-down-problem-if-kthread-s-cpu-is-.patch @@ -3,7 +3,7 @@ From: Sebastian Andrzej Siewior Date: Fri, 7 Jun 2013 22:37:06 +0200 Subject: [PATCH] kernel/cpu: fix cpu down problem if kthread's cpu is going down -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz If kthread is pinned to CPUx and CPUx is going down then we get into trouble: @@ -27,10 +27,8 @@ Signed-off-by: Sebastian Andrzej Siewior kernel/cpu.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) -Index: linux-stable/kernel/cpu.c -=================================================================== ---- linux-stable.orig/kernel/cpu.c -+++ linux-stable/kernel/cpu.c +--- a/kernel/cpu.c ++++ b/kernel/cpu.c @@ -83,6 +83,7 @@ struct hotplug_pcp { int refcount; int grab_lock; diff --git a/debian/patches/features/all/rt/kernel-hotplug-restore-original-cpu-mask-oncpu-down.patch b/debian/patches/features/all/rt/kernel-hotplug-restore-original-cpu-mask-oncpu-down.patch index 86849fb65..82947e97c 100644 --- a/debian/patches/features/all/rt/kernel-hotplug-restore-original-cpu-mask-oncpu-down.patch +++ b/debian/patches/features/all/rt/kernel-hotplug-restore-original-cpu-mask-oncpu-down.patch @@ -2,7 +2,7 @@ From 4c6df3d78817c20a147c0291f6600d002c0910d3 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 14 Jun 2013 17:16:35 +0200 Subject: [PATCH] kernel/hotplug: restore original cpu mask oncpu/down -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz If a task which is allowed to run only on CPU X puts CPU Y down then it will be allowed on all CPUs but the on CPU Y after it comes back from @@ -15,10 +15,8 @@ Signed-off-by: Sebastian Andrzej Siewior kernel/cpu.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) -Index: linux-stable/kernel/cpu.c -=================================================================== ---- linux-stable.orig/kernel/cpu.c -+++ linux-stable/kernel/cpu.c +--- a/kernel/cpu.c ++++ b/kernel/cpu.c @@ -568,6 +568,7 @@ static int __ref _cpu_down(unsigned int .hcpu = hcpu, }; diff --git a/debian/patches/features/all/rt/kgb-serial-hackaround.patch b/debian/patches/features/all/rt/kgb-serial-hackaround.patch index ae221f4be..24303b8ed 100644 --- a/debian/patches/features/all/rt/kgb-serial-hackaround.patch +++ b/debian/patches/features/all/rt/kgb-serial-hackaround.patch @@ -1,7 +1,7 @@ From: Jason Wessel Date: Thu, 28 Jul 2011 12:42:23 -0500 Subject: kgdb/serial: Short term workaround -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz On 07/27/2011 04:37 PM, Thomas Gleixner wrote: > - KGDB (not yet disabled) is reportedly unusable on -rt right now due @@ -24,10 +24,8 @@ Jason. kernel/debug/kdb/kdb_io.c | 6 ++---- 3 files changed, 6 insertions(+), 6 deletions(-) -Index: linux-stable/drivers/tty/serial/8250/8250_core.c -=================================================================== ---- linux-stable.orig/drivers/tty/serial/8250/8250_core.c -+++ linux-stable/drivers/tty/serial/8250/8250_core.c +--- a/drivers/tty/serial/8250/8250_core.c ++++ b/drivers/tty/serial/8250/8250_core.c @@ -38,6 +38,7 @@ #include #include @@ -45,10 +43,8 @@ Index: linux-stable/drivers/tty/serial/8250/8250_core.c locked = spin_trylock_irqsave(&port->lock, flags); else spin_lock_irqsave(&port->lock, flags); -Index: linux-stable/include/linux/kdb.h -=================================================================== ---- linux-stable.orig/include/linux/kdb.h -+++ linux-stable/include/linux/kdb.h +--- a/include/linux/kdb.h ++++ b/include/linux/kdb.h @@ -115,7 +115,7 @@ extern int kdb_trap_printk; extern __printf(1, 0) int vkdb_printf(const char *fmt, va_list args); extern __printf(1, 2) int kdb_printf(const char *, ...); @@ -66,10 +62,8 @@ Index: linux-stable/include/linux/kdb.h static inline void kdb_init(int level) {} static inline int kdb_register(char *cmd, kdb_func_t func, char *usage, char *help, short minlen) { return 0; } -Index: linux-stable/kernel/debug/kdb/kdb_io.c -=================================================================== ---- linux-stable.orig/kernel/debug/kdb/kdb_io.c -+++ linux-stable/kernel/debug/kdb/kdb_io.c +--- a/kernel/debug/kdb/kdb_io.c ++++ b/kernel/debug/kdb/kdb_io.c @@ -554,7 +554,6 @@ int vkdb_printf(const char *fmt, va_list int linecount; int colcount; diff --git a/debian/patches/features/all/rt/latency-hist.patch b/debian/patches/features/all/rt/latency-hist.patch index 8167900de..b7c11bbc4 100644 --- a/debian/patches/features/all/rt/latency-hist.patch +++ b/debian/patches/features/all/rt/latency-hist.patch @@ -1,7 +1,7 @@ Subject: latency-hist.patch From: Carsten Emde Date: Tue, 19 Jul 2011 14:03:41 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz This patch provides a recording mechanism to store data of potential sources of system latencies. The recordings separately determine the @@ -26,10 +26,8 @@ Signed-off-by: Thomas Gleixner kernel/trace/trace_irqsoff.c | 11 10 files changed, 1612 insertions(+) -Index: linux-stable/Documentation/trace/histograms.txt -=================================================================== --- /dev/null -+++ linux-stable/Documentation/trace/histograms.txt ++++ b/Documentation/trace/histograms.txt @@ -0,0 +1,186 @@ + Using the Linux Kernel Latency Histograms + @@ -217,10 +215,8 @@ Index: linux-stable/Documentation/trace/histograms.txt +is provided. + +These data are also reset when the wakeup histogram is reset. -Index: linux-stable/include/linux/hrtimer.h -=================================================================== ---- linux-stable.orig/include/linux/hrtimer.h -+++ linux-stable/include/linux/hrtimer.h +--- a/include/linux/hrtimer.h ++++ b/include/linux/hrtimer.h @@ -111,6 +111,9 @@ struct hrtimer { enum hrtimer_restart (*function)(struct hrtimer *); struct hrtimer_clock_base *base; @@ -231,11 +227,9 @@ Index: linux-stable/include/linux/hrtimer.h #ifdef CONFIG_TIMER_STATS int start_pid; void *start_site; -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h -@@ -1406,6 +1406,12 @@ struct task_struct { +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -1409,6 +1409,12 @@ struct task_struct { unsigned long trace; /* bitmask and counter of trace recursion */ unsigned long trace_recursion; @@ -248,10 +242,8 @@ Index: linux-stable/include/linux/sched.h #endif /* CONFIG_TRACING */ #ifdef CONFIG_MEMCG /* memcg uses this to do batch job */ struct memcg_batch_info { -Index: linux-stable/include/trace/events/hist.h -=================================================================== --- /dev/null -+++ linux-stable/include/trace/events/hist.h ++++ b/include/trace/events/hist.h @@ -0,0 +1,69 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM hist @@ -322,10 +314,8 @@ Index: linux-stable/include/trace/events/hist.h + +/* This part must be outside protection */ +#include -Index: linux-stable/include/trace/events/latency_hist.h -=================================================================== --- /dev/null -+++ linux-stable/include/trace/events/latency_hist.h ++++ b/include/trace/events/latency_hist.h @@ -0,0 +1,29 @@ +#ifndef _LATENCY_HIST_H +#define _LATENCY_HIST_H @@ -356,10 +346,8 @@ Index: linux-stable/include/trace/events/latency_hist.h +} + +#endif /* _LATENCY_HIST_H */ -Index: linux-stable/kernel/hrtimer.c -=================================================================== ---- linux-stable.orig/kernel/hrtimer.c -+++ linux-stable/kernel/hrtimer.c +--- a/kernel/hrtimer.c ++++ b/kernel/hrtimer.c @@ -51,6 +51,7 @@ #include @@ -368,7 +356,7 @@ Index: linux-stable/kernel/hrtimer.c /* * The timer bases: -@@ -989,6 +990,17 @@ int __hrtimer_start_range_ns(struct hrti +@@ -994,6 +995,17 @@ int __hrtimer_start_range_ns(struct hrti #endif } @@ -386,7 +374,7 @@ Index: linux-stable/kernel/hrtimer.c hrtimer_set_expires_range_ns(timer, tim, delta_ns); timer_stats_hrtimer_set_start_info(timer); -@@ -1267,6 +1279,8 @@ static void __run_hrtimer(struct hrtimer +@@ -1272,6 +1284,8 @@ static void __run_hrtimer(struct hrtimer #ifdef CONFIG_HIGH_RES_TIMERS @@ -395,7 +383,7 @@ Index: linux-stable/kernel/hrtimer.c /* * High resolution timer interrupt * Called with interrupts disabled -@@ -1310,6 +1324,15 @@ retry: +@@ -1315,6 +1329,15 @@ retry: timer = container_of(node, struct hrtimer, node); @@ -411,10 +399,8 @@ Index: linux-stable/kernel/hrtimer.c /* * The immediate goal for using the softexpires is * minimizing wakeups, not running timers at the -Index: linux-stable/kernel/trace/Kconfig -=================================================================== ---- linux-stable.orig/kernel/trace/Kconfig -+++ linux-stable/kernel/trace/Kconfig +--- 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.) @@ -540,10 +526,8 @@ Index: linux-stable/kernel/trace/Kconfig config ENABLE_DEFAULT_TRACERS bool "Trace process context switches and events" depends on !GENERIC_TRACER -Index: linux-stable/kernel/trace/Makefile -=================================================================== ---- linux-stable.orig/kernel/trace/Makefile -+++ linux-stable/kernel/trace/Makefile +--- a/kernel/trace/Makefile ++++ b/kernel/trace/Makefile @@ -34,6 +34,10 @@ obj-$(CONFIG_FUNCTION_TRACER) += trace_f obj-$(CONFIG_IRQSOFF_TRACER) += trace_irqsoff.o obj-$(CONFIG_PREEMPT_TRACER) += trace_irqsoff.o @@ -555,10 +539,8 @@ Index: linux-stable/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-stable/kernel/trace/latency_hist.c -=================================================================== --- /dev/null -+++ linux-stable/kernel/trace/latency_hist.c ++++ b/kernel/trace/latency_hist.c @@ -0,0 +1,1177 @@ +/* + * kernel/trace/latency_hist.c @@ -1737,10 +1719,8 @@ Index: linux-stable/kernel/trace/latency_hist.c +} + +__initcall(latency_hist_init); -Index: linux-stable/kernel/trace/trace_irqsoff.c -=================================================================== ---- linux-stable.orig/kernel/trace/trace_irqsoff.c -+++ linux-stable/kernel/trace/trace_irqsoff.c +--- a/kernel/trace/trace_irqsoff.c ++++ b/kernel/trace/trace_irqsoff.c @@ -17,6 +17,7 @@ #include diff --git a/debian/patches/features/all/rt/lglocks-rt.patch b/debian/patches/features/all/rt/lglocks-rt.patch index 05f07bf5a..a8f324017 100644 --- a/debian/patches/features/all/rt/lglocks-rt.patch +++ b/debian/patches/features/all/rt/lglocks-rt.patch @@ -1,7 +1,7 @@ Subject: lglocks-rt.patch From: Thomas Gleixner Date: Wed, 15 Jun 2011 11:02:21 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -9,10 +9,8 @@ Signed-off-by: Thomas Gleixner kernel/lglock.c | 54 ++++++++++++++++++++++++++++++++----------------- 2 files changed, 53 insertions(+), 20 deletions(-) -Index: linux-stable/include/linux/lglock.h -=================================================================== ---- linux-stable.orig/include/linux/lglock.h -+++ linux-stable/include/linux/lglock.h +--- a/include/linux/lglock.h ++++ b/include/linux/lglock.h @@ -42,22 +42,37 @@ #endif @@ -53,10 +51,8 @@ Index: linux-stable/include/linux/lglock.h void lg_lock_init(struct lglock *lg, char *name); void lg_local_lock(struct lglock *lg); -Index: linux-stable/kernel/lglock.c -=================================================================== ---- linux-stable.orig/kernel/lglock.c -+++ linux-stable/kernel/lglock.c +--- a/kernel/lglock.c ++++ b/kernel/lglock.c @@ -4,6 +4,15 @@ #include #include diff --git a/debian/patches/features/all/rt/list-add-list-last-entry.patch b/debian/patches/features/all/rt/list-add-list-last-entry.patch index 1df058f09..cc5beb133 100644 --- a/debian/patches/features/all/rt/list-add-list-last-entry.patch +++ b/debian/patches/features/all/rt/list-add-list-last-entry.patch @@ -1,17 +1,15 @@ Subject: list-add-list-last-entry.patch From: Peter Zijlstra Date: Tue, 21 Jun 2011 11:22:36 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- include/linux/list.h | 11 +++++++++++ 1 file changed, 11 insertions(+) -Index: linux-stable/include/linux/list.h -=================================================================== ---- linux-stable.orig/include/linux/list.h -+++ linux-stable/include/linux/list.h +--- a/include/linux/list.h ++++ b/include/linux/list.h @@ -373,6 +373,17 @@ static inline void list_splice_tail_init (!list_empty(ptr) ? list_first_entry(ptr, type, member) : NULL) diff --git a/debian/patches/features/all/rt/list_bl.h-make-list-head-locking-RT-safe.patch b/debian/patches/features/all/rt/list_bl.h-make-list-head-locking-RT-safe.patch index 140509a71..430217ec3 100644 --- a/debian/patches/features/all/rt/list_bl.h-make-list-head-locking-RT-safe.patch +++ b/debian/patches/features/all/rt/list_bl.h-make-list-head-locking-RT-safe.patch @@ -1,7 +1,7 @@ From: Paul Gortmaker Date: Fri, 21 Jun 2013 15:07:25 -0400 Subject: [PATCH] list_bl.h: make list head locking RT safe -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz As per changes in include/linux/jbd_common.h for avoiding the bit_spin_locks on RT ("fs: jbd/jbd2: Make state lock and journal @@ -48,13 +48,11 @@ Cc: stable-rt@vger.kernel.org Signed-off-by: Paul Gortmaker Signed-off-by: Sebastian Andrzej Siewior --- - include/linux/list_bl.h | 24 ++++++++++++++++++++++-- - 1 file changed, 22 insertions(+), 2 deletions(-) + include/linux/list_bl.h | 28 ++++++++++++++++++++++++++-- + 1 file changed, 26 insertions(+), 2 deletions(-) -Index: linux-stable/include/linux/list_bl.h -=================================================================== ---- linux-stable.orig/include/linux/list_bl.h -+++ linux-stable/include/linux/list_bl.h +--- a/include/linux/list_bl.h ++++ b/include/linux/list_bl.h @@ -2,6 +2,7 @@ #define _LINUX_LIST_BL_H @@ -88,7 +86,7 @@ Index: linux-stable/include/linux/list_bl.h static inline void INIT_HLIST_BL_NODE(struct hlist_bl_node *h) { -@@ -117,12 +127,22 @@ static inline void hlist_bl_del_init(str +@@ -117,12 +127,26 @@ static inline void hlist_bl_del_init(str static inline void hlist_bl_lock(struct hlist_bl_head *b) { @@ -96,7 +94,9 @@ Index: linux-stable/include/linux/list_bl.h bit_spin_lock(0, (unsigned long *)b); +#else + raw_spin_lock(&b->lock); ++#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK) + __set_bit(0, (unsigned long *)b); ++#endif +#endif } @@ -105,7 +105,9 @@ Index: linux-stable/include/linux/list_bl.h +#ifndef CONFIG_PREEMPT_RT_BASE __bit_spin_unlock(0, (unsigned long *)b); +#else ++#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK) + __clear_bit(0, (unsigned long *)b); ++#endif + raw_spin_unlock(&b->lock); +#endif } diff --git a/debian/patches/features/all/rt/local-irq-rt-depending-variants.patch b/debian/patches/features/all/rt/local-irq-rt-depending-variants.patch index 9cd360e92..7d2bd6ab8 100644 --- a/debian/patches/features/all/rt/local-irq-rt-depending-variants.patch +++ b/debian/patches/features/all/rt/local-irq-rt-depending-variants.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Tue, 21 Jul 2009 22:34:14 +0200 Subject: rt: local_irq_* variants depending on RT/!RT -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Add local_irq_*_(no)rt variant which are mainly used to break interrupt disabled sections on PREEMPT_RT or to explicitely disable @@ -14,10 +14,8 @@ Signed-off-by: Thomas Gleixner include/linux/irqflags.h | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) -Index: linux-stable/include/linux/interrupt.h -=================================================================== ---- linux-stable.orig/include/linux/interrupt.h -+++ linux-stable/include/linux/interrupt.h +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h @@ -211,7 +211,7 @@ extern void devm_free_irq(struct device #ifdef CONFIG_LOCKDEP # define local_irq_enable_in_hardirq() do { } while (0) @@ -27,10 +25,8 @@ Index: linux-stable/include/linux/interrupt.h #endif extern void disable_irq_nosync(unsigned int irq); -Index: linux-stable/include/linux/irqflags.h -=================================================================== ---- linux-stable.orig/include/linux/irqflags.h -+++ linux-stable/include/linux/irqflags.h +--- a/include/linux/irqflags.h ++++ b/include/linux/irqflags.h @@ -147,4 +147,23 @@ #endif /* CONFIG_TRACE_IRQFLAGS_SUPPORT */ diff --git a/debian/patches/features/all/rt/local-var.patch b/debian/patches/features/all/rt/local-var.patch index 553054362..da853649d 100644 --- a/debian/patches/features/all/rt/local-var.patch +++ b/debian/patches/features/all/rt/local-var.patch @@ -1,17 +1,15 @@ Subject: local-var.patch From: Thomas Gleixner Date: Fri, 24 Jun 2011 18:40:37 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- include/linux/percpu.h | 5 +++++ 1 file changed, 5 insertions(+) -Index: linux-stable/include/linux/percpu.h -=================================================================== ---- linux-stable.orig/include/linux/percpu.h -+++ linux-stable/include/linux/percpu.h +--- a/include/linux/percpu.h ++++ b/include/linux/percpu.h @@ -48,6 +48,11 @@ preempt_enable(); \ } while (0) diff --git a/debian/patches/features/all/rt/local-vars-migrate-disable.patch b/debian/patches/features/all/rt/local-vars-migrate-disable.patch index e507b67ed..00fd43f0e 100644 --- a/debian/patches/features/all/rt/local-vars-migrate-disable.patch +++ b/debian/patches/features/all/rt/local-vars-migrate-disable.patch @@ -1,17 +1,15 @@ Subject: local-vars-migrate-disable.patch From: Thomas Gleixner Date: Tue, 28 Jun 2011 20:42:16 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- include/linux/percpu.h | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) -Index: linux-stable/include/linux/percpu.h -=================================================================== ---- linux-stable.orig/include/linux/percpu.h -+++ linux-stable/include/linux/percpu.h +--- a/include/linux/percpu.h ++++ b/include/linux/percpu.h @@ -48,10 +48,30 @@ preempt_enable(); \ } while (0) diff --git a/debian/patches/features/all/rt/localversion.patch b/debian/patches/features/all/rt/localversion.patch index cdbd566cd..4ca9a6267 100644 --- a/debian/patches/features/all/rt/localversion.patch +++ b/debian/patches/features/all/rt/localversion.patch @@ -1,7 +1,7 @@ Subject: localversion.patch From: Thomas Gleixner Date: Fri, 08 Jul 2011 20:25:16 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner Signed-off-by: Peter Zijlstra @@ -10,9 +10,7 @@ Link: http://lkml.kernel.org/n/tip-8vdw4bfcsds27cvox6rpb334@git.kernel.org localversion-rt | 1 + 1 file changed, 1 insertion(+) -Index: linux-stable/localversion-rt -=================================================================== --- /dev/null -+++ linux-stable/localversion-rt ++++ b/localversion-rt @@ -0,0 +1 @@ -+-rt1 ++-rt3 diff --git a/debian/patches/features/all/rt/lockdep-no-softirq-accounting-on-rt.patch b/debian/patches/features/all/rt/lockdep-no-softirq-accounting-on-rt.patch index 5cdc57a32..0b559d655 100644 --- a/debian/patches/features/all/rt/lockdep-no-softirq-accounting-on-rt.patch +++ b/debian/patches/features/all/rt/lockdep-no-softirq-accounting-on-rt.patch @@ -1,7 +1,7 @@ Subject: lockdep-rt.patch From: Thomas Gleixner Date: Sun, 17 Jul 2011 18:51:23 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -9,10 +9,8 @@ Signed-off-by: Thomas Gleixner kernel/lockdep.c | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) -Index: linux-stable/include/linux/irqflags.h -=================================================================== ---- linux-stable.orig/include/linux/irqflags.h -+++ linux-stable/include/linux/irqflags.h +--- 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) @@ -39,10 +37,8 @@ Index: linux-stable/include/linux/irqflags.h #endif #if defined(CONFIG_IRQSOFF_TRACER) || \ -Index: linux-stable/kernel/lockdep.c -=================================================================== ---- linux-stable.orig/kernel/lockdep.c -+++ linux-stable/kernel/lockdep.c +--- a/kernel/lockdep.c ++++ b/kernel/lockdep.c @@ -3541,6 +3541,7 @@ static void check_flags(unsigned long fl } } diff --git a/debian/patches/features/all/rt/lockdep-selftest-only-do-hardirq-context-test-for-raw-spinlock.patch b/debian/patches/features/all/rt/lockdep-selftest-only-do-hardirq-context-test-for-raw-spinlock.patch index b7d768edd..12fae2ab0 100644 --- a/debian/patches/features/all/rt/lockdep-selftest-only-do-hardirq-context-test-for-raw-spinlock.patch +++ b/debian/patches/features/all/rt/lockdep-selftest-only-do-hardirq-context-test-for-raw-spinlock.patch @@ -1,7 +1,7 @@ Subject: lockdep: Selftest: Only do hardirq context test for raw spinlock From: Yong Zhang Date: Mon, 16 Apr 2012 15:01:56 +0800 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz From: Yong Zhang @@ -16,10 +16,8 @@ Signed-off-by: Thomas Gleixner lib/locking-selftest.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) -Index: linux-stable/lib/locking-selftest.c -=================================================================== ---- linux-stable.orig/lib/locking-selftest.c -+++ linux-stable/lib/locking-selftest.c +--- a/lib/locking-selftest.c ++++ b/lib/locking-selftest.c @@ -1175,6 +1175,7 @@ void locking_selftest(void) printk(" --------------------------------------------------------------------------\n"); diff --git a/debian/patches/features/all/rt/md-raid5-percpu-handling-rt-aware.patch b/debian/patches/features/all/rt/md-raid5-percpu-handling-rt-aware.patch index 8b8a08137..7aa5116cd 100644 --- a/debian/patches/features/all/rt/md-raid5-percpu-handling-rt-aware.patch +++ b/debian/patches/features/all/rt/md-raid5-percpu-handling-rt-aware.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Tue, 6 Apr 2010 16:51:31 +0200 Subject: md: raid5: Make raid5_percpu handling RT aware -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz __raid_run_ops() disables preemption with get_cpu() around the access to the raid5_percpu variables. That causes scheduling while atomic @@ -19,10 +19,8 @@ Tested-by: Udo van den Heuvel drivers/md/raid5.h | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) -Index: linux-stable/drivers/md/raid5.c -=================================================================== ---- linux-stable.orig/drivers/md/raid5.c -+++ linux-stable/drivers/md/raid5.c +--- a/drivers/md/raid5.c ++++ b/drivers/md/raid5.c @@ -1418,8 +1418,9 @@ static void raid_run_ops(struct stripe_h struct raid5_percpu *percpu; unsigned long cpu; @@ -53,7 +51,7 @@ Index: linux-stable/drivers/md/raid5.c static void raid5_build_block(struct stripe_head *sh, int i, int previous) { struct r5dev *dev = &sh->dev[i]; -@@ -4315,7 +4317,7 @@ static void make_request(struct mddev *m +@@ -4320,7 +4322,7 @@ static void make_request(struct mddev *m previous, &dd_idx, NULL); pr_debug("raid456: make_request, sector %llu logical %llu\n", @@ -62,7 +60,7 @@ Index: linux-stable/drivers/md/raid5.c (unsigned long long)logical_sector); sh = get_active_stripe(conf, new_sector, previous, -@@ -5111,6 +5113,7 @@ static int raid5_alloc_percpu(struct r5c +@@ -5116,6 +5118,7 @@ static int raid5_alloc_percpu(struct r5c break; } per_cpu_ptr(conf->percpu, cpu)->scribble = scribble; @@ -70,7 +68,7 @@ Index: linux-stable/drivers/md/raid5.c } #ifdef CONFIG_HOTPLUG_CPU conf->cpu_notify.notifier_call = raid456_cpu_notify; -@@ -5285,7 +5288,7 @@ static int only_parity(int raid_disk, in +@@ -5290,7 +5293,7 @@ static int only_parity(int raid_disk, in return 1; break; case ALGORITHM_PARITY_0_6: @@ -79,11 +77,9 @@ Index: linux-stable/drivers/md/raid5.c raid_disk == raid_disks - 1) return 1; break; -Index: linux-stable/drivers/md/raid5.h -=================================================================== ---- linux-stable.orig/drivers/md/raid5.h -+++ linux-stable/drivers/md/raid5.h -@@ -425,6 +425,7 @@ struct r5conf { +--- a/drivers/md/raid5.h ++++ b/drivers/md/raid5.h +@@ -426,6 +426,7 @@ struct r5conf { int recovery_disabled; /* per cpu variables */ struct raid5_percpu { diff --git a/debian/patches/features/all/rt/might-sleep-check-for-idle.patch b/debian/patches/features/all/rt/might-sleep-check-for-idle.patch index 5ee0c7645..761601c4f 100644 --- a/debian/patches/features/all/rt/might-sleep-check-for-idle.patch +++ b/debian/patches/features/all/rt/might-sleep-check-for-idle.patch @@ -1,7 +1,7 @@ Subject: sched: Check for idle task in might_sleep() From: Thomas Gleixner Date: Wed, 09 Jan 2013 23:34:08 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Idle is not allowed to call sleeping functions ever! @@ -10,11 +10,9 @@ Signed-off-by: Thomas Gleixner kernel/sched/core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -7481,7 +7481,8 @@ void __might_sleep(const char *file, int +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -7099,7 +7099,8 @@ void __might_sleep(const char *file, int static unsigned long prev_jiffy; /* ratelimiting */ rcu_sleep_check(); /* WARN_ON_ONCE() by default, no rate limit reqd. */ diff --git a/debian/patches/features/all/rt/migrate-disable-rt-variant.patch b/debian/patches/features/all/rt/migrate-disable-rt-variant.patch index 9d0d0bb60..e8bb37b80 100644 --- a/debian/patches/features/all/rt/migrate-disable-rt-variant.patch +++ b/debian/patches/features/all/rt/migrate-disable-rt-variant.patch @@ -1,17 +1,15 @@ Subject: migrate-disable-rt-variant.patch From: Thomas Gleixner Date: Sun, 17 Jul 2011 19:48:20 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- include/linux/preempt.h | 4 ++++ 1 file changed, 4 insertions(+) -Index: linux-stable/include/linux/preempt.h -=================================================================== ---- linux-stable.orig/include/linux/preempt.h -+++ linux-stable/include/linux/preempt.h +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h @@ -143,11 +143,15 @@ extern void migrate_enable(void); # define preempt_enable_rt() preempt_enable() # define preempt_disable_nort() barrier() diff --git a/debian/patches/features/all/rt/mips-disable-highmem-on-rt.patch b/debian/patches/features/all/rt/mips-disable-highmem-on-rt.patch index ddb583a6d..15589dd36 100644 --- a/debian/patches/features/all/rt/mips-disable-highmem-on-rt.patch +++ b/debian/patches/features/all/rt/mips-disable-highmem-on-rt.patch @@ -1,17 +1,15 @@ Subject: mips-disable-highmem-on-rt.patch From: Thomas Gleixner Date: Mon, 18 Jul 2011 17:10:12 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- arch/mips/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/arch/mips/Kconfig -=================================================================== ---- linux-stable.orig/arch/mips/Kconfig -+++ linux-stable/arch/mips/Kconfig +--- a/arch/mips/Kconfig ++++ b/arch/mips/Kconfig @@ -2114,7 +2114,7 @@ config CPU_R4400_WORKAROUNDS # config HIGHMEM diff --git a/debian/patches/features/all/rt/mips-enable-interrupts-in-signal.patch b/debian/patches/features/all/rt/mips-enable-interrupts-in-signal.patch index 74fabaa2c..834e6559e 100644 --- a/debian/patches/features/all/rt/mips-enable-interrupts-in-signal.patch +++ b/debian/patches/features/all/rt/mips-enable-interrupts-in-signal.patch @@ -1,17 +1,15 @@ Subject: mips-enable-interrupts-in-signal.patch From: Thomas Gleixner Date: Mon, 18 Jul 2011 21:32:10 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- arch/mips/kernel/signal.c | 1 + 1 file changed, 1 insertion(+) -Index: linux-stable/arch/mips/kernel/signal.c -=================================================================== ---- linux-stable.orig/arch/mips/kernel/signal.c -+++ linux-stable/arch/mips/kernel/signal.c +--- a/arch/mips/kernel/signal.c ++++ b/arch/mips/kernel/signal.c @@ -572,6 +572,7 @@ asmlinkage void do_notify_resume(struct __u32 thread_info_flags) { diff --git a/debian/patches/features/all/rt/mm-allow-slab-rt.patch b/debian/patches/features/all/rt/mm-allow-slab-rt.patch index 25eddad10..da86f49b7 100644 --- a/debian/patches/features/all/rt/mm-allow-slab-rt.patch +++ b/debian/patches/features/all/rt/mm-allow-slab-rt.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:44:03 -0500 Subject: mm: Allow only slab on RT -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner @@ -10,10 +10,8 @@ Signed-off-by: Thomas Gleixner init/Kconfig | 2 ++ 1 file changed, 2 insertions(+) -Index: linux-stable/init/Kconfig -=================================================================== ---- linux-stable.orig/init/Kconfig -+++ linux-stable/init/Kconfig +--- a/init/Kconfig ++++ b/init/Kconfig @@ -1541,6 +1541,7 @@ config SLAB config SLUB diff --git a/debian/patches/features/all/rt/mm-bounce-local-irq-save-nort.patch b/debian/patches/features/all/rt/mm-bounce-local-irq-save-nort.patch index 0bbb3a629..efec0978e 100644 --- a/debian/patches/features/all/rt/mm-bounce-local-irq-save-nort.patch +++ b/debian/patches/features/all/rt/mm-bounce-local-irq-save-nort.patch @@ -1,7 +1,7 @@ Subject: mm: bounce: Use local_irq_save_nort From: Thomas Gleixner Date: Wed, 09 Jan 2013 10:33:09 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz kmap_atomic() is preemptible on RT. @@ -10,10 +10,8 @@ Signed-off-by: Thomas Gleixner mm/bounce.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-stable/mm/bounce.c -=================================================================== ---- linux-stable.orig/mm/bounce.c -+++ linux-stable/mm/bounce.c +--- a/mm/bounce.c ++++ b/mm/bounce.c @@ -51,11 +51,11 @@ static void bounce_copy_vec(struct bio_v unsigned long flags; unsigned char *vto; diff --git a/debian/patches/features/all/rt/mm-cgroup-page-bit-spinlock.patch b/debian/patches/features/all/rt/mm-cgroup-page-bit-spinlock.patch index ba9c136fc..0daffe286 100644 --- a/debian/patches/features/all/rt/mm-cgroup-page-bit-spinlock.patch +++ b/debian/patches/features/all/rt/mm-cgroup-page-bit-spinlock.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Wed, 19 Aug 2009 09:56:42 +0200 Subject: mm: Replace cgroup_page bit spinlock -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Bit spinlocks are not working on RT. Replace them. @@ -12,10 +12,8 @@ Signed-off-by: Thomas Gleixner mm/page_cgroup.c | 11 +++++++++++ 2 files changed, 26 insertions(+) -Index: linux-stable/include/linux/page_cgroup.h -=================================================================== ---- linux-stable.orig/include/linux/page_cgroup.h -+++ linux-stable/include/linux/page_cgroup.h +--- a/include/linux/page_cgroup.h ++++ b/include/linux/page_cgroup.h @@ -24,6 +24,9 @@ enum { */ struct page_cgroup { @@ -58,10 +56,8 @@ Index: linux-stable/include/linux/page_cgroup.h #endif /* CONFIG_MEMCG */ #include -Index: linux-stable/mm/page_cgroup.c -=================================================================== ---- linux-stable.orig/mm/page_cgroup.c -+++ linux-stable/mm/page_cgroup.c +--- a/mm/page_cgroup.c ++++ b/mm/page_cgroup.c @@ -13,6 +13,14 @@ static unsigned long total_usage; diff --git a/debian/patches/features/all/rt/mm-convert-swap-to-percpu-locked.patch b/debian/patches/features/all/rt/mm-convert-swap-to-percpu-locked.patch index cb5b53c12..a63647b1f 100644 --- a/debian/patches/features/all/rt/mm-convert-swap-to-percpu-locked.patch +++ b/debian/patches/features/all/rt/mm-convert-swap-to-percpu-locked.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:51 -0500 Subject: mm: convert swap to percpu locked -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner @@ -10,10 +10,8 @@ Signed-off-by: Thomas Gleixner mm/swap.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) -Index: linux-stable/mm/swap.c -=================================================================== ---- linux-stable.orig/mm/swap.c -+++ linux-stable/mm/swap.c +--- a/mm/swap.c ++++ b/mm/swap.c @@ -31,6 +31,7 @@ #include #include diff --git a/debian/patches/features/all/rt/mm-disable-slab-on-rt.patch b/debian/patches/features/all/rt/mm-disable-slab-on-rt.patch index 56ed1e7e6..29b292478 100644 --- a/debian/patches/features/all/rt/mm-disable-slab-on-rt.patch +++ b/debian/patches/features/all/rt/mm-disable-slab-on-rt.patch @@ -1,15 +1,16 @@ -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +From: Thomas Gleixner +Date: Mon, 12 Aug 2013 09:16:09 +0200 +Subject: mm: disable slab on rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz --- init/Kconfig | 1 + mm/slab.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) -Index: linux-stable/init/Kconfig -=================================================================== ---- linux-stable.orig/init/Kconfig -+++ linux-stable/init/Kconfig -@@ -1535,6 +1535,7 @@ choice +--- a/init/Kconfig ++++ b/init/Kconfig +@@ -1534,6 +1534,7 @@ choice config SLAB bool "SLAB" @@ -17,10 +18,8 @@ Index: linux-stable/init/Kconfig help The regular slab allocator that is established and known to work well in all environments. It organizes cache hot objects in -Index: linux-stable/mm/slab.h -=================================================================== ---- linux-stable.orig/mm/slab.h -+++ linux-stable/mm/slab.h +--- a/mm/slab.h ++++ b/mm/slab.h @@ -245,7 +245,7 @@ static inline struct kmem_cache *cache_f * The slab lists for all objects. */ diff --git a/debian/patches/features/all/rt/mm-enable-slub.patch b/debian/patches/features/all/rt/mm-enable-slub.patch index 84f0a7357..cc849c2aa 100644 --- a/debian/patches/features/all/rt/mm-enable-slub.patch +++ b/debian/patches/features/all/rt/mm-enable-slub.patch @@ -1,7 +1,7 @@ Subject: mm: Enable SLUB for RT From: Thomas Gleixner Date: Thu, 25 Oct 2012 10:32:35 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Make SLUB RT aware and remove the restriction in Kconfig. @@ -11,11 +11,9 @@ Signed-off-by: Thomas Gleixner mm/slub.c | 119 +++++++++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 91 insertions(+), 29 deletions(-) -Index: linux-stable/init/Kconfig -=================================================================== ---- linux-stable.orig/init/Kconfig -+++ linux-stable/init/Kconfig -@@ -1542,7 +1542,6 @@ config SLAB +--- a/init/Kconfig ++++ b/init/Kconfig +@@ -1541,7 +1541,6 @@ config SLAB config SLUB bool "SLUB (Unqueued Allocator)" @@ -23,10 +21,8 @@ Index: linux-stable/init/Kconfig help SLUB is a slab allocator that minimizes cache line usage instead of managing queues of cached objects (SLAB approach). -Index: linux-stable/mm/slub.c -=================================================================== ---- linux-stable.orig/mm/slub.c -+++ linux-stable/mm/slub.c +--- a/mm/slub.c ++++ b/mm/slub.c @@ -1071,7 +1071,7 @@ static noinline struct kmem_cache_node * { struct kmem_cache_node *n = get_node(s, page_to_nid(page)); diff --git a/debian/patches/features/all/rt/mm-make-vmstat-rt-aware.patch b/debian/patches/features/all/rt/mm-make-vmstat-rt-aware.patch index 92ec4d1d3..5ed6177a8 100644 --- a/debian/patches/features/all/rt/mm-make-vmstat-rt-aware.patch +++ b/debian/patches/features/all/rt/mm-make-vmstat-rt-aware.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:13 -0500 Subject: [PATCH] mm: make vmstat -rt aware -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner @@ -11,10 +11,8 @@ Signed-off-by: Thomas Gleixner mm/vmstat.c | 6 ++++++ 2 files changed, 10 insertions(+) -Index: linux-stable/include/linux/vmstat.h -=================================================================== ---- linux-stable.orig/include/linux/vmstat.h -+++ linux-stable/include/linux/vmstat.h +--- a/include/linux/vmstat.h ++++ b/include/linux/vmstat.h @@ -29,7 +29,9 @@ DECLARE_PER_CPU(struct vm_event_state, v static inline void __count_vm_event(enum vm_event_item item) @@ -35,10 +33,8 @@ Index: linux-stable/include/linux/vmstat.h } static inline void count_vm_events(enum vm_event_item item, long delta) -Index: linux-stable/mm/vmstat.c -=================================================================== ---- linux-stable.orig/mm/vmstat.c -+++ linux-stable/mm/vmstat.c +--- a/mm/vmstat.c ++++ b/mm/vmstat.c @@ -214,6 +214,7 @@ void __mod_zone_page_state(struct zone * long x; long t; diff --git a/debian/patches/features/all/rt/mm-page-alloc-fix.patch b/debian/patches/features/all/rt/mm-page-alloc-fix.patch index 4502a9d20..bce33d290 100644 --- a/debian/patches/features/all/rt/mm-page-alloc-fix.patch +++ b/debian/patches/features/all/rt/mm-page-alloc-fix.patch @@ -1,17 +1,15 @@ Subject: mm-page-alloc-fix.patch From: Thomas Gleixner Date: Thu, 21 Jul 2011 16:47:49 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- mm/page_alloc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-stable/mm/page_alloc.c -=================================================================== ---- linux-stable.orig/mm/page_alloc.c -+++ linux-stable/mm/page_alloc.c +--- a/mm/page_alloc.c ++++ b/mm/page_alloc.c @@ -2240,8 +2240,8 @@ __alloc_pages_direct_compact(gfp_t gfp_m struct page *page; diff --git a/debian/patches/features/all/rt/mm-page-alloc-use-list-last-entry.patch b/debian/patches/features/all/rt/mm-page-alloc-use-list-last-entry.patch index 9e0f872c4..b54212cbc 100644 --- a/debian/patches/features/all/rt/mm-page-alloc-use-list-last-entry.patch +++ b/debian/patches/features/all/rt/mm-page-alloc-use-list-last-entry.patch @@ -1,17 +1,15 @@ Subject: mm-page-alloc-use-list-last-entry.patch From: Peter Zijlstra Date: Tue, 21 Jun 2011 11:24:35 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- mm/page_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/mm/page_alloc.c -=================================================================== ---- linux-stable.orig/mm/page_alloc.c -+++ linux-stable/mm/page_alloc.c +--- a/mm/page_alloc.c ++++ b/mm/page_alloc.c @@ -667,7 +667,7 @@ static void free_pcppages_bulk(struct zo do { int mt; /* migratetype of the to-be-freed page */ diff --git a/debian/patches/features/all/rt/mm-page-alloc-use-local-lock-on-target-cpu.patch b/debian/patches/features/all/rt/mm-page-alloc-use-local-lock-on-target-cpu.patch index 720cea8a7..4c4c6bff6 100644 --- a/debian/patches/features/all/rt/mm-page-alloc-use-local-lock-on-target-cpu.patch +++ b/debian/patches/features/all/rt/mm-page-alloc-use-local-lock-on-target-cpu.patch @@ -1,7 +1,7 @@ Subject: mm: page_alloc: Use local_lock_on() instead of plain spinlock From: Thomas Gleixner Date: Thu, 27 Sep 2012 11:11:46 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz The plain spinlock while sufficient does not update the local_lock internals. Use a proper local_lock function instead to ease debugging. @@ -12,10 +12,8 @@ Cc: stable-rt@vger.kernel.org mm/page_alloc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-stable/mm/page_alloc.c -=================================================================== ---- linux-stable.orig/mm/page_alloc.c -+++ linux-stable/mm/page_alloc.c +--- a/mm/page_alloc.c ++++ b/mm/page_alloc.c @@ -226,9 +226,9 @@ static DEFINE_LOCAL_IRQ_LOCK(pa_lock); #ifdef CONFIG_PREEMPT_RT_BASE diff --git a/debian/patches/features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch b/debian/patches/features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch index 1717e2794..817e0a2a3 100644 --- a/debian/patches/features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch +++ b/debian/patches/features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch @@ -1,7 +1,7 @@ From: Peter Zijlstra Date: Fri, 3 Jul 2009 08:44:37 -0500 Subject: mm: page_alloc reduce lock sections further -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz 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. @@ -12,10 +12,8 @@ Signed-off-by: Thomas Gleixner mm/page_alloc.c | 98 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 69 insertions(+), 29 deletions(-) -Index: linux-stable/mm/page_alloc.c -=================================================================== ---- linux-stable.orig/mm/page_alloc.c -+++ linux-stable/mm/page_alloc.c +--- a/mm/page_alloc.c ++++ b/mm/page_alloc.c @@ -634,7 +634,7 @@ static inline int free_pages_check(struc } diff --git a/debian/patches/features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch b/debian/patches/features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch index 825343cee..c877f17c2 100644 --- a/debian/patches/features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch +++ b/debian/patches/features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:37 -0500 Subject: mm: page_alloc: rt-friendly per-cpu pages -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz rt-friendly per-cpu pages: convert the irqs-off per-cpu locking method into a preemptible, explicit-per-cpu-locks method. @@ -17,10 +17,8 @@ Signed-off-by: Thomas Gleixner mm/page_alloc.c | 61 +++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 20 deletions(-) -Index: linux-stable/mm/page_alloc.c -=================================================================== ---- linux-stable.orig/mm/page_alloc.c -+++ linux-stable/mm/page_alloc.c +--- a/mm/page_alloc.c ++++ b/mm/page_alloc.c @@ -60,6 +60,7 @@ #include #include diff --git a/debian/patches/features/all/rt/mm-prepare-pf-disable-discoupling.patch b/debian/patches/features/all/rt/mm-prepare-pf-disable-discoupling.patch index 67653ab59..92c4e4dad 100644 --- a/debian/patches/features/all/rt/mm-prepare-pf-disable-discoupling.patch +++ b/debian/patches/features/all/rt/mm-prepare-pf-disable-discoupling.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:37 -0500 Subject: mm: Prepare decoupling the page fault disabling logic -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Add a pagefault_disabled variable to task_struct to allow decoupling the pagefault-disabled logic from the preempt count. @@ -16,10 +16,8 @@ Signed-off-by: Thomas Gleixner mm/memory.c | 29 +++++++++++++++++++++++++++++ 4 files changed, 34 insertions(+), 30 deletions(-) -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1260,6 +1260,7 @@ struct task_struct { /* mutex deadlock detection */ struct mutex_waiter *blocked_on; @@ -28,10 +26,8 @@ Index: linux-stable/include/linux/sched.h #ifdef CONFIG_TRACE_IRQFLAGS unsigned int irq_events; unsigned long hardirq_enable_ip; -Index: linux-stable/include/linux/uaccess.h -=================================================================== ---- linux-stable.orig/include/linux/uaccess.h -+++ linux-stable/include/linux/uaccess.h +--- a/include/linux/uaccess.h ++++ b/include/linux/uaccess.h @@ -6,37 +6,10 @@ /* @@ -73,10 +69,8 @@ Index: linux-stable/include/linux/uaccess.h #ifndef ARCH_HAS_NOCACHE_UACCESS -Index: linux-stable/kernel/fork.c -=================================================================== ---- linux-stable.orig/kernel/fork.c -+++ linux-stable/kernel/fork.c +--- a/kernel/fork.c ++++ b/kernel/fork.c @@ -1293,6 +1293,7 @@ static struct task_struct *copy_process( p->hardirq_context = 0; p->softirq_context = 0; @@ -85,11 +79,9 @@ Index: linux-stable/kernel/fork.c #ifdef CONFIG_LOCKDEP p->lockdep_depth = 0; /* no locks held yet */ p->curr_chain_key = 0; -Index: linux-stable/mm/memory.c -=================================================================== ---- linux-stable.orig/mm/memory.c -+++ linux-stable/mm/memory.c -@@ -3748,6 +3748,35 @@ unlock: +--- a/mm/memory.c ++++ b/mm/memory.c +@@ -3751,6 +3751,35 @@ unlock: return 0; } diff --git a/debian/patches/features/all/rt/mm-protect-activate-switch-mm.patch b/debian/patches/features/all/rt/mm-protect-activate-switch-mm.patch index 76abd9d11..59be2be41 100644 --- a/debian/patches/features/all/rt/mm-protect-activate-switch-mm.patch +++ b/debian/patches/features/all/rt/mm-protect-activate-switch-mm.patch @@ -1,7 +1,7 @@ Subject: mm: Protect activate_mm() by preempt_[disable&enable]_rt() From: Yong Zhang Date: Tue, 15 May 2012 13:53:56 +0800 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz User preempt_*_rt instead of local_irq_*_rt or otherwise there will be warning on ARM like below: @@ -35,10 +35,8 @@ Signed-off-by: Thomas Gleixner mm/mmu_context.c | 2 ++ 2 files changed, 4 insertions(+) -Index: linux-stable/fs/exec.c -=================================================================== ---- linux-stable.orig/fs/exec.c -+++ linux-stable/fs/exec.c +--- a/fs/exec.c ++++ b/fs/exec.c @@ -836,10 +836,12 @@ static int exec_mmap(struct mm_struct *m } } @@ -52,10 +50,8 @@ Index: linux-stable/fs/exec.c task_unlock(tsk); arch_pick_mmap_layout(mm); if (old_mm) { -Index: linux-stable/mm/mmu_context.c -=================================================================== ---- linux-stable.orig/mm/mmu_context.c -+++ linux-stable/mm/mmu_context.c +--- a/mm/mmu_context.c ++++ b/mm/mmu_context.c @@ -23,6 +23,7 @@ void use_mm(struct mm_struct *mm) struct task_struct *tsk = current; diff --git a/debian/patches/features/all/rt/mm-remove-preempt-count-from-pf.patch b/debian/patches/features/all/rt/mm-remove-preempt-count-from-pf.patch index b57ad3c56..55ea5b34d 100644 --- a/debian/patches/features/all/rt/mm-remove-preempt-count-from-pf.patch +++ b/debian/patches/features/all/rt/mm-remove-preempt-count-from-pf.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Sat, 25 Jul 2009 22:06:27 +0200 Subject: mm: Remove preempt count from pagefault disable/enable -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Now that all users are cleaned up, we can remove the preemption count. @@ -10,11 +10,9 @@ Signed-off-by: Thomas Gleixner mm/memory.c | 7 ------- 1 file changed, 7 deletions(-) -Index: linux-stable/mm/memory.c -=================================================================== ---- linux-stable.orig/mm/memory.c -+++ linux-stable/mm/memory.c -@@ -3751,7 +3751,6 @@ unlock: +--- a/mm/memory.c ++++ b/mm/memory.c +@@ -3754,7 +3754,6 @@ unlock: #ifdef CONFIG_PREEMPT_RT_FULL void pagefault_disable(void) { @@ -22,7 +20,7 @@ Index: linux-stable/mm/memory.c current->pagefault_disabled++; /* * make sure to have issued the store before a pagefault -@@ -3769,12 +3768,6 @@ void pagefault_enable(void) +@@ -3772,12 +3771,6 @@ void pagefault_enable(void) */ barrier(); current->pagefault_disabled--; diff --git a/debian/patches/features/all/rt/mm-rt-kmap-atomic-scheduling.patch b/debian/patches/features/all/rt/mm-rt-kmap-atomic-scheduling.patch index 9e95e4bdb..1425f9d4a 100644 --- a/debian/patches/features/all/rt/mm-rt-kmap-atomic-scheduling.patch +++ b/debian/patches/features/all/rt/mm-rt-kmap-atomic-scheduling.patch @@ -1,7 +1,7 @@ Subject: mm, rt: kmap_atomic scheduling From: Peter Zijlstra Date: Thu, 28 Jul 2011 10:43:51 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz In fact, with migrate_disable() existing one could play games with kmap_atomic. You could save/restore the kmap_atomic slots on context @@ -29,10 +29,8 @@ Link: http://lkml.kernel.org/r/1311842631.5890.208.camel@twins mm/memory.c | 2 ++ 7 files changed, 84 insertions(+), 8 deletions(-) -Index: linux-stable/arch/x86/kernel/process_32.c -=================================================================== ---- linux-stable.orig/arch/x86/kernel/process_32.c -+++ linux-stable/arch/x86/kernel/process_32.c +--- a/arch/x86/kernel/process_32.c ++++ b/arch/x86/kernel/process_32.c @@ -36,6 +36,7 @@ #include #include @@ -86,10 +84,8 @@ Index: linux-stable/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-stable/arch/x86/mm/highmem_32.c -=================================================================== ---- linux-stable.orig/arch/x86/mm/highmem_32.c -+++ linux-stable/arch/x86/mm/highmem_32.c +--- a/arch/x86/mm/highmem_32.c ++++ b/arch/x86/mm/highmem_32.c @@ -31,6 +31,7 @@ EXPORT_SYMBOL(kunmap); */ void *kmap_atomic_prot(struct page *page, pgprot_t prot) @@ -120,10 +116,8 @@ Index: linux-stable/arch/x86/mm/highmem_32.c kpte_clear_flush(kmap_pte-idx, vaddr); kmap_atomic_idx_pop(); arch_flush_lazy_mmu_mode(); -Index: linux-stable/arch/x86/mm/iomap_32.c -=================================================================== ---- linux-stable.orig/arch/x86/mm/iomap_32.c -+++ linux-stable/arch/x86/mm/iomap_32.c +--- a/arch/x86/mm/iomap_32.c ++++ b/arch/x86/mm/iomap_32.c @@ -56,6 +56,7 @@ EXPORT_SYMBOL_GPL(iomap_free); void *kmap_atomic_prot_pfn(unsigned long pfn, pgprot_t prot) @@ -154,10 +148,8 @@ Index: linux-stable/arch/x86/mm/iomap_32.c kpte_clear_flush(kmap_pte-idx, vaddr); kmap_atomic_idx_pop(); } -Index: linux-stable/include/linux/highmem.h -=================================================================== ---- linux-stable.orig/include/linux/highmem.h -+++ linux-stable/include/linux/highmem.h +--- a/include/linux/highmem.h ++++ b/include/linux/highmem.h @@ -85,32 +85,51 @@ static inline void __kunmap_atomic(void #if defined(CONFIG_HIGHMEM) || defined(CONFIG_X86_32) @@ -214,10 +206,8 @@ Index: linux-stable/include/linux/highmem.h #endif } -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -23,6 +23,7 @@ struct sched_param { #include #include @@ -226,7 +216,7 @@ Index: linux-stable/include/linux/sched.h #include #include #include -@@ -1446,6 +1447,12 @@ struct task_struct { +@@ -1449,6 +1450,12 @@ struct task_struct { struct rcu_head put_rcu; int softirq_nestcnt; #endif @@ -239,10 +229,8 @@ Index: linux-stable/include/linux/sched.h }; #ifdef CONFIG_NUMA_BALANCING -Index: linux-stable/mm/highmem.c -=================================================================== ---- linux-stable.orig/mm/highmem.c -+++ linux-stable/mm/highmem.c +--- a/mm/highmem.c ++++ b/mm/highmem.c @@ -29,10 +29,11 @@ #include #include @@ -267,11 +255,9 @@ Index: linux-stable/mm/highmem.c unsigned int nr_free_highpages (void) { -Index: linux-stable/mm/memory.c -=================================================================== ---- linux-stable.orig/mm/memory.c -+++ linux-stable/mm/memory.c -@@ -3751,6 +3751,7 @@ unlock: +--- a/mm/memory.c ++++ b/mm/memory.c +@@ -3754,6 +3754,7 @@ unlock: #ifdef CONFIG_PREEMPT_RT_FULL void pagefault_disable(void) { @@ -279,7 +265,7 @@ Index: linux-stable/mm/memory.c current->pagefault_disabled++; /* * make sure to have issued the store before a pagefault -@@ -3768,6 +3769,7 @@ void pagefault_enable(void) +@@ -3771,6 +3772,7 @@ void pagefault_enable(void) */ barrier(); current->pagefault_disabled--; diff --git a/debian/patches/features/all/rt/mm-scatterlist-dont-disable-irqs-on-RT.patch b/debian/patches/features/all/rt/mm-scatterlist-dont-disable-irqs-on-RT.patch index 80fbe46f4..5defd336d 100644 --- a/debian/patches/features/all/rt/mm-scatterlist-dont-disable-irqs-on-RT.patch +++ b/debian/patches/features/all/rt/mm-scatterlist-dont-disable-irqs-on-RT.patch @@ -1,17 +1,15 @@ From: Thomas Gleixner Date: Fri, 3 Jul 2009 08:44:34 -0500 Subject: mm: scatterlist dont disable irqs on RT -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- lib/scatterlist.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -Index: linux-stable/lib/scatterlist.c -=================================================================== ---- linux-stable.orig/lib/scatterlist.c -+++ linux-stable/lib/scatterlist.c +--- a/lib/scatterlist.c ++++ b/lib/scatterlist.c @@ -533,7 +533,7 @@ void sg_miter_stop(struct sg_mapping_ite flush_kernel_dcache_page(miter->page); diff --git a/debian/patches/features/all/rt/mm-shrink-the-page-frame-to-rt-size.patch b/debian/patches/features/all/rt/mm-shrink-the-page-frame-to-rt-size.patch index 12544ce8a..ddbc2bfad 100644 --- a/debian/patches/features/all/rt/mm-shrink-the-page-frame-to-rt-size.patch +++ b/debian/patches/features/all/rt/mm-shrink-the-page-frame-to-rt-size.patch @@ -1,7 +1,7 @@ From: Peter Zijlstra Date: Fri, 3 Jul 2009 08:44:54 -0500 Subject: mm: shrink the page frame to !-rt size -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz He below is a boot-tested hack to shrink the page frame size back to normal. @@ -18,10 +18,8 @@ Signed-off-by: Thomas Gleixner mm/memory.c | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+), 7 deletions(-) -Index: linux-stable/include/linux/mm.h -=================================================================== ---- linux-stable.orig/include/linux/mm.h -+++ linux-stable/include/linux/mm.h +--- a/include/linux/mm.h ++++ b/include/linux/mm.h @@ -1241,27 +1241,59 @@ static inline pmd_t *pmd_alloc(struct mm * overflow into the next struct page (as it might with DEBUG_SPINLOCK). * When freeing, reset page->mapping so free_pages_check won't complain. @@ -89,10 +87,8 @@ Index: linux-stable/include/linux/mm.h static inline void pgtable_page_dtor(struct page *page) { pte_lock_deinit(page); -Index: linux-stable/include/linux/mm_types.h -=================================================================== ---- linux-stable.orig/include/linux/mm_types.h -+++ linux-stable/include/linux/mm_types.h +--- a/include/linux/mm_types.h ++++ b/include/linux/mm_types.h @@ -142,7 +142,11 @@ struct page { * system if PG_buddy is set. */ @@ -105,11 +101,9 @@ Index: linux-stable/include/linux/mm_types.h #endif struct kmem_cache *slab_cache; /* SL[AU]B: Pointer to slab */ struct page *first_page; /* Compound tail pages */ -Index: linux-stable/mm/memory.c -=================================================================== ---- linux-stable.orig/mm/memory.c -+++ linux-stable/mm/memory.c -@@ -4319,3 +4319,35 @@ void copy_user_huge_page(struct page *ds +--- a/mm/memory.c ++++ b/mm/memory.c +@@ -4322,3 +4322,35 @@ void copy_user_huge_page(struct page *ds } } #endif /* CONFIG_TRANSPARENT_HUGEPAGE || CONFIG_HUGETLBFS */ diff --git a/debian/patches/features/all/rt/mm-slab-more-lock-breaks.patch b/debian/patches/features/all/rt/mm-slab-more-lock-breaks.patch index 0ff505b9c..7c108a677 100644 --- a/debian/patches/features/all/rt/mm-slab-more-lock-breaks.patch +++ b/debian/patches/features/all/rt/mm-slab-more-lock-breaks.patch @@ -1,7 +1,7 @@ From: Peter Zijlstra Date: Fri, 3 Jul 2009 08:44:43 -0500 Subject: mm: More lock breaks in slab.c -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Handle __free_pages outside of the locked regions. This reduces the lock contention on the percpu slab locks in -rt significantly. @@ -13,10 +13,8 @@ Signed-off-by: Thomas Gleixner mm/slab.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 64 insertions(+), 16 deletions(-) -Index: linux-stable/mm/slab.c -=================================================================== ---- linux-stable.orig/mm/slab.c -+++ linux-stable/mm/slab.c +--- a/mm/slab.c ++++ b/mm/slab.c @@ -634,6 +634,7 @@ static void slab_set_debugobj_lock_class #endif diff --git a/debian/patches/features/all/rt/mm-slab-move-debug-out.patch b/debian/patches/features/all/rt/mm-slab-move-debug-out.patch index 15b2aa5ba..014af0b39 100644 --- a/debian/patches/features/all/rt/mm-slab-move-debug-out.patch +++ b/debian/patches/features/all/rt/mm-slab-move-debug-out.patch @@ -1,17 +1,15 @@ Subject: mm-slab-move-debug-out.patch From: Thomas Gleixner Date: Mon, 20 Jun 2011 10:42:04 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- mm/slab.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-stable/mm/slab.c -=================================================================== ---- linux-stable.orig/mm/slab.c -+++ linux-stable/mm/slab.c +--- a/mm/slab.c ++++ b/mm/slab.c @@ -3771,10 +3771,10 @@ void kmem_cache_free(struct kmem_cache * if (!cachep) return; diff --git a/debian/patches/features/all/rt/mm-slab-wrap-functions.patch b/debian/patches/features/all/rt/mm-slab-wrap-functions.patch index 484da365f..2b0e14557 100644 --- a/debian/patches/features/all/rt/mm-slab-wrap-functions.patch +++ b/debian/patches/features/all/rt/mm-slab-wrap-functions.patch @@ -1,17 +1,15 @@ Subject: mm-slab-wrap-functions.patch From: Thomas Gleixner Date: Sat, 18 Jun 2011 19:44:43 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- mm/slab.c | 157 ++++++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 108 insertions(+), 49 deletions(-) -Index: linux-stable/mm/slab.c -=================================================================== ---- linux-stable.orig/mm/slab.c -+++ linux-stable/mm/slab.c +--- a/mm/slab.c ++++ b/mm/slab.c @@ -116,6 +116,7 @@ #include #include diff --git a/debian/patches/features/all/rt/mm-vmalloc-use-get-cpu-light.patch b/debian/patches/features/all/rt/mm-vmalloc-use-get-cpu-light.patch index 7f54811cf..000c4a29f 100644 --- a/debian/patches/features/all/rt/mm-vmalloc-use-get-cpu-light.patch +++ b/debian/patches/features/all/rt/mm-vmalloc-use-get-cpu-light.patch @@ -1,17 +1,15 @@ Subject: mm-vmalloc.patch From: Thomas Gleixner Date: Tue, 12 Jul 2011 11:39:36 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- mm/vmalloc.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) -Index: linux-stable/mm/vmalloc.c -=================================================================== ---- linux-stable.orig/mm/vmalloc.c -+++ linux-stable/mm/vmalloc.c +--- a/mm/vmalloc.c ++++ b/mm/vmalloc.c @@ -792,7 +792,7 @@ static struct vmap_block *new_vmap_block struct vmap_block *vb; struct vmap_area *va; diff --git a/debian/patches/features/all/rt/mmci-remove-bogus-irq-save.patch b/debian/patches/features/all/rt/mmci-remove-bogus-irq-save.patch index 20f98e178..d02069856 100644 --- a/debian/patches/features/all/rt/mmci-remove-bogus-irq-save.patch +++ b/debian/patches/features/all/rt/mmci-remove-bogus-irq-save.patch @@ -1,7 +1,7 @@ Subject: mmci: Remove bogus local_irq_save() From: Thomas Gleixner Date: Wed, 09 Jan 2013 12:11:12 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz On !RT interrupt runs with interrupts disabled. On RT it's in a thread, so no need to disable interrupts at all. @@ -11,10 +11,8 @@ Signed-off-by: Thomas Gleixner drivers/mmc/host/mmci.c | 5 ----- 1 file changed, 5 deletions(-) -Index: linux-stable/drivers/mmc/host/mmci.c -=================================================================== ---- linux-stable.orig/drivers/mmc/host/mmci.c -+++ linux-stable/drivers/mmc/host/mmci.c +--- a/drivers/mmc/host/mmci.c ++++ b/drivers/mmc/host/mmci.c @@ -976,15 +976,12 @@ static irqreturn_t mmci_pio_irq(int irq, struct sg_mapping_iter *sg_miter = &host->sg_miter; struct variant_data *variant = host->variant; diff --git a/debian/patches/features/all/rt/move_sched_delayed_work_to_helper.patch b/debian/patches/features/all/rt/move_sched_delayed_work_to_helper.patch index 817544e27..da212724d 100644 --- a/debian/patches/features/all/rt/move_sched_delayed_work_to_helper.patch +++ b/debian/patches/features/all/rt/move_sched_delayed_work_to_helper.patch @@ -10,7 +10,7 @@ Cc: Thomas Gleixner , Subject: [RFC][PATCH RT 5/6] rt,ntp: Move call to schedule_delayed_work() to helper thread References: <20130626192806.107564905@goodmis.org> Content-Disposition: inline; filename=ntp-sched-delay-thread.patch -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz The ntp code for notify_cmos_timer() is called from a hard interrupt context. schedule_delayed_work() under PREEMPT_RT_FULL calls spinlocks @@ -33,10 +33,8 @@ Signed-off-by: Steven Rostedt kernel/time/ntp.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) -Index: linux-stable/kernel/time/ntp.c -=================================================================== ---- linux-stable.orig/kernel/time/ntp.c -+++ linux-stable/kernel/time/ntp.c +--- a/kernel/time/ntp.c ++++ b/kernel/time/ntp.c @@ -10,6 +10,7 @@ #include #include diff --git a/debian/patches/features/all/rt/mutex-no-spin-on-rt.patch b/debian/patches/features/all/rt/mutex-no-spin-on-rt.patch index cff446561..82a3d1708 100644 --- a/debian/patches/features/all/rt/mutex-no-spin-on-rt.patch +++ b/debian/patches/features/all/rt/mutex-no-spin-on-rt.patch @@ -1,17 +1,15 @@ Subject: mutex-no-spin-on-rt.patch From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:51:45 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- kernel/Kconfig.locks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/kernel/Kconfig.locks -=================================================================== ---- linux-stable.orig/kernel/Kconfig.locks -+++ linux-stable/kernel/Kconfig.locks +--- a/kernel/Kconfig.locks ++++ b/kernel/Kconfig.locks @@ -222,4 +222,4 @@ endif config MUTEX_SPIN_ON_OWNER diff --git a/debian/patches/features/all/rt/net-another-local-irq-disable-alloc-atomic-headache.patch b/debian/patches/features/all/rt/net-another-local-irq-disable-alloc-atomic-headache.patch index 5e723790a..2f9428621 100644 --- a/debian/patches/features/all/rt/net-another-local-irq-disable-alloc-atomic-headache.patch +++ b/debian/patches/features/all/rt/net-another-local-irq-disable-alloc-atomic-headache.patch @@ -1,7 +1,7 @@ Subject: net: Another local_irq_disable/kmalloc headache From: Thomas Gleixner Date: Wed, 26 Sep 2012 16:21:08 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Replace it by a local lock. Though that's pretty inefficient :( @@ -10,10 +10,8 @@ Signed-off-by: Thomas Gleixner net/core/skbuff.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) -Index: linux-stable/net/core/skbuff.c -=================================================================== ---- linux-stable.orig/net/core/skbuff.c -+++ linux-stable/net/core/skbuff.c +--- a/net/core/skbuff.c ++++ b/net/core/skbuff.c @@ -60,6 +60,7 @@ #include #include diff --git a/debian/patches/features/all/rt/net-dev-make-devnet-rename-seq-static.patch b/debian/patches/features/all/rt/net-dev-make-devnet-rename-seq-static.patch index a2cef32e8..0bd321c44 100644 --- a/debian/patches/features/all/rt/net-dev-make-devnet-rename-seq-static.patch +++ b/debian/patches/features/all/rt/net-dev-make-devnet-rename-seq-static.patch @@ -1,7 +1,7 @@ Subject: net-dev-make-devnet-rename-seq-static.patch From: Thomas Gleixner Date: Tue, 23 Jul 2013 12:55:50 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -9,10 +9,8 @@ Signed-off-by: Thomas Gleixner net/core/dev.c | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) -Index: linux-stable/include/linux/netdevice.h -=================================================================== ---- linux-stable.orig/include/linux/netdevice.h -+++ linux-stable/include/linux/netdevice.h +--- a/include/linux/netdevice.h ++++ b/include/linux/netdevice.h @@ -1601,9 +1601,6 @@ extern int call_netdevice_notifiers(unsi extern rwlock_t dev_base_lock; /* Device list lock */ @@ -23,10 +21,8 @@ Index: linux-stable/include/linux/netdevice.h #define for_each_netdev(net, d) \ list_for_each_entry(d, &(net)->dev_base_head, dev_list) #define for_each_netdev_reverse(net, d) \ -Index: linux-stable/net/core/dev.c -=================================================================== ---- linux-stable.orig/net/core/dev.c -+++ linux-stable/net/core/dev.c +--- a/net/core/dev.c ++++ b/net/core/dev.c @@ -166,7 +166,7 @@ static struct list_head offload_base __r DEFINE_RWLOCK(dev_base_lock); EXPORT_SYMBOL(dev_base_lock); diff --git a/debian/patches/features/all/rt/net-fix-iptable-xt-write-recseq-begin-rt-fallout.patch b/debian/patches/features/all/rt/net-fix-iptable-xt-write-recseq-begin-rt-fallout.patch index e949457db..8c5055924 100644 --- a/debian/patches/features/all/rt/net-fix-iptable-xt-write-recseq-begin-rt-fallout.patch +++ b/debian/patches/features/all/rt/net-fix-iptable-xt-write-recseq-begin-rt-fallout.patch @@ -1,7 +1,7 @@ Subject: net: netfilter: Serialize xt_write_recseq sections on RT From: Thomas Gleixner Date: Sun, 28 Oct 2012 11:18:08 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz The netfilter code relies only on the implicit semantics of local_bh_disable() for serializing wt_write_recseq sections. RT breaks @@ -15,10 +15,8 @@ Cc: stable-rt@vger.kernel.org net/netfilter/core.c | 6 ++++++ 2 files changed, 13 insertions(+) -Index: linux-stable/include/linux/netfilter/x_tables.h -=================================================================== ---- linux-stable.orig/include/linux/netfilter/x_tables.h -+++ linux-stable/include/linux/netfilter/x_tables.h +--- a/include/linux/netfilter/x_tables.h ++++ b/include/linux/netfilter/x_tables.h @@ -3,6 +3,7 @@ @@ -54,10 +52,8 @@ Index: linux-stable/include/linux/netfilter/x_tables.h } /* -Index: linux-stable/net/netfilter/core.c -=================================================================== ---- linux-stable.orig/net/netfilter/core.c -+++ linux-stable/net/netfilter/core.c +--- a/net/netfilter/core.c ++++ b/net/netfilter/core.c @@ -21,11 +21,17 @@ #include #include diff --git a/debian/patches/features/all/rt/net-flip-lock-dep-thingy.patch b/debian/patches/features/all/rt/net-flip-lock-dep-thingy.patch index 2bcb33930..d32bd2742 100644 --- a/debian/patches/features/all/rt/net-flip-lock-dep-thingy.patch +++ b/debian/patches/features/all/rt/net-flip-lock-dep-thingy.patch @@ -1,7 +1,7 @@ Subject: net-flip-lock-dep-thingy.patch From: Thomas Gleixner Date: Tue, 28 Jun 2011 10:59:58 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz ======================================================= [ INFO: possible circular locking dependency detected ] @@ -94,10 +94,8 @@ Signed-off-by: Thomas Gleixner net/core/sock.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) -Index: linux-stable/net/core/sock.c -=================================================================== ---- linux-stable.orig/net/core/sock.c -+++ linux-stable/net/core/sock.c +--- a/net/core/sock.c ++++ b/net/core/sock.c @@ -2288,12 +2288,11 @@ void lock_sock_nested(struct sock *sk, i if (sk->sk_lock.owned) __lock_sock(sk); diff --git a/debian/patches/features/all/rt/net-make-devnet_rename_seq-a-mutex.patch b/debian/patches/features/all/rt/net-make-devnet_rename_seq-a-mutex.patch index 8d4da0f66..5dc7b0841 100644 --- a/debian/patches/features/all/rt/net-make-devnet_rename_seq-a-mutex.patch +++ b/debian/patches/features/all/rt/net-make-devnet_rename_seq-a-mutex.patch @@ -1,7 +1,7 @@ From: Sebastian Andrzej Siewior Date: Wed, 20 Mar 2013 18:06:20 +0100 Subject: [PATCH] net: Add a mutex around devnet_rename_seq -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz On RT write_seqcount_begin() disables preemption and device_rename() allocates memory with GFP_KERNEL and grabs later the sysfs_mutex @@ -20,10 +20,8 @@ Signed-off-by: Thomas Gleixner net/core/dev.c | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) -Index: linux-stable/net/core/dev.c -=================================================================== ---- linux-stable.orig/net/core/dev.c -+++ linux-stable/net/core/dev.c +--- a/net/core/dev.c ++++ b/net/core/dev.c @@ -167,6 +167,7 @@ DEFINE_RWLOCK(dev_base_lock); EXPORT_SYMBOL(dev_base_lock); diff --git a/debian/patches/features/all/rt/net-netif-rx-ni-use-local-bh-disable.patch b/debian/patches/features/all/rt/net-netif-rx-ni-use-local-bh-disable.patch index 88477cb20..2c45cf4ad 100644 --- a/debian/patches/features/all/rt/net-netif-rx-ni-use-local-bh-disable.patch +++ b/debian/patches/features/all/rt/net-netif-rx-ni-use-local-bh-disable.patch @@ -1,7 +1,7 @@ Subject: net: Use local_bh_disable in netif_rx_ni() From: Thomas Gleixner Date: Sun, 28 Oct 2012 15:12:49 +0000 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz This code triggers the new WARN in __raise_softirq_irqsoff() though it actually looks at the softirq pending bit and calls into the softirq @@ -14,11 +14,9 @@ Signed-off-by: Thomas Gleixner net/core/dev.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) -Index: linux-stable/net/core/dev.c -=================================================================== ---- linux-stable.orig/net/core/dev.c -+++ linux-stable/net/core/dev.c -@@ -3204,11 +3204,9 @@ int netif_rx_ni(struct sk_buff *skb) +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -3201,11 +3201,9 @@ int netif_rx_ni(struct sk_buff *skb) { int err; diff --git a/debian/patches/features/all/rt/net-netif_rx_ni-migrate-disable.patch b/debian/patches/features/all/rt/net-netif_rx_ni-migrate-disable.patch index b6d8b7232..643ae5dab 100644 --- a/debian/patches/features/all/rt/net-netif_rx_ni-migrate-disable.patch +++ b/debian/patches/features/all/rt/net-netif_rx_ni-migrate-disable.patch @@ -1,17 +1,15 @@ Subject: net-netif_rx_ni-migrate-disable.patch From: Thomas Gleixner Date: Sun, 17 Jul 2011 16:29:27 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- net/core/dev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-stable/net/core/dev.c -=================================================================== ---- linux-stable.orig/net/core/dev.c -+++ linux-stable/net/core/dev.c +--- a/net/core/dev.c ++++ b/net/core/dev.c @@ -3201,11 +3201,11 @@ int netif_rx_ni(struct sk_buff *skb) { int err; diff --git a/debian/patches/features/all/rt/net-tx-action-avoid-livelock-on-rt.patch b/debian/patches/features/all/rt/net-tx-action-avoid-livelock-on-rt.patch index b4fd6fd54..d88afdf5b 100644 --- a/debian/patches/features/all/rt/net-tx-action-avoid-livelock-on-rt.patch +++ b/debian/patches/features/all/rt/net-tx-action-avoid-livelock-on-rt.patch @@ -1,7 +1,7 @@ Subject: net: Avoid livelock in net_tx_action() on RT From: Steven Rostedt Date: Thu, 06 Oct 2011 10:48:39 -0400 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz 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 @@ -43,10 +43,8 @@ Signed-off-by: Thomas Gleixner net/core/dev.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) -Index: linux-stable/net/core/dev.c -=================================================================== ---- linux-stable.orig/net/core/dev.c -+++ linux-stable/net/core/dev.c +--- a/net/core/dev.c ++++ b/net/core/dev.c @@ -3211,6 +3211,36 @@ int netif_rx_ni(struct sk_buff *skb) } EXPORT_SYMBOL(netif_rx_ni); diff --git a/debian/patches/features/all/rt/net-use-cpu-chill.patch b/debian/patches/features/all/rt/net-use-cpu-chill.patch index 16f91bc1a..7cd8a037d 100644 --- a/debian/patches/features/all/rt/net-use-cpu-chill.patch +++ b/debian/patches/features/all/rt/net-use-cpu-chill.patch @@ -1,7 +1,7 @@ Subject: net: Use cpu_chill() instead of cpu_relax() From: Thomas Gleixner Date: Wed, 07 Mar 2012 21:10:04 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Retry loops on RT might loop forever when the modifying side was preempted. Use cpu_chill() instead of cpu_relax() to let the system @@ -14,10 +14,8 @@ Cc: stable-rt@vger.kernel.org net/rds/ib_rdma.c | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) -Index: linux-stable/net/packet/af_packet.c -=================================================================== ---- linux-stable.orig/net/packet/af_packet.c -+++ linux-stable/net/packet/af_packet.c +--- a/net/packet/af_packet.c ++++ b/net/packet/af_packet.c @@ -88,6 +88,7 @@ #include #include @@ -44,10 +42,8 @@ Index: linux-stable/net/packet/af_packet.c } } prb_close_block(pkc, pbd, po, status); -Index: linux-stable/net/rds/ib_rdma.c -=================================================================== ---- linux-stable.orig/net/rds/ib_rdma.c -+++ linux-stable/net/rds/ib_rdma.c +--- a/net/rds/ib_rdma.c ++++ b/net/rds/ib_rdma.c @@ -34,6 +34,7 @@ #include #include diff --git a/debian/patches/features/all/rt/net-use-cpu-light-in-ip-send-unicast-reply.patch b/debian/patches/features/all/rt/net-use-cpu-light-in-ip-send-unicast-reply.patch index 5611c97fb..848183a02 100644 --- a/debian/patches/features/all/rt/net-use-cpu-light-in-ip-send-unicast-reply.patch +++ b/debian/patches/features/all/rt/net-use-cpu-light-in-ip-send-unicast-reply.patch @@ -1,17 +1,15 @@ Subject: net: Use get_cpu_light() in ip_send_unicast_reply() From: Thomas Gleixner Date: Mon, 01 Oct 2012 17:12:35 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- net/ipv4/ip_output.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) -Index: linux-stable/net/ipv4/ip_output.c -=================================================================== ---- linux-stable.orig/net/ipv4/ip_output.c -+++ linux-stable/net/ipv4/ip_output.c +--- a/net/ipv4/ip_output.c ++++ b/net/ipv4/ip_output.c @@ -1508,7 +1508,8 @@ void ip_send_unicast_reply(struct net *n if (IS_ERR(rt)) return; diff --git a/debian/patches/features/all/rt/net-wireless-warn-nort.patch b/debian/patches/features/all/rt/net-wireless-warn-nort.patch index b372e4b03..a880960e2 100644 --- a/debian/patches/features/all/rt/net-wireless-warn-nort.patch +++ b/debian/patches/features/all/rt/net-wireless-warn-nort.patch @@ -1,18 +1,16 @@ Subject: net-wireless-warn-nort.patch From: Thomas Gleixner Date: Thu, 21 Jul 2011 21:05:33 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- net/mac80211/rx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/net/mac80211/rx.c -=================================================================== ---- linux-stable.orig/net/mac80211/rx.c -+++ linux-stable/net/mac80211/rx.c -@@ -3234,7 +3234,7 @@ void ieee80211_rx(struct ieee80211_hw *h +--- a/net/mac80211/rx.c ++++ b/net/mac80211/rx.c +@@ -3240,7 +3240,7 @@ void ieee80211_rx(struct ieee80211_hw *h struct ieee80211_supported_band *sband; struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); diff --git a/debian/patches/features/all/rt/oleg-signal-rt-fix.patch b/debian/patches/features/all/rt/oleg-signal-rt-fix.patch index a2e1c242f..79e1b8da9 100644 --- a/debian/patches/features/all/rt/oleg-signal-rt-fix.patch +++ b/debian/patches/features/all/rt/oleg-signal-rt-fix.patch @@ -1,6 +1,6 @@ From: Oleg Nesterov Subject: signal/x86: Delay calling signals in atomic -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz On x86_64 we must disable preemption before we enable interrupts for stack faults, int3 and debugging, because the current task is using @@ -36,10 +36,8 @@ Signed-off-by: Thomas Gleixner kernel/signal.c | 37 +++++++++++++++++++++++++++++++++++-- 4 files changed, 60 insertions(+), 2 deletions(-) -Index: linux-stable/arch/x86/include/asm/signal.h -=================================================================== ---- linux-stable.orig/arch/x86/include/asm/signal.h -+++ linux-stable/arch/x86/include/asm/signal.h +--- a/arch/x86/include/asm/signal.h ++++ b/arch/x86/include/asm/signal.h @@ -23,6 +23,19 @@ typedef struct { unsigned long sig[_NSIG_WORDS]; } sigset_t; @@ -60,10 +58,8 @@ Index: linux-stable/arch/x86/include/asm/signal.h #ifndef CONFIG_COMPAT typedef sigset_t compat_sigset_t; #endif -Index: linux-stable/arch/x86/kernel/signal.c -=================================================================== ---- linux-stable.orig/arch/x86/kernel/signal.c -+++ linux-stable/arch/x86/kernel/signal.c +--- a/arch/x86/kernel/signal.c ++++ b/arch/x86/kernel/signal.c @@ -743,6 +743,14 @@ do_notify_resume(struct pt_regs *regs, v mce_notify_process(); #endif /* CONFIG_X86_64 && CONFIG_X86_MCE */ @@ -79,10 +75,8 @@ Index: linux-stable/arch/x86/kernel/signal.c if (thread_info_flags & _TIF_UPROBE) uprobe_notify_resume(regs); -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1220,6 +1220,10 @@ struct task_struct { sigset_t blocked, real_blocked; sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */ @@ -94,10 +88,8 @@ Index: linux-stable/include/linux/sched.h unsigned long sas_ss_sp; size_t sas_ss_size; -Index: linux-stable/kernel/signal.c -=================================================================== ---- linux-stable.orig/kernel/signal.c -+++ linux-stable/kernel/signal.c +--- a/kernel/signal.c ++++ b/kernel/signal.c @@ -1305,8 +1305,8 @@ int do_send_sig_info(int sig, struct sig * We don't want to have recursive SIGSEGV's etc, for example, * that is why we also clear SIGNAL_UNKILLABLE. diff --git a/debian/patches/features/all/rt/panic-disable-random-on-rt.patch b/debian/patches/features/all/rt/panic-disable-random-on-rt.patch index 74ceebc69..41f140592 100644 --- a/debian/patches/features/all/rt/panic-disable-random-on-rt.patch +++ b/debian/patches/features/all/rt/panic-disable-random-on-rt.patch @@ -1,15 +1,13 @@ From: Thomas Gleixner Subject: panic: skip get_random_bytes for RT_FULL in init_oops_id -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz --- kernel/panic.c | 2 ++ 1 file changed, 2 insertions(+) -Index: linux-stable/kernel/panic.c -=================================================================== ---- linux-stable.orig/kernel/panic.c -+++ linux-stable/kernel/panic.c +--- a/kernel/panic.c ++++ b/kernel/panic.c @@ -363,9 +363,11 @@ static u64 oops_id; static int init_oops_id(void) diff --git a/debian/patches/features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch b/debian/patches/features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch index 64c8ba85f..35082f3aa 100644 --- a/debian/patches/features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch +++ b/debian/patches/features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch @@ -1,7 +1,7 @@ Subject: rcu: Make ksoftirqd do RCU quiescent states From: "Paul E. McKenney" Date: Wed, 5 Oct 2011 11:45:18 -0700 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Implementing RCU-bh in terms of RCU-preempt makes the system vulnerable to network-based denial-of-service attacks. This patch therefore @@ -30,10 +30,8 @@ Signed-off-by: Thomas Gleixner kernel/softirq.c | 20 +++++++++++++------- 4 files changed, 28 insertions(+), 15 deletions(-) -Index: linux-stable/include/linux/rcupdate.h -=================================================================== ---- linux-stable.orig/include/linux/rcupdate.h -+++ linux-stable/include/linux/rcupdate.h +--- a/include/linux/rcupdate.h ++++ b/include/linux/rcupdate.h @@ -228,13 +228,7 @@ static inline int rcu_preempt_depth(void /* Internal to kernel */ @@ -48,10 +46,8 @@ Index: linux-stable/include/linux/rcupdate.h extern void rcu_check_callbacks(int cpu, int user); struct notifier_block; extern void rcu_idle_enter(void); -Index: linux-stable/kernel/rcutree.c -=================================================================== ---- linux-stable.orig/kernel/rcutree.c -+++ linux-stable/kernel/rcutree.c +--- a/kernel/rcutree.c ++++ b/kernel/rcutree.c @@ -182,7 +182,14 @@ void rcu_sched_qs(int cpu) rdp->passed_quiesce = 1; } @@ -68,10 +64,8 @@ Index: linux-stable/kernel/rcutree.c void rcu_bh_qs(int cpu) { struct rcu_data *rdp = &per_cpu(rcu_bh_data, cpu); -Index: linux-stable/kernel/rcutree_plugin.h -=================================================================== ---- linux-stable.orig/kernel/rcutree_plugin.h -+++ linux-stable/kernel/rcutree_plugin.h +--- a/kernel/rcutree_plugin.h ++++ b/kernel/rcutree_plugin.h @@ -1530,7 +1530,7 @@ static void __cpuinit rcu_prepare_kthrea #endif /* #else #ifdef CONFIG_RCU_BOOST */ @@ -108,10 +102,8 @@ Index: linux-stable/kernel/rcutree_plugin.h /* * Prepare a CPU for idle from an RCU perspective. The first major task -Index: linux-stable/kernel/softirq.c -=================================================================== ---- linux-stable.orig/kernel/softirq.c -+++ linux-stable/kernel/softirq.c +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -142,7 +142,7 @@ static void wakeup_softirqd(void) wake_up_process(tsk); } diff --git a/debian/patches/features/all/rt/pci-access-use-__wake_up_all_locked.patch b/debian/patches/features/all/rt/pci-access-use-__wake_up_all_locked.patch index 916416ebf..cd3739bc9 100644 --- a/debian/patches/features/all/rt/pci-access-use-__wake_up_all_locked.patch +++ b/debian/patches/features/all/rt/pci-access-use-__wake_up_all_locked.patch @@ -1,7 +1,7 @@ Subject: pci: Use __wake_up_all_locked pci_unblock_user_cfg_access() From: Thomas Gleixner Date: Thu, 01 Dec 2011 00:07:16 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz The waitqueue is protected by the pci_lock, so we can just avoid to lock the waitqueue lock itself. That prevents the @@ -13,10 +13,8 @@ Cc: stable-rt@vger.kernel.org drivers/pci/access.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/drivers/pci/access.c -=================================================================== ---- linux-stable.orig/drivers/pci/access.c -+++ linux-stable/drivers/pci/access.c +--- a/drivers/pci/access.c ++++ b/drivers/pci/access.c @@ -465,7 +465,7 @@ void pci_cfg_access_unlock(struct pci_de WARN_ON(!dev->block_cfg_access); diff --git a/debian/patches/features/all/rt/percpu-rwsem-compilefix.patch b/debian/patches/features/all/rt/percpu-rwsem-compilefix.patch index 7ab9bea61..a6a8c22de 100644 --- a/debian/patches/features/all/rt/percpu-rwsem-compilefix.patch +++ b/debian/patches/features/all/rt/percpu-rwsem-compilefix.patch @@ -2,7 +2,7 @@ From 49faecbc581de038b423d7abbebe0d7b50ed15ef Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 8 Apr 2013 16:08:46 +0200 Subject: [PATCH] percpu-rwsem: compile fix -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz The shortcut on mainline skip lockdep. No idea why this is a good thing. @@ -11,10 +11,8 @@ Signed-off-by: Sebastian Andrzej Siewior lib/percpu-rwsem.c | 4 ++++ 1 file changed, 4 insertions(+) -Index: linux-stable/lib/percpu-rwsem.c -=================================================================== ---- linux-stable.orig/lib/percpu-rwsem.c -+++ linux-stable/lib/percpu-rwsem.c +--- a/lib/percpu-rwsem.c ++++ b/lib/percpu-rwsem.c @@ -84,8 +84,12 @@ void percpu_down_read(struct percpu_rw_s down_read(&brw->rw_sem); diff --git a/debian/patches/features/all/rt/perf-make-swevent-hrtimer-irqsafe.patch b/debian/patches/features/all/rt/perf-make-swevent-hrtimer-irqsafe.patch index 093a02b60..4a7823107 100644 --- a/debian/patches/features/all/rt/perf-make-swevent-hrtimer-irqsafe.patch +++ b/debian/patches/features/all/rt/perf-make-swevent-hrtimer-irqsafe.patch @@ -1,7 +1,7 @@ From: Yong Zhang Date: Wed, 11 Jul 2012 22:05:21 +0000 Subject: perf: Make swevent hrtimer run in irq instead of softirq -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Otherwise we get a deadlock like below: @@ -57,11 +57,9 @@ Signed-off-by: Steven Rostedt kernel/events/core.c | 1 + 1 file changed, 1 insertion(+) -Index: linux-stable/kernel/events/core.c -=================================================================== ---- linux-stable.orig/kernel/events/core.c -+++ linux-stable/kernel/events/core.c -@@ -5715,6 +5715,7 @@ static void perf_swevent_init_hrtimer(st +--- a/kernel/events/core.c ++++ b/kernel/events/core.c +@@ -5737,6 +5737,7 @@ static void perf_swevent_init_hrtimer(st hrtimer_init(&hwc->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); hwc->hrtimer.function = perf_swevent_hrtimer; diff --git a/debian/patches/features/all/rt/perf-move-irq-work-to-softirq-in-rt.patch b/debian/patches/features/all/rt/perf-move-irq-work-to-softirq-in-rt.patch index 7bc31f841..d210621db 100644 --- a/debian/patches/features/all/rt/perf-move-irq-work-to-softirq-in-rt.patch +++ b/debian/patches/features/all/rt/perf-move-irq-work-to-softirq-in-rt.patch @@ -1,7 +1,7 @@ Subject: x86-no-perf-irq-work-rt.patch From: Thomas Gleixner Date: Wed, 13 Jul 2011 14:05:05 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -10,10 +10,8 @@ Signed-off-by: Thomas Gleixner kernel/timer.c | 6 +++++- 3 files changed, 11 insertions(+), 2 deletions(-) -Index: linux-stable/arch/x86/kernel/irq_work.c -=================================================================== ---- linux-stable.orig/arch/x86/kernel/irq_work.c -+++ linux-stable/arch/x86/kernel/irq_work.c +--- 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_re irq_exit(); } @@ -27,10 +25,8 @@ Index: linux-stable/arch/x86/kernel/irq_work.c #endif } +#endif -Index: linux-stable/kernel/irq_work.c -=================================================================== ---- linux-stable.orig/kernel/irq_work.c -+++ linux-stable/kernel/irq_work.c +--- a/kernel/irq_work.c ++++ b/kernel/irq_work.c @@ -119,8 +119,9 @@ static void __irq_work_run(void) if (llist_empty(this_list)) return; @@ -52,10 +48,8 @@ Index: linux-stable/kernel/irq_work.c __irq_work_run(); } EXPORT_SYMBOL_GPL(irq_work_run); -Index: linux-stable/kernel/timer.c -=================================================================== ---- linux-stable.orig/kernel/timer.c -+++ linux-stable/kernel/timer.c +--- a/kernel/timer.c ++++ b/kernel/timer.c @@ -1425,7 +1425,7 @@ void update_process_times(int user_tick) scheduler_tick(); run_local_timers(); diff --git a/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable-2.patch b/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable-2.patch index c1f0eb2b3..4cc12a818 100644 --- a/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable-2.patch +++ b/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable-2.patch @@ -1,7 +1,7 @@ Subject: sched: Generic migrate_disable From: Peter Zijlstra Date: Thu Aug 11 15:14:58 CEST 2011 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Make migrate_disable() be a preempt_disable() for !rt kernels. This allows generic code to use it but still enforces that these code @@ -22,10 +22,8 @@ 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-stable/include/linux/preempt.h -=================================================================== ---- linux-stable.orig/include/linux/preempt.h -+++ linux-stable/include/linux/preempt.h +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h @@ -130,28 +130,25 @@ do { \ #endif /* CONFIG_PREEMPT_COUNT */ @@ -64,10 +62,8 @@ Index: linux-stable/include/linux/preempt.h #endif #ifdef CONFIG_PREEMPT_NOTIFIERS -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1074,7 +1074,9 @@ struct task_struct { #endif @@ -78,7 +74,7 @@ Index: linux-stable/include/linux/sched.h int nr_cpus_allowed; cpumask_t cpus_allowed; -@@ -2614,11 +2616,22 @@ static inline void set_task_cpu(struct t +@@ -2617,11 +2619,22 @@ static inline void set_task_cpu(struct t #endif /* CONFIG_SMP */ @@ -101,10 +97,8 @@ Index: linux-stable/include/linux/sched.h return &p->cpus_allowed; } -Index: linux-stable/include/linux/smp.h -=================================================================== ---- linux-stable.orig/include/linux/smp.h -+++ linux-stable/include/linux/smp.h +--- a/include/linux/smp.h ++++ b/include/linux/smp.h @@ -223,13 +223,8 @@ static inline void kick_all_cpus_sync(vo #define get_cpu() ({ preempt_disable(); smp_processor_id(); }) #define put_cpu() preempt_enable() @@ -121,11 +115,9 @@ Index: linux-stable/include/linux/smp.h /* * Callback to arch code if there's nosmp or maxcpus=0 on the -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -4828,7 +4828,7 @@ void __cpuinit init_idle(struct task_str +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -4871,7 +4871,7 @@ void __cpuinit init_idle(struct task_str #ifdef CONFIG_SMP void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) { @@ -134,7 +126,7 @@ Index: linux-stable/kernel/sched/core.c if (p->sched_class && p->sched_class->set_cpus_allowed) p->sched_class->set_cpus_allowed(p, new_mask); p->nr_cpus_allowed = cpumask_weight(new_mask); -@@ -4879,7 +4879,7 @@ int set_cpus_allowed_ptr(struct task_str +@@ -4922,7 +4922,7 @@ int set_cpus_allowed_ptr(struct task_str do_set_cpus_allowed(p, new_mask); /* Can the task run on the task's current CPU? If so, we're done */ @@ -143,7 +135,7 @@ Index: linux-stable/kernel/sched/core.c goto out; dest_cpu = cpumask_any_and(cpu_active_mask, new_mask); -@@ -4898,6 +4898,7 @@ out: +@@ -4941,6 +4941,7 @@ out: } EXPORT_SYMBOL_GPL(set_cpus_allowed_ptr); @@ -151,7 +143,7 @@ Index: linux-stable/kernel/sched/core.c void migrate_disable(void) { struct task_struct *p = current; -@@ -4990,6 +4991,7 @@ void migrate_enable(void) +@@ -5033,6 +5034,7 @@ void migrate_enable(void) preempt_enable(); } EXPORT_SYMBOL(migrate_enable); @@ -159,11 +151,9 @@ Index: linux-stable/kernel/sched/core.c /* * Move (not current) task off this cpu, onto dest cpu. We're doing -Index: linux-stable/kernel/trace/trace.c -=================================================================== ---- linux-stable.orig/kernel/trace/trace.c -+++ linux-stable/kernel/trace/trace.c -@@ -1420,7 +1420,7 @@ tracing_generic_entry_update(struct trac +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -1450,7 +1450,7 @@ tracing_generic_entry_update(struct trac ((pc & SOFTIRQ_MASK) ? TRACE_FLAG_SOFTIRQ : 0) | (need_resched() ? TRACE_FLAG_NEED_RESCHED : 0); @@ -172,10 +162,8 @@ Index: linux-stable/kernel/trace/trace.c } EXPORT_SYMBOL_GPL(tracing_generic_entry_update); -Index: linux-stable/lib/smp_processor_id.c -=================================================================== ---- linux-stable.orig/lib/smp_processor_id.c -+++ linux-stable/lib/smp_processor_id.c +--- a/lib/smp_processor_id.c ++++ b/lib/smp_processor_id.c @@ -41,7 +41,7 @@ notrace unsigned int debug_smp_processor printk(KERN_ERR "BUG: using smp_processor_id() in preemptible [%08x %08x] " diff --git a/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable.patch b/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable.patch index 7aa00ab87..9738a30c4 100644 --- a/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable.patch +++ b/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable.patch @@ -1,7 +1,7 @@ Subject: sched: Optimize migrate_disable From: Peter Zijlstra Date: Thu Aug 11 15:03:35 CEST 2011 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz 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. @@ -12,11 +12,9 @@ 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-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -4918,7 +4918,19 @@ void migrate_disable(void) +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -4961,7 +4961,19 @@ void migrate_disable(void) preempt_enable(); return; } @@ -37,7 +35,7 @@ Index: linux-stable/kernel/sched/core.c p->migrate_disable = 1; mask = tsk_cpus_allowed(p); -@@ -4929,7 +4941,7 @@ void migrate_disable(void) +@@ -4972,7 +4984,7 @@ void migrate_disable(void) p->sched_class->set_cpus_allowed(p, mask); p->nr_cpus_allowed = cpumask_weight(mask); } @@ -46,7 +44,7 @@ Index: linux-stable/kernel/sched/core.c preempt_enable(); } EXPORT_SYMBOL(migrate_disable); -@@ -4957,7 +4969,11 @@ void migrate_enable(void) +@@ -5000,7 +5012,11 @@ void migrate_enable(void) return; } @@ -59,7 +57,7 @@ Index: linux-stable/kernel/sched/core.c p->migrate_disable = 0; mask = tsk_cpus_allowed(p); -@@ -4969,7 +4985,7 @@ void migrate_enable(void) +@@ -5012,7 +5028,7 @@ void migrate_enable(void) p->nr_cpus_allowed = cpumask_weight(mask); } diff --git a/debian/patches/features/all/rt/peter_zijlstra-frob-pagefault_disable.patch b/debian/patches/features/all/rt/peter_zijlstra-frob-pagefault_disable.patch index 75eb4c918..b64da1abe 100644 --- a/debian/patches/features/all/rt/peter_zijlstra-frob-pagefault_disable.patch +++ b/debian/patches/features/all/rt/peter_zijlstra-frob-pagefault_disable.patch @@ -1,7 +1,7 @@ Subject: mm: pagefault_disabled() From: Peter Zijlstra Date: Thu Aug 11 15:31:31 CEST 2011 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Wrap the test for pagefault_disabled() into a helper, this allows us to remove the need for current->pagefault_disabled on !-rt kernels. @@ -34,10 +34,8 @@ Link: http://lkml.kernel.org/n/tip-3yy517m8zsi9fpsf14xfaqkw@git.kernel.org kernel/fork.c | 2 ++ 23 files changed, 40 insertions(+), 25 deletions(-) -Index: linux-stable/arch/alpha/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/alpha/mm/fault.c -+++ linux-stable/arch/alpha/mm/fault.c +--- a/arch/alpha/mm/fault.c ++++ b/arch/alpha/mm/fault.c @@ -108,7 +108,7 @@ do_page_fault(unsigned long address, uns /* If we're in an interrupt context, or have no user context, @@ -47,10 +45,8 @@ Index: linux-stable/arch/alpha/mm/fault.c goto no_context; #ifdef CONFIG_ALPHA_LARGE_VMALLOC -Index: linux-stable/arch/arm/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/arm/mm/fault.c -+++ linux-stable/arch/arm/mm/fault.c +--- a/arch/arm/mm/fault.c ++++ b/arch/arm/mm/fault.c @@ -279,7 +279,7 @@ do_page_fault(unsigned long addr, unsign * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -60,10 +56,8 @@ Index: linux-stable/arch/arm/mm/fault.c goto no_context; /* -Index: linux-stable/arch/avr32/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/avr32/mm/fault.c -+++ linux-stable/arch/avr32/mm/fault.c +--- a/arch/avr32/mm/fault.c ++++ b/arch/avr32/mm/fault.c @@ -81,8 +81,7 @@ asmlinkage void do_page_fault(unsigned l * If we're in an interrupt or have no user context, we must * not take the fault... @@ -74,10 +68,8 @@ Index: linux-stable/arch/avr32/mm/fault.c goto no_context; local_irq_enable(); -Index: linux-stable/arch/cris/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/cris/mm/fault.c -+++ linux-stable/arch/cris/mm/fault.c +--- a/arch/cris/mm/fault.c ++++ b/arch/cris/mm/fault.c @@ -114,7 +114,7 @@ do_page_fault(unsigned long address, str * user context, we must not take the fault. */ @@ -87,10 +79,8 @@ Index: linux-stable/arch/cris/mm/fault.c goto no_context; retry: -Index: linux-stable/arch/frv/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/frv/mm/fault.c -+++ linux-stable/arch/frv/mm/fault.c +--- a/arch/frv/mm/fault.c ++++ b/arch/frv/mm/fault.c @@ -78,7 +78,7 @@ asmlinkage void do_page_fault(int datamm * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -100,10 +90,8 @@ Index: linux-stable/arch/frv/mm/fault.c goto no_context; down_read(&mm->mmap_sem); -Index: linux-stable/arch/ia64/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/ia64/mm/fault.c -+++ linux-stable/arch/ia64/mm/fault.c +--- a/arch/ia64/mm/fault.c ++++ b/arch/ia64/mm/fault.c @@ -98,7 +98,7 @@ ia64_do_page_fault (unsigned long addres /* * If we're in an interrupt or have no user context, we must not take the fault.. @@ -113,10 +101,8 @@ Index: linux-stable/arch/ia64/mm/fault.c goto no_context; #ifdef CONFIG_VIRTUAL_MEM_MAP -Index: linux-stable/arch/m32r/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/m32r/mm/fault.c -+++ linux-stable/arch/m32r/mm/fault.c +--- a/arch/m32r/mm/fault.c ++++ b/arch/m32r/mm/fault.c @@ -114,7 +114,7 @@ asmlinkage void do_page_fault(struct pt_ * 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,10 +112,8 @@ Index: linux-stable/arch/m32r/mm/fault.c goto bad_area_nosemaphore; /* When running in the kernel we expect faults to occur only to -Index: linux-stable/arch/m68k/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/m68k/mm/fault.c -+++ linux-stable/arch/m68k/mm/fault.c +--- a/arch/m68k/mm/fault.c ++++ b/arch/m68k/mm/fault.c @@ -85,7 +85,7 @@ int do_page_fault(struct pt_regs *regs, * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -139,10 +123,8 @@ Index: linux-stable/arch/m68k/mm/fault.c goto no_context; retry: -Index: linux-stable/arch/microblaze/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/microblaze/mm/fault.c -+++ linux-stable/arch/microblaze/mm/fault.c +--- a/arch/microblaze/mm/fault.c ++++ b/arch/microblaze/mm/fault.c @@ -108,7 +108,7 @@ void do_page_fault(struct pt_regs *regs, if ((error_code & 0x13) == 0x13 || (error_code & 0x11) == 0x11) is_write = 0; @@ -152,10 +134,8 @@ Index: linux-stable/arch/microblaze/mm/fault.c if (kernel_mode(regs)) goto bad_area_nosemaphore; -Index: linux-stable/arch/mips/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/mips/mm/fault.c -+++ linux-stable/arch/mips/mm/fault.c +--- a/arch/mips/mm/fault.c ++++ b/arch/mips/mm/fault.c @@ -89,7 +89,7 @@ asmlinkage void __kprobes do_page_fault( * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -165,10 +145,8 @@ Index: linux-stable/arch/mips/mm/fault.c goto bad_area_nosemaphore; retry: -Index: linux-stable/arch/mn10300/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/mn10300/mm/fault.c -+++ linux-stable/arch/mn10300/mm/fault.c +--- a/arch/mn10300/mm/fault.c ++++ b/arch/mn10300/mm/fault.c @@ -168,7 +168,7 @@ asmlinkage void do_page_fault(struct pt_ * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -178,10 +156,8 @@ Index: linux-stable/arch/mn10300/mm/fault.c goto no_context; retry: -Index: linux-stable/arch/parisc/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/parisc/mm/fault.c -+++ linux-stable/arch/parisc/mm/fault.c +--- a/arch/parisc/mm/fault.c ++++ b/arch/parisc/mm/fault.c @@ -177,7 +177,7 @@ void do_page_fault(struct pt_regs *regs, int fault; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; @@ -191,10 +167,8 @@ Index: linux-stable/arch/parisc/mm/fault.c goto no_context; retry: -Index: linux-stable/arch/s390/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/s390/mm/fault.c -+++ linux-stable/arch/s390/mm/fault.c +--- a/arch/s390/mm/fault.c ++++ b/arch/s390/mm/fault.c @@ -296,8 +296,8 @@ static inline int do_exception(struct pt * user context. */ @@ -217,10 +191,8 @@ Index: linux-stable/arch/s390/mm/fault.c goto no_context; down_read(&mm->mmap_sem); -Index: linux-stable/arch/score/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/score/mm/fault.c -+++ linux-stable/arch/score/mm/fault.c +--- a/arch/score/mm/fault.c ++++ b/arch/score/mm/fault.c @@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_ * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -230,10 +202,8 @@ Index: linux-stable/arch/score/mm/fault.c goto bad_area_nosemaphore; down_read(&mm->mmap_sem); -Index: linux-stable/arch/sh/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/sh/mm/fault.c -+++ linux-stable/arch/sh/mm/fault.c +--- a/arch/sh/mm/fault.c ++++ b/arch/sh/mm/fault.c @@ -440,7 +440,7 @@ asmlinkage void __kprobes do_page_fault( * If we're in an interrupt, have no user context or are running * in an atomic region then we must not take the fault: @@ -243,10 +213,8 @@ Index: linux-stable/arch/sh/mm/fault.c bad_area_nosemaphore(regs, error_code, address); return; } -Index: linux-stable/arch/sparc/mm/fault_32.c -=================================================================== ---- linux-stable.orig/arch/sparc/mm/fault_32.c -+++ linux-stable/arch/sparc/mm/fault_32.c +--- a/arch/sparc/mm/fault_32.c ++++ b/arch/sparc/mm/fault_32.c @@ -200,7 +200,7 @@ asmlinkage void do_sparc_fault(struct pt * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -256,10 +224,8 @@ Index: linux-stable/arch/sparc/mm/fault_32.c goto no_context; perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); -Index: linux-stable/arch/sparc/mm/fault_64.c -=================================================================== ---- linux-stable.orig/arch/sparc/mm/fault_64.c -+++ linux-stable/arch/sparc/mm/fault_64.c +--- a/arch/sparc/mm/fault_64.c ++++ b/arch/sparc/mm/fault_64.c @@ -321,7 +321,7 @@ asmlinkage void __kprobes do_sparc64_fau * If we're in an interrupt or have no user * context, we must not take the fault.. @@ -269,10 +235,8 @@ Index: linux-stable/arch/sparc/mm/fault_64.c goto intr_or_no_mm; perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); -Index: linux-stable/arch/tile/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/tile/mm/fault.c -+++ linux-stable/arch/tile/mm/fault.c +--- a/arch/tile/mm/fault.c ++++ b/arch/tile/mm/fault.c @@ -360,7 +360,7 @@ static int handle_page_fault(struct pt_r * If we're in an interrupt, have no user context or are running in an * atomic region then we must not take the fault. @@ -282,10 +246,8 @@ Index: linux-stable/arch/tile/mm/fault.c vma = NULL; /* happy compiler */ goto bad_area_nosemaphore; } -Index: linux-stable/arch/um/kernel/trap.c -=================================================================== ---- linux-stable.orig/arch/um/kernel/trap.c -+++ linux-stable/arch/um/kernel/trap.c +--- a/arch/um/kernel/trap.c ++++ b/arch/um/kernel/trap.c @@ -39,7 +39,7 @@ int handle_page_fault(unsigned long addr * If the fault was during atomic operation, don't take the fault, just * fail. @@ -295,10 +257,8 @@ Index: linux-stable/arch/um/kernel/trap.c goto out_nosemaphore; retry: -Index: linux-stable/arch/x86/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/x86/mm/fault.c -+++ linux-stable/arch/x86/mm/fault.c +--- a/arch/x86/mm/fault.c ++++ b/arch/x86/mm/fault.c @@ -1104,7 +1104,7 @@ __do_page_fault(struct pt_regs *regs, un * If we're in an interrupt, have no user context or are running * in an atomic region then we must not take the fault: @@ -308,10 +268,8 @@ Index: linux-stable/arch/x86/mm/fault.c bad_area_nosemaphore(regs, error_code, address); return; } -Index: linux-stable/arch/xtensa/mm/fault.c -=================================================================== ---- linux-stable.orig/arch/xtensa/mm/fault.c -+++ linux-stable/arch/xtensa/mm/fault.c +--- a/arch/xtensa/mm/fault.c ++++ b/arch/xtensa/mm/fault.c @@ -57,7 +57,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.. @@ -321,10 +279,8 @@ Index: linux-stable/arch/xtensa/mm/fault.c bad_page_fault(regs, address, SIGSEGV); return; } -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -52,6 +52,7 @@ struct sched_param { #include #include @@ -343,7 +299,7 @@ Index: linux-stable/include/linux/sched.h #ifdef CONFIG_TRACE_IRQFLAGS unsigned int irq_events; unsigned long hardirq_enable_ip; -@@ -1440,6 +1443,17 @@ static inline void set_numabalancing_sta +@@ -1443,6 +1446,17 @@ static inline void set_numabalancing_sta } #endif @@ -361,10 +317,8 @@ Index: linux-stable/include/linux/sched.h static inline struct pid *task_pid(struct task_struct *task) { return task->pids[PIDTYPE_PID].pid; -Index: linux-stable/kernel/fork.c -=================================================================== ---- linux-stable.orig/kernel/fork.c -+++ linux-stable/kernel/fork.c +--- a/kernel/fork.c ++++ b/kernel/fork.c @@ -1293,7 +1293,9 @@ static struct task_struct *copy_process( p->hardirq_context = 0; p->softirq_context = 0; diff --git a/debian/patches/features/all/rt/peter_zijlstra-frob-rcu.patch b/debian/patches/features/all/rt/peter_zijlstra-frob-rcu.patch index 67cf51b78..d0d9dcc7e 100644 --- a/debian/patches/features/all/rt/peter_zijlstra-frob-rcu.patch +++ b/debian/patches/features/all/rt/peter_zijlstra-frob-rcu.patch @@ -1,7 +1,7 @@ Subject: rcu: Frob softirq test From: Peter Zijlstra Date: Sat Aug 13 00:23:17 CEST 2011 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz With RT_FULL we get the below wreckage: @@ -154,10 +154,8 @@ Signed-off-by: Peter Zijlstra kernel/rcutree_plugin.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/kernel/rcutree_plugin.h -=================================================================== ---- linux-stable.orig/kernel/rcutree_plugin.h -+++ linux-stable/kernel/rcutree_plugin.h +--- a/kernel/rcutree_plugin.h ++++ b/kernel/rcutree_plugin.h @@ -362,7 +362,7 @@ void rcu_read_unlock_special(struct task } diff --git a/debian/patches/features/all/rt/peterz-raw_pagefault_disable.patch b/debian/patches/features/all/rt/peterz-raw_pagefault_disable.patch index abe006bb3..11dfbdce2 100644 --- a/debian/patches/features/all/rt/peterz-raw_pagefault_disable.patch +++ b/debian/patches/features/all/rt/peterz-raw_pagefault_disable.patch @@ -1,7 +1,7 @@ Subject: mm: raw_pagefault_disable From: Peter Zijlstra Date: Fri Aug 05 17:16:58 CEST 2011 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Adding migrate_disable() to pagefault_disable() to preserve the per-cpu thing for kmap_atomic might not have been the best of choices. @@ -79,10 +79,8 @@ Link: http://lkml.kernel.org/n/tip-31keae8mkjiv8esq4rl76cib@git.kernel.org mm/memory.c | 2 ++ 2 files changed, 30 insertions(+), 2 deletions(-) -Index: linux-stable/include/linux/uaccess.h -=================================================================== ---- linux-stable.orig/include/linux/uaccess.h -+++ linux-stable/include/linux/uaccess.h +--- 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. @@ -130,11 +128,9 @@ Index: linux-stable/include/linux/uaccess.h set_fs(old_fs); \ ret; \ }) -Index: linux-stable/mm/memory.c -=================================================================== ---- linux-stable.orig/mm/memory.c -+++ linux-stable/mm/memory.c -@@ -3748,6 +3748,7 @@ unlock: +--- a/mm/memory.c ++++ b/mm/memory.c +@@ -3751,6 +3751,7 @@ unlock: return 0; } @@ -142,7 +138,7 @@ Index: linux-stable/mm/memory.c void pagefault_disable(void) { inc_preempt_count(); -@@ -3776,6 +3777,7 @@ void pagefault_enable(void) +@@ -3779,6 +3780,7 @@ void pagefault_enable(void) preempt_check_resched(); } EXPORT_SYMBOL(pagefault_enable); diff --git a/debian/patches/features/all/rt/peterz-srcu-crypto-chain.patch b/debian/patches/features/all/rt/peterz-srcu-crypto-chain.patch index 565c9021a..2fcee4114 100644 --- a/debian/patches/features/all/rt/peterz-srcu-crypto-chain.patch +++ b/debian/patches/features/all/rt/peterz-srcu-crypto-chain.patch @@ -1,7 +1,7 @@ Subject: crypto: Convert crypto notifier chain to SRCU From: Peter Zijlstra Date: Fri, 05 Oct 2012 09:03:24 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz The crypto notifier deadlocks on RT. Though this can be a real deadlock on mainline as well due to fifo fair rwsems. @@ -119,10 +119,8 @@ Signed-off-by: Thomas Gleixner crypto/internal.h | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) -Index: linux-stable/crypto/algapi.c -=================================================================== ---- linux-stable.orig/crypto/algapi.c -+++ linux-stable/crypto/algapi.c +--- a/crypto/algapi.c ++++ b/crypto/algapi.c @@ -684,13 +684,13 @@ EXPORT_SYMBOL_GPL(crypto_spawn_tfm2); int crypto_register_notifier(struct notifier_block *nb) @@ -139,10 +137,8 @@ Index: linux-stable/crypto/algapi.c } EXPORT_SYMBOL_GPL(crypto_unregister_notifier); -Index: linux-stable/crypto/api.c -=================================================================== ---- linux-stable.orig/crypto/api.c -+++ linux-stable/crypto/api.c +--- a/crypto/api.c ++++ b/crypto/api.c @@ -31,7 +31,7 @@ EXPORT_SYMBOL_GPL(crypto_alg_list); DECLARE_RWSEM(crypto_alg_sem); EXPORT_SYMBOL_GPL(crypto_alg_sem); @@ -165,10 +161,8 @@ Index: linux-stable/crypto/api.c } return ok; -Index: linux-stable/crypto/internal.h -=================================================================== ---- linux-stable.orig/crypto/internal.h -+++ linux-stable/crypto/internal.h +--- a/crypto/internal.h ++++ b/crypto/internal.h @@ -48,7 +48,7 @@ struct crypto_larval { extern struct list_head crypto_alg_list; diff --git a/debian/patches/features/all/rt/pid-h-include-atomic-h.patch b/debian/patches/features/all/rt/pid-h-include-atomic-h.patch index 4e62af1de..485bfdecb 100644 --- a/debian/patches/features/all/rt/pid-h-include-atomic-h.patch +++ b/debian/patches/features/all/rt/pid-h-include-atomic-h.patch @@ -1,17 +1,15 @@ Subject: rwsem-inlcude-fix.patch From: Thomas Gleixner Date: Fri, 15 Jul 2011 21:24:27 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- include/linux/pid.h | 1 + 1 file changed, 1 insertion(+) -Index: linux-stable/include/linux/pid.h -=================================================================== ---- linux-stable.orig/include/linux/pid.h -+++ linux-stable/include/linux/pid.h +--- a/include/linux/pid.h ++++ b/include/linux/pid.h @@ -2,6 +2,7 @@ #define _LINUX_PID_H diff --git a/debian/patches/features/all/rt/ping-sysrq.patch b/debian/patches/features/all/rt/ping-sysrq.patch index 4c3dc42a8..6353fc539 100644 --- a/debian/patches/features/all/rt/ping-sysrq.patch +++ b/debian/patches/features/all/rt/ping-sysrq.patch @@ -1,7 +1,7 @@ Subject: net: sysrq via icmp From: Carsten Emde Date: Tue, 19 Jul 2011 13:51:17 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz There are (probably rare) situations when a system crashed and the system console becomes unresponsive but the network icmp layer still is alive. @@ -19,10 +19,8 @@ Signed-off-by: Carsten Emde net/ipv4/sysctl_net_ipv4.c | 7 +++++++ 4 files changed, 47 insertions(+), 2 deletions(-) -Index: linux-stable/Documentation/sysrq.txt -=================================================================== ---- linux-stable.orig/Documentation/sysrq.txt -+++ linux-stable/Documentation/sysrq.txt +--- a/Documentation/sysrq.txt ++++ b/Documentation/sysrq.txt @@ -57,10 +57,17 @@ On PowerPC - Press 'ALT - Print Screen ( On other - If you know of the key combos for other architectures, please let me know so I can add them to this section. @@ -43,10 +41,8 @@ Index: linux-stable/Documentation/sysrq.txt * What are the 'command' keys? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 'b' - Will immediately reboot the system without syncing or unmounting -Index: linux-stable/include/net/netns/ipv4.h -=================================================================== ---- linux-stable.orig/include/net/netns/ipv4.h -+++ linux-stable/include/net/netns/ipv4.h +--- a/include/net/netns/ipv4.h ++++ b/include/net/netns/ipv4.h @@ -57,6 +57,7 @@ struct netns_ipv4 { int sysctl_icmp_echo_ignore_all; @@ -55,10 +51,8 @@ Index: linux-stable/include/net/netns/ipv4.h int sysctl_icmp_ignore_bogus_error_responses; int sysctl_icmp_ratelimit; int sysctl_icmp_ratemask; -Index: linux-stable/net/ipv4/icmp.c -=================================================================== ---- linux-stable.orig/net/ipv4/icmp.c -+++ linux-stable/net/ipv4/icmp.c +--- a/net/ipv4/icmp.c ++++ b/net/ipv4/icmp.c @@ -69,6 +69,7 @@ #include #include @@ -110,11 +104,9 @@ Index: linux-stable/net/ipv4/icmp.c } } -Index: linux-stable/net/ipv4/sysctl_net_ipv4.c -=================================================================== ---- linux-stable.orig/net/ipv4/sysctl_net_ipv4.c -+++ linux-stable/net/ipv4/sysctl_net_ipv4.c -@@ -790,6 +790,13 @@ static struct ctl_table ipv4_net_table[] +--- a/net/ipv4/sysctl_net_ipv4.c ++++ b/net/ipv4/sysctl_net_ipv4.c +@@ -794,6 +794,13 @@ static struct ctl_table ipv4_net_table[] .proc_handler = proc_dointvec }, { diff --git a/debian/patches/features/all/rt/posix-timers-avoid-wakeups-when-no-timers-are-active.patch b/debian/patches/features/all/rt/posix-timers-avoid-wakeups-when-no-timers-are-active.patch index 04b197040..f7e44c323 100644 --- a/debian/patches/features/all/rt/posix-timers-avoid-wakeups-when-no-timers-are-active.patch +++ b/debian/patches/features/all/rt/posix-timers-avoid-wakeups-when-no-timers-are-active.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Fri, 3 Jul 2009 08:44:44 -0500 Subject: posix-timers: Avoid wakeups when no timers are active -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Waking the thread even when no timers are scheduled is useless. @@ -11,10 +11,8 @@ Signed-off-by: Thomas Gleixner kernel/posix-cpu-timers.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) -Index: linux-stable/kernel/posix-cpu-timers.c -=================================================================== ---- linux-stable.orig/kernel/posix-cpu-timers.c -+++ linux-stable/kernel/posix-cpu-timers.c +--- a/kernel/posix-cpu-timers.c ++++ b/kernel/posix-cpu-timers.c @@ -1446,6 +1446,21 @@ wait_to_die: return 0; } diff --git a/debian/patches/features/all/rt/posix-timers-no-broadcast.patch b/debian/patches/features/all/rt/posix-timers-no-broadcast.patch index e24210734..0ee1676c0 100644 --- a/debian/patches/features/all/rt/posix-timers-no-broadcast.patch +++ b/debian/patches/features/all/rt/posix-timers-no-broadcast.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Fri, 3 Jul 2009 08:29:20 -0500 Subject: posix-timers: Prevent broadcast signals -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Posix timers should not send broadcast signals and kernel only signals. Prevent it. @@ -12,10 +12,8 @@ Signed-off-by: Thomas Gleixner kernel/posix-timers.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -Index: linux-stable/kernel/posix-timers.c -=================================================================== ---- linux-stable.orig/kernel/posix-timers.c -+++ linux-stable/kernel/posix-timers.c +--- a/kernel/posix-timers.c ++++ b/kernel/posix-timers.c @@ -497,6 +497,7 @@ static enum hrtimer_restart posix_timer_ static struct pid *good_sigevent(sigevent_t * event) { diff --git a/debian/patches/features/all/rt/posix-timers-shorten-cpu-timers-thread.patch b/debian/patches/features/all/rt/posix-timers-shorten-cpu-timers-thread.patch index 862b3e9bb..94a8932ab 100644 --- a/debian/patches/features/all/rt/posix-timers-shorten-cpu-timers-thread.patch +++ b/debian/patches/features/all/rt/posix-timers-shorten-cpu-timers-thread.patch @@ -1,7 +1,7 @@ From: Arnaldo Carvalho de Melo Date: Fri, 3 Jul 2009 08:30:00 -0500 Subject: posix-timers: Shorten posix_cpu_timers/ kernel thread names -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Shorten the softirq kernel thread names because they always overflow the limited comm length, appearing as "posix_cpu_timer" CPU# times. @@ -14,10 +14,8 @@ Signed-off-by: Thomas Gleixner kernel/posix-cpu-timers.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/kernel/posix-cpu-timers.c -=================================================================== ---- linux-stable.orig/kernel/posix-cpu-timers.c -+++ linux-stable/kernel/posix-cpu-timers.c +--- a/kernel/posix-cpu-timers.c ++++ b/kernel/posix-cpu-timers.c @@ -1489,7 +1489,7 @@ static int posix_cpu_thread_call(struct switch (action) { case CPU_UP_PREPARE: diff --git a/debian/patches/features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch b/debian/patches/features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch index cd259481f..9f52a6f3c 100644 --- a/debian/patches/features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch +++ b/debian/patches/features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch @@ -1,7 +1,7 @@ From: John Stultz Date: Fri, 3 Jul 2009 08:29:58 -0500 Subject: posix-timers: thread posix-cpu-timers on -rt -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz posix-cpu-timer code takes non -rt safe locks in hard irq context. Move it to a thread. @@ -19,10 +19,8 @@ Signed-off-by: Thomas Gleixner kernel/posix-cpu-timers.c | 183 ++++++++++++++++++++++++++++++++++++++++++++-- 5 files changed, 192 insertions(+), 7 deletions(-) -Index: linux-stable/include/linux/init_task.h -=================================================================== ---- linux-stable.orig/include/linux/init_task.h -+++ linux-stable/include/linux/init_task.h +--- a/include/linux/init_task.h ++++ b/include/linux/init_task.h @@ -143,6 +143,12 @@ extern struct task_group root_task_group # define INIT_PERF_EVENTS(tsk) #endif @@ -44,10 +42,8 @@ Index: linux-stable/include/linux/init_task.h .pids = { \ [PIDTYPE_PID] = INIT_PID_LINK(PIDTYPE_PID), \ [PIDTYPE_PGID] = INIT_PID_LINK(PIDTYPE_PGID), \ -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1185,6 +1185,9 @@ struct task_struct { struct task_cputime cputime_expires; @@ -58,10 +54,8 @@ Index: linux-stable/include/linux/sched.h /* process credentials */ const struct cred __rcu *real_cred; /* objective and real subjective task -Index: linux-stable/init/main.c -=================================================================== ---- linux-stable.orig/init/main.c -+++ linux-stable/init/main.c +--- a/init/main.c ++++ b/init/main.c @@ -6,7 +6,7 @@ * GK 2/5/95 - Changed to support mounting root fs via NFS * Added initrd & change_root: Werner Almesberger & Hans Lermen, Feb '96 @@ -79,10 +73,8 @@ Index: linux-stable/init/main.c #include #include -Index: linux-stable/kernel/fork.c -=================================================================== ---- linux-stable.orig/kernel/fork.c -+++ linux-stable/kernel/fork.c +--- a/kernel/fork.c ++++ b/kernel/fork.c @@ -1113,6 +1113,9 @@ void mm_init_owner(struct mm_struct *mm, */ static void posix_cpu_timers_init(struct task_struct *tsk) @@ -93,10 +85,8 @@ Index: linux-stable/kernel/fork.c tsk->cputime_expires.prof_exp = 0; tsk->cputime_expires.virt_exp = 0; tsk->cputime_expires.sched_exp = 0; -Index: linux-stable/kernel/posix-cpu-timers.c -=================================================================== ---- linux-stable.orig/kernel/posix-cpu-timers.c -+++ linux-stable/kernel/posix-cpu-timers.c +--- a/kernel/posix-cpu-timers.c ++++ b/kernel/posix-cpu-timers.c @@ -3,6 +3,7 @@ */ diff --git a/debian/patches/features/all/rt/power-disable-highmem-on-rt.patch b/debian/patches/features/all/rt/power-disable-highmem-on-rt.patch index 2e9fb5bc1..167b6dac5 100644 --- a/debian/patches/features/all/rt/power-disable-highmem-on-rt.patch +++ b/debian/patches/features/all/rt/power-disable-highmem-on-rt.patch @@ -1,17 +1,15 @@ Subject: power-disable-highmem-on-rt.patch From: Thomas Gleixner Date: Mon, 18 Jul 2011 17:08:34 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- arch/powerpc/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/arch/powerpc/Kconfig -=================================================================== ---- linux-stable.orig/arch/powerpc/Kconfig -+++ linux-stable/arch/powerpc/Kconfig +--- a/arch/powerpc/Kconfig ++++ b/arch/powerpc/Kconfig @@ -286,7 +286,7 @@ menu "Kernel options" config HIGHMEM diff --git a/debian/patches/features/all/rt/power-use-generic-rwsem-on-rt.patch b/debian/patches/features/all/rt/power-use-generic-rwsem-on-rt.patch index 21e8ecbb2..d6ed279ab 100644 --- a/debian/patches/features/all/rt/power-use-generic-rwsem-on-rt.patch +++ b/debian/patches/features/all/rt/power-use-generic-rwsem-on-rt.patch @@ -1,16 +1,14 @@ From: Thomas Gleixner Subject: Powerpc: Use generic rwsem on RT -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- arch/powerpc/Kconfig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -Index: linux-stable/arch/powerpc/Kconfig -=================================================================== ---- linux-stable.orig/arch/powerpc/Kconfig -+++ linux-stable/arch/powerpc/Kconfig +--- a/arch/powerpc/Kconfig ++++ b/arch/powerpc/Kconfig @@ -60,10 +60,11 @@ config LOCKDEP_SUPPORT config RWSEM_GENERIC_SPINLOCK diff --git a/debian/patches/features/all/rt/powerpc-52xx-provide-a-default-in-mpc52xx_irqhost_ma.patch b/debian/patches/features/all/rt/powerpc-52xx-provide-a-default-in-mpc52xx_irqhost_ma.patch new file mode 100644 index 000000000..874e653f1 --- /dev/null +++ b/debian/patches/features/all/rt/powerpc-52xx-provide-a-default-in-mpc52xx_irqhost_ma.patch @@ -0,0 +1,45 @@ +From 2e0298a1786d88ad0cecab167666d2e220ed0499 Mon Sep 17 00:00:00 2001 +From: Sebastian Andrzej Siewior +Date: Mon, 12 Aug 2013 16:11:51 +0200 +Subject: [PATCH] powerpc: 52xx: provide a default in mpc52xx_irqhost_map() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz + +My gcc-4.3.5 fails to compile due to: + +|cc1: warnings being treated as errors +|arch/powerpc/platforms/52xx/mpc52xx_pic.c: In function ‘mpc52xx_irqhost_map’: +|arch/powerpc/platforms/52xx/mpc52xx_pic.c:343: error: ‘irqchip’ may be used uninitialized in this function + +since commit e34298c ("powerpc: 52xx: nop out unsupported critical +IRQs"). This warning is complete crap since only values 0
3 are possible +which are checked but gcc fails to understand that. I wouldn't care much +but since this is compiled with -Werror I made this patch. +While add it, I replaced the warning from l2irq to l1irq since this is +the number that is evaluated. + +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/powerpc/platforms/52xx/mpc52xx_pic.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/arch/powerpc/platforms/52xx/mpc52xx_pic.c b/arch/powerpc/platforms/52xx/mpc52xx_pic.c +index b89ef65..b69221b 100644 +--- a/arch/powerpc/platforms/52xx/mpc52xx_pic.c ++++ b/arch/powerpc/platforms/52xx/mpc52xx_pic.c +@@ -373,8 +373,9 @@ static int mpc52xx_irqhost_map(struct irq_domain *h, unsigned int virq, + case MPC52xx_IRQ_L1_PERP: irqchip = &mpc52xx_periph_irqchip; break; + case MPC52xx_IRQ_L1_SDMA: irqchip = &mpc52xx_sdma_irqchip; break; + case MPC52xx_IRQ_L1_CRIT: ++ default: + pr_warn("%s: Critical IRQ #%d is unsupported! Nopping it.\n", +- __func__, l2irq); ++ __func__, l1irq); + irq_set_chip(virq, &no_irq_chip); + return 0; + } +-- +1.8.4.rc1 + diff --git a/debian/patches/features/all/rt/powerpc-preempt-lazy-support.patch b/debian/patches/features/all/rt/powerpc-preempt-lazy-support.patch index ecd667b1f..3b60bbeb3 100644 --- a/debian/patches/features/all/rt/powerpc-preempt-lazy-support.patch +++ b/debian/patches/features/all/rt/powerpc-preempt-lazy-support.patch @@ -1,21 +1,19 @@ -Subject: powerpc-preempt-lazy-support.patch From: Thomas Gleixner -Date: Thu, 01 Nov 2012 10:14:11 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Date: Thu, 1 Nov 2012 10:14:11 +0100 +Subject: [PATCH] powerpc-preempt-lazy-support.patch +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- arch/powerpc/Kconfig | 1 - arch/powerpc/include/asm/thread_info.h | 8 ++++- + arch/powerpc/include/asm/thread_info.h | 12 ++++++-- arch/powerpc/kernel/asm-offsets.c | 1 arch/powerpc/kernel/entry_32.S | 17 ++++++++--- arch/powerpc/kernel/entry_64.S | 48 +++++++++++++++++++-------------- - 5 files changed, 49 insertions(+), 26 deletions(-) + 5 files changed, 51 insertions(+), 28 deletions(-) -Index: linux-stable/arch/powerpc/Kconfig -=================================================================== ---- linux-stable.orig/arch/powerpc/Kconfig -+++ linux-stable/arch/powerpc/Kconfig +--- a/arch/powerpc/Kconfig ++++ b/arch/powerpc/Kconfig @@ -133,6 +133,7 @@ config PPC select GENERIC_CLOCKEVENTS select GENERIC_STRNCPY_FROM_USER @@ -24,10 +22,8 @@ Index: linux-stable/arch/powerpc/Kconfig select HAVE_MOD_ARCH_SPECIFIC select MODULES_USE_ELF_RELA select CLONE_BACKWARDS -Index: linux-stable/arch/powerpc/include/asm/thread_info.h -=================================================================== ---- linux-stable.orig/arch/powerpc/include/asm/thread_info.h -+++ linux-stable/arch/powerpc/include/asm/thread_info.h +--- a/arch/powerpc/include/asm/thread_info.h ++++ b/arch/powerpc/include/asm/thread_info.h @@ -43,6 +43,8 @@ struct thread_info { int cpu; /* cpu we're on */ int preempt_count; /* 0 => preemptable, @@ -37,11 +33,22 @@ Index: linux-stable/arch/powerpc/include/asm/thread_info.h struct restart_block restart_block; unsigned long local_flags; /* private flags for thread */ -@@ -107,6 +109,7 @@ static inline struct thread_info *curren +@@ -90,8 +92,7 @@ static inline struct thread_info *curren + #define TIF_SYSCALL_TRACE 0 /* syscall trace active */ + #define TIF_SIGPENDING 1 /* signal pending */ + #define TIF_NEED_RESCHED 2 /* rescheduling necessary */ +-#define TIF_POLLING_NRFLAG 3 /* true if poll_idle() is polling +- TIF_NEED_RESCHED */ ++#define TIF_NEED_RESCHED_LAZY 3 /* lazy rescheduling necessary */ + #define TIF_32BIT 4 /* 32 bit binary */ + #define TIF_PERFMON_WORK 5 /* work for pfm_handle_work() */ + #define TIF_PERFMON_CTXSW 6 /* perfmon needs ctxsw calls */ +@@ -107,6 +108,8 @@ static inline struct thread_info *curren #define TIF_EMULATE_STACK_STORE 16 /* Is an instruction emulation for stack store? */ #define TIF_MEMDIE 17 /* is terminating due to OOM killer */ -+#define TIF_NEED_RESCHED_LAZY 18 /* lazy rescheduling necessary */ ++#define TIF_POLLING_NRFLAG 18 /* true if poll_idle() is polling ++ TIF_NEED_RESCHED */ /* as above, but as bit values */ #define _TIF_SYSCALL_TRACE (1< +Date: Mon, 18 Jun 2012 19:53:17 +0200 +Subject: powerpc: Mark low level irq handlers NO_THREAD +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz + +These low level handlers cannot be threaded. Mark them NO_THREAD + +Reported-by: leroy christophe +Tested-by: leroy christophe +Signed-off-by: Thomas Gleixner + +--- + arch/powerpc/platforms/8xx/m8xx_setup.c | 1 + + arch/powerpc/sysdev/cpm1.c | 1 + + 2 files changed, 2 insertions(+) + +--- a/arch/powerpc/platforms/8xx/m8xx_setup.c ++++ b/arch/powerpc/platforms/8xx/m8xx_setup.c +@@ -43,6 +43,7 @@ static irqreturn_t timebase_interrupt(in + + static struct irqaction tbint_irqaction = { + .handler = timebase_interrupt, ++ .flags = IRQF_NO_THREAD, + .name = "tbint", + }; + +--- a/arch/powerpc/sysdev/cpm1.c ++++ b/arch/powerpc/sysdev/cpm1.c +@@ -120,6 +120,7 @@ static irqreturn_t cpm_error_interrupt(i + + static struct irqaction cpm_error_irqaction = { + .handler = cpm_error_interrupt, ++ .flags = IRQF_NO_THREAD, + .name = "error", + }; + diff --git a/debian/patches/features/all/rt/preempt-lazy-support.patch b/debian/patches/features/all/rt/preempt-lazy-support.patch index 41874e43c..60fbe225d 100644 --- a/debian/patches/features/all/rt/preempt-lazy-support.patch +++ b/debian/patches/features/all/rt/preempt-lazy-support.patch @@ -1,7 +1,7 @@ Subject: sched: Add support for lazy preemption From: Thomas Gleixner Date: Fri, 26 Oct 2012 18:50:54 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz It has become an obsession to mitigate the determinism vs. throughput loss of RT. Looking at the mainline semantics of preemption points @@ -66,10 +66,8 @@ Signed-off-by: Thomas Gleixner kernel/trace/trace_output.c | 13 +++++++-- 11 files changed, 206 insertions(+), 34 deletions(-) -Index: linux-stable/include/linux/ftrace_event.h -=================================================================== ---- linux-stable.orig/include/linux/ftrace_event.h -+++ linux-stable/include/linux/ftrace_event.h +--- a/include/linux/ftrace_event.h ++++ b/include/linux/ftrace_event.h @@ -58,6 +58,7 @@ struct trace_entry { int pid; unsigned short migrate_disable; @@ -78,10 +76,8 @@ Index: linux-stable/include/linux/ftrace_event.h }; #define FTRACE_MAX_EVENT \ -Index: linux-stable/include/linux/preempt.h -=================================================================== ---- linux-stable.orig/include/linux/preempt.h -+++ linux-stable/include/linux/preempt.h +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h @@ -23,15 +23,38 @@ #define preempt_count() (current_thread_info()->preempt_count) @@ -149,10 +145,8 @@ Index: linux-stable/include/linux/preempt.h /* For debugging and tracer internals only! */ #define add_preempt_count_notrace(val) \ -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -2454,6 +2454,52 @@ static inline int test_tsk_need_resched( return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED)); } @@ -218,10 +212,8 @@ Index: linux-stable/include/linux/sched.h /* * cond_resched() and cond_resched_lock(): latency reduction via * explicit rescheduling in places that are safe. The return -Index: linux-stable/kernel/Kconfig.preempt -=================================================================== ---- linux-stable.orig/kernel/Kconfig.preempt -+++ linux-stable/kernel/Kconfig.preempt +--- a/kernel/Kconfig.preempt ++++ b/kernel/Kconfig.preempt @@ -6,6 +6,12 @@ config PREEMPT_RT_BASE bool select PREEMPT @@ -235,10 +227,8 @@ Index: linux-stable/kernel/Kconfig.preempt choice prompt "Preemption Model" default PREEMPT_NONE -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c @@ -538,6 +538,37 @@ void resched_task(struct task_struct *p) smp_send_reschedule(cpu); } @@ -295,7 +285,7 @@ Index: linux-stable/kernel/sched/core.c #endif /* CONFIG_SMP */ #if defined(CONFIG_RT_GROUP_SCHED) || (defined(CONFIG_FAIR_GROUP_SCHED) && \ -@@ -1776,6 +1818,9 @@ void sched_fork(struct task_struct *p) +@@ -1736,6 +1778,9 @@ void sched_fork(struct task_struct *p) /* Want to start with kernel preemption disabled. */ task_thread_info(p)->preempt_count = 1; #endif @@ -305,7 +295,7 @@ Index: linux-stable/kernel/sched/core.c #ifdef CONFIG_SMP plist_node_init(&p->pushable_tasks, MAX_PRIO); #endif -@@ -2993,6 +3038,7 @@ void migrate_disable(void) +@@ -2953,6 +2998,7 @@ void migrate_disable(void) return; } @@ -313,7 +303,7 @@ Index: linux-stable/kernel/sched/core.c pin_current_cpu(); p->migrate_disable = 1; preempt_enable(); -@@ -3048,6 +3094,7 @@ void migrate_enable(void) +@@ -3008,6 +3054,7 @@ void migrate_enable(void) unpin_current_cpu(); preempt_enable(); @@ -321,7 +311,7 @@ Index: linux-stable/kernel/sched/core.c } EXPORT_SYMBOL(migrate_enable); #else -@@ -3184,6 +3231,7 @@ need_resched: +@@ -3129,6 +3176,7 @@ need_resched: put_prev_task(rq, prev); next = pick_next_task(rq); clear_tsk_need_resched(prev); @@ -329,7 +319,7 @@ Index: linux-stable/kernel/sched/core.c rq->skip_clock_update = 0; if (likely(prev != next)) { -@@ -3275,6 +3323,14 @@ asmlinkage void __sched notrace preempt_ +@@ -3235,6 +3283,14 @@ asmlinkage void __sched notrace preempt_ if (likely(ti->preempt_count || irqs_disabled())) return; @@ -344,7 +334,7 @@ Index: linux-stable/kernel/sched/core.c do { add_preempt_count_notrace(PREEMPT_ACTIVE); /* -@@ -4955,7 +5011,9 @@ void __cpuinit init_idle(struct task_str +@@ -4946,7 +5002,9 @@ void __cpuinit init_idle(struct task_str /* Set the preempt count _outside_ the spinlocks! */ task_thread_info(idle)->preempt_count = 0; @@ -355,10 +345,8 @@ Index: linux-stable/kernel/sched/core.c /* * The idle tasks have their own, simple scheduling class: */ -Index: linux-stable/kernel/sched/fair.c -=================================================================== ---- linux-stable.orig/kernel/sched/fair.c -+++ linux-stable/kernel/sched/fair.c +--- a/kernel/sched/fair.c ++++ b/kernel/sched/fair.c @@ -1847,7 +1847,7 @@ check_preempt_tick(struct cfs_rq *cfs_rq ideal_runtime = sched_slice(cfs_rq, curr); delta_exec = curr->sum_exec_runtime - curr->prev_sum_exec_runtime; @@ -431,10 +419,8 @@ Index: linux-stable/kernel/sched/fair.c } else check_preempt_curr(rq, p, 0); } -Index: linux-stable/kernel/sched/features.h -=================================================================== ---- linux-stable.orig/kernel/sched/features.h -+++ linux-stable/kernel/sched/features.h +--- a/kernel/sched/features.h ++++ b/kernel/sched/features.h @@ -58,6 +58,9 @@ SCHED_FEAT(NONTASK_POWER, true) SCHED_FEAT(TTWU_QUEUE, true) #else @@ -445,10 +431,8 @@ Index: linux-stable/kernel/sched/features.h #endif SCHED_FEAT(FORCE_SD_OVERLAP, false) -Index: linux-stable/kernel/sched/sched.h -=================================================================== ---- linux-stable.orig/kernel/sched/sched.h -+++ linux-stable/kernel/sched/sched.h +--- a/kernel/sched/sched.h ++++ b/kernel/sched/sched.h @@ -1059,6 +1059,15 @@ extern void init_sched_fair_class(void); extern void resched_task(struct task_struct *p); extern void resched_cpu(int cpu); @@ -465,11 +449,9 @@ Index: linux-stable/kernel/sched/sched.h extern struct rt_bandwidth def_rt_bandwidth; extern void init_rt_bandwidth(struct rt_bandwidth *rt_b, u64 period, u64 runtime); -Index: linux-stable/kernel/trace/trace.c -=================================================================== ---- linux-stable.orig/kernel/trace/trace.c -+++ linux-stable/kernel/trace/trace.c -@@ -1409,6 +1409,7 @@ tracing_generic_entry_update(struct trac +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -1439,6 +1439,7 @@ tracing_generic_entry_update(struct trac struct task_struct *tsk = current; entry->preempt_count = pc & 0xff; @@ -477,7 +459,7 @@ Index: linux-stable/kernel/trace/trace.c entry->pid = (tsk) ? tsk->pid : 0; entry->flags = #ifdef CONFIG_TRACE_IRQFLAGS_SUPPORT -@@ -1418,7 +1419,8 @@ tracing_generic_entry_update(struct trac +@@ -1448,7 +1449,8 @@ tracing_generic_entry_update(struct trac #endif ((pc & HARDIRQ_MASK) ? TRACE_FLAG_HARDIRQ : 0) | ((pc & SOFTIRQ_MASK) ? TRACE_FLAG_SOFTIRQ : 0) | @@ -487,7 +469,7 @@ Index: linux-stable/kernel/trace/trace.c entry->migrate_disable = (tsk) ? __migrate_disabled(tsk) & 0xFF : 0; } -@@ -2319,15 +2321,17 @@ get_total_entries(struct trace_buffer *b +@@ -2349,15 +2351,17 @@ get_total_entries(struct trace_buffer *b static void print_lat_help_header(struct seq_file *m) { @@ -514,7 +496,7 @@ Index: linux-stable/kernel/trace/trace.c } static void print_event_info(struct trace_buffer *buf, struct seq_file *m) -@@ -2351,13 +2355,16 @@ static void print_func_help_header(struc +@@ -2381,13 +2385,16 @@ static void print_func_help_header(struc static void print_func_help_header_irq(struct trace_buffer *buf, struct seq_file *m) { print_event_info(buf, m); @@ -538,10 +520,8 @@ Index: linux-stable/kernel/trace/trace.c } void -Index: linux-stable/kernel/trace/trace.h -=================================================================== ---- linux-stable.orig/kernel/trace/trace.h -+++ linux-stable/kernel/trace/trace.h +--- a/kernel/trace/trace.h ++++ b/kernel/trace/trace.h @@ -117,6 +117,7 @@ struct kretprobe_trace_entry_head { * NEED_RESCHED - reschedule is requested * HARDIRQ - inside an interrupt handler @@ -558,10 +538,8 @@ Index: linux-stable/kernel/trace/trace.h }; #define TRACE_BUF_SIZE 1024 -Index: linux-stable/kernel/trace/trace_output.c -=================================================================== ---- linux-stable.orig/kernel/trace/trace_output.c -+++ linux-stable/kernel/trace/trace_output.c +--- a/kernel/trace/trace_output.c ++++ b/kernel/trace/trace_output.c @@ -606,6 +606,7 @@ int trace_print_lat_fmt(struct trace_seq { char hardsoft_irq; diff --git a/debian/patches/features/all/rt/preempt-nort-rt-variants.patch b/debian/patches/features/all/rt/preempt-nort-rt-variants.patch index 5f6690143..76acf5bdd 100644 --- a/debian/patches/features/all/rt/preempt-nort-rt-variants.patch +++ b/debian/patches/features/all/rt/preempt-nort-rt-variants.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Fri, 24 Jul 2009 12:38:56 +0200 Subject: preempt: Provide preempt_*_(no)rt variants -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz RT needs a few preempt_disable/enable points which are not necessary otherwise. Implement variants to avoid #ifdeffery. @@ -12,10 +12,8 @@ Signed-off-by: Thomas Gleixner include/linux/preempt.h | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) -Index: linux-stable/include/linux/preempt.h -=================================================================== ---- linux-stable.orig/include/linux/preempt.h -+++ linux-stable/include/linux/preempt.h +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h @@ -70,11 +70,15 @@ do { \ dec_preempt_count(); \ } while (0) diff --git a/debian/patches/features/all/rt/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch b/debian/patches/features/all/rt/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch index 1e528e4d8..91fa6011d 100644 --- a/debian/patches/features/all/rt/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch +++ b/debian/patches/features/all/rt/printk-27force_early_printk-27-boot-param-to-help-with-debugging.patch @@ -1,7 +1,7 @@ Subject: printk: %27force_early_printk%27 boot param to help with debugging From: Peter Zijlstra Date: Fri, 02 Sep 2011 14:41:29 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Subject: printk: 'force_early_printk' boot param to help with debugging From: Peter Zijlstra @@ -18,10 +18,8 @@ Link: http://lkml.kernel.org/n/tip-ykb97nsfmobq44xketrxs977@git.kernel.org kernel/printk.c | 7 +++++++ 1 file changed, 7 insertions(+) -Index: linux-stable/kernel/printk.c -=================================================================== ---- linux-stable.orig/kernel/printk.c -+++ linux-stable/kernel/printk.c +--- a/kernel/printk.c ++++ b/kernel/printk.c @@ -1523,6 +1523,13 @@ asmlinkage void early_printk(const char */ static bool __read_mostly printk_killswitch; diff --git a/debian/patches/features/all/rt/printk-kill.patch b/debian/patches/features/all/rt/printk-kill.patch index 0d9cac91b..32b07a168 100644 --- a/debian/patches/features/all/rt/printk-kill.patch +++ b/debian/patches/features/all/rt/printk-kill.patch @@ -1,7 +1,7 @@ Subject: printk-kill.patch From: Ingo Molnar Date: Fri, 22 Jul 2011 17:58:40 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -10,10 +10,8 @@ Signed-off-by: Thomas Gleixner kernel/watchdog.c | 15 ++++++++- 3 files changed, 71 insertions(+), 26 deletions(-) -Index: linux-stable/include/linux/printk.h -=================================================================== ---- linux-stable.orig/include/linux/printk.h -+++ linux-stable/include/linux/printk.h +--- a/include/linux/printk.h ++++ b/include/linux/printk.h @@ -101,9 +101,11 @@ int no_printk(const char *fmt, ...) extern asmlinkage __printf(1, 2) void early_printk(const char *fmt, ...); @@ -34,10 +32,8 @@ Index: linux-stable/include/linux/printk.h extern int printk_delay_msec; extern int dmesg_restrict; extern int kptr_restrict; -Index: linux-stable/kernel/printk.c -=================================================================== ---- linux-stable.orig/kernel/printk.c -+++ linux-stable/kernel/printk.c +--- a/kernel/printk.c ++++ b/kernel/printk.c @@ -1493,6 +1493,55 @@ static size_t cont_print_text(char *text return textlen; } @@ -138,10 +134,8 @@ Index: linux-stable/kernel/printk.c static int __add_preferred_console(char *name, int idx, char *options, char *brl_options) { -Index: linux-stable/kernel/watchdog.c -=================================================================== ---- linux-stable.orig/kernel/watchdog.c -+++ linux-stable/kernel/watchdog.c +--- a/kernel/watchdog.c ++++ b/kernel/watchdog.c @@ -205,6 +205,8 @@ static int is_softlockup(unsigned long t #ifdef CONFIG_HARDLOCKUP_DETECTOR diff --git a/debian/patches/features/all/rt/printk-rt-aware.patch b/debian/patches/features/all/rt/printk-rt-aware.patch index 2157987e6..40b474792 100644 --- a/debian/patches/features/all/rt/printk-rt-aware.patch +++ b/debian/patches/features/all/rt/printk-rt-aware.patch @@ -1,17 +1,15 @@ Subject: printk-rt-aware.patch From: Thomas Gleixner Date: Wed, 19 Sep 2012 14:50:37 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- kernel/printk.c | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) -Index: linux-stable/kernel/printk.c -=================================================================== ---- linux-stable.orig/kernel/printk.c -+++ linux-stable/kernel/printk.c +--- a/kernel/printk.c ++++ b/kernel/printk.c @@ -1277,6 +1277,7 @@ static void call_console_drivers(int lev if (!console_drivers) return; diff --git a/debian/patches/features/all/rt/radix-tree-rt-aware.patch b/debian/patches/features/all/rt/radix-tree-rt-aware.patch index d920f87b9..763fb42cd 100644 --- a/debian/patches/features/all/rt/radix-tree-rt-aware.patch +++ b/debian/patches/features/all/rt/radix-tree-rt-aware.patch @@ -1,7 +1,7 @@ Subject: radix-tree-rt-aware.patch From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:33:18 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -9,10 +9,8 @@ Signed-off-by: Thomas Gleixner lib/radix-tree.c | 5 ++++- 2 files changed, 11 insertions(+), 2 deletions(-) -Index: linux-stable/include/linux/radix-tree.h -=================================================================== ---- linux-stable.orig/include/linux/radix-tree.h -+++ linux-stable/include/linux/radix-tree.h +--- a/include/linux/radix-tree.h ++++ b/include/linux/radix-tree.h @@ -230,7 +230,13 @@ unsigned long radix_tree_next_hole(struc unsigned long index, unsigned long max_scan); unsigned long radix_tree_prev_hole(struct radix_tree_root *root, @@ -36,10 +34,8 @@ Index: linux-stable/include/linux/radix-tree.h } /** -Index: linux-stable/lib/radix-tree.c -=================================================================== ---- linux-stable.orig/lib/radix-tree.c -+++ linux-stable/lib/radix-tree.c +--- a/lib/radix-tree.c ++++ b/lib/radix-tree.c @@ -215,12 +215,13 @@ radix_tree_node_alloc(struct radix_tree_ * succeed in getting a node here (and never reach * kmem_cache_alloc) diff --git a/debian/patches/features/all/rt/random-make-it-work-on-rt.patch b/debian/patches/features/all/rt/random-make-it-work-on-rt.patch index 738407a0f..86dcbd1f0 100644 --- a/debian/patches/features/all/rt/random-make-it-work-on-rt.patch +++ b/debian/patches/features/all/rt/random-make-it-work-on-rt.patch @@ -1,7 +1,7 @@ Subject: random: Make it work on rt From: Thomas Gleixner Date: Tue, 21 Aug 2012 20:38:50 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Delegate the random insertion to the forced threaded interrupt handler. Store the return IP of the hard interrupt handler in the irq @@ -18,10 +18,8 @@ Cc: stable-rt@vger.kernel.org kernel/irq/manage.c | 6 ++++++ 5 files changed, 21 insertions(+), 6 deletions(-) -Index: linux-stable/drivers/char/random.c -=================================================================== ---- linux-stable.orig/drivers/char/random.c -+++ linux-stable/drivers/char/random.c +--- a/drivers/char/random.c ++++ b/drivers/char/random.c @@ -742,18 +742,16 @@ EXPORT_SYMBOL_GPL(add_input_randomness); static DEFINE_PER_CPU(struct fast_pool, irq_randomness); @@ -55,10 +53,8 @@ Index: linux-stable/drivers/char/random.c /* * If we don't have a valid cycle counter, and we see * back-to-back timer interrupts, then skip giving credit for -Index: linux-stable/include/linux/irqdesc.h -=================================================================== ---- linux-stable.orig/include/linux/irqdesc.h -+++ linux-stable/include/linux/irqdesc.h +--- a/include/linux/irqdesc.h ++++ b/include/linux/irqdesc.h @@ -52,6 +52,7 @@ struct irq_desc { unsigned int irq_count; /* For detecting broken IRQs */ unsigned long last_unhandled; /* Aging timer for unhandled count */ @@ -67,10 +63,8 @@ Index: linux-stable/include/linux/irqdesc.h raw_spinlock_t lock; struct cpumask *percpu_enabled; #ifdef CONFIG_SMP -Index: linux-stable/include/linux/random.h -=================================================================== ---- linux-stable.orig/include/linux/random.h -+++ linux-stable/include/linux/random.h +--- a/include/linux/random.h ++++ b/include/linux/random.h @@ -12,7 +12,7 @@ extern void add_device_randomness(const void *, unsigned int); extern void add_input_randomness(unsigned int type, unsigned int code, @@ -80,10 +74,8 @@ Index: linux-stable/include/linux/random.h extern void get_random_bytes(void *buf, int nbytes); extern void get_random_bytes_arch(void *buf, int nbytes); -Index: linux-stable/kernel/irq/handle.c -=================================================================== ---- linux-stable.orig/kernel/irq/handle.c -+++ linux-stable/kernel/irq/handle.c +--- a/kernel/irq/handle.c ++++ b/kernel/irq/handle.c @@ -132,6 +132,8 @@ static void irq_wake_thread(struct irq_d irqreturn_t handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action) @@ -106,10 +98,8 @@ Index: linux-stable/kernel/irq/handle.c if (!noirqdebug) note_interrupt(irq, desc, retval); -Index: linux-stable/kernel/irq/manage.c -=================================================================== ---- linux-stable.orig/kernel/irq/manage.c -+++ linux-stable/kernel/irq/manage.c +--- a/kernel/irq/manage.c ++++ b/kernel/irq/manage.c @@ -880,6 +880,12 @@ static int irq_thread(void *data) if (!noirqdebug) note_interrupt(action->irq, desc, action_ret); diff --git a/debian/patches/features/all/rt/rcu-disable-rcu-fast-no-hz-on-rt.patch b/debian/patches/features/all/rt/rcu-disable-rcu-fast-no-hz-on-rt.patch index 83f4be47b..ff644c94f 100644 --- a/debian/patches/features/all/rt/rcu-disable-rcu-fast-no-hz-on-rt.patch +++ b/debian/patches/features/all/rt/rcu-disable-rcu-fast-no-hz-on-rt.patch @@ -1,7 +1,7 @@ Subject: rcu: Disable RCU_FAST_NO_HZ on RT From: Thomas Gleixner Date: Sun, 28 Oct 2012 13:26:09 +0000 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz This uses a timer_list timer from the irq disabled guts of the idle code. Disable it for now to prevent wreckage. @@ -12,10 +12,8 @@ Cc: stable-rt@vger.kernel.org init/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/init/Kconfig -=================================================================== ---- linux-stable.orig/init/Kconfig -+++ linux-stable/init/Kconfig +--- a/init/Kconfig ++++ b/init/Kconfig @@ -577,7 +577,7 @@ config RCU_FANOUT_EXACT config RCU_FAST_NO_HZ diff --git a/debian/patches/features/all/rt/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch b/debian/patches/features/all/rt/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch index c6f315b51..6aa6ef65c 100644 --- a/debian/patches/features/all/rt/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch +++ b/debian/patches/features/all/rt/rcu-merge-rcu-bh-into-rcu-preempt-for-rt.patch @@ -1,7 +1,7 @@ Subject: rcu: Merge RCU-bh into RCU-preempt Date: Wed, 5 Oct 2011 11:59:38 -0700 From: Thomas Gleixner -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz The Linux kernel has long RCU-bh read-side critical sections that intolerably increase scheduling latency under mainline's RCU-bh rules, @@ -31,10 +31,8 @@ Signed-off-by: Thomas Gleixner kernel/rcutree.c | 10 ++++++++++ 4 files changed, 53 insertions(+), 2 deletions(-) -Index: linux-stable/include/linux/rcupdate.h -=================================================================== ---- linux-stable.orig/include/linux/rcupdate.h -+++ linux-stable/include/linux/rcupdate.h +--- a/include/linux/rcupdate.h ++++ b/include/linux/rcupdate.h @@ -128,6 +128,9 @@ extern void call_rcu(struct rcu_head *he #endif /* #else #ifdef CONFIG_PREEMPT_RCU */ @@ -112,10 +110,8 @@ Index: linux-stable/include/linux/rcupdate.h local_bh_enable(); } -Index: linux-stable/include/linux/rcutree.h -=================================================================== ---- linux-stable.orig/include/linux/rcutree.h -+++ linux-stable/include/linux/rcutree.h +--- a/include/linux/rcutree.h ++++ b/include/linux/rcutree.h @@ -45,7 +45,11 @@ static inline void rcu_virt_note_context rcu_note_context_switch(cpu); } @@ -161,10 +157,8 @@ Index: linux-stable/include/linux/rcutree.h +#endif + #endif /* __LINUX_RCUTREE_H */ -Index: linux-stable/kernel/rcupdate.c -=================================================================== ---- linux-stable.orig/kernel/rcupdate.c -+++ linux-stable/kernel/rcupdate.c +--- a/kernel/rcupdate.c ++++ b/kernel/rcupdate.c @@ -156,6 +156,7 @@ int debug_lockdep_rcu_enabled(void) } EXPORT_SYMBOL_GPL(debug_lockdep_rcu_enabled); @@ -181,10 +175,8 @@ Index: linux-stable/kernel/rcupdate.c #endif /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */ -Index: linux-stable/kernel/rcutree.c -=================================================================== ---- linux-stable.orig/kernel/rcutree.c -+++ linux-stable/kernel/rcutree.c +--- a/kernel/rcutree.c ++++ b/kernel/rcutree.c @@ -182,6 +182,7 @@ void rcu_sched_qs(int cpu) rdp->passed_quiesce = 1; } diff --git a/debian/patches/features/all/rt/rcu-more-swait-conversions.patch b/debian/patches/features/all/rt/rcu-more-swait-conversions.patch index f3423893e..337bc7745 100644 --- a/debian/patches/features/all/rt/rcu-more-swait-conversions.patch +++ b/debian/patches/features/all/rt/rcu-more-swait-conversions.patch @@ -1,7 +1,7 @@ Subject: rcu-more-swait-conversions.patch From: Thomas Gleixner Date: Wed, 31 Jul 2013 19:00:35 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -9,10 +9,8 @@ Signed-off-by: Thomas Gleixner kernel/rcutree_plugin.h | 14 +++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) -Index: linux-stable/kernel/rcutree.h -=================================================================== ---- linux-stable.orig/kernel/rcutree.h -+++ linux-stable/kernel/rcutree.h +--- a/kernel/rcutree.h ++++ b/kernel/rcutree.h @@ -28,6 +28,7 @@ #include #include @@ -39,10 +37,8 @@ Index: linux-stable/kernel/rcutree.h struct task_struct *nocb_kthread; #endif /* #ifdef CONFIG_RCU_NOCB_CPU */ -Index: linux-stable/kernel/rcutree_plugin.h -=================================================================== ---- linux-stable.orig/kernel/rcutree_plugin.h -+++ linux-stable/kernel/rcutree_plugin.h +--- a/kernel/rcutree_plugin.h ++++ b/kernel/rcutree_plugin.h @@ -2036,7 +2036,7 @@ static int rcu_nocb_needs_gp(struct rcu_ */ static void rcu_nocb_gp_cleanup(struct rcu_state *rsp, struct rcu_node *rnp) diff --git a/debian/patches/features/all/rt/rcu-tiny-merge-bh.patch b/debian/patches/features/all/rt/rcu-tiny-merge-bh.patch index a6ba4eae6..9deec0f0e 100644 --- a/debian/patches/features/all/rt/rcu-tiny-merge-bh.patch +++ b/debian/patches/features/all/rt/rcu-tiny-merge-bh.patch @@ -1,17 +1,15 @@ Subject: rcu-more-fallout.patch From: Thomas Gleixner Date: Mon, 14 Nov 2011 10:57:54 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- kernel/rcutiny.c | 2 ++ 1 file changed, 2 insertions(+) -Index: linux-stable/kernel/rcutiny.c -=================================================================== ---- linux-stable.orig/kernel/rcutiny.c -+++ linux-stable/kernel/rcutiny.c +--- a/kernel/rcutiny.c ++++ b/kernel/rcutiny.c @@ -373,6 +373,7 @@ void call_rcu_sched(struct rcu_head *hea } EXPORT_SYMBOL_GPL(call_rcu_sched); diff --git a/debian/patches/features/all/rt/rcu-tiny-solve-rt-mistery.patch b/debian/patches/features/all/rt/rcu-tiny-solve-rt-mistery.patch index 00a39e1bd..a5591a843 100644 --- a/debian/patches/features/all/rt/rcu-tiny-solve-rt-mistery.patch +++ b/debian/patches/features/all/rt/rcu-tiny-solve-rt-mistery.patch @@ -1,7 +1,7 @@ Subject: rcu: rcutiny: Prevent RCU stall From: Thomas Gleixner Date: Tue, 16 Oct 2012 18:36:51 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz rcu_read_unlock_special() checks in_serving_softirq() and leaves early when true. On RT this is obviously wrong as softirq processing context @@ -30,10 +30,8 @@ Cc: stable-rt@vger.kernel.org kernel/rcutiny_plugin.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/kernel/rcutiny_plugin.h -=================================================================== ---- linux-stable.orig/kernel/rcutiny_plugin.h -+++ linux-stable/kernel/rcutiny_plugin.h +--- a/kernel/rcutiny_plugin.h ++++ b/kernel/rcutiny_plugin.h @@ -609,7 +609,7 @@ void rcu_read_unlock_special(struct task rcu_preempt_cpu_qs(); diff --git a/debian/patches/features/all/rt/rcutiny-use-simple-waitqueue.patch b/debian/patches/features/all/rt/rcutiny-use-simple-waitqueue.patch index 7db20d85c..08c496106 100644 --- a/debian/patches/features/all/rt/rcutiny-use-simple-waitqueue.patch +++ b/debian/patches/features/all/rt/rcutiny-use-simple-waitqueue.patch @@ -1,7 +1,7 @@ Subject: rcutiny: Use simple waitqueue From: Thomas Gleixner Date: Mon, 03 Dec 2012 16:25:21 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Simple waitqueues can be handled from interrupt disabled contexts. @@ -10,10 +10,8 @@ Signed-off-by: Thomas Gleixner kernel/rcutiny_plugin.h | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) -Index: linux-stable/kernel/rcutiny_plugin.h -=================================================================== ---- linux-stable.orig/kernel/rcutiny_plugin.h -+++ linux-stable/kernel/rcutiny_plugin.h +--- a/kernel/rcutiny_plugin.h ++++ b/kernel/rcutiny_plugin.h @@ -26,6 +26,7 @@ #include #include diff --git a/debian/patches/features/all/rt/re-migrate_disable-race-with-cpu-hotplug-3f.patch b/debian/patches/features/all/rt/re-migrate_disable-race-with-cpu-hotplug-3f.patch index a0b24156d..ff50b3633 100644 --- a/debian/patches/features/all/rt/re-migrate_disable-race-with-cpu-hotplug-3f.patch +++ b/debian/patches/features/all/rt/re-migrate_disable-race-with-cpu-hotplug-3f.patch @@ -1,7 +1,7 @@ From: Yong Zhang Date: Thu, 28 Jul 2011 11:16:00 +0800 Subject: hotplug: Reread hotplug_pcp on pin_current_cpu() retry -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz When retry happens, it's likely that the task has been migrated to another cpu (except unplug failed), but it still derefernces the @@ -18,10 +18,8 @@ Signed-off-by: Thomas Gleixner kernel/cpu.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -Index: linux-stable/kernel/cpu.c -=================================================================== ---- linux-stable.orig/kernel/cpu.c -+++ linux-stable/kernel/cpu.c +--- a/kernel/cpu.c ++++ b/kernel/cpu.c @@ -81,9 +81,11 @@ static DEFINE_PER_CPU(struct hotplug_pcp */ void pin_current_cpu(void) diff --git a/debian/patches/features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch b/debian/patches/features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch index 9ddaf1489..b4ca774cb 100644 --- a/debian/patches/features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch +++ b/debian/patches/features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch @@ -1,7 +1,7 @@ Subject: ARM: Initialize ptl->lock for vector page From: Frank Rowand Date: Sat, 1 Oct 2011 18:58:13 -0700 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Without this patch, ARM can not use SPLIT_PTLOCK_CPUS if PREEMPT_RT_FULL=y because vectors_user_mapping() creates a @@ -30,19 +30,16 @@ Cc: Frank Cc: Peter Zijlstra Link: http://lkml.kernel.org/r/4E87C535.2030907@am.sony.com Signed-off-by: Thomas Gleixner -[bwh: Adjust context to apply after commit a5463cd34354 - 'ARM: make vectors page inaccessible from userspace'] --- - arch/arm/kernel/process.c | 25 +++++++++++++++++++++++++ - 1 file changed, 25 insertions(+) + arch/arm/kernel/process.c | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c -@@ -434,6 +434,31 @@ unsigned long arch_randomize_brk(struct +@@ -433,6 +433,30 @@ unsigned long arch_randomize_brk(struct + } #ifdef CONFIG_MMU - #ifdef CONFIG_KUSER_HELPERS -+ +/* + * CONFIG_SPLIT_PTLOCK_CPUS results in a page->ptl lock. If the lock is not + * initialized by pgtable_page_ctor() then a coredump of the vector page will @@ -67,6 +64,6 @@ Signed-off-by: Thomas Gleixner +} +late_initcall(vectors_user_mapping_init_page); + + #ifdef CONFIG_KUSER_HELPERS /* * The vectors page is always readable from user space for the - * atomic helpers. Insert it into the gate_vma so that it is visible diff --git a/debian/patches/features/all/rt/relay-fix-timer-madness.patch b/debian/patches/features/all/rt/relay-fix-timer-madness.patch index 86cbb4b03..407ddd797 100644 --- a/debian/patches/features/all/rt/relay-fix-timer-madness.patch +++ b/debian/patches/features/all/rt/relay-fix-timer-madness.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:44:07 -0500 Subject: relay: fix timer madness -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz remove timer calls (!!!) from deep within the tracing infrastructure. This was totally bogus code that can cause lockups and worse. Poll @@ -14,10 +14,8 @@ Signed-off-by: Thomas Gleixner kernel/relay.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) -Index: linux-stable/kernel/relay.c -=================================================================== ---- linux-stable.orig/kernel/relay.c -+++ linux-stable/kernel/relay.c +--- a/kernel/relay.c ++++ b/kernel/relay.c @@ -339,6 +339,10 @@ static void wakeup_readers(unsigned long { struct rchan_buf *buf = (struct rchan_buf *)data; diff --git a/debian/patches/features/all/rt/resource-counters-use-localirq-nort.patch b/debian/patches/features/all/rt/resource-counters-use-localirq-nort.patch index 810608627..eea31c319 100644 --- a/debian/patches/features/all/rt/resource-counters-use-localirq-nort.patch +++ b/debian/patches/features/all/rt/resource-counters-use-localirq-nort.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:44:33 -0500 Subject: core: Do not disable interrupts on RT in res_counter.c -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Frederic Weisbecker reported this warning: @@ -47,10 +47,8 @@ Signed-off-by: Thomas Gleixner kernel/res_counter.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -Index: linux-stable/kernel/res_counter.c -=================================================================== ---- linux-stable.orig/kernel/res_counter.c -+++ linux-stable/kernel/res_counter.c +--- a/kernel/res_counter.c ++++ b/kernel/res_counter.c @@ -49,7 +49,7 @@ static int __res_counter_charge(struct r r = ret = 0; diff --git a/debian/patches/features/all/rt/revert-80d5c3689b886308247da295a228a54df49a44f6.patch b/debian/patches/features/all/rt/revert-80d5c3689b886308247da295a228a54df49a44f6.patch deleted file mode 100644 index f87450108..000000000 --- a/debian/patches/features/all/rt/revert-80d5c3689b886308247da295a228a54df49a44f6.patch +++ /dev/null @@ -1,31 +0,0 @@ -From: Sebastian Andrzej Siewior -Subject: [PATCH] net/cpsw: revert 80d5c3689b886308247da295a228a54df49a44f6 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz - -Signed-off-by: Sebastian Andrzej Siewior ---- - drivers/net/ethernet/ti/cpsw.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -Index: linux-stable/drivers/net/ethernet/ti/cpsw.c -=================================================================== ---- linux-stable.orig/drivers/net/ethernet/ti/cpsw.c -+++ linux-stable/drivers/net/ethernet/ti/cpsw.c -@@ -1286,7 +1286,7 @@ clean_vid: - } - - static int cpsw_ndo_vlan_rx_add_vid(struct net_device *ndev, -- __be16 proto, u16 vid) -+ unsigned short vid) - { - struct cpsw_priv *priv = netdev_priv(ndev); - -@@ -1298,7 +1298,7 @@ static int cpsw_ndo_vlan_rx_add_vid(stru - } - - static int cpsw_ndo_vlan_rx_kill_vid(struct net_device *ndev, -- __be16 proto, u16 vid) -+ unsigned short vid) - { - struct cpsw_priv *priv = netdev_priv(ndev); - int ret; diff --git a/debian/patches/features/all/rt/revert-f646968f8f7c624587de729115d802372b9063dd.patch b/debian/patches/features/all/rt/revert-f646968f8f7c624587de729115d802372b9063dd.patch deleted file mode 100644 index 30ca6eea9..000000000 --- a/debian/patches/features/all/rt/revert-f646968f8f7c624587de729115d802372b9063dd.patch +++ /dev/null @@ -1,31 +0,0 @@ -From: Sebastian Andrzej Siewior -Subject: [PATCH] net/cpsw: revert f646968f8f7c624587de729115d802372b9063dd -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz - -Signed-off-by: Sebastian Andrzej Siewior ---- - drivers/net/ethernet/ti/cpsw.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -Index: linux-stable/drivers/net/ethernet/ti/cpsw.c -=================================================================== ---- linux-stable.orig/drivers/net/ethernet/ti/cpsw.c -+++ linux-stable/drivers/net/ethernet/ti/cpsw.c -@@ -1633,7 +1633,7 @@ static int cpsw_probe_dual_emac(struct p - priv_sl2->irqs_table[i] = priv->irqs_table[i]; - priv_sl2->num_irqs = priv->num_irqs; - } -- ndev->features |= NETIF_F_HW_VLAN_CTAG_FILTER; -+ ndev->features |= NETIF_F_HW_VLAN_FILTER; - - ndev->netdev_ops = &cpsw_netdev_ops; - SET_ETHTOOL_OPS(ndev, &cpsw_ethtool_ops); -@@ -1872,7 +1872,7 @@ static int cpsw_probe(struct platform_de - k++; - } - -- ndev->features |= NETIF_F_HW_VLAN_CTAG_FILTER; -+ ndev->features |= NETIF_F_HW_VLAN_FILTER; - - ndev->netdev_ops = &cpsw_netdev_ops; - SET_ETHTOOL_OPS(ndev, &cpsw_ethtool_ops); diff --git a/debian/patches/features/all/rt/revert-f9a8f83b04e0c362a2fc660dbad980d24af209fc.patch b/debian/patches/features/all/rt/revert-f9a8f83b04e0c362a2fc660dbad980d24af209fc.patch deleted file mode 100644 index c005e61da..000000000 --- a/debian/patches/features/all/rt/revert-f9a8f83b04e0c362a2fc660dbad980d24af209fc.patch +++ /dev/null @@ -1,52 +0,0 @@ -From: Sebastian Andrzej Siewior -Subject: [PATCH] net/cpsw: revert f9a8f83b04e0c362a2fc660dbad980d24af209fc -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz - -Signed-off-by: Sebastian Andrzej Siewior ---- - drivers/net/ethernet/ti/cpmac.c | 4 ++-- - drivers/net/ethernet/ti/cpsw.c | 2 +- - drivers/net/ethernet/ti/davinci_emac.c | 2 +- - 3 files changed, 4 insertions(+), 4 deletions(-) - -Index: linux-stable/drivers/net/ethernet/ti/cpmac.c -=================================================================== ---- linux-stable.orig/drivers/net/ethernet/ti/cpmac.c -+++ linux-stable/drivers/net/ethernet/ti/cpmac.c -@@ -1172,8 +1172,8 @@ static int cpmac_probe(struct platform_d - snprintf(priv->phy_name, MII_BUS_ID_SIZE, PHY_ID_FMT, - mdio_bus_id, phy_id); - -- priv->phy = phy_connect(dev, priv->phy_name, cpmac_adjust_link, -- PHY_INTERFACE_MODE_MII); -+ priv->phy = phy_connect(dev, priv->phy_name, cpmac_adjust_link, 0, -+ PHY_INTERFACE_MODE_MII); - - if (IS_ERR(priv->phy)) { - if (netif_msg_drv(priv)) -Index: linux-stable/drivers/net/ethernet/ti/cpsw.c -=================================================================== ---- linux-stable.orig/drivers/net/ethernet/ti/cpsw.c -+++ linux-stable/drivers/net/ethernet/ti/cpsw.c -@@ -817,7 +817,7 @@ static void cpsw_slave_open(struct cpsw_ - 1 << slave_port, 0, 0, ALE_MCAST_FWD_2); - - slave->phy = phy_connect(priv->ndev, slave->data->phy_id, -- &cpsw_adjust_link, slave->data->phy_if); -+ &cpsw_adjust_link, 0, slave->data->phy_if); - if (IS_ERR(slave->phy)) { - dev_err(priv->dev, "phy %s not found on slave %d\n", - slave->data->phy_id, slave->slave_num); -Index: linux-stable/drivers/net/ethernet/ti/davinci_emac.c -=================================================================== ---- linux-stable.orig/drivers/net/ethernet/ti/davinci_emac.c -+++ linux-stable/drivers/net/ethernet/ti/davinci_emac.c -@@ -1600,7 +1600,7 @@ static int emac_dev_open(struct net_devi - - if (priv->phy_id && *priv->phy_id) { - priv->phydev = phy_connect(ndev, priv->phy_id, -- &emac_adjust_link, -+ &emac_adjust_link, 0, - PHY_INTERFACE_MODE_MII); - - if (IS_ERR(priv->phydev)) { diff --git a/debian/patches/features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch b/debian/patches/features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch index 94db7d9d9..4c482cdec 100644 --- a/debian/patches/features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch +++ b/debian/patches/features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch @@ -1,7 +1,7 @@ Subject: sched/rt: Fix wait_task_interactive() to test rt_spin_lock state From: Steven Rostedt Date: Thu, 01 Mar 2012 13:55:33 -0500 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz 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 @@ -23,10 +23,8 @@ Signed-off-by: Thomas Gleixner kernel/sched/core.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c @@ -1084,7 +1084,8 @@ unsigned long wait_task_inactive(struct * is actually now running somewhere else! */ diff --git a/debian/patches/features/all/rt/rt-add-rt-locks.patch b/debian/patches/features/all/rt/rt-add-rt-locks.patch index 20cf5f10e..8e5540875 100644 --- a/debian/patches/features/all/rt/rt-add-rt-locks.patch +++ b/debian/patches/features/all/rt/rt-add-rt-locks.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Sun, 26 Jul 2009 19:39:56 +0200 Subject: rt: Add the preempt-rt lock replacement APIs -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Map spinlocks, rwlocks, rw_semaphores and semaphores to the rt_mutex based locking functions for preempt-rt. @@ -19,10 +19,8 @@ Signed-off-by: Thomas Gleixner lib/spinlock_debug.c | 5 8 files changed, 756 insertions(+), 4 deletions(-) -Index: linux-stable/include/linux/rwlock_rt.h -=================================================================== --- /dev/null -+++ linux-stable/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 @@ -147,10 +145,8 @@ Index: linux-stable/include/linux/rwlock_rt.h + } while (0) + +#endif -Index: linux-stable/include/linux/spinlock.h -=================================================================== ---- linux-stable.orig/include/linux/spinlock.h -+++ linux-stable/include/linux/spinlock.h +--- a/include/linux/spinlock.h ++++ b/include/linux/spinlock.h @@ -254,7 +254,11 @@ static inline void do_raw_spin_unlock(ra #define raw_spin_can_lock(lock) (!raw_spin_is_locked(lock)) @@ -182,10 +178,8 @@ Index: linux-stable/include/linux/spinlock.h +#endif /* !PREEMPT_RT_FULL */ + #endif /* __LINUX_SPINLOCK_H */ -Index: linux-stable/include/linux/spinlock_api_smp.h -=================================================================== ---- linux-stable.orig/include/linux/spinlock_api_smp.h -+++ linux-stable/include/linux/spinlock_api_smp.h +--- 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( return 0; } @@ -196,10 +190,8 @@ Index: linux-stable/include/linux/spinlock_api_smp.h +#endif #endif /* __LINUX_SPINLOCK_API_SMP_H */ -Index: linux-stable/include/linux/spinlock_rt.h -=================================================================== --- /dev/null -+++ linux-stable/include/linux/spinlock_rt.h ++++ b/include/linux/spinlock_rt.h @@ -0,0 +1,158 @@ +#ifndef __LINUX_SPINLOCK_RT_H +#define __LINUX_SPINLOCK_RT_H @@ -359,10 +351,8 @@ Index: linux-stable/include/linux/spinlock_rt.h + atomic_dec_and_spin_lock(atomic, lock) + +#endif -Index: linux-stable/kernel/Makefile -=================================================================== ---- linux-stable.orig/kernel/Makefile -+++ linux-stable/kernel/Makefile +--- a/kernel/Makefile ++++ b/kernel/Makefile @@ -7,8 +7,8 @@ obj-y = fork.o exec_domain.o panic.o sysctl.o sysctl_binary.o capability.o ptrace.o timer.o user.o \ signal.o sys.o kmod.o workqueue.o pid.o task_work.o \ @@ -394,10 +384,8 @@ Index: linux-stable/kernel/Makefile obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o obj-$(CONFIG_SMP) += smp.o ifneq ($(CONFIG_SMP),y) -Index: linux-stable/kernel/rt.c -=================================================================== --- /dev/null -+++ linux-stable/kernel/rt.c ++++ b/kernel/rt.c @@ -0,0 +1,442 @@ +/* + * kernel/rt.c @@ -841,10 +829,8 @@ Index: linux-stable/kernel/rt.c + return 1; +} +EXPORT_SYMBOL(atomic_dec_and_mutex_lock); -Index: linux-stable/kernel/spinlock.c -=================================================================== ---- linux-stable.orig/kernel/spinlock.c -+++ linux-stable/kernel/spinlock.c +--- a/kernel/spinlock.c ++++ b/kernel/spinlock.c @@ -110,8 +110,11 @@ void __lockfunc __raw_##op##_lock_bh(loc * __[spin|read|write]_lock_bh() */ @@ -875,10 +861,8 @@ Index: linux-stable/kernel/spinlock.c #ifdef CONFIG_DEBUG_LOCK_ALLOC void __lockfunc _raw_spin_lock_nested(raw_spinlock_t *lock, int subclass) -Index: linux-stable/lib/spinlock_debug.c -=================================================================== ---- linux-stable.orig/lib/spinlock_debug.c -+++ linux-stable/lib/spinlock_debug.c +--- a/lib/spinlock_debug.c ++++ b/lib/spinlock_debug.c @@ -31,6 +31,7 @@ void __raw_spin_lock_init(raw_spinlock_t EXPORT_SYMBOL(__raw_spin_lock_init); diff --git a/debian/patches/features/all/rt/rt-add-rt-spinlock-to-headers.patch b/debian/patches/features/all/rt/rt-add-rt-spinlock-to-headers.patch index e109d1b5b..7cad09824 100644 --- a/debian/patches/features/all/rt/rt-add-rt-spinlock-to-headers.patch +++ b/debian/patches/features/all/rt/rt-add-rt-spinlock-to-headers.patch @@ -1,7 +1,7 @@ Subject: rt-add-rt-spinlocks.patch From: Thomas Gleixner Date: Wed, 29 Jun 2011 19:43:35 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -10,10 +10,8 @@ Signed-off-by: Thomas Gleixner include/linux/spinlock_types_rt.h | 51 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+), 3 deletions(-) -Index: linux-stable/include/linux/rwlock_types_rt.h -=================================================================== --- /dev/null -+++ linux-stable/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 @@ -48,10 +46,8 @@ Index: linux-stable/include/linux/rwlock_types_rt.h + rwlock_t name __cacheline_aligned_in_smp = __RW_LOCK_UNLOCKED(name) + +#endif -Index: linux-stable/include/linux/spinlock_types.h -=================================================================== ---- linux-stable.orig/include/linux/spinlock_types.h -+++ linux-stable/include/linux/spinlock_types.h +--- a/include/linux/spinlock_types.h ++++ b/include/linux/spinlock_types.h @@ -11,8 +11,13 @@ #include @@ -69,10 +65,8 @@ Index: linux-stable/include/linux/spinlock_types.h +#endif #endif /* __LINUX_SPINLOCK_TYPES_H */ -Index: linux-stable/include/linux/spinlock_types_rt.h -=================================================================== --- /dev/null -+++ linux-stable/include/linux/spinlock_types_rt.h ++++ b/include/linux/spinlock_types_rt.h @@ -0,0 +1,51 @@ +#ifndef __LINUX_SPINLOCK_TYPES_RT_H +#define __LINUX_SPINLOCK_TYPES_RT_H diff --git a/debian/patches/features/all/rt/rt-add-rt-to-mutex-headers.patch b/debian/patches/features/all/rt/rt-add-rt-to-mutex-headers.patch index 2afeda16f..0faa97491 100644 --- a/debian/patches/features/all/rt/rt-add-rt-to-mutex-headers.patch +++ b/debian/patches/features/all/rt/rt-add-rt-to-mutex-headers.patch @@ -1,7 +1,7 @@ Subject: rt-add-rt-to-mutex-headers.patch From: Thomas Gleixner Date: Wed, 29 Jun 2011 20:56:22 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -9,10 +9,8 @@ Signed-off-by: Thomas Gleixner include/linux/mutex_rt.h | 84 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+), 7 deletions(-) -Index: linux-stable/include/linux/mutex.h -=================================================================== ---- linux-stable.orig/include/linux/mutex.h -+++ linux-stable/include/linux/mutex.h +--- a/include/linux/mutex.h ++++ b/include/linux/mutex.h @@ -17,6 +17,17 @@ #include @@ -55,10 +53,8 @@ Index: linux-stable/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-stable/include/linux/mutex_rt.h -=================================================================== --- /dev/null -+++ linux-stable/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 diff --git a/debian/patches/features/all/rt/rt-introduce-cpu-chill.patch b/debian/patches/features/all/rt/rt-introduce-cpu-chill.patch index cd399a5c4..4efaeb223 100644 --- a/debian/patches/features/all/rt/rt-introduce-cpu-chill.patch +++ b/debian/patches/features/all/rt/rt-introduce-cpu-chill.patch @@ -1,7 +1,7 @@ Subject: rt: Introduce cpu_chill() From: Thomas Gleixner Date: Wed, 07 Mar 2012 20:51:03 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Retry loops on RT might loop forever when the modifying side was preempted. Add cpu_chill() to replace cpu_relax(). cpu_chill() @@ -14,10 +14,8 @@ Cc: stable-rt@vger.kernel.org include/linux/delay.h | 6 ++++++ 1 file changed, 6 insertions(+) -Index: linux-stable/include/linux/delay.h -=================================================================== ---- linux-stable.orig/include/linux/delay.h -+++ linux-stable/include/linux/delay.h +--- a/include/linux/delay.h ++++ b/include/linux/delay.h @@ -52,4 +52,10 @@ static inline void ssleep(unsigned int s msleep(seconds * 1000); } diff --git a/debian/patches/features/all/rt/rt-local-irq-lock.patch b/debian/patches/features/all/rt/rt-local-irq-lock.patch index e19973229..2e43fbb69 100644 --- a/debian/patches/features/all/rt/rt-local-irq-lock.patch +++ b/debian/patches/features/all/rt/rt-local-irq-lock.patch @@ -1,17 +1,15 @@ Subject: rt-local-irq-lock.patch From: Thomas Gleixner Date: Mon, 20 Jun 2011 09:03:47 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- include/linux/locallock.h | 254 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 254 insertions(+) -Index: linux-stable/include/linux/locallock.h -=================================================================== --- /dev/null -+++ linux-stable/include/linux/locallock.h ++++ b/include/linux/locallock.h @@ -0,0 +1,254 @@ +#ifndef _LINUX_LOCALLOCK_H +#define _LINUX_LOCALLOCK_H diff --git a/debian/patches/features/all/rt/rt-mutex-add-sleeping-spinlocks-support.patch b/debian/patches/features/all/rt/rt-mutex-add-sleeping-spinlocks-support.patch index 28c125194..1238ec6d7 100644 --- a/debian/patches/features/all/rt/rt-mutex-add-sleeping-spinlocks-support.patch +++ b/debian/patches/features/all/rt/rt-mutex-add-sleeping-spinlocks-support.patch @@ -1,7 +1,7 @@ Subject: rt-mutex-add-sleeping-spinlocks-support.patch From: Thomas Gleixner Date: Fri, 10 Jun 2011 11:21:25 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -11,10 +11,8 @@ Signed-off-by: Thomas Gleixner kernel/rtmutex_common.h | 9 + 4 files changed, 404 insertions(+), 27 deletions(-) -Index: linux-stable/include/linux/rtmutex.h -=================================================================== ---- linux-stable.orig/include/linux/rtmutex.h -+++ linux-stable/include/linux/rtmutex.h +--- 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; @@ -73,10 +71,8 @@ Index: linux-stable/include/linux/rtmutex.h #define DEFINE_RT_MUTEX(mutexname) \ struct rt_mutex mutexname = __RT_MUTEX_INITIALIZER(mutexname) -Index: linux-stable/kernel/futex.c -=================================================================== ---- linux-stable.orig/kernel/futex.c -+++ linux-stable/kernel/futex.c +--- a/kernel/futex.c ++++ b/kernel/futex.c @@ -2325,8 +2325,7 @@ static int futex_wait_requeue_pi(u32 __u * The waiter is allocated on our stack, manipulated by the requeue * code while we sleep on uaddr. @@ -87,10 +83,8 @@ Index: linux-stable/kernel/futex.c ret = get_futex_key(uaddr2, flags & FLAGS_SHARED, &key2, VERIFY_WRITE); if (unlikely(ret != 0)) -Index: linux-stable/kernel/rtmutex.c -=================================================================== ---- linux-stable.orig/kernel/rtmutex.c -+++ linux-stable/kernel/rtmutex.c +--- 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 @@ -117,7 +111,7 @@ Index: linux-stable/kernel/rtmutex.c /* * Calculate task priority from the waiter list priority * -@@ -143,6 +155,14 @@ static void rt_mutex_adjust_prio(struct +@@ -155,6 +167,14 @@ static void rt_mutex_adjust_prio(struct raw_spin_unlock_irqrestore(&task->pi_lock, flags); } @@ -132,7 +126,7 @@ Index: linux-stable/kernel/rtmutex.c /* * Max number of times we'll walk the boosting chain: */ -@@ -254,13 +274,15 @@ static int rt_mutex_adjust_prio_chain(st +@@ -266,13 +286,15 @@ static int rt_mutex_adjust_prio_chain(st /* Release the task */ raw_spin_unlock_irqrestore(&task->pi_lock, flags); if (!rt_mutex_owner(lock)) { @@ -151,7 +145,7 @@ Index: linux-stable/kernel/rtmutex.c raw_spin_unlock(&lock->wait_lock); goto out_put_task; } -@@ -305,6 +327,25 @@ static int rt_mutex_adjust_prio_chain(st +@@ -317,6 +339,25 @@ static int rt_mutex_adjust_prio_chain(st return ret; } @@ -177,7 +171,7 @@ Index: linux-stable/kernel/rtmutex.c /* * Try to take an rt-mutex * -@@ -314,8 +355,9 @@ static int rt_mutex_adjust_prio_chain(st +@@ -326,8 +367,9 @@ static int rt_mutex_adjust_prio_chain(st * @task: the task which wants to acquire the lock * @waiter: the waiter that is queued to the lock's wait list. (could be NULL) */ @@ -189,7 +183,7 @@ Index: linux-stable/kernel/rtmutex.c { /* * We have to be careful here if the atomic speedups are -@@ -348,12 +390,14 @@ static int try_to_take_rt_mutex(struct r +@@ -360,12 +402,14 @@ static int try_to_take_rt_mutex(struct r * 3) it is top waiter */ if (rt_mutex_has_waiters(lock)) { @@ -208,7 +202,7 @@ Index: linux-stable/kernel/rtmutex.c if (waiter || rt_mutex_has_waiters(lock)) { unsigned long flags; struct rt_mutex_waiter *top; -@@ -378,7 +422,6 @@ static int try_to_take_rt_mutex(struct r +@@ -390,7 +434,6 @@ static int try_to_take_rt_mutex(struct r raw_spin_unlock_irqrestore(&task->pi_lock, flags); } @@ -216,7 +210,7 @@ Index: linux-stable/kernel/rtmutex.c debug_rt_mutex_lock(lock); rt_mutex_set_owner(lock, task); -@@ -388,6 +431,13 @@ static int try_to_take_rt_mutex(struct r +@@ -400,6 +443,13 @@ static int try_to_take_rt_mutex(struct r return 1; } @@ -230,7 +224,7 @@ Index: linux-stable/kernel/rtmutex.c /* * Task blocks on lock. * -@@ -502,7 +552,7 @@ static void wakeup_next_waiter(struct rt +@@ -514,7 +564,7 @@ static void wakeup_next_waiter(struct rt raw_spin_unlock_irqrestore(¤t->pi_lock, flags); @@ -239,7 +233,7 @@ Index: linux-stable/kernel/rtmutex.c } /* -@@ -581,18 +631,315 @@ void rt_mutex_adjust_pi(struct task_stru +@@ -593,18 +643,315 @@ void rt_mutex_adjust_pi(struct task_stru return; } @@ -558,7 +552,7 @@ Index: linux-stable/kernel/rtmutex.c * @timeout: the pre-initialized and started timer, or NULL for none * @waiter: the pre-initialized rt_mutex_waiter * -@@ -648,9 +995,10 @@ rt_mutex_slowlock(struct rt_mutex *lock, +@@ -660,9 +1007,10 @@ rt_mutex_slowlock(struct rt_mutex *lock, struct rt_mutex_waiter waiter; int ret = 0; @@ -570,7 +564,7 @@ Index: linux-stable/kernel/rtmutex.c /* Try to acquire the lock again: */ if (try_to_take_rt_mutex(lock, current, NULL)) { -@@ -703,6 +1051,7 @@ rt_mutex_slowtrylock(struct rt_mutex *lo +@@ -715,6 +1063,7 @@ rt_mutex_slowtrylock(struct rt_mutex *lo int ret = 0; raw_spin_lock(&lock->wait_lock); @@ -578,7 +572,7 @@ Index: linux-stable/kernel/rtmutex.c if (likely(rt_mutex_owner(lock) != current)) { -@@ -935,12 +1284,11 @@ EXPORT_SYMBOL_GPL(rt_mutex_destroy); +@@ -947,12 +1296,11 @@ EXPORT_SYMBOL_GPL(rt_mutex_destroy); void __rt_mutex_init(struct rt_mutex *lock, const char *name) { lock->owner = NULL; @@ -592,7 +586,7 @@ Index: linux-stable/kernel/rtmutex.c /** * rt_mutex_init_proxy_locked - initialize and lock a rt_mutex on behalf of a -@@ -955,7 +1303,7 @@ EXPORT_SYMBOL_GPL(__rt_mutex_init); +@@ -967,7 +1315,7 @@ EXPORT_SYMBOL_GPL(__rt_mutex_init); void rt_mutex_init_proxy_locked(struct rt_mutex *lock, struct task_struct *proxy_owner) { @@ -601,10 +595,8 @@ Index: linux-stable/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-stable/kernel/rtmutex_common.h -=================================================================== ---- linux-stable.orig/kernel/rtmutex_common.h -+++ linux-stable/kernel/rtmutex_common.h +--- 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; diff --git a/debian/patches/features/all/rt/rt-preempt-base-config.patch b/debian/patches/features/all/rt/rt-preempt-base-config.patch index b45044125..77133e38e 100644 --- a/debian/patches/features/all/rt/rt-preempt-base-config.patch +++ b/debian/patches/features/all/rt/rt-preempt-base-config.patch @@ -1,17 +1,15 @@ Subject: rt-preempt-base-config.patch From: Thomas Gleixner Date: Fri, 17 Jun 2011 12:39:57 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- kernel/Kconfig.preempt | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) -Index: linux-stable/kernel/Kconfig.preempt -=================================================================== ---- linux-stable.orig/kernel/Kconfig.preempt -+++ linux-stable/kernel/Kconfig.preempt +--- a/kernel/Kconfig.preempt ++++ b/kernel/Kconfig.preempt @@ -1,3 +1,10 @@ +config PREEMPT + bool @@ -44,7 +42,7 @@ Index: linux-stable/kernel/Kconfig.preempt + select PREEMPT_RT_BASE + help + This option is basically the same as (Low-Latency Desktop) but -+ enables changes which are preliminary for the full preemptiple ++ enables changes which are preliminary for the full preemptible + RT kernel. + endchoice diff --git a/debian/patches/features/all/rt/rt-rw-lockdep-annotations.patch b/debian/patches/features/all/rt/rt-rw-lockdep-annotations.patch index 89eb9d23d..67e875e33 100644 --- a/debian/patches/features/all/rt/rt-rw-lockdep-annotations.patch +++ b/debian/patches/features/all/rt/rt-rw-lockdep-annotations.patch @@ -1,7 +1,7 @@ Subject: rt: rwsem/rwlock: lockdep annotations From: Thomas Gleixner Date: Fri, 28 Sep 2012 10:49:42 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz rwlocks and rwsems on RT do not allow multiple readers. Annotate the lockdep acquire functions accordingly. @@ -12,10 +12,8 @@ Cc: stable-rt@vger.kernel.org kernel/rt.c | 53 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 21 deletions(-) -Index: linux-stable/kernel/rt.c -=================================================================== ---- linux-stable.orig/kernel/rt.c -+++ linux-stable/kernel/rt.c +--- a/kernel/rt.c ++++ b/kernel/rt.c @@ -216,15 +216,17 @@ int __lockfunc rt_read_trylock(rwlock_t * write locked. */ diff --git a/debian/patches/features/all/rt/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch b/debian/patches/features/all/rt/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch index f09edd9e9..926d9135a 100644 --- a/debian/patches/features/all/rt/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch +++ b/debian/patches/features/all/rt/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch @@ -1,7 +1,7 @@ Subject: sched: Do not compare cpu masks in scheduler Date: Tue, 27 Sep 2011 08:40:24 -0400 From: Peter Zijlstra -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Peter Zijlstra Cc: Peter Zijlstra @@ -13,11 +13,9 @@ Signed-off-by: Thomas Gleixner kernel/sched/core.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -2943,16 +2943,12 @@ static inline void update_migrate_disabl +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -2955,16 +2955,12 @@ static inline void update_migrate_disabl */ mask = tsk_cpus_allowed(p); diff --git a/debian/patches/features/all/rt/rt-sched-have-migrate_disable-ignore-bounded-threads.patch b/debian/patches/features/all/rt/rt-sched-have-migrate_disable-ignore-bounded-threads.patch index 0eab2ee2e..bf22936a7 100644 --- a/debian/patches/features/all/rt/rt-sched-have-migrate_disable-ignore-bounded-threads.patch +++ b/debian/patches/features/all/rt/rt-sched-have-migrate_disable-ignore-bounded-threads.patch @@ -1,7 +1,7 @@ Subject: sched: Have migrate_disable ignore bounded threads Date: Tue, 27 Sep 2011 08:40:25 -0400 From: Peter Zijlstra -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Peter Zijlstra Cc: Peter Zijlstra @@ -13,11 +13,9 @@ Signed-off-by: Thomas Gleixner kernel/sched/core.c | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -2955,7 +2955,7 @@ void migrate_disable(void) +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -2967,7 +2967,7 @@ void migrate_disable(void) { struct task_struct *p = current; @@ -26,7 +24,7 @@ Index: linux-stable/kernel/sched/core.c #ifdef CONFIG_SCHED_DEBUG p->migrate_disable_atomic++; #endif -@@ -2986,7 +2986,7 @@ void migrate_enable(void) +@@ -2998,7 +2998,7 @@ void migrate_enable(void) unsigned long flags; struct rq *rq; @@ -35,7 +33,7 @@ Index: linux-stable/kernel/sched/core.c #ifdef CONFIG_SCHED_DEBUG p->migrate_disable_atomic--; #endif -@@ -3007,26 +3007,21 @@ void migrate_enable(void) +@@ -3019,26 +3019,21 @@ void migrate_enable(void) if (unlikely(migrate_disabled_updated(p))) { /* diff --git a/debian/patches/features/all/rt/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch b/debian/patches/features/all/rt/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch index 696a9ad5d..aa8e9c65a 100644 --- a/debian/patches/features/all/rt/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch +++ b/debian/patches/features/all/rt/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch @@ -1,7 +1,7 @@ Subject: sched: Postpone actual migration disalbe to schedule From: Steven Rostedt Date: Tue, 27 Sep 2011 08:40:23 -0400 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz 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. @@ -23,11 +23,9 @@ Signed-off-by: Thomas Gleixner kernel/sched/core.c | 251 +++++++++++++++++++++++++++------------------------- 1 file changed, 132 insertions(+), 119 deletions(-) -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -2915,6 +2915,135 @@ static inline void schedule_debug(struct +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -2927,6 +2927,135 @@ static inline void schedule_debug(struct schedstat_inc(this_rq(), sched_count); } @@ -163,7 +161,7 @@ Index: linux-stable/kernel/sched/core.c static void put_prev_task(struct rq *rq, struct task_struct *prev) { if (prev->on_rq || rq->skip_clock_update < 0) -@@ -3008,6 +3137,8 @@ need_resched: +@@ -3020,6 +3149,8 @@ need_resched: raw_spin_lock_irq(&rq->lock); @@ -172,7 +170,7 @@ Index: linux-stable/kernel/sched/core.c switch_count = &prev->nivcsw; if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) { if (unlikely(signal_pending_state(prev->state, prev))) { -@@ -4828,7 +4959,7 @@ void __cpuinit init_idle(struct task_str +@@ -4871,7 +5002,7 @@ void __cpuinit init_idle(struct task_str #ifdef CONFIG_SMP void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) { @@ -181,7 +179,7 @@ Index: linux-stable/kernel/sched/core.c if (p->sched_class && p->sched_class->set_cpus_allowed) p->sched_class->set_cpus_allowed(p, new_mask); p->nr_cpus_allowed = cpumask_weight(new_mask); -@@ -4898,124 +5029,6 @@ out: +@@ -4941,124 +5072,6 @@ out: } EXPORT_SYMBOL_GPL(set_cpus_allowed_ptr); diff --git a/debian/patches/features/all/rt/rt-serial-warn-fix.patch b/debian/patches/features/all/rt/rt-serial-warn-fix.patch index 9b239974e..2e2da52a2 100644 --- a/debian/patches/features/all/rt/rt-serial-warn-fix.patch +++ b/debian/patches/features/all/rt/rt-serial-warn-fix.patch @@ -1,7 +1,7 @@ Subject: rt: Improve the serial console PASS_LIMIT From: Ingo Molnar Date: Wed Dec 14 13:05:54 CET 2011 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Beyond the warning: @@ -16,10 +16,8 @@ Signed-off-by: Thomas Gleixner drivers/tty/serial/8250/8250_core.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) -Index: linux-stable/drivers/tty/serial/8250/8250_core.c -=================================================================== ---- linux-stable.orig/drivers/tty/serial/8250/8250_core.c -+++ linux-stable/drivers/tty/serial/8250/8250_core.c +--- a/drivers/tty/serial/8250/8250_core.c ++++ b/drivers/tty/serial/8250/8250_core.c @@ -80,7 +80,16 @@ static unsigned int skip_txen_test; /* f #define DEBUG_INTR(fmt...) do { } while (0) #endif diff --git a/debian/patches/features/all/rt/rt-tracing-show-padding-as-unsigned-short.patch b/debian/patches/features/all/rt/rt-tracing-show-padding-as-unsigned-short.patch index cd9ff628d..cad43f329 100644 --- a/debian/patches/features/all/rt/rt-tracing-show-padding-as-unsigned-short.patch +++ b/debian/patches/features/all/rt/rt-tracing-show-padding-as-unsigned-short.patch @@ -1,7 +1,7 @@ Subject: tracing: Show padding as unsigned short From: Steven Rostedt Date: Wed, 16 Nov 2011 13:19:35 -0500 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz 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 @@ -34,11 +34,9 @@ Signed-off-by: Thomas Gleixner kernel/trace/trace_events.c | 1 + 1 file changed, 1 insertion(+) -Index: linux-stable/kernel/trace/trace_events.c -=================================================================== ---- linux-stable.orig/kernel/trace/trace_events.c -+++ linux-stable/kernel/trace/trace_events.c -@@ -155,6 +155,7 @@ static int trace_define_common_fields(vo +--- a/kernel/trace/trace_events.c ++++ b/kernel/trace/trace_events.c +@@ -172,6 +172,7 @@ static int trace_define_common_fields(vo __common_field(unsigned char, preempt_count); __common_field(int, pid); __common_field(unsigned short, migrate_disable); diff --git a/debian/patches/features/all/rt/rtmutex-avoid-include-hell.patch b/debian/patches/features/all/rt/rtmutex-avoid-include-hell.patch index 08deb5bb3..ee4c80304 100644 --- a/debian/patches/features/all/rt/rtmutex-avoid-include-hell.patch +++ b/debian/patches/features/all/rt/rtmutex-avoid-include-hell.patch @@ -1,17 +1,15 @@ Subject: rtmutex-avoid-include-hell.patch From: Thomas Gleixner Date: Wed, 29 Jun 2011 20:06:39 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- include/linux/rtmutex.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/include/linux/rtmutex.h -=================================================================== ---- linux-stable.orig/include/linux/rtmutex.h -+++ linux-stable/include/linux/rtmutex.h +--- a/include/linux/rtmutex.h ++++ b/include/linux/rtmutex.h @@ -14,7 +14,7 @@ #include diff --git a/debian/patches/features/all/rt/rtmutex-futex-prepare-rt.patch b/debian/patches/features/all/rt/rtmutex-futex-prepare-rt.patch index 658e1e2ec..b9bd71ee4 100644 --- a/debian/patches/features/all/rt/rtmutex-futex-prepare-rt.patch +++ b/debian/patches/features/all/rt/rtmutex-futex-prepare-rt.patch @@ -1,7 +1,7 @@ Subject: rtmutex-futex-prepare-rt.patch From: Thomas Gleixner Date: Fri, 10 Jun 2011 11:04:15 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -10,10 +10,8 @@ Signed-off-by: Thomas Gleixner kernel/rtmutex_common.h | 2 + 3 files changed, 91 insertions(+), 19 deletions(-) -Index: linux-stable/kernel/futex.c -=================================================================== ---- linux-stable.orig/kernel/futex.c -+++ linux-stable/kernel/futex.c +--- a/kernel/futex.c ++++ b/kernel/futex.c @@ -1445,6 +1445,16 @@ retry_private: requeue_pi_wake_futex(this, &key2, hb2); drop_count++; @@ -130,10 +128,8 @@ Index: linux-stable/kernel/futex.c /* * Fixup the pi_state owner and possibly acquire the lock if we * haven't already. -Index: linux-stable/kernel/rtmutex.c -=================================================================== ---- linux-stable.orig/kernel/rtmutex.c -+++ linux-stable/kernel/rtmutex.c +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c @@ -68,6 +68,11 @@ static void fixup_rt_mutex_waiters(struc clear_rt_mutex_waiters(lock); } @@ -146,7 +142,7 @@ Index: linux-stable/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 -@@ -197,7 +202,7 @@ static int rt_mutex_adjust_prio_chain(st +@@ -209,7 +214,7 @@ static int rt_mutex_adjust_prio_chain(st * reached or the state of the chain has changed while we * dropped the locks. */ @@ -155,7 +151,7 @@ Index: linux-stable/kernel/rtmutex.c goto out_unlock_pi; /* -@@ -400,6 +405,23 @@ static int task_blocks_on_rt_mutex(struc +@@ -412,6 +417,23 @@ static int task_blocks_on_rt_mutex(struc int chain_walk = 0, res; raw_spin_lock_irqsave(&task->pi_lock, flags); @@ -179,7 +175,7 @@ Index: linux-stable/kernel/rtmutex.c __rt_mutex_adjust_prio(task); waiter->task = task; waiter->lock = lock; -@@ -424,7 +446,7 @@ static int task_blocks_on_rt_mutex(struc +@@ -436,7 +458,7 @@ static int task_blocks_on_rt_mutex(struc plist_add(&waiter->pi_list_entry, &owner->pi_waiters); __rt_mutex_adjust_prio(owner); @@ -188,7 +184,7 @@ Index: linux-stable/kernel/rtmutex.c chain_walk = 1; raw_spin_unlock_irqrestore(&owner->pi_lock, flags); } -@@ -518,7 +540,7 @@ static void remove_waiter(struct rt_mute +@@ -530,7 +552,7 @@ static void remove_waiter(struct rt_mute } __rt_mutex_adjust_prio(owner); @@ -197,7 +193,7 @@ Index: linux-stable/kernel/rtmutex.c chain_walk = 1; raw_spin_unlock_irqrestore(&owner->pi_lock, flags); -@@ -552,7 +574,8 @@ void rt_mutex_adjust_pi(struct task_stru +@@ -564,7 +586,8 @@ void rt_mutex_adjust_pi(struct task_stru raw_spin_lock_irqsave(&task->pi_lock, flags); waiter = task->pi_blocked_on; @@ -207,10 +203,8 @@ Index: linux-stable/kernel/rtmutex.c raw_spin_unlock_irqrestore(&task->pi_lock, flags); return; } -Index: linux-stable/kernel/rtmutex_common.h -=================================================================== ---- linux-stable.orig/kernel/rtmutex_common.h -+++ linux-stable/kernel/rtmutex_common.h +--- a/kernel/rtmutex_common.h ++++ b/kernel/rtmutex_common.h @@ -103,6 +103,8 @@ static inline struct task_struct *rt_mut /* * PI-futex support (proxy locking functions, etc.): diff --git a/debian/patches/features/all/rt/rtmutex-lock-killable.patch b/debian/patches/features/all/rt/rtmutex-lock-killable.patch index 20e10dd85..0bd494b31 100644 --- a/debian/patches/features/all/rt/rtmutex-lock-killable.patch +++ b/debian/patches/features/all/rt/rtmutex-lock-killable.patch @@ -1,7 +1,7 @@ Subject: rtmutex-lock-killable.patch From: Thomas Gleixner Date: Thu, 09 Jun 2011 11:43:52 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -9,10 +9,8 @@ Signed-off-by: Thomas Gleixner kernel/rtmutex.c | 33 +++++++++++++++++++++++++++------ 2 files changed, 28 insertions(+), 6 deletions(-) -Index: linux-stable/include/linux/rtmutex.h -=================================================================== ---- linux-stable.orig/include/linux/rtmutex.h -+++ linux-stable/include/linux/rtmutex.h +--- a/include/linux/rtmutex.h ++++ b/include/linux/rtmutex.h @@ -90,6 +90,7 @@ extern void rt_mutex_destroy(struct rt_m extern void rt_mutex_lock(struct rt_mutex *lock); extern int rt_mutex_lock_interruptible(struct rt_mutex *lock, @@ -21,11 +19,9 @@ Index: linux-stable/include/linux/rtmutex.h extern int rt_mutex_timed_lock(struct rt_mutex *lock, struct hrtimer_sleeper *timeout, int detect_deadlock); -Index: linux-stable/kernel/rtmutex.c -=================================================================== ---- linux-stable.orig/kernel/rtmutex.c -+++ linux-stable/kernel/rtmutex.c -@@ -816,12 +816,12 @@ EXPORT_SYMBOL_GPL(rt_mutex_lock); +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c +@@ -828,12 +828,12 @@ EXPORT_SYMBOL_GPL(rt_mutex_lock); /** * rt_mutex_lock_interruptible - lock a rt_mutex interruptible * @@ -41,7 +37,7 @@ Index: linux-stable/kernel/rtmutex.c * -EDEADLK when the lock would deadlock (when deadlock detection is on) */ int __sched rt_mutex_lock_interruptible(struct rt_mutex *lock, -@@ -835,17 +835,38 @@ int __sched rt_mutex_lock_interruptible( +@@ -847,17 +847,38 @@ int __sched rt_mutex_lock_interruptible( EXPORT_SYMBOL_GPL(rt_mutex_lock_interruptible); /** diff --git a/debian/patches/features/all/rt/rwsem-add-rt-variant.patch b/debian/patches/features/all/rt/rwsem-add-rt-variant.patch index 37a7c8788..5f982b096 100644 --- a/debian/patches/features/all/rt/rwsem-add-rt-variant.patch +++ b/debian/patches/features/all/rt/rwsem-add-rt-variant.patch @@ -1,7 +1,7 @@ Subject: rwsem-add-rt-variant.patch From: Thomas Gleixner Date: Wed, 29 Jun 2011 21:02:53 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -10,10 +10,8 @@ Signed-off-by: Thomas Gleixner lib/Makefile | 3 + 3 files changed, 137 insertions(+) -Index: linux-stable/include/linux/rwsem.h -=================================================================== ---- linux-stable.orig/include/linux/rwsem.h -+++ linux-stable/include/linux/rwsem.h +--- a/include/linux/rwsem.h ++++ b/include/linux/rwsem.h @@ -16,6 +16,10 @@ #include @@ -32,10 +30,8 @@ Index: linux-stable/include/linux/rwsem.h +#endif /* !PREEMPT_RT_FULL */ + #endif /* _LINUX_RWSEM_H */ -Index: linux-stable/include/linux/rwsem_rt.h -=================================================================== --- /dev/null -+++ linux-stable/include/linux/rwsem_rt.h ++++ b/include/linux/rwsem_rt.h @@ -0,0 +1,128 @@ +#ifndef _LINUX_RWSEM_RT_H +#define _LINUX_RWSEM_RT_H @@ -165,10 +161,8 @@ Index: linux-stable/include/linux/rwsem_rt.h +} +#endif +#endif -Index: linux-stable/lib/Makefile -=================================================================== ---- linux-stable.orig/lib/Makefile -+++ linux-stable/lib/Makefile +--- a/lib/Makefile ++++ b/lib/Makefile @@ -41,8 +41,11 @@ obj-$(CONFIG_HAS_IOMEM) += iomap_copy.o obj-$(CONFIG_CHECK_SIGNATURE) += check_signature.o obj-$(CONFIG_DEBUG_LOCKING_API_SELFTESTS) += locking-selftest.o diff --git a/debian/patches/features/all/rt/sched-adjust-reset-on-fork-always.patch b/debian/patches/features/all/rt/sched-adjust-reset-on-fork-always.patch index df8eb6aac..d32d4d818 100644 --- a/debian/patches/features/all/rt/sched-adjust-reset-on-fork-always.patch +++ b/debian/patches/features/all/rt/sched-adjust-reset-on-fork-always.patch @@ -1,7 +1,7 @@ Subject: sched: Adjust sched_reset_on_fork when nothing else changes From: Thomas Gleixner Date: Thu, 20 Dec 2012 14:58:00 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz If the policy and priority remain unchanged a possible modification of sched_reset_on_fork gets lost in the early exit path. @@ -13,11 +13,9 @@ Cc: stable-rt@vger.kernel.org kernel/sched/core.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -4192,10 +4192,13 @@ recheck: +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -3955,10 +3955,13 @@ recheck: } /* diff --git a/debian/patches/features/all/rt/sched-better-debug-output-for-might-sleep.patch b/debian/patches/features/all/rt/sched-better-debug-output-for-might-sleep.patch index d13f08cca..42cc6b82b 100644 --- a/debian/patches/features/all/rt/sched-better-debug-output-for-might-sleep.patch +++ b/debian/patches/features/all/rt/sched-better-debug-output-for-might-sleep.patch @@ -1,7 +1,7 @@ Subject: sched: Better debug output for might sleep From: Thomas Gleixner Date: Fri, 05 Oct 2012 08:56:15 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz might sleep can tell us where interrupts have been disabled, but we have no idea what disabled preemption. Add some debug infrastructure. @@ -12,10 +12,8 @@ Signed-off-by: Thomas Gleixner kernel/sched/core.c | 23 +++++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1329,6 +1329,9 @@ struct task_struct { struct mutex perf_event_mutex; struct list_head perf_event_list; @@ -26,10 +24,8 @@ Index: linux-stable/include/linux/sched.h #ifdef CONFIG_NUMA struct mempolicy *mempolicy; /* Protected by alloc_lock */ short il_next; -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c @@ -2808,8 +2808,13 @@ void __kprobes add_preempt_count(int val DEBUG_LOCKS_WARN_ON((preempt_count() & PREEMPT_MASK) >= PREEMPT_MASK - 10); diff --git a/debian/patches/features/all/rt/sched-clear-pf-thread-bound-on-fallback-rq.patch b/debian/patches/features/all/rt/sched-clear-pf-thread-bound-on-fallback-rq.patch index a334841f1..61cac0aae 100644 --- a/debian/patches/features/all/rt/sched-clear-pf-thread-bound-on-fallback-rq.patch +++ b/debian/patches/features/all/rt/sched-clear-pf-thread-bound-on-fallback-rq.patch @@ -1,17 +1,15 @@ Subject: sched-clear-pf-thread-bound-on-fallback-rq.patch From: Thomas Gleixner Date: Fri, 04 Nov 2011 20:48:36 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- kernel/sched/core.c | 6 ++++++ 1 file changed, 6 insertions(+) -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c @@ -1245,6 +1245,12 @@ out: } } diff --git a/debian/patches/features/all/rt/sched-cond-resched.patch b/debian/patches/features/all/rt/sched-cond-resched.patch index 65f8512ac..149485146 100644 --- a/debian/patches/features/all/rt/sched-cond-resched.patch +++ b/debian/patches/features/all/rt/sched-cond-resched.patch @@ -1,18 +1,16 @@ Subject: sched-cond-resched.patch From: Thomas Gleixner Date: Tue, 07 Jun 2011 11:25:03 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- kernel/sched/core.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -4392,9 +4392,17 @@ static inline int should_resched(void) +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -4434,9 +4434,17 @@ static inline int should_resched(void) static void __cond_resched(void) { diff --git a/debian/patches/features/all/rt/sched-consider-pi-boosting-in-setscheduler.patch b/debian/patches/features/all/rt/sched-consider-pi-boosting-in-setscheduler.patch index daa925a9d..b17a06115 100644 --- a/debian/patches/features/all/rt/sched-consider-pi-boosting-in-setscheduler.patch +++ b/debian/patches/features/all/rt/sched-consider-pi-boosting-in-setscheduler.patch @@ -1,7 +1,7 @@ Subject: sched: Consider pi boosting in setscheduler From: Thomas Gleixner Date: Thu, 20 Dec 2012 15:13:49 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz If a PI boosted task policy/priority is modified by a setscheduler() call we unconditionally dequeue and requeue the task if it is on the @@ -24,10 +24,8 @@ Cc: stable-rt@vger.kernel.org kernel/sched/core.c | 40 +++++++++++++++++++++++++++++++--------- 3 files changed, 48 insertions(+), 9 deletions(-) -Index: linux-stable/include/linux/sched/rt.h -=================================================================== ---- linux-stable.orig/include/linux/sched/rt.h -+++ linux-stable/include/linux/sched/rt.h +--- a/include/linux/sched/rt.h ++++ b/include/linux/sched/rt.h @@ -35,6 +35,7 @@ static inline int rt_task(struct task_st #ifdef CONFIG_RT_MUTEXES extern int rt_mutex_getprio(struct task_struct *p); @@ -47,11 +45,9 @@ Index: linux-stable/include/linux/sched/rt.h # define rt_mutex_adjust_pi(p) do { } while (0) static inline bool tsk_is_pi_blocked(struct task_struct *tsk) { -Index: linux-stable/kernel/rtmutex.c -=================================================================== ---- linux-stable.orig/kernel/rtmutex.c -+++ linux-stable/kernel/rtmutex.c -@@ -125,6 +125,18 @@ int rt_mutex_getprio(struct task_struct +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c +@@ -107,6 +107,18 @@ int rt_mutex_getprio(struct task_struct } /* @@ -70,11 +66,9 @@ Index: linux-stable/kernel/rtmutex.c * Adjust the priority of a task, after its pi_waiters got modified. * * This can be both boosting and unboosting. task->pi_lock must be held. -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -3839,7 +3839,8 @@ EXPORT_SYMBOL(sleep_on_timeout); +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -3602,7 +3602,8 @@ EXPORT_SYMBOL(sleep_on_timeout); * This function changes the 'effective' priority of a task. It does * not touch ->normal_prio like __setscheduler(). * @@ -84,7 +78,7 @@ Index: linux-stable/kernel/sched/core.c */ void rt_mutex_setprio(struct task_struct *p, int prio) { -@@ -4062,20 +4063,25 @@ static struct task_struct *find_process_ +@@ -3825,20 +3826,25 @@ static struct task_struct *find_process_ return pid ? find_task_by_vpid(pid) : current; } @@ -114,7 +108,7 @@ Index: linux-stable/kernel/sched/core.c } /* -@@ -4097,6 +4103,7 @@ static bool check_same_owner(struct task +@@ -3860,6 +3866,7 @@ static bool check_same_owner(struct task static int __sched_setscheduler(struct task_struct *p, int policy, const struct sched_param *param, bool user) { @@ -122,7 +116,7 @@ Index: linux-stable/kernel/sched/core.c int retval, oldprio, oldpolicy = -1, on_rq, running; unsigned long flags; const struct sched_class *prev_class; -@@ -4224,6 +4231,25 @@ recheck: +@@ -3987,6 +3994,25 @@ recheck: task_rq_unlock(rq, p, &flags); goto recheck; } @@ -148,7 +142,7 @@ Index: linux-stable/kernel/sched/core.c on_rq = p->on_rq; running = task_current(rq, p); if (on_rq) -@@ -4231,9 +4257,6 @@ recheck: +@@ -3994,9 +4020,6 @@ recheck: if (running) p->sched_class->put_prev_task(rq, p); @@ -158,7 +152,7 @@ Index: linux-stable/kernel/sched/core.c prev_class = p->sched_class; __setscheduler(rq, p, policy, param->sched_priority); -@@ -4246,7 +4269,6 @@ recheck: +@@ -4009,7 +4032,6 @@ recheck: */ enqueue_task(rq, p, oldprio <= p->prio ? ENQUEUE_HEAD : 0); } diff --git a/debian/patches/features/all/rt/sched-delay-put-task.patch b/debian/patches/features/all/rt/sched-delay-put-task.patch index 16c2fd675..89131bf0a 100644 --- a/debian/patches/features/all/rt/sched-delay-put-task.patch +++ b/debian/patches/features/all/rt/sched-delay-put-task.patch @@ -1,7 +1,7 @@ Subject: sched-delay-put-task.patch From: Thomas Gleixner Date: Tue, 31 May 2011 16:59:16 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -9,11 +9,9 @@ Signed-off-by: Thomas Gleixner kernel/fork.c | 15 ++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h -@@ -1435,6 +1435,9 @@ struct task_struct { +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -1438,6 +1438,9 @@ struct task_struct { unsigned int sequential_io; unsigned int sequential_io_avg; #endif @@ -23,7 +21,7 @@ Index: linux-stable/include/linux/sched.h }; /* Future-safe accessor for struct task_struct's cpus_allowed. */ -@@ -1594,6 +1597,15 @@ extern struct pid *cad_pid; +@@ -1597,6 +1600,15 @@ extern struct pid *cad_pid; extern void free_task(struct task_struct *tsk); #define get_task_struct(tsk) do { atomic_inc(&(tsk)->usage); } while(0) @@ -39,7 +37,7 @@ Index: linux-stable/include/linux/sched.h extern void __put_task_struct(struct task_struct *t); static inline void put_task_struct(struct task_struct *t) -@@ -1601,6 +1613,7 @@ static inline void put_task_struct(struc +@@ -1604,6 +1616,7 @@ static inline void put_task_struct(struc if (atomic_dec_and_test(&t->usage)) __put_task_struct(t); } @@ -47,10 +45,8 @@ Index: linux-stable/include/linux/sched.h #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN extern void task_cputime(struct task_struct *t, -Index: linux-stable/kernel/fork.c -=================================================================== ---- linux-stable.orig/kernel/fork.c -+++ linux-stable/kernel/fork.c +--- a/kernel/fork.c ++++ b/kernel/fork.c @@ -230,7 +230,9 @@ static inline void put_signal_struct(str if (atomic_dec_and_test(&sig->sigcnt)) free_signal_struct(sig); diff --git a/debian/patches/features/all/rt/sched-disable-rt-group-sched-on-rt.patch b/debian/patches/features/all/rt/sched-disable-rt-group-sched-on-rt.patch index 58e66ef9b..17d5bc75b 100644 --- a/debian/patches/features/all/rt/sched-disable-rt-group-sched-on-rt.patch +++ b/debian/patches/features/all/rt/sched-disable-rt-group-sched-on-rt.patch @@ -1,7 +1,7 @@ Subject: sched: Disable CONFIG_RT_GROUP_SCHED on RT From: Thomas Gleixner Date: Mon, 18 Jul 2011 17:03:52 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Carsten reported problems when running: @@ -17,10 +17,8 @@ Signed-off-by: Thomas Gleixner init/Kconfig | 1 + 1 file changed, 1 insertion(+) -Index: linux-stable/init/Kconfig -=================================================================== ---- linux-stable.orig/init/Kconfig -+++ linux-stable/init/Kconfig +--- a/init/Kconfig ++++ b/init/Kconfig @@ -985,6 +985,7 @@ config CFS_BANDWIDTH config RT_GROUP_SCHED bool "Group scheduling for SCHED_RR/FIFO" diff --git a/debian/patches/features/all/rt/sched-disable-ttwu-queue.patch b/debian/patches/features/all/rt/sched-disable-ttwu-queue.patch index 14a511937..582ff5532 100644 --- a/debian/patches/features/all/rt/sched-disable-ttwu-queue.patch +++ b/debian/patches/features/all/rt/sched-disable-ttwu-queue.patch @@ -1,17 +1,15 @@ Subject: sched-disable-ttwu-queue.patch From: Thomas Gleixner Date: Tue, 13 Sep 2011 16:42:35 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- kernel/sched/features.h | 4 ++++ 1 file changed, 4 insertions(+) -Index: linux-stable/kernel/sched/features.h -=================================================================== ---- linux-stable.orig/kernel/sched/features.h -+++ linux-stable/kernel/sched/features.h +--- a/kernel/sched/features.h ++++ b/kernel/sched/features.h @@ -50,11 +50,15 @@ SCHED_FEAT(LB_BIAS, true) */ SCHED_FEAT(NONTASK_POWER, true) diff --git a/debian/patches/features/all/rt/sched-enqueue-to-head.patch b/debian/patches/features/all/rt/sched-enqueue-to-head.patch index 6f845a6c9..8b63113e7 100644 --- a/debian/patches/features/all/rt/sched-enqueue-to-head.patch +++ b/debian/patches/features/all/rt/sched-enqueue-to-head.patch @@ -1,7 +1,7 @@ Subject: sched: Queue RT tasks to head when prio drops From: Thomas Gleixner Date: Tue, 04 Dec 2012 08:56:41 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz The following scenario does not work correctly: @@ -49,11 +49,9 @@ Cc: stable-rt@vger.kernel.org kernel/sched/core.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -4239,8 +4239,13 @@ recheck: +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -4002,8 +4002,13 @@ recheck: if (running) p->sched_class->set_curr_task(rq); diff --git a/debian/patches/features/all/rt/sched-limit-nr-migrate.patch b/debian/patches/features/all/rt/sched-limit-nr-migrate.patch index d7f512680..0cd411f1e 100644 --- a/debian/patches/features/all/rt/sched-limit-nr-migrate.patch +++ b/debian/patches/features/all/rt/sched-limit-nr-migrate.patch @@ -1,17 +1,15 @@ Subject: sched-limit-nr-migrate.patch From: Thomas Gleixner Date: Mon, 06 Jun 2011 12:12:51 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- kernel/sched/core.c | 4 ++++ 1 file changed, 4 insertions(+) -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c @@ -272,7 +272,11 @@ late_initcall(sched_init_debug); * Number of tasks to iterate in a single balance run. * Limited because this is done with IRQs disabled. diff --git a/debian/patches/features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch b/debian/patches/features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch index d2368e9fc..8a2c40803 100644 --- a/debian/patches/features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch +++ b/debian/patches/features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch @@ -1,7 +1,7 @@ Subject: sched-might-sleep-do-not-account-rcu-depth.patch From: Thomas Gleixner Date: Tue, 07 Jun 2011 09:19:06 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -9,10 +9,8 @@ Signed-off-by: Thomas Gleixner kernel/sched/core.c | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) -Index: linux-stable/include/linux/rcupdate.h -=================================================================== ---- linux-stable.orig/include/linux/rcupdate.h -+++ linux-stable/include/linux/rcupdate.h +--- a/include/linux/rcupdate.h ++++ b/include/linux/rcupdate.h @@ -190,6 +190,11 @@ void synchronize_rcu(void); * types of kernel builds, the rcu_read_lock() nesting depth is unknowable. */ @@ -34,11 +32,9 @@ Index: linux-stable/include/linux/rcupdate.h #endif /* #else #ifdef CONFIG_PREEMPT_RCU */ /* Internal to kernel */ -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -7146,7 +7146,8 @@ void __init sched_init(void) +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -7189,7 +7189,8 @@ void __init sched_init(void) #ifdef CONFIG_DEBUG_ATOMIC_SLEEP static inline int preempt_count_equals(int preempt_offset) { diff --git a/debian/patches/features/all/rt/sched-migrate-disable.patch b/debian/patches/features/all/rt/sched-migrate-disable.patch index 6799e1ff8..51b2f2bd1 100644 --- a/debian/patches/features/all/rt/sched-migrate-disable.patch +++ b/debian/patches/features/all/rt/sched-migrate-disable.patch @@ -1,7 +1,7 @@ Subject: sched-migrate-disable.patch From: Thomas Gleixner Date: Thu, 16 Jun 2011 13:26:08 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -11,10 +11,8 @@ Signed-off-by: Thomas Gleixner lib/smp_processor_id.c | 6 +-- 4 files changed, 104 insertions(+), 11 deletions(-) -Index: linux-stable/include/linux/preempt.h -=================================================================== ---- linux-stable.orig/include/linux/preempt.h -+++ linux-stable/include/linux/preempt.h +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h @@ -130,6 +130,14 @@ do { \ #endif /* CONFIG_PREEMPT_COUNT */ @@ -30,10 +28,8 @@ Index: linux-stable/include/linux/preempt.h #ifdef CONFIG_PREEMPT_RT_FULL # define preempt_disable_rt() preempt_disable() # define preempt_enable_rt() preempt_enable() -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1074,6 +1074,7 @@ struct task_struct { #endif @@ -42,7 +38,7 @@ Index: linux-stable/include/linux/sched.h int nr_cpus_allowed; cpumask_t cpus_allowed; -@@ -1441,9 +1442,6 @@ struct task_struct { +@@ -1444,9 +1445,6 @@ struct task_struct { #endif }; @@ -52,7 +48,7 @@ Index: linux-stable/include/linux/sched.h #ifdef CONFIG_NUMA_BALANCING extern void task_numa_fault(int node, int pages, bool migrated); extern void set_numabalancing_state(bool enabled); -@@ -2616,6 +2614,15 @@ static inline void set_task_cpu(struct t +@@ -2619,6 +2617,15 @@ static inline void set_task_cpu(struct t #endif /* CONFIG_SMP */ @@ -68,11 +64,9 @@ Index: linux-stable/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-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -4828,11 +4828,12 @@ void __cpuinit init_idle(struct task_str +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -4871,11 +4871,12 @@ void __cpuinit init_idle(struct task_str #ifdef CONFIG_SMP void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) { @@ -89,7 +83,7 @@ Index: linux-stable/kernel/sched/core.c } /* -@@ -4878,7 +4879,7 @@ int set_cpus_allowed_ptr(struct task_str +@@ -4921,7 +4922,7 @@ int set_cpus_allowed_ptr(struct task_str do_set_cpus_allowed(p, new_mask); /* Can the task run on the task's current CPU? If so, we're done */ @@ -98,7 +92,7 @@ Index: linux-stable/kernel/sched/core.c goto out; dest_cpu = cpumask_any_and(cpu_active_mask, new_mask); -@@ -4897,6 +4898,83 @@ out: +@@ -4940,6 +4941,83 @@ out: } EXPORT_SYMBOL_GPL(set_cpus_allowed_ptr); @@ -182,10 +176,8 @@ Index: linux-stable/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-stable/lib/smp_processor_id.c -=================================================================== ---- linux-stable.orig/lib/smp_processor_id.c -+++ linux-stable/lib/smp_processor_id.c +--- a/lib/smp_processor_id.c ++++ b/lib/smp_processor_id.c @@ -39,9 +39,9 @@ notrace unsigned int debug_smp_processor if (!printk_ratelimit()) goto out_enable; diff --git a/debian/patches/features/all/rt/sched-mmdrop-delayed.patch b/debian/patches/features/all/rt/sched-mmdrop-delayed.patch index 5fcf10f99..291b8fdf9 100644 --- a/debian/patches/features/all/rt/sched-mmdrop-delayed.patch +++ b/debian/patches/features/all/rt/sched-mmdrop-delayed.patch @@ -1,7 +1,7 @@ Subject: sched-mmdrop-delayed.patch From: Thomas Gleixner Date: Mon, 06 Jun 2011 12:20:33 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Needs thread context (pgd_lock) -> ifdeffed. workqueues wont work with RT @@ -14,10 +14,8 @@ Signed-off-by: Thomas Gleixner kernel/sched/core.c | 19 +++++++++++++++++-- 4 files changed, 46 insertions(+), 2 deletions(-) -Index: linux-stable/include/linux/mm_types.h -=================================================================== ---- linux-stable.orig/include/linux/mm_types.h -+++ linux-stable/include/linux/mm_types.h +--- a/include/linux/mm_types.h ++++ b/include/linux/mm_types.h @@ -11,6 +11,7 @@ #include #include @@ -36,11 +34,9 @@ Index: linux-stable/include/linux/mm_types.h #if !defined(__GENKSYMS__) && defined(CONFIG_ARM) struct mm_context_ext context_ext; -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h -@@ -2129,12 +2129,24 @@ extern struct mm_struct * mm_alloc(void) +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -2132,12 +2132,24 @@ extern struct mm_struct * mm_alloc(void) /* mmdrop drops the mm and the page tables */ extern void __mmdrop(struct mm_struct *); @@ -65,10 +61,8 @@ Index: linux-stable/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-stable/kernel/fork.c -=================================================================== ---- linux-stable.orig/kernel/fork.c -+++ linux-stable/kernel/fork.c +--- a/kernel/fork.c ++++ b/kernel/fork.c @@ -617,6 +617,19 @@ void __mmdrop(struct mm_struct *mm) } EXPORT_SYMBOL_GPL(__mmdrop); @@ -89,10 +83,8 @@ Index: linux-stable/kernel/fork.c /* * Decrement the use count and release all resources for an mm. */ -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c @@ -1901,8 +1901,12 @@ static void finish_task_switch(struct rq finish_arch_post_lock_switch(); @@ -107,7 +99,7 @@ Index: linux-stable/kernel/sched/core.c if (unlikely(prev_state == TASK_DEAD)) { /* * Remove function-return probe instances associated with this -@@ -4920,6 +4924,8 @@ static int migration_cpu_stop(void *data +@@ -4963,6 +4967,8 @@ static int migration_cpu_stop(void *data #ifdef CONFIG_HOTPLUG_CPU @@ -116,7 +108,7 @@ Index: linux-stable/kernel/sched/core.c /* * Ensures that the idle task is using init_mm right before its cpu goes * offline. -@@ -4932,7 +4938,12 @@ void idle_task_exit(void) +@@ -4975,7 +4981,12 @@ void idle_task_exit(void) if (mm != &init_mm) switch_mm(mm, &init_mm, current); @@ -130,7 +122,7 @@ Index: linux-stable/kernel/sched/core.c } /* -@@ -5249,6 +5260,10 @@ migration_call(struct notifier_block *nf +@@ -5292,6 +5303,10 @@ migration_call(struct notifier_block *nf case CPU_DEAD: calc_load_migrate(rq); diff --git a/debian/patches/features/all/rt/sched-rt-fix-migrate_enable-thinko.patch b/debian/patches/features/all/rt/sched-rt-fix-migrate_enable-thinko.patch index 925ebb7de..90712b468 100644 --- a/debian/patches/features/all/rt/sched-rt-fix-migrate_enable-thinko.patch +++ b/debian/patches/features/all/rt/sched-rt-fix-migrate_enable-thinko.patch @@ -1,7 +1,7 @@ Subject: sched, rt: Fix migrate_enable() thinko From: Mike Galbraith Date: Tue, 23 Aug 2011 16:12:43 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz 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. @@ -21,11 +21,9 @@ Signed-off-by: Thomas Gleixner kernel/sched/debug.c | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -4975,12 +4975,14 @@ void migrate_enable(void) +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -5018,12 +5018,14 @@ void migrate_enable(void) */ rq = this_rq(); raw_spin_lock_irqsave(&rq->lock, flags); @@ -41,10 +39,8 @@ Index: linux-stable/kernel/sched/core.c if (p->sched_class->set_cpus_allowed) p->sched_class->set_cpus_allowed(p, mask); p->nr_cpus_allowed = cpumask_weight(mask); -Index: linux-stable/kernel/sched/debug.c -=================================================================== ---- linux-stable.orig/kernel/sched/debug.c -+++ linux-stable/kernel/sched/debug.c +--- a/kernel/sched/debug.c ++++ b/kernel/sched/debug.c @@ -246,6 +246,9 @@ void print_rt_rq(struct seq_file *m, int P(rt_throttled); PN(rt_time); diff --git a/debian/patches/features/all/rt/sched-rt-mutex-wakeup.patch b/debian/patches/features/all/rt/sched-rt-mutex-wakeup.patch index 9ff0c78f4..03278c964 100644 --- a/debian/patches/features/all/rt/sched-rt-mutex-wakeup.patch +++ b/debian/patches/features/all/rt/sched-rt-mutex-wakeup.patch @@ -1,7 +1,7 @@ Subject: sched-rt-mutex-wakeup.patch From: Thomas Gleixner Date: Sat, 25 Jun 2011 09:21:04 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -10,10 +10,8 @@ Signed-off-by: Thomas Gleixner kernel/sched/sched.h | 3 ++- 3 files changed, 34 insertions(+), 2 deletions(-) -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1034,6 +1034,7 @@ enum perf_event_task_context { struct task_struct { @@ -22,7 +20,7 @@ Index: linux-stable/include/linux/sched.h void *stack; atomic_t usage; unsigned int flags; /* per process flags, defined below */ -@@ -2015,6 +2016,7 @@ extern void xtime_update(unsigned long t +@@ -2018,6 +2019,7 @@ extern void xtime_update(unsigned long t extern int wake_up_state(struct task_struct *tsk, unsigned int state); extern int wake_up_process(struct task_struct *tsk); @@ -30,10 +28,8 @@ Index: linux-stable/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-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c @@ -1494,8 +1494,25 @@ try_to_wake_up(struct task_struct *p, un smp_wmb(); @@ -80,10 +76,8 @@ Index: linux-stable/kernel/sched/core.c int wake_up_state(struct task_struct *p, unsigned int state) { return try_to_wake_up(p, state, 0); -Index: linux-stable/kernel/sched/sched.h -=================================================================== ---- linux-stable.orig/kernel/sched/sched.h -+++ linux-stable/kernel/sched/sched.h +--- a/kernel/sched/sched.h ++++ b/kernel/sched/sched.h @@ -882,7 +882,8 @@ static inline void finish_lock_switch(st */ #define WF_SYNC 0x01 /* waker goes to sleep after wakeup */ diff --git a/debian/patches/features/all/rt/sched-teach-migrate_disable-about-atomic-contexts.patch b/debian/patches/features/all/rt/sched-teach-migrate_disable-about-atomic-contexts.patch index 0da6f916d..91aa33987 100644 --- a/debian/patches/features/all/rt/sched-teach-migrate_disable-about-atomic-contexts.patch +++ b/debian/patches/features/all/rt/sched-teach-migrate_disable-about-atomic-contexts.patch @@ -1,7 +1,7 @@ Subject: sched: Teach migrate_disable about atomic contexts From: Peter Zijlstra Date: Fri, 02 Sep 2011 14:41:37 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Subject: sched: teach migrate_disable about atomic contexts From: Peter Zijlstra @@ -38,10 +38,8 @@ Link: http://lkml.kernel.org/n/tip-wbot4vsmwhi8vmbf83hsclk6@git.kernel.org kernel/sched/core.c | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+) -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1076,6 +1076,9 @@ struct task_struct { unsigned int policy; #ifdef CONFIG_PREEMPT_RT_FULL @@ -52,11 +50,9 @@ Index: linux-stable/include/linux/sched.h #endif int nr_cpus_allowed; cpumask_t cpus_allowed; -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -4906,6 +4906,17 @@ void migrate_disable(void) +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -4949,6 +4949,17 @@ void migrate_disable(void) unsigned long flags; struct rq *rq; @@ -74,7 +70,7 @@ Index: linux-stable/kernel/sched/core.c preempt_disable(); if (p->migrate_disable) { p->migrate_disable++; -@@ -4954,6 +4965,16 @@ void migrate_enable(void) +@@ -4997,6 +5008,16 @@ void migrate_enable(void) unsigned long flags; struct rq *rq; diff --git a/debian/patches/features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch b/debian/patches/features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch index a25ee53b3..64b4b53c7 100644 --- a/debian/patches/features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch +++ b/debian/patches/features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch @@ -1,7 +1,7 @@ Subject: sched: ttwu: Return success when only changing the saved_state value From: Thomas Gleixner Date: Tue, 13 Dec 2011 21:42:19 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz 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 @@ -19,10 +19,8 @@ Cc: stable-rt@vger.kernel.org kernel/sched/core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c @@ -1501,8 +1501,10 @@ try_to_wake_up(struct task_struct *p, un * if the wakeup condition is true. */ diff --git a/debian/patches/features/all/rt/sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch b/debian/patches/features/all/rt/sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch index f080670e5..c4f59f1fe 100644 --- a/debian/patches/features/all/rt/sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch +++ b/debian/patches/features/all/rt/sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch @@ -3,7 +3,7 @@ From: Steven Rostedt Date: Mon, 18 Mar 2013 15:12:49 -0400 Subject: [PATCH] sched/workqueue: Only wake up idle workers if not blocked on sleeping spin lock -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz In -rt, most spin_locks() turn into mutexes. One of these spin_lock conversions is performed on the workqueue gcwq->lock. When the idle @@ -24,11 +24,9 @@ Signed-off-by: Sebastian Andrzej Siewior kernel/sched/core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -3020,8 +3020,10 @@ need_resched: +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -3032,8 +3032,10 @@ need_resched: * If a worker went to sleep, notify and ask workqueue * whether it wants to wake up a task to maintain * concurrency. diff --git a/debian/patches/features/all/rt/scsi-fcoe-rt-aware.patch b/debian/patches/features/all/rt/scsi-fcoe-rt-aware.patch index 31ae87496..ed4715a3f 100644 --- a/debian/patches/features/all/rt/scsi-fcoe-rt-aware.patch +++ b/debian/patches/features/all/rt/scsi-fcoe-rt-aware.patch @@ -1,7 +1,7 @@ Subject: scsi-fcoe-rt-aware.patch From: Thomas Gleixner Date: Sat, 12 Nov 2011 14:00:48 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -10,10 +10,8 @@ Signed-off-by: Thomas Gleixner drivers/scsi/libfc/fc_exch.c | 4 ++-- 3 files changed, 13 insertions(+), 13 deletions(-) -Index: linux-stable/drivers/scsi/fcoe/fcoe.c -=================================================================== ---- linux-stable.orig/drivers/scsi/fcoe/fcoe.c -+++ linux-stable/drivers/scsi/fcoe/fcoe.c +--- a/drivers/scsi/fcoe/fcoe.c ++++ b/drivers/scsi/fcoe/fcoe.c @@ -1281,7 +1281,7 @@ static void fcoe_percpu_thread_destroy(u struct sk_buff *skb; #ifdef CONFIG_SMP @@ -77,10 +75,8 @@ Index: linux-stable/drivers/scsi/fcoe/fcoe.c kfree_skb(skb); } -Index: linux-stable/drivers/scsi/fcoe/fcoe_ctlr.c -=================================================================== ---- linux-stable.orig/drivers/scsi/fcoe/fcoe_ctlr.c -+++ linux-stable/drivers/scsi/fcoe/fcoe_ctlr.c +--- a/drivers/scsi/fcoe/fcoe_ctlr.c ++++ b/drivers/scsi/fcoe/fcoe_ctlr.c @@ -792,7 +792,7 @@ static unsigned long fcoe_ctlr_age_fcfs( INIT_LIST_HEAD(&del_list); @@ -99,10 +95,8 @@ Index: linux-stable/drivers/scsi/fcoe/fcoe_ctlr.c list_for_each_entry_safe(fcf, next, &del_list, list) { /* Removes fcf from current list */ -Index: linux-stable/drivers/scsi/libfc/fc_exch.c -=================================================================== ---- linux-stable.orig/drivers/scsi/libfc/fc_exch.c -+++ linux-stable/drivers/scsi/libfc/fc_exch.c +--- a/drivers/scsi/libfc/fc_exch.c ++++ b/drivers/scsi/libfc/fc_exch.c @@ -741,10 +741,10 @@ static struct fc_exch *fc_exch_em_alloc( } memset(ep, 0, sizeof(*ep)); diff --git a/debian/patches/features/all/rt/scsi-qla2xxx-fix-bug-sleeping-function-called-from-invalid-context.patch b/debian/patches/features/all/rt/scsi-qla2xxx-fix-bug-sleeping-function-called-from-invalid-context.patch index bf694ce39..29f82d39f 100644 --- a/debian/patches/features/all/rt/scsi-qla2xxx-fix-bug-sleeping-function-called-from-invalid-context.patch +++ b/debian/patches/features/all/rt/scsi-qla2xxx-fix-bug-sleeping-function-called-from-invalid-context.patch @@ -1,7 +1,7 @@ Subject: scsi: qla2xxx: Use local_irq_save_nort() in qla2x00_poll From: John Kacur Date: Fri, 27 Apr 2012 12:48:46 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz RT triggers the following: @@ -29,10 +29,8 @@ Signed-off-by: Thomas Gleixner drivers/scsi/qla2xxx/qla_inline.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-stable/drivers/scsi/qla2xxx/qla_inline.h -=================================================================== ---- linux-stable.orig/drivers/scsi/qla2xxx/qla_inline.h -+++ linux-stable/drivers/scsi/qla2xxx/qla_inline.h +--- a/drivers/scsi/qla2xxx/qla_inline.h ++++ b/drivers/scsi/qla2xxx/qla_inline.h @@ -58,12 +58,12 @@ qla2x00_poll(struct rsp_que *rsp) { unsigned long flags; diff --git a/debian/patches/features/all/rt/seqlock-prevent-rt-starvation.patch b/debian/patches/features/all/rt/seqlock-prevent-rt-starvation.patch index 3ffd34154..51d9aae7f 100644 --- a/debian/patches/features/all/rt/seqlock-prevent-rt-starvation.patch +++ b/debian/patches/features/all/rt/seqlock-prevent-rt-starvation.patch @@ -1,7 +1,7 @@ Subject: seqlock: Prevent rt starvation From: Thomas Gleixner Date: Wed, 22 Feb 2012 12:03:30 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz If a low prio writer gets preempted while holding the seqlock write locked, a high prio reader spins forever on RT. @@ -23,10 +23,8 @@ Cc: stable-rt@vger.kernel.org include/net/neighbour.h | 4 +-- 3 files changed, 48 insertions(+), 13 deletions(-) -Index: linux-stable/include/linux/seqlock.h -=================================================================== ---- linux-stable.orig/include/linux/seqlock.h -+++ linux-stable/include/linux/seqlock.h +--- a/include/linux/seqlock.h ++++ b/include/linux/seqlock.h @@ -146,18 +146,30 @@ static inline int read_seqcount_retry(co * Sequence counter only version assumes that callers are using their * own mutexing. @@ -155,10 +153,8 @@ Index: linux-stable/include/linux/seqlock.h spin_unlock_irqrestore(&sl->lock, flags); } -Index: linux-stable/include/net/dst.h -=================================================================== ---- linux-stable.orig/include/net/dst.h -+++ linux-stable/include/net/dst.h +--- a/include/net/dst.h ++++ b/include/net/dst.h @@ -393,7 +393,7 @@ static inline void dst_confirm(struct ds static inline int dst_neigh_output(struct dst_entry *dst, struct neighbour *n, struct sk_buff *skb) @@ -168,10 +164,8 @@ Index: linux-stable/include/net/dst.h if (dst->pending_confirm) { unsigned long now = jiffies; -Index: linux-stable/include/net/neighbour.h -=================================================================== ---- linux-stable.orig/include/net/neighbour.h -+++ linux-stable/include/net/neighbour.h +--- a/include/net/neighbour.h ++++ b/include/net/neighbour.h @@ -335,7 +335,7 @@ static inline int neigh_hh_bridge(struct } #endif diff --git a/debian/patches/features/all/rt/signal-fix-up-rcu-wreckage.patch b/debian/patches/features/all/rt/signal-fix-up-rcu-wreckage.patch index 08db55efe..3e6e01c45 100644 --- a/debian/patches/features/all/rt/signal-fix-up-rcu-wreckage.patch +++ b/debian/patches/features/all/rt/signal-fix-up-rcu-wreckage.patch @@ -1,17 +1,15 @@ Subject: signal-fix-up-rcu-wreckage.patch From: Thomas Gleixner Date: Fri, 22 Jul 2011 08:07:08 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- kernel/signal.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -Index: linux-stable/kernel/signal.c -=================================================================== ---- linux-stable.orig/kernel/signal.c -+++ linux-stable/kernel/signal.c +--- a/kernel/signal.c ++++ b/kernel/signal.c @@ -1394,12 +1394,12 @@ struct sighand_struct *__lock_task_sigha struct sighand_struct *sighand; diff --git a/debian/patches/features/all/rt/signal-revert-ptrace-preempt-magic.patch b/debian/patches/features/all/rt/signal-revert-ptrace-preempt-magic.patch index d640812f6..593e92951 100644 --- a/debian/patches/features/all/rt/signal-revert-ptrace-preempt-magic.patch +++ b/debian/patches/features/all/rt/signal-revert-ptrace-preempt-magic.patch @@ -1,17 +1,15 @@ Subject: signal-revert-ptrace-preempt-magic.patch From: Thomas Gleixner Date: Wed, 21 Sep 2011 19:57:12 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- kernel/signal.c | 8 -------- 1 file changed, 8 deletions(-) -Index: linux-stable/kernel/signal.c -=================================================================== ---- linux-stable.orig/kernel/signal.c -+++ linux-stable/kernel/signal.c +--- a/kernel/signal.c ++++ b/kernel/signal.c @@ -1908,15 +1908,7 @@ static void ptrace_stop(int exit_code, i if (gstop_done && ptrace_reparented(current)) do_notify_parent_cldstop(current, false, why); diff --git a/debian/patches/features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch b/debian/patches/features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch index c467ab99f..070193f4f 100644 --- a/debian/patches/features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch +++ b/debian/patches/features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Fri, 3 Jul 2009 08:44:56 -0500 Subject: signals: Allow rt tasks to cache one sigqueue struct -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz To avoid allocation allow rt tasks to cache one sigqueue struct in task struct. @@ -16,10 +16,8 @@ Signed-off-by: Thomas Gleixner kernel/signal.c | 94 ++++++++++++++++++++++++++++++++++++++++++++----- 5 files changed, 89 insertions(+), 10 deletions(-) -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1215,6 +1215,7 @@ struct task_struct { /* signal handlers */ struct signal_struct *signal; @@ -28,10 +26,8 @@ Index: linux-stable/include/linux/sched.h sigset_t blocked, real_blocked; sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */ -Index: linux-stable/include/linux/signal.h -=================================================================== ---- linux-stable.orig/include/linux/signal.h -+++ linux-stable/include/linux/signal.h +--- a/include/linux/signal.h ++++ b/include/linux/signal.h @@ -226,6 +226,7 @@ static inline void init_sigpending(struc } @@ -40,10 +36,8 @@ Index: linux-stable/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-stable/kernel/exit.c -=================================================================== ---- linux-stable.orig/kernel/exit.c -+++ linux-stable/kernel/exit.c +--- a/kernel/exit.c ++++ b/kernel/exit.c @@ -145,7 +145,7 @@ static void __exit_signal(struct task_st * Do this under ->siglock, we can race with another thread * doing sigqueue_free() if we have SIGQUEUE_PREALLOC signals. @@ -53,10 +47,8 @@ Index: linux-stable/kernel/exit.c tsk->sighand = NULL; spin_unlock(&sighand->siglock); -Index: linux-stable/kernel/fork.c -=================================================================== ---- linux-stable.orig/kernel/fork.c -+++ linux-stable/kernel/fork.c +--- a/kernel/fork.c ++++ b/kernel/fork.c @@ -1231,6 +1231,7 @@ static struct task_struct *copy_process( spin_lock_init(&p->alloc_lock); @@ -65,10 +57,8 @@ Index: linux-stable/kernel/fork.c p->utime = p->stime = p->gtime = 0; p->utimescaled = p->stimescaled = 0; -Index: linux-stable/kernel/signal.c -=================================================================== ---- linux-stable.orig/kernel/signal.c -+++ linux-stable/kernel/signal.c +--- a/kernel/signal.c ++++ b/kernel/signal.c @@ -14,6 +14,7 @@ #include #include diff --git a/debian/patches/features/all/rt/skbufhead-raw-lock.patch b/debian/patches/features/all/rt/skbufhead-raw-lock.patch index a79292d3e..ae9eca22f 100644 --- a/debian/patches/features/all/rt/skbufhead-raw-lock.patch +++ b/debian/patches/features/all/rt/skbufhead-raw-lock.patch @@ -1,7 +1,7 @@ Subject: skbufhead-raw-lock.patch From: Thomas Gleixner Date: Tue, 12 Jul 2011 15:38:34 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -10,11 +10,9 @@ Signed-off-by: Thomas Gleixner net/core/dev.c | 26 ++++++++++++++++++++------ 3 files changed, 28 insertions(+), 6 deletions(-) -Index: linux-stable/include/linux/netdevice.h -=================================================================== ---- linux-stable.orig/include/linux/netdevice.h -+++ linux-stable/include/linux/netdevice.h -@@ -1808,6 +1808,7 @@ struct softnet_data { +--- a/include/linux/netdevice.h ++++ b/include/linux/netdevice.h +@@ -1805,6 +1805,7 @@ struct softnet_data { unsigned int dropped; struct sk_buff_head input_pkt_queue; struct napi_struct backlog; @@ -22,10 +20,8 @@ Index: linux-stable/include/linux/netdevice.h }; static inline void input_queue_head_incr(struct softnet_data *sd) -Index: linux-stable/include/linux/skbuff.h -=================================================================== ---- linux-stable.orig/include/linux/skbuff.h -+++ linux-stable/include/linux/skbuff.h +--- a/include/linux/skbuff.h ++++ b/include/linux/skbuff.h @@ -133,6 +133,7 @@ struct sk_buff_head { __u32 qlen; @@ -47,10 +43,8 @@ Index: linux-stable/include/linux/skbuff.h static inline void skb_queue_head_init_class(struct sk_buff_head *list, struct lock_class_key *class) { -Index: linux-stable/net/core/dev.c -=================================================================== ---- linux-stable.orig/net/core/dev.c -+++ linux-stable/net/core/dev.c +--- a/net/core/dev.c ++++ b/net/core/dev.c @@ -188,14 +188,14 @@ static inline struct hlist_head *dev_ind static inline void rps_lock(struct softnet_data *sd) { @@ -68,7 +62,7 @@ Index: linux-stable/net/core/dev.c #endif } -@@ -3633,7 +3633,7 @@ static void flush_backlog(void *arg) +@@ -3640,7 +3640,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); @@ -77,7 +71,7 @@ Index: linux-stable/net/core/dev.c input_queue_head_incr(sd); } } -@@ -3642,10 +3642,13 @@ static void flush_backlog(void *arg) +@@ -3649,10 +3649,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); @@ -92,7 +86,7 @@ Index: linux-stable/net/core/dev.c } static int napi_gro_complete(struct sk_buff *skb) -@@ -4151,10 +4154,17 @@ static void net_rx_action(struct softirq +@@ -4158,10 +4161,17 @@ static void net_rx_action(struct softirq struct softnet_data *sd = &__get_cpu_var(softnet_data); unsigned long time_limit = jiffies + 2; int budget = netdev_budget; @@ -110,7 +104,7 @@ Index: linux-stable/net/core/dev.c while (!list_empty(&sd->poll_list)) { struct napi_struct *n; int work, weight; -@@ -6015,6 +6025,9 @@ static int dev_cpu_callback(struct notif +@@ -6022,6 +6032,9 @@ static int dev_cpu_callback(struct notif netif_rx(skb); input_queue_head_incr(oldsd); } @@ -120,7 +114,7 @@ Index: linux-stable/net/core/dev.c return NOTIFY_OK; } -@@ -6287,8 +6300,9 @@ static int __init net_dev_init(void) +@@ -6294,8 +6307,9 @@ static int __init net_dev_init(void) struct softnet_data *sd = &per_cpu(softnet_data, i); memset(sd, 0, sizeof(*sd)); diff --git a/debian/patches/features/all/rt/slub-enable-irqs-for-no-wait.patch b/debian/patches/features/all/rt/slub-enable-irqs-for-no-wait.patch index 869acaaa2..70060f2b7 100644 --- a/debian/patches/features/all/rt/slub-enable-irqs-for-no-wait.patch +++ b/debian/patches/features/all/rt/slub-enable-irqs-for-no-wait.patch @@ -1,7 +1,7 @@ Subject: slub: Enable irqs for __GFP_WAIT From: Thomas Gleixner Date: Wed, 09 Jan 2013 12:08:15 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz SYSTEM_RUNNING might be too late for enabling interrupts. Allocations with GFP_WAIT can happen before that. So use this as an indicator. @@ -11,10 +11,8 @@ Signed-off-by: Thomas Gleixner mm/slub.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) -Index: linux-stable/mm/slub.c -=================================================================== ---- linux-stable.orig/mm/slub.c -+++ linux-stable/mm/slub.c +--- a/mm/slub.c ++++ b/mm/slub.c @@ -1281,14 +1281,15 @@ static struct page *allocate_slab(struct struct page *page; struct kmem_cache_order_objects oo = s->oo; diff --git a/debian/patches/features/all/rt/slub_delay_ctor_on_rt.patch b/debian/patches/features/all/rt/slub_delay_ctor_on_rt.patch index e18310250..0b63c75b9 100644 --- a/debian/patches/features/all/rt/slub_delay_ctor_on_rt.patch +++ b/debian/patches/features/all/rt/slub_delay_ctor_on_rt.patch @@ -1,6 +1,6 @@ From: Sebastian Andrzej Siewior Subject: slub: delay ctor until the object is requested -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz It seems that allocation of plenty objects causes latency on ARM since that code can not be preempted @@ -10,10 +10,8 @@ Signed-off-by: Sebastian Andrzej Siewior mm/slub.c | 6 ++++++ 1 file changed, 6 insertions(+) -Index: linux-stable/mm/slub.c -=================================================================== ---- linux-stable.orig/mm/slub.c -+++ linux-stable/mm/slub.c +--- a/mm/slub.c ++++ b/mm/slub.c @@ -1347,8 +1347,10 @@ static void setup_object(struct kmem_cac void *object) { diff --git a/debian/patches/features/all/rt/softirq-adapt-nohz-pending-debug-code-to-new-scheme.patch b/debian/patches/features/all/rt/softirq-adapt-nohz-pending-debug-code-to-new-scheme.patch index 96c1be46b..14e279859 100644 --- a/debian/patches/features/all/rt/softirq-adapt-nohz-pending-debug-code-to-new-scheme.patch +++ b/debian/patches/features/all/rt/softirq-adapt-nohz-pending-debug-code-to-new-scheme.patch @@ -1,7 +1,7 @@ Subject: softirq: Adapt NOHZ softirq pending check to new RT scheme From: Thomas Gleixner Date: Sun, 28 Oct 2012 13:46:16 +0000 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz We can't rely on ksoftirqd anymore and we need to check the tasks which run a particular softirq and if such a task is pi blocked ignore @@ -12,13 +12,11 @@ Signed-off-by: Thomas Gleixner kernel/softirq.c | 83 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 58 insertions(+), 25 deletions(-) -Index: linux-stable/kernel/softirq.c -=================================================================== ---- linux-stable.orig/kernel/softirq.c -+++ linux-stable/kernel/softirq.c +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -66,46 +66,71 @@ char *softirq_to_name[NR_SOFTIRQS] = { - #ifdef CONFIG_NO_HZ + #ifdef CONFIG_NO_HZ_COMMON # ifdef CONFIG_PREEMPT_RT_FULL + +struct softirq_runner { @@ -111,7 +109,7 @@ Index: linux-stable/kernel/softirq.c } # endif + -+#else /* !NO_HZ */ ++#else /* !CONFIG_NO_HZ_COMMON */ +static inline void softirq_set_runner(unsigned int sirq) { } +static inline void softirq_clr_runner(unsigned int sirq) { } #endif diff --git a/debian/patches/features/all/rt/softirq-disable-softirq-stacks-for-rt.patch b/debian/patches/features/all/rt/softirq-disable-softirq-stacks-for-rt.patch index 9e07715bd..bc125c461 100644 --- a/debian/patches/features/all/rt/softirq-disable-softirq-stacks-for-rt.patch +++ b/debian/patches/features/all/rt/softirq-disable-softirq-stacks-for-rt.patch @@ -1,7 +1,7 @@ Subject: softirq-disable-softirq-stacks-for-rt.patch From: Thomas Gleixner Date: Mon, 18 Jul 2011 13:59:17 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -16,10 +16,8 @@ Signed-off-by: Thomas Gleixner include/linux/interrupt.h | 3 +-- 9 files changed, 17 insertions(+), 3 deletions(-) -Index: linux-stable/arch/powerpc/kernel/irq.c -=================================================================== ---- linux-stable.orig/arch/powerpc/kernel/irq.c -+++ linux-stable/arch/powerpc/kernel/irq.c +--- a/arch/powerpc/kernel/irq.c ++++ b/arch/powerpc/kernel/irq.c @@ -603,6 +603,7 @@ void irq_ctx_init(void) } } @@ -36,10 +34,8 @@ Index: linux-stable/arch/powerpc/kernel/irq.c irq_hw_number_t virq_to_hw(unsigned int virq) { -Index: linux-stable/arch/powerpc/kernel/misc_32.S -=================================================================== ---- linux-stable.orig/arch/powerpc/kernel/misc_32.S -+++ linux-stable/arch/powerpc/kernel/misc_32.S +--- a/arch/powerpc/kernel/misc_32.S ++++ b/arch/powerpc/kernel/misc_32.S @@ -36,6 +36,7 @@ .text @@ -56,10 +52,8 @@ Index: linux-stable/arch/powerpc/kernel/misc_32.S _GLOBAL(call_handle_irq) mflr r0 -Index: linux-stable/arch/powerpc/kernel/misc_64.S -=================================================================== ---- linux-stable.orig/arch/powerpc/kernel/misc_64.S -+++ linux-stable/arch/powerpc/kernel/misc_64.S +--- a/arch/powerpc/kernel/misc_64.S ++++ b/arch/powerpc/kernel/misc_64.S @@ -29,6 +29,7 @@ .text @@ -76,10 +70,8 @@ Index: linux-stable/arch/powerpc/kernel/misc_64.S _GLOBAL(call_handle_irq) ld r8,0(r6) -Index: linux-stable/arch/sh/kernel/irq.c -=================================================================== ---- linux-stable.orig/arch/sh/kernel/irq.c -+++ linux-stable/arch/sh/kernel/irq.c +--- 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; } @@ -96,10 +88,8 @@ Index: linux-stable/arch/sh/kernel/irq.c #else static inline void handle_one_irq(unsigned int irq) { -Index: linux-stable/arch/sparc/kernel/irq_64.c -=================================================================== ---- linux-stable.orig/arch/sparc/kernel/irq_64.c -+++ linux-stable/arch/sparc/kernel/irq_64.c +--- 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, st set_irq_regs(old_regs); } @@ -116,10 +106,8 @@ Index: linux-stable/arch/sparc/kernel/irq_64.c #ifdef CONFIG_HOTPLUG_CPU void fixup_irqs(void) -Index: linux-stable/arch/x86/kernel/entry_64.S -=================================================================== ---- linux-stable.orig/arch/x86/kernel/entry_64.S -+++ linux-stable/arch/x86/kernel/entry_64.S +--- a/arch/x86/kernel/entry_64.S ++++ b/arch/x86/kernel/entry_64.S @@ -1334,6 +1334,7 @@ bad_gs: jmp 2b .previous @@ -136,10 +124,8 @@ Index: linux-stable/arch/x86/kernel/entry_64.S #ifdef CONFIG_XEN zeroentry xen_hypervisor_callback xen_do_hypervisor_callback -Index: linux-stable/arch/x86/kernel/irq_32.c -=================================================================== ---- linux-stable.orig/arch/x86/kernel/irq_32.c -+++ linux-stable/arch/x86/kernel/irq_32.c +--- 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)); } @@ -156,10 +142,8 @@ Index: linux-stable/arch/x86/kernel/irq_32.c bool handle_irq(unsigned irq, struct pt_regs *regs) { -Index: linux-stable/arch/x86/kernel/irq_64.c -=================================================================== ---- linux-stable.orig/arch/x86/kernel/irq_64.c -+++ linux-stable/arch/x86/kernel/irq_64.c +--- 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_ return true; } @@ -174,10 +158,8 @@ Index: linux-stable/arch/x86/kernel/irq_64.c local_irq_restore(flags); } +#endif -Index: linux-stable/include/linux/interrupt.h -=================================================================== ---- linux-stable.orig/include/linux/interrupt.h -+++ linux-stable/include/linux/interrupt.h +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h @@ -445,10 +445,9 @@ struct softirq_action void (*action)(struct softirq_action *); }; diff --git a/debian/patches/features/all/rt/softirq-export-in-serving-softirq.patch b/debian/patches/features/all/rt/softirq-export-in-serving-softirq.patch index f5f523569..f848b4c35 100644 --- a/debian/patches/features/all/rt/softirq-export-in-serving-softirq.patch +++ b/debian/patches/features/all/rt/softirq-export-in-serving-softirq.patch @@ -1,7 +1,7 @@ Subject: softirq: Export in_serving_softirq() From: John Kacur Date: Mon, 14 Nov 2011 02:44:43 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz ERROR: "in_serving_softirq" [net/sched/cls_cgroup.ko] undefined! @@ -17,10 +17,8 @@ Signed-off-by: Thomas Gleixner kernel/softirq.c | 1 + 1 file changed, 1 insertion(+) -Index: linux-stable/kernel/softirq.c -=================================================================== ---- linux-stable.orig/kernel/softirq.c -+++ linux-stable/kernel/softirq.c +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -439,6 +439,7 @@ int in_serving_softirq(void) preempt_enable(); return res; diff --git a/debian/patches/features/all/rt/softirq-init-softirq-local-lock-after-per-cpu-section-is-set-up.patch b/debian/patches/features/all/rt/softirq-init-softirq-local-lock-after-per-cpu-section-is-set-up.patch index 5055deb59..90c61bd86 100644 --- a/debian/patches/features/all/rt/softirq-init-softirq-local-lock-after-per-cpu-section-is-set-up.patch +++ b/debian/patches/features/all/rt/softirq-init-softirq-local-lock-after-per-cpu-section-is-set-up.patch @@ -1,7 +1,7 @@ Subject: softirq: Init softirq local lock after per cpu section is set up From: Steven Rostedt Date: Thu, 04 Oct 2012 11:02:04 -0400 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz I discovered this bug when booting 3.4-rt on my powerpc box. It crashed with the following report: @@ -114,10 +114,8 @@ Signed-off-by: Thomas Gleixner init/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/init/main.c -=================================================================== ---- linux-stable.orig/init/main.c -+++ linux-stable/init/main.c +--- a/init/main.c ++++ b/init/main.c @@ -496,7 +496,6 @@ asmlinkage void __init start_kernel(void * Interrupts are still disabled. Do necessary setups, then * enable them diff --git a/debian/patches/features/all/rt/softirq-local-lock.patch b/debian/patches/features/all/rt/softirq-local-lock.patch index 732b85f4e..76275d3b9 100644 --- a/debian/patches/features/all/rt/softirq-local-lock.patch +++ b/debian/patches/features/all/rt/softirq-local-lock.patch @@ -1,7 +1,7 @@ Subject: softirq-local-lock.patch From: Thomas Gleixner Date: Tue, 28 Jun 2011 15:57:18 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -12,10 +12,8 @@ Signed-off-by: Thomas Gleixner kernel/softirq.c | 166 +++++++++++++++++++++++++++++++++++++++++++++- 5 files changed, 191 insertions(+), 5 deletions(-) -Index: linux-stable/include/linux/hardirq.h -=================================================================== ---- linux-stable.orig/include/linux/hardirq.h -+++ linux-stable/include/linux/hardirq.h +--- a/include/linux/hardirq.h ++++ b/include/linux/hardirq.h @@ -61,7 +61,11 @@ #define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) #define NMI_OFFSET (1UL << NMI_SHIFT) @@ -56,10 +54,8 @@ Index: linux-stable/include/linux/hardirq.h /* * Are we in NMI context? -Index: linux-stable/include/linux/interrupt.h -=================================================================== ---- linux-stable.orig/include/linux/interrupt.h -+++ linux-stable/include/linux/interrupt.h +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h @@ -447,7 +447,13 @@ struct softirq_action asmlinkage void do_softirq(void); @@ -87,11 +83,9 @@ Index: linux-stable/include/linux/interrupt.h /* * Autoprobing for irqs: * -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h -@@ -1444,6 +1444,7 @@ struct task_struct { +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -1447,6 +1447,7 @@ struct task_struct { #endif #ifdef CONFIG_PREEMPT_RT_BASE struct rcu_head put_rcu; @@ -99,10 +93,8 @@ Index: linux-stable/include/linux/sched.h #endif }; -Index: linux-stable/init/main.c -=================================================================== ---- linux-stable.orig/init/main.c -+++ linux-stable/init/main.c +--- a/init/main.c ++++ b/init/main.c @@ -496,6 +496,7 @@ asmlinkage void __init start_kernel(void * Interrupts are still disabled. Do necessary setups, then * enable them @@ -111,10 +103,8 @@ Index: linux-stable/init/main.c boot_cpu_init(); page_address_init(); pr_notice("%s", linux_banner); -Index: linux-stable/kernel/softirq.c -=================================================================== ---- linux-stable.orig/kernel/softirq.c -+++ linux-stable/kernel/softirq.c +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -25,6 +25,7 @@ #include #include diff --git a/debian/patches/features/all/rt/softirq-make-fifo.patch b/debian/patches/features/all/rt/softirq-make-fifo.patch index 6046590b4..48d7b9403 100644 --- a/debian/patches/features/all/rt/softirq-make-fifo.patch +++ b/debian/patches/features/all/rt/softirq-make-fifo.patch @@ -1,17 +1,15 @@ Subject: softirq-make-fifo.patch From: Thomas Gleixner Date: Thu, 21 Jul 2011 21:06:43 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- kernel/softirq.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) -Index: linux-stable/kernel/softirq.c -=================================================================== ---- linux-stable.orig/kernel/softirq.c -+++ linux-stable/kernel/softirq.c +--- 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(); } diff --git a/debian/patches/features/all/rt/softirq-make-serving-softirqs-a-task-flag.patch b/debian/patches/features/all/rt/softirq-make-serving-softirqs-a-task-flag.patch index f2e68328d..2793327e1 100644 --- a/debian/patches/features/all/rt/softirq-make-serving-softirqs-a-task-flag.patch +++ b/debian/patches/features/all/rt/softirq-make-serving-softirqs-a-task-flag.patch @@ -1,7 +1,7 @@ Subject: softirq: Make serving softirqs a task flag From: Thomas Gleixner Date: Thu, 04 Oct 2012 14:30:25 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Avoid the percpu softirq_runner pointer magic by using a task flag. @@ -11,10 +11,8 @@ Signed-off-by: Thomas Gleixner kernel/softirq.c | 20 +++----------------- 2 files changed, 4 insertions(+), 17 deletions(-) -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1667,6 +1667,7 @@ extern void thread_group_cputime_adjuste /* * Per process flags @@ -23,10 +21,8 @@ Index: linux-stable/include/linux/sched.h #define PF_EXITING 0x00000004 /* getting shut down */ #define PF_EXITPIDONE 0x00000008 /* pi exit done on shut down */ #define PF_VCPU 0x00000010 /* I'm a virtual CPU */ -Index: linux-stable/kernel/softirq.c -=================================================================== ---- linux-stable.orig/kernel/softirq.c -+++ linux-stable/kernel/softirq.c +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -383,7 +383,6 @@ static void ksoftirqd_clr_sched_params(u * On RT we serialize softirq execution with a cpu local lock */ diff --git a/debian/patches/features/all/rt/softirq-preempt-fix-3-re.patch b/debian/patches/features/all/rt/softirq-preempt-fix-3-re.patch index 70fc377e2..d532c8e57 100644 --- a/debian/patches/features/all/rt/softirq-preempt-fix-3-re.patch +++ b/debian/patches/features/all/rt/softirq-preempt-fix-3-re.patch @@ -1,7 +1,7 @@ Subject: softirq: Check preemption after reenabling interrupts From: Thomas Gleixner Date: Sun, 13 Nov 2011 17:17:09 +0100 (CET) -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz raise_softirq_irqoff() disables interrupts and wakes the softirq daemon, but after reenabling interrupts there is no preemption check, @@ -21,10 +21,8 @@ Cc: stable-rt@vger.kernel.org net/core/dev.c | 6 ++++++ 4 files changed, 15 insertions(+) -Index: linux-stable/block/blk-iopoll.c -=================================================================== ---- linux-stable.orig/block/blk-iopoll.c -+++ linux-stable/block/blk-iopoll.c +--- a/block/blk-iopoll.c ++++ b/block/blk-iopoll.c @@ -38,6 +38,7 @@ void blk_iopoll_sched(struct blk_iopoll list_add_tail(&iop->list, &__get_cpu_var(blk_cpu_iopoll)); __raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ); @@ -49,10 +47,8 @@ Index: linux-stable/block/blk-iopoll.c } return NOTIFY_OK; -Index: linux-stable/block/blk-softirq.c -=================================================================== ---- linux-stable.orig/block/blk-softirq.c -+++ linux-stable/block/blk-softirq.c +--- 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); @@ -77,10 +73,8 @@ Index: linux-stable/block/blk-softirq.c } /** -Index: linux-stable/include/linux/preempt.h -=================================================================== ---- linux-stable.orig/include/linux/preempt.h -+++ linux-stable/include/linux/preempt.h +--- a/include/linux/preempt.h ++++ b/include/linux/preempt.h @@ -72,8 +72,10 @@ do { \ #ifndef CONFIG_PREEMPT_RT_BASE @@ -100,11 +94,9 @@ Index: linux-stable/include/linux/preempt.h #endif /* CONFIG_PREEMPT_COUNT */ -Index: linux-stable/net/core/dev.c -=================================================================== ---- linux-stable.orig/net/core/dev.c -+++ linux-stable/net/core/dev.c -@@ -2108,6 +2108,7 @@ static inline void __netif_reschedule(st +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -2114,6 +2114,7 @@ static inline void __netif_reschedule(st sd->output_queue_tailp = &q->next_sched; raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_restore(flags); @@ -112,7 +104,7 @@ Index: linux-stable/net/core/dev.c } void __netif_schedule(struct Qdisc *q) -@@ -2129,6 +2130,7 @@ void dev_kfree_skb_irq(struct sk_buff *s +@@ -2135,6 +2136,7 @@ void dev_kfree_skb_irq(struct sk_buff *s sd->completion_queue = skb; raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_restore(flags); @@ -120,7 +112,7 @@ Index: linux-stable/net/core/dev.c } } EXPORT_SYMBOL(dev_kfree_skb_irq); -@@ -3138,6 +3140,7 @@ enqueue: +@@ -3144,6 +3146,7 @@ enqueue: rps_unlock(sd); local_irq_restore(flags); @@ -128,7 +120,7 @@ Index: linux-stable/net/core/dev.c atomic_long_inc(&skb->dev->rx_dropped); kfree_skb(skb); -@@ -4035,6 +4038,7 @@ static void net_rps_action_and_irq_enabl +@@ -4046,6 +4049,7 @@ static void net_rps_action_and_irq_enabl } else #endif local_irq_enable(); @@ -136,7 +128,7 @@ Index: linux-stable/net/core/dev.c } static int process_backlog(struct napi_struct *napi, int quota) -@@ -4107,6 +4111,7 @@ void __napi_schedule(struct napi_struct +@@ -4118,6 +4122,7 @@ void __napi_schedule(struct napi_struct local_irq_save(flags); ____napi_schedule(&__get_cpu_var(softnet_data), n); local_irq_restore(flags); @@ -144,7 +136,7 @@ Index: linux-stable/net/core/dev.c } EXPORT_SYMBOL(__napi_schedule); -@@ -6045,6 +6050,7 @@ static int dev_cpu_callback(struct notif +@@ -6056,6 +6061,7 @@ static int dev_cpu_callback(struct notif raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_enable(); diff --git a/debian/patches/features/all/rt/softirq-sanitize-softirq-pending.patch b/debian/patches/features/all/rt/softirq-sanitize-softirq-pending.patch index d9caa0bcd..33abb4a6d 100644 --- a/debian/patches/features/all/rt/softirq-sanitize-softirq-pending.patch +++ b/debian/patches/features/all/rt/softirq-sanitize-softirq-pending.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Fri, 3 Jul 2009 13:16:38 -0500 Subject: softirq: Sanitize softirq pending for NOHZ/RT -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner @@ -11,10 +11,8 @@ Signed-off-by: Thomas Gleixner kernel/time/tick-sched.c | 9 ------ 3 files changed, 66 insertions(+), 8 deletions(-) -Index: linux-stable/include/linux/interrupt.h -=================================================================== ---- linux-stable.orig/include/linux/interrupt.h -+++ linux-stable/include/linux/interrupt.h +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h @@ -455,6 +455,8 @@ extern void __raise_softirq_irqoff(unsig extern void raise_softirq_irqoff(unsigned int nr); extern void raise_softirq(unsigned int nr); @@ -24,15 +22,13 @@ Index: linux-stable/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-stable/kernel/softirq.c -=================================================================== ---- linux-stable.orig/kernel/softirq.c -+++ linux-stable/kernel/softirq.c +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -62,6 +62,69 @@ char *softirq_to_name[NR_SOFTIRQS] = { "TASKLET", "SCHED", "HRTIMER", "RCU" }; -+#ifdef CONFIG_NO_HZ ++#ifdef CONFIG_NO_HZ_COMMON +# ifdef CONFIG_PREEMPT_RT_FULL +/* + * On preempt-rt a softirq might be blocked on a lock. There might be @@ -98,10 +94,8 @@ Index: linux-stable/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-stable/kernel/time/tick-sched.c -=================================================================== ---- linux-stable.orig/kernel/time/tick-sched.c -+++ linux-stable/kernel/time/tick-sched.c +--- a/kernel/time/tick-sched.c ++++ b/kernel/time/tick-sched.c @@ -731,14 +731,7 @@ static bool can_stop_idle_tick(int cpu, return false; diff --git a/debian/patches/features/all/rt/softirq-split-handling-function.patch b/debian/patches/features/all/rt/softirq-split-handling-function.patch index c57db24ab..d09ca0b07 100644 --- a/debian/patches/features/all/rt/softirq-split-handling-function.patch +++ b/debian/patches/features/all/rt/softirq-split-handling-function.patch @@ -1,7 +1,7 @@ Subject: softirq: Split handling function From: Thomas Gleixner Date: Thu, 04 Oct 2012 15:33:53 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Split out the inner handling function, so RT can reuse it. @@ -10,10 +10,8 @@ Signed-off-by: Thomas Gleixner kernel/softirq.c | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) -Index: linux-stable/kernel/softirq.c -=================================================================== ---- linux-stable.orig/kernel/softirq.c -+++ linux-stable/kernel/softirq.c +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -142,31 +142,34 @@ static void wakeup_softirqd(void) wake_up_process(tsk); } diff --git a/debian/patches/features/all/rt/softirq-split-locks.patch b/debian/patches/features/all/rt/softirq-split-locks.patch index 01d891c02..4879d17a3 100644 --- a/debian/patches/features/all/rt/softirq-split-locks.patch +++ b/debian/patches/features/all/rt/softirq-split-locks.patch @@ -1,7 +1,7 @@ Subject: softirq: Split softirq locks From: Thomas Gleixner Date: Thu, 04 Oct 2012 14:20:47 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz The 3.x RT series removed the split softirq implementation in favour of pushing softirq processing into the context of the thread which @@ -29,11 +29,9 @@ Signed-off-by: Thomas Gleixner kernel/softirq.c | 305 ++++++++++++++++++++++++++++++-------------------- 2 files changed, 185 insertions(+), 121 deletions(-) -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h -@@ -1446,6 +1446,7 @@ struct task_struct { +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -1449,6 +1449,7 @@ struct task_struct { #ifdef CONFIG_PREEMPT_RT_BASE struct rcu_head put_rcu; int softirq_nestcnt; @@ -41,10 +39,8 @@ Index: linux-stable/include/linux/sched.h #endif #ifdef CONFIG_PREEMPT_RT_FULL # if defined CONFIG_HIGHMEM || defined CONFIG_X86_32 -Index: linux-stable/kernel/softirq.c -=================================================================== ---- linux-stable.orig/kernel/softirq.c -+++ linux-stable/kernel/softirq.c +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -162,6 +162,12 @@ static void handle_softirq(unsigned int rcu_bh_qs(cpu); } diff --git a/debian/patches/features/all/rt/softirq-split-out-code.patch b/debian/patches/features/all/rt/softirq-split-out-code.patch index b1e2615ae..7d3351aad 100644 --- a/debian/patches/features/all/rt/softirq-split-out-code.patch +++ b/debian/patches/features/all/rt/softirq-split-out-code.patch @@ -1,17 +1,15 @@ Subject: softirq-split-out-code.patch From: Thomas Gleixner Date: Tue, 28 Jun 2011 15:46:49 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- kernel/softirq.c | 62 ++++++++++++++++++++++++++----------------------------- 1 file changed, 30 insertions(+), 32 deletions(-) -Index: linux-stable/kernel/softirq.c -=================================================================== ---- linux-stable.orig/kernel/softirq.c -+++ linux-stable/kernel/softirq.c +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -77,6 +77,34 @@ static void wakeup_softirqd(void) wake_up_process(tsk); } diff --git a/debian/patches/features/all/rt/softirq-thread-do-softirq.patch b/debian/patches/features/all/rt/softirq-thread-do-softirq.patch index 10820122e..9e07d30ae 100644 --- a/debian/patches/features/all/rt/softirq-thread-do-softirq.patch +++ b/debian/patches/features/all/rt/softirq-thread-do-softirq.patch @@ -1,7 +1,7 @@ Subject: softirq-thread-do-softirq.patch From: Thomas Gleixner Date: Tue, 28 Jun 2011 15:44:15 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -9,10 +9,8 @@ Signed-off-by: Thomas Gleixner net/core/dev.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) -Index: linux-stable/include/linux/interrupt.h -=================================================================== ---- linux-stable.orig/include/linux/interrupt.h -+++ linux-stable/include/linux/interrupt.h +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h @@ -443,6 +443,7 @@ struct softirq_action asmlinkage void do_softirq(void); @@ -21,10 +19,8 @@ Index: linux-stable/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-stable/net/core/dev.c -=================================================================== ---- linux-stable.orig/net/core/dev.c -+++ linux-stable/net/core/dev.c +--- a/net/core/dev.c ++++ b/net/core/dev.c @@ -3204,7 +3204,7 @@ int netif_rx_ni(struct sk_buff *skb) preempt_disable(); err = netif_rx(skb); diff --git a/debian/patches/features/all/rt/spinlock-types-separate-raw.patch b/debian/patches/features/all/rt/spinlock-types-separate-raw.patch index 317e02dd1..2aba1affa 100644 --- a/debian/patches/features/all/rt/spinlock-types-separate-raw.patch +++ b/debian/patches/features/all/rt/spinlock-types-separate-raw.patch @@ -1,7 +1,7 @@ Subject: spinlock-types-separate-raw.patch From: Thomas Gleixner Date: Wed, 29 Jun 2011 19:34:01 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -11,10 +11,8 @@ Signed-off-by: Thomas Gleixner include/linux/spinlock_types_raw.h | 56 +++++++++++++++++++++++++++ 4 files changed, 95 insertions(+), 72 deletions(-) -Index: linux-stable/include/linux/rwlock_types.h -=================================================================== ---- linux-stable.orig/include/linux/rwlock_types.h -+++ linux-stable/include/linux/rwlock_types.h +--- 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 @@ -26,10 +24,8 @@ Index: linux-stable/include/linux/rwlock_types.h /* * include/linux/rwlock_types.h - generic rwlock type definitions * and initializers -Index: linux-stable/include/linux/spinlock_types.h -=================================================================== ---- linux-stable.orig/include/linux/spinlock_types.h -+++ linux-stable/include/linux/spinlock_types.h +--- a/include/linux/spinlock_types.h ++++ b/include/linux/spinlock_types.h @@ -9,79 +9,9 @@ * Released under the General Public License (GPL). */ @@ -112,10 +108,8 @@ Index: linux-stable/include/linux/spinlock_types.h #include -Index: linux-stable/include/linux/spinlock_types_nort.h -=================================================================== --- /dev/null -+++ linux-stable/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 @@ -150,10 +144,8 @@ Index: linux-stable/include/linux/spinlock_types_nort.h +#define DEFINE_SPINLOCK(x) spinlock_t x = __SPIN_LOCK_UNLOCKED(x) + +#endif -Index: linux-stable/include/linux/spinlock_types_raw.h -=================================================================== --- /dev/null -+++ linux-stable/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 diff --git a/debian/patches/features/all/rt/stomp-machine-deal-clever-with-stopper-lock.patch b/debian/patches/features/all/rt/stomp-machine-deal-clever-with-stopper-lock.patch index 0feb7f154..28a0e7270 100644 --- a/debian/patches/features/all/rt/stomp-machine-deal-clever-with-stopper-lock.patch +++ b/debian/patches/features/all/rt/stomp-machine-deal-clever-with-stopper-lock.patch @@ -1,7 +1,7 @@ Subject: stomp_machine: Use mutex_trylock when called from inactive cpu From: Thomas Gleixner Date: Wed, 03 Oct 2012 17:21:53 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz If the stop machinery is called from inactive CPU we cannot use mutex_lock, because some other stomp machine invokation might be in @@ -14,10 +14,8 @@ Cc: stable-rt@vger.kernel.org kernel/stop_machine.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) -Index: linux-stable/kernel/stop_machine.c -=================================================================== ---- linux-stable.orig/kernel/stop_machine.c -+++ linux-stable/kernel/stop_machine.c +--- a/kernel/stop_machine.c ++++ b/kernel/stop_machine.c @@ -160,7 +160,7 @@ static DEFINE_PER_CPU(struct cpu_stop_wo static void queue_stop_cpus_work(const struct cpumask *cpumask, diff --git a/debian/patches/features/all/rt/stomp-machine-raw-lock.patch b/debian/patches/features/all/rt/stomp-machine-raw-lock.patch index 4dd84dceb..4e9604d7b 100644 --- a/debian/patches/features/all/rt/stomp-machine-raw-lock.patch +++ b/debian/patches/features/all/rt/stomp-machine-raw-lock.patch @@ -1,17 +1,15 @@ Subject: stomp-machine-raw-lock.patch From: Thomas Gleixner Date: Wed, 29 Jun 2011 11:01:51 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- kernel/stop_machine.c | 62 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 19 deletions(-) -Index: linux-stable/kernel/stop_machine.c -=================================================================== ---- linux-stable.orig/kernel/stop_machine.c -+++ linux-stable/kernel/stop_machine.c +--- 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? */ diff --git a/debian/patches/features/all/rt/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch b/debian/patches/features/all/rt/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch index 116aee89b..49cb99cb8 100644 --- a/debian/patches/features/all/rt/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch +++ b/debian/patches/features/all/rt/stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:27 -0500 Subject: stop_machine: convert stop_machine_run() to PREEMPT_RT -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Instead of playing with non-preemption, introduce explicit startup serialization. This is more robust and cleaner as @@ -14,10 +14,8 @@ Signed-off-by: Thomas Gleixner kernel/stop_machine.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) -Index: linux-stable/kernel/stop_machine.c -=================================================================== ---- linux-stable.orig/kernel/stop_machine.c -+++ linux-stable/kernel/stop_machine.c +--- a/kernel/stop_machine.c ++++ b/kernel/stop_machine.c @@ -137,6 +137,7 @@ void stop_one_cpu_nowait(unsigned int cp /* static data for stop_cpus */ diff --git a/debian/patches/features/all/rt/suspend-prevernt-might-sleep-splats.patch b/debian/patches/features/all/rt/suspend-prevernt-might-sleep-splats.patch index 4d8b0da05..664b2246f 100644 --- a/debian/patches/features/all/rt/suspend-prevernt-might-sleep-splats.patch +++ b/debian/patches/features/all/rt/suspend-prevernt-might-sleep-splats.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Thu, 15 Jul 2010 10:29:00 +0200 Subject: suspend: Prevent might sleep splats -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz timekeeping suspend/resume calls read_persistant_clock() which takes rtc_lock. That results in might sleep warnings because at that point @@ -24,10 +24,8 @@ Signed-off-by: Thomas Gleixner kernel/power/suspend.c | 4 ++++ 3 files changed, 12 insertions(+) -Index: linux-stable/include/linux/kernel.h -=================================================================== ---- linux-stable.orig/include/linux/kernel.h -+++ linux-stable/include/linux/kernel.h +--- a/include/linux/kernel.h ++++ b/include/linux/kernel.h @@ -415,6 +415,7 @@ extern enum system_states { SYSTEM_HALT, SYSTEM_POWER_OFF, @@ -36,10 +34,8 @@ Index: linux-stable/include/linux/kernel.h } system_state; #define TAINT_PROPRIETARY_MODULE 0 -Index: linux-stable/kernel/power/hibernate.c -=================================================================== ---- linux-stable.orig/kernel/power/hibernate.c -+++ linux-stable/kernel/power/hibernate.c +--- a/kernel/power/hibernate.c ++++ b/kernel/power/hibernate.c @@ -275,6 +275,8 @@ static int create_image(int platform_mod local_irq_disable(); @@ -89,10 +85,8 @@ Index: linux-stable/kernel/power/hibernate.c local_irq_enable(); enable_nonboot_cpus(); -Index: linux-stable/kernel/power/suspend.c -=================================================================== ---- linux-stable.orig/kernel/power/suspend.c -+++ linux-stable/kernel/power/suspend.c +--- a/kernel/power/suspend.c ++++ b/kernel/power/suspend.c @@ -217,6 +217,8 @@ static int suspend_enter(suspend_state_t arch_suspend_disable_irqs(); BUG_ON(!irqs_disabled()); diff --git a/debian/patches/features/all/rt/sysctl-include-atomic-h.patch b/debian/patches/features/all/rt/sysctl-include-atomic-h.patch index cb3acf9bb..f9b21440f 100644 --- a/debian/patches/features/all/rt/sysctl-include-atomic-h.patch +++ b/debian/patches/features/all/rt/sysctl-include-atomic-h.patch @@ -1,17 +1,15 @@ Subject: sysctl-include-fix.patch From: Thomas Gleixner Date: Mon, 14 Nov 2011 10:52:34 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- include/linux/sysctl.h | 1 + 1 file changed, 1 insertion(+) -Index: linux-stable/include/linux/sysctl.h -=================================================================== ---- linux-stable.orig/include/linux/sysctl.h -+++ linux-stable/include/linux/sysctl.h +--- a/include/linux/sysctl.h ++++ b/include/linux/sysctl.h @@ -25,6 +25,7 @@ #include #include diff --git a/debian/patches/features/all/rt/sysfs-realtime-entry.patch b/debian/patches/features/all/rt/sysfs-realtime-entry.patch index 3cf28b5ee..d8fd75eae 100644 --- a/debian/patches/features/all/rt/sysfs-realtime-entry.patch +++ b/debian/patches/features/all/rt/sysfs-realtime-entry.patch @@ -1,7 +1,7 @@ Subject: add /sys/kernel/realtime entry From: Clark Williams Date: Sat Jul 30 21:55:53 2011 -0500 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Add a /sys/kernel entry to indicate that the kernel is a realtime kernel. @@ -18,10 +18,8 @@ Signed-off-by: Peter Zijlstra kernel/ksysfs.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) -Index: linux-stable/kernel/ksysfs.c -=================================================================== ---- linux-stable.orig/kernel/ksysfs.c -+++ linux-stable/kernel/ksysfs.c +--- a/kernel/ksysfs.c ++++ b/kernel/ksysfs.c @@ -132,6 +132,15 @@ KERNEL_ATTR_RO(vmcoreinfo); #endif /* CONFIG_KEXEC */ diff --git a/debian/patches/features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch b/debian/patches/features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch index 046757111..b63cba5f6 100644 --- a/debian/patches/features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch +++ b/debian/patches/features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch @@ -1,7 +1,7 @@ Subject: tasklet: Prevent tasklets from going into infinite spin in RT From: Ingo Molnar Date: Tue Nov 29 20:18:22 2011 -0500 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz When CONFIG_PREEMPT_RT_FULL is enabled, tasklets run as threads, and spinlocks turn are mutexes. But this can cause issues with @@ -42,10 +42,8 @@ Signed-off-by: Thomas Gleixner kernel/softirq.c | 208 +++++++++++++++++++++++++++++++++------------- 2 files changed, 170 insertions(+), 77 deletions(-) -Index: linux-stable/include/linux/interrupt.h -=================================================================== ---- linux-stable.orig/include/linux/interrupt.h -+++ linux-stable/include/linux/interrupt.h +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h @@ -502,8 +502,9 @@ extern void __send_remote_softirq(struct to be executed on some cpu at least once after this. * If the tasklet is already scheduled, but its execution is still not @@ -121,10 +119,8 @@ Index: linux-stable/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-stable/kernel/softirq.c -=================================================================== ---- linux-stable.orig/kernel/softirq.c -+++ linux-stable/kernel/softirq.c +--- a/kernel/softirq.c ++++ b/kernel/softirq.c @@ -21,6 +21,7 @@ #include #include diff --git a/debian/patches/features/all/rt/tasklist-lock-fix-section-conflict.patch b/debian/patches/features/all/rt/tasklist-lock-fix-section-conflict.patch index d1a99f1f9..26a32b39b 100644 --- a/debian/patches/features/all/rt/tasklist-lock-fix-section-conflict.patch +++ b/debian/patches/features/all/rt/tasklist-lock-fix-section-conflict.patch @@ -1,13 +1,13 @@ Subject: rwlocks: Fix section mismatch From: John Kacur Date: Mon, 19 Sep 2011 11:09:27 +0200 (CEST) -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz 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 @@ -34,10 +34,8 @@ Signed-off-by: Thomas Gleixner kernel/fork.c | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) -Index: linux-stable/include/linux/rwlock_types.h -=================================================================== ---- linux-stable.orig/include/linux/rwlock_types.h -+++ linux-stable/include/linux/rwlock_types.h +--- a/include/linux/rwlock_types.h ++++ b/include/linux/rwlock_types.h @@ -47,6 +47,7 @@ typedef struct { RW_DEP_MAP_INIT(lockname) } #endif @@ -47,10 +45,8 @@ Index: linux-stable/include/linux/rwlock_types.h + rwlock_t name __cacheline_aligned_in_smp = __RW_LOCK_UNLOCKED(name) #endif /* __LINUX_RWLOCK_TYPES_H */ -Index: linux-stable/kernel/fork.c -=================================================================== ---- linux-stable.orig/kernel/fork.c -+++ linux-stable/kernel/fork.c +--- a/kernel/fork.c ++++ b/kernel/fork.c @@ -94,7 +94,7 @@ int max_threads; /* tunable limit on nr DEFINE_PER_CPU(unsigned long, process_counts) = 0; diff --git a/debian/patches/features/all/rt/timekeeping-split-jiffies-lock.patch b/debian/patches/features/all/rt/timekeeping-split-jiffies-lock.patch index 98d1fed97..ba449b796 100644 --- a/debian/patches/features/all/rt/timekeeping-split-jiffies-lock.patch +++ b/debian/patches/features/all/rt/timekeeping-split-jiffies-lock.patch @@ -1,7 +1,7 @@ Subject: timekeeping-split-jiffies-lock.patch From: Thomas Gleixner Date: Thu, 14 Feb 2013 22:36:59 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -12,10 +12,8 @@ Signed-off-by: Thomas Gleixner kernel/time/timekeeping.c | 6 ++++-- 5 files changed, 26 insertions(+), 16 deletions(-) -Index: linux-stable/kernel/time/jiffies.c -=================================================================== ---- linux-stable.orig/kernel/time/jiffies.c -+++ linux-stable/kernel/time/jiffies.c +--- a/kernel/time/jiffies.c ++++ b/kernel/time/jiffies.c @@ -67,7 +67,8 @@ static struct clocksource clocksource_ji .shift = JIFFIES_SHIFT, }; @@ -38,10 +36,8 @@ Index: linux-stable/kernel/time/jiffies.c return ret; } EXPORT_SYMBOL(get_jiffies_64); -Index: linux-stable/kernel/time/tick-common.c -=================================================================== ---- linux-stable.orig/kernel/time/tick-common.c -+++ linux-stable/kernel/time/tick-common.c +--- 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) { @@ -72,10 +68,8 @@ Index: linux-stable/kernel/time/tick-common.c clockevents_set_mode(dev, CLOCK_EVT_MODE_ONESHOT); -Index: linux-stable/kernel/time/tick-internal.h -=================================================================== ---- linux-stable.orig/kernel/time/tick-internal.h -+++ linux-stable/kernel/time/tick-internal.h +--- a/kernel/time/tick-internal.h ++++ b/kernel/time/tick-internal.h @@ -4,7 +4,8 @@ #include #include @@ -86,10 +80,8 @@ Index: linux-stable/kernel/time/tick-internal.h #ifdef CONFIG_GENERIC_CLOCKEVENTS_BUILD -Index: linux-stable/kernel/time/tick-sched.c -=================================================================== ---- linux-stable.orig/kernel/time/tick-sched.c -+++ linux-stable/kernel/time/tick-sched.c +--- a/kernel/time/tick-sched.c ++++ b/kernel/time/tick-sched.c @@ -61,7 +61,8 @@ static void tick_do_update_jiffies64(kti return; @@ -141,10 +133,8 @@ Index: linux-stable/kernel/time/tick-sched.c if (rcu_needs_cpu(cpu, &rcu_delta_jiffies) || arch_needs_cpu(cpu) || irq_work_needs_cpu()) { -Index: linux-stable/kernel/time/timekeeping.c -=================================================================== ---- linux-stable.orig/kernel/time/timekeeping.c -+++ linux-stable/kernel/time/timekeeping.c +--- a/kernel/time/timekeeping.c ++++ b/kernel/time/timekeeping.c @@ -1712,7 +1712,9 @@ EXPORT_SYMBOL(hardpps); */ void xtime_update(unsigned long ticks) diff --git a/debian/patches/features/all/rt/timer-delay-waking-softirqs-from-the-jiffy-tick.patch b/debian/patches/features/all/rt/timer-delay-waking-softirqs-from-the-jiffy-tick.patch index 96487b88c..c79b61be6 100644 --- a/debian/patches/features/all/rt/timer-delay-waking-softirqs-from-the-jiffy-tick.patch +++ b/debian/patches/features/all/rt/timer-delay-waking-softirqs-from-the-jiffy-tick.patch @@ -1,7 +1,7 @@ From: Peter Zijlstra Date: Fri, 21 Aug 2009 11:56:45 +0200 Subject: timer: delay waking softirqs from the jiffy tick -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz People were complaining about broken balancing with the recent -rt series. @@ -57,10 +57,8 @@ Signed-off-by: Thomas Gleixner kernel/timer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/kernel/timer.c -=================================================================== ---- linux-stable.orig/kernel/timer.c -+++ linux-stable/kernel/timer.c +--- a/kernel/timer.c ++++ b/kernel/timer.c @@ -1393,13 +1393,13 @@ void update_process_times(int user_tick) /* Note: this timer irq context must be accounted for as well. */ diff --git a/debian/patches/features/all/rt/timer-fd-avoid-live-lock.patch b/debian/patches/features/all/rt/timer-fd-avoid-live-lock.patch index e40ba8c58..fc4d24ca0 100644 --- a/debian/patches/features/all/rt/timer-fd-avoid-live-lock.patch +++ b/debian/patches/features/all/rt/timer-fd-avoid-live-lock.patch @@ -1,7 +1,7 @@ Subject: timer-fd: Prevent live lock From: Thomas Gleixner Date: Wed, 25 Jan 2012 11:08:40 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz If hrtimer_try_to_cancel() requires a retry, then depending on the priority setting te retry loop might prevent timer callback completion @@ -15,10 +15,8 @@ Cc: stable-rt@vger.kernel.org fs/timerfd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-stable/fs/timerfd.c -=================================================================== ---- linux-stable.orig/fs/timerfd.c -+++ linux-stable/fs/timerfd.c +--- a/fs/timerfd.c ++++ b/fs/timerfd.c @@ -308,7 +308,7 @@ static int do_timerfd_settime(int ufd, i if (hrtimer_try_to_cancel(&ctx->tmr) >= 0) break; diff --git a/debian/patches/features/all/rt/timer-handle-idle-trylock-in-get-next-timer-irq.patch b/debian/patches/features/all/rt/timer-handle-idle-trylock-in-get-next-timer-irq.patch index d8735fc2a..06de77fc5 100644 --- a/debian/patches/features/all/rt/timer-handle-idle-trylock-in-get-next-timer-irq.patch +++ b/debian/patches/features/all/rt/timer-handle-idle-trylock-in-get-next-timer-irq.patch @@ -1,7 +1,7 @@ Subject: timer-handle-idle-trylock-in-get-next-timer-irq.patch From: Thomas Gleixner Date: Sun, 17 Jul 2011 22:08:38 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -10,10 +10,8 @@ Signed-off-by: Thomas Gleixner kernel/timer.c | 9 +++++++-- 3 files changed, 19 insertions(+), 9 deletions(-) -Index: linux-stable/include/linux/spinlock_rt.h -=================================================================== ---- linux-stable.orig/include/linux/spinlock_rt.h -+++ linux-stable/include/linux/spinlock_rt.h +--- a/include/linux/spinlock_rt.h ++++ b/include/linux/spinlock_rt.h @@ -53,7 +53,17 @@ extern void __lockfunc __rt_spin_unlock( #define spin_lock_irq(lock) spin_lock(lock) @@ -33,11 +31,9 @@ Index: linux-stable/include/linux/spinlock_rt.h #ifdef CONFIG_LOCKDEP # define spin_lock_nested(lock, subclass) \ -Index: linux-stable/kernel/rtmutex.c -=================================================================== ---- linux-stable.orig/kernel/rtmutex.c -+++ linux-stable/kernel/rtmutex.c -@@ -862,15 +862,10 @@ EXPORT_SYMBOL(rt_spin_unlock_wait); +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c +@@ -874,15 +874,10 @@ EXPORT_SYMBOL(rt_spin_unlock_wait); int __lockfunc rt_spin_trylock(spinlock_t *lock) { @@ -54,10 +50,8 @@ Index: linux-stable/kernel/rtmutex.c return ret; } EXPORT_SYMBOL(rt_spin_trylock); -Index: linux-stable/kernel/timer.c -=================================================================== ---- linux-stable.orig/kernel/timer.c -+++ linux-stable/kernel/timer.c +--- a/kernel/timer.c ++++ b/kernel/timer.c @@ -1386,9 +1386,10 @@ unsigned long get_next_timer_interrupt(u /* * On PREEMPT_RT we cannot sleep here. If the trylock does not diff --git a/debian/patches/features/all/rt/timers-avoid-the-base-null-otptimization-on-rt.patch b/debian/patches/features/all/rt/timers-avoid-the-base-null-otptimization-on-rt.patch index 2b884ed8c..70145aa4b 100644 --- a/debian/patches/features/all/rt/timers-avoid-the-base-null-otptimization-on-rt.patch +++ b/debian/patches/features/all/rt/timers-avoid-the-base-null-otptimization-on-rt.patch @@ -1,7 +1,7 @@ Subject: timers: Avoid the switch timers base set to NULL trick on RT From: Thomas Gleixner Date: Thu, 21 Jul 2011 15:23:39 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz On RT that code is preemptible, so we cannot assign NULL to timers base as a preempter would spin forever in lock_timer_base(). @@ -11,10 +11,8 @@ Signed-off-by: Thomas Gleixner kernel/timer.c | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) -Index: linux-stable/kernel/timer.c -=================================================================== ---- linux-stable.orig/kernel/timer.c -+++ linux-stable/kernel/timer.c +--- a/kernel/timer.c ++++ b/kernel/timer.c @@ -723,6 +723,36 @@ static struct tvec_base *lock_timer_base } } diff --git a/debian/patches/features/all/rt/timers-preempt-rt-support.patch b/debian/patches/features/all/rt/timers-preempt-rt-support.patch index e7ab260d0..9a4816b92 100644 --- a/debian/patches/features/all/rt/timers-preempt-rt-support.patch +++ b/debian/patches/features/all/rt/timers-preempt-rt-support.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:30:20 -0500 Subject: timers: preempt-rt support -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner @@ -9,10 +9,8 @@ Signed-off-by: Thomas Gleixner kernel/timer.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) -Index: linux-stable/kernel/timer.c -=================================================================== ---- linux-stable.orig/kernel/timer.c -+++ linux-stable/kernel/timer.c +--- a/kernel/timer.c ++++ b/kernel/timer.c @@ -1358,7 +1358,17 @@ unsigned long get_next_timer_interrupt(u if (cpu_is_offline(smp_processor_id())) return expires; diff --git a/debian/patches/features/all/rt/timers-prepare-for-full-preemption-improve.patch b/debian/patches/features/all/rt/timers-prepare-for-full-preemption-improve.patch index 11bc1dab6..1cd638492 100644 --- a/debian/patches/features/all/rt/timers-prepare-for-full-preemption-improve.patch +++ b/debian/patches/features/all/rt/timers-prepare-for-full-preemption-improve.patch @@ -2,7 +2,7 @@ From a57194f115acfc967aa0907bc130e95b68723121 Mon Sep 17 00:00:00 2001 From: Zhao Hongjiang Date: Wed, 17 Apr 2013 17:44:16 +0800 Subject: [PATCH] timers: prepare for full preemption improve -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz wake_up should do nothing on the nort, so we should use wakeup_timer_waiters, also fix a spell mistake. @@ -15,10 +15,8 @@ Signed-off-by: Sebastian Andrzej Siewior kernel/timer.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) -Index: linux-stable/kernel/timer.c -=================================================================== ---- linux-stable.orig/kernel/timer.c -+++ linux-stable/kernel/timer.c +--- a/kernel/timer.c ++++ b/kernel/timer.c @@ -78,7 +78,9 @@ struct tvec_root { struct tvec_base { spinlock_t lock; diff --git a/debian/patches/features/all/rt/timers-prepare-for-full-preemption.patch b/debian/patches/features/all/rt/timers-prepare-for-full-preemption.patch index c24b1ae6f..6521c6203 100644 --- a/debian/patches/features/all/rt/timers-prepare-for-full-preemption.patch +++ b/debian/patches/features/all/rt/timers-prepare-for-full-preemption.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:34 -0500 Subject: timers: prepare for full preemption -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz 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 @@ -15,10 +15,8 @@ Signed-off-by: Thomas Gleixner kernel/timer.c | 36 +++++++++++++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 4 deletions(-) -Index: linux-stable/include/linux/timer.h -=================================================================== ---- linux-stable.orig/include/linux/timer.h -+++ linux-stable/include/linux/timer.h +--- a/include/linux/timer.h ++++ b/include/linux/timer.h @@ -241,7 +241,7 @@ extern void add_timer(struct timer_list extern int try_to_del_timer_sync(struct timer_list *timer); @@ -28,10 +26,8 @@ Index: linux-stable/include/linux/timer.h extern int del_timer_sync(struct timer_list *timer); #else # define del_timer_sync(t) del_timer(t) -Index: linux-stable/kernel/timer.c -=================================================================== ---- linux-stable.orig/kernel/timer.c -+++ linux-stable/kernel/timer.c +--- a/kernel/timer.c ++++ b/kernel/timer.c @@ -78,6 +78,7 @@ struct tvec_root { struct tvec_base { spinlock_t lock; diff --git a/debian/patches/features/all/rt/tracing-account-for-preempt-off-in-preempt_schedule.patch b/debian/patches/features/all/rt/tracing-account-for-preempt-off-in-preempt_schedule.patch index aa2db1372..73a49cf8d 100644 --- a/debian/patches/features/all/rt/tracing-account-for-preempt-off-in-preempt_schedule.patch +++ b/debian/patches/features/all/rt/tracing-account-for-preempt-off-in-preempt_schedule.patch @@ -1,7 +1,7 @@ From: Steven Rostedt Date: Thu, 29 Sep 2011 12:24:30 -0500 Subject: tracing: Account for preempt off in preempt_schedule() -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz The preempt_schedule() uses the preempt_disable_notrace() version because it can cause infinite recursion by the function tracer as @@ -26,11 +26,9 @@ Signed-off-by: Thomas Gleixner kernel/sched/core.c | 9 +++++++++ 1 file changed, 9 insertions(+) -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c -@@ -3093,7 +3093,16 @@ asmlinkage void __sched notrace preempt_ +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -3105,7 +3105,16 @@ asmlinkage void __sched notrace preempt_ do { add_preempt_count_notrace(PREEMPT_ACTIVE); diff --git a/debian/patches/features/all/rt/treercu-use-simple-waitqueue.patch b/debian/patches/features/all/rt/treercu-use-simple-waitqueue.patch index 273ebdab3..8091bd5fe 100644 --- a/debian/patches/features/all/rt/treercu-use-simple-waitqueue.patch +++ b/debian/patches/features/all/rt/treercu-use-simple-waitqueue.patch @@ -2,7 +2,7 @@ From db7ae440c333156392bc56badc610469a4d522ae Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 8 Apr 2013 16:09:57 +0200 Subject: [PATCH] kernel/treercu: use a simple waitqueue -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Sebastian Andrzej Siewior --- @@ -10,10 +10,8 @@ Signed-off-by: Sebastian Andrzej Siewior kernel/rcutree.h | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) -Index: linux-stable/kernel/rcutree.c -=================================================================== ---- linux-stable.orig/kernel/rcutree.c -+++ linux-stable/kernel/rcutree.c +--- a/kernel/rcutree.c ++++ b/kernel/rcutree.c @@ -1572,7 +1572,7 @@ static int __noreturn rcu_gp_kthread(voi /* Handle grace-period start. */ @@ -69,10 +67,8 @@ Index: linux-stable/kernel/rcutree.c init_irq_work(&rsp->wakeup_work, rsp_wakeup); rnp = rsp->level[rcu_num_lvls - 1]; for_each_possible_cpu(i) { -Index: linux-stable/kernel/rcutree.h -=================================================================== ---- linux-stable.orig/kernel/rcutree.h -+++ linux-stable/kernel/rcutree.h +--- a/kernel/rcutree.h ++++ b/kernel/rcutree.h @@ -388,7 +388,7 @@ struct rcu_state { unsigned long gpnum; /* Current gp number. */ unsigned long completed; /* # of last completed gp. */ diff --git a/debian/patches/features/all/rt/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch b/debian/patches/features/all/rt/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch index 91050f5bb..80d0a940e 100644 --- a/debian/patches/features/all/rt/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch +++ b/debian/patches/features/all/rt/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch @@ -1,7 +1,7 @@ Subject: [UPSTREAM]net,RT:REmove preemption disabling in netif_rx() From: Priyanka Jain Date: Thu, 17 May 2012 09:35:11 +0530 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz 1)enqueue_to_backlog() (called from netif_rx) should be bind to a particluar CPU. This can be achieved by @@ -36,11 +36,9 @@ Signed-off-by: Thomas Gleixner net/core/dev.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -Index: linux-stable/net/core/dev.c -=================================================================== ---- linux-stable.orig/net/core/dev.c -+++ linux-stable/net/core/dev.c -@@ -3178,7 +3178,7 @@ int netif_rx(struct sk_buff *skb) +--- a/net/core/dev.c ++++ b/net/core/dev.c +@@ -3175,7 +3175,7 @@ int netif_rx(struct sk_buff *skb) struct rps_dev_flow voidflow, *rflow = &voidflow; int cpu; @@ -49,7 +47,7 @@ Index: linux-stable/net/core/dev.c rcu_read_lock(); cpu = get_rps_cpu(skb->dev, skb, &rflow); -@@ -3188,13 +3188,13 @@ int netif_rx(struct sk_buff *skb) +@@ -3185,13 +3185,13 @@ int netif_rx(struct sk_buff *skb) ret = enqueue_to_backlog(skb, cpu, &rflow->last_qtail); rcu_read_unlock(); diff --git a/debian/patches/features/all/rt/usb-fix-mouse-problem-copying-large-data.patch b/debian/patches/features/all/rt/usb-fix-mouse-problem-copying-large-data.patch index f3c81ddd8..4025c5d7d 100644 --- a/debian/patches/features/all/rt/usb-fix-mouse-problem-copying-large-data.patch +++ b/debian/patches/features/all/rt/usb-fix-mouse-problem-copying-large-data.patch @@ -1,7 +1,7 @@ From: Wu Zhangjin Date: Mon, 4 Jan 2010 11:33:02 +0800 Subject: USB: Fix the mouse problem when copying large amounts of data -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz 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. @@ -16,10 +16,8 @@ Signed-off-by: Wu Zhangjin drivers/usb/host/ohci-hcd.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) -Index: linux-stable/drivers/usb/host/ohci-hcd.c -=================================================================== ---- linux-stable.orig/drivers/usb/host/ohci-hcd.c -+++ linux-stable/drivers/usb/host/ohci-hcd.c +--- a/drivers/usb/host/ohci-hcd.c ++++ b/drivers/usb/host/ohci-hcd.c @@ -861,9 +861,13 @@ static irqreturn_t ohci_irq (struct usb_ } diff --git a/debian/patches/features/all/rt/usb-hcd-use-local-irq-nort.patch b/debian/patches/features/all/rt/usb-hcd-use-local-irq-nort.patch index 4f393ff58..81acea741 100644 --- a/debian/patches/features/all/rt/usb-hcd-use-local-irq-nort.patch +++ b/debian/patches/features/all/rt/usb-hcd-use-local-irq-nort.patch @@ -1,7 +1,7 @@ From: Steven Rostedt Date: Fri, 3 Jul 2009 08:44:26 -0500 Subject: usb: Use local_irq_*_nort() variants -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz [ tglx: Now that irqf_disabled is dead we should kill that ] @@ -13,10 +13,8 @@ Signed-off-by: Thomas Gleixner drivers/usb/core/hcd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-stable/drivers/usb/core/hcd.c -=================================================================== ---- linux-stable.orig/drivers/usb/core/hcd.c -+++ linux-stable/drivers/usb/core/hcd.c +--- a/drivers/usb/core/hcd.c ++++ b/drivers/usb/core/hcd.c @@ -2221,7 +2221,7 @@ irqreturn_t usb_hcd_irq (int irq, void * * when the first handler doesn't use it. So let's just * assume it's never used. diff --git a/debian/patches/features/all/rt/user-use-local-irq-nort.patch b/debian/patches/features/all/rt/user-use-local-irq-nort.patch index 9e7360952..9726ab8f7 100644 --- a/debian/patches/features/all/rt/user-use-local-irq-nort.patch +++ b/debian/patches/features/all/rt/user-use-local-irq-nort.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Tue, 21 Jul 2009 23:06:05 +0200 Subject: core: Do not disable interrupts on RT in kernel/users.c -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Use the local_irq_*_nort variants to reduce latencies in RT. The code is serialized by the locks. No need to disable interrupts. @@ -12,10 +12,8 @@ Signed-off-by: Thomas Gleixner kernel/user.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -Index: linux-stable/kernel/user.c -=================================================================== ---- linux-stable.orig/kernel/user.c -+++ linux-stable/kernel/user.c +--- a/kernel/user.c ++++ b/kernel/user.c @@ -156,11 +156,11 @@ void free_uid(struct user_struct *up) if (!up) return; diff --git a/debian/patches/features/all/rt/vtime-split-lock-and-seqcount.patch b/debian/patches/features/all/rt/vtime-split-lock-and-seqcount.patch index a9cce6672..635fe2274 100644 --- a/debian/patches/features/all/rt/vtime-split-lock-and-seqcount.patch +++ b/debian/patches/features/all/rt/vtime-split-lock-and-seqcount.patch @@ -1,7 +1,7 @@ Subject: vtime-split-lock-and-seqcount.patch From: Thomas Gleixner Date: Tue, 23 Jul 2013 15:45:51 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -11,10 +11,8 @@ Signed-off-by: Thomas Gleixner kernel/sched/cputime.c | 62 +++++++++++++++++++++++++++++----------------- 4 files changed, 46 insertions(+), 25 deletions(-) -Index: linux-stable/include/linux/init_task.h -=================================================================== ---- linux-stable.orig/include/linux/init_task.h -+++ linux-stable/include/linux/init_task.h +--- a/include/linux/init_task.h ++++ b/include/linux/init_task.h @@ -145,7 +145,8 @@ extern struct task_group root_task_group #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN @@ -25,10 +23,8 @@ Index: linux-stable/include/linux/init_task.h .vtime_snap = 0, \ .vtime_snap_whence = VTIME_SYS, #else -Index: linux-stable/include/linux/sched.h -=================================================================== ---- linux-stable.orig/include/linux/sched.h -+++ linux-stable/include/linux/sched.h +--- a/include/linux/sched.h ++++ b/include/linux/sched.h @@ -1167,7 +1167,8 @@ struct task_struct { struct cputime prev_cputime; #endif @@ -39,10 +35,8 @@ Index: linux-stable/include/linux/sched.h unsigned long long vtime_snap; enum { VTIME_SLEEPING = 0, -Index: linux-stable/kernel/fork.c -=================================================================== ---- linux-stable.orig/kernel/fork.c -+++ linux-stable/kernel/fork.c +--- a/kernel/fork.c ++++ b/kernel/fork.c @@ -1238,7 +1238,8 @@ static struct task_struct *copy_process( p->prev_cputime.utime = p->prev_cputime.stime = 0; #endif @@ -53,10 +47,8 @@ Index: linux-stable/kernel/fork.c p->vtime_snap = 0; p->vtime_snap_whence = VTIME_SLEEPING; #endif -Index: linux-stable/kernel/sched/cputime.c -=================================================================== ---- linux-stable.orig/kernel/sched/cputime.c -+++ linux-stable/kernel/sched/cputime.c +--- a/kernel/sched/cputime.c ++++ b/kernel/sched/cputime.c @@ -668,9 +668,11 @@ void vtime_account_system(struct task_st if (!vtime_accounting_enabled()) return; diff --git a/debian/patches/features/all/rt/wait-simple-implementation.patch b/debian/patches/features/all/rt/wait-simple-implementation.patch index ac2a280d8..e179d2c65 100644 --- a/debian/patches/features/all/rt/wait-simple-implementation.patch +++ b/debian/patches/features/all/rt/wait-simple-implementation.patch @@ -12,7 +12,7 @@ should go mainline as well, as it lowers memory consumption and runtime overhead. Signed-off-by: Thomas Gleixner -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz --- include/linux/wait-simple.h | 231 ++++++++++++++++++++++++++++++++++++++++++++ @@ -20,10 +20,8 @@ Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4- kernel/wait-simple.c | 68 ++++++++++++ 3 files changed, 300 insertions(+), 1 deletion(-) -Index: linux-stable/include/linux/wait-simple.h -=================================================================== --- /dev/null -+++ linux-stable/include/linux/wait-simple.h ++++ b/include/linux/wait-simple.h @@ -0,0 +1,231 @@ +#ifndef _LINUX_WAIT_SIMPLE_H +#define _LINUX_WAIT_SIMPLE_H @@ -256,10 +254,8 @@ Index: linux-stable/include/linux/wait-simple.h +}) + +#endif -Index: linux-stable/kernel/Makefile -=================================================================== ---- linux-stable.orig/kernel/Makefile -+++ linux-stable/kernel/Makefile +--- a/kernel/Makefile ++++ b/kernel/Makefile @@ -10,7 +10,7 @@ obj-y = fork.o exec_domain.o panic.o kthread.o wait.o sys_ni.o posix-cpu-timers.o \ hrtimer.o nsproxy.o srcu.o semaphore.o \ @@ -269,10 +265,8 @@ Index: linux-stable/kernel/Makefile ifdef CONFIG_FUNCTION_TRACER # Do not trace debug files and internal ftrace files -Index: linux-stable/kernel/wait-simple.c -=================================================================== --- /dev/null -+++ linux-stable/kernel/wait-simple.c ++++ b/kernel/wait-simple.c @@ -0,0 +1,68 @@ +/* + * Simple waitqueues without fancy flags and callbacks diff --git a/debian/patches/features/all/rt/wait-simple-rework-for-completions.patch b/debian/patches/features/all/rt/wait-simple-rework-for-completions.patch index 83626b170..6b4071c7b 100644 --- a/debian/patches/features/all/rt/wait-simple-rework-for-completions.patch +++ b/debian/patches/features/all/rt/wait-simple-rework-for-completions.patch @@ -1,7 +1,7 @@ Subject: wait-simple: Rework for use with completions From: Thomas Gleixner Date: Thu, 10 Jan 2013 11:47:35 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -9,10 +9,8 @@ Signed-off-by: Thomas Gleixner kernel/wait-simple.c | 69 ++++++++++++++++++++++++++++++++++++++------ 2 files changed, 72 insertions(+), 53 deletions(-) -Index: linux-stable/include/linux/wait-simple.h -=================================================================== ---- linux-stable.orig/include/linux/wait-simple.h -+++ linux-stable/include/linux/wait-simple.h +--- a/include/linux/wait-simple.h ++++ b/include/linux/wait-simple.h @@ -22,12 +22,14 @@ struct swait_head { struct list_head list; }; @@ -98,10 +96,8 @@ Index: linux-stable/include/linux/wait-simple.h #define __swait_event(wq, condition) \ do { \ DEFINE_SWAITER(__wait); \ -Index: linux-stable/kernel/wait-simple.c -=================================================================== ---- linux-stable.orig/kernel/wait-simple.c -+++ linux-stable/kernel/wait-simple.c +--- a/kernel/wait-simple.c ++++ b/kernel/wait-simple.c @@ -12,6 +12,24 @@ #include #include diff --git a/debian/patches/features/all/rt/work-queue-work-around-irqsafe-timer-optimization.patch b/debian/patches/features/all/rt/work-queue-work-around-irqsafe-timer-optimization.patch index bb7ee2121..c4fede65a 100644 --- a/debian/patches/features/all/rt/work-queue-work-around-irqsafe-timer-optimization.patch +++ b/debian/patches/features/all/rt/work-queue-work-around-irqsafe-timer-optimization.patch @@ -1,17 +1,119 @@ -Subject: hack.patch From: Thomas Gleixner Date: Mon, 01 Jul 2013 11:02:42 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Subject: [PATCH] workqueue vs ata-piix livelock fixup +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz +An Intel i7 system regularly detected rcu_preempt stalls after the kernel +was upgraded from 3.6-rt to 3.8-rt. When the stall happened, disk I/O was no +longer possible, unless the system was restarted. + +The kernel message was: +INFO: rcu_preempt self-detected stall on CPU { 6} +[..] +NMI backtrace for cpu 6 +CPU 6 +Pid: 119, comm: irq/19-ata_piix Not tainted 3.8.13-rt13 #11 Shuttle Inc. SX58/SX58 +RIP: 0010:[] [] ip_compute_csum+0x30/0x30 +RSP: 0018:ffff880333303cb0 EFLAGS: 00000002 +RAX: 0000000000000006 RBX: 00000000000003e9 RCX: 0000000000000034 +RDX: 0000000000000000 RSI: ffffffff81aa16d0 RDI: 0000000000000001 +RBP: ffff880333303ce8 R08: ffffffff81aa16d0 R09: ffffffff81c1b8cc +R10: 0000000000000000 R11: 0000000000000000 R12: 000000000005161f +R13: 0000000000000006 R14: ffffffff81aa16d0 R15: 0000000000000002 +FS: 0000000000000000(0000) GS:ffff880333300000(0000) knlGS:0000000000000000 +CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b +CR2: 0000003c1b2bb420 CR3: 0000000001a0f000 CR4: 00000000000007e0 +DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 +Process irq/19-ata_piix (pid: 119, threadinfo ffff88032d88a000, task ffff88032df80000) +Stack: +ffffffff8124cb32 000000000005161e 00000000000003e9 0000000000001000 +0000000000009022 ffffffff81aa16d0 0000000000000002 ffff880333303cf8 +ffffffff8124caa9 ffff880333303d08 ffffffff8124cad2 ffff880333303d28 +Call Trace: + +[] ? delay_tsc+0x33/0xe3 +[] __delay+0xf/0x11 +[] __const_udelay+0x27/0x29 +[] native_safe_apic_wait_icr_idle+0x39/0x45 +[] __default_send_IPI_dest_field.constprop.0+0x1e/0x58 +[] default_send_IPI_mask_sequence_phys+0x49/0x7d +[] physflat_send_IPI_all+0x17/0x19 +[] arch_trigger_all_cpu_backtrace+0x50/0x79 +[] rcu_check_callbacks+0x1cb/0x568 +[] ? raise_softirq+0x2e/0x35 +[] ? tick_sched_do_timer+0x38/0x38 +[] update_process_times+0x44/0x55 +[] tick_sched_handle+0x4a/0x59 +[] tick_sched_timer+0x3c/0x5b +[] __run_hrtimer+0x9b/0x158 +[] hrtimer_interrupt+0x172/0x2aa +[] smp_apic_timer_interrupt+0x76/0x89 +[] apic_timer_interrupt+0x6d/0x80 + +[] ? __local_lock_irqsave+0x17/0x4a +[] try_to_grab_pending+0x42/0x17e +[] mod_delayed_work_on+0x32/0x88 +[] mod_delayed_work+0x1c/0x1e +[] blk_run_queue_async+0x37/0x39 +[] flush_end_io+0xf1/0x107 +[] blk_finish_request+0x21e/0x264 +[] blk_end_bidi_request+0x42/0x60 +[] blk_end_request+0x10/0x12 +[] scsi_io_completion+0x1bf/0x492 +[] ? sd_done+0x298/0x2ef +[] scsi_finish_command+0xe9/0xf2 +[] scsi_softirq_done+0x106/0x10f +[] blk_done_softirq+0x77/0x87 +[] do_current_softirqs+0x172/0x2e1 +[] ? irq_thread_fn+0x3a/0x3a +[] local_bh_enable+0x43/0x72 +[] irq_forced_thread_fn+0x46/0x52 +[] irq_thread+0x8c/0x17c +[] ? irq_thread+0x17c/0x17c +[] ? wake_threads_waitq+0x44/0x44 +[] kthread+0x8d/0x95 +[] ? __kthread_parkme+0x65/0x65 +[] ret_from_fork+0x7c/0xb0 +[] ? __kthread_parkme+0x65/0x65 + +The state of softirqd of this CPU at the time of the crash was: +ksoftirqd/6 R running task 0 53 2 0x00000000 +ffff88032fc39d18 0000000000000046 ffff88033330c4c0 ffff8803303f4710 +ffff88032fc39fd8 ffff88032fc39fd8 0000000000000000 0000000000062500 +ffff88032df88000 ffff8803303f4710 0000000000000000 ffff88032fc38000 +Call Trace: +[] ? __queue_work+0x27c/0x27c +[] preempt_schedule+0x61/0x76 +[] migrate_enable+0xe5/0x1df +[] ? __queue_work+0x27c/0x27c +[] run_timer_softirq+0x161/0x1d6 +[] do_current_softirqs+0x172/0x2e1 +[] run_ksoftirqd+0x2d/0x45 +[] smpboot_thread_fn+0x2ea/0x308 +[] ? test_ti_thread_flag+0xc/0xc +[] ? test_ti_thread_flag+0xc/0xc +[] kthread+0x8d/0x95 +[] ? __kthread_parkme+0x65/0x65 +[] ret_from_fork+0x7c/0xb0 +[] ? __kthread_parkme+0x65/0x65 + +Apparently, the softirq demon and the ata_piix IRQ handler were waiting +for each other to finish ending up in a livelock. After the below patch +was applied, the system no longer crashes. + +Reported-by: Carsten Emde +Proposed-by: Thomas Gleixner +Tested by: Carsten Emde +Signed-off-by: Carsten Emde Signed-off-by: Thomas Gleixner +Signed-off-by: Sebastian Andrzej Siewior --- kernel/workqueue.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -Index: linux-stable/kernel/workqueue.c -=================================================================== ---- linux-stable.orig/kernel/workqueue.c -+++ linux-stable/kernel/workqueue.c +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c @@ -48,6 +48,7 @@ #include #include diff --git a/debian/patches/features/all/rt/workqueue-distangle-from-rq-lock.patch b/debian/patches/features/all/rt/workqueue-distangle-from-rq-lock.patch index 707041458..e16c1639d 100644 --- a/debian/patches/features/all/rt/workqueue-distangle-from-rq-lock.patch +++ b/debian/patches/features/all/rt/workqueue-distangle-from-rq-lock.patch @@ -22,7 +22,7 @@ Cc: Jens Axboe Cc: Linus Torvalds Link: http://lkml.kernel.org/r/20110622174919.135236139@linutronix.de Signed-off-by: Thomas Gleixner -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz --- kernel/sched/core.c | 70 +++++++++----------------------------------- @@ -30,10 +30,8 @@ Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4- kernel/workqueue_internal.h | 5 +-- 3 files changed, 41 insertions(+), 89 deletions(-) -Index: linux-stable/kernel/sched/core.c -=================================================================== ---- linux-stable.orig/kernel/sched/core.c -+++ linux-stable/kernel/sched/core.c +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c @@ -1330,10 +1330,6 @@ static void ttwu_activate(struct rq *rq, { activate_task(rq, p, en_flags); @@ -145,10 +143,8 @@ Index: linux-stable/kernel/sched/core.c } EXPORT_SYMBOL(schedule); -Index: linux-stable/kernel/workqueue.c -=================================================================== ---- linux-stable.orig/kernel/workqueue.c -+++ linux-stable/kernel/workqueue.c +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c @@ -789,44 +789,31 @@ static void wake_up_worker(struct worker } @@ -242,10 +238,8 @@ Index: linux-stable/kernel/workqueue.c } /** -Index: linux-stable/kernel/workqueue_internal.h -=================================================================== ---- linux-stable.orig/kernel/workqueue_internal.h -+++ linux-stable/kernel/workqueue_internal.h +--- a/kernel/workqueue_internal.h ++++ b/kernel/workqueue_internal.h @@ -41,6 +41,7 @@ struct worker { unsigned long last_active; /* L: last active timestamp */ unsigned int flags; /* X: flags */ diff --git a/debian/patches/features/all/rt/workqueue-use-locallock.patch b/debian/patches/features/all/rt/workqueue-use-locallock.patch index 56158831c..f2823f7fe 100644 --- a/debian/patches/features/all/rt/workqueue-use-locallock.patch +++ b/debian/patches/features/all/rt/workqueue-use-locallock.patch @@ -1,17 +1,15 @@ Subject: Use local irq lock instead of irq disable regions From: Thomas Gleixner Date: Sun, 17 Jul 2011 21:42:26 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- kernel/workqueue.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) -Index: linux-stable/kernel/workqueue.c -=================================================================== ---- linux-stable.orig/kernel/workqueue.c -+++ linux-stable/kernel/workqueue.c +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c @@ -47,6 +47,7 @@ #include #include @@ -142,7 +140,7 @@ Index: linux-stable/kernel/workqueue.c return ret; } EXPORT_SYMBOL(cancel_delayed_work); -@@ -4373,7 +4376,7 @@ unsigned int work_busy(struct work_struc +@@ -4385,7 +4388,7 @@ unsigned int work_busy(struct work_struc if (work_pending(work)) ret |= WORK_BUSY_PENDING; diff --git a/debian/patches/features/all/rt/workqueue-use-rcu.patch b/debian/patches/features/all/rt/workqueue-use-rcu.patch index 49a9fabd6..71add19c4 100644 --- a/debian/patches/features/all/rt/workqueue-use-rcu.patch +++ b/debian/patches/features/all/rt/workqueue-use-rcu.patch @@ -1,7 +1,7 @@ Subject: workqueue: Use normal rcu From: Thomas Gleixner Date: Wed, 24 Jul 2013 15:26:54 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz There is no need for sched_rcu. The undocumented reason why sched_rcu is used is to avoid a few explicit rcu_read_lock()/unlock() pairs by @@ -13,10 +13,8 @@ Signed-off-by: Thomas Gleixner kernel/workqueue.c | 85 +++++++++++++++++++++++++++++------------------------ 1 file changed, 47 insertions(+), 38 deletions(-) -Index: linux-stable/kernel/workqueue.c -=================================================================== ---- linux-stable.orig/kernel/workqueue.c -+++ linux-stable/kernel/workqueue.c +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c @@ -128,11 +128,11 @@ enum { * * PL: wq_pool_mutex protected. @@ -219,7 +217,7 @@ Index: linux-stable/kernel/workqueue.c return written; } -@@ -3476,7 +3484,7 @@ static void rcu_free_pool(struct rcu_hea +@@ -3482,7 +3490,7 @@ static void rcu_free_pool(struct rcu_hea * put_unbound_pool - put a worker_pool * @pool: worker_pool to put * @@ -228,7 +226,7 @@ Index: linux-stable/kernel/workqueue.c * safe manner. get_unbound_pool() calls this function on its failure path * and this function should be able to release pools which went through, * successfully or not, init_worker_pool(). -@@ -3523,8 +3531,8 @@ static void put_unbound_pool(struct work +@@ -3529,8 +3537,8 @@ static void put_unbound_pool(struct work del_timer_sync(&pool->idle_timer); del_timer_sync(&pool->mayday_timer); @@ -239,7 +237,7 @@ Index: linux-stable/kernel/workqueue.c } /** -@@ -3628,7 +3636,7 @@ static void pwq_unbound_release_workfn(s +@@ -3640,7 +3648,7 @@ static void pwq_unbound_release_workfn(s put_unbound_pool(pool); mutex_unlock(&wq_pool_mutex); @@ -248,7 +246,7 @@ Index: linux-stable/kernel/workqueue.c /* * If we're the last pwq going away, @wq is already dead and no one -@@ -4326,7 +4334,8 @@ bool workqueue_congested(int cpu, struct +@@ -4338,7 +4346,8 @@ bool workqueue_congested(int cpu, struct struct pool_workqueue *pwq; bool ret; @@ -258,7 +256,7 @@ Index: linux-stable/kernel/workqueue.c if (cpu == WORK_CPU_UNBOUND) cpu = smp_processor_id(); -@@ -4337,7 +4346,8 @@ bool workqueue_congested(int cpu, struct +@@ -4349,7 +4358,8 @@ bool workqueue_congested(int cpu, struct pwq = unbound_pwq_by_node(wq, cpu_to_node(cpu)); ret = !list_empty(&pwq->delayed_works); @@ -268,7 +266,7 @@ Index: linux-stable/kernel/workqueue.c return ret; } -@@ -4363,16 +4373,15 @@ unsigned int work_busy(struct work_struc +@@ -4375,16 +4385,15 @@ unsigned int work_busy(struct work_struc if (work_pending(work)) ret |= WORK_BUSY_PENDING; @@ -289,7 +287,7 @@ Index: linux-stable/kernel/workqueue.c return ret; } EXPORT_SYMBOL_GPL(work_busy); -@@ -4817,16 +4826,16 @@ bool freeze_workqueues_busy(void) +@@ -4829,16 +4838,16 @@ bool freeze_workqueues_busy(void) * nr_active is monotonically decreasing. It's safe * to peek without lock. */ diff --git a/debian/patches/features/all/rt/x86-crypto-reduce-preempt-disabled-regions.patch b/debian/patches/features/all/rt/x86-crypto-reduce-preempt-disabled-regions.patch index 0b1439dff..f00fca18c 100644 --- a/debian/patches/features/all/rt/x86-crypto-reduce-preempt-disabled-regions.patch +++ b/debian/patches/features/all/rt/x86-crypto-reduce-preempt-disabled-regions.patch @@ -1,7 +1,7 @@ Subject: x86: crypto: Reduce preempt disabled regions From: Peter Zijlstra Date: Mon, 14 Nov 2011 18:19:27 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Restrict the preempt disabled regions to the actual floating point operations and enable preemption for the administrative actions. @@ -17,10 +17,8 @@ Signed-off-by: Thomas Gleixner arch/x86/crypto/aesni-intel_glue.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) -Index: linux-stable/arch/x86/crypto/aesni-intel_glue.c -=================================================================== ---- linux-stable.orig/arch/x86/crypto/aesni-intel_glue.c -+++ linux-stable/arch/x86/crypto/aesni-intel_glue.c +--- a/arch/x86/crypto/aesni-intel_glue.c ++++ b/arch/x86/crypto/aesni-intel_glue.c @@ -252,14 +252,14 @@ static int ecb_encrypt(struct blkcipher_ err = blkcipher_walk_virt(desc, &walk); desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP; diff --git a/debian/patches/features/all/rt/x86-disable-debug-stack.patch b/debian/patches/features/all/rt/x86-disable-debug-stack.patch index a9b2ac5c2..4c78931c7 100644 --- a/debian/patches/features/all/rt/x86-disable-debug-stack.patch +++ b/debian/patches/features/all/rt/x86-disable-debug-stack.patch @@ -1,7 +1,7 @@ From: Andi Kleen Date: Fri, 3 Jul 2009 08:44:10 -0500 Subject: x86: Disable IST stacks for debug/int 3/stack fault for PREEMPT_RT -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Normally the x86-64 trap handlers for debug/int 3/stack fault run on a special interrupt stack to make them more robust @@ -42,10 +42,8 @@ Signed-off-by: Thomas Gleixner arch/x86/kernel/dumpstack_64.c | 4 ++++ 3 files changed, 21 insertions(+), 6 deletions(-) -Index: linux-stable/arch/x86/include/asm/page_64_types.h -=================================================================== ---- linux-stable.orig/arch/x86/include/asm/page_64_types.h -+++ linux-stable/arch/x86/include/asm/page_64_types.h +--- 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) @@ -74,10 +72,8 @@ Index: linux-stable/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-stable/arch/x86/kernel/cpu/common.c -=================================================================== ---- linux-stable.orig/arch/x86/kernel/cpu/common.c -+++ linux-stable/arch/x86/kernel/cpu/common.c +--- a/arch/x86/kernel/cpu/common.c ++++ b/arch/x86/kernel/cpu/common.c @@ -1104,7 +1104,9 @@ DEFINE_PER_CPU(struct task_struct *, fpu */ static const unsigned int exception_stack_sizes[N_EXCEPTION_STACKS] = { @@ -88,10 +84,8 @@ Index: linux-stable/arch/x86/kernel/cpu/common.c }; static DEFINE_PER_CPU_PAGE_ALIGNED(char, exception_stacks -Index: linux-stable/arch/x86/kernel/dumpstack_64.c -=================================================================== ---- linux-stable.orig/arch/x86/kernel/dumpstack_64.c -+++ linux-stable/arch/x86/kernel/dumpstack_64.c +--- 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) diff --git a/debian/patches/features/all/rt/x86-io-apic-migra-no-unmask.patch b/debian/patches/features/all/rt/x86-io-apic-migra-no-unmask.patch index f9f7f258f..b50882281 100644 --- a/debian/patches/features/all/rt/x86-io-apic-migra-no-unmask.patch +++ b/debian/patches/features/all/rt/x86-io-apic-migra-no-unmask.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:27 -0500 Subject: x86: Do not unmask io_apic when interrupt is in progress -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz With threaded interrupts we might see an interrupt in progress on migration. Do not unmask it when this is the case. @@ -13,10 +13,8 @@ Signed-off-by: Thomas Gleixner arch/x86/kernel/apic/io_apic.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -Index: linux-stable/arch/x86/kernel/apic/io_apic.c -=================================================================== ---- linux-stable.orig/arch/x86/kernel/apic/io_apic.c -+++ linux-stable/arch/x86/kernel/apic/io_apic.c +--- a/arch/x86/kernel/apic/io_apic.c ++++ b/arch/x86/kernel/apic/io_apic.c @@ -2391,7 +2391,8 @@ static bool io_apic_level_ack_pending(st static inline bool ioapic_irqd_mask(struct irq_data *data, struct irq_cfg *cfg) { diff --git a/debian/patches/features/all/rt/x86-kvm-require-const-tsc-for-rt.patch b/debian/patches/features/all/rt/x86-kvm-require-const-tsc-for-rt.patch index 968c83e6f..57f60eee3 100644 --- a/debian/patches/features/all/rt/x86-kvm-require-const-tsc-for-rt.patch +++ b/debian/patches/features/all/rt/x86-kvm-require-const-tsc-for-rt.patch @@ -1,17 +1,15 @@ Subject: x86-kvm-require-const-tsc-for-rt.patch From: Thomas Gleixner Date: Sun, 06 Nov 2011 12:26:18 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- arch/x86/kvm/x86.c | 7 +++++++ 1 file changed, 7 insertions(+) -Index: linux-stable/arch/x86/kvm/x86.c -=================================================================== ---- linux-stable.orig/arch/x86/kvm/x86.c -+++ linux-stable/arch/x86/kvm/x86.c +--- a/arch/x86/kvm/x86.c ++++ b/arch/x86/kvm/x86.c @@ -5326,6 +5326,13 @@ int kvm_arch_init(void *opaque) goto out; } diff --git a/debian/patches/features/all/rt/x86-mce-Defer-mce-wakeups-to-threads-for-PREEMPT_RT.patch b/debian/patches/features/all/rt/x86-mce-Defer-mce-wakeups-to-threads-for-PREEMPT_RT.patch index 36e25a159..16a660620 100644 --- a/debian/patches/features/all/rt/x86-mce-Defer-mce-wakeups-to-threads-for-PREEMPT_RT.patch +++ b/debian/patches/features/all/rt/x86-mce-Defer-mce-wakeups-to-threads-for-PREEMPT_RT.patch @@ -2,7 +2,7 @@ From df12896518bc6db6a717de580116a07cdd19fbd9 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Thu, 11 Apr 2013 14:33:34 -0400 Subject: [PATCH 4/5] x86/mce: Defer mce wakeups to threads for PREEMPT_RT -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz We had a customer report a lockup on a 3.0-rt kernel that had the following backtrace: @@ -58,10 +58,8 @@ Signed-off-by: Sebastian Andrzej Siewior arch/x86/kernel/cpu/mcheck/mce.c | 75 ++++++++++++++++++++++++++++++++------- 1 file changed, 62 insertions(+), 13 deletions(-) -Index: linux-stable/arch/x86/kernel/cpu/mcheck/mce.c -=================================================================== ---- linux-stable.orig/arch/x86/kernel/cpu/mcheck/mce.c -+++ linux-stable/arch/x86/kernel/cpu/mcheck/mce.c +--- a/arch/x86/kernel/cpu/mcheck/mce.c ++++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -18,6 +18,7 @@ #include #include @@ -151,7 +149,7 @@ Index: linux-stable/arch/x86/kernel/cpu/mcheck/mce.c + */ +int mce_notify_irq(void) +{ -+ if (test_and_clear_bit(0, &mce_need_notify)) { ++ if (test_and_clear_bit(0, &mce_need_notify)) { + mce_notify_work(); return 1; } diff --git a/debian/patches/features/all/rt/x86-mce-fix-mce-timer-interval.patch b/debian/patches/features/all/rt/x86-mce-fix-mce-timer-interval.patch index adb537efb..4ab08c6d3 100644 --- a/debian/patches/features/all/rt/x86-mce-fix-mce-timer-interval.patch +++ b/debian/patches/features/all/rt/x86-mce-fix-mce-timer-interval.patch @@ -2,7 +2,7 @@ From b69721d1af317f491ae7090d338d82528745612a Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Wed, 29 May 2013 13:52:13 +0200 Subject: [PATCH] x86/mce: fix mce timer interval -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Seems mce timer fire at the wrong frequency in -rt kernels since roughly forever due to 32 bit overflow. 3.8-rt is also missing a multiplier. @@ -17,10 +17,8 @@ Signed-off-by: Sebastian Andrzej Siewior arch/x86/kernel/cpu/mcheck/mce.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) -Index: linux-stable/arch/x86/kernel/cpu/mcheck/mce.c -=================================================================== ---- linux-stable.orig/arch/x86/kernel/cpu/mcheck/mce.c -+++ linux-stable/arch/x86/kernel/cpu/mcheck/mce.c +--- a/arch/x86/kernel/cpu/mcheck/mce.c ++++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -1291,7 +1291,8 @@ static enum hrtimer_restart mce_timer_fn __this_cpu_write(mce_next_interval, iv); /* Might have become 0 after CMCI storm subsided */ diff --git a/debian/patches/features/all/rt/x86-mce-timer-hrtimer.patch b/debian/patches/features/all/rt/x86-mce-timer-hrtimer.patch index 4b9737258..bc75a0556 100644 --- a/debian/patches/features/all/rt/x86-mce-timer-hrtimer.patch +++ b/debian/patches/features/all/rt/x86-mce-timer-hrtimer.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Mon, 13 Dec 2010 16:33:39 +0100 Subject: x86: Convert mce timer to hrtimer -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz 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 @@ -13,10 +13,8 @@ Signed-off-by: Thomas Gleixner arch/x86/kernel/cpu/mcheck/mce.c | 57 ++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 24 deletions(-) -Index: linux-stable/arch/x86/kernel/cpu/mcheck/mce.c -=================================================================== ---- linux-stable.orig/arch/x86/kernel/cpu/mcheck/mce.c -+++ linux-stable/arch/x86/kernel/cpu/mcheck/mce.c +--- a/arch/x86/kernel/cpu/mcheck/mce.c ++++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -41,6 +41,7 @@ #include #include diff --git a/debian/patches/features/all/rt/x86-preempt-lazy.patch b/debian/patches/features/all/rt/x86-preempt-lazy.patch index 805c5fa16..c89ed56c2 100644 --- a/debian/patches/features/all/rt/x86-preempt-lazy.patch +++ b/debian/patches/features/all/rt/x86-preempt-lazy.patch @@ -1,7 +1,7 @@ Subject: x86-preempt-lazy.patch From: Thomas Gleixner Date: Thu, 01 Nov 2012 11:03:47 +0100 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Signed-off-by: Thomas Gleixner --- @@ -12,10 +12,8 @@ Signed-off-by: Thomas Gleixner arch/x86/kernel/entry_64.S | 24 +++++++++++++++--------- 5 files changed, 36 insertions(+), 14 deletions(-) -Index: linux-stable/arch/x86/Kconfig -=================================================================== ---- linux-stable.orig/arch/x86/Kconfig -+++ linux-stable/arch/x86/Kconfig +--- a/arch/x86/Kconfig ++++ b/arch/x86/Kconfig @@ -121,6 +121,7 @@ config X86 select OLD_SIGACTION if X86_32 select COMPAT_OLD_SIGACTION if IA32_EMULATION @@ -24,10 +22,8 @@ Index: linux-stable/arch/x86/Kconfig config INSTRUCTION_DECODER def_bool y -Index: linux-stable/arch/x86/include/asm/thread_info.h -=================================================================== ---- linux-stable.orig/arch/x86/include/asm/thread_info.h -+++ linux-stable/arch/x86/include/asm/thread_info.h +--- a/arch/x86/include/asm/thread_info.h ++++ b/arch/x86/include/asm/thread_info.h @@ -30,6 +30,8 @@ struct thread_info { __u32 cpu; /* current CPU */ int preempt_count; /* 0 => preemptable, @@ -62,10 +58,8 @@ Index: linux-stable/arch/x86/include/asm/thread_info.h #define PREEMPT_ACTIVE 0x10000000 #ifdef CONFIG_X86_32 -Index: linux-stable/arch/x86/kernel/asm-offsets.c -=================================================================== ---- linux-stable.orig/arch/x86/kernel/asm-offsets.c -+++ linux-stable/arch/x86/kernel/asm-offsets.c +--- a/arch/x86/kernel/asm-offsets.c ++++ b/arch/x86/kernel/asm-offsets.c @@ -33,6 +33,7 @@ void common(void) { OFFSET(TI_status, thread_info, status); OFFSET(TI_addr_limit, thread_info, addr_limit); @@ -74,10 +68,8 @@ Index: linux-stable/arch/x86/kernel/asm-offsets.c BLANK(); OFFSET(crypto_tfm_ctx_offset, crypto_tfm, __crt_ctx); -Index: linux-stable/arch/x86/kernel/entry_32.S -=================================================================== ---- linux-stable.orig/arch/x86/kernel/entry_32.S -+++ linux-stable/arch/x86/kernel/entry_32.S +--- a/arch/x86/kernel/entry_32.S ++++ b/arch/x86/kernel/entry_32.S @@ -364,14 +364,22 @@ ENTRY(resume_kernel) DISABLE_INTERRUPTS(CLBR_ANY) cmpl $0,TI_preempt_count(%ebp) # non-zero preempt_count ? @@ -122,10 +114,8 @@ Index: linux-stable/arch/x86/kernel/entry_32.S jnz work_resched work_notifysig: # deal with pending signals and -Index: linux-stable/arch/x86/kernel/entry_64.S -=================================================================== ---- linux-stable.orig/arch/x86/kernel/entry_64.S -+++ linux-stable/arch/x86/kernel/entry_64.S +--- a/arch/x86/kernel/entry_64.S ++++ b/arch/x86/kernel/entry_64.S @@ -673,8 +673,8 @@ sysret_check: /* Handle reschedules */ /* edx: work, edi: workmask */ diff --git a/debian/patches/features/all/rt/x86-stackprot-no-random-on-rt.patch b/debian/patches/features/all/rt/x86-stackprot-no-random-on-rt.patch index 18978db85..e89c1afc9 100644 --- a/debian/patches/features/all/rt/x86-stackprot-no-random-on-rt.patch +++ b/debian/patches/features/all/rt/x86-stackprot-no-random-on-rt.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Thu, 16 Dec 2010 14:25:18 +0100 Subject: x86: stackprotector: Avoid random pool on rt -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz CPU bringup calls into the random pool to initialize the stack canary. During boot that works nicely even on RT as the might sleep @@ -18,10 +18,8 @@ Signed-off-by: Thomas Gleixner arch/x86/include/asm/stackprotector.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) -Index: linux-stable/arch/x86/include/asm/stackprotector.h -=================================================================== ---- linux-stable.orig/arch/x86/include/asm/stackprotector.h -+++ linux-stable/arch/x86/include/asm/stackprotector.h +--- 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) diff --git a/debian/patches/features/all/rt/x86-use-gen-rwsem-spinlocks-rt.patch b/debian/patches/features/all/rt/x86-use-gen-rwsem-spinlocks-rt.patch index ad8cfcd2a..2688fc4d4 100644 --- a/debian/patches/features/all/rt/x86-use-gen-rwsem-spinlocks-rt.patch +++ b/debian/patches/features/all/rt/x86-use-gen-rwsem-spinlocks-rt.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner Date: Sun, 26 Jul 2009 02:21:32 +0200 Subject: x86: Use generic rwsem_spinlocks on -rt -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.4-rt1.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.6-rt3.tar.xz Simplifies the separation of anon_rw_semaphores and rw_semaphores for -rt. @@ -12,10 +12,8 @@ Signed-off-by: Thomas Gleixner arch/x86/Kconfig | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) -Index: linux-stable/arch/x86/Kconfig -=================================================================== ---- linux-stable.orig/arch/x86/Kconfig -+++ linux-stable/arch/x86/Kconfig +--- a/arch/x86/Kconfig ++++ b/arch/x86/Kconfig @@ -177,8 +177,11 @@ config ARCH_MAY_HAVE_PC_FDC def_bool y depends on ISA_DMA_API diff --git a/debian/patches/series-rt b/debian/patches/series-rt index a27cffa46..c227c452a 100644 --- a/debian/patches/series-rt +++ b/debian/patches/series-rt @@ -5,6 +5,7 @@ ############################################################ # UPSTREAM changes queued ############################################################ +features/all/rt/hpsa-fix-warning-with-smp_processor_id-in-preemptibl.patch ############################################################ # UPSTREAM FIXES, patches pending @@ -41,10 +42,14 @@ features/all/rt/0002-kernel-SRCU-provide-a-static-initializer.patch ############################################################ # Submitted to ARM ML ############################################################ +features/all/rt/arm-mark-pmu-interupt-no-thread.patch +features/all/rt/arm-allow-irq-threading.patch ############################################################ # Submitted to PPC ML ############################################################ +features/all/rt/ppc-mark-low-level-handlers-no-thread.patch +features/all/rt/powerpc-52xx-provide-a-default-in-mpc52xx_irqhost_ma.patch ############################################################ # Submitted on LKML @@ -57,13 +62,8 @@ features/all/rt/0002-kernel-SRCU-provide-a-static-initializer.patch features/all/rt/net-dev-make-devnet-rename-seq-static.patch # Check again -# Revert upstream changes to cpsw -features/all/rt/revert-f9a8f83b04e0c362a2fc660dbad980d24af209fc.patch -features/all/rt/revert-f646968f8f7c624587de729115d802372b9063dd.patch -features/all/rt/revert-80d5c3689b886308247da295a228a54df49a44f6.patch -# Fix it really -features/all/rt/cpsw-net-cpsw-use-a-lock-around-source-testing.patch -features/all/rt/cpsw-net-cpsw-Use-fallback-for-active_slave.patch +# no interrupt on nfsboot, interrupt storm on boot from ramdisk +#cpsw-net-cpsw-use-a-lock-around-source-testing.patch ############################################################ # Pending in tip