From d7b5ce3749548a0b171e3497eae349e30956faca Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sat, 21 Dec 2013 01:39:20 +0000 Subject: [PATCH] [rt] Update to 3.12.5-rt7 svn path=/dists/sid/linux/; revision=20906 --- debian/changelog | 8 + ...arc64-use-generic-rwsem-spinlocks-rt.patch | 29 +++ ...el-SRCU-provide-a-static-initializer.patch | 2 +- ...spinlock_t-to-raw_spinlock_t-in-mmu_.patch | 189 ++++++++++++++++++ ...highmem-add-a-already-used-pte-check.patch | 2 +- .../0003-arm-highmem-flush-tlb-on-unmap.patch | 2 +- ...onvert-ctx_alloc_lock-raw_spinlock_t.patch | 89 +++++++++ ...k-unlock-symetry-versus-pi_lock-and-.patch | 2 +- ...intk-drop-the-logbuf_lock-more-often.patch | 2 +- ...owerpc-52xx-provide-a-default-in-mpc.patch | 2 +- ...acpi_gbl_hardware-lock-back-to-a-raw.patch | 2 +- ...on-in-recursive-migrate_disable-call.patch | 6 +- .../all/rt/arch-use-pagefault-disabled.patch | 2 +- ...ove-irq-handler-when-clock-is-unused.patch | 2 +- ...-tclib-default-to-tclib-timer-for-rt.patch | 2 +- .../all/rt/arm-convert-boot-lock-to-raw.patch | 2 +- .../all/rt/arm-disable-highmem-on-rt.patch | 2 +- .../all/rt/arm-enable-highmem-for-rt.patch | 2 +- .../all/rt/arm-preempt-lazy-support.patch | 6 +- .../rt/ata-disable-interrupts-if-non-rt.patch | 2 +- ...k-shorten-interrupt-disabled-regions.patch | 12 +- .../features/all/rt/block-use-cpu-chill.patch | 2 +- .../all/rt/bug-rt-dependend-variants.patch | 2 +- ...source-tclib-allow-higher-clockrates.patch | 33 +-- .../completion-use-simple-wait-queues.patch | 18 +- .../all/rt/cond-resched-lock-rt-tweak.patch | 4 +- .../all/rt/cond-resched-softirq-rt.patch | 8 +- ...igration_disable-on-lock-acquisition.patch | 2 +- ...tplug-lock-a-sleeping-spinlock-on-rt.patch | 2 +- .../all/rt/cpu-rt-rework-cpu-down.patch | 12 +- .../features/all/rt/cpu-rt-variants.patch | 2 +- .../cpu_down_move_migrate_enable_back.patch | 2 +- .../rt/cpumask-disable-offstack-on-rt.patch | 2 +- .../features/all/rt/debugobjects-rt.patch | 2 +- .../features/all/rt/dm-make-rt-aware.patch | 2 +- .../drivers-net-8139-disable-irq-nosync.patch | 2 +- .../rt/drivers-net-fix-livelock-issues.patch | 2 +- .../drivers-net-gianfar-make-rt-aware.patch | 2 +- ...rs-net-tulip-add-missing-pci-disable.patch | 2 +- ...rivers-net-vortex-fix-locking-issues.patch | 2 +- ...andom-reduce-preempt-disabled-region.patch | 2 +- ...all-flush_to_ldisc-when-the-irq-is-t.patch | 2 +- ...rivers-serial-cleanup-locking-for-rt.patch | 2 +- .../rt/drivers-tty-fix-omap-lock-crap.patch | 2 +- ...rivers-tty-pl011-irq-disable-madness.patch | 2 +- ...op-trace_i915_gem_ring_dispatch-onrt.patch | 2 +- ...pt_disable-from-drm_calc_vbltimestam.patch | 2 +- .../all/rt/early-printk-consolidate.patch | 2 +- .../all/rt/epoll-use-get-cpu-light.patch | 2 +- .../features/all/rt/filemap-fix-up.patch | 2 +- .../all/rt/fix-rt-int3-x86_32-3.2-rt.patch | 2 +- .../all/rt/fixup_opencoded_completions.patch | 16 +- .../features/all/rt/fs-block-rt-support.patch | 2 +- ...cache-use-cpu-chill-in-trylock-loops.patch | 2 +- ...jbd-pull-plug-when-waiting-for-space.patch | 2 +- .../all/rt/fs-jbd-replace-bh_state-lock.patch | 2 +- .../all/rt/fs-namespace-preemption-fix.patch | 2 +- .../rt/fs-ntfs-disable-interrupt-non-rt.patch | 2 +- .../fs-replace-bh_uptodate_lock-for-rt.patch | 2 +- .../rt/ftrace-migrate-disable-tracing.patch | 2 +- .../all/rt/futex-requeue-pi-fix.patch | 2 +- .../all/rt/genirq-disable-irqpoll-on-rt.patch | 2 +- ...voke-the-affinity-callback-via-a-wor.patch | 2 +- .../all/rt/genirq-force-threading.patch | 2 +- .../all/rt/genirq-nodebug-shirq.patch | 2 +- ...call-cpu_unplug_begin-a-little-early.patch | 2 +- .../rt/hotplug-light-get-online-cpus.patch | 2 +- ...ync_unplug-no-27-5cn-27-in-task-name.patch | 2 +- .../all/rt/hotplug-use-migrate-disable.patch | 2 +- ...-schedule_work-call-to-helper-thread.patch | 2 +- ...timer-callback-changes-for-preempt-r.patch | 2 +- ...raise-softirq-if-hrtimer-irq-stalled.patch | 2 +- .../rt/hrtimers-prepare-full-preemption.patch | 2 +- ...on-t-ignore-threshold-module-paramet.patch | 2 +- ...pdate-hwlat_detector-to-add-outer-lo.patch | 2 +- ...r-Use-thread-instead-of-stop-machine.patch | 2 +- ...r-Use-trace_clock_local-if-available.patch | 2 +- .../patches/features/all/rt/hwlatdetect.patch | 2 +- ...-omap-drop-the-lock-hard-irq-context.patch | 2 +- .../features/all/rt/i915_compile_fix.patch | 2 +- .../rt/ide-use-nort-local-irq-variants.patch | 2 +- .../patches/features/all/rt/idle-state.patch | 2 +- .../idr-use-local-lock-for-protection.patch | 2 +- .../infiniband-mellanox-ib-use-nort-irq.patch | 2 +- .../rt/inpt-gameport-use-local-irq-nort.patch | 2 +- .../features/all/rt/ipc-make-rt-aware.patch | 2 +- ...critical-section-to-avoid-a-deadlock.patch | 2 +- .../rt/ipc-sem-rework-semaphore-wakeups.patch | 2 +- ...irq-processing-in-irq-thread-context.patch | 2 +- .../features/all/rt/jump-label-rt.patch | 2 +- .../rt/kconfig-disable-a-few-options-rt.patch | 2 +- .../all/rt/kconfig-preempt-rt-full.patch | 2 +- ...pu-down-problem-if-kthread-s-cpu-is-.patch | 2 +- ...restore-original-cpu-mask-oncpu-down.patch | 2 +- .../all/rt/kgb-serial-hackaround.patch | 2 +- .../features/all/rt/latency-hist.patch | 4 +- .../patches/features/all/rt/lglocks-rt.patch | 2 +- .../all/rt/list-add-list-last-entry.patch | 2 +- ..._bl.h-make-list-head-locking-RT-safe.patch | 2 +- .../rt/local-irq-rt-depending-variants.patch | 2 +- .../patches/features/all/rt/local-var.patch | 2 +- .../all/rt/local-vars-migrate-disable.patch | 2 +- .../features/all/rt/localversion.patch | 4 +- ...y-annotate-hardirq-context-in-irq_ex.patch | 2 +- .../lockdep-no-softirq-accounting-on-rt.patch | 2 +- ...ardirq-context-test-for-raw-spinlock.patch | 2 +- ...ble-64bit-cmpxchg-optimization-on-RT.patch | 2 +- .../features/all/rt/md-disable-bcache.patch | 2 +- .../md-raid5-percpu-handling-rt-aware.patch | 8 +- .../all/rt/might-sleep-check-for-idle.patch | 2 +- .../all/rt/migrate-disable-rt-variant.patch | 2 +- ...pushd-down-in-atomic_dec_and_spin_lo.patch | 30 +++ ...pushd-down-in-rt_spin_trylock_irqsav.patch | 30 +++ ...pushd-down-in-rt_write_trylock_irqsa.patch | 27 +++ .../all/rt/mips-disable-highmem-on-rt.patch | 2 +- .../rt/mips-enable-interrupts-in-signal.patch | 2 +- .../rt/mm-bounce-local-irq-save-nort.patch | 2 +- .../all/rt/mm-cgroup-page-bit-spinlock.patch | 2 +- .../rt/mm-convert-swap-to-percpu-locked.patch | 2 +- .../features/all/rt/mm-disable-sloub-rt.patch | 2 +- .../features/all/rt/mm-enable-slub.patch | 2 +- .../all/rt/mm-make-vmstat-rt-aware.patch | 2 +- ...n-t-call-schedule_work_on-in-preempt.patch | 2 +- .../features/all/rt/mm-page-alloc-fix.patch | 2 +- .../mm-page-alloc-use-list-last-entry.patch | 2 +- ...e-alloc-use-local-lock-on-target-cpu.patch | 2 +- ...e_alloc-reduce-lock-sections-further.patch | 2 +- ...page_alloc-rt-friendly-per-cpu-pages.patch | 2 +- .../mm-prepare-pf-disable-discoupling.patch | 4 +- .../rt/mm-protect-activate-switch-mm.patch | 2 +- .../rt/mm-remove-preempt-count-from-pf.patch | 2 +- .../all/rt/mm-rt-kmap-atomic-scheduling.patch | 4 +- ...-scatterlist-dont-disable-irqs-on-RT.patch | 2 +- .../mm-shrink-the-page-frame-to-rt-size.patch | 2 +- .../all/rt/mm-vmalloc-use-get-cpu-light.patch | 2 +- .../all/rt/mmci-remove-bogus-irq-save.patch | 2 +- .../move_sched_delayed_work_to_helper.patch | 4 +- .../features/all/rt/mutex-no-spin-on-rt.patch | 2 +- ...al-irq-disable-alloc-atomic-headache.patch | 2 +- ...ble-xt-write-recseq-begin-rt-fallout.patch | 2 +- .../all/rt/net-flip-lock-dep-thingy.patch | 2 +- ...est-only-a-threaded-handler-for-inte.patch | 2 +- .../net-make-devnet_rename_seq-a-mutex.patch | 2 +- ...riv_len-in-struct-net_device-16bit-i.patch | 45 +++++ ...net-netif-rx-ni-use-local-bh-disable.patch | 4 +- .../rt/net-netif_rx_ni-migrate-disable.patch | 4 +- .../net-tx-action-avoid-livelock-on-rt.patch | 6 +- .../features/all/rt/net-use-cpu-chill.patch | 6 +- ...e-cpu-light-in-ip-send-unicast-reply.patch | 2 +- .../all/rt/net-wireless-warn-nort.patch | 2 +- .../features/all/rt/oleg-signal-rt-fix.patch | 4 +- .../all/rt/panic-disable-random-on-rt.patch | 2 +- ...ce-rcu-bh-qs-where-safe-from-softirq.patch | 2 +- .../pci-access-use-__wake_up_all_locked.patch | 2 +- .../all/rt/percpu-rwsem-compilefix.patch | 2 +- .../perf-make-swevent-hrtimer-irqsafe.patch | 2 +- .../perf-move-irq-work-to-softirq-in-rt.patch | 2 +- ...eter_zijlstra-frob-migrate_disable-2.patch | 14 +- .../peter_zijlstra-frob-migrate_disable.patch | 10 +- ...eter_zijlstra-frob-pagefault_disable.patch | 6 +- .../all/rt/peter_zijlstra-frob-rcu.patch | 2 +- .../all/rt/peterz-raw_pagefault_disable.patch | 2 +- .../all/rt/peterz-srcu-crypto-chain.patch | 2 +- .../all/rt/pid-h-include-atomic-h.patch | 2 +- .../patches/features/all/rt/ping-sysrq.patch | 2 +- ...id-wakeups-when-no-timers-are-active.patch | 2 +- .../all/rt/posix-timers-no-broadcast.patch | 2 +- ...six-timers-shorten-cpu-timers-thread.patch | 2 +- ...timers-thread-posix-cpu-timers-on-rt.patch | 4 +- .../all/rt/power-disable-highmem-on-rt.patch | 2 +- .../rt/power-use-generic-rwsem-on-rt.patch | 2 +- .../all/rt/powerpc-preempt-lazy-support.patch | 2 +- .../all/rt/preempt-lazy-support.patch | 24 +-- .../all/rt/preempt-nort-rt-variants.patch | 2 +- ...27-boot-param-to-help-with-debugging.patch | 2 +- .../patches/features/all/rt/printk-kill.patch | 2 +- .../features/all/rt/printk-rt-aware.patch | 2 +- ...ace-fix-ptrace-vs-tasklist_lock-race.patch | 163 +++++++++++++++ .../features/all/rt/radix-tree-rt-aware.patch | 2 +- .../all/rt/random-make-it-work-on-rt.patch | 2 +- .../rt/rcu-disable-rcu-fast-no-hz-on-rt.patch | 2 +- ...merge-rcu-bh-into-rcu-preempt-for-rt.patch | 2 +- .../all/rt/rcu-more-swait-conversions.patch | 2 +- .../features/all/rt/rcu-tiny-merge-bh.patch | 2 +- ...ate_disable-race-with-cpu-hotplug-3f.patch | 2 +- ...l-arm-coredump-fails-for-cpu-3e-3d-4.patch | 2 +- .../all/rt/relay-fix-timer-madness.patch | 2 +- .../resource-counters-use-localirq-nort.patch | 2 +- ...teractive-to-test-rt_spin_lock-state.patch | 47 ----- .../features/all/rt/rt-add-rt-locks.patch | 2 +- .../rt/rt-add-rt-spinlock-to-headers.patch | 2 +- .../all/rt/rt-add-rt-to-mutex-headers.patch | 2 +- .../all/rt/rt-introduce-cpu-chill.patch | 2 +- .../features/all/rt/rt-local-irq-lock.patch | 2 +- ...mutex-add-sleeping-spinlocks-support.patch | 2 +- .../all/rt/rt-preempt-base-config.patch | 2 +- .../all/rt/rt-rw-lockdep-annotations.patch | 16 +- ...o-not-compare-cpu-masks-in-scheduler.patch | 4 +- ...grate_disable-ignore-bounded-threads.patch | 8 +- ...actual-migration-disalbe-to-schedule.patch | 10 +- .../features/all/rt/rt-serial-warn-fix.patch | 2 +- ...acing-show-padding-as-unsigned-short.patch | 2 +- ...rtmutex-add-a-first-shot-of-ww_mutex.patch | 28 +-- .../all/rt/rtmutex-avoid-include-hell.patch | 2 +- .../all/rt/rtmutex-futex-prepare-rt.patch | 2 +- .../all/rt/rtmutex-lock-killable.patch | 2 +- ...a-trylock-for-waiter-lock-in-trylock.patch | 2 +- ...rn-value-in-__mutex_lock_check_stamp.patch | 28 +++ .../all/rt/rwsem-add-rt-variant.patch | 2 +- .../sched-adjust-reset-on-fork-always.patch | 2 +- ...-better-debug-output-for-might-sleep.patch | 4 +- ...clear-pf-thread-bound-on-fallback-rq.patch | 4 +- .../features/all/rt/sched-cond-resched.patch | 4 +- ...consider-pi-boosting-in-setscheduler.patch | 2 +- .../all/rt/sched-delay-put-task.patch | 8 +- .../sched-disable-rt-group-sched-on-rt.patch | 2 +- .../all/rt/sched-disable-ttwu-queue.patch | 2 +- .../all/rt/sched-enqueue-to-head.patch | 2 +- .../all/rt/sched-limit-nr-migrate.patch | 2 +- ...might-sleep-do-not-account-rcu-depth.patch | 4 +- .../all/rt/sched-migrate-disable.patch | 14 +- .../all/rt/sched-mmdrop-delayed.patch | 12 +- .../sched-rt-fix-migrate_enable-thinko.patch | 4 +- .../all/rt/sched-rt-mutex-wakeup.patch | 10 +- ...igrate_disable-about-atomic-contexts.patch | 8 +- ...twu-ensure-success-return-is-correct.patch | 4 +- ...Only-wake-up-idle-workers-if-not-blo.patch | 4 +- .../features/all/rt/scsi-fcoe-rt-aware.patch | 2 +- ...function-called-from-invalid-context.patch | 2 +- ...ate-spin_lock-unlock-waiting-with-sp.patch | 35 ++++ .../rt/seqlock-prevent-rt-starvation.patch | 2 +- .../all/rt/signal-fix-up-rcu-wreckage.patch | 2 +- .../signal-revert-ptrace-preempt-magic.patch | 2 +- ...t-tasks-to-cache-one-sigqueue-struct.patch | 4 +- ...me-and-export-the-equivalent-of-wait.patch | 2 +- .../features/all/rt/skbufhead-raw-lock.patch | 14 +- .../all/rt/slub-enable-irqs-for-no-wait.patch | 2 +- .../all/rt/slub_delay_ctor_on_rt.patch | 2 +- ...ohz-pending-debug-code-to-new-scheme.patch | 2 +- ...oftirq-disable-softirq-stacks-for-rt.patch | 2 +- ...lock-after-per-cpu-section-is-set-up.patch | 2 +- .../features/all/rt/softirq-local-lock.patch | 4 +- .../features/all/rt/softirq-make-fifo.patch | 2 +- ...able-enable-conditioned-on-softirq_n.patch | 67 +++++++ ...rq-make-serving-softirqs-a-task-flag.patch | 4 +- .../all/rt/softirq-preempt-fix-3-re.patch | 14 +- .../rt/softirq-sanitize-softirq-pending.patch | 2 +- .../rt/softirq-split-handling-function.patch | 2 +- .../features/all/rt/softirq-split-locks.patch | 4 +- .../all/rt/softirq-split-out-code.patch | 2 +- .../all/rt/softirq-thread-do-softirq.patch | 4 +- ...sparc-provide-EARLY_PRINTK-for-SPARC.patch | 2 +- .../all/rt/spinlock-types-separate-raw.patch | 2 +- ...achine-deal-clever-with-stopper-lock.patch | 2 +- .../all/rt/stomp-machine-raw-lock.patch | 2 +- ...nvert-stop_machine_run-to-PREEMPT_RT.patch | 2 +- .../suspend-prevernt-might-sleep-splats.patch | 2 +- .../all/rt/sysctl-include-atomic-h.patch | 2 +- .../all/rt/sysfs-realtime-entry.patch | 2 +- ...-from-going-into-infinite-spin-in-rt.patch | 2 +- .../tasklist-lock-fix-section-conflict.patch | 2 +- .../rt/timekeeping-split-jiffies-lock.patch | 2 +- ...-waking-softirqs-from-the-jiffy-tick.patch | 2 +- .../all/rt/timer-fd-avoid-live-lock.patch | 2 +- ...e-idle-trylock-in-get-next-timer-irq.patch | 2 +- ...id-the-base-null-otptimization-on-rt.patch | 2 +- .../all/rt/timers-preempt-rt-support.patch | 2 +- ...-prepare-for-full-preemption-improve.patch | 2 +- .../timers-prepare-for-full-preemption.patch | 2 +- ...-for-preempt-off-in-preempt_schedule.patch | 2 +- .../all/rt/treercu-use-simple-waitqueue.patch | 2 +- ...ove-preemption-disabling-in-netif_rx.patch | 6 +- ...fix-mouse-problem-copying-large-data.patch | 2 +- .../all/rt/usb-hcd-use-local-irq-nort.patch | 2 +- .../all/rt/usb-use-_nort-in-giveback.patch | 2 +- .../all/rt/user-use-local-irq-nort.patch | 2 +- .../rt/vtime-split-lock-and-seqcount.patch | 4 +- .../all/rt/wait-simple-implementation.patch | 2 +- .../wait-simple-rework-for-completions.patch | 2 +- .../all/rt/wait.h-include-atomic.h.patch | 2 +- ...rk-around-irqsafe-timer-optimization.patch | 4 +- .../rt/workqueue-distangle-from-rq-lock.patch | 18 +- .../all/rt/workqueue-use-locallock.patch | 26 +-- .../features/all/rt/workqueue-use-rcu.patch | 46 ++--- ...ypto-reduce-preempt-disabled-regions.patch | 2 +- .../all/rt/x86-disable-debug-stack.patch | 2 +- .../all/rt/x86-io-apic-migra-no-unmask.patch | 2 +- .../rt/x86-kvm-require-const-tsc-for-rt.patch | 2 +- ...ce-wakeups-to-threads-for-PREEMPT_RT.patch | 2 +- .../rt/x86-mce-fix-mce-timer-interval.patch | 2 +- .../all/rt/x86-mce-timer-hrtimer.patch | 2 +- .../features/all/rt/x86-preempt-lazy.patch | 2 +- .../rt/x86-stackprot-no-random-on-rt.patch | 2 +- .../rt/x86-use-gen-rwsem-spinlocks-rt.patch | 2 +- debian/patches/series-rt | 15 +- 295 files changed, 1235 insertions(+), 542 deletions(-) create mode 100644 debian/patches/features/all/rt/0001-sparc64-use-generic-rwsem-spinlocks-rt.patch create mode 100644 debian/patches/features/all/rt/0002-sparc64-convert-spinlock_t-to-raw_spinlock_t-in-mmu_.patch create mode 100644 debian/patches/features/all/rt/0003-sparc64-convert-ctx_alloc_lock-raw_spinlock_t.patch create mode 100644 debian/patches/features/all/rt/migrate_disable-pushd-down-in-atomic_dec_and_spin_lo.patch create mode 100644 debian/patches/features/all/rt/migrate_disable-pushd-down-in-rt_spin_trylock_irqsav.patch create mode 100644 debian/patches/features/all/rt/migrate_disable-pushd-down-in-rt_write_trylock_irqsa.patch create mode 100644 debian/patches/features/all/rt/net-make-neigh_priv_len-in-struct-net_device-16bit-i.patch create mode 100644 debian/patches/features/all/rt/ptrace-fix-ptrace-vs-tasklist_lock-race.patch delete mode 100644 debian/patches/features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch create mode 100644 debian/patches/features/all/rt/rtmutex-ww-bad-return-value-in-__mutex_lock_check_stamp.patch create mode 100644 debian/patches/features/all/rt/seqlock-consolidate-spin_lock-unlock-waiting-with-sp.patch create mode 100644 debian/patches/features/all/rt/softirq-make-migrate-disable-enable-conditioned-on-softirq_n.patch diff --git a/debian/changelog b/debian/changelog index e1241ce41..b76bce4c8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -98,6 +98,14 @@ linux (3.12.6-1) UNRELEASED; urgency=medium * Set ABI to 1 * [ia64] Enable PSTORE, EFI_VARS_PSTORE * [x86,ia64] udeb: Remove zlib-modules as zlib is now built-in + * [rt] Update to 3.12.5-rt7: + - ptrace: fix ptrace vs tasklist_lock race + - migrate_disable pushd down in atomic_dec_and_spin_lock + - migrate_disable pushd down in rt_spin_trylock_irqsave + - migrate_disable pushd down in rt_write_trylock_irqsave + - Revert "sched/rt: Fix wait_task_interactive() to test rt_spin_lock state" + - seqlock: consolidate spin_lock/unlock waiting with spin_unlock_wait + - softirq: make migrate disable/enable conditioned on softirq_nestcnt [ Ian Campbell ] * [armel/kirkwood+orion] Reenable MARVELL_PHY (Closes: #723177) diff --git a/debian/patches/features/all/rt/0001-sparc64-use-generic-rwsem-spinlocks-rt.patch b/debian/patches/features/all/rt/0001-sparc64-use-generic-rwsem-spinlocks-rt.patch new file mode 100644 index 000000000..7d384a18e --- /dev/null +++ b/debian/patches/features/all/rt/0001-sparc64-use-generic-rwsem-spinlocks-rt.patch @@ -0,0 +1,29 @@ +From d6a6675d436897cd1b09e299436df3499abd753e Mon Sep 17 00:00:00 2001 +From: Allen Pais +Date: Fri, 13 Dec 2013 09:44:41 +0530 +Subject: [PATCH 1/3] sparc64: use generic rwsem spinlocks rt +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz + +Signed-off-by: Allen Pais +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/sparc/Kconfig | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +--- a/arch/sparc/Kconfig ++++ b/arch/sparc/Kconfig +@@ -177,12 +177,10 @@ config NR_CPUS + source kernel/Kconfig.hz + + config RWSEM_GENERIC_SPINLOCK +- bool +- default y if SPARC32 ++ def_bool PREEMPT_RT_FULL + + config RWSEM_XCHGADD_ALGORITHM +- bool +- default y if SPARC64 ++ def_bool !RWSEM_GENERIC_SPINLOCK && !PREEMPT_RT_FULL + + config GENERIC_HWEIGHT + bool 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 084149b5c..5d341b30a 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz There are macros for static initializer for the three out of four possible notifier types, that are: diff --git a/debian/patches/features/all/rt/0002-sparc64-convert-spinlock_t-to-raw_spinlock_t-in-mmu_.patch b/debian/patches/features/all/rt/0002-sparc64-convert-spinlock_t-to-raw_spinlock_t-in-mmu_.patch new file mode 100644 index 000000000..d4edff191 --- /dev/null +++ b/debian/patches/features/all/rt/0002-sparc64-convert-spinlock_t-to-raw_spinlock_t-in-mmu_.patch @@ -0,0 +1,189 @@ +From d4b3d2991e6a0e45cc82a72c12ac7acbb27929ce Mon Sep 17 00:00:00 2001 +From: Allen Pais +Date: Fri, 13 Dec 2013 09:44:42 +0530 +Subject: [PATCH 2/3] sparc64: convert spinlock_t to raw_spinlock_t in + mmu_context_t +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz + +Issue debugged by Thomas Gleixner + +Signed-off-by: Allen Pais +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/sparc/Kconfig | 1 + + arch/sparc/include/asm/mmu_64.h | 2 +- + arch/sparc/include/asm/mmu_context_64.h | 8 ++++---- + arch/sparc/kernel/smp_64.c | 4 ++-- + arch/sparc/mm/init_64.c | 4 ++-- + arch/sparc/mm/tsb.c | 16 ++++++++-------- + 6 files changed, 18 insertions(+), 17 deletions(-) + +--- a/arch/sparc/Kconfig ++++ b/arch/sparc/Kconfig +@@ -26,6 +26,7 @@ config SPARC + select HAVE_DMA_ATTRS + select HAVE_DMA_API_DEBUG + select HAVE_ARCH_JUMP_LABEL ++ select IRQ_FORCED_THREADING + select GENERIC_IRQ_SHOW + select ARCH_WANT_IPC_PARSE_VERSION + select USE_GENERIC_SMP_HELPERS if SMP +--- a/arch/sparc/include/asm/mmu_64.h ++++ b/arch/sparc/include/asm/mmu_64.h +@@ -90,7 +90,7 @@ struct tsb_config { + #endif + + typedef struct { +- spinlock_t lock; ++ raw_spinlock_t lock; + unsigned long sparc64_ctx_val; + unsigned long huge_pte_count; + struct page *pgtable_page; +--- a/arch/sparc/include/asm/mmu_context_64.h ++++ b/arch/sparc/include/asm/mmu_context_64.h +@@ -77,7 +77,7 @@ static inline void switch_mm(struct mm_s + if (unlikely(mm == &init_mm)) + return; + +- spin_lock_irqsave(&mm->context.lock, flags); ++ raw_spin_lock_irqsave(&mm->context.lock, flags); + ctx_valid = CTX_VALID(mm->context); + if (!ctx_valid) + get_new_mmu_context(mm); +@@ -125,7 +125,7 @@ static inline void switch_mm(struct mm_s + __flush_tlb_mm(CTX_HWBITS(mm->context), + SECONDARY_CONTEXT); + } +- spin_unlock_irqrestore(&mm->context.lock, flags); ++ raw_spin_unlock_irqrestore(&mm->context.lock, flags); + } + + #define deactivate_mm(tsk,mm) do { } while (0) +@@ -136,7 +136,7 @@ static inline void activate_mm(struct mm + unsigned long flags; + int cpu; + +- spin_lock_irqsave(&mm->context.lock, flags); ++ raw_spin_lock_irqsave(&mm->context.lock, flags); + if (!CTX_VALID(mm->context)) + get_new_mmu_context(mm); + cpu = smp_processor_id(); +@@ -146,7 +146,7 @@ static inline void activate_mm(struct mm + load_secondary_context(mm); + __flush_tlb_mm(CTX_HWBITS(mm->context), SECONDARY_CONTEXT); + tsb_context_switch(mm); +- spin_unlock_irqrestore(&mm->context.lock, flags); ++ raw_spin_unlock_irqrestore(&mm->context.lock, flags); + } + + #endif /* !(__ASSEMBLY__) */ +--- a/arch/sparc/kernel/smp_64.c ++++ b/arch/sparc/kernel/smp_64.c +@@ -976,12 +976,12 @@ void __irq_entry smp_new_mmu_context_ver + if (unlikely(!mm || (mm == &init_mm))) + return; + +- spin_lock_irqsave(&mm->context.lock, flags); ++ raw_spin_lock_irqsave(&mm->context.lock, flags); + + if (unlikely(!CTX_VALID(mm->context))) + get_new_mmu_context(mm); + +- spin_unlock_irqrestore(&mm->context.lock, flags); ++ raw_spin_unlock_irqrestore(&mm->context.lock, flags); + + load_secondary_context(mm); + __flush_tlb_mm(CTX_HWBITS(mm->context), +--- a/arch/sparc/mm/init_64.c ++++ b/arch/sparc/mm/init_64.c +@@ -350,7 +350,7 @@ void update_mmu_cache(struct vm_area_str + + mm = vma->vm_mm; + +- spin_lock_irqsave(&mm->context.lock, flags); ++ raw_spin_lock_irqsave(&mm->context.lock, flags); + + #if defined(CONFIG_HUGETLB_PAGE) || defined(CONFIG_TRANSPARENT_HUGEPAGE) + if (mm->context.huge_pte_count && is_hugetlb_pte(pte)) +@@ -361,7 +361,7 @@ void update_mmu_cache(struct vm_area_str + __update_mmu_tsb_insert(mm, MM_TSB_BASE, PAGE_SHIFT, + address, pte_val(pte)); + +- spin_unlock_irqrestore(&mm->context.lock, flags); ++ raw_spin_unlock_irqrestore(&mm->context.lock, flags); + } + + void flush_dcache_page(struct page *page) +--- a/arch/sparc/mm/tsb.c ++++ b/arch/sparc/mm/tsb.c +@@ -73,7 +73,7 @@ void flush_tsb_user(struct tlb_batch *tb + struct mm_struct *mm = tb->mm; + unsigned long nentries, base, flags; + +- spin_lock_irqsave(&mm->context.lock, flags); ++ raw_spin_lock_irqsave(&mm->context.lock, flags); + + base = (unsigned long) mm->context.tsb_block[MM_TSB_BASE].tsb; + nentries = mm->context.tsb_block[MM_TSB_BASE].tsb_nentries; +@@ -90,14 +90,14 @@ void flush_tsb_user(struct tlb_batch *tb + __flush_tsb_one(tb, HPAGE_SHIFT, base, nentries); + } + #endif +- spin_unlock_irqrestore(&mm->context.lock, flags); ++ raw_spin_unlock_irqrestore(&mm->context.lock, flags); + } + + void flush_tsb_user_page(struct mm_struct *mm, unsigned long vaddr) + { + unsigned long nentries, base, flags; + +- spin_lock_irqsave(&mm->context.lock, flags); ++ raw_spin_lock_irqsave(&mm->context.lock, flags); + + base = (unsigned long) mm->context.tsb_block[MM_TSB_BASE].tsb; + nentries = mm->context.tsb_block[MM_TSB_BASE].tsb_nentries; +@@ -114,7 +114,7 @@ void flush_tsb_user_page(struct mm_struc + __flush_tsb_one_entry(base, vaddr, HPAGE_SHIFT, nentries); + } + #endif +- spin_unlock_irqrestore(&mm->context.lock, flags); ++ raw_spin_unlock_irqrestore(&mm->context.lock, flags); + } + + #define HV_PGSZ_IDX_BASE HV_PGSZ_IDX_8K +@@ -392,7 +392,7 @@ void tsb_grow(struct mm_struct *mm, unsi + * the lock and ask all other cpus running this address space + * to run tsb_context_switch() to see the new TSB table. + */ +- spin_lock_irqsave(&mm->context.lock, flags); ++ raw_spin_lock_irqsave(&mm->context.lock, flags); + + old_tsb = mm->context.tsb_block[tsb_index].tsb; + old_cache_index = +@@ -407,7 +407,7 @@ void tsb_grow(struct mm_struct *mm, unsi + */ + if (unlikely(old_tsb && + (rss < mm->context.tsb_block[tsb_index].tsb_rss_limit))) { +- spin_unlock_irqrestore(&mm->context.lock, flags); ++ raw_spin_unlock_irqrestore(&mm->context.lock, flags); + + kmem_cache_free(tsb_caches[new_cache_index], new_tsb); + return; +@@ -433,7 +433,7 @@ void tsb_grow(struct mm_struct *mm, unsi + mm->context.tsb_block[tsb_index].tsb = new_tsb; + setup_tsb_params(mm, tsb_index, new_size); + +- spin_unlock_irqrestore(&mm->context.lock, flags); ++ raw_spin_unlock_irqrestore(&mm->context.lock, flags); + + /* If old_tsb is NULL, we're being invoked for the first time + * from init_new_context(). +@@ -459,7 +459,7 @@ int init_new_context(struct task_struct + #endif + unsigned int i; + +- spin_lock_init(&mm->context.lock); ++ raw_spin_lock_init(&mm->context.lock); + + mm->context.sparc64_ctx_val = 0UL; + 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 db26a1117..37f9fc944 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz This is a copy from kmap_atomic_prot(). 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 00f39d4ad..b8a253ee8 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 diff --git a/debian/patches/features/all/rt/0003-sparc64-convert-ctx_alloc_lock-raw_spinlock_t.patch b/debian/patches/features/all/rt/0003-sparc64-convert-ctx_alloc_lock-raw_spinlock_t.patch new file mode 100644 index 000000000..ddf2e3edb --- /dev/null +++ b/debian/patches/features/all/rt/0003-sparc64-convert-ctx_alloc_lock-raw_spinlock_t.patch @@ -0,0 +1,89 @@ +From 9c6692963c4b96a40852c7ac28e8bd7d2a421821 Mon Sep 17 00:00:00 2001 +From: Allen Pais +Date: Fri, 13 Dec 2013 09:44:43 +0530 +Subject: [PATCH 3/3] sparc64: convert ctx_alloc_lock raw_spinlock_t +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz + +Signed-off-by: Allen Pais +Signed-off-by: Sebastian Andrzej Siewior +--- + arch/sparc/include/asm/mmu_context_64.h | 2 +- + arch/sparc/mm/init_64.c | 10 +++++----- + arch/sparc/mm/tsb.c | 4 ++-- + 3 files changed, 8 insertions(+), 8 deletions(-) + +--- a/arch/sparc/include/asm/mmu_context_64.h ++++ b/arch/sparc/include/asm/mmu_context_64.h +@@ -13,7 +13,7 @@ static inline void enter_lazy_tlb(struct + { + } + +-extern spinlock_t ctx_alloc_lock; ++extern raw_spinlock_t ctx_alloc_lock; + extern unsigned long tlb_context_cache; + extern unsigned long mmu_context_bmap[]; + +--- a/arch/sparc/mm/init_64.c ++++ b/arch/sparc/mm/init_64.c +@@ -661,7 +661,7 @@ void __flush_dcache_range(unsigned long + EXPORT_SYMBOL(__flush_dcache_range); + + /* get_new_mmu_context() uses "cache + 1". */ +-DEFINE_SPINLOCK(ctx_alloc_lock); ++DEFINE_RAW_SPINLOCK(ctx_alloc_lock); + unsigned long tlb_context_cache = CTX_FIRST_VERSION - 1; + #define MAX_CTX_NR (1UL << CTX_NR_BITS) + #define CTX_BMAP_SLOTS BITS_TO_LONGS(MAX_CTX_NR) +@@ -683,7 +683,7 @@ void get_new_mmu_context(struct mm_struc + unsigned long orig_pgsz_bits; + int new_version; + +- spin_lock(&ctx_alloc_lock); ++ raw_spin_lock(&ctx_alloc_lock); + orig_pgsz_bits = (mm->context.sparc64_ctx_val & CTX_PGSZ_MASK); + ctx = (tlb_context_cache + 1) & CTX_NR_MASK; + new_ctx = find_next_zero_bit(mmu_context_bmap, 1 << CTX_NR_BITS, ctx); +@@ -719,7 +719,7 @@ void get_new_mmu_context(struct mm_struc + out: + tlb_context_cache = new_ctx; + mm->context.sparc64_ctx_val = new_ctx | orig_pgsz_bits; +- spin_unlock(&ctx_alloc_lock); ++ raw_spin_unlock(&ctx_alloc_lock); + + if (unlikely(new_version)) + smp_new_mmu_context_version(); +@@ -2721,7 +2721,7 @@ void hugetlb_setup(struct pt_regs *regs) + if (tlb_type == cheetah_plus) { + unsigned long ctx; + +- spin_lock(&ctx_alloc_lock); ++ raw_spin_lock(&ctx_alloc_lock); + ctx = mm->context.sparc64_ctx_val; + ctx &= ~CTX_PGSZ_MASK; + ctx |= CTX_PGSZ_BASE << CTX_PGSZ0_SHIFT; +@@ -2742,7 +2742,7 @@ void hugetlb_setup(struct pt_regs *regs) + mm->context.sparc64_ctx_val = ctx; + on_each_cpu(context_reload, mm, 0); + } +- spin_unlock(&ctx_alloc_lock); ++ raw_spin_unlock(&ctx_alloc_lock); + } + } + #endif +--- a/arch/sparc/mm/tsb.c ++++ b/arch/sparc/mm/tsb.c +@@ -523,12 +523,12 @@ void destroy_context(struct mm_struct *m + free_hot_cold_page(page, 0); + } + +- spin_lock_irqsave(&ctx_alloc_lock, flags); ++ raw_spin_lock_irqsave(&ctx_alloc_lock, flags); + + if (CTX_VALID(mm->context)) { + unsigned long nr = CTX_NRBITS(mm->context); + mmu_context_bmap[nr>>6] &= ~(1UL << (nr & 63)); + } + +- spin_unlock_irqrestore(&ctx_alloc_lock, flags); ++ raw_spin_unlock_irqrestore(&ctx_alloc_lock, flags); + } 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 6bd99e95d..8415e3a4c 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz In exit_pi_state_list() we have the following locking construct: 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 99c180619..be9c43332 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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. diff --git a/debian/patches/features/all/rt/Kind-of-revert-powerpc-52xx-provide-a-default-in-mpc.patch b/debian/patches/features/all/rt/Kind-of-revert-powerpc-52xx-provide-a-default-in-mpc.patch index 3b4d39dca..818e29c0e 100644 --- a/debian/patches/features/all/rt/Kind-of-revert-powerpc-52xx-provide-a-default-in-mpc.patch +++ b/debian/patches/features/all/rt/Kind-of-revert-powerpc-52xx-provide-a-default-in-mpc.patch @@ -3,7 +3,7 @@ From: Wolfram Sang Date: Fri, 4 Oct 2013 17:37:09 +0200 Subject: [PATCH] Kind of revert "powerpc: 52xx: provide a default in mpc52xx_irqhost_map()" -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz This more or less reverts commit 6391f697d4892a6f233501beea553e13f7745a23. Instead of adding an unneeded 'default', mark the variable to prevent 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 664123576..348334a84 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz We hit the following bug with 3.6-rt: diff --git a/debian/patches/features/all/rt/allow-preemption-in-recursive-migrate_disable-call.patch b/debian/patches/features/all/rt/allow-preemption-in-recursive-migrate_disable-call.patch index 6b93efe48..2d1219205 100644 --- a/debian/patches/features/all/rt/allow-preemption-in-recursive-migrate_disable-call.patch +++ b/debian/patches/features/all/rt/allow-preemption-in-recursive-migrate_disable-call.patch @@ -2,7 +2,7 @@ From 155cf657f6ddcade424253eb58d03a170dc9f64f Mon Sep 17 00:00:00 2001 From: Nicholas Mc Guire Date: Wed, 20 Nov 2013 07:22:09 +0800 Subject: [PATCH 1/2] allow preemption in recursive migrate_disable call -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Minor cleanup in migrate_disable/migrate_enable. The recursive case does not need to disable preemption as it is "pinned" to the current @@ -16,7 +16,7 @@ Signed-off-by: Sebastian Andrzej Siewior --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -2406,13 +2406,12 @@ void migrate_disable(void) +@@ -2419,13 +2419,12 @@ void migrate_disable(void) WARN_ON_ONCE(p->migrate_disable_atomic); #endif @@ -31,7 +31,7 @@ Signed-off-by: Sebastian Andrzej Siewior pin_current_cpu(); p->migrate_disable = 1; preempt_enable(); -@@ -2438,13 +2437,12 @@ void migrate_enable(void) +@@ -2451,13 +2450,12 @@ void migrate_enable(void) #endif WARN_ON_ONCE(p->migrate_disable <= 0); 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 e85f14a2b..16b884496 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Necessary for decoupling pagefault disable from preempt count. 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 8262ea335..bfad3ebba 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Setup and remove the interrupt handler in clock event mode selection. This avoids calling the (shared) interrupt handler when the device is 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 c1df4d40f..e9664e5ce 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz RT is not too happy about the shared timer interrupt in AT91 devices. Default to tclib timer for RT. 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 f96316af6..3e756bd24 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,7 +1,7 @@ From: Frank Rowand Date: Mon, 19 Sep 2011 14:51:14 -0700 Subject: [PATCH] preempt-rt: Convert arm boot_lock to raw -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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. 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 3533048ce..0a3de34b3 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 545c4761c..83b16bd10 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 ea88640c2..728b6d564 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- @@ -60,7 +60,7 @@ Signed-off-by: Thomas Gleixner DEFINE(TI_EXEC_DOMAIN, offsetof(struct thread_info, exec_domain)); --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S -@@ -204,11 +204,18 @@ ENDPROC(__dabt_svc) +@@ -205,11 +205,18 @@ ENDPROC(__dabt_svc) #ifdef CONFIG_PREEMPT get_thread_info tsk ldr r8, [tsk, #TI_PREEMPT] @ get preempt count @@ -81,7 +81,7 @@ Signed-off-by: Thomas Gleixner #endif svc_exit r5, irq = 1 @ return from exception -@@ -223,6 +230,8 @@ ENDPROC(__irq_svc) +@@ -224,6 +231,8 @@ ENDPROC(__irq_svc) 1: bl preempt_schedule_irq @ irq en/disable is done inside ldr r0, [tsk, #TI_FLAGS] @ get new tasks TI_FLAGS tst r0, #_TIF_NEED_RESCHED 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 ab2de9439..77174ebe7 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Use the local_irq_*_nort variants. 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 8a23e5978..6e67024ce 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Moving the blk_sched_flush_plug() call out of the interrupt/preempt disabled region in the scheduler allows us to replace @@ -49,7 +49,7 @@ Signed-off-by: Thomas Gleixner --- a/block/blk-core.c +++ b/block/blk-core.c -@@ -2914,7 +2914,7 @@ static void queue_unplugged(struct reque +@@ -2925,7 +2925,7 @@ static void queue_unplugged(struct reque blk_run_queue_async(q); else __blk_run_queue(q); @@ -58,7 +58,7 @@ Signed-off-by: Thomas Gleixner } static void flush_plug_callbacks(struct blk_plug *plug, bool from_schedule) -@@ -2962,7 +2962,6 @@ EXPORT_SYMBOL(blk_check_plugged); +@@ -2973,7 +2973,6 @@ EXPORT_SYMBOL(blk_check_plugged); void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule) { struct request_queue *q; @@ -66,7 +66,7 @@ Signed-off-by: Thomas Gleixner struct request *rq; LIST_HEAD(list); unsigned int depth; -@@ -2980,11 +2979,6 @@ void blk_flush_plug_list(struct blk_plug +@@ -2991,11 +2990,6 @@ void blk_flush_plug_list(struct blk_plug q = NULL; depth = 0; @@ -78,7 +78,7 @@ Signed-off-by: Thomas Gleixner while (!list_empty(&list)) { rq = list_entry_rq(list.next); list_del_init(&rq->queuelist); -@@ -2997,7 +2991,7 @@ void blk_flush_plug_list(struct blk_plug +@@ -3008,7 +3002,7 @@ void blk_flush_plug_list(struct blk_plug queue_unplugged(q, depth, from_schedule); q = rq->q; depth = 0; @@ -87,7 +87,7 @@ Signed-off-by: Thomas Gleixner } /* -@@ -3024,8 +3018,6 @@ void blk_flush_plug_list(struct blk_plug +@@ -3035,8 +3029,6 @@ void blk_flush_plug_list(struct blk_plug */ if (q) queue_unplugged(q, depth, from_schedule); 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 ed5c26b72..cee37bb08 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 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 ed45fccb0..c5fc98bd3 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner 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 4bf5519dc..20ac38048 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,18 +1,19 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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. +(fixed up by Sami Pietikäinen ) + Signed-off-by: Benedikt Spranger Signed-off-by: Thomas Gleixner - --- - drivers/clocksource/tcb_clksrc.c | 35 +++++++++++++++++++++-------------- + drivers/clocksource/tcb_clksrc.c | 38 ++++++++++++++++++++++---------------- drivers/misc/Kconfig | 12 ++++++++++-- - 2 files changed, 31 insertions(+), 16 deletions(-) + 2 files changed, 32 insertions(+), 18 deletions(-) --- a/drivers/clocksource/tcb_clksrc.c +++ b/drivers/clocksource/tcb_clksrc.c @@ -85,32 +86,36 @@ Signed-off-by: Thomas Gleixner .set_next_event = tc_next_event, .set_mode = tc_mode, }, -@@ -186,6 +184,8 @@ static struct irqaction tc_irqaction = { +@@ -184,8 +182,9 @@ static struct irqaction tc_irqaction = { + .handler = ch2_irq, + }; - static void __init setup_clkevents(struct atmel_tc *tc, int clk32k_divisor_idx) +-static void __init setup_clkevents(struct atmel_tc *tc, int clk32k_divisor_idx) ++static void __init setup_clkevents(struct atmel_tc *tc, int divisor_idx) { -+ unsigned divisor = atmel_tc_divisors[clk32k_divisor_idx]; -+ u32 freq; ++ unsigned divisor = atmel_tc_divisors[divisor_idx]; struct clk *t2_clk = tc->clk[2]; int irq = tc->irq[2]; -@@ -194,10 +194,14 @@ static void __init setup_clkevents(struc +@@ -193,11 +192,15 @@ static void __init setup_clkevents(struc + clkevt.clk = t2_clk; tc_irqaction.dev_id = &clkevt; - timer_clock = clk32k_divisor_idx; +- timer_clock = clk32k_divisor_idx; ++ timer_clock = divisor_idx; + if (!divisor) -+ freq = 32768; ++ clkevt.freq = 32768; + else -+ freq = clk_get_rate(t2_clk) / divisor; ++ clkevt.freq = clk_get_rate(t2_clk) / divisor; clkevt.clkevt.cpumask = cpumask_of(0); - clockevents_config_and_register(&clkevt.clkevt, 32768, 1, 0xffff); -+ clockevents_config_and_register(&clkevt.clkevt, freq, 1, 0xffff); ++ clockevents_config_and_register(&clkevt.clkevt, clkevt.freq, 1, 0xffff); setup_irq(irq, &tc_irqaction); } -@@ -322,8 +326,11 @@ static int __init tcb_clksrc_init(void) +@@ -322,8 +325,11 @@ static int __init tcb_clksrc_init(void) clocksource_register_hz(&clksrc, divided_rate); /* channel 2: periodic and oneshot timer support */ 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 3823c0ff5..2ad7e77c9 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Completions have no long lasting callbacks and therefor do not need the complex waitqueue variant. Use simple waitqueues which reduces the @@ -60,7 +60,7 @@ Signed-off-by: Thomas Gleixner struct mm_struct; --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -2412,7 +2412,10 @@ void migrate_disable(void) +@@ -2423,7 +2423,10 @@ void migrate_disable(void) } #ifdef CONFIG_SCHED_DEBUG @@ -72,7 +72,7 @@ Signed-off-by: Thomas Gleixner #endif if (p->migrate_disable) { -@@ -2443,7 +2446,10 @@ void migrate_enable(void) +@@ -2454,7 +2457,10 @@ void migrate_enable(void) } #ifdef CONFIG_SCHED_DEBUG @@ -84,7 +84,7 @@ Signed-off-by: Thomas Gleixner #endif WARN_ON_ONCE(p->migrate_disable <= 0); -@@ -2901,10 +2907,10 @@ void complete(struct completion *x) +@@ -2912,10 +2918,10 @@ void complete(struct completion *x) { unsigned long flags; @@ -98,7 +98,7 @@ Signed-off-by: Thomas Gleixner } EXPORT_SYMBOL(complete); -@@ -2921,10 +2927,10 @@ void complete_all(struct completion *x) +@@ -2932,10 +2938,10 @@ void complete_all(struct completion *x) { unsigned long flags; @@ -112,7 +112,7 @@ Signed-off-by: Thomas Gleixner } EXPORT_SYMBOL(complete_all); -@@ -2933,20 +2939,20 @@ do_wait_for_common(struct completion *x, +@@ -2944,20 +2950,20 @@ do_wait_for_common(struct completion *x, long (*action)(long), long timeout, int state) { if (!x->done) { @@ -138,7 +138,7 @@ Signed-off-by: Thomas Gleixner if (!x->done) return timeout; } -@@ -2960,9 +2966,9 @@ static inline long __sched +@@ -2971,9 +2977,9 @@ static inline long __sched { might_sleep(); @@ -150,7 +150,7 @@ Signed-off-by: Thomas Gleixner return timeout; } -@@ -3138,12 +3144,12 @@ bool try_wait_for_completion(struct comp +@@ -3149,12 +3155,12 @@ bool try_wait_for_completion(struct comp unsigned long flags; int ret = 1; @@ -165,7 +165,7 @@ Signed-off-by: Thomas Gleixner return ret; } EXPORT_SYMBOL(try_wait_for_completion); -@@ -3161,10 +3167,10 @@ bool completion_done(struct completion * +@@ -3172,10 +3178,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 c65327982..aba50f2ec 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- @@ -10,7 +10,7 @@ Signed-off-by: Thomas Gleixner --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -2482,7 +2482,7 @@ extern int _cond_resched(void); +@@ -2528,7 +2528,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 fb84c1807..54647c8a7 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- @@ -11,7 +11,7 @@ Signed-off-by: Thomas Gleixner --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -2493,12 +2493,16 @@ extern int __cond_resched_lock(spinlock_ +@@ -2539,12 +2539,16 @@ extern int __cond_resched_lock(spinlock_ __cond_resched_lock(lock); \ }) @@ -30,7 +30,7 @@ Signed-off-by: Thomas Gleixner { --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -3941,6 +3941,7 @@ int __cond_resched_lock(spinlock_t *lock +@@ -3954,6 +3954,7 @@ int __cond_resched_lock(spinlock_t *lock } EXPORT_SYMBOL(__cond_resched_lock); @@ -38,7 +38,7 @@ Signed-off-by: Thomas Gleixner int __sched __cond_resched_softirq(void) { BUG_ON(!in_softirq()); -@@ -3954,6 +3955,7 @@ int __sched __cond_resched_softirq(void) +@@ -3967,6 +3968,7 @@ int __sched __cond_resched_softirq(void) return 0; } EXPORT_SYMBOL(__cond_resched_softirq); diff --git a/debian/patches/features/all/rt/condition-migration_disable-on-lock-acquisition.patch b/debian/patches/features/all/rt/condition-migration_disable-on-lock-acquisition.patch index 0dc2ab732..200d0646c 100644 --- a/debian/patches/features/all/rt/condition-migration_disable-on-lock-acquisition.patch +++ b/debian/patches/features/all/rt/condition-migration_disable-on-lock-acquisition.patch @@ -2,7 +2,7 @@ From 56f43bce737d3f28ad470c95fa84f824cb0d55ad Mon Sep 17 00:00:00 2001 From: Nicholas Mc Guire Date: Thu, 21 Nov 2013 22:52:30 -0500 Subject: [PATCH 2/2] condition migration_disable on lock acquisition -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz No need to unconditionally migrate_disable (what is it protecting ?) and re-enable on failure to acquire the lock. 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 5a3406763..2a47dab5b 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 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 abae427f2..c03ac0a25 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 @@ -57,7 +57,7 @@ Signed-off-by: Thomas Gleixner --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1807,6 +1807,10 @@ extern void do_set_cpus_allowed(struct t +@@ -1808,6 +1808,10 @@ extern void do_set_cpus_allowed(struct t extern int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask); @@ -68,7 +68,7 @@ Signed-off-by: Thomas Gleixner #else static inline void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) -@@ -1819,6 +1823,9 @@ static inline int set_cpus_allowed_ptr(s +@@ -1820,6 +1824,9 @@ static inline int set_cpus_allowed_ptr(s return -EINVAL; return 0; } @@ -443,7 +443,7 @@ Signed-off-by: Thomas Gleixner /* CPU didn't die: tell everyone. Can't complain. */ --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -2359,7 +2359,7 @@ void migrate_disable(void) +@@ -2370,7 +2370,7 @@ void migrate_disable(void) { struct task_struct *p = current; @@ -452,7 +452,7 @@ Signed-off-by: Thomas Gleixner #ifdef CONFIG_SCHED_DEBUG p->migrate_disable_atomic++; #endif -@@ -2389,7 +2389,7 @@ void migrate_enable(void) +@@ -2400,7 +2400,7 @@ void migrate_enable(void) unsigned long flags; struct rq *rq; @@ -461,7 +461,7 @@ Signed-off-by: Thomas Gleixner #ifdef CONFIG_SCHED_DEBUG p->migrate_disable_atomic--; #endif -@@ -4428,6 +4428,84 @@ void do_set_cpus_allowed(struct task_str +@@ -4439,6 +4439,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 fdf211b46..2ee80accc 100644 --- a/debian/patches/features/all/rt/cpu-rt-variants.patch +++ b/debian/patches/features/all/rt/cpu-rt-variants.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- diff --git a/debian/patches/features/all/rt/cpu_down_move_migrate_enable_back.patch b/debian/patches/features/all/rt/cpu_down_move_migrate_enable_back.patch index b40844823..988555ebf 100644 --- a/debian/patches/features/all/rt/cpu_down_move_migrate_enable_back.patch +++ b/debian/patches/features/all/rt/cpu_down_move_migrate_enable_back.patch @@ -2,7 +2,7 @@ From linux-rt-users-owner@vger.kernel.org Thu Nov 7 03:07:12 2013 From: Tiejun Chen Subject: [v1][PATCH] cpu_down: move migrate_enable() back Date: Thu, 7 Nov 2013 10:06:07 +0800 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Commit 08c1ab68, "hotplug-use-migrate-disable.patch", intends to use migrate_enable()/migrate_disable() to replace that combination 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 a7d2c7796..b90c89092 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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. diff --git a/debian/patches/features/all/rt/debugobjects-rt.patch b/debian/patches/features/all/rt/debugobjects-rt.patch index e51c746e3..dd204d9a2 100644 --- a/debian/patches/features/all/rt/debugobjects-rt.patch +++ b/debian/patches/features/all/rt/debugobjects-rt.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 365d539fd..aa21fda4f 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 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 c3a9895e2..0f2b4cd25 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Use disable_irq_nosync() instead of disable_irq() as this might be called in atomic context with netpoll. 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 f39307956..0ffff5733 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 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 d6991859d..2a2aec73d 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz The adjust_link() disables interrupts before taking the queue locks. On RT those locks are converted to "sleeping" locks and 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 e28664e47..c0c583c9e 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Otherwise the device is not completely shut down. 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 3ef5eebe9..137147043 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Argh, cut and paste wasn't enough... 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 85828e896..678dbdbcc 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz No need to keep preemption disabled across the whole function. 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 e6923f571..9d4de3a8a 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Ingo Molnar 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 339f7d8f8..48f4e8ece 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner 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 200ba4ea3..cc8966945 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 5fdce8bfc..9bd1291dd 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 6250f08bd..4e0dc9867 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz This tracepoint is responsible for: diff --git a/debian/patches/features/all/rt/drm-remove-preempt_disable-from-drm_calc_vbltimestam.patch b/debian/patches/features/all/rt/drm-remove-preempt_disable-from-drm_calc_vbltimestam.patch index 84a43cc05..bf63c5177 100644 --- a/debian/patches/features/all/rt/drm-remove-preempt_disable-from-drm_calc_vbltimestam.patch +++ b/debian/patches/features/all/rt/drm-remove-preempt_disable-from-drm_calc_vbltimestam.patch @@ -3,7 +3,7 @@ From: Sebastian Andrzej Siewior Date: Fri, 11 Oct 2013 17:14:31 +0200 Subject: [PATCH] drm: remove preempt_disable() from drm_calc_vbltimestamp_from_scanoutpos() -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Luis captured the following: diff --git a/debian/patches/features/all/rt/early-printk-consolidate.patch b/debian/patches/features/all/rt/early-printk-consolidate.patch index 78b3c112c..407bf042f 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 02a5bfdf6..ccef24e63 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- diff --git a/debian/patches/features/all/rt/filemap-fix-up.patch b/debian/patches/features/all/rt/filemap-fix-up.patch index 8a13a5a9b..e4ce41e8c 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner Wrecked-off-by: Peter Zijlstra 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 5e44f17e7..16c7aa6e2 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 diff --git a/debian/patches/features/all/rt/fixup_opencoded_completions.patch b/debian/patches/features/all/rt/fixup_opencoded_completions.patch index ce080569b..f511877fd 100644 --- a/debian/patches/features/all/rt/fixup_opencoded_completions.patch +++ b/debian/patches/features/all/rt/fixup_opencoded_completions.patch @@ -2,15 +2,14 @@ From 53a9508f5983092928b0e6e12f400b686e1f04b1 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 28 Oct 2013 11:50:06 +0100 Subject: [PATCH] a few open coded completions -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Sebastian Andrzej Siewior --- drivers/net/wireless/orinoco/orinoco_usb.c | 2 +- drivers/usb/gadget/f_fs.c | 2 +- drivers/usb/gadget/inode.c | 4 ++-- - include/linux/netdevice.h | 2 +- - 4 files changed, 5 insertions(+), 5 deletions(-) + 3 files changed, 4 insertions(+), 4 deletions(-) --- a/drivers/net/wireless/orinoco/orinoco_usb.c +++ b/drivers/net/wireless/orinoco/orinoco_usb.c @@ -54,14 +53,3 @@ Signed-off-by: Sebastian Andrzej Siewior if (epdata->status == -ECONNRESET) epdata->status = -EINTR; } else { ---- a/include/linux/netdevice.h -+++ b/include/linux/netdevice.h -@@ -1214,7 +1214,7 @@ struct net_device { - unsigned char perm_addr[MAX_ADDR_LEN]; /* permanent hw address */ - unsigned char addr_assign_type; /* hw address assignment type */ - unsigned char addr_len; /* hardware address length */ -- unsigned char neigh_priv_len; -+ unsigned short neigh_priv_len; - unsigned short dev_id; /* Used to differentiate devices - * that share the same link - * layer address 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 8105ac39e..ed5f3eb12 100644 --- a/debian/patches/features/all/rt/fs-block-rt-support.patch +++ b/debian/patches/features/all/rt/fs-block-rt-support.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 a0286e181..f6294768e 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 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 73fa4e78b..1b3403969 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 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 c91869e2b..07abd973b 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz bit_spin_locks break under RT. 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 0c7557bfa..b60971719 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz On RT we cannot loop with preemption disabled here as mnt_make_readonly() might have been preempted. We can safely enable 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 93e83bf55..1f94631d2 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz On Sat, 2007-10-27 at 11:44 +0200, Ingo Molnar wrote: > * Nick Piggin wrote: 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 397c95f1a..7eff9782e 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Wrap the bit_spin_lock calls into a separate inline and add the RT replacements with a real spinlock. 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 3db2f3284..46dba9973 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 270f32218..080725724 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Requeue with timeout causes a bug with PREEMPT_RT_FULL. 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 b01c00c25..1a249db66 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Creates long latencies for no value diff --git a/debian/patches/features/all/rt/genirq-do-not-invoke-the-affinity-callback-via-a-wor.patch b/debian/patches/features/all/rt/genirq-do-not-invoke-the-affinity-callback-via-a-wor.patch index 7882b3eeb..b00cdda9a 100644 --- a/debian/patches/features/all/rt/genirq-do-not-invoke-the-affinity-callback-via-a-wor.patch +++ b/debian/patches/features/all/rt/genirq-do-not-invoke-the-affinity-callback-via-a-wor.patch @@ -2,7 +2,7 @@ From 76666dbbdd40e963e7df84c123fc9aea4a2bcc69 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Wed, 21 Aug 2013 17:48:46 +0200 Subject: [PATCH] genirq: do not invoke the affinity callback via a workqueue -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Joe Korty reported, that __irq_set_affinity_locked() schedules a workqueue while holding a rawlock which results in a might_sleep() diff --git a/debian/patches/features/all/rt/genirq-force-threading.patch b/debian/patches/features/all/rt/genirq-force-threading.patch index 91d068d0b..65f7a878c 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- diff --git a/debian/patches/features/all/rt/genirq-nodebug-shirq.patch b/debian/patches/features/all/rt/genirq-nodebug-shirq.patch index f59ac18da..61794a63b 100644 --- a/debian/patches/features/all/rt/genirq-nodebug-shirq.patch +++ b/debian/patches/features/all/rt/genirq-nodebug-shirq.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 d0a97a3be..480e437d3 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 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 035731870..dc33d8eb0 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz get_online_cpus() is a heavy weight function which involves a global mutex. migrate_disable() wants a simpler construct which prevents only 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 4f0a7e6ff..2bbc1f95f 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Otherwise the output will look a little odd. 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 997760e26..35109db26 100644 --- a/debian/patches/features/all/rt/hotplug-use-migrate-disable.patch +++ b/debian/patches/features/all/rt/hotplug-use-migrate-disable.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- diff --git a/debian/patches/features/all/rt/hrtimer-Move-schedule_work-call-to-helper-thread.patch b/debian/patches/features/all/rt/hrtimer-Move-schedule_work-call-to-helper-thread.patch index cb42b1a31..3d7ceba33 100644 --- a/debian/patches/features/all/rt/hrtimer-Move-schedule_work-call-to-helper-thread.patch +++ b/debian/patches/features/all/rt/hrtimer-Move-schedule_work-call-to-helper-thread.patch @@ -2,7 +2,7 @@ From 180cdb93d796bf52c919f5e3df30af83aa6d46ca Mon Sep 17 00:00:00 2001 From: Yang Shi Date: Mon, 16 Sep 2013 14:09:19 -0700 Subject: [PATCH] hrtimer: Move schedule_work call to helper thread -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz When run ltp leapsec_timer test, the following call trace is caught: 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 425d6c394..cc5cff181 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz In preempt-rt we can not call the callbacks which take sleeping locks from the timer interrupt context. 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 f65f00df3..5bf7bcd81 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz When the hrtimer stall detection hits the softirq is not raised. 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 23ae5bdc9..10374849f 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Make cancellation of a running callback in softirq context safe against preemption. diff --git a/debian/patches/features/all/rt/hwlat-detector-Don-t-ignore-threshold-module-paramet.patch b/debian/patches/features/all/rt/hwlat-detector-Don-t-ignore-threshold-module-paramet.patch index ad5bca407..4f74b4337 100644 --- a/debian/patches/features/all/rt/hwlat-detector-Don-t-ignore-threshold-module-paramet.patch +++ b/debian/patches/features/all/rt/hwlat-detector-Don-t-ignore-threshold-module-paramet.patch @@ -2,7 +2,7 @@ From c19bf3baaa55918486b868ab17aae0c0c220e51f Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Fri, 30 Aug 2013 07:57:25 +0200 Subject: [PATCH] hwlat-detector: Don't ignore threshold module parameter -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz If the user specified a threshold at module load time, use it. diff --git a/debian/patches/features/all/rt/hwlat-detector-Update-hwlat_detector-to-add-outer-lo.patch b/debian/patches/features/all/rt/hwlat-detector-Update-hwlat_detector-to-add-outer-lo.patch index 6c41c37b2..edfc73e82 100644 --- a/debian/patches/features/all/rt/hwlat-detector-Update-hwlat_detector-to-add-outer-lo.patch +++ b/debian/patches/features/all/rt/hwlat-detector-Update-hwlat_detector-to-add-outer-lo.patch @@ -3,7 +3,7 @@ From: Steven Rostedt Date: Mon, 19 Aug 2013 17:33:25 -0400 Subject: [PATCH 1/3] hwlat-detector: Update hwlat_detector to add outer loop detection -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz The hwlat_detector reads two timestamps in a row, then reports any gap between those calls. The problem is, it misses everything between diff --git a/debian/patches/features/all/rt/hwlat-detector-Use-thread-instead-of-stop-machine.patch b/debian/patches/features/all/rt/hwlat-detector-Use-thread-instead-of-stop-machine.patch index 0826c0256..2902ac0d3 100644 --- a/debian/patches/features/all/rt/hwlat-detector-Use-thread-instead-of-stop-machine.patch +++ b/debian/patches/features/all/rt/hwlat-detector-Use-thread-instead-of-stop-machine.patch @@ -2,7 +2,7 @@ From 42b3963c5d3dcdb54226fc6bbb6b5fbcf3f2ddee Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Mon, 19 Aug 2013 17:33:27 -0400 Subject: [PATCH 3/3] hwlat-detector: Use thread instead of stop machine -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz There's no reason to use stop machine to search for hardware latency. Simply disabling interrupts while running the loop will do enough to diff --git a/debian/patches/features/all/rt/hwlat-detector-Use-trace_clock_local-if-available.patch b/debian/patches/features/all/rt/hwlat-detector-Use-trace_clock_local-if-available.patch index 9ab4028a0..e8ddd999c 100644 --- a/debian/patches/features/all/rt/hwlat-detector-Use-trace_clock_local-if-available.patch +++ b/debian/patches/features/all/rt/hwlat-detector-Use-trace_clock_local-if-available.patch @@ -2,7 +2,7 @@ From 4aaca90c0255caee9a55371afaecb32365123762 Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Mon, 19 Aug 2013 17:33:26 -0400 Subject: [PATCH 2/3] hwlat-detector: Use trace_clock_local if available -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz As ktime_get() calls into the timing code which does a read_seq(), it may be affected by other CPUS that touch that lock. To remove this diff --git a/debian/patches/features/all/rt/hwlatdetect.patch b/debian/patches/features/all/rt/hwlatdetect.patch index d8876f4a5..db1252af0 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Jon Masters developed this wonderful SMI detector. For details please consult Documentation/hwlat_detector.txt. It could be ported to Linux 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 3365fb7f0..ca049f523 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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. diff --git a/debian/patches/features/all/rt/i915_compile_fix.patch b/debian/patches/features/all/rt/i915_compile_fix.patch index 6afbe3c7c..927394495 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz The opencode part is gone in 1f83fee0 ("drm/i915: clear up wedged transitions") the owner check is still there. 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 c0d0aa194..f8c329c6b 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Use the local_irq_*_nort variants. diff --git a/debian/patches/features/all/rt/idle-state.patch b/debian/patches/features/all/rt/idle-state.patch index 84b914680..dca872fdc 100644 --- a/debian/patches/features/all/rt/idle-state.patch +++ b/debian/patches/features/all/rt/idle-state.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 8792bb7d9..d7516eac4 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz We need to protect the per cpu variable and prevent migration. 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 67c7c7cd1..12d54da94 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Fixes in_atomic stack-dump, when Mellanox module is loaded into the RT Kernel. 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 85e35b1fd..95e86e094 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Use the _nort() primitives. 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 d883f48cb..be5bd8554 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz RT serializes the code with the (rt)spinlock but keeps preemption enabled. Some parts of the code need to be atomic nevertheless. 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 0e2b16e6f..f127e4161 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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. 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 22a885078..01888ffcf 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Current sysv sems have a weird ass wakeup scheme that involves keeping preemption disabled over a potential O(n^2) loop and busy waiting on 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 f362f7f37..ecfb70264 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 diff --git a/debian/patches/features/all/rt/jump-label-rt.patch b/debian/patches/features/all/rt/jump-label-rt.patch index 633dfef67..57944cedc 100644 --- a/debian/patches/features/all/rt/jump-label-rt.patch +++ b/debian/patches/features/all/rt/jump-label-rt.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 7c77264ae..2efb67f75 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Disable stuff which is known to have issues on RT 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 9866e9d1c..af138611c 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 e1fa011ad..0a92b35f2 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz If kthread is pinned to CPUx and CPUx is going down then we get into trouble: 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 07d4ae8d0..684e8a8a6 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 diff --git a/debian/patches/features/all/rt/kgb-serial-hackaround.patch b/debian/patches/features/all/rt/kgb-serial-hackaround.patch index 45f8dbe85..ac85210cb 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz On 07/27/2011 04:37 PM, Thomas Gleixner wrote: > - KGDB (not yet disabled) is reportedly unusable on -rt right now due diff --git a/debian/patches/features/all/rt/latency-hist.patch b/debian/patches/features/all/rt/latency-hist.patch index f058f72d2..07a1dee62 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz This patch provides a recording mechanism to store data of potential sources of system latencies. The recordings separately determine the @@ -229,7 +229,7 @@ Signed-off-by: Thomas Gleixner void *start_site; --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1397,6 +1397,12 @@ struct task_struct { +@@ -1398,6 +1398,12 @@ struct task_struct { unsigned long trace; /* bitmask and counter of trace recursion */ unsigned long trace_recursion; diff --git a/debian/patches/features/all/rt/lglocks-rt.patch b/debian/patches/features/all/rt/lglocks-rt.patch index 9b411d204..f92c734e8 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 18c6e6615..2402b2f2e 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 5fc890f08..4d6f004c2 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 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 118604a5d..3768811d3 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Add local_irq_*_(no)rt variant which are mainly used to break interrupt disabled sections on PREEMPT_RT or to explicitely disable diff --git a/debian/patches/features/all/rt/local-var.patch b/debian/patches/features/all/rt/local-var.patch index 1628519e3..5be9b45d8 100644 --- a/debian/patches/features/all/rt/local-var.patch +++ b/debian/patches/features/all/rt/local-var.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 4bda3e3d6..f95962f56 100644 --- a/debian/patches/features/all/rt/local-vars-migrate-disable.patch +++ b/debian/patches/features/all/rt/local-vars-migrate-disable.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- diff --git a/debian/patches/features/all/rt/localversion.patch b/debian/patches/features/all/rt/localversion.patch index d3293c838..3aa820aec 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner Signed-off-by: Peter Zijlstra @@ -13,4 +13,4 @@ Link: http://lkml.kernel.org/n/tip-8vdw4bfcsds27cvox6rpb334@git.kernel.org --- /dev/null +++ b/localversion-rt @@ -0,0 +1 @@ -+-rt4 ++-rt7 diff --git a/debian/patches/features/all/rt/lockdep-Correctly-annotate-hardirq-context-in-irq_ex.patch b/debian/patches/features/all/rt/lockdep-Correctly-annotate-hardirq-context-in-irq_ex.patch index df20ac5a8..063857a45 100644 --- a/debian/patches/features/all/rt/lockdep-Correctly-annotate-hardirq-context-in-irq_ex.patch +++ b/debian/patches/features/all/rt/lockdep-Correctly-annotate-hardirq-context-in-irq_ex.patch @@ -1,7 +1,7 @@ From: Peter Zijlstra Date: Tue, 19 Nov 2013 16:42:47 +0100 Subject: [PATCH] lockdep: Correctly annotate hardirq context in irq_exit() -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz There was a reported deadlock on -rt which lockdep didn't report. 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 d3fbe777e..bfea76ff8 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 c9a63c99e..182ae7d66 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz From: Yong Zhang diff --git a/debian/patches/features/all/rt/lockref-disable-64bit-cmpxchg-optimization-on-RT.patch b/debian/patches/features/all/rt/lockref-disable-64bit-cmpxchg-optimization-on-RT.patch index 96afb7d09..251a21eb1 100644 --- a/debian/patches/features/all/rt/lockref-disable-64bit-cmpxchg-optimization-on-RT.patch +++ b/debian/patches/features/all/rt/lockref-disable-64bit-cmpxchg-optimization-on-RT.patch @@ -2,7 +2,7 @@ From f58b8f5371f712ec2cdd20fb9ec032cffc1da4d2 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Sat, 26 Oct 2013 00:01:58 +0200 Subject: [PATCH] lockref: disable 64bit cmpxchg optimization on RT -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz One of the requirements is that the lock has to fit in an u32 which does not work with the sleeping locks. We would have to use the bare raw diff --git a/debian/patches/features/all/rt/md-disable-bcache.patch b/debian/patches/features/all/rt/md-disable-bcache.patch index 860b6e794..fe531a3fb 100644 --- a/debian/patches/features/all/rt/md-disable-bcache.patch +++ b/debian/patches/features/all/rt/md-disable-bcache.patch @@ -5,7 +5,7 @@ Subject: [PATCH] md: disable bcache 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz It uses anon semaphores |drivers/md/bcache/request.c: In function ‘cached_dev_write_complete’: 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 d3ae543a5..fdaf6b386 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz __raid_run_ops() disables preemption with get_cpu() around the access to the raid5_percpu variables. That causes scheduling while atomic @@ -21,7 +21,7 @@ Tested-by: Udo van den Heuvel --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c -@@ -1540,8 +1540,9 @@ static void raid_run_ops(struct stripe_h +@@ -1541,8 +1541,9 @@ static void raid_run_ops(struct stripe_h struct raid5_percpu *percpu; unsigned long cpu; @@ -32,7 +32,7 @@ Tested-by: Udo van den Heuvel if (test_bit(STRIPE_OP_BIOFILL, &ops_request)) { ops_run_biofill(sh); overlap_clear++; -@@ -1593,7 +1594,8 @@ static void raid_run_ops(struct stripe_h +@@ -1594,7 +1595,8 @@ static void raid_run_ops(struct stripe_h if (test_and_clear_bit(R5_Overlap, &dev->flags)) wake_up(&sh->raid_conf->wait_for_overlap); } @@ -42,7 +42,7 @@ Tested-by: Udo van den Heuvel } static int grow_one_stripe(struct r5conf *conf) -@@ -5439,6 +5441,7 @@ static int raid5_alloc_percpu(struct r5c +@@ -5451,6 +5453,7 @@ static int raid5_alloc_percpu(struct r5c break; } per_cpu_ptr(conf->percpu, cpu)->scribble = scribble; 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 79caca6f4..4d43a9677 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Idle is not allowed to call sleeping functions ever! 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 3a8564b1d..fa047eb91 100644 --- a/debian/patches/features/all/rt/migrate-disable-rt-variant.patch +++ b/debian/patches/features/all/rt/migrate-disable-rt-variant.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- diff --git a/debian/patches/features/all/rt/migrate_disable-pushd-down-in-atomic_dec_and_spin_lo.patch b/debian/patches/features/all/rt/migrate_disable-pushd-down-in-atomic_dec_and_spin_lo.patch new file mode 100644 index 000000000..6c518b7b7 --- /dev/null +++ b/debian/patches/features/all/rt/migrate_disable-pushd-down-in-atomic_dec_and_spin_lo.patch @@ -0,0 +1,30 @@ +From cf189cc2685cbe22602cac460a75debb781e5cdb Mon Sep 17 00:00:00 2001 +From: Nicholas Mc Guire +Date: Fri, 29 Nov 2013 00:19:41 -0500 +Subject: [PATCH] migrate_disable pushd down in atomic_dec_and_spin_lock +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz + +Signed-off-by: Nicholas Mc Guire +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/rtmutex.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c +@@ -935,12 +935,12 @@ int atomic_dec_and_spin_lock(atomic_t *a + /* Subtract 1 from counter unless that drops it to 0 (ie. it was 1) */ + if (atomic_add_unless(atomic, -1, 1)) + return 0; +- migrate_disable(); + rt_spin_lock(lock); +- if (atomic_dec_and_test(atomic)) ++ if (atomic_dec_and_test(atomic)){ ++ migrate_disable(); + return 1; ++ } + rt_spin_unlock(lock); +- migrate_enable(); + return 0; + } + EXPORT_SYMBOL(atomic_dec_and_spin_lock); diff --git a/debian/patches/features/all/rt/migrate_disable-pushd-down-in-rt_spin_trylock_irqsav.patch b/debian/patches/features/all/rt/migrate_disable-pushd-down-in-rt_spin_trylock_irqsav.patch new file mode 100644 index 000000000..e9d495089 --- /dev/null +++ b/debian/patches/features/all/rt/migrate_disable-pushd-down-in-rt_spin_trylock_irqsav.patch @@ -0,0 +1,30 @@ +From 12e7b0fcf6bfc4035cec0a9ec0f30aaf3b3fe905 Mon Sep 17 00:00:00 2001 +From: Nicholas Mc Guire +Date: Fri, 29 Nov 2013 00:17:27 -0500 +Subject: [PATCH] migrate_disable pushd down in rt_spin_trylock_irqsave +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz + +Signed-off-by: Nicholas Mc Guire +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/rtmutex.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c +@@ -920,12 +920,11 @@ int __lockfunc rt_spin_trylock_irqsave(s + int ret; + + *flags = 0; +- migrate_disable(); + ret = rt_mutex_trylock(&lock->lock); +- if (ret) ++ if (ret) { ++ migrate_disable(); + spin_acquire(&lock->dep_map, 0, 1, _RET_IP_); +- else +- migrate_enable(); ++ } + return ret; + } + EXPORT_SYMBOL(rt_spin_trylock_irqsave); diff --git a/debian/patches/features/all/rt/migrate_disable-pushd-down-in-rt_write_trylock_irqsa.patch b/debian/patches/features/all/rt/migrate_disable-pushd-down-in-rt_write_trylock_irqsa.patch new file mode 100644 index 000000000..d9b5410df --- /dev/null +++ b/debian/patches/features/all/rt/migrate_disable-pushd-down-in-rt_write_trylock_irqsa.patch @@ -0,0 +1,27 @@ +From 1924bc91c8cf91fc4c94047a4b9985cf6b9e31f1 Mon Sep 17 00:00:00 2001 +From: Nicholas Mc Guire +Date: Fri, 29 Nov 2013 00:21:59 -0500 +Subject: [PATCH] migrate_disable pushd down in rt_write_trylock_irqsave +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz + +Signed-off-by: Nicholas Mc Guire +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/rt.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +--- a/kernel/rt.c ++++ b/kernel/rt.c +@@ -196,10 +196,9 @@ int __lockfunc rt_write_trylock_irqsave( + int ret; + + *flags = 0; +- migrate_disable(); + ret = rt_write_trylock(rwlock); +- if (!ret) +- migrate_enable(); ++ if (ret) ++ migrate_disable(); + return ret; + } + EXPORT_SYMBOL(rt_write_trylock_irqsave); 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 57626f132..9bb2b4978 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 3cebac8c9..5f92b0f36 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 442cdd8b9..0ca8d6c2a 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz kmap_atomic() is preemptible on RT. 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 4358dc918..945fd0503 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Bit spinlocks are not working on RT. Replace them. 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 b037422d7..22e95e7ae 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner diff --git a/debian/patches/features/all/rt/mm-disable-sloub-rt.patch b/debian/patches/features/all/rt/mm-disable-sloub-rt.patch index 1671f8423..958b623e6 100644 --- a/debian/patches/features/all/rt/mm-disable-sloub-rt.patch +++ b/debian/patches/features/all/rt/mm-disable-sloub-rt.patch @@ -1,7 +1,7 @@ From: Ingo Molnar Date: Fri, 3 Jul 2009 08:44:03 -0500 Subject: mm: Allow only slub on RT -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner diff --git a/debian/patches/features/all/rt/mm-enable-slub.patch b/debian/patches/features/all/rt/mm-enable-slub.patch index 4925ef138..afa66f31d 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Make SLUB RT aware and remove the restriction in Kconfig. 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 242f5372f..6d9b98fed 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner diff --git a/debian/patches/features/all/rt/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch b/debian/patches/features/all/rt/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch index c17752fa7..8543e1820 100644 --- a/debian/patches/features/all/rt/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch +++ b/debian/patches/features/all/rt/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch @@ -2,7 +2,7 @@ From: Yang Shi Subject: [V3 PATCH] mm/memcontrol: Don't call schedule_work_on in preemption disabled context Date: Wed, 30 Oct 2013 11:48:33 -0700 Message-ID: <1383158913-16325-1-git-send-email-yang.shi@windriver.com> -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz The following trace is triggered when running ltp oom test cases: 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 6d164c378..273aad1cf 100644 --- a/debian/patches/features/all/rt/mm-page-alloc-fix.patch +++ b/debian/patches/features/all/rt/mm-page-alloc-fix.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 3fb128238..c887edd04 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 dfc6f6028..d1f368cd0 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz The plain spinlock while sufficient does not update the local_lock internals. Use a proper local_lock function instead to ease debugging. 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 bcf16f05e..9385bbcc1 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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. 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 20533f1a9..e306398c9 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz rt-friendly per-cpu pages: convert the irqs-off per-cpu locking method into a preemptible, explicit-per-cpu-locks method. 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 bea9d666c..222cc60d0 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Add a pagefault_disabled variable to task_struct to allow decoupling the pagefault-disabled logic from the preempt count. @@ -18,7 +18,7 @@ Signed-off-by: Thomas Gleixner --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1248,6 +1248,7 @@ struct task_struct { +@@ -1249,6 +1249,7 @@ struct task_struct { /* mutex deadlock detection */ struct mutex_waiter *blocked_on; #endif 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 c373f4f70..791d728e8 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz User preempt_*_rt instead of local_irq_*_rt or otherwise there will be warning on ARM like below: 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 39779bdae..593f4cb93 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Now that all users are cleaned up, we can remove the preemption count. 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 19d58cd2c..864b6fdff 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 @@ -216,7 +216,7 @@ Link: http://lkml.kernel.org/r/1311842631.5890.208.camel@twins #include #include #include -@@ -1440,6 +1441,12 @@ struct task_struct { +@@ -1441,6 +1442,12 @@ struct task_struct { struct rcu_head put_rcu; int softirq_nestcnt; #endif 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 7f229c85b..5527a7597 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 3fc662f6c..ffb49c35e 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz He below is a boot-tested hack to shrink the page frame size back to normal. 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 4a5c7286e..f6eafe19e 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 0203e5349..c0a35e063 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz On !RT interrupt runs with interrupts disabled. On RT it's in a thread, so no need to disable interrupts at all. 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 050740b58..9321b43ba 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 @@ -43,7 +43,7 @@ Signed-off-by: Steven Rostedt #include #include #include -@@ -516,10 +517,49 @@ static void sync_cmos_clock(struct work_ +@@ -517,10 +518,49 @@ static void sync_cmos_clock(struct work_ schedule_delayed_work(&sync_cmos_work, timespec_to_jiffies(&next)); } 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 72b2937ce..1072cffac 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 373a1bcdb..d2edc1704 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Replace it by a local lock. Though that's pretty inefficient :( 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 527af33e4..419b373f4 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz The netfilter code relies only on the implicit semantics of local_bh_disable() for serializing wt_write_recseq sections. RT breaks 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 214b16f58..50273e163 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz ======================================================= [ INFO: possible circular locking dependency detected ] diff --git a/debian/patches/features/all/rt/net-iwlwifi-request-only-a-threaded-handler-for-inte.patch b/debian/patches/features/all/rt/net-iwlwifi-request-only-a-threaded-handler-for-inte.patch index 5eb50e466..9f176d646 100644 --- a/debian/patches/features/all/rt/net-iwlwifi-request-only-a-threaded-handler-for-inte.patch +++ b/debian/patches/features/all/rt/net-iwlwifi-request-only-a-threaded-handler-for-inte.patch @@ -3,7 +3,7 @@ From: Sebastian Andrzej Siewior Date: Fri, 4 Oct 2013 11:42:34 +0200 Subject: [PATCH] net: iwlwifi: request only a threaded handler for interrupts -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz On RT the trans_pcie->irq_lock lock is converted into a sleeping lock and can't be used in primary irq handler. The lock is used in mutliple 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 7bf1d58af..83e4156b4 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz On RT write_seqcount_begin() disables preemption and device_rename() allocates memory with GFP_KERNEL and grabs later the sysfs_mutex diff --git a/debian/patches/features/all/rt/net-make-neigh_priv_len-in-struct-net_device-16bit-i.patch b/debian/patches/features/all/rt/net-make-neigh_priv_len-in-struct-net_device-16bit-i.patch new file mode 100644 index 000000000..36ec4ba8b --- /dev/null +++ b/debian/patches/features/all/rt/net-make-neigh_priv_len-in-struct-net_device-16bit-i.patch @@ -0,0 +1,45 @@ +From a0a9663dd2146d54339237764e1bfc60e8a39328 Mon Sep 17 00:00:00 2001 +From: Sebastian Siewior +Date: Thu, 12 Dec 2013 10:15:59 +0100 +Subject: [PATCH] net: make neigh_priv_len in struct net_device 16bit instead + of 8bit +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz + +neigh_priv_len is defined as u8. With all debug enabled struct +ipoib_neigh has 200 bytes. The largest part is sk_buff_head with 96 +bytes and here the spinlock with 72 bytes. +The size value still fits in this u8 leaving some room for more. + +On -RT struct ipoib_neigh put on weight and has 392 bytes. The main +reason is sk_buff_head with 288 and the fatty here is spinlock with 192 +bytes. This does no longer fit into into neigh_priv_len and gcc +complains. + +This patch changes neigh_priv_len from being 8bit to 16bit. Since the +following element (dev_id) is 16bit followed by a spinlock which is +aligned, the struct remains with a total size of 3200 (allmodconfig) / +2048 (with as much debug off as possible) bytes on x86-64. +On x86-32 the struct is 1856 (allmodconfig) / 1216 (with as much debug +off as possible) bytes long. The numbers were gained with and without +the patch to prove that this change does not increase the size of the +struct. + +Cc: Steven Rostedt +Cc: Thomas Gleixner +Signed-off-by: Sebastian Andrzej Siewior +Signed-off-by: David S. Miller +--- + include/linux/netdevice.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/include/linux/netdevice.h ++++ b/include/linux/netdevice.h +@@ -1214,7 +1214,7 @@ struct net_device { + unsigned char perm_addr[MAX_ADDR_LEN]; /* permanent hw address */ + unsigned char addr_assign_type; /* hw address assignment type */ + unsigned char addr_len; /* hardware address length */ +- unsigned char neigh_priv_len; ++ unsigned short neigh_priv_len; + unsigned short dev_id; /* Used to differentiate devices + * that share the same link + * layer address 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 cd5f41e05..607f6c035 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 @@ -16,7 +16,7 @@ Signed-off-by: Thomas Gleixner --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -3269,11 +3269,9 @@ int netif_rx_ni(struct sk_buff *skb) +@@ -3265,11 +3265,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 cde443b31..c8fff18e4 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- @@ -10,7 +10,7 @@ Signed-off-by: Thomas Gleixner --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -3269,11 +3269,11 @@ int netif_rx_ni(struct sk_buff *skb) +@@ -3265,11 +3265,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 a09479a05..ffc098712 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 @@ -45,7 +45,7 @@ Signed-off-by: Thomas Gleixner --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -3279,6 +3279,36 @@ int netif_rx_ni(struct sk_buff *skb) +@@ -3275,6 +3275,36 @@ int netif_rx_ni(struct sk_buff *skb) } EXPORT_SYMBOL(netif_rx_ni); @@ -82,7 +82,7 @@ Signed-off-by: Thomas Gleixner static void net_tx_action(struct softirq_action *h) { struct softnet_data *sd = &__get_cpu_var(softnet_data); -@@ -3317,7 +3347,7 @@ static void net_tx_action(struct softirq +@@ -3313,7 +3343,7 @@ static void net_tx_action(struct softirq head = head->next_sched; root_lock = qdisc_lock(q); 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 a75180120..3422a1e1a 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 @@ -24,7 +24,7 @@ Cc: stable-rt@vger.kernel.org #include #include #include -@@ -602,7 +603,7 @@ static void prb_retire_rx_blk_timer_expi +@@ -609,7 +610,7 @@ static void prb_retire_rx_blk_timer_expi if (BLOCK_NUM_PKTS(pbd)) { while (atomic_read(&pkc->blk_fill_in_prog)) { /* Waiting for skb_copy_bits to finish... */ @@ -33,7 +33,7 @@ Cc: stable-rt@vger.kernel.org } } -@@ -853,7 +854,7 @@ static void prb_retire_current_block(str +@@ -860,7 +861,7 @@ static void prb_retire_current_block(str if (!(status & TP_STATUS_BLK_TMO)) { while (atomic_read(&pkc->blk_fill_in_prog)) { /* Waiting for skb_copy_bits to finish... */ 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 d1e4c99e9..c27ecc937 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 677e9ab49..e10cf6ca6 100644 --- a/debian/patches/features/all/rt/net-wireless-warn-nort.patch +++ b/debian/patches/features/all/rt/net-wireless-warn-nort.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 709c753e7..6f0ce1afe 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 @@ -77,7 +77,7 @@ Signed-off-by: Thomas Gleixner --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1208,6 +1208,10 @@ struct task_struct { +@@ -1209,6 +1209,10 @@ struct task_struct { sigset_t blocked, real_blocked; sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */ struct sigpending pending; 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 125f73d91..e6d1c667a 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,6 +1,6 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz --- kernel/panic.c | 2 ++ 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 f7fcefe1f..eb8a6155f 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Implementing RCU-bh in terms of RCU-preempt makes the system vulnerable to network-based denial-of-service attacks. This patch therefore 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 eadaf6bbe..9b9471b19 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz The waitqueue is protected by the pci_lock, so we can just avoid to lock the waitqueue lock itself. That prevents the diff --git a/debian/patches/features/all/rt/percpu-rwsem-compilefix.patch b/debian/patches/features/all/rt/percpu-rwsem-compilefix.patch index 9c6c79411..7e980f92a 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz The shortcut on mainline skip lockdep. No idea why this is a good thing. 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 a473d78b9..0078aa2cf 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Otherwise we get a deadlock like below: 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 1600db77d..e615e39cd 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 734d73d39..2005d6c07 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 @@ -64,7 +64,7 @@ Link: http://lkml.kernel.org/n/tip-275i87sl8e1jcamtchmehonm@git.kernel.org #ifdef CONFIG_PREEMPT_NOTIFIERS --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1062,7 +1062,9 @@ struct task_struct { +@@ -1063,7 +1063,9 @@ struct task_struct { #endif unsigned int policy; @@ -74,7 +74,7 @@ Link: http://lkml.kernel.org/n/tip-275i87sl8e1jcamtchmehonm@git.kernel.org int nr_cpus_allowed; cpumask_t cpus_allowed; -@@ -2622,11 +2624,22 @@ static inline void set_task_cpu(struct t +@@ -2732,11 +2734,22 @@ static inline void set_task_cpu(struct t #endif /* CONFIG_SMP */ @@ -117,7 +117,7 @@ Link: http://lkml.kernel.org/n/tip-275i87sl8e1jcamtchmehonm@git.kernel.org * Callback to arch code if there's nosmp or maxcpus=0 on the --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -4332,7 +4332,7 @@ void init_idle(struct task_struct *idle, +@@ -4345,7 +4345,7 @@ void init_idle(struct task_struct *idle, #ifdef CONFIG_SMP void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) { @@ -126,7 +126,7 @@ Link: http://lkml.kernel.org/n/tip-275i87sl8e1jcamtchmehonm@git.kernel.org 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); -@@ -4383,7 +4383,7 @@ int set_cpus_allowed_ptr(struct task_str +@@ -4396,7 +4396,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 */ @@ -135,7 +135,7 @@ Link: http://lkml.kernel.org/n/tip-275i87sl8e1jcamtchmehonm@git.kernel.org goto out; dest_cpu = cpumask_any_and(cpu_active_mask, new_mask); -@@ -4402,6 +4402,7 @@ int set_cpus_allowed_ptr(struct task_str +@@ -4415,6 +4415,7 @@ int set_cpus_allowed_ptr(struct task_str } EXPORT_SYMBOL_GPL(set_cpus_allowed_ptr); @@ -143,7 +143,7 @@ Link: http://lkml.kernel.org/n/tip-275i87sl8e1jcamtchmehonm@git.kernel.org void migrate_disable(void) { struct task_struct *p = current; -@@ -4494,6 +4495,7 @@ void migrate_enable(void) +@@ -4507,6 +4508,7 @@ void migrate_enable(void) preempt_enable(); } EXPORT_SYMBOL(migrate_enable); 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 f84bda84e..1455a1f78 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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. @@ -14,7 +14,7 @@ Link: http://lkml.kernel.org/n/tip-cbz6hkl5r5mvwtx5s3tor2y6@git.kernel.org --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -4422,7 +4422,19 @@ void migrate_disable(void) +@@ -4435,7 +4435,19 @@ void migrate_disable(void) preempt_enable(); return; } @@ -35,7 +35,7 @@ Link: http://lkml.kernel.org/n/tip-cbz6hkl5r5mvwtx5s3tor2y6@git.kernel.org p->migrate_disable = 1; mask = tsk_cpus_allowed(p); -@@ -4433,7 +4445,7 @@ void migrate_disable(void) +@@ -4446,7 +4458,7 @@ void migrate_disable(void) p->sched_class->set_cpus_allowed(p, mask); p->nr_cpus_allowed = cpumask_weight(mask); } @@ -44,7 +44,7 @@ Link: http://lkml.kernel.org/n/tip-cbz6hkl5r5mvwtx5s3tor2y6@git.kernel.org preempt_enable(); } EXPORT_SYMBOL(migrate_disable); -@@ -4461,7 +4473,11 @@ void migrate_enable(void) +@@ -4474,7 +4486,11 @@ void migrate_enable(void) return; } @@ -57,7 +57,7 @@ Link: http://lkml.kernel.org/n/tip-cbz6hkl5r5mvwtx5s3tor2y6@git.kernel.org p->migrate_disable = 0; mask = tsk_cpus_allowed(p); -@@ -4473,7 +4489,7 @@ void migrate_enable(void) +@@ -4486,7 +4502,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 0bf9699bf..613af857f 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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. @@ -301,7 +301,7 @@ Link: http://lkml.kernel.org/n/tip-3yy517m8zsi9fpsf14xfaqkw@git.kernel.org #include -@@ -1248,7 +1249,9 @@ struct task_struct { +@@ -1249,7 +1250,9 @@ struct task_struct { /* mutex deadlock detection */ struct mutex_waiter *blocked_on; #endif @@ -311,7 +311,7 @@ Link: http://lkml.kernel.org/n/tip-3yy517m8zsi9fpsf14xfaqkw@git.kernel.org #ifdef CONFIG_TRACE_IRQFLAGS unsigned int irq_events; unsigned long hardirq_enable_ip; -@@ -1434,6 +1437,17 @@ static inline void set_numabalancing_sta +@@ -1435,6 +1438,17 @@ static inline void set_numabalancing_sta } #endif 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 6dc83f629..916a23943 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz With RT_FULL we get the below wreckage: 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 e224f2d6d..cfc271f85 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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. 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 d4216c35e..3f48debcc 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz The crypto notifier deadlocks on RT. Though this can be a real deadlock on mainline as well due to fifo fair rwsems. 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 b75d2d637..94e8fb4ef 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- diff --git a/debian/patches/features/all/rt/ping-sysrq.patch b/debian/patches/features/all/rt/ping-sysrq.patch index c4498f340..a65906c58 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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. 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 efc82ae37..f37d505cc 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Waking the thread even when no timers are scheduled is useless. 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 b0036dcd0..5a5b05fa4 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Posix timers should not send broadcast signals and kernel only signals. Prevent it. 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 e75687dfd..e6a751442 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Shorten the softirq kernel thread names because they always overflow the limited comm length, appearing as "posix_cpu_timer" CPU# times. 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 2a3ee5281..237c50adb 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz posix-cpu-timer code takes non -rt safe locks in hard irq context. Move it to a thread. @@ -44,7 +44,7 @@ Signed-off-by: Thomas Gleixner [PIDTYPE_PGID] = INIT_PID_LINK(PIDTYPE_PGID), \ --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1173,6 +1173,9 @@ struct task_struct { +@@ -1174,6 +1174,9 @@ struct task_struct { struct task_cputime cputime_expires; struct list_head cpu_timers[3]; 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 2c2d2d933..7f9ae1192 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 29268e1ff..cc3b6874d 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,6 +1,6 @@ From: Thomas Gleixner Subject: Powerpc: Use generic rwsem on RT -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 8da9314d7..644f8a7ee 100644 --- a/debian/patches/features/all/rt/powerpc-preempt-lazy-support.patch +++ b/debian/patches/features/all/rt/powerpc-preempt-lazy-support.patch @@ -1,7 +1,7 @@ From: Thomas Gleixner 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- diff --git a/debian/patches/features/all/rt/preempt-lazy-support.patch b/debian/patches/features/all/rt/preempt-lazy-support.patch index 8d4d379ca..a45b8f9df 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz It has become an obsession to mitigate the determinism vs. throughput loss of RT. Looking at the mainline semantics of preemption points @@ -147,7 +147,7 @@ Signed-off-by: Thomas Gleixner #define add_preempt_count_notrace(val) \ --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -2450,6 +2450,52 @@ static inline int test_tsk_need_resched( +@@ -2451,6 +2451,52 @@ static inline int test_tsk_need_resched( return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED)); } @@ -200,7 +200,7 @@ Signed-off-by: Thomas Gleixner static inline int restart_syscall(void) { set_tsk_thread_flag(current, TIF_SIGPENDING); -@@ -2481,11 +2527,6 @@ static inline int signal_pending_state(l +@@ -2482,11 +2528,6 @@ static inline int signal_pending_state(l return (state & TASK_INTERRUPTIBLE) || __fatal_signal_pending(p); } @@ -209,9 +209,9 @@ Signed-off-by: Thomas Gleixner - return unlikely(test_thread_flag(TIF_NEED_RESCHED)); -} - - /* - * cond_resched() and cond_resched_lock(): latency reduction via - * explicit rescheduling in places that are safe. The return + static inline bool __task_is_stopped_or_traced(struct task_struct *task) + { + if (task->state & (__TASK_STOPPED | __TASK_TRACED)) --- a/kernel/Kconfig.preempt +++ b/kernel/Kconfig.preempt @@ -6,6 +6,12 @@ config PREEMPT_RT_BASE @@ -285,7 +285,7 @@ Signed-off-by: Thomas Gleixner #endif /* CONFIG_SMP */ #if defined(CONFIG_RT_GROUP_SCHED) || (defined(CONFIG_FAIR_GROUP_SCHED) && \ -@@ -1725,6 +1767,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 @@ -295,7 +295,7 @@ Signed-off-by: Thomas Gleixner #ifdef CONFIG_SMP plist_node_init(&p->pushable_tasks, MAX_PRIO); #endif -@@ -2376,6 +2421,7 @@ void migrate_disable(void) +@@ -2387,6 +2432,7 @@ void migrate_disable(void) } preempt_disable(); @@ -303,7 +303,7 @@ Signed-off-by: Thomas Gleixner pin_current_cpu(); p->migrate_disable = 1; preempt_enable(); -@@ -2430,6 +2476,7 @@ void migrate_enable(void) +@@ -2441,6 +2487,7 @@ void migrate_enable(void) unpin_current_cpu(); preempt_enable(); @@ -311,7 +311,7 @@ Signed-off-by: Thomas Gleixner } EXPORT_SYMBOL(migrate_enable); #else -@@ -2557,6 +2604,7 @@ static void __sched __schedule(void) +@@ -2568,6 +2615,7 @@ static void __sched __schedule(void) put_prev_task(rq, prev); next = pick_next_task(rq); clear_tsk_need_resched(prev); @@ -319,7 +319,7 @@ Signed-off-by: Thomas Gleixner rq->skip_clock_update = 0; if (likely(prev != next)) { -@@ -2661,6 +2709,14 @@ asmlinkage void __sched notrace preempt_ +@@ -2672,6 +2720,14 @@ asmlinkage void __sched notrace preempt_ if (likely(!preemptible())) return; @@ -334,7 +334,7 @@ Signed-off-by: Thomas Gleixner do { add_preempt_count_notrace(PREEMPT_ACTIVE); /* -@@ -4405,7 +4461,9 @@ void init_idle(struct task_struct *idle, +@@ -4416,7 +4472,9 @@ void init_idle(struct task_struct *idle, /* Set the preempt count _outside_ the spinlocks! */ task_thread_info(idle)->preempt_count = 0; 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 d740a3c84..a48585648 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz RT needs a few preempt_disable/enable points which are not necessary otherwise. Implement variants to avoid #ifdeffery. 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 cb7acebce..1504be51d 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Subject: printk: 'force_early_printk' boot param to help with debugging From: Peter Zijlstra diff --git a/debian/patches/features/all/rt/printk-kill.patch b/debian/patches/features/all/rt/printk-kill.patch index 5ab377aec..9fef79987 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- diff --git a/debian/patches/features/all/rt/printk-rt-aware.patch b/debian/patches/features/all/rt/printk-rt-aware.patch index df2c0da66..fbfc416ba 100644 --- a/debian/patches/features/all/rt/printk-rt-aware.patch +++ b/debian/patches/features/all/rt/printk-rt-aware.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- diff --git a/debian/patches/features/all/rt/ptrace-fix-ptrace-vs-tasklist_lock-race.patch b/debian/patches/features/all/rt/ptrace-fix-ptrace-vs-tasklist_lock-race.patch new file mode 100644 index 000000000..bba0880b4 --- /dev/null +++ b/debian/patches/features/all/rt/ptrace-fix-ptrace-vs-tasklist_lock-race.patch @@ -0,0 +1,163 @@ +From 1bd263cbd3951f8f36ee6dcfe9160dafcfdd91fe Mon Sep 17 00:00:00 2001 +From: Sebastian Andrzej Siewior +Date: Thu, 29 Aug 2013 18:21:04 +0200 +Subject: [PATCH] ptrace: fix ptrace vs tasklist_lock race +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz + +As explained by Alexander Fyodorov : + +|read_lock(&tasklist_lock) in ptrace_stop() is converted to mutex on RT kernel, +|and it can remove __TASK_TRACED from task->state (by moving it to +|task->saved_state). If parent does wait() on child followed by a sys_ptrace +|call, the following race can happen: +| +|- child sets __TASK_TRACED in ptrace_stop() +|- parent does wait() which eventually calls wait_task_stopped() and returns +| child's pid +|- child blocks on read_lock(&tasklist_lock) in ptrace_stop() and moves +| __TASK_TRACED flag to saved_state +|- parent calls sys_ptrace, which calls ptrace_check_attach() and wait_task_inactive() + +The patch is based on his initial patch where an additional check is +added in case the __TASK_TRACED moved to ->saved_state. The pi_lock is +taken in case the caller is interrupted between looking into ->state and +->saved_state. + +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/sched.h | 48 +++++++++++++++++++++++++++++++++++++++++++++--- + kernel/ptrace.c | 7 ++++++- + kernel/sched/core.c | 19 ++++++++++++++++--- + 3 files changed, 67 insertions(+), 7 deletions(-) + +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -165,11 +165,8 @@ extern char ___assert_task_state[1 - 2*! + TASK_UNINTERRUPTIBLE | __TASK_STOPPED | \ + __TASK_TRACED) + +-#define task_is_traced(task) ((task->state & __TASK_TRACED) != 0) + #define task_is_stopped(task) ((task->state & __TASK_STOPPED) != 0) + #define task_is_dead(task) ((task)->exit_state != 0) +-#define task_is_stopped_or_traced(task) \ +- ((task->state & (__TASK_STOPPED | __TASK_TRACED)) != 0) + #define task_contributes_to_load(task) \ + ((task->state & TASK_UNINTERRUPTIBLE) != 0 && \ + (task->flags & PF_FROZEN) == 0) +@@ -2414,6 +2411,51 @@ static inline int need_resched(void) + return unlikely(test_thread_flag(TIF_NEED_RESCHED)); + } + ++static inline bool __task_is_stopped_or_traced(struct task_struct *task) ++{ ++ if (task->state & (__TASK_STOPPED | __TASK_TRACED)) ++ return true; ++#ifdef CONFIG_PREEMPT_RT_FULL ++ if (task->saved_state & (__TASK_STOPPED | __TASK_TRACED)) ++ return true; ++#endif ++ return false; ++} ++ ++static inline bool task_is_stopped_or_traced(struct task_struct *task) ++{ ++ bool traced_stopped; ++ ++#ifdef CONFIG_PREEMPT_RT_FULL ++ unsigned long flags; ++ ++ raw_spin_lock_irqsave(&task->pi_lock, flags); ++ traced_stopped = __task_is_stopped_or_traced(task); ++ raw_spin_unlock_irqrestore(&task->pi_lock, flags); ++#else ++ traced_stopped = __task_is_stopped_or_traced(task); ++#endif ++ return traced_stopped; ++} ++ ++static inline bool task_is_traced(struct task_struct *task) ++{ ++ bool traced = false; ++ ++ if (task->state & __TASK_TRACED) ++ return true; ++#ifdef CONFIG_PREEMPT_RT_FULL ++ /* in case the task is sleeping on tasklist_lock */ ++ raw_spin_lock_irq(&task->pi_lock); ++ if (task->state & __TASK_TRACED) ++ traced = true; ++ else if (task->saved_state & __TASK_TRACED) ++ traced = true; ++ raw_spin_unlock_irq(&task->pi_lock); ++#endif ++ return traced; ++} ++ + /* + * cond_resched() and cond_resched_lock(): latency reduction via + * explicit rescheduling in places that are safe. The return +--- a/kernel/ptrace.c ++++ b/kernel/ptrace.c +@@ -135,7 +135,12 @@ static bool ptrace_freeze_traced(struct + + spin_lock_irq(&task->sighand->siglock); + if (task_is_traced(task) && !__fatal_signal_pending(task)) { +- task->state = __TASK_TRACED; ++ raw_spin_lock_irq(&task->pi_lock); ++ if (task->state & __TASK_TRACED) ++ task->state = __TASK_TRACED; ++ else ++ task->saved_state = __TASK_TRACED; ++ raw_spin_unlock_irq(&task->pi_lock); + ret = true; + } + spin_unlock_irq(&task->sighand->siglock); +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -1024,6 +1024,18 @@ struct migration_arg { + + static int migration_cpu_stop(void *data); + ++static bool check_task_state(struct task_struct *p, long match_state) ++{ ++ bool match = false; ++ ++ raw_spin_lock_irq(&p->pi_lock); ++ if (p->state == match_state || p->saved_state == match_state) ++ match = true; ++ raw_spin_unlock_irq(&p->pi_lock); ++ ++ return match; ++} ++ + /* + * wait_task_inactive - wait for a thread to unschedule. + * +@@ -1068,7 +1080,7 @@ unsigned long wait_task_inactive(struct + * is actually now running somewhere else! + */ + while (task_running(rq, p)) { +- if (match_state && unlikely(p->state != match_state)) ++ if (match_state && !check_task_state(p, match_state)) + return 0; + cpu_relax(); + } +@@ -1083,7 +1095,8 @@ unsigned long wait_task_inactive(struct + running = task_running(rq, p); + on_rq = p->on_rq; + ncsw = 0; +- if (!match_state || p->state == match_state) ++ if (!match_state || p->state == match_state ++ || p->saved_state == match_state) + ncsw = p->nvcsw | LONG_MIN; /* sets MSB */ + task_rq_unlock(rq, p, &flags); + +@@ -1579,7 +1592,7 @@ static void try_to_wake_up_local(struct + */ + int wake_up_process(struct task_struct *p) + { +- WARN_ON(task_is_stopped_or_traced(p)); ++ WARN_ON(__task_is_stopped_or_traced(p)); + return try_to_wake_up(p, TASK_NORMAL, 0); + } + EXPORT_SYMBOL(wake_up_process); 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 6b4e94972..47cba713f 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 ee67be59e..5bddc417d 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Delegate the random insertion to the forced threaded interrupt handler. Store the return IP of the hard interrupt handler in the irq 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 b7b014a34..17ad72066 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz This uses a timer_list timer from the irq disabled guts of the idle code. Disable it for now to prevent wreckage. 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 9afee08f5..779ca20b5 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz The Linux kernel has long RCU-bh read-side critical sections that intolerably increase scheduling latency under mainline's RCU-bh rules, 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 100788a5c..1d0003423 100644 --- a/debian/patches/features/all/rt/rcu-more-swait-conversions.patch +++ b/debian/patches/features/all/rt/rcu-more-swait-conversions.patch @@ -2,7 +2,7 @@ From eddcd14571497d3d5d6ce7df0ee1bf2ecec72292 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 31 Jul 2013 19:00:35 +0200 Subject: [PATCH] rcu-more-swait-conversions.patch -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner 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 619bbd341..d2417151a 100644 --- a/debian/patches/features/all/rt/rcu-tiny-merge-bh.patch +++ b/debian/patches/features/all/rt/rcu-tiny-merge-bh.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 3ae019416..af53b1933 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 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 4a198fcc2..6f7fa5a1b 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Without this patch, ARM can not use SPLIT_PTLOCK_CPUS if PREEMPT_RT_FULL=y because vectors_user_mapping() creates a 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 c63b07b4f..cbbf99b35 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz remove timer calls (!!!) from deep within the tracing infrastructure. This was totally bogus code that can cause lockups and worse. Poll 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 35adadd1e..0af0a9678 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Frederic Weisbecker reported this warning: 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 deleted file mode 100644 index ab51f55a5..000000000 --- a/debian/patches/features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch +++ /dev/null @@ -1,47 +0,0 @@ -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.12/patches-3.12.1-rt4.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 -and can return with an incorrect result if the task it is waiting -for is blocked on a rt_spin_lock() and is waking up. - -The rt_spin_locks save the tasks state in the saved_state field -and the wait_task_interactive() must also test that state. - -Signed-off-by: Steven Rostedt -Cc: Carsten Emde -Cc: John Kacur -Cc: Peter Zijlstra -Cc: Clark Williams -Cc: stable-rt@vger.kernel.org -Link: http://lkml.kernel.org/r/20120301190345.979435764@goodmis.org -Signed-off-by: Thomas Gleixner ---- - kernel/sched/core.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - ---- a/kernel/sched/core.c -+++ b/kernel/sched/core.c -@@ -1073,7 +1073,8 @@ unsigned long wait_task_inactive(struct - * is actually now running somewhere else! - */ - while (task_running(rq, p)) { -- if (match_state && unlikely(p->state != match_state)) -+ if (match_state && unlikely(p->state != match_state) -+ && unlikely(p->saved_state != match_state)) - return 0; - cpu_relax(); - } -@@ -1088,7 +1089,8 @@ unsigned long wait_task_inactive(struct - running = task_running(rq, p); - on_rq = p->on_rq; - ncsw = 0; -- if (!match_state || p->state == match_state) -+ if (!match_state || p->state == match_state -+ || p->saved_state == match_state) - ncsw = p->nvcsw | LONG_MIN; /* sets MSB */ - task_rq_unlock(rq, p, &flags); - 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 32964f984..50c6779e5 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Map spinlocks, rwlocks, rw_semaphores and semaphores to the rt_mutex based locking functions for preempt-rt. 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 d15bd8f5a..a20691afa 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 97ba41944..337b89ece 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 dfe8f85a2..9054d7e7a 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Retry loops on RT might loop forever when the modifying side was preempted. Add cpu_chill() to replace cpu_relax(). cpu_chill() 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 12db4a9e7..cbfbbcf14 100644 --- a/debian/patches/features/all/rt/rt-local-irq-lock.patch +++ b/debian/patches/features/all/rt/rt-local-irq-lock.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 e7ec16d1f..d6a725afe 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 aabb188b1..87946cfdb 100644 --- a/debian/patches/features/all/rt/rt-preempt-base-config.patch +++ b/debian/patches/features/all/rt/rt-preempt-base-config.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 c969b5c5c..4e9972b71 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz rwlocks and rwsems on RT do not allow multiple readers. Annotate the lockdep acquire functions accordingly. @@ -14,7 +14,7 @@ Cc: stable-rt@vger.kernel.org --- a/kernel/rt.c +++ b/kernel/rt.c -@@ -215,15 +215,17 @@ int __lockfunc rt_read_trylock(rwlock_t +@@ -214,15 +214,17 @@ int __lockfunc rt_read_trylock(rwlock_t * write locked. */ migrate_disable(); @@ -37,7 +37,7 @@ Cc: stable-rt@vger.kernel.org migrate_enable(); return ret; -@@ -241,13 +243,13 @@ void __lockfunc rt_read_lock(rwlock_t *r +@@ -240,13 +242,13 @@ void __lockfunc rt_read_lock(rwlock_t *r { struct rt_mutex *lock = &rwlock->lock; @@ -54,7 +54,7 @@ Cc: stable-rt@vger.kernel.org rwlock->read_depth++; } -@@ -263,11 +265,11 @@ EXPORT_SYMBOL(rt_write_unlock); +@@ -262,11 +264,11 @@ EXPORT_SYMBOL(rt_write_unlock); void __lockfunc rt_read_unlock(rwlock_t *rwlock) { @@ -69,7 +69,7 @@ Cc: stable-rt@vger.kernel.org } EXPORT_SYMBOL(rt_read_unlock); -@@ -314,9 +316,10 @@ EXPORT_SYMBOL(rt_up_write); +@@ -313,9 +315,10 @@ EXPORT_SYMBOL(rt_up_write); void rt_up_read(struct rw_semaphore *rwsem) { @@ -82,7 +82,7 @@ Cc: stable-rt@vger.kernel.org } EXPORT_SYMBOL(rt_up_read); -@@ -355,6 +358,13 @@ void rt_down_write_nested(struct rw_sem +@@ -354,6 +357,13 @@ void rt_down_write_nested(struct rw_sem } EXPORT_SYMBOL(rt_down_write_nested); @@ -96,7 +96,7 @@ Cc: stable-rt@vger.kernel.org int rt_down_read_trylock(struct rw_semaphore *rwsem) { struct rt_mutex *lock = &rwsem->lock; -@@ -365,15 +375,16 @@ int rt_down_read_trylock(struct rw_sema +@@ -364,15 +374,16 @@ int rt_down_read_trylock(struct rw_sema * but not when read_depth == 0 which means that the rwsem is * write locked. */ @@ -118,7 +118,7 @@ Cc: stable-rt@vger.kernel.org return ret; } EXPORT_SYMBOL(rt_down_read_trylock); -@@ -382,10 +393,10 @@ static void __rt_down_read(struct rw_sem +@@ -381,10 +392,10 @@ static void __rt_down_read(struct rw_sem { struct rt_mutex *lock = &rwsem->lock; 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 a131f4245..ba059cc84 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Peter Zijlstra Cc: Peter Zijlstra @@ -15,7 +15,7 @@ Signed-off-by: Thomas Gleixner --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -2379,16 +2379,12 @@ static inline void update_migrate_disabl +@@ -2392,16 +2392,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 d8b11fec7..4f93807c7 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Peter Zijlstra Cc: Peter Zijlstra @@ -15,7 +15,7 @@ Signed-off-by: Thomas Gleixner --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -2391,7 +2391,7 @@ void migrate_disable(void) +@@ -2404,7 +2404,7 @@ void migrate_disable(void) { struct task_struct *p = current; @@ -24,7 +24,7 @@ Signed-off-by: Thomas Gleixner #ifdef CONFIG_SCHED_DEBUG p->migrate_disable_atomic++; #endif -@@ -2421,7 +2421,7 @@ void migrate_enable(void) +@@ -2434,7 +2434,7 @@ void migrate_enable(void) unsigned long flags; struct rq *rq; @@ -33,7 +33,7 @@ Signed-off-by: Thomas Gleixner #ifdef CONFIG_SCHED_DEBUG p->migrate_disable_atomic--; #endif -@@ -2441,26 +2441,21 @@ void migrate_enable(void) +@@ -2454,26 +2454,21 @@ void migrate_enable(void) preempt_disable(); 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 50d56f3d5..ea48c34ec 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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. @@ -25,7 +25,7 @@ Signed-off-by: Thomas Gleixner --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -2351,6 +2351,135 @@ static inline void schedule_debug(struct +@@ -2364,6 +2364,135 @@ static inline void schedule_debug(struct schedstat_inc(this_rq(), sched_count); } @@ -161,7 +161,7 @@ Signed-off-by: Thomas Gleixner static void put_prev_task(struct rq *rq, struct task_struct *prev) { if (prev->on_rq || rq->skip_clock_update < 0) -@@ -2450,6 +2579,8 @@ static void __sched __schedule(void) +@@ -2463,6 +2592,8 @@ static void __sched __schedule(void) smp_mb__before_spinlock(); raw_spin_lock_irq(&rq->lock); @@ -170,7 +170,7 @@ Signed-off-by: Thomas Gleixner switch_count = &prev->nivcsw; if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) { if (unlikely(signal_pending_state(prev->state, prev))) { -@@ -4332,7 +4463,7 @@ void init_idle(struct task_struct *idle, +@@ -4345,7 +4476,7 @@ void init_idle(struct task_struct *idle, #ifdef CONFIG_SMP void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) { @@ -179,7 +179,7 @@ Signed-off-by: Thomas Gleixner 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); -@@ -4402,124 +4533,6 @@ int set_cpus_allowed_ptr(struct task_str +@@ -4415,124 +4546,6 @@ int set_cpus_allowed_ptr(struct task_str } 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 dd48ddfcf..a1e264548 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Beyond the warning: 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 859549cd2..79dad31ca 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 diff --git a/debian/patches/features/all/rt/rtmutex-add-a-first-shot-of-ww_mutex.patch b/debian/patches/features/all/rt/rtmutex-add-a-first-shot-of-ww_mutex.patch index 4c4ecf381..ac2189804 100644 --- a/debian/patches/features/all/rt/rtmutex-add-a-first-shot-of-ww_mutex.patch +++ b/debian/patches/features/all/rt/rtmutex-add-a-first-shot-of-ww_mutex.patch @@ -2,7 +2,7 @@ From fbebd5600c1b72bb707ada50d040ad719656a301 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Mon, 28 Oct 2013 09:36:37 +0100 Subject: [PATCH] rtmutex: add a first shot of ww_mutex -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz lockdep says: | -------------------------------------------------------------------------- @@ -37,7 +37,7 @@ Signed-off-by: Sebastian Andrzej Siewior #include "rtmutex_common.h" -@@ -960,6 +961,39 @@ EXPORT_SYMBOL(__rt_spin_lock_init); +@@ -959,6 +960,39 @@ EXPORT_SYMBOL(__rt_spin_lock_init); #endif /* PREEMPT_RT_FULL */ @@ -77,7 +77,7 @@ Signed-off-by: Sebastian Andrzej Siewior /** * __rt_mutex_slowlock() - Perform the wait-wake-try-to-take loop * @lock: the rt_mutex to take -@@ -973,7 +1007,8 @@ EXPORT_SYMBOL(__rt_spin_lock_init); +@@ -972,7 +1006,8 @@ EXPORT_SYMBOL(__rt_spin_lock_init); static int __sched __rt_mutex_slowlock(struct rt_mutex *lock, int state, struct hrtimer_sleeper *timeout, @@ -87,7 +87,7 @@ Signed-off-by: Sebastian Andrzej Siewior { int ret = 0; -@@ -996,6 +1031,12 @@ static int __sched +@@ -995,6 +1030,12 @@ static int __sched break; } @@ -100,7 +100,7 @@ Signed-off-by: Sebastian Andrzej Siewior raw_spin_unlock(&lock->wait_lock); debug_rt_mutex_print_deadlock(waiter); -@@ -1009,13 +1050,89 @@ static int __sched +@@ -1008,13 +1049,89 @@ static int __sched return ret; } @@ -191,7 +191,7 @@ Signed-off-by: Sebastian Andrzej Siewior { struct rt_mutex_waiter waiter; int ret = 0; -@@ -1027,6 +1144,8 @@ rt_mutex_slowlock(struct rt_mutex *lock, +@@ -1026,6 +1143,8 @@ rt_mutex_slowlock(struct rt_mutex *lock, /* Try to acquire the lock again: */ if (try_to_take_rt_mutex(lock, current, NULL)) { @@ -200,7 +200,7 @@ Signed-off-by: Sebastian Andrzej Siewior raw_spin_unlock(&lock->wait_lock); return 0; } -@@ -1043,12 +1162,14 @@ rt_mutex_slowlock(struct rt_mutex *lock, +@@ -1042,12 +1161,14 @@ rt_mutex_slowlock(struct rt_mutex *lock, ret = task_blocks_on_rt_mutex(lock, &waiter, current, detect_deadlock); if (likely(!ret)) @@ -216,7 +216,7 @@ Signed-off-by: Sebastian Andrzej Siewior /* * try_to_take_rt_mutex() sets the waiter bit -@@ -1127,30 +1248,33 @@ rt_mutex_slowunlock(struct rt_mutex *loc +@@ -1126,30 +1247,33 @@ rt_mutex_slowunlock(struct rt_mutex *loc */ static inline int rt_mutex_fastlock(struct rt_mutex *lock, int state, @@ -255,7 +255,7 @@ Signed-off-by: Sebastian Andrzej Siewior } static inline int -@@ -1183,7 +1307,7 @@ void __sched rt_mutex_lock(struct rt_mut +@@ -1182,7 +1306,7 @@ void __sched rt_mutex_lock(struct rt_mut { might_sleep(); @@ -264,7 +264,7 @@ Signed-off-by: Sebastian Andrzej Siewior } EXPORT_SYMBOL_GPL(rt_mutex_lock); -@@ -1204,7 +1328,7 @@ int __sched rt_mutex_lock_interruptible( +@@ -1203,7 +1327,7 @@ int __sched rt_mutex_lock_interruptible( might_sleep(); return rt_mutex_fastlock(lock, TASK_INTERRUPTIBLE, @@ -273,7 +273,7 @@ Signed-off-by: Sebastian Andrzej Siewior } EXPORT_SYMBOL_GPL(rt_mutex_lock_interruptible); -@@ -1225,7 +1349,7 @@ int __sched rt_mutex_lock_killable(struc +@@ -1224,7 +1348,7 @@ int __sched rt_mutex_lock_killable(struc might_sleep(); return rt_mutex_fastlock(lock, TASK_KILLABLE, @@ -282,7 +282,7 @@ Signed-off-by: Sebastian Andrzej Siewior } EXPORT_SYMBOL_GPL(rt_mutex_lock_killable); -@@ -1251,7 +1375,7 @@ rt_mutex_timed_lock(struct rt_mutex *loc +@@ -1250,7 +1374,7 @@ rt_mutex_timed_lock(struct rt_mutex *loc might_sleep(); return rt_mutex_timed_fastlock(lock, TASK_INTERRUPTIBLE, timeout, @@ -291,7 +291,7 @@ Signed-off-by: Sebastian Andrzej Siewior } EXPORT_SYMBOL_GPL(rt_mutex_timed_lock); -@@ -1475,7 +1599,7 @@ int rt_mutex_finish_proxy_lock(struct rt +@@ -1474,7 +1598,7 @@ int rt_mutex_finish_proxy_lock(struct rt set_current_state(TASK_INTERRUPTIBLE); @@ -300,7 +300,7 @@ Signed-off-by: Sebastian Andrzej Siewior set_current_state(TASK_RUNNING); -@@ -1492,3 +1616,88 @@ int rt_mutex_finish_proxy_lock(struct rt +@@ -1491,3 +1615,88 @@ int rt_mutex_finish_proxy_lock(struct rt return ret; } 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 125a0b434..14b33bc19 100644 --- a/debian/patches/features/all/rt/rtmutex-avoid-include-hell.patch +++ b/debian/patches/features/all/rt/rtmutex-avoid-include-hell.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 ec707700f..4edf097d2 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- diff --git a/debian/patches/features/all/rt/rtmutex-lock-killable.patch b/debian/patches/features/all/rt/rtmutex-lock-killable.patch index 9576abd5f..9650fbe74 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- diff --git a/debian/patches/features/all/rt/rtmutex-use-a-trylock-for-waiter-lock-in-trylock.patch b/debian/patches/features/all/rt/rtmutex-use-a-trylock-for-waiter-lock-in-trylock.patch index 1de0f5427..d17586faf 100644 --- a/debian/patches/features/all/rt/rtmutex-use-a-trylock-for-waiter-lock-in-trylock.patch +++ b/debian/patches/features/all/rt/rtmutex-use-a-trylock-for-waiter-lock-in-trylock.patch @@ -2,7 +2,7 @@ From c290567d076d3b59d30c6778bc3f2e401d8289fe Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 15 Nov 2013 15:46:50 +0100 Subject: [PATCH] rtmutex: use a trylock for waiter lock in trylock -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Mike Galbraith captered the following: | >#11 [ffff88017b243e90] _raw_spin_lock at ffffffff815d2596 diff --git a/debian/patches/features/all/rt/rtmutex-ww-bad-return-value-in-__mutex_lock_check_stamp.patch b/debian/patches/features/all/rt/rtmutex-ww-bad-return-value-in-__mutex_lock_check_stamp.patch new file mode 100644 index 000000000..5c0f27e9d --- /dev/null +++ b/debian/patches/features/all/rt/rtmutex-ww-bad-return-value-in-__mutex_lock_check_stamp.patch @@ -0,0 +1,28 @@ +From 9fe76c849612387dd1991acfcc7dc9527b390caf Mon Sep 17 00:00:00 2001 +From: Nicholas Mc Guire +Date: Sun, 15 Dec 2013 15:40:47 +0100 +Subject: [PATCH] bad return value in __mutex_lock_check_stamp +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz + +Bad return value in _mutex_lock_check_stamp - this problem only would show +up with 3.12.1 rt4 applied but CONFIG_PREEMPT_RT_FULL not enabled +currently it would be returning what ever vprintk_emit ended up with +(atleast on x86), which probably is not the intended behavior. Added a +return 0; as in the case with CONFIG_PREEMPT_RT_FULL enabled. + +Signed-off-by: Nicholas Mc Guire +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/rtmutex.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/kernel/rtmutex.c ++++ b/kernel/rtmutex.c +@@ -989,6 +989,7 @@ static inline int __sched + __mutex_lock_check_stamp(struct rt_mutex *lock, struct ww_acquire_ctx *ctx) + { + BUG(); ++ return 0; + } + + #endif 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 8b70962bb..6a8b3b439 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 3cec35a25..e6d24329a 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz If the policy and priority remain unchanged a possible modification of sched_reset_on_fork gets lost in the early exit path. 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 d2d8d9ca5..cbcac2f23 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz might sleep can tell us where interrupts have been disabled, but we have no idea what disabled preemption. Add some debug infrastructure. @@ -14,7 +14,7 @@ Signed-off-by: Thomas Gleixner --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1317,6 +1317,9 @@ struct task_struct { +@@ -1321,6 +1321,9 @@ struct task_struct { struct mutex perf_event_mutex; struct list_head perf_event_list; #endif 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 48265257b..8a01bf1e2 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- @@ -10,7 +10,7 @@ Signed-off-by: Thomas Gleixner --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -1234,6 +1234,12 @@ static int select_fallback_rq(int cpu, s +@@ -1247,6 +1247,12 @@ static int select_fallback_rq(int cpu, s } } diff --git a/debian/patches/features/all/rt/sched-cond-resched.patch b/debian/patches/features/all/rt/sched-cond-resched.patch index d8a877978..7f5e21028 100644 --- a/debian/patches/features/all/rt/sched-cond-resched.patch +++ b/debian/patches/features/all/rt/sched-cond-resched.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- @@ -10,7 +10,7 @@ Signed-off-by: Thomas Gleixner --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -3890,9 +3890,17 @@ static inline int should_resched(void) +@@ -3903,9 +3903,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 05c7d789b..206d87088 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 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 c2bd8090e..66ae6ad1a 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- @@ -11,7 +11,7 @@ Signed-off-by: Thomas Gleixner --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1429,6 +1429,9 @@ struct task_struct { +@@ -1430,6 +1430,9 @@ struct task_struct { unsigned int sequential_io; unsigned int sequential_io_avg; #endif @@ -21,7 +21,7 @@ Signed-off-by: Thomas Gleixner }; /* Future-safe accessor for struct task_struct's cpus_allowed. */ -@@ -1592,6 +1595,15 @@ extern struct pid *cad_pid; +@@ -1593,6 +1596,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) @@ -37,7 +37,7 @@ Signed-off-by: Thomas Gleixner extern void __put_task_struct(struct task_struct *t); static inline void put_task_struct(struct task_struct *t) -@@ -1599,6 +1611,7 @@ static inline void put_task_struct(struc +@@ -1600,6 +1612,7 @@ static inline void put_task_struct(struc if (atomic_dec_and_test(&t->usage)) __put_task_struct(t); } 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 c0e2136c7..fc2352cc0 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Carsten reported problems when running: 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 b921a4e0f..933f6749e 100644 --- a/debian/patches/features/all/rt/sched-disable-ttwu-queue.patch +++ b/debian/patches/features/all/rt/sched-disable-ttwu-queue.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 fd6e0994c..5e3ccc3af 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz The following scenario does not work correctly: 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 a0fa08f98..6b954dfd0 100644 --- a/debian/patches/features/all/rt/sched-limit-nr-migrate.patch +++ b/debian/patches/features/all/rt/sched-limit-nr-migrate.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 a5f0edaa7..0dcefa405 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- @@ -34,7 +34,7 @@ Signed-off-by: Thomas Gleixner /* Internal to kernel */ --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -6667,7 +6667,8 @@ void __init sched_init(void) +@@ -6680,7 +6680,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 a55c3cdd8..a30e395e6 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- @@ -30,7 +30,7 @@ Signed-off-by: Thomas Gleixner # define preempt_enable_rt() preempt_enable() --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1062,6 +1062,7 @@ struct task_struct { +@@ -1063,6 +1063,7 @@ struct task_struct { #endif unsigned int policy; @@ -38,7 +38,7 @@ Signed-off-by: Thomas Gleixner int nr_cpus_allowed; cpumask_t cpus_allowed; -@@ -1435,9 +1436,6 @@ struct task_struct { +@@ -1436,9 +1437,6 @@ struct task_struct { #endif }; @@ -48,7 +48,7 @@ Signed-off-by: Thomas Gleixner #ifdef CONFIG_NUMA_BALANCING extern void task_numa_fault(int node, int pages, bool migrated); extern void set_numabalancing_state(bool enabled); -@@ -2624,6 +2622,15 @@ static inline void set_task_cpu(struct t +@@ -2734,6 +2732,15 @@ static inline void set_task_cpu(struct t #endif /* CONFIG_SMP */ @@ -66,7 +66,7 @@ Signed-off-by: Thomas Gleixner --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -4332,11 +4332,12 @@ void init_idle(struct task_struct *idle, +@@ -4345,11 +4345,12 @@ void init_idle(struct task_struct *idle, #ifdef CONFIG_SMP void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) { @@ -83,7 +83,7 @@ Signed-off-by: Thomas Gleixner } /* -@@ -4382,7 +4383,7 @@ int set_cpus_allowed_ptr(struct task_str +@@ -4395,7 +4396,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 */ @@ -92,7 +92,7 @@ Signed-off-by: Thomas Gleixner goto out; dest_cpu = cpumask_any_and(cpu_active_mask, new_mask); -@@ -4401,6 +4402,83 @@ int set_cpus_allowed_ptr(struct task_str +@@ -4414,6 +4415,83 @@ int set_cpus_allowed_ptr(struct task_str } EXPORT_SYMBOL_GPL(set_cpus_allowed_ptr); diff --git a/debian/patches/features/all/rt/sched-mmdrop-delayed.patch b/debian/patches/features/all/rt/sched-mmdrop-delayed.patch index 0a10e288d..7e90123f1 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Needs thread context (pgd_lock) -> ifdeffed. workqueues wont work with RT @@ -36,7 +36,7 @@ Signed-off-by: Thomas Gleixner /* first nid will either be a valid NID or one of these values */ --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -2128,12 +2128,24 @@ extern struct mm_struct * mm_alloc(void) +@@ -2129,12 +2129,24 @@ extern struct mm_struct * mm_alloc(void) /* mmdrop drops the mm and the page tables */ extern void __mmdrop(struct mm_struct *); @@ -85,7 +85,7 @@ Signed-off-by: Thomas Gleixner */ --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -1892,8 +1892,12 @@ static void finish_task_switch(struct rq +@@ -1905,8 +1905,12 @@ static void finish_task_switch(struct rq finish_arch_post_lock_switch(); fire_sched_in_preempt_notifiers(current); @@ -99,7 +99,7 @@ Signed-off-by: Thomas Gleixner if (unlikely(prev_state == TASK_DEAD)) { /* * Remove function-return probe instances associated with this -@@ -4424,6 +4428,8 @@ static int migration_cpu_stop(void *data +@@ -4437,6 +4441,8 @@ static int migration_cpu_stop(void *data #ifdef CONFIG_HOTPLUG_CPU @@ -108,7 +108,7 @@ Signed-off-by: Thomas Gleixner /* * Ensures that the idle task is using init_mm right before its cpu goes * offline. -@@ -4436,7 +4442,12 @@ void idle_task_exit(void) +@@ -4449,7 +4455,12 @@ void idle_task_exit(void) if (mm != &init_mm) switch_mm(mm, &init_mm, current); @@ -122,7 +122,7 @@ Signed-off-by: Thomas Gleixner } /* -@@ -4760,6 +4771,10 @@ migration_call(struct notifier_block *nf +@@ -4773,6 +4784,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 be43fbda0..6dc026bb8 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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. @@ -23,7 +23,7 @@ Signed-off-by: Thomas Gleixner --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -4479,12 +4479,14 @@ void migrate_enable(void) +@@ -4492,12 +4492,14 @@ void migrate_enable(void) */ rq = this_rq(); raw_spin_lock_irqsave(&rq->lock, flags); 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 800d632a8..53be88433 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- @@ -12,7 +12,7 @@ Signed-off-by: Thomas Gleixner --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1019,6 +1019,7 @@ enum perf_event_task_context { +@@ -1020,6 +1020,7 @@ enum perf_event_task_context { struct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ @@ -20,7 +20,7 @@ Signed-off-by: Thomas Gleixner void *stack; atomic_t usage; unsigned int flags; /* per process flags, defined below */ -@@ -2014,6 +2015,7 @@ extern void xtime_update(unsigned long t +@@ -2015,6 +2016,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,7 +30,7 @@ Signed-off-by: Thomas Gleixner extern void kick_process(struct task_struct *tsk); --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -1491,8 +1491,25 @@ try_to_wake_up(struct task_struct *p, un +@@ -1504,8 +1504,25 @@ try_to_wake_up(struct task_struct *p, un */ smp_mb__before_spinlock(); raw_spin_lock_irqsave(&p->pi_lock, flags); @@ -57,7 +57,7 @@ Signed-off-by: Thomas Gleixner success = 1; /* we're going to change ->state */ cpu = task_cpu(p); -@@ -1589,6 +1606,18 @@ int wake_up_process(struct task_struct * +@@ -1602,6 +1619,18 @@ int wake_up_process(struct task_struct * } EXPORT_SYMBOL(wake_up_process); 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 422bf5132..5e4bc548e 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Subject: sched: teach migrate_disable about atomic contexts From: Peter Zijlstra @@ -40,7 +40,7 @@ Link: http://lkml.kernel.org/n/tip-wbot4vsmwhi8vmbf83hsclk6@git.kernel.org --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1064,6 +1064,9 @@ struct task_struct { +@@ -1065,6 +1065,9 @@ struct task_struct { unsigned int policy; #ifdef CONFIG_PREEMPT_RT_FULL int migrate_disable; @@ -52,7 +52,7 @@ Link: http://lkml.kernel.org/n/tip-wbot4vsmwhi8vmbf83hsclk6@git.kernel.org cpumask_t cpus_allowed; --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -4410,6 +4410,17 @@ void migrate_disable(void) +@@ -4423,6 +4423,17 @@ void migrate_disable(void) unsigned long flags; struct rq *rq; @@ -70,7 +70,7 @@ Link: http://lkml.kernel.org/n/tip-wbot4vsmwhi8vmbf83hsclk6@git.kernel.org preempt_disable(); if (p->migrate_disable) { p->migrate_disable++; -@@ -4458,6 +4469,16 @@ void migrate_enable(void) +@@ -4471,6 +4482,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 8ec9e1824..13f92c2e7 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 @@ -21,7 +21,7 @@ Cc: stable-rt@vger.kernel.org --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -1498,8 +1498,10 @@ try_to_wake_up(struct task_struct *p, un +@@ -1511,8 +1511,10 @@ try_to_wake_up(struct task_struct *p, un * if the wakeup condition is true. */ if (!(wake_flags & WF_LOCK_SLEEPER)) { 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 d496321a2..2bbacaabb 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 @@ -26,7 +26,7 @@ Signed-off-by: Sebastian Andrzej Siewior --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -2462,8 +2462,10 @@ static void __sched __schedule(void) +@@ -2475,8 +2475,10 @@ static void __sched __schedule(void) * 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 af08bf2b2..85bd9b76b 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 9612bbff1..6560d84d0 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz RT triggers the following: diff --git a/debian/patches/features/all/rt/seqlock-consolidate-spin_lock-unlock-waiting-with-sp.patch b/debian/patches/features/all/rt/seqlock-consolidate-spin_lock-unlock-waiting-with-sp.patch new file mode 100644 index 000000000..e8b880dda --- /dev/null +++ b/debian/patches/features/all/rt/seqlock-consolidate-spin_lock-unlock-waiting-with-sp.patch @@ -0,0 +1,35 @@ +From a6fd9edd1abb27cccce4016ec60cc643c8dba760 Mon Sep 17 00:00:00 2001 +From: Nicholas Mc Guire +Date: Sun, 1 Dec 2013 23:03:52 -0500 +Subject: [PATCH] seqlock: consolidate spin_lock/unlock waiting with + spin_unlock_wait +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz + +since c2f21ce ("locking: Implement new raw_spinlock") +include/linux/spinlock.h includes spin_unlock_wait() to wait for a concurren +holder of a lock. this patch just moves over to that API. spin_unlock_wait +covers both raw_spinlock_t and spinlock_t so it should be safe here as well. +the added rt-variant of read_seqbegin in include/linux/seqlock.h that is being +modified, was introduced by patch: + seqlock-prevent-rt-starvation.patch + +behavior should be unchanged. + +Signed-off-by: Nicholas Mc Guire +Signed-off-by: Sebastian Andrzej Siewior +--- + include/linux/seqlock.h | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/include/linux/seqlock.h ++++ b/include/linux/seqlock.h +@@ -236,8 +236,7 @@ static inline unsigned read_seqbegin(seq + * Take the lock and let the writer proceed (i.e. evtl + * boost it), otherwise we could loop here forever. + */ +- spin_lock(&sl->lock); +- spin_unlock(&sl->lock); ++ spin_unlock_wait(&sl->lock); + goto repeat; + } + return ret; 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 29697074d..a0d9fac77 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz If a low prio writer gets preempted while holding the seqlock write locked, a high prio reader spins forever on RT. 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 f2a6b93db..443e2cb38 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 b5c3df32c..05d41e38d 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 c34c10ab8..22a68d23c 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz To avoid allocation allow rt tasks to cache one sigqueue struct in task struct. @@ -18,7 +18,7 @@ Signed-off-by: Thomas Gleixner --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1203,6 +1203,7 @@ struct task_struct { +@@ -1204,6 +1204,7 @@ struct task_struct { /* signal handlers */ struct signal_struct *signal; struct sighand_struct *sighand; diff --git a/debian/patches/features/all/rt/simple-wait-rename-and-export-the-equivalent-of-wait.patch b/debian/patches/features/all/rt/simple-wait-rename-and-export-the-equivalent-of-wait.patch index 73b6936e1..be4acb072 100644 --- a/debian/patches/features/all/rt/simple-wait-rename-and-export-the-equivalent-of-wait.patch +++ b/debian/patches/features/all/rt/simple-wait-rename-and-export-the-equivalent-of-wait.patch @@ -3,7 +3,7 @@ From: Paul Gortmaker Date: Tue, 27 Aug 2013 14:20:26 -0400 Subject: [PATCH] simple-wait: rename and export the equivalent of waitqueue_active() -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz The function "swait_head_has_waiters()" was internalized into wait-simple.c but it parallels the waitqueue_active of normal diff --git a/debian/patches/features/all/rt/skbufhead-raw-lock.patch b/debian/patches/features/all/rt/skbufhead-raw-lock.patch index d087121cc..e290376d1 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- @@ -30,7 +30,7 @@ Signed-off-by: Thomas Gleixner }; struct sk_buff; -@@ -1082,6 +1083,12 @@ static inline void skb_queue_head_init(s +@@ -1073,6 +1074,12 @@ static inline void skb_queue_head_init(s __skb_queue_head_init(list); } @@ -62,7 +62,7 @@ Signed-off-by: Thomas Gleixner #endif } -@@ -3708,7 +3708,7 @@ static void flush_backlog(void *arg) +@@ -3704,7 +3704,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); @@ -71,7 +71,7 @@ Signed-off-by: Thomas Gleixner input_queue_head_incr(sd); } } -@@ -3717,10 +3717,13 @@ static void flush_backlog(void *arg) +@@ -3713,10 +3713,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); @@ -86,7 +86,7 @@ Signed-off-by: Thomas Gleixner } static int napi_gro_complete(struct sk_buff *skb) -@@ -4278,10 +4281,17 @@ static void net_rx_action(struct softirq +@@ -4274,10 +4277,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; @@ -104,7 +104,7 @@ Signed-off-by: Thomas Gleixner while (!list_empty(&sd->poll_list)) { struct napi_struct *n; int work, weight; -@@ -6410,6 +6420,9 @@ static int dev_cpu_callback(struct notif +@@ -6406,6 +6416,9 @@ static int dev_cpu_callback(struct notif netif_rx(skb); input_queue_head_incr(oldsd); } @@ -114,7 +114,7 @@ Signed-off-by: Thomas Gleixner return NOTIFY_OK; } -@@ -6721,8 +6734,9 @@ static int __init net_dev_init(void) +@@ -6717,8 +6730,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 85b58deb2..c6926bcc0 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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. 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 586e8d950..0f0220220 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz It seems that allocation of plenty objects causes latency on ARM since that code can not be preempted 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 c549a5d98..6ebd1c6da 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 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 05f950fc3..cdab9d8ff 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 16ba7f563..bdebde09b 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz I discovered this bug when booting 3.4-rt on my powerpc box. It crashed with the following report: diff --git a/debian/patches/features/all/rt/softirq-local-lock.patch b/debian/patches/features/all/rt/softirq-local-lock.patch index 6f325a70b..9b66476d2 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- @@ -83,7 +83,7 @@ Signed-off-by: Thomas Gleixner * Are we in NMI context? --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1438,6 +1438,7 @@ struct task_struct { +@@ -1439,6 +1439,7 @@ struct task_struct { #endif #ifdef CONFIG_PREEMPT_RT_BASE struct rcu_head put_rcu; diff --git a/debian/patches/features/all/rt/softirq-make-fifo.patch b/debian/patches/features/all/rt/softirq-make-fifo.patch index a6cb41ef2..66f3e9b7d 100644 --- a/debian/patches/features/all/rt/softirq-make-fifo.patch +++ b/debian/patches/features/all/rt/softirq-make-fifo.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- diff --git a/debian/patches/features/all/rt/softirq-make-migrate-disable-enable-conditioned-on-softirq_n.patch b/debian/patches/features/all/rt/softirq-make-migrate-disable-enable-conditioned-on-softirq_n.patch new file mode 100644 index 000000000..352959879 --- /dev/null +++ b/debian/patches/features/all/rt/softirq-make-migrate-disable-enable-conditioned-on-softirq_n.patch @@ -0,0 +1,67 @@ +From 6661fe8f9906aa0eded36e7c9e74d39e0383f6b4 Mon Sep 17 00:00:00 2001 +From: Nicholas Mc Guire +Date: Fri, 6 Dec 2013 00:42:22 +0100 +Subject: [PATCH] softirq: make migrate disable/enable conditioned on softirq_nestcnt + transition +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz + +This patch removes the recursive calls to migrate_disable/enable in +local_bh_disable/enable + +the softirq-local-lock.patch introduces local_bh_disable/enable wich +decrements/increments the current->softirq_nestcnt and disable/enables +migration as well. as softirq_nestcnt (include/linux/sched.h conditioned +on CONFIG_PREEMPT_RT_BASE) already is tracking the nesting level of the +recursive calls to local_bh_disable/enable (all in kernel/softirq.c) - no +need to do it twice. + +migrate_disable/enable thus can be conditionsed on softirq_nestcnt making +a transition from 0-1 to disable migration and 1-0 to re-enable it. + +No change of functional behavior, this does noticably reduce the observed +nesting level of migrate_disable/enable + +Signed-off-by: Nicholas Mc Guire +Reviewed-by: Steven Rostedt +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/softirq.c | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +--- a/kernel/softirq.c ++++ b/kernel/softirq.c +@@ -569,8 +569,8 @@ static void do_current_softirqs(int need + + void local_bh_disable(void) + { +- migrate_disable(); +- current->softirq_nestcnt++; ++ if (++current->softirq_nestcnt == 1) ++ migrate_disable(); + } + EXPORT_SYMBOL(local_bh_disable); + +@@ -584,8 +584,8 @@ void local_bh_enable(void) + do_current_softirqs(1); + local_irq_enable(); + +- current->softirq_nestcnt--; +- migrate_enable(); ++ if (--current->softirq_nestcnt == 0) ++ migrate_enable(); + } + EXPORT_SYMBOL(local_bh_enable); + +@@ -597,8 +597,10 @@ EXPORT_SYMBOL(local_bh_enable_ip); + + void _local_bh_enable(void) + { +- current->softirq_nestcnt--; +- migrate_enable(); ++ if (WARN_ON(current->softirq_nestcnt == 0)) ++ return; ++ if (--current->softirq_nestcnt == 0) ++ migrate_enable(); + } + EXPORT_SYMBOL(_local_bh_enable); + 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 6ea25003e..73cde7357 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Avoid the percpu softirq_runner pointer magic by using a task flag. @@ -13,7 +13,7 @@ Signed-off-by: Thomas Gleixner --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1662,6 +1662,7 @@ extern void thread_group_cputime_adjuste +@@ -1663,6 +1663,7 @@ extern void thread_group_cputime_adjuste /* * Per process flags */ 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 640f90fa3..ed9681d95 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz raise_softirq_irqoff() disables interrupts and wakes the softirq daemon, but after reenabling interrupts there is no preemption check, @@ -96,7 +96,7 @@ Cc: stable-rt@vger.kernel.org --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -2142,6 +2142,7 @@ static inline void __netif_reschedule(st +@@ -2138,6 +2138,7 @@ static inline void __netif_reschedule(st sd->output_queue_tailp = &q->next_sched; raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_restore(flags); @@ -104,7 +104,7 @@ Cc: stable-rt@vger.kernel.org } void __netif_schedule(struct Qdisc *q) -@@ -2163,6 +2164,7 @@ void dev_kfree_skb_irq(struct sk_buff *s +@@ -2159,6 +2160,7 @@ void dev_kfree_skb_irq(struct sk_buff *s sd->completion_queue = skb; raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_restore(flags); @@ -112,7 +112,7 @@ Cc: stable-rt@vger.kernel.org } } EXPORT_SYMBOL(dev_kfree_skb_irq); -@@ -3212,6 +3214,7 @@ static int enqueue_to_backlog(struct sk_ +@@ -3208,6 +3210,7 @@ static int enqueue_to_backlog(struct sk_ rps_unlock(sd); local_irq_restore(flags); @@ -120,7 +120,7 @@ Cc: stable-rt@vger.kernel.org atomic_long_inc(&skb->dev->rx_dropped); kfree_skb(skb); -@@ -4114,6 +4117,7 @@ static void net_rps_action_and_irq_enabl +@@ -4110,6 +4113,7 @@ static void net_rps_action_and_irq_enabl } else #endif local_irq_enable(); @@ -128,7 +128,7 @@ Cc: stable-rt@vger.kernel.org } static int process_backlog(struct napi_struct *napi, int quota) -@@ -4186,6 +4190,7 @@ void __napi_schedule(struct napi_struct +@@ -4182,6 +4186,7 @@ void __napi_schedule(struct napi_struct local_irq_save(flags); ____napi_schedule(&__get_cpu_var(softnet_data), n); local_irq_restore(flags); @@ -136,7 +136,7 @@ Cc: stable-rt@vger.kernel.org } EXPORT_SYMBOL(__napi_schedule); -@@ -6444,6 +6449,7 @@ static int dev_cpu_callback(struct notif +@@ -6440,6 +6445,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 16b9c8218..2354f0617 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner 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 12c982e49..53132a626 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Split out the inner handling function, so RT can reuse it. diff --git a/debian/patches/features/all/rt/softirq-split-locks.patch b/debian/patches/features/all/rt/softirq-split-locks.patch index 2b8a0e343..1c9d67336 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 @@ -31,7 +31,7 @@ Signed-off-by: Thomas Gleixner --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1440,6 +1440,7 @@ struct task_struct { +@@ -1441,6 +1441,7 @@ struct task_struct { #ifdef CONFIG_PREEMPT_RT_BASE struct rcu_head put_rcu; int softirq_nestcnt; 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 f6123433c..b8ed4b543 100644 --- a/debian/patches/features/all/rt/softirq-split-out-code.patch +++ b/debian/patches/features/all/rt/softirq-split-out-code.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 aaf79fba9..2a061a3e6 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- @@ -21,7 +21,7 @@ Signed-off-by: Thomas Gleixner extern void __raise_softirq_irqoff(unsigned int nr); --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -3272,7 +3272,7 @@ int netif_rx_ni(struct sk_buff *skb) +@@ -3268,7 +3268,7 @@ int netif_rx_ni(struct sk_buff *skb) preempt_disable(); err = netif_rx(skb); if (local_softirq_pending()) diff --git a/debian/patches/features/all/rt/sparc-provide-EARLY_PRINTK-for-SPARC.patch b/debian/patches/features/all/rt/sparc-provide-EARLY_PRINTK-for-SPARC.patch index ff67bb908..e678a3b3d 100644 --- a/debian/patches/features/all/rt/sparc-provide-EARLY_PRINTK-for-SPARC.patch +++ b/debian/patches/features/all/rt/sparc-provide-EARLY_PRINTK-for-SPARC.patch @@ -2,7 +2,7 @@ From 11fab744e7819cb63788ceb271074524c214a2c4 Mon Sep 17 00:00:00 2001 From: Kirill Tkhai Date: Fri, 30 Aug 2013 21:16:08 +0400 Subject: [PATCH] sparc: provide EARLY_PRINTK for SPARC -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz sparc does not have CONFIG_EARLY_PRINTK option. 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 6f60e71d9..b2f3b17ea 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 6a14c6497..6045767a5 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 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 ee2026b0a..dd70c351e 100644 --- a/debian/patches/features/all/rt/stomp-machine-raw-lock.patch +++ b/debian/patches/features/all/rt/stomp-machine-raw-lock.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 f577d1b73..b8519c31a 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Instead of playing with non-preemption, introduce explicit startup serialization. This is more robust and cleaner as 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 bc1687cf6..5062170ba 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz timekeeping suspend/resume calls read_persistant_clock() which takes rtc_lock. That results in might sleep warnings because at that point 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 6f0582d18..e38287cbe 100644 --- a/debian/patches/features/all/rt/sysctl-include-atomic-h.patch +++ b/debian/patches/features/all/rt/sysctl-include-atomic-h.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- diff --git a/debian/patches/features/all/rt/sysfs-realtime-entry.patch b/debian/patches/features/all/rt/sysfs-realtime-entry.patch index b47891e93..a5a563c42 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Add a /sys/kernel entry to indicate that the kernel is a realtime kernel. 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 7dc75d8b6..d47c5b0df 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz When CONFIG_PREEMPT_RT_FULL is enabled, tasklets run as threads, and spinlocks turn are mutexes. But this can cause issues with 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 8b885c29d..edc0b5536 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz This fixes the following build error for the preempt-rt kernel. 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 02debad1f..84ef59d53 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 8e441a07a..c3f69e8ba 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz People were complaining about broken balancing with the recent -rt series. 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 b4d5d508a..b3dc5a9d1 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz If hrtimer_try_to_cancel() requires a retry, then depending on the priority setting te retry loop might prevent timer callback completion 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 194db27c3..e0f7ac28a 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 9e5cdde30..01e8a938f 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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(). 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 c9015706a..99dacb997 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner 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 cfbc7f772..1c617a1fd 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz wake_up should do nothing on the nort, so we should use wakeup_timer_waiters, also fix a spell mistake. 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 af68bb542..aa8e4b13f 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 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 448b42d7f..38c44bccd 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz The preempt_schedule() uses the preempt_disable_notrace() version because it can cause infinite recursion by the function tracer as 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 c9b1092bb..384e9d370 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Sebastian Andrzej Siewior --- 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 2eb8e83ad..afd9f0c95 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz 1)enqueue_to_backlog() (called from netif_rx) should be bind to a particluar CPU. This can be achieved by @@ -38,7 +38,7 @@ Signed-off-by: Thomas Gleixner --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -3243,7 +3243,7 @@ int netif_rx(struct sk_buff *skb) +@@ -3239,7 +3239,7 @@ int netif_rx(struct sk_buff *skb) struct rps_dev_flow voidflow, *rflow = &voidflow; int cpu; @@ -47,7 +47,7 @@ Signed-off-by: Thomas Gleixner rcu_read_lock(); cpu = get_rps_cpu(skb->dev, skb, &rflow); -@@ -3253,13 +3253,13 @@ int netif_rx(struct sk_buff *skb) +@@ -3249,13 +3249,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 580a6025b..d4e0f536e 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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. 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 b5500fcaf..23da5d4de 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz [ tglx: Now that irqf_disabled is dead we should kill that ] diff --git a/debian/patches/features/all/rt/usb-use-_nort-in-giveback.patch b/debian/patches/features/all/rt/usb-use-_nort-in-giveback.patch index 95070ae22..63bb1b6bf 100644 --- a/debian/patches/features/all/rt/usb-use-_nort-in-giveback.patch +++ b/debian/patches/features/all/rt/usb-use-_nort-in-giveback.patch @@ -2,7 +2,7 @@ From 7b1bab1c264fba44ef4c582d1acd9d8a2ef45e2a Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior Date: Fri, 8 Nov 2013 17:34:54 +0100 Subject: [PATCH] usb: use _nort in giveback -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Since commit 94dfd7ed ("USB: HCD: support giveback of URB in tasklet context") I see 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 a006d44b1..7ddf6c65b 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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. 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 10e550111..14105c056 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- @@ -24,7 +24,7 @@ Signed-off-by: Thomas Gleixner #else --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1155,7 +1155,8 @@ struct task_struct { +@@ -1159,7 +1159,8 @@ struct task_struct { struct cputime prev_cputime; #endif #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN diff --git a/debian/patches/features/all/rt/wait-simple-implementation.patch b/debian/patches/features/all/rt/wait-simple-implementation.patch index b336c7192..dba743eaf 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz smp_mb() added by Steven Rostedt to fix a race condition with swait wakeups vs adding items to the list. 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 9ae6e67df..fd820b6b9 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- diff --git a/debian/patches/features/all/rt/wait.h-include-atomic.h.patch b/debian/patches/features/all/rt/wait.h-include-atomic.h.patch index 83cd21969..ce43c9374 100644 --- a/debian/patches/features/all/rt/wait.h-include-atomic.h.patch +++ b/debian/patches/features/all/rt/wait.h-include-atomic.h.patch @@ -5,7 +5,7 @@ Subject: [PATCH] wait.h: include atomic.h 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz | CC init/main.o |In file included from include/linux/mmzone.h:9:0, 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 566a4dcc2..c9dc7bd3a 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,7 +1,7 @@ From: Thomas Gleixner Date: Mon, 01 Jul 2013 11:02:42 +0200 Subject: [PATCH] workqueue vs ata-piix livelock fixup -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 @@ -122,7 +122,7 @@ Signed-off-by: Sebastian Andrzej Siewior #include "workqueue_internal.h" -@@ -1253,7 +1254,7 @@ static int try_to_grab_pending(struct wo +@@ -1256,7 +1257,7 @@ static int try_to_grab_pending(struct wo local_unlock_irqrestore(pendingb_lock, *flags); if (work_is_canceling(work)) return -ENOENT; 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 b51c04b80..f13ab7f8b 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz --- kernel/sched/core.c | 70 +++++++++----------------------------------- @@ -32,7 +32,7 @@ Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1- --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -1319,10 +1319,6 @@ static void ttwu_activate(struct rq *rq, +@@ -1332,10 +1332,6 @@ static void ttwu_activate(struct rq *rq, { activate_task(rq, p, en_flags); p->on_rq = 1; @@ -43,7 +43,7 @@ Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1- } /* -@@ -1560,42 +1556,6 @@ try_to_wake_up(struct task_struct *p, un +@@ -1573,42 +1569,6 @@ try_to_wake_up(struct task_struct *p, un } /** @@ -86,7 +86,7 @@ Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1- * wake_up_process - Wake up a specific process * @p: The process to be woken up. * -@@ -2583,21 +2543,6 @@ static void __sched __schedule(void) +@@ -2596,21 +2556,6 @@ static void __sched __schedule(void) } else { deactivate_task(rq, prev, DEQUEUE_SLEEP); prev->on_rq = 0; @@ -108,7 +108,7 @@ Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1- } switch_count = &prev->nvcsw; } -@@ -2640,6 +2585,14 @@ static inline void sched_submit_work(str +@@ -2653,6 +2598,14 @@ static inline void sched_submit_work(str { if (!tsk->state || tsk_is_pi_blocked(tsk)) return; @@ -123,7 +123,7 @@ Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1- /* * If we are going to sleep and we have plugged IO queued, * make sure to submit it to avoid deadlocks. -@@ -2648,12 +2601,19 @@ static inline void sched_submit_work(str +@@ -2661,12 +2614,19 @@ static inline void sched_submit_work(str blk_schedule_flush_plug(tsk); } @@ -145,7 +145,7 @@ Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1- --- a/kernel/workqueue.c +++ b/kernel/workqueue.c -@@ -805,44 +805,31 @@ static void wake_up_worker(struct worker +@@ -808,44 +808,31 @@ static void wake_up_worker(struct worker } /** @@ -202,7 +202,7 @@ Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1- struct worker_pool *pool; /* -@@ -851,14 +838,15 @@ struct task_struct *wq_worker_sleeping(s +@@ -854,14 +841,15 @@ struct task_struct *wq_worker_sleeping(s * checking NOT_RUNNING. */ if (worker->flags & WORKER_NOT_RUNNING) @@ -222,7 +222,7 @@ Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.1- /* * The counterpart of the following dec_and_test, implied mb, * worklist not empty test sequence is in insert_work(). -@@ -871,9 +859,12 @@ struct task_struct *wq_worker_sleeping(s +@@ -874,9 +862,12 @@ struct task_struct *wq_worker_sleeping(s * lock is safe. */ if (atomic_dec_and_test(&pool->nr_running) && diff --git a/debian/patches/features/all/rt/workqueue-use-locallock.patch b/debian/patches/features/all/rt/workqueue-use-locallock.patch index 2bb425267..3ef3c49a7 100644 --- a/debian/patches/features/all/rt/workqueue-use-locallock.patch +++ b/debian/patches/features/all/rt/workqueue-use-locallock.patch @@ -1,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- @@ -18,7 +18,7 @@ Signed-off-by: Thomas Gleixner #include "workqueue_internal.h" -@@ -320,6 +321,8 @@ EXPORT_SYMBOL_GPL(system_power_efficient +@@ -323,6 +324,8 @@ EXPORT_SYMBOL_GPL(system_power_efficient struct workqueue_struct *system_freezable_power_efficient_wq __read_mostly; EXPORT_SYMBOL_GPL(system_freezable_power_efficient_wq); @@ -27,7 +27,7 @@ Signed-off-by: Thomas Gleixner static int worker_thread(void *__worker); static void copy_workqueue_attrs(struct workqueue_attrs *to, const struct workqueue_attrs *from); -@@ -1079,9 +1082,9 @@ static void put_pwq_unlocked(struct pool +@@ -1082,9 +1085,9 @@ static void put_pwq_unlocked(struct pool * As both pwqs and pools are RCU protected, the * following lock operations are safe. */ @@ -39,7 +39,7 @@ Signed-off-by: Thomas Gleixner } } -@@ -1183,7 +1186,7 @@ static int try_to_grab_pending(struct wo +@@ -1186,7 +1189,7 @@ static int try_to_grab_pending(struct wo struct worker_pool *pool; struct pool_workqueue *pwq; @@ -48,7 +48,7 @@ Signed-off-by: Thomas Gleixner /* try to steal the timer if it exists */ if (is_dwork) { -@@ -1247,7 +1250,7 @@ static int try_to_grab_pending(struct wo +@@ -1250,7 +1253,7 @@ static int try_to_grab_pending(struct wo spin_unlock(&pool->lock); fail: rcu_read_unlock(); @@ -57,7 +57,7 @@ Signed-off-by: Thomas Gleixner if (work_is_canceling(work)) return -ENOENT; cpu_relax(); -@@ -1319,7 +1322,7 @@ static void __queue_work(int cpu, struct +@@ -1322,7 +1325,7 @@ static void __queue_work(int cpu, struct * queued or lose PENDING. Grabbing PENDING and queueing should * happen with IRQ disabled. */ @@ -66,7 +66,7 @@ Signed-off-by: Thomas Gleixner debug_work_activate(work); -@@ -1424,14 +1427,14 @@ bool queue_work_on(int cpu, struct workq +@@ -1427,14 +1430,14 @@ bool queue_work_on(int cpu, struct workq bool ret = false; unsigned long flags; @@ -83,7 +83,7 @@ Signed-off-by: Thomas Gleixner return ret; } EXPORT_SYMBOL(queue_work_on); -@@ -1498,14 +1501,14 @@ bool queue_delayed_work_on(int cpu, stru +@@ -1501,14 +1504,14 @@ bool queue_delayed_work_on(int cpu, stru unsigned long flags; /* read the comment in __queue_work() */ @@ -100,7 +100,7 @@ Signed-off-by: Thomas Gleixner return ret; } EXPORT_SYMBOL(queue_delayed_work_on); -@@ -1540,7 +1543,7 @@ bool mod_delayed_work_on(int cpu, struct +@@ -1543,7 +1546,7 @@ bool mod_delayed_work_on(int cpu, struct if (likely(ret >= 0)) { __queue_delayed_work(cpu, wq, dwork, delay); @@ -109,7 +109,7 @@ Signed-off-by: Thomas Gleixner } /* -ENOENT from try_to_grab_pending() becomes %true */ -@@ -2896,7 +2899,7 @@ static bool __cancel_work_timer(struct w +@@ -2899,7 +2902,7 @@ static bool __cancel_work_timer(struct w /* tell other tasks trying to grab @work to back off */ mark_work_canceling(work); @@ -118,7 +118,7 @@ Signed-off-by: Thomas Gleixner flush_work(work); clear_work_data(work); -@@ -2941,10 +2944,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync); +@@ -2944,10 +2947,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync); */ bool flush_delayed_work(struct delayed_work *dwork) { @@ -131,7 +131,7 @@ Signed-off-by: Thomas Gleixner return flush_work(&dwork->work); } EXPORT_SYMBOL(flush_delayed_work); -@@ -2979,7 +2982,7 @@ bool cancel_delayed_work(struct delayed_ +@@ -2982,7 +2985,7 @@ bool cancel_delayed_work(struct delayed_ set_work_pool_and_clear_pending(&dwork->work, get_work_pool_id(&dwork->work)); @@ -140,7 +140,7 @@ Signed-off-by: Thomas Gleixner return ret; } EXPORT_SYMBOL(cancel_delayed_work); -@@ -4447,7 +4450,7 @@ unsigned int work_busy(struct work_struc +@@ -4457,7 +4460,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 f3ad771e8..0b6c28340 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 @@ -47,7 +47,7 @@ Signed-off-by: Thomas Gleixner * determined without grabbing wq->mutex. */ struct work_struct unbound_release_work; -@@ -328,14 +328,14 @@ static void copy_workqueue_attrs(struct +@@ -331,14 +331,14 @@ static void copy_workqueue_attrs(struct #include #define assert_rcu_or_pool_mutex() \ @@ -66,7 +66,7 @@ Signed-off-by: Thomas Gleixner #ifdef CONFIG_LOCKDEP #define assert_manager_or_pool_lock(pool) \ -@@ -357,7 +357,7 @@ static void copy_workqueue_attrs(struct +@@ -360,7 +360,7 @@ static void copy_workqueue_attrs(struct * @pool: iteration cursor * @pi: integer used for iteration * @@ -75,7 +75,7 @@ Signed-off-by: Thomas Gleixner * locked. If the pool needs to be used beyond the locking in effect, the * caller is responsible for guaranteeing that the pool stays online. * -@@ -390,7 +390,7 @@ static void copy_workqueue_attrs(struct +@@ -393,7 +393,7 @@ static void copy_workqueue_attrs(struct * @pwq: iteration cursor * @wq: the target workqueue * @@ -84,7 +84,7 @@ Signed-off-by: Thomas Gleixner * If the pwq needs to be used beyond the locking in effect, the caller is * responsible for guaranteeing that the pwq stays online. * -@@ -538,7 +538,7 @@ static int worker_pool_assign_id(struct +@@ -541,7 +541,7 @@ static int worker_pool_assign_id(struct * @wq: the target workqueue * @node: the node ID * @@ -93,7 +93,7 @@ Signed-off-by: Thomas Gleixner * If the pwq needs to be used beyond the locking in effect, the caller is * responsible for guaranteeing that the pwq stays online. * -@@ -642,8 +642,8 @@ static struct pool_workqueue *get_work_p +@@ -645,8 +645,8 @@ static struct pool_workqueue *get_work_p * @work: the work item of interest * * Pools are created and destroyed under wq_pool_mutex, and allows read @@ -104,7 +104,7 @@ Signed-off-by: Thomas Gleixner * * All fields of the returned pool are accessible as long as the above * mentioned locking is in effect. If the returned pool needs to be used -@@ -1076,7 +1076,7 @@ static void put_pwq_unlocked(struct pool +@@ -1079,7 +1079,7 @@ static void put_pwq_unlocked(struct pool { if (pwq) { /* @@ -113,7 +113,7 @@ Signed-off-by: Thomas Gleixner * following lock operations are safe. */ spin_lock_irq(&pwq->pool->lock); -@@ -1202,6 +1202,7 @@ static int try_to_grab_pending(struct wo +@@ -1205,6 +1205,7 @@ static int try_to_grab_pending(struct wo if (!test_and_set_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(work))) return 0; @@ -121,7 +121,7 @@ Signed-off-by: Thomas Gleixner /* * The queueing is in progress, or it is already queued. Try to * steal it from ->worklist without clearing WORK_STRUCT_PENDING. -@@ -1240,10 +1241,12 @@ static int try_to_grab_pending(struct wo +@@ -1243,10 +1244,12 @@ static int try_to_grab_pending(struct wo set_work_pool_and_keep_pending(work, pool->id); spin_unlock(&pool->lock); @@ -134,7 +134,7 @@ Signed-off-by: Thomas Gleixner local_irq_restore(*flags); if (work_is_canceling(work)) return -ENOENT; -@@ -1324,6 +1327,8 @@ static void __queue_work(int cpu, struct +@@ -1327,6 +1330,8 @@ static void __queue_work(int cpu, struct if (unlikely(wq->flags & __WQ_DRAINING) && WARN_ON_ONCE(!is_chained_work(wq))) return; @@ -143,7 +143,7 @@ Signed-off-by: Thomas Gleixner retry: if (req_cpu == WORK_CPU_UNBOUND) cpu = raw_smp_processor_id(); -@@ -1380,10 +1385,8 @@ static void __queue_work(int cpu, struct +@@ -1383,10 +1388,8 @@ static void __queue_work(int cpu, struct /* pwq determined, queue */ trace_workqueue_queue_work(req_cpu, pwq, work); @@ -156,7 +156,7 @@ Signed-off-by: Thomas Gleixner pwq->nr_in_flight[pwq->work_color]++; work_flags = work_color_to_flags(pwq->work_color); -@@ -1399,7 +1402,9 @@ static void __queue_work(int cpu, struct +@@ -1402,7 +1405,9 @@ static void __queue_work(int cpu, struct insert_work(pwq, work, worklist, work_flags); @@ -166,7 +166,7 @@ Signed-off-by: Thomas Gleixner } /** -@@ -2799,14 +2804,14 @@ static bool start_flush_work(struct work +@@ -2802,14 +2807,14 @@ static bool start_flush_work(struct work might_sleep(); @@ -184,7 +184,7 @@ Signed-off-by: Thomas Gleixner /* see the comment in try_to_grab_pending() with the same code */ pwq = get_work_pwq(work); if (pwq) { -@@ -2833,10 +2838,11 @@ static bool start_flush_work(struct work +@@ -2836,10 +2841,11 @@ static bool start_flush_work(struct work else lock_map_acquire_read(&pwq->wq->lockdep_map); lock_map_release(&pwq->wq->lockdep_map); @@ -197,7 +197,7 @@ Signed-off-by: Thomas Gleixner return false; } -@@ -3159,7 +3165,8 @@ static ssize_t wq_pool_ids_show(struct d +@@ -3162,7 +3168,8 @@ static ssize_t wq_pool_ids_show(struct d const char *delim = ""; int node, written = 0; @@ -207,7 +207,7 @@ Signed-off-by: Thomas Gleixner for_each_node(node) { written += scnprintf(buf + written, PAGE_SIZE - written, "%s%d:%d", delim, node, -@@ -3167,7 +3174,8 @@ static ssize_t wq_pool_ids_show(struct d +@@ -3170,7 +3177,8 @@ static ssize_t wq_pool_ids_show(struct d delim = " "; } written += scnprintf(buf + written, PAGE_SIZE - written, "\n"); @@ -217,7 +217,7 @@ Signed-off-by: Thomas Gleixner return written; } -@@ -3533,7 +3541,7 @@ static void rcu_free_pool(struct rcu_hea +@@ -3536,7 +3544,7 @@ static void rcu_free_pool(struct rcu_hea * put_unbound_pool - put a worker_pool * @pool: worker_pool to put * @@ -226,7 +226,7 @@ Signed-off-by: Thomas Gleixner * 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(). -@@ -3580,8 +3588,8 @@ static void put_unbound_pool(struct work +@@ -3583,8 +3591,8 @@ static void put_unbound_pool(struct work del_timer_sync(&pool->idle_timer); del_timer_sync(&pool->mayday_timer); @@ -237,7 +237,7 @@ Signed-off-by: Thomas Gleixner } /** -@@ -3694,7 +3702,7 @@ static void pwq_unbound_release_workfn(s +@@ -3697,7 +3705,7 @@ static void pwq_unbound_release_workfn(s put_unbound_pool(pool); mutex_unlock(&wq_pool_mutex); @@ -246,7 +246,7 @@ Signed-off-by: Thomas Gleixner /* * If we're the last pwq going away, @wq is already dead and no one -@@ -4400,7 +4408,8 @@ bool workqueue_congested(int cpu, struct +@@ -4410,7 +4418,8 @@ bool workqueue_congested(int cpu, struct struct pool_workqueue *pwq; bool ret; @@ -256,7 +256,7 @@ Signed-off-by: Thomas Gleixner if (cpu == WORK_CPU_UNBOUND) cpu = smp_processor_id(); -@@ -4411,7 +4420,8 @@ bool workqueue_congested(int cpu, struct +@@ -4421,7 +4430,8 @@ bool workqueue_congested(int cpu, struct pwq = unbound_pwq_by_node(wq, cpu_to_node(cpu)); ret = !list_empty(&pwq->delayed_works); @@ -266,7 +266,7 @@ Signed-off-by: Thomas Gleixner return ret; } -@@ -4437,16 +4447,15 @@ unsigned int work_busy(struct work_struc +@@ -4447,16 +4457,15 @@ unsigned int work_busy(struct work_struc if (work_pending(work)) ret |= WORK_BUSY_PENDING; @@ -287,7 +287,7 @@ Signed-off-by: Thomas Gleixner return ret; } EXPORT_SYMBOL_GPL(work_busy); -@@ -4899,16 +4908,16 @@ bool freeze_workqueues_busy(void) +@@ -4909,16 +4918,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 d3160d798..49d58a309 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Restrict the preempt disabled regions to the actual floating point operations and enable preemption for the administrative actions. 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 4e102dbd9..f26435c98 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 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 e12ce1245..09026096f 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz With threaded interrupts we might see an interrupt in progress on migration. Do not unmask it when this is the case. 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 f1234b47c..f9e4d47b0 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,7 +1,7 @@ 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 5321da9c3..c2b415000 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz We had a customer report a lockup on a 3.0-rt kernel that had the following backtrace: 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 f31adfec3..5fc4f8768 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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. 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 fbbb2d3ad..d2a999347 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 diff --git a/debian/patches/features/all/rt/x86-preempt-lazy.patch b/debian/patches/features/all/rt/x86-preempt-lazy.patch index e8405f152..032e6c3ba 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Signed-off-by: Thomas Gleixner --- 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 7f92271f0..7563f8c6e 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.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 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 9cbc338c1..e85005d52 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.12/patches-3.12.1-rt4.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/3.12/patches-3.12.5-rt7.tar.xz Simplifies the separation of anon_rw_semaphores and rw_semaphores for -rt. diff --git a/debian/patches/series-rt b/debian/patches/series-rt index 81f34362a..d56a6e0ae 100644 --- a/debian/patches/series-rt +++ b/debian/patches/series-rt @@ -6,6 +6,7 @@ # UPSTREAM changes queued ############################################################ features/all/rt/lockdep-Correctly-annotate-hardirq-context-in-irq_ex.patch +features/all/rt/net-make-neigh_priv_len-in-struct-net_device-16bit-i.patch ############################################################ # UPSTREAM FIXES, patches pending @@ -32,6 +33,9 @@ features/all/rt/lockdep-Correctly-annotate-hardirq-context-in-irq_ex.patch # SPARC part of erly printk consolidation features/all/rt/early-printk-consolidate.patch features/all/rt/sparc-provide-EARLY_PRINTK-for-SPARC.patch +features/all/rt/0001-sparc64-use-generic-rwsem-spinlocks-rt.patch +features/all/rt/0002-sparc64-convert-spinlock_t-to-raw_spinlock_t-in-mmu_.patch +features/all/rt/0003-sparc64-convert-ctx_alloc_lock-raw_spinlock_t.patch # SRCU features/all/rt/0002-kernel-SRCU-provide-a-static-initializer.patch @@ -93,7 +97,7 @@ features/all/rt/tracing-account-for-preempt-off-in-preempt_schedule.patch # PTRACE/SIGNAL crap features/all/rt/signal-revert-ptrace-preempt-magic.patch # wait for feedback -# ptrace-fix-ptrace-vs-tasklist_lock-race.patch +features/all/rt/ptrace-fix-ptrace-vs-tasklist_lock-race.patch # ARM lock annotation features/all/rt/arm-convert-boot-lock-to-raw.patch @@ -409,8 +413,12 @@ features/all/rt/rt-add-rt-to-mutex-headers.patch features/all/rt/rwsem-add-rt-variant.patch features/all/rt/rt-add-rt-locks.patch features/all/rt/condition-migration_disable-on-lock-acquisition.patch +features/all/rt/migrate_disable-pushd-down-in-atomic_dec_and_spin_lo.patch +features/all/rt/migrate_disable-pushd-down-in-rt_spin_trylock_irqsav.patch +features/all/rt/migrate_disable-pushd-down-in-rt_write_trylock_irqsa.patch features/all/rt/percpu-rwsem-compilefix.patch features/all/rt/rtmutex-add-a-first-shot-of-ww_mutex.patch +features/all/rt/rtmutex-ww-bad-return-value-in-__mutex_lock_check_stamp.patch # RTMUTEX Fallout features/all/rt/tasklist-lock-fix-section-conflict.patch @@ -547,9 +555,7 @@ features/all/rt/random-make-it-work-on-rt.patch # SEQLOCKS features/all/rt/seqlock-prevent-rt-starvation.patch - -# SCHEDULER -features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch +features/all/rt/seqlock-consolidate-spin_lock-unlock-waiting-with-sp.patch # HOTPLUG features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch @@ -586,6 +592,7 @@ features/all/rt/softirq-make-serving-softirqs-a-task-flag.patch features/all/rt/softirq-split-handling-function.patch features/all/rt/softirq-split-locks.patch features/all/rt/softirq-adapt-nohz-pending-debug-code-to-new-scheme.patch +features/all/rt/softirq-make-migrate-disable-enable-conditioned-on-softirq_n.patch # RCU features/all/rt/rcu-disable-rcu-fast-no-hz-on-rt.patch