[kernel] r22529 - in dists/wheezy-security/linux: . debian debian/config debian/patches debian/patches/bugfix/all debian/patches/bugfix/s390 debian/patches/bugfix/x86 debian/patches/debian debian/patches/features/all/drm debian/patches/features/all/hpsa debian/patches/features/all/rt

Ben Hutchings benh at moszumanska.debian.org
Fri Apr 24 14:53:55 UTC 2015


Author: benh
Date: Fri Apr 24 14:53:49 2015
New Revision: 22529

Log:
Merge changes from wheezy including pending changes for 3.2.68-2

Added:
   dists/wheezy-security/linux/debian/patches/bugfix/all/ib-core-prevent-integer-overflow-in-ib_umem_get.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/bugfix/all/ib-core-prevent-integer-overflow-in-ib_umem_get.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/ipv6-don-t-reduce-hop-limit-for-an-interface.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/bugfix/all/ipv6-don-t-reduce-hop-limit-for-an-interface.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/net-llc-use-correct-size-for-sysctl-timeout-entries.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/bugfix/all/net-llc-use-correct-size-for-sysctl-timeout-entries.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/net-rds-use-correct-size-for-max-unacked-packets-and.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/bugfix/all/net-rds-use-correct-size-for-max-unacked-packets-and.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/netfilter-ipset-Check-and-reject-crazy-0-input-param.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/bugfix/all/netfilter-ipset-Check-and-reject-crazy-0-input-param.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/netfilter-nf_conntrack-reserve-two-bytes-for-nf_ct_e.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/bugfix/all/netfilter-nf_conntrack-reserve-two-bytes-for-nf_ct_e.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/nfsv4-minor-cleanups-for-nfs4_handle_exception-and-n.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/bugfix/all/nfsv4-minor-cleanups-for-nfs4_handle_exception-and-n.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/xen-pciback-limit-guest-control-of-command-register.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/bugfix/all/xen-pciback-limit-guest-control-of-command-register.patch
   dists/wheezy-security/linux/debian/patches/bugfix/x86/x86-asm-entry-64-remove-a-bogus-ret_from_fork-optimi.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/bugfix/x86/x86-asm-entry-64-remove-a-bogus-ret_from_fork-optimi.patch
   dists/wheezy-security/linux/debian/patches/debian/rmap-fix-abi-change-in-3.2.67.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/debian/rmap-fix-abi-change-in-3.2.67.patch
   dists/wheezy-security/linux/debian/patches/debian/sock-fix-abi-change-in-3.2.67.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/debian/sock-fix-abi-change-in-3.2.67.patch
   dists/wheezy-security/linux/debian/patches/features/all/hpsa/
      - copied from r22528, dists/wheezy/linux/debian/patches/features/all/hpsa/
   dists/wheezy-security/linux/debian/patches/features/all/rt/0222-workqueue-use-get-cpu-light.patch.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0222-workqueue-use-get-cpu-light.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0223-epoll.patch.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0223-epoll.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0224-mm-vmalloc.patch.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0224-mm-vmalloc.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0225-debugobjects-rt.patch.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0225-debugobjects-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0226-jump-label-rt.patch.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0226-jump-label-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0227-skbufhead-raw-lock.patch.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0227-skbufhead-raw-lock.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0228-x86-no-perf-irq-work-rt.patch.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0228-x86-no-perf-irq-work-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0229-console-make-rt-friendly.patch.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0229-console-make-rt-friendly.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0230-printk-Disable-migration-instead-of-preemption.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0230-printk-Disable-migration-instead-of-preemption.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0231-power-use-generic-rwsem-on-rt.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0231-power-use-generic-rwsem-on-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0232-power-disable-highmem-on-rt.patch.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0232-power-disable-highmem-on-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0233-arm-disable-highmem-on-rt.patch.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0233-arm-disable-highmem-on-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0234-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0234-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0235-mips-disable-highmem-on-rt.patch.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0235-mips-disable-highmem-on-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0236-net-Avoid-livelock-in-net_tx_action-on-RT.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0236-net-Avoid-livelock-in-net_tx_action-on-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0237-ping-sysrq.patch.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0237-ping-sysrq.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0238-kgdb-serial-Short-term-workaround.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0238-kgdb-serial-Short-term-workaround.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0239-add-sys-kernel-realtime-entry.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0239-add-sys-kernel-realtime-entry.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0240-mm-rt-kmap_atomic-scheduling.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0240-mm-rt-kmap_atomic-scheduling.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0241-ipc-sem-Rework-semaphore-wakeups.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0241-ipc-sem-Rework-semaphore-wakeups.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0242-sysrq-Allow-immediate-Magic-SysRq-output-for-PREEMPT.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0242-sysrq-Allow-immediate-Magic-SysRq-output-for-PREEMPT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0243-x86-kvm-require-const-tsc-for-rt.patch.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0243-x86-kvm-require-const-tsc-for-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0244-scsi-fcoe-rt-aware.patch.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0244-scsi-fcoe-rt-aware.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0245-x86-crypto-Reduce-preempt-disabled-regions.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0245-x86-crypto-Reduce-preempt-disabled-regions.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0246-dm-Make-rt-aware.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0246-dm-Make-rt-aware.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0247-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0247-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0248-seqlock-Prevent-rt-starvation.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0248-seqlock-Prevent-rt-starvation.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0249-timer-Fix-hotplug-for-rt.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0249-timer-Fix-hotplug-for-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0250-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0250-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0251-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0251-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0252-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0252-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0253-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0253-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0254-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0254-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0255-softirq-Check-preemption-after-reenabling-interrupts.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0255-softirq-Check-preemption-after-reenabling-interrupts.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0256-rt-Introduce-cpu_chill.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0256-rt-Introduce-cpu_chill.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0257-fs-dcache-Use-cpu_chill-in-trylock-loops.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0257-fs-dcache-Use-cpu_chill-in-trylock-loops.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0258-net-Use-cpu_chill-instead-of-cpu_relax.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0258-net-Use-cpu_chill-instead-of-cpu_relax.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0259-kconfig-disable-a-few-options-rt.patch.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0259-kconfig-disable-a-few-options-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0260-kconfig-preempt-rt-full.patch.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0260-kconfig-preempt-rt-full.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0261-rt-Make-migrate_disable-enable-and-__rt_mutex_init-n.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0261-rt-Make-migrate_disable-enable-and-__rt_mutex_init-n.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0262-scsi-qla2xxx-Use-local_irq_save_nort-in-qla2x00_poll.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0262-scsi-qla2xxx-Use-local_irq_save_nort-in-qla2x00_poll.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0263-net-RT-REmove-preemption-disabling-in-netif_rx.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0263-net-RT-REmove-preemption-disabling-in-netif_rx.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0264-mips-remove-smp-reserve-lock.patch.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0264-mips-remove-smp-reserve-lock.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0265-Latency-histogramms-Cope-with-backwards-running-loca.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0265-Latency-histogramms-Cope-with-backwards-running-loca.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0266-Latency-histograms-Adjust-timer-if-already-elapsed-w.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0266-Latency-histograms-Adjust-timer-if-already-elapsed-w.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0267-Disable-RT_GROUP_SCHED-in-PREEMPT_RT_FULL.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0267-Disable-RT_GROUP_SCHED-in-PREEMPT_RT_FULL.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0268-Latency-histograms-Detect-another-yet-overlooked-sha.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0268-Latency-histograms-Detect-another-yet-overlooked-sha.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0269-slab-Prevent-local-lock-deadlock.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0269-slab-Prevent-local-lock-deadlock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0270-fs-jbd-pull-your-plug-when-waiting-for-space.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0270-fs-jbd-pull-your-plug-when-waiting-for-space.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0271-perf-Make-swevent-hrtimer-run-in-irq-instead-of-soft.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0271-perf-Make-swevent-hrtimer-run-in-irq-instead-of-soft.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0272-cpu-rt-Rework-cpu-down-for-PREEMPT_RT.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0272-cpu-rt-Rework-cpu-down-for-PREEMPT_RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0273-cpu-rt-Fix-cpu_hotplug-variable-initialization.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0273-cpu-rt-Fix-cpu_hotplug-variable-initialization.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0274-time-rt-Fix-up-leap-second-backport-for-RT-changes.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0274-time-rt-Fix-up-leap-second-backport-for-RT-changes.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0275-fix-printk-flush-of-messages.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0275-fix-printk-flush-of-messages.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0277-random-Make-it-work-on-rt.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0277-random-Make-it-work-on-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0278-softirq-Init-softirq-local-lock-after-per-cpu-sectio.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0278-softirq-Init-softirq-local-lock-after-per-cpu-sectio.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0279-mm-slab-Fix-potential-deadlock.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0279-mm-slab-Fix-potential-deadlock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0280-mm-page_alloc-Use-local_lock_on-instead-of-plain-spi.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0280-mm-page_alloc-Use-local_lock_on-instead-of-plain-spi.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0281-rt-rwsem-rwlock-lockdep-annotations.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0281-rt-rwsem-rwlock-lockdep-annotations.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0282-sched-Better-debug-output-for-might-sleep.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0282-sched-Better-debug-output-for-might-sleep.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0283-stomp_machine-Use-mutex_trylock-when-called-from-ina.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0283-stomp_machine-Use-mutex_trylock-when-called-from-ina.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0284-slab-Fix-up-stable-merge-of-slab-init_lock_keys.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0284-slab-Fix-up-stable-merge-of-slab-init_lock_keys.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0285-hrtimer-Raise-softirq-if-hrtimer-irq-stalled.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0285-hrtimer-Raise-softirq-if-hrtimer-irq-stalled.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0286-rcu-Disable-RCU_FAST_NO_HZ-on-RT.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0286-rcu-Disable-RCU_FAST_NO_HZ-on-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0287-net-netfilter-Serialize-xt_write_recseq-sections-on-.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0287-net-netfilter-Serialize-xt_write_recseq-sections-on-.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0288-sched-Adjust-sched_reset_on_fork-when-nothing-else-c.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0288-sched-Adjust-sched_reset_on_fork-when-nothing-else-c.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0289-sched-Queue-RT-tasks-to-head-when-prio-drops.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0289-sched-Queue-RT-tasks-to-head-when-prio-drops.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0290-sched-Consider-pi-boosting-in-setscheduler.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0290-sched-Consider-pi-boosting-in-setscheduler.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0291-drivers-tty-pl011-irq-disable-madness.patch.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0291-drivers-tty-pl011-irq-disable-madness.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0292-mmci-Remove-bogus-local_irq_save.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0292-mmci-Remove-bogus-local_irq_save.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0293-sched-Init-idle-on_rq-in-init_idle.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0293-sched-Init-idle-on_rq-in-init_idle.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0294-sched-Check-for-idle-task-in-might_sleep.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0294-sched-Check-for-idle-task-in-might_sleep.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0295-mm-swap-Initialize-local-locks-early.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0295-mm-swap-Initialize-local-locks-early.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0296-x86-32-Use-kmap-switch-for-non-highmem-as-well.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0296-x86-32-Use-kmap-switch-for-non-highmem-as-well.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0297-acpi-rt-Convert-acpi_gbl_hardware-lock-back-to-a-raw.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0297-acpi-rt-Convert-acpi_gbl_hardware-lock-back-to-a-raw.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0298-serial-Imx-Fix-recursive-locking-bug.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0298-serial-Imx-Fix-recursive-locking-bug.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0299-wait-simple-Simple-waitqueue-implementation.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0299-wait-simple-Simple-waitqueue-implementation.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0300-rcutiny-Use-simple-waitqueue.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0300-rcutiny-Use-simple-waitqueue.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0301-rcutiny-Fix-typo-of-using-swake_up-instead-of-swait_.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0301-rcutiny-Fix-typo-of-using-swake_up-instead-of-swait_.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0302-x86-mce-Defer-mce-wakeups-to-threads-for-PREEMPT_RT.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0302-x86-mce-Defer-mce-wakeups-to-threads-for-PREEMPT_RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0303-swap-Use-unique-local-lock-name-for-swap_lock.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0303-swap-Use-unique-local-lock-name-for-swap_lock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0304-sched-Add-is_idle_task-to-handle-invalidated-uses-of.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0304-sched-Add-is_idle_task-to-handle-invalidated-uses-of.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0305-sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0305-sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0306-x86-mce-fix-mce-timer-interval.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0306-x86-mce-fix-mce-timer-interval.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0307-genirq-Set-irq-thread-to-RT-priority-on-creation.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0307-genirq-Set-irq-thread-to-RT-priority-on-creation.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0308-list_bl.h-make-list-head-locking-RT-safe.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0308-list_bl.h-make-list-head-locking-RT-safe.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0309-list_bl.h-fix-it-for-for-SMP-DEBUG_SPINLOCK.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0309-list_bl.h-fix-it-for-for-SMP-DEBUG_SPINLOCK.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0310-timers-prepare-for-full-preemption-improve.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0310-timers-prepare-for-full-preemption-improve.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0311-kernel-cpu-fix-cpu-down-problem-if-kthread-s-cpu-is-.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0311-kernel-cpu-fix-cpu-down-problem-if-kthread-s-cpu-is-.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0312-kernel-hotplug-restore-original-cpu-mask-oncpu-down.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0312-kernel-hotplug-restore-original-cpu-mask-oncpu-down.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0313-drm-i915-drop-trace_i915_gem_ring_dispatch-on-rt.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0313-drm-i915-drop-trace_i915_gem_ring_dispatch-on-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0314-rt-ntp-Move-call-to-schedule_delayed_work-to-helper-.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0314-rt-ntp-Move-call-to-schedule_delayed_work-to-helper-.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0315-hwlat-detector-Update-hwlat_detector-to-add-outer-lo.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0315-hwlat-detector-Update-hwlat_detector-to-add-outer-lo.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0316-hwlat-detect-trace-Export-trace_clock_local-for-hwla.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0316-hwlat-detect-trace-Export-trace_clock_local-for-hwla.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0317-hwlat-detector-Use-trace_clock_local-if-available.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0317-hwlat-detector-Use-trace_clock_local-if-available.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0318-hwlat-detector-Use-thread-instead-of-stop-machine.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0318-hwlat-detector-Use-thread-instead-of-stop-machine.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0319-genirq-do-not-invoke-the-affinity-callback-via-a-wor.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0319-genirq-do-not-invoke-the-affinity-callback-via-a-wor.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0320-genirq-Set-the-irq-thread-policy-without-checking-CA.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0320-genirq-Set-the-irq-thread-policy-without-checking-CA.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0321-hwlat-detector-Don-t-ignore-threshold-module-paramet.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0321-hwlat-detector-Don-t-ignore-threshold-module-paramet.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0322-mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0322-mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0323-drm-remove-preempt_disable-from-drm_calc_vbltimestam.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0323-drm-remove-preempt_disable-from-drm_calc_vbltimestam.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0324-cpu_down-move-migrate_enable-back.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0324-cpu_down-move-migrate_enable-back.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0325-swait-Add-a-few-more-users.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0325-swait-Add-a-few-more-users.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0326-lockdep-Correctly-annotate-hardirq-context-in-irq_ex.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0326-lockdep-Correctly-annotate-hardirq-context-in-irq_ex.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0327-rtmutex-use-a-trylock-for-waiter-lock-in-trylock.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0327-rtmutex-use-a-trylock-for-waiter-lock-in-trylock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0328-smp-introduce-a-generic-on_each_cpu_mask-function.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0328-smp-introduce-a-generic-on_each_cpu_mask-function.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0329-smp-add-func-to-IPI-cpus-based-on-parameter-func.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0329-smp-add-func-to-IPI-cpus-based-on-parameter-func.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0330-fs-only-send-IPI-to-invalidate-LRU-BH-when-needed.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0330-fs-only-send-IPI-to-invalidate-LRU-BH-when-needed.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0331-rcutree-rcu_bh_qs-disable-irq-while-calling-rcu_pree.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0331-rcutree-rcu_bh_qs-disable-irq-while-calling-rcu_pree.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0332-rt-Make-cpu_chill-use-hrtimer-instead-of-msleep.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0332-rt-Make-cpu_chill-use-hrtimer-instead-of-msleep.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0333-kernel-hrtimer-be-non-freezeable-in-cpu_chill.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0333-kernel-hrtimer-be-non-freezeable-in-cpu_chill.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0334-arm-unwind-use-a-raw_spin_lock.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0334-arm-unwind-use-a-raw_spin_lock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0335-Revert-swait-Add-a-few-more-users.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0335-Revert-swait-Add-a-few-more-users.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0336-net-sched-dev_deactivate_many-use-msleep-1-instead-o.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0336-net-sched-dev_deactivate_many-use-msleep-1-instead-o.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0337-fs-jbd2-pull-your-plug-when-waiting-for-space.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0337-fs-jbd2-pull-your-plug-when-waiting-for-space.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0338-cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0338-cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0339-net-gianfar-do-not-disable-interrupts.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0339-net-gianfar-do-not-disable-interrupts.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0340-rcu-make-RCU_BOOST-default-on-RT.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0340-rcu-make-RCU_BOOST-default-on-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0341-Fix-latency-histogram-after-hrtimer-Set-expiry-time-.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0341-Fix-latency-histogram-after-hrtimer-Set-expiry-time-.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0342-sched-Do-not-clear-PF_NO_SETAFFINITY-flag-in-select_.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0342-sched-Do-not-clear-PF_NO_SETAFFINITY-flag-in-select_.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0343-workqueue-Prevent-deadlock-stall-on-RT.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0343-workqueue-Prevent-deadlock-stall-on-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0344-hrtimer-fix-the-miss-of-hrtimer_peek_ahead_timers-in.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0344-hrtimer-fix-the-miss-of-hrtimer_peek_ahead_timers-in.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0345-lockdep-Fix-backport-of-Correctly-annotate-hardirq-c.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0345-lockdep-Fix-backport-of-Correctly-annotate-hardirq-c.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0346-gpio-omap-use-raw-locks-for-locking.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0346-gpio-omap-use-raw-locks-for-locking.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0347-create-rt-enqueue.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0347-create-rt-enqueue.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0348-rtmutex-Simplify-rtmutex_slowtrylock.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0348-rtmutex-Simplify-rtmutex_slowtrylock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0349-rtmutex-Simplify-and-document-try_to_take_rtmutex.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0349-rtmutex-Simplify-and-document-try_to_take_rtmutex.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0350-rtmutex-No-need-to-keep-task-ref-for-lock-owner-chec.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0350-rtmutex-No-need-to-keep-task-ref-for-lock-owner-chec.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0351-rtmutex-Clarify-the-boost-deboost-part.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0351-rtmutex-Clarify-the-boost-deboost-part.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0352-rtmutex-Document-pi-chain-walk.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0352-rtmutex-Document-pi-chain-walk.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0353-rtmutex-Simplify-remove_waiter.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0353-rtmutex-Simplify-remove_waiter.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0354-rtmutex-Confine-deadlock-logic-to-futex.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0354-rtmutex-Confine-deadlock-logic-to-futex.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0355-rtmutex-Cleanup-deadlock-detector-debug-logic.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0355-rtmutex-Cleanup-deadlock-detector-debug-logic.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0356-rtmutex-Avoid-pointless-requeueing-in-the-deadlock-d.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0356-rtmutex-Avoid-pointless-requeueing-in-the-deadlock-d.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0357-futex-Make-unlock_pi-more-robust.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0357-futex-Make-unlock_pi-more-robust.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0358-futex-Use-futex_top_waiter-in-lookup_pi_state.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0358-futex-Use-futex_top_waiter-in-lookup_pi_state.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0359-futex-Split-out-the-waiter-check-from-lookup_pi_stat.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0359-futex-Split-out-the-waiter-check-from-lookup_pi_stat.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0360-futex-Split-out-the-first-waiter-attachment-from-loo.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0360-futex-Split-out-the-first-waiter-attachment-from-loo.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0361-futex-Simplify-futex_lock_pi_atomic-and-make-it-more.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0361-futex-Simplify-futex_lock_pi_atomic-and-make-it-more.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0362-rt-mutex-avoid-a-NULL-pointer-dereference-on-deadloc.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0362-rt-mutex-avoid-a-NULL-pointer-dereference-on-deadloc.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0363-x86-UV-raw_spinlock-conversion.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0363-x86-UV-raw_spinlock-conversion.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0364-ARM-enable-irq-in-translation-section-permission-fau.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0364-ARM-enable-irq-in-translation-section-permission-fau.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0365-arm-futex-disable-preemption-during-futex_atomic_cmp.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0365-arm-futex-disable-preemption-during-futex_atomic_cmp.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0366-scheduling-while-atomic-in-cgroup-code.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0366-scheduling-while-atomic-in-cgroup-code.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0367-work-simple-Simple-work-queue-implemenation.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0367-work-simple-Simple-work-queue-implemenation.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0368-sunrpc-make-svc_xprt_do_enqueue-use-get_cpu_light.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0368-sunrpc-make-svc_xprt_do_enqueue-use-get_cpu_light.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0369-lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0369-lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0370-fs-btrfs-fix-rt-deadlock-on-extent_buffer-lock.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0370-fs-btrfs-fix-rt-deadlock-on-extent_buffer-lock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0371-Linux-3.2.68-rt99-REBASE.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0371-Linux-3.2.68-rt99-REBASE.patch
Replaced:
   dists/wheezy-security/linux/debian/patches/features/all/rt/0276-fix-printk-flush-of-messages.patch
      - copied unchanged from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0276-fix-printk-flush-of-messages.patch
Deleted:
   dists/wheezy-security/linux/debian/patches/bugfix/all/crypto-add-missing-crypto-module-aliases.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/crypto-include-crypto-module-prefix-in-template.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/crypto-prefix-module-autoloading-with-crypto.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/dcache-fix-locking-bugs-in-backported-deal-with-deadlock-in-d_walk.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/deal-with-deadlock-in-d_walk.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/drivers-net-disable-ufo-through-virtio.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/drivers-net-ipv6-select-ipv6-fragment-idents-for-vir.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/ecryptfs-remove-buggy-and-unnecessary-write-in-file-name-decode.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/ext4-make-orphan-functions-be-no-op-in-no-journal-mo.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/isofs-fix-infinite-looping-over-ce-entries.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/isofs-fix-unchecked-printing-of-er-records.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/keys-close-race-between-key-lookup-and-freeing.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/media-ttusb-dec-buffer-overflow-in-ioctl.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/move-d_rcu-from-overlapping-d_child-to-overlapping-d_alias.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/net-sctp-fix-NULL-pointer-dereference-in-af-from_add.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/net-sctp-fix-slab-corruption-from-use-after-free-on-init-collisions.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/netfilter-conntrack-disable-generic-tracking-for-kno.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/revert-drivers-net-disable-ufo-through-virtio-in-macvtap-and-tun.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/splice-apply-generic-position-and-size-checks-to-eac.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/udf-Avoid-infinite-loop-when-processing-indirect-ICB.patch
   dists/wheezy-security/linux/debian/patches/bugfix/all/vfs-fix-vfsmount_lock-imbalance-in-path_init.patch
   dists/wheezy-security/linux/debian/patches/bugfix/s390/s390-revert-clockevent.patch
   dists/wheezy-security/linux/debian/patches/bugfix/x86/crypto-ghash-clmulni-intel-use-C-implementation-for-.patch
   dists/wheezy-security/linux/debian/patches/bugfix/x86/kvm-x86-don-t-report-guest-userspace-emulation-error-to-userspace.patch
   dists/wheezy-security/linux/debian/patches/bugfix/x86/kvm-x86-emulator-reject-sysenter-in-compatibility-mo.patch
   dists/wheezy-security/linux/debian/patches/bugfix/x86/kvm-x86-sysenter-emulation-is-broken.patch
   dists/wheezy-security/linux/debian/patches/bugfix/x86/revert-x86-64bit-mm-mark-data-bss-brk-to-nx.patch
   dists/wheezy-security/linux/debian/patches/bugfix/x86/revert-x86-mm-set-nx-across-entire-pmd-at-boot.patch
   dists/wheezy-security/linux/debian/patches/bugfix/x86/x86-cpu-amd-add-workaround-for-family-16h-erratum-79.patch
   dists/wheezy-security/linux/debian/patches/bugfix/x86/x86-kvm-clear-paravirt_enabled-on-kvm-guests-for-espfix32-s-benefit.patch
   dists/wheezy-security/linux/debian/patches/bugfix/x86/x86-tls-interpret-an-all-zero-struct-user_desc-as-no-segment.patch
   dists/wheezy-security/linux/debian/patches/bugfix/x86/x86-tls-ldt-stop-checking-lm-in-ldt_empty.patch
   dists/wheezy-security/linux/debian/patches/bugfix/x86/x86-tls-validate-tls-entries-to-protect-espfix.patch
   dists/wheezy-security/linux/debian/patches/bugfix/x86/x86_64-switch_to-load-tls-descriptors-before-switchi.patch
   dists/wheezy-security/linux/debian/patches/bugfix/x86/x86_64-vdso-fix-the-vdso-address-randomization-algor.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0223-workqueue-use-get-cpu-light.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0224-epoll.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0225-mm-vmalloc.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0226-debugobjects-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0227-jump-label-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0228-skbufhead-raw-lock.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0229-x86-no-perf-irq-work-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0230-console-make-rt-friendly.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0231-printk-Disable-migration-instead-of-preemption.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0232-power-use-generic-rwsem-on-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0233-power-disable-highmem-on-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0234-arm-disable-highmem-on-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0235-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0236-mips-disable-highmem-on-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0237-net-Avoid-livelock-in-net_tx_action-on-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0238-ping-sysrq.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0239-kgdb-serial-Short-term-workaround.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0240-add-sys-kernel-realtime-entry.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0241-mm-rt-kmap_atomic-scheduling.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0242-ipc-sem-Rework-semaphore-wakeups.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0243-sysrq-Allow-immediate-Magic-SysRq-output-for-PREEMPT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0244-x86-kvm-require-const-tsc-for-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0245-scsi-fcoe-rt-aware.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0246-x86-crypto-Reduce-preempt-disabled-regions.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0247-dm-Make-rt-aware.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0248-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0249-seqlock-Prevent-rt-starvation.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0250-timer-Fix-hotplug-for-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0251-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0252-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0253-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0254-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0255-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0256-softirq-Check-preemption-after-reenabling-interrupts.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0257-rt-Introduce-cpu_chill.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0258-fs-dcache-Use-cpu_chill-in-trylock-loops.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0259-net-Use-cpu_chill-instead-of-cpu_relax.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0260-kconfig-disable-a-few-options-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0261-kconfig-preempt-rt-full.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0262-rt-Make-migrate_disable-enable-and-__rt_mutex_init-n.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0263-scsi-qla2xxx-Use-local_irq_save_nort-in-qla2x00_poll.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0264-net-RT-REmove-preemption-disabling-in-netif_rx.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0265-mips-remove-smp-reserve-lock.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0266-Latency-histogramms-Cope-with-backwards-running-loca.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0267-Latency-histograms-Adjust-timer-if-already-elapsed-w.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0268-Disable-RT_GROUP_SCHED-in-PREEMPT_RT_FULL.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0269-Latency-histograms-Detect-another-yet-overlooked-sha.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0270-slab-Prevent-local-lock-deadlock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0271-fs-jbd-pull-your-plug-when-waiting-for-space.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0272-perf-Make-swevent-hrtimer-run-in-irq-instead-of-soft.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0273-cpu-rt-Rework-cpu-down-for-PREEMPT_RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0274-cpu-rt-Fix-cpu_hotplug-variable-initialization.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0275-time-rt-Fix-up-leap-second-backport-for-RT-changes.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0277-fix-printk-flush-of-messages.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0278-random-Make-it-work-on-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0279-softirq-Init-softirq-local-lock-after-per-cpu-sectio.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0280-mm-slab-Fix-potential-deadlock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0281-mm-page_alloc-Use-local_lock_on-instead-of-plain-spi.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0282-rt-rwsem-rwlock-lockdep-annotations.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0283-sched-Better-debug-output-for-might-sleep.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0284-stomp_machine-Use-mutex_trylock-when-called-from-ina.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0285-slab-Fix-up-stable-merge-of-slab-init_lock_keys.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0286-hrtimer-Raise-softirq-if-hrtimer-irq-stalled.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0287-rcu-Disable-RCU_FAST_NO_HZ-on-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0288-net-netfilter-Serialize-xt_write_recseq-sections-on-.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0289-sched-Adjust-sched_reset_on_fork-when-nothing-else-c.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0290-sched-Queue-RT-tasks-to-head-when-prio-drops.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0291-sched-Consider-pi-boosting-in-setscheduler.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0292-drivers-tty-pl011-irq-disable-madness.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0293-mmci-Remove-bogus-local_irq_save.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0294-sched-Init-idle-on_rq-in-init_idle.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0295-sched-Check-for-idle-task-in-might_sleep.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0296-mm-swap-Initialize-local-locks-early.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0297-x86-32-Use-kmap-switch-for-non-highmem-as-well.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0298-acpi-rt-Convert-acpi_gbl_hardware-lock-back-to-a-raw.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0299-serial-Imx-Fix-recursive-locking-bug.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0300-wait-simple-Simple-waitqueue-implementation.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0301-rcutiny-Use-simple-waitqueue.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0302-rcutiny-Fix-typo-of-using-swake_up-instead-of-swait_.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0303-x86-mce-Defer-mce-wakeups-to-threads-for-PREEMPT_RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0304-swap-Use-unique-local-lock-name-for-swap_lock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0305-sched-Add-is_idle_task-to-handle-invalidated-uses-of.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0306-sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0307-x86-mce-fix-mce-timer-interval.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0308-genirq-Set-irq-thread-to-RT-priority-on-creation.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0309-list_bl.h-make-list-head-locking-RT-safe.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0310-list_bl.h-fix-it-for-for-SMP-DEBUG_SPINLOCK.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0311-timers-prepare-for-full-preemption-improve.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0312-kernel-cpu-fix-cpu-down-problem-if-kthread-s-cpu-is-.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0313-kernel-hotplug-restore-original-cpu-mask-oncpu-down.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0314-drm-i915-drop-trace_i915_gem_ring_dispatch-on-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0315-rt-ntp-Move-call-to-schedule_delayed_work-to-helper-.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0316-hwlat-detector-Update-hwlat_detector-to-add-outer-lo.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0317-hwlat-detect-trace-Export-trace_clock_local-for-hwla.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0318-hwlat-detector-Use-trace_clock_local-if-available.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0319-hwlat-detector-Use-thread-instead-of-stop-machine.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0320-genirq-do-not-invoke-the-affinity-callback-via-a-wor.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0321-genirq-Set-the-irq-thread-policy-without-checking-CA.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0322-hwlat-detector-Don-t-ignore-threshold-module-paramet.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0323-mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0324-drm-remove-preempt_disable-from-drm_calc_vbltimestam.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0325-cpu_down-move-migrate_enable-back.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0326-swait-Add-a-few-more-users.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0327-lockdep-Correctly-annotate-hardirq-context-in-irq_ex.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0328-rtmutex-use-a-trylock-for-waiter-lock-in-trylock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0329-smp-introduce-a-generic-on_each_cpu_mask-function.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0330-smp-add-func-to-IPI-cpus-based-on-parameter-func.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0331-fs-only-send-IPI-to-invalidate-LRU-BH-when-needed.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0332-rcutree-rcu_bh_qs-disable-irq-while-calling-rcu_pree.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0334-rt-Make-cpu_chill-use-hrtimer-instead-of-msleep.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0335-kernel-hrtimer-be-non-freezeable-in-cpu_chill.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0336-arm-unwind-use-a-raw_spin_lock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0337-Revert-swait-Add-a-few-more-users.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0338-net-sched-dev_deactivate_many-use-msleep-1-instead-o.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0339-fs-jbd2-pull-your-plug-when-waiting-for-space.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0340-cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0341-net-gianfar-do-not-disable-interrupts.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0342-rcu-make-RCU_BOOST-default-on-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0343-Fix-latency-histogram-after-hrtimer-Set-expiry-time-.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0344-sched-Do-not-clear-PF_NO_SETAFFINITY-flag-in-select_.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0345-workqueue-Prevent-deadlock-stall-on-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0346-hrtimer-fix-the-miss-of-hrtimer_peek_ahead_timers-in.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0347-lockdep-Fix-backport-of-Correctly-annotate-hardirq-c.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0348-Linux-3.2.64-rt94-REBASE.patch
Modified:
   dists/wheezy-security/linux/   (props changed)
   dists/wheezy-security/linux/debian/changelog
   dists/wheezy-security/linux/debian/config/defines
   dists/wheezy-security/linux/debian/patches/features/all/drm/drm-3.4.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0001-Revert-workqueue-skip-nr_running-sanity-check-in-wor.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0002-x86-Call-idle-notifier-after-irq_enter.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0003-slab-lockdep-Annotate-all-slab-caches.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0004-x86-kprobes-Remove-remove-bogus-preempt_enable.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0005-x86-hpet-Disable-MSI-on-Lenovo-W510.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0006-block-Shorten-interrupt-disabled-regions.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0007-sched-Distangle-worker-accounting-from-rq-3Elock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0008-mips-enable-interrupts-in-signal.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0009-arm-enable-interrupts-in-signal-code.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0010-powerpc-85xx-Mark-cascade-irq-IRQF_NO_THREAD.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0011-powerpc-wsp-Mark-opb-cascade-handler-IRQF_NO_THREAD.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0012-powerpc-Mark-IPI-interrupts-IRQF_NO_THREAD.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0013-powerpc-Allow-irq-threading.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0014-sched-Keep-period-timer-ticking-when-throttling-acti.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0015-sched-Do-not-throttle-due-to-PI-boosting.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0016-time-Remove-bogus-comments.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0017-x86-vdso-Remove-bogus-locking-in-update_vsyscall_tz.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0018-x86-vdso-Use-seqcount-instead-of-seqlock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0019-ia64-vsyscall-Use-seqcount-instead-of-seqlock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0020-seqlock-Remove-unused-functions.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0021-seqlock-Use-seqcount.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0022-vfs-fs_struct-Move-code-out-of-seqcount-write-sectio.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0023-timekeeping-Split-xtime_lock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0024-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0025-mm-memcg-shorten-preempt-disabled-section-around-eve.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0026-tracing-Account-for-preempt-off-in-preempt_schedule.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0027-signal-revert-ptrace-preempt-magic.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0028-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0029-arm-Allow-forced-irq-threading.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0030-preempt-rt-Convert-arm-boot_lock-to-raw.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0031-sched-Create-schedule_preempt_disabled.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0032-sched-Use-schedule_preempt_disabled.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0033-signals-Do-not-wakeup-self.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0034-posix-timers-Prevent-broadcast-signals.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0035-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0036-signal-x86-Delay-calling-signals-in-atomic.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0037-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0038-drivers-random-Reduce-preempt-disabled-region.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0039-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0040-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0041-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0042-drivers-net-Use-disable_irq_nosync-in-8139too.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0043-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0044-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0045-preempt-mark-legitimated-no-resched-sites.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0046-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0047-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0048-mm-pagefault_disabled.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0049-mm-raw_pagefault_disable.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0050-filemap-fix-up.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0051-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0052-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0053-suspend-Prevent-might-sleep-splats.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0054-OF-Fixup-resursive-locking-code-paths.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0055-of-convert-devtree-lock.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0056-list-add-list-last-entry.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0057-mm-page-alloc-use-list-last-entry.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0058-mm-slab-move-debug-out.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0059-rwsem-inlcude-fix.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0060-sysctl-include-fix.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0061-net-flip-lock-dep-thingy.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0062-softirq-thread-do-softirq.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0063-softirq-split-out-code.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0064-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0065-x86-32-fix-signal-crap.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0066-x86-Do-not-disable-preemption-in-int3-on-32bit.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0067-rcu-Reduce-lock-section.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0068-locking-various-init-fixes.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0069-wait-Provide-__wake_up_all_locked.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0070-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0071-latency-hist.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0072-hwlatdetect.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0073-localversion.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0074-early-printk-consolidate.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0075-printk-kill.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0076-printk-force_early_printk-boot-param-to-help-with-de.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0077-rt-preempt-base-config.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0078-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0079-rt-local_irq_-variants-depending-on-RT-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0080-preempt-Provide-preempt_-_-no-rt-variants.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0081-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0082-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0083-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0084-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0085-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0086-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0087-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0088-usb-Use-local_irq_-_nort-variants.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0089-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0090-mm-scatterlist-dont-disable-irqs-on-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0091-signal-fix-up-rcu-wreckage.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0092-net-wireless-warn-nort.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0093-mm-Replace-cgroup_page-bit-spinlock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0094-buffer_head-Replace-bh_uptodate_lock-for-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0095-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0096-genirq-Disable-DEBUG_SHIRQ-for-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0097-genirq-Disable-random-call-on-preempt-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0098-genirq-disable-irqpoll-on-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0099-genirq-force-threading.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0100-drivers-net-fix-livelock-issues.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0101-drivers-net-vortex-fix-locking-issues.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0102-drivers-net-gianfar-Make-RT-aware.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0103-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0104-local-var.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0105-rt-local-irq-lock.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0106-cpu-rt-variants.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0107-mm-slab-wrap-functions.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0108-slab-Fix-__do_drain-to-use-the-right-array-cache.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0109-mm-More-lock-breaks-in-slab.c.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0110-mm-page_alloc-rt-friendly-per-cpu-pages.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0111-mm-page_alloc-reduce-lock-sections-further.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0112-mm-page-alloc-fix.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0113-mm-convert-swap-to-percpu-locked.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0114-mm-vmstat-fix-the-irq-lock-asymetry.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0115-mm-make-vmstat-rt-aware.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0116-mm-shrink-the-page-frame-to-rt-size.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0117-ARM-Initialize-ptl-lock-for-vector-page.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0118-mm-Allow-only-slab-on-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0119-radix-tree-rt-aware.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0120-panic-disable-random-on-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0121-ipc-Make-the-ipc-code-rt-aware.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0122-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0123-relay-fix-timer-madness.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0124-net-ipv4-route-use-locks-on-up-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0125-workqueue-avoid-the-lock-in-cpu-dying.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0126-timers-prepare-for-full-preemption.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0127-timers-preempt-rt-support.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0128-timers-fix-timer-hotplug-on-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0129-timers-mov-printk_tick-to-soft-interrupt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0130-timer-delay-waking-softirqs-from-the-jiffy-tick.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0131-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0132-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0133-hrtimers-prepare-full-preemption.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0134-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0135-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0136-hrtimer-fix-reprogram-madness.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0137-timer-fd-Prevent-live-lock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0138-posix-timers-thread-posix-cpu-timers-on-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0139-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0140-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0141-sched-delay-put-task.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0142-sched-limit-nr-migrate.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0143-sched-mmdrop-delayed.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0144-sched-rt-mutex-wakeup.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0145-sched-prevent-idle-boost.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0146-sched-might-sleep-do-not-account-rcu-depth.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0147-sched-Break-out-from-load_balancing-on-rq_lock-conte.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0148-sched-cond-resched.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0149-cond-resched-softirq-fix.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0150-sched-no-work-when-pi-blocked.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0151-cond-resched-lock-rt-tweak.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0152-sched-disable-ttwu-queue.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0153-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0154-sched-ttwu-Return-success-when-only-changing-the-sav.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0155-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0156-stomp-machine-mark-stomper-thread.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0157-stomp-machine-raw-lock.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0158-hotplug-Lightweight-get-online-cpus.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0159-hotplug-sync_unplug-No.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0160-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0161-sched-migrate-disable.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0162-hotplug-use-migrate-disable.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0163-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0164-ftrace-migrate-disable-tracing.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0165-tracing-Show-padding-as-unsigned-short.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0166-migrate-disable-rt-variant.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0167-sched-Optimize-migrate_disable.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0168-sched-Generic-migrate_disable.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0169-sched-rt-Fix-migrate_enable-thinko.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0170-sched-teach-migrate_disable-about-atomic-contexts.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0171-sched-Postpone-actual-migration-disalbe-to-schedule.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0172-sched-Do-not-compare-cpu-masks-in-scheduler.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0173-sched-Have-migrate_disable-ignore-bounded-threads.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0174-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0175-ftrace-crap.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0176-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0177-net-netif_rx_ni-migrate-disable.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0178-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0179-lockdep-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0180-mutex-no-spin-on-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0181-softirq-local-lock.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0182-softirq-Export-in_serving_softirq.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0183-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0184-softirq-Fix-unplug-deadlock.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0185-softirq-disable-softirq-stacks-for-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0186-softirq-make-fifo.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0187-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0188-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0189-local-vars-migrate-disable.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0190-md-raid5-Make-raid5_percpu-handling-RT-aware.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0191-rtmutex-lock-killable.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0192-rtmutex-futex-prepare-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0193-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0194-rt-mutex-add-sleeping-spinlocks-support.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0195-spinlock-types-separate-raw.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0196-rtmutex-avoid-include-hell.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0197-rt-add-rt-spinlocks.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0198-rt-add-rt-to-mutex-headers.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0199-rwsem-add-rt-variant.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0200-rt-Add-the-preempt-rt-lock-replacement-APIs.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0201-rwlocks-Fix-section-mismatch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0202-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0203-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0204-rcu-Frob-softirq-test.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0205-rcu-Merge-RCU-bh-into-RCU-preempt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0206-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0207-rcu-more-fallout.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0208-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0209-rt-rcutree-Move-misplaced-prototype.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0210-lglocks-rt.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0211-serial-8250-Clean-up-the-locking-for-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0212-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0213-drivers-tty-fix-omap-lock-crap.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0214-rt-Improve-the-serial-console-PASS_LIMIT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0215-fs-namespace-preemption-fix.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0216-mm-protect-activate-switch-mm.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0217-fs-block-rt-support.patch.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0218-fs-ntfs-disable-interrupt-only-on-RT.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0219-x86-Convert-mce-timer-to-hrtimer.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0220-x86-stackprotector-Avoid-random-pool-on-rt.patch
   dists/wheezy-security/linux/debian/patches/features/all/rt/0221-x86-Use-generic-rwsem_spinlocks-on-rt.patch
   dists/wheezy-security/linux/debian/patches/series
   dists/wheezy-security/linux/debian/patches/series-rt

Modified: dists/wheezy-security/linux/debian/changelog
==============================================================================
--- dists/wheezy-security/linux/debian/changelog	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/changelog	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,3 +1,129 @@
+linux (3.2.68-2) UNRELEASED; urgency=medium
+
+  * IB/core: Prevent integer overflow in ib_umem_get address arithmetic
+    (CVE-2014-8159)
+  * netfilter: nf_conntrack: reserve two bytes for nf_ct_ext->len
+    (CVE-2014-9715)
+  * net: llc: use correct size for sysctl timeout entries (CVE-2015-2041)
+  * net: rds: use correct size for max unacked packets and bytes
+    (CVE-2015-2042)
+  * xen-pciback: limit guest control of command register (CVE-2015-2150)
+  * [amd64] asm/entry: Remove a bogus 'ret_from_fork' optimization
+    (CVE-2015-2830)
+  * ipv6: Don't reduce hop limit for an interface (CVE-2015-2922)
+
+ -- Ben Hutchings <ben at decadent.org.uk>  Mon, 13 Apr 2015 00:33:14 +0100
+
+linux (3.2.68-1) wheezy; urgency=medium
+
+  * New upstream stable update:
+    http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.66
+    - net: sctp: fix memory leak in auth key management
+    - tcp: md5: remove spinlock usage in fast path
+    - tcp: md5: do not use alloc_percpu()
+    - ipv4: dst_entry leak in ip_send_unicast_reply()
+    - net: sctp: use MAX_HEADER for headroom reserve in output path
+    http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.67
+    - eCryptfs: Force RO mount when encrypted view is enabled
+    - ipv4: Remove all uses of LL_ALLOCATED_SPACE
+    - ipv6: Remove all uses of LL_ALLOCATED_SPACE
+    - ipv6: mld: fix add_grhead skb_over_panic for devs with large MTUs
+    - [s390*] KVM: flush CPU on load control
+    - UBI: Fix invalid vfree()
+    - drbd: merge_bvec_fn: properly remap bvm->bi_bdev
+    - PCI: Restore detection of read-only BARs
+    - genhd: check for int overflow in disk_expand_part_tbl()
+    - USB: cdc-acm: check for valid interfaces
+    - dm space map metadata: fix sm_bootstrap_get_nr_blocks()
+    - [x86] iommu/vt-d: Fix an off-by-one bug in __domain_mapping()
+    - KEYS: Fix stale key registration at error path
+    - Btrfs: fix fs corruption on transaction abort if device supports discard
+    - ncpfs: return proper error from NCP_IOC_SETROOT ioctl
+    - mac80211: fix multicast LED blinking and counter (regression in 3.2.65)
+    - genirq: Prevent proc race against freeing of irq descriptors
+    - decompress_bunzip2: off by one in get_next_block()
+    - [x86] tls: Disallow unusual TLS segments
+    - iscsi-target: Fail connection on short sendmsg writes
+    - ceph: introduce global empty snap context
+    - [x86] tls: Don't validate lm in set_thread_area() after all
+    - ocfs2: fix journal commit deadlock
+    - udf: Verify i_size when loading inode
+    - udf: Verify symlink size before loading it
+    - udf: Treat symlink component of type 2 as /
+    - udf: Check path length when reading symlink
+    - udf: Check component length before reading it
+    - crypto: af_alg - fix backlog handling
+    - Revert "tcp: Apply device TSO segment limit earlier"
+      (regression in 3.2.30)
+    - virtio_pci: defer kfree until release callback
+    - mm: propagate error from stack expansion even for guard page
+    - time: settimeofday: Validate the values of tv from user
+    - regulator: core: fix race condition in regulator_put()
+    - mm: prevent endless growth of anon_vma hierarchy
+    - mm: protect set_page_dirty() from ongoing truncation
+    - HID: roccat: potential out of bounds in pyra_sysfs_write_settings()
+    - USB: console: fix potential use after free
+    - mm: Don't count the stack guard page towards RLIMIT_STACK
+    - mm: fix corner case in anon_vma endless growing prevention
+    - can: dev: fix crtlmode_supported check
+    - net: sctp: fix race for one-to-many sockets in sendmsg's auto associate
+    - libata: allow sata_sil24 to opt-out of tag ordered submission
+      (regression in 3.2.62)
+    - nl80211: fix per-station group key get/del and memory leak
+    - vm: add VM_FAULT_SIGSEGV handling support
+    - vm: make stack guard page errors return VM_FAULT_SIGSEGV rather than
+      SIGBUS
+    - ACPI / EC: Fix regression due to conflicting firmware behavior between
+      Samsung and Acer. (regression in 3.2.63)
+    - [s390*] 3215: fix tty output containing tabs (Closes: #758264)
+    - fsnotify: next_i is freed during fsnotify_unmount_inodes.
+    - PCI: Handle read-only BARs on AMD CS553x devices
+    http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.68
+    - mm: pagewalk: call pte_hole() for VM_PFNMAP during walk_page_range
+      (regression in 3.2.46)
+    - nilfs2: fix deadlock of segment constructor over I_SYNC flag
+    - staging: comedi: cb_pcidas64: fix incorrect AI range code handling
+    - time: adjtimex: Validate the ADJ_FREQUENCY values
+    - ntp: Fixup adjtimex freq validation on 32-bit systems
+    - Bluetooth: ath3k: workaround the compatibility issue with xHCI controller
+      (maybe fixes #778463)
+
+  [ Ben Hutchings ]
+  * drm, agp: Update to 3.4.106:
+    - [x86] drm/vmwgfx: Filter out modes those cannot be supported by the
+      current VRAM size.
+    - drm/radeon: add missing crtc unlock when setting up the MC
+  * [rt] Update to 3.2.68-rt99:
+    - Replace the plist functions with rt_mutex_enqueue{_pi}() and
+      rt_mutex_dequeue{_pi}() like upstream -rt does
+    - rtmutex: Simplify rtmutex_slowtrylock()
+    - rtmutex: Simplify and document try_to_take_rtmutex()
+    - rtmutex: No need to keep task ref for lock owner check
+    - rtmutex: Clarify the boost/deboost part
+    - rtmutex: Document pi chain walk
+    - rtmutex: Simplify remove_waiter()
+    - rtmutex: Confine deadlock logic to futex
+    - rtmutex: Cleanup deadlock detector debug logic
+    - rtmutex: Avoid pointless requeueing in the deadlock detection chain walk
+    - futex: Make unlock_pi more robust
+    - futex: Use futex_top_waiter() in lookup_pi_state()
+    - futex: Split out the waiter check from lookup_pi_state()
+    - futex: Split out the first waiter attachment from lookup_pi_state()
+    - futex: Simplify futex_lock_pi_atomic() and make it more robust
+    - rt-mutex: avoid a NULL pointer dereference on deadlock
+    - x86: UV: raw_spinlock conversion
+    - scheduling while atomic in cgroup code
+    - work-simple: Simple work queue implemenation
+    - sunrpc: make svc_xprt_do_enqueue() use get_cpu_light()
+    - fs,btrfs: fix rt deadlock on extent_buffer->lock
+  * hpsa: Update device ID tables (Closes: #781548)
+  * NFSv4: Fix oops in nfs4_handle_exception when server returns
+    NFS4ERR_OPENMODE (Closes: #731439)
+  * netfilter: ipset: Check and reject crazy /0 input parameters
+    (Closes: #732689)
+
+ -- Ben Hutchings <ben at decadent.org.uk>  Tue, 31 Mar 2015 09:30:16 +0100
+
 linux (3.2.65-1+deb7u2) wheezy-security; urgency=medium
 
   * splice: Apply generic position and size checks to each write

Modified: dists/wheezy-security/linux/debian/config/defines
==============================================================================
--- dists/wheezy-security/linux/debian/config/defines	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/config/defines	Fri Apr 24 14:53:49 2015	(r22529)
@@ -64,6 +64,17 @@
  g450_mnp2f
  matrox_*
  matroxfb_*
+# Should not be used from OOT
+ tcp_alloc_md5sig_pool
+ tcp_free_md5sig_pool
+ tcp_get_md5sig_pool
+ tcp_put_md5sig_pool
+ module:sound/i2c/other/snd-ak4113
+ module:sound/i2c/other/snd-ak4114
+ module:net/ipv4/netfilter/nf_conntrac*
+ module:net/ipv4/netfilter/nf_nat
+ module:net/netfilter/ipvs/*
+ module:net/netfilter/nf_conntrac*
 
 [base]
 arches:

Copied: dists/wheezy-security/linux/debian/patches/bugfix/all/ib-core-prevent-integer-overflow-in-ib_umem_get.patch (from r22528, dists/wheezy/linux/debian/patches/bugfix/all/ib-core-prevent-integer-overflow-in-ib_umem_get.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/bugfix/all/ib-core-prevent-integer-overflow-in-ib_umem_get.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/bugfix/all/ib-core-prevent-integer-overflow-in-ib_umem_get.patch)
@@ -0,0 +1,38 @@
+From: Shachar Raindel <raindel at mellanox.com>
+Date: Sun, 04 Jan 2015 18:30:32 +0200
+Subject: IB/core: Prevent integer overflow in ib_umem_get address arithmetic
+Origin: https://marc.info/?l=oss-security&m=142672196502144&w=2
+
+Properly verify that the resulting page aligned end address is larger
+than both the start address and the length of the memory area
+requested.
+
+Both the start and length arguments for ib_umem_get are controlled by
+the user. A misbehaving user can provide values which will cause an
+integer overflow when calculating the page aligned end address.
+
+This overflow can cause also miscalculation of the number of pages
+mapped, and additional logic issues.
+
+Signed-off-by: Shachar Raindel <raindel at mellanox.com>
+Signed-off-by: Jack Morgenstein <jackm at mellanox.com>
+Signed-off-by: Or Gerlitz <ogerlitz at mellanox.com>
+---
+
+--- a/drivers/infiniband/core/umem.c
++++ b/drivers/infiniband/core/umem.c
+@@ -94,6 +94,14 @@ struct ib_umem *ib_umem_get(struct ib_uc
+ 	if (dmasync)
+ 		dma_set_attr(DMA_ATTR_WRITE_BARRIER, &attrs);
+ 
++	/*
++	 * If the combination of the addr and size requested for this memory
++	 * region causes an integer overflow, return error.
++	 */
++	if ((PAGE_ALIGN(addr + size) <= size) ||
++	    (PAGE_ALIGN(addr + size) <= addr))
++		return ERR_PTR(-EINVAL);
++
+ 	if (!can_do_mlock())
+ 		return ERR_PTR(-EPERM);
+ 

Copied: dists/wheezy-security/linux/debian/patches/bugfix/all/ipv6-don-t-reduce-hop-limit-for-an-interface.patch (from r22528, dists/wheezy/linux/debian/patches/bugfix/all/ipv6-don-t-reduce-hop-limit-for-an-interface.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/bugfix/all/ipv6-don-t-reduce-hop-limit-for-an-interface.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/bugfix/all/ipv6-don-t-reduce-hop-limit-for-an-interface.patch)
@@ -0,0 +1,44 @@
+From: "D.S. Ljungmark" <ljungmark at modio.se>
+Date: Wed, 25 Mar 2015 09:28:15 +0100
+Subject: ipv6: Don't reduce hop limit for an interface
+Origin: https://git.kernel.org/linus/6fd99094de2b83d1d4c8457f2c83483b2828e75a
+
+A local route may have a lower hop_limit set than global routes do.
+
+RFC 3756, Section 4.2.7, "Parameter Spoofing"
+
+>   1.  The attacker includes a Current Hop Limit of one or another small
+>       number which the attacker knows will cause legitimate packets to
+>       be dropped before they reach their destination.
+
+>   As an example, one possible approach to mitigate this threat is to
+>   ignore very small hop limits.  The nodes could implement a
+>   configurable minimum hop limit, and ignore attempts to set it below
+>   said limit.
+
+Signed-off-by: D.S. Ljungmark <ljungmark at modio.se>
+Acked-by: Hannes Frederic Sowa <hannes at stressinduktion.org>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+[bwh: Backported to 3.2: adjust ND_PRINTK() usage]
+---
+ net/ipv6/ndisc.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+--- a/net/ipv6/ndisc.c
++++ b/net/ipv6/ndisc.c
+@@ -1279,7 +1279,14 @@ static void ndisc_router_discovery(struc
+ 		rt->rt6i_expires = jiffies + (HZ * lifetime);
+ 
+ 	if (ra_msg->icmph.icmp6_hop_limit) {
+-		in6_dev->cnf.hop_limit = ra_msg->icmph.icmp6_hop_limit;
++		/* Only set hop_limit on the interface if it is higher than
++		 * the current hop_limit.
++		 */
++		if (in6_dev->cnf.hop_limit < ra_msg->icmph.icmp6_hop_limit) {
++			in6_dev->cnf.hop_limit = ra_msg->icmph.icmp6_hop_limit;
++		} else {
++			ND_PRINTK2(KERN_WARNING "RA: Got route advertisement with lower hop_limit than current\n");
++		}
+ 		if (rt)
+ 			dst_metric_set(&rt->dst, RTAX_HOPLIMIT,
+ 				       ra_msg->icmph.icmp6_hop_limit);

Copied: dists/wheezy-security/linux/debian/patches/bugfix/all/net-llc-use-correct-size-for-sysctl-timeout-entries.patch (from r22528, dists/wheezy/linux/debian/patches/bugfix/all/net-llc-use-correct-size-for-sysctl-timeout-entries.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/bugfix/all/net-llc-use-correct-size-for-sysctl-timeout-entries.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/bugfix/all/net-llc-use-correct-size-for-sysctl-timeout-entries.patch)
@@ -0,0 +1,50 @@
+From: Sasha Levin <sasha.levin at oracle.com>
+Date: Fri, 23 Jan 2015 20:47:00 -0500
+Subject: net: llc: use correct size for sysctl timeout entries
+Origin: https://git.kernel.org/linus/6b8d9117ccb4f81b1244aafa7bc70ef8fa45fc49
+
+The timeout entries are sizeof(int) rather than sizeof(long), which
+means that when they were getting read we'd also leak kernel memory
+to userspace along with the timeout values.
+
+Signed-off-by: Sasha Levin <sasha.levin at oracle.com>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+---
+ net/llc/sysctl_net_llc.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/net/llc/sysctl_net_llc.c
++++ b/net/llc/sysctl_net_llc.c
+@@ -17,28 +17,28 @@ static struct ctl_table llc2_timeout_tab
+ 	{
+ 		.procname	= "ack",
+ 		.data		= &sysctl_llc2_ack_timeout,
+-		.maxlen		= sizeof(long),
++		.maxlen		= sizeof(sysctl_llc2_ack_timeout),
+ 		.mode		= 0644,
+ 		.proc_handler   = proc_dointvec_jiffies,
+ 	},
+ 	{
+ 		.procname	= "busy",
+ 		.data		= &sysctl_llc2_busy_timeout,
+-		.maxlen		= sizeof(long),
++		.maxlen		= sizeof(sysctl_llc2_busy_timeout),
+ 		.mode		= 0644,
+ 		.proc_handler   = proc_dointvec_jiffies,
+ 	},
+ 	{
+ 		.procname	= "p",
+ 		.data		= &sysctl_llc2_p_timeout,
+-		.maxlen		= sizeof(long),
++		.maxlen		= sizeof(sysctl_llc2_p_timeout),
+ 		.mode		= 0644,
+ 		.proc_handler   = proc_dointvec_jiffies,
+ 	},
+ 	{
+ 		.procname	= "rej",
+ 		.data		= &sysctl_llc2_rej_timeout,
+-		.maxlen		= sizeof(long),
++		.maxlen		= sizeof(sysctl_llc2_rej_timeout),
+ 		.mode		= 0644,
+ 		.proc_handler   = proc_dointvec_jiffies,
+ 	},

Copied: dists/wheezy-security/linux/debian/patches/bugfix/all/net-rds-use-correct-size-for-max-unacked-packets-and.patch (from r22528, dists/wheezy/linux/debian/patches/bugfix/all/net-rds-use-correct-size-for-max-unacked-packets-and.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/bugfix/all/net-rds-use-correct-size-for-max-unacked-packets-and.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/bugfix/all/net-rds-use-correct-size-for-max-unacked-packets-and.patch)
@@ -0,0 +1,38 @@
+From: Sasha Levin <sasha.levin at oracle.com>
+Date: Tue, 3 Feb 2015 08:55:58 -0500
+Subject: net: rds: use correct size for max unacked packets and bytes
+Origin: https://git.kernel.org/linus/db27ebb111e9f69efece08e4cb6a34ff980f8896
+
+Max unacked packets/bytes is an int while sizeof(long) was used in the
+sysctl table.
+
+This means that when they were getting read we'd also leak kernel memory
+to userspace along with the timeout values.
+
+Signed-off-by: Sasha Levin <sasha.levin at oracle.com>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+---
+ net/rds/sysctl.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/net/rds/sysctl.c b/net/rds/sysctl.c
+index c3b0cd4..c173f69 100644
+--- a/net/rds/sysctl.c
++++ b/net/rds/sysctl.c
+@@ -71,14 +71,14 @@ static struct ctl_table rds_sysctl_rds_table[] = {
+ 	{
+ 		.procname	= "max_unacked_packets",
+ 		.data		= &rds_sysctl_max_unacked_packets,
+-		.maxlen         = sizeof(unsigned long),
++		.maxlen         = sizeof(int),
+ 		.mode           = 0644,
+ 		.proc_handler   = proc_dointvec,
+ 	},
+ 	{
+ 		.procname	= "max_unacked_bytes",
+ 		.data		= &rds_sysctl_max_unacked_bytes,
+-		.maxlen         = sizeof(unsigned long),
++		.maxlen         = sizeof(int),
+ 		.mode           = 0644,
+ 		.proc_handler   = proc_dointvec,
+ 	},

Copied: dists/wheezy-security/linux/debian/patches/bugfix/all/netfilter-ipset-Check-and-reject-crazy-0-input-param.patch (from r22528, dists/wheezy/linux/debian/patches/bugfix/all/netfilter-ipset-Check-and-reject-crazy-0-input-param.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/bugfix/all/netfilter-ipset-Check-and-reject-crazy-0-input-param.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/bugfix/all/netfilter-ipset-Check-and-reject-crazy-0-input-param.patch)
@@ -0,0 +1,126 @@
+From: Jozsef Kadlecsik <kadlec at blackhole.kfki.hu>
+Date: Tue, 4 Sep 2012 17:45:59 +0200
+Subject: netfilter: ipset: Check and reject crazy /0 input parameters
+Origin: https://git.kernel.org/linus/b9fed748185a96b7cfe74afac4bd228e8af16f01
+
+bitmap:ip and bitmap:ip,mac type did not reject such a crazy range
+when created and using such a set results in a kernel crash.
+The hash types just silently ignored such parameters.
+
+Reject invalid /0 input parameters explicitely.
+
+Signed-off-by: Jozsef Kadlecsik <kadlec at blackhole.kfki.hu>
+---
+ net/netfilter/ipset/ip_set_bitmap_ip.c      | 10 ++++++----
+ net/netfilter/ipset/ip_set_bitmap_ipmac.c   |  5 +++--
+ net/netfilter/ipset/ip_set_hash_ip.c        |  2 +-
+ net/netfilter/ipset/ip_set_hash_ipport.c    |  2 +-
+ net/netfilter/ipset/ip_set_hash_ipportip.c  |  2 +-
+ net/netfilter/ipset/ip_set_hash_ipportnet.c |  2 +-
+ 6 files changed, 13 insertions(+), 10 deletions(-)
+
+--- a/net/netfilter/ipset/ip_set_bitmap_ip.c
++++ b/net/netfilter/ipset/ip_set_bitmap_ip.c
+@@ -282,7 +282,7 @@ bitmap_ip_uadt(struct ip_set *set, struc
+ 	} else if (tb[IPSET_ATTR_CIDR]) {
+ 		u8 cidr = nla_get_u8(tb[IPSET_ATTR_CIDR]);
+ 
+-		if (cidr > 32)
++		if (!cidr || cidr > 32)
+ 			return -IPSET_ERR_INVALID_CIDR;
+ 		ip_set_mask_from_to(ip, ip_to, cidr);
+ 	} else
+@@ -451,7 +451,8 @@ static int
+ bitmap_ip_create(struct ip_set *set, struct nlattr *tb[], u32 flags)
+ {
+ 	struct bitmap_ip *map;
+-	u32 first_ip, last_ip, hosts, elements;
++	u32 first_ip, last_ip, hosts;
++	u64 elements;
+ 	u8 netmask = 32;
+ 	int ret;
+ 
+@@ -494,7 +495,7 @@ bitmap_ip_create(struct ip_set *set, str
+ 
+ 	if (netmask == 32) {
+ 		hosts = 1;
+-		elements = last_ip - first_ip + 1;
++		elements = (u64)last_ip - first_ip + 1;
+ 	} else {
+ 		u8 mask_bits;
+ 		u32 mask;
+@@ -512,7 +513,8 @@ bitmap_ip_create(struct ip_set *set, str
+ 	if (elements > IPSET_BITMAP_MAX_RANGE + 1)
+ 		return -IPSET_ERR_BITMAP_RANGE_SIZE;
+ 
+-	pr_debug("hosts %u, elements %u\n", hosts, elements);
++	pr_debug("hosts %u, elements %llu\n",
++		 hosts, (unsigned long long)elements);
+ 
+ 	map = kzalloc(sizeof(*map), GFP_KERNEL);
+ 	if (!map)
+--- a/net/netfilter/ipset/ip_set_bitmap_ipmac.c
++++ b/net/netfilter/ipset/ip_set_bitmap_ipmac.c
+@@ -552,7 +552,8 @@ static int
+ bitmap_ipmac_create(struct ip_set *set, struct nlattr *tb[],
+ 		    u32 flags)
+ {
+-	u32 first_ip, last_ip, elements;
++	u32 first_ip, last_ip;
++	u64 elements;
+ 	struct bitmap_ipmac *map;
+ 	int ret;
+ 
+@@ -583,7 +584,7 @@ bitmap_ipmac_create(struct ip_set *set,
+ 	} else
+ 		return -IPSET_ERR_PROTOCOL;
+ 
+-	elements = last_ip - first_ip + 1;
++	elements = (u64)last_ip - first_ip + 1;
+ 
+ 	if (elements > IPSET_BITMAP_MAX_RANGE + 1)
+ 		return -IPSET_ERR_BITMAP_RANGE_SIZE;
+--- a/net/netfilter/ipset/ip_set_hash_ip.c
++++ b/net/netfilter/ipset/ip_set_hash_ip.c
+@@ -177,7 +177,7 @@ hash_ip4_uadt(struct ip_set *set, struct
+ 	} else if (tb[IPSET_ATTR_CIDR]) {
+ 		u8 cidr = nla_get_u8(tb[IPSET_ATTR_CIDR]);
+ 
+-		if (cidr > 32)
++		if (!cidr || cidr > 32)
+ 			return -IPSET_ERR_INVALID_CIDR;
+ 		ip_set_mask_from_to(ip, ip_to, cidr);
+ 	} else
+--- a/net/netfilter/ipset/ip_set_hash_ipport.c
++++ b/net/netfilter/ipset/ip_set_hash_ipport.c
+@@ -216,7 +216,7 @@ hash_ipport4_uadt(struct ip_set *set, st
+ 	} else if (tb[IPSET_ATTR_CIDR]) {
+ 		u8 cidr = nla_get_u8(tb[IPSET_ATTR_CIDR]);
+ 
+-		if (cidr > 32)
++		if (!cidr || cidr > 32)
+ 			return -IPSET_ERR_INVALID_CIDR;
+ 		ip_set_mask_from_to(ip, ip_to, cidr);
+ 	} else
+--- a/net/netfilter/ipset/ip_set_hash_ipportip.c
++++ b/net/netfilter/ipset/ip_set_hash_ipportip.c
+@@ -224,7 +224,7 @@ hash_ipportip4_uadt(struct ip_set *set,
+ 	} else if (tb[IPSET_ATTR_CIDR]) {
+ 		u8 cidr = nla_get_u8(tb[IPSET_ATTR_CIDR]);
+ 
+-		if (cidr > 32)
++		if (!cidr || cidr > 32)
+ 			return -IPSET_ERR_INVALID_CIDR;
+ 		ip_set_mask_from_to(ip, ip_to, cidr);
+ 	} else
+--- a/net/netfilter/ipset/ip_set_hash_ipportnet.c
++++ b/net/netfilter/ipset/ip_set_hash_ipportnet.c
+@@ -255,7 +255,7 @@ hash_ipportnet4_uadt(struct ip_set *set,
+ 	} else if (tb[IPSET_ATTR_CIDR]) {
+ 		u8 cidr = nla_get_u8(tb[IPSET_ATTR_CIDR]);
+ 
+-		if (cidr > 32)
++		if (!cidr || cidr > 32)
+ 			return -IPSET_ERR_INVALID_CIDR;
+ 		ip_set_mask_from_to(ip, ip_to, cidr);
+ 	}

Copied: dists/wheezy-security/linux/debian/patches/bugfix/all/netfilter-nf_conntrack-reserve-two-bytes-for-nf_ct_e.patch (from r22528, dists/wheezy/linux/debian/patches/bugfix/all/netfilter-nf_conntrack-reserve-two-bytes-for-nf_ct_e.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/bugfix/all/netfilter-nf_conntrack-reserve-two-bytes-for-nf_ct_e.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/bugfix/all/netfilter-nf_conntrack-reserve-two-bytes-for-nf_ct_e.patch)
@@ -0,0 +1,48 @@
+From: Andrey Vagin <avagin at openvz.org>
+Date: Fri, 28 Mar 2014 13:54:32 +0400
+Subject: netfilter: nf_conntrack: reserve two bytes for nf_ct_ext->len
+Origin: https://git.kernel.org/linus/223b02d923ecd7c84cf9780bb3686f455d279279
+
+"len" contains sizeof(nf_ct_ext) and size of extensions. In a worst
+case it can contain all extensions. Bellow you can find sizes for all
+types of extensions. Their sum is definitely bigger than 256.
+
+nf_ct_ext_types[0]->len = 24
+nf_ct_ext_types[1]->len = 32
+nf_ct_ext_types[2]->len = 24
+nf_ct_ext_types[3]->len = 32
+nf_ct_ext_types[4]->len = 152
+nf_ct_ext_types[5]->len = 2
+nf_ct_ext_types[6]->len = 16
+nf_ct_ext_types[7]->len = 8
+
+I have seen "len" up to 280 and my host has crashes w/o this patch.
+
+The right way to fix this problem is reducing the size of the ecache
+extension (4) and Florian is going to do this, but these changes will
+be quite large to be appropriate for a stable tree.
+
+Fixes: 5b423f6a40a0 (netfilter: nf_conntrack: fix racy timer handling with reliable)
+Cc: Pablo Neira Ayuso <pablo at netfilter.org>
+Cc: Patrick McHardy <kaber at trash.net>
+Cc: Jozsef Kadlecsik <kadlec at blackhole.kfki.hu>
+Cc: "David S. Miller" <davem at davemloft.net>
+Signed-off-by: Andrey Vagin <avagin at openvz.org>
+Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
+---
+ include/net/netfilter/nf_conntrack_extend.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/include/net/netfilter/nf_conntrack_extend.h
++++ b/include/net/netfilter/nf_conntrack_extend.h
+@@ -33,8 +33,8 @@ enum nf_ct_ext_id {
+ /* Extensions: optional stuff which isn't permanently in struct. */
+ struct nf_ct_ext {
+ 	struct rcu_head rcu;
+-	u8 offset[NF_CT_EXT_NUM];
+-	u8 len;
++	u16 offset[NF_CT_EXT_NUM];
++	u16 len;
+ 	char data[0];
+ };
+ 

Copied: dists/wheezy-security/linux/debian/patches/bugfix/all/nfsv4-minor-cleanups-for-nfs4_handle_exception-and-n.patch (from r22528, dists/wheezy/linux/debian/patches/bugfix/all/nfsv4-minor-cleanups-for-nfs4_handle_exception-and-n.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/bugfix/all/nfsv4-minor-cleanups-for-nfs4_handle_exception-and-n.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/bugfix/all/nfsv4-minor-cleanups-for-nfs4_handle_exception-and-n.patch)
@@ -0,0 +1,47 @@
+From: Trond Myklebust <Trond.Myklebust at netapp.com>
+Date: Tue, 27 Mar 2012 18:31:25 -0400
+Subject: NFSv4: Minor cleanups for nfs4_handle_exception and
+ nfs4_async_handle_error
+Origin: https://git.kernel.org/linus/14977489ffdb80d4caf5a184ba41b23b02fbacd9
+Bug-Debian: https://bugs.debian.org/731439
+
+Signed-off-by: Trond Myklebust <Trond.Myklebust at netapp.com>
+---
+ fs/nfs/nfs4proc.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+--- a/fs/nfs/nfs4proc.c
++++ b/fs/nfs/nfs4proc.c
+@@ -267,7 +267,7 @@ static int nfs4_handle_exception(struct
+ 		case 0:
+ 			return 0;
+ 		case -NFS4ERR_OPENMODE:
+-			if (nfs_have_delegation(inode, FMODE_READ)) {
++			if (inode && nfs_have_delegation(inode, FMODE_READ)) {
+ 				nfs_inode_return_delegation(inode);
+ 				exception->retry = 1;
+ 				return 0;
+@@ -279,10 +279,9 @@ static int nfs4_handle_exception(struct
+ 		case -NFS4ERR_DELEG_REVOKED:
+ 		case -NFS4ERR_ADMIN_REVOKED:
+ 		case -NFS4ERR_BAD_STATEID:
+-			if (state != NULL)
+-				nfs_remove_bad_delegation(state->inode);
+ 			if (state == NULL)
+ 				break;
++			nfs_remove_bad_delegation(state->inode);
+ 			nfs4_schedule_stateid_recovery(server, state);
+ 			goto wait_on_recovery;
+ 		case -NFS4ERR_EXPIRED:
+@@ -3746,8 +3745,9 @@ nfs4_async_handle_error(struct rpc_task
+ 		case -NFS4ERR_DELEG_REVOKED:
+ 		case -NFS4ERR_ADMIN_REVOKED:
+ 		case -NFS4ERR_BAD_STATEID:
+-			if (state != NULL)
+-				nfs_remove_bad_delegation(state->inode);
++			if (state == NULL)
++				break;
++			nfs_remove_bad_delegation(state->inode);
+ 		case -NFS4ERR_OPENMODE:
+ 			if (state == NULL)
+ 				break;

Copied: dists/wheezy-security/linux/debian/patches/bugfix/all/xen-pciback-limit-guest-control-of-command-register.patch (from r22528, dists/wheezy/linux/debian/patches/bugfix/all/xen-pciback-limit-guest-control-of-command-register.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/bugfix/all/xen-pciback-limit-guest-control-of-command-register.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/bugfix/all/xen-pciback-limit-guest-control-of-command-register.patch)
@@ -0,0 +1,150 @@
+From: Jan Beulich <JBeulich at suse.com>
+Date: Wed, 11 Mar 2015 13:51:17 +0000
+Subject: xen-pciback: limit guest control of command register
+Origin: https://git.kernel.org/linus/af6fc858a35b90e89ea7a7ee58e66628c55c776b
+
+Otherwise the guest can abuse that control to cause e.g. PCIe
+Unsupported Request responses by disabling memory and/or I/O decoding
+and subsequently causing (CPU side) accesses to the respective address
+ranges, which (depending on system configuration) may be fatal to the
+host.
+
+Note that to alter any of the bits collected together as
+PCI_COMMAND_GUEST permissive mode is now required to be enabled
+globally or on the specific device.
+
+This is CVE-2015-2150 / XSA-120.
+
+Signed-off-by: Jan Beulich <jbeulich at suse.com>
+Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
+Cc: <stable at vger.kernel.org>
+Signed-off-by: David Vrabel <david.vrabel at citrix.com>
+[bwh: Backported to 3.2: also change 'permissive' variable from int to bool]
+---
+ drivers/xen/xen-pciback/conf_space.c        |  2 +-
+ drivers/xen/xen-pciback/conf_space.h        |  2 +
+ drivers/xen/xen-pciback/conf_space_header.c | 61 +++++++++++++++++++++++------
+ 3 files changed, 51 insertions(+), 14 deletions(-)
+
+--- a/drivers/xen/xen-pciback/conf_space.c
++++ b/drivers/xen/xen-pciback/conf_space.c
+@@ -16,7 +16,7 @@
+ #include "conf_space.h"
+ #include "conf_space_quirks.h"
+ 
+-static int permissive;
++bool permissive;
+ module_param(permissive, bool, 0644);
+ 
+ /* This is where xen_pcibk_read_config_byte, xen_pcibk_read_config_word,
+--- a/drivers/xen/xen-pciback/conf_space.h
++++ b/drivers/xen/xen-pciback/conf_space.h
+@@ -64,6 +64,8 @@ struct config_field_entry {
+ 	void *data;
+ };
+ 
++extern bool permissive;
++
+ #define OFFSET(cfg_entry) ((cfg_entry)->base_offset+(cfg_entry)->field->offset)
+ 
+ /* Add fields to a device - the add_fields macro expects to get a pointer to
+--- a/drivers/xen/xen-pciback/conf_space_header.c
++++ b/drivers/xen/xen-pciback/conf_space_header.c
+@@ -9,6 +9,10 @@
+ #include "pciback.h"
+ #include "conf_space.h"
+ 
++struct pci_cmd_info {
++	u16 val;
++};
++
+ struct pci_bar_info {
+ 	u32 val;
+ 	u32 len_val;
+@@ -18,22 +22,36 @@ struct pci_bar_info {
+ #define is_enable_cmd(value) ((value)&(PCI_COMMAND_MEMORY|PCI_COMMAND_IO))
+ #define is_master_cmd(value) ((value)&PCI_COMMAND_MASTER)
+ 
+-static int command_read(struct pci_dev *dev, int offset, u16 *value, void *data)
++/* Bits guests are allowed to control in permissive mode. */
++#define PCI_COMMAND_GUEST (PCI_COMMAND_MASTER|PCI_COMMAND_SPECIAL| \
++			   PCI_COMMAND_INVALIDATE|PCI_COMMAND_VGA_PALETTE| \
++			   PCI_COMMAND_WAIT|PCI_COMMAND_FAST_BACK)
++
++static void *command_init(struct pci_dev *dev, int offset)
+ {
+-	int i;
+-	int ret;
++	struct pci_cmd_info *cmd = kmalloc(sizeof(*cmd), GFP_KERNEL);
++	int err;
+ 
+-	ret = xen_pcibk_read_config_word(dev, offset, value, data);
+-	if (!pci_is_enabled(dev))
+-		return ret;
+-
+-	for (i = 0; i < PCI_ROM_RESOURCE; i++) {
+-		if (dev->resource[i].flags & IORESOURCE_IO)
+-			*value |= PCI_COMMAND_IO;
+-		if (dev->resource[i].flags & IORESOURCE_MEM)
+-			*value |= PCI_COMMAND_MEMORY;
++	if (!cmd)
++		return ERR_PTR(-ENOMEM);
++
++	err = pci_read_config_word(dev, PCI_COMMAND, &cmd->val);
++	if (err) {
++		kfree(cmd);
++		return ERR_PTR(err);
+ 	}
+ 
++	return cmd;
++}
++
++static int command_read(struct pci_dev *dev, int offset, u16 *value, void *data)
++{
++	int ret = pci_read_config_word(dev, offset, value);
++	const struct pci_cmd_info *cmd = data;
++
++	*value &= PCI_COMMAND_GUEST;
++	*value |= cmd->val & ~PCI_COMMAND_GUEST;
++
+ 	return ret;
+ }
+ 
+@@ -41,6 +59,8 @@ static int command_write(struct pci_dev
+ {
+ 	struct xen_pcibk_dev_data *dev_data;
+ 	int err;
++	u16 val;
++	struct pci_cmd_info *cmd = data;
+ 
+ 	dev_data = pci_get_drvdata(dev);
+ 	if (!pci_is_enabled(dev) && is_enable_cmd(value)) {
+@@ -83,6 +103,19 @@ static int command_write(struct pci_dev
+ 		}
+ 	}
+ 
++	cmd->val = value;
++
++	if (!permissive && (!dev_data || !dev_data->permissive))
++		return 0;
++
++	/* Only allow the guest to control certain bits. */
++	err = pci_read_config_word(dev, offset, &val);
++	if (err || val == value)
++		return err;
++
++	value &= PCI_COMMAND_GUEST;
++	value |= val & ~PCI_COMMAND_GUEST;
++
+ 	return pci_write_config_word(dev, offset, value);
+ }
+ 
+@@ -282,6 +315,8 @@ static const struct config_field header_
+ 	{
+ 	 .offset    = PCI_COMMAND,
+ 	 .size      = 2,
++	 .init      = command_init,
++	 .release   = bar_release,
+ 	 .u.w.read  = command_read,
+ 	 .u.w.write = command_write,
+ 	},

Copied: dists/wheezy-security/linux/debian/patches/bugfix/x86/x86-asm-entry-64-remove-a-bogus-ret_from_fork-optimi.patch (from r22528, dists/wheezy/linux/debian/patches/bugfix/x86/x86-asm-entry-64-remove-a-bogus-ret_from_fork-optimi.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/bugfix/x86/x86-asm-entry-64-remove-a-bogus-ret_from_fork-optimi.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/bugfix/x86/x86-asm-entry-64-remove-a-bogus-ret_from_fork-optimi.patch)
@@ -0,0 +1,51 @@
+From: Andy Lutomirski <luto at amacapital.net>
+Date: Thu, 5 Mar 2015 01:09:44 +0100
+Subject: x86/asm/entry/64: Remove a bogus 'ret_from_fork' optimization
+Origin: https://git.kernel.org/linus/956421fbb74c3a6261903f3836c0740187cf038b
+
+'ret_from_fork' checks TIF_IA32 to determine whether 'pt_regs' and
+the related state make sense for 'ret_from_sys_call'.  This is
+entirely the wrong check.  TS_COMPAT would make a little more
+sense, but there's really no point in keeping this optimization
+at all.
+
+This fixes a return to the wrong user CS if we came from int
+0x80 in a 64-bit task.
+
+Signed-off-by: Andy Lutomirski <luto at amacapital.net>
+Cc: Borislav Petkov <bp at alien8.de>
+Cc: Denys Vlasenko <dvlasenk at redhat.com>
+Cc: H. Peter Anvin <hpa at zytor.com>
+Cc: Linus Torvalds <torvalds at linux-foundation.org>
+Cc: Oleg Nesterov <oleg at redhat.com>
+Cc: Thomas Gleixner <tglx at linutronix.de>
+Cc: <stable at vger.kernel.org>
+Link: http://lkml.kernel.org/r/4710be56d76ef994ddf59087aad98c000fbab9a4.1424989793.git.luto@amacapital.net
+[ Backported from tip:x86/asm. ]
+Signed-off-by: Ingo Molnar <mingo at kernel.org>
+---
+ arch/x86/kernel/entry_64.S | 13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
+
+--- a/arch/x86/kernel/entry_64.S
++++ b/arch/x86/kernel/entry_64.S
+@@ -414,11 +414,14 @@ ENTRY(ret_from_fork)
+ 	testl $3, CS-ARGOFFSET(%rsp)		# from kernel_thread?
+ 	je   int_ret_from_sys_call
+ 
+-	testl $_TIF_IA32, TI_flags(%rcx)	# 32-bit compat task needs IRET
+-	jnz  int_ret_from_sys_call
+-
+-	RESTORE_TOP_OF_STACK %rdi, -ARGOFFSET
+-	jmp ret_from_sys_call			# go to the SYSRET fastpath
++	/*
++	 * By the time we get here, we have no idea whether our pt_regs,
++	 * ti flags, and ti status came from the 64-bit SYSCALL fast path,
++	 * the slow path, or one of the ia32entry paths.
++	 * Use int_ret_from_sys_call to return, since it can safely handle
++	 * all of the above.
++	 */
++	jmp  int_ret_from_sys_call
+ 
+ 	CFI_ENDPROC
+ END(ret_from_fork)

Copied: dists/wheezy-security/linux/debian/patches/debian/rmap-fix-abi-change-in-3.2.67.patch (from r22528, dists/wheezy/linux/debian/patches/debian/rmap-fix-abi-change-in-3.2.67.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/debian/rmap-fix-abi-change-in-3.2.67.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/debian/rmap-fix-abi-change-in-3.2.67.patch)
@@ -0,0 +1,49 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Mon, 23 Feb 2015 05:09:41 +0000
+Subject: rmap: Fix ABI change in 3.2.67
+
+'mm: prevent endless growth of anon_vma hierarchy' in 3.2.67 added
+two new members to struct anon_vma.
+
+This structure is always allocated by anon_vma_alloc() so it is OK to
+add members, but we need to add them at the end and hide them from
+genksyms.
+
+--- a/include/linux/rmap.h
++++ b/include/linux/rmap.h
+@@ -37,16 +37,6 @@ struct anon_vma {
+ 	atomic_t refcount;
+ 
+ 	/*
+-	 * Count of child anon_vmas and VMAs which points to this anon_vma.
+-	 *
+-	 * This counter is used for making decision about reusing anon_vma
+-	 * instead of forking new one. See comments in function anon_vma_clone.
+-	 */
+-	unsigned degree;
+-
+-	struct anon_vma *parent;	/* Parent of this anon_vma */
+-
+-	/*
+ 	 * NOTE: the LSB of the head.next is set by
+ 	 * mm_take_all_locks() _after_ taking the above lock. So the
+ 	 * head must only be read/written after taking the above lock
+@@ -55,6 +45,18 @@ struct anon_vma {
+ 	 * mm_take_all_locks() (mm_all_locks_mutex).
+ 	 */
+ 	struct list_head head;	/* Chain of private "related" vmas */
++
++#ifndef __GENKSYMS__
++	/*
++	 * Count of child anon_vmas and VMAs which points to this anon_vma.
++	 *
++	 * This counter is used for making decision about reusing anon_vma
++	 * instead of forking new one. See comments in function anon_vma_clone.
++	 */
++	unsigned degree;
++
++	struct anon_vma *parent;	/* Parent of this anon_vma */
++#endif
+ };
+ 
+ /*

Copied: dists/wheezy-security/linux/debian/patches/debian/sock-fix-abi-change-in-3.2.67.patch (from r22528, dists/wheezy/linux/debian/patches/debian/sock-fix-abi-change-in-3.2.67.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/debian/sock-fix-abi-change-in-3.2.67.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/debian/sock-fix-abi-change-in-3.2.67.patch)
@@ -0,0 +1,17 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Mon, 23 Feb 2015 03:29:32 +0000
+Subject: sock: Fix ABI change in 3.2.67
+
+'Revert "tcp: Apply device TSO segment limit earlier"' in 3.2.67
+removed sock::sk_gso_max_segs.  Add it back.
+
+--- a/include/net/sock.h
++++ b/include/net/sock.h
+@@ -310,6 +310,7 @@ struct sock {
+ 	int			sk_route_nocaps;
+ 	int			sk_gso_type;
+ 	unsigned int		sk_gso_max_size;
++	u16			sk_gso_max_segs;	/* now unused */
+ 	int			sk_rcvlowat;
+ 	unsigned long	        sk_lingertime;
+ 	struct sk_buff_head	sk_error_queue;

Modified: dists/wheezy-security/linux/debian/patches/features/all/drm/drm-3.4.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/drm/drm-3.4.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/drm/drm-3.4.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -351,7 +351,7 @@
  		return -EINVAL;
  
 diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
-index 3f1799b..c61e672 100644
+index 09851ce..c61e672 100644
 --- a/drivers/gpu/drm/drm_crtc.c
 +++ b/drivers/gpu/drm/drm_crtc.c
 @@ -36,11 +36,7 @@
@@ -1584,16 +1584,28 @@
   *
   * Lookup the FB given its ID and return info about it.
   *
-@@ -1814,7 +2347,7 @@ int drm_mode_getfb(struct drm_device *dev,
+@@ -1814,18 +2347,8 @@ int drm_mode_getfb(struct drm_device *dev,
  	r->width = fb->width;
  	r->depth = fb->depth;
  	r->bpp = fb->bits_per_pixel;
 -	r->pitch = fb->pitch;
+-	if (file_priv->is_master || capable(CAP_SYS_ADMIN)) {
+-		ret = fb->funcs->create_handle(fb, file_priv, &r->handle);
+-	} else {
+-		/* GET_FB() is an unprivileged ioctl so we must not
+-		 * return a buffer-handle to non-master processes! For
+-		 * backwards-compatibility reasons, we cannot make
+-		 * GET_FB() privileged, so just return an invalid handle
+-		 * for non-masters. */
+-		r->handle = 0;
+-		ret = 0;
+-	}
 +	r->pitch = fb->pitches[0];
- 	fb->funcs->create_handle(fb, file_priv, &r->handle);
++	fb->funcs->create_handle(fb, file_priv, &r->handle);
  
  out:
-@@ -1846,7 +2379,7 @@ int drm_mode_dirtyfb_ioctl(struct drm_device *dev,
+ 	mutex_unlock(&dev->mode_config.mutex);
+@@ -1856,7 +2379,7 @@ int drm_mode_dirtyfb_ioctl(struct drm_device *dev,
  	fb = obj_to_fb(obj);
  
  	num_clips = r->num_clips;
@@ -1602,7 +1614,7 @@
  
  	if (!num_clips != !clips_ptr) {
  		ret = -EINVAL;
-@@ -1931,38 +2464,48 @@ void drm_fb_release(struct drm_file *priv)
+@@ -1941,38 +2464,48 @@ void drm_fb_release(struct drm_file *priv)
   *
   * Add @mode to @connector's user mode list.
   */
@@ -1670,7 +1682,7 @@
  }
  EXPORT_SYMBOL(drm_mode_attachmode_crtc);
  
-@@ -2041,9 +2584,14 @@ int drm_mode_attachmode_ioctl(struct drm_device *dev,
+@@ -2051,9 +2584,14 @@ int drm_mode_attachmode_ioctl(struct drm_device *dev,
  		goto out;
  	}
  
@@ -1687,7 +1699,7 @@
  out:
  	mutex_unlock(&dev->mode_config.mutex);
  	return ret;
-@@ -2084,7 +2632,12 @@ int drm_mode_detachmode_ioctl(struct drm_device *dev,
+@@ -2094,7 +2632,12 @@ int drm_mode_detachmode_ioctl(struct drm_device *dev,
  	}
  	connector = obj_to_connector(obj);
  
@@ -1701,7 +1713,7 @@
  	ret = drm_mode_detachmode(dev, connector, &mode);
  out:
  	mutex_unlock(&dev->mode_config.mutex);
-@@ -2095,6 +2648,7 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
+@@ -2105,6 +2648,7 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
  					 const char *name, int num_values)
  {
  	struct drm_property *property = NULL;
@@ -1709,7 +1721,7 @@
  
  	property = kzalloc(sizeof(struct drm_property), GFP_KERNEL);
  	if (!property)
-@@ -2106,7 +2660,10 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
+@@ -2116,7 +2660,10 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
  			goto fail;
  	}
  
@@ -1721,7 +1733,7 @@
  	property->flags = flags;
  	property->num_values = num_values;
  	INIT_LIST_HEAD(&property->enum_blob_list);
-@@ -2119,11 +2676,59 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
+@@ -2129,11 +2676,59 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
  	list_add_tail(&property->head, &dev->mode_config.property_list);
  	return property;
  fail:
@@ -1781,7 +1793,7 @@
  int drm_property_add_enum(struct drm_property *property, int index,
  			  uint64_t value, const char *name)
  {
-@@ -2242,7 +2847,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -2252,7 +2847,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
  	struct drm_property_enum *prop_enum;
  	struct drm_mode_property_enum __user *enum_ptr;
  	struct drm_property_blob *prop_blob;
@@ -1790,7 +1802,7 @@
  	uint64_t __user *values_ptr;
  	uint32_t __user *blob_length_ptr;
  
-@@ -2272,7 +2877,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -2282,7 +2877,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
  	out_resp->flags = property->flags;
  
  	if ((out_resp->count_values >= value_count) && value_count) {
@@ -1799,7 +1811,7 @@
  		for (i = 0; i < value_count; i++) {
  			if (copy_to_user(values_ptr + i, &property->values[i], sizeof(uint64_t))) {
  				ret = -EFAULT;
-@@ -2285,7 +2890,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -2295,7 +2890,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
  	if (property->flags & DRM_MODE_PROP_ENUM) {
  		if ((out_resp->count_enum_blobs >= enum_count) && enum_count) {
  			copied = 0;
@@ -1808,7 +1820,7 @@
  			list_for_each_entry(prop_enum, &property->enum_blob_list, head) {
  
  				if (copy_to_user(&enum_ptr[copied].value, &prop_enum->value, sizeof(uint64_t))) {
-@@ -2307,8 +2912,8 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -2317,8 +2912,8 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
  	if (property->flags & DRM_MODE_PROP_BLOB) {
  		if ((out_resp->count_enum_blobs >= blob_count) && blob_count) {
  			copied = 0;
@@ -1819,7 +1831,7 @@
  
  			list_for_each_entry(prop_blob, &property->enum_blob_list, head) {
  				if (put_user(prop_blob->base.id, blob_id_ptr + copied)) {
-@@ -2335,6 +2940,7 @@ static struct drm_property_blob *drm_property_create_blob(struct drm_device *dev
+@@ -2345,6 +2940,7 @@ static struct drm_property_blob *drm_property_create_blob(struct drm_device *dev
  							  void *data)
  {
  	struct drm_property_blob *blob;
@@ -1827,7 +1839,7 @@
  
  	if (!length || !data)
  		return NULL;
-@@ -2343,13 +2949,16 @@ static struct drm_property_blob *drm_property_create_blob(struct drm_device *dev
+@@ -2353,13 +2949,16 @@ static struct drm_property_blob *drm_property_create_blob(struct drm_device *dev
  	if (!blob)
  		return NULL;
  
@@ -1847,7 +1859,7 @@
  	list_add_tail(&blob->head, &dev->mode_config.property_blob_list);
  	return blob;
  }
-@@ -2369,7 +2978,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
+@@ -2379,7 +2978,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
  	struct drm_mode_get_blob *out_resp = data;
  	struct drm_property_blob *blob;
  	int ret = 0;
@@ -1856,7 +1868,7 @@
  
  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
  		return -EINVAL;
-@@ -2383,7 +2992,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
+@@ -2393,7 +2992,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
  	blob = obj_to_blob(obj);
  
  	if (out_resp->length == blob->length) {
@@ -1865,7 +1877,7 @@
  		if (copy_to_user(blob_ptr, blob->data, blob->length)){
  			ret = -EFAULT;
  			goto done;
-@@ -2528,7 +3137,7 @@ void drm_mode_connector_detach_encoder(struct drm_connector *connector,
+@@ -2538,7 +3137,7 @@ void drm_mode_connector_detach_encoder(struct drm_connector *connector,
  }
  EXPORT_SYMBOL(drm_mode_connector_detach_encoder);
  
@@ -1874,7 +1886,7 @@
  				  int gamma_size)
  {
  	crtc->gamma_size = gamma_size;
-@@ -2536,10 +3145,10 @@ bool drm_mode_crtc_set_gamma_size(struct drm_crtc *crtc,
+@@ -2546,10 +3145,10 @@ bool drm_mode_crtc_set_gamma_size(struct drm_crtc *crtc,
  	crtc->gamma_store = kzalloc(gamma_size * sizeof(uint16_t) * 3, GFP_KERNEL);
  	if (!crtc->gamma_store) {
  		crtc->gamma_size = 0;
@@ -1887,7 +1899,7 @@
  }
  EXPORT_SYMBOL(drm_mode_crtc_set_gamma_size);
  
-@@ -2685,6 +3294,18 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
+@@ -2695,6 +3294,18 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
  		goto out;
  	fb = obj_to_fb(obj);
  
@@ -1906,7 +1918,7 @@
  	if (page_flip->flags & DRM_MODE_PAGE_FLIP_EVENT) {
  		ret = -ENOMEM;
  		spin_lock_irqsave(&dev->event_lock, flags);
-@@ -2714,10 +3335,12 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
+@@ -2724,10 +3335,12 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
  
  	ret = crtc->funcs->page_flip(crtc, fb, e);
  	if (ret) {
@@ -1923,7 +1935,7 @@
  	}
  
  out:
-@@ -2777,3 +3400,72 @@ int drm_mode_destroy_dumb_ioctl(struct drm_device *dev,
+@@ -2787,3 +3400,72 @@ int drm_mode_destroy_dumb_ioctl(struct drm_device *dev,
  
  	return dev->driver->dumb_destroy(file_priv, dev, args->handle);
  }
@@ -44495,7 +44507,7 @@
  #define __i915_read(x, y) \
  	u##x i915_read##x(struct drm_i915_private *dev_priv, u32 reg);
 diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
-index 2865b44..2ac4ded 100644
+index 315a49e..2ac4ded 100644
 --- a/drivers/gpu/drm/i915/i915_gem.c
 +++ b/drivers/gpu/drm/i915/i915_gem.c
 @@ -58,6 +58,7 @@ static void i915_gem_free_object_tail(struct drm_i915_gem_object *obj);
@@ -45168,7 +45180,35 @@
  		if (ret)
  			return ret;
  	}
-@@ -2434,7 +2379,8 @@ i915_gem_object_flush_fence(struct drm_i915_gem_object *obj,
+@@ -2248,13 +2193,6 @@ static int sandybridge_write_fence_reg(struct drm_i915_gem_object *obj,
+ 	int regnum = obj->fence_reg;
+ 	uint64_t val;
+ 
+-	/* Adjust fence size to match tiled area */
+-	if (obj->tiling_mode != I915_TILING_NONE) {
+-		uint32_t row_size = obj->stride *
+-			(obj->tiling_mode == I915_TILING_Y ? 32 : 8);
+-		size = (size / row_size) * row_size;
+-	}
+-
+ 	val = (uint64_t)((obj->gtt_offset + size - 4096) &
+ 			 0xfffff000) << 32;
+ 	val |= obj->gtt_offset & 0xfffff000;
+@@ -2292,13 +2230,6 @@ static int i965_write_fence_reg(struct drm_i915_gem_object *obj,
+ 	int regnum = obj->fence_reg;
+ 	uint64_t val;
+ 
+-	/* Adjust fence size to match tiled area */
+-	if (obj->tiling_mode != I915_TILING_NONE) {
+-		uint32_t row_size = obj->stride *
+-			(obj->tiling_mode == I915_TILING_Y ? 32 : 8);
+-		size = (size / row_size) * row_size;
+-	}
+-
+ 	val = (uint64_t)((obj->gtt_offset + size - 4096) &
+ 		    0xfffff000) << 32;
+ 	val |= obj->gtt_offset & 0xfffff000;
+@@ -2448,7 +2379,8 @@ i915_gem_object_flush_fence(struct drm_i915_gem_object *obj,
  		if (!ring_passed_seqno(obj->last_fenced_ring,
  				       obj->last_fenced_seqno)) {
  			ret = i915_wait_request(obj->last_fenced_ring,
@@ -45178,7 +45218,7 @@
  			if (ret)
  				return ret;
  		}
-@@ -2466,6 +2412,8 @@ i915_gem_object_put_fence(struct drm_i915_gem_object *obj)
+@@ -2480,6 +2412,8 @@ i915_gem_object_put_fence(struct drm_i915_gem_object *obj)
  
  	if (obj->fence_reg != I915_FENCE_REG_NONE) {
  		struct drm_i915_private *dev_priv = obj->base.dev->dev_private;
@@ -45187,7 +45227,7 @@
  		i915_gem_clear_fence_reg(obj->base.dev,
  					 &dev_priv->fence_regs[obj->fence_reg]);
  
-@@ -2490,7 +2438,7 @@ i915_find_fence_reg(struct drm_device *dev,
+@@ -2504,7 +2438,7 @@ i915_find_fence_reg(struct drm_device *dev,
  		if (!reg->obj)
  			return reg;
  
@@ -45196,7 +45236,7 @@
  			avail = reg;
  	}
  
-@@ -2500,7 +2448,7 @@ i915_find_fence_reg(struct drm_device *dev,
+@@ -2514,7 +2448,7 @@ i915_find_fence_reg(struct drm_device *dev,
  	/* None available, try to steal one or wait for a user to finish */
  	avail = first = NULL;
  	list_for_each_entry(reg, &dev_priv->mm.fence_list, lru_list) {
@@ -45205,7 +45245,7 @@
  			continue;
  
  		if (first == NULL)
-@@ -2580,7 +2528,8 @@ i915_gem_object_get_fence(struct drm_i915_gem_object *obj,
+@@ -2594,7 +2528,8 @@ i915_gem_object_get_fence(struct drm_i915_gem_object *obj,
  				if (!ring_passed_seqno(obj->last_fenced_ring,
  						       reg->setup_seqno)) {
  					ret = i915_wait_request(obj->last_fenced_ring,
@@ -45215,7 +45255,7 @@
  					if (ret)
  						return ret;
  				}
-@@ -2599,7 +2548,7 @@ i915_gem_object_get_fence(struct drm_i915_gem_object *obj,
+@@ -2613,7 +2548,7 @@ i915_gem_object_get_fence(struct drm_i915_gem_object *obj,
  
  	reg = i915_find_fence_reg(dev, pipelined);
  	if (reg == NULL)
@@ -45224,7 +45264,7 @@
  
  	ret = i915_gem_object_flush_fence(obj, pipelined);
  	if (ret)
-@@ -2710,6 +2659,7 @@ i915_gem_clear_fence_reg(struct drm_device *dev,
+@@ -2724,6 +2659,7 @@ i915_gem_clear_fence_reg(struct drm_device *dev,
  	list_del_init(&reg->lru_list);
  	reg->obj = NULL;
  	reg->setup_seqno = 0;
@@ -45232,7 +45272,7 @@
  }
  
  /**
-@@ -2996,6 +2946,8 @@ i915_gem_object_set_to_gtt_domain(struct drm_i915_gem_object *obj, bool write)
+@@ -3010,6 +2946,8 @@ i915_gem_object_set_to_gtt_domain(struct drm_i915_gem_object *obj, bool write)
  int i915_gem_object_set_cache_level(struct drm_i915_gem_object *obj,
  				    enum i915_cache_level cache_level)
  {
@@ -45241,7 +45281,7 @@
  	int ret;
  
  	if (obj->cache_level == cache_level)
-@@ -3024,6 +2976,9 @@ int i915_gem_object_set_cache_level(struct drm_i915_gem_object *obj,
+@@ -3038,6 +2976,9 @@ int i915_gem_object_set_cache_level(struct drm_i915_gem_object *obj,
  		}
  
  		i915_gem_gtt_rebind_object(obj, cache_level);
@@ -45251,7 +45291,7 @@
  	}
  
  	if (cache_level == I915_CACHE_NONE) {
-@@ -3362,8 +3317,8 @@ i915_gem_ring_throttle(struct drm_device *dev, struct drm_file *file)
+@@ -3376,8 +3317,8 @@ i915_gem_ring_throttle(struct drm_device *dev, struct drm_file *file)
  
  			if (ret == 0 && atomic_read(&dev_priv->mm.wedged))
  				ret = -EIO;
@@ -45262,7 +45302,7 @@
  				    atomic_read(&dev_priv->mm.wedged), 3000)) {
  			ret = -EBUSY;
  		}
-@@ -3674,8 +3629,8 @@ struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev,
+@@ -3688,8 +3629,8 @@ struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev,
  	obj->base.write_domain = I915_GEM_DOMAIN_CPU;
  	obj->base.read_domains = I915_GEM_DOMAIN_CPU;
  
@@ -45273,7 +45313,7 @@
  		 * cache) for about a 10% performance improvement
  		 * compared to uncached.  Graphics requests other than
  		 * display scanout are coherent with the CPU in
-@@ -3765,7 +3720,7 @@ i915_gem_idle(struct drm_device *dev)
+@@ -3779,7 +3720,7 @@ i915_gem_idle(struct drm_device *dev)
  		return 0;
  	}
  
@@ -45282,7 +45322,7 @@
  	if (ret) {
  		mutex_unlock(&dev->struct_mutex);
  		return ret;
-@@ -3800,12 +3755,91 @@ i915_gem_idle(struct drm_device *dev)
+@@ -3814,12 +3755,91 @@ i915_gem_idle(struct drm_device *dev)
  	return 0;
  }
  
@@ -45375,7 +45415,7 @@
  	ret = intel_init_render_ring_buffer(dev);
  	if (ret)
  		return ret;
-@@ -3824,6 +3858,8 @@ i915_gem_init_ringbuffer(struct drm_device *dev)
+@@ -3838,6 +3858,8 @@ i915_gem_init_ringbuffer(struct drm_device *dev)
  
  	dev_priv->next_seqno = 1;
  
@@ -45384,7 +45424,7 @@
  	return 0;
  
  cleanup_bsd_ring:
-@@ -3861,7 +3897,7 @@ i915_gem_entervt_ioctl(struct drm_device *dev, void *data,
+@@ -3875,7 +3897,7 @@ i915_gem_entervt_ioctl(struct drm_device *dev, void *data,
  	mutex_lock(&dev->struct_mutex);
  	dev_priv->mm.suspended = 0;
  
@@ -45393,7 +45433,7 @@
  	if (ret != 0) {
  		mutex_unlock(&dev->struct_mutex);
  		return ret;
-@@ -4256,7 +4292,7 @@ rescan:
+@@ -4270,7 +4292,7 @@ rescan:
  		 * This has a dramatic impact to reduce the number of
  		 * OOM-killer events whilst running the GPU aggressively.
  		 */
@@ -50052,7 +50092,7 @@
  	}
  
 diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
-index fadd021..77190cc 100644
+index 4da8182..77190cc 100644
 --- a/drivers/gpu/drm/i915/intel_lvds.c
 +++ b/drivers/gpu/drm/i915/intel_lvds.c
 @@ -187,6 +187,8 @@ centre_horizontally(struct drm_display_mode *mode,
@@ -50101,16 +50141,46 @@
  /**
   * intel_lvds_init - setup LVDS connectors on this device
   * @dev: drm device
-@@ -914,6 +932,9 @@ bool intel_lvds_init(struct drm_device *dev)
+@@ -914,17 +932,8 @@ bool intel_lvds_init(struct drm_device *dev)
  	int pipe;
  	u8 pin;
  
+-	/*
+-	 * Unlock registers and just leave them unlocked. Do this before
+-	 * checking quirk lists to avoid bogus WARNINGs.
+-	 */
+-	if (HAS_PCH_SPLIT(dev)) {
+-		I915_WRITE(PCH_PP_CONTROL,
+-			   I915_READ(PCH_PP_CONTROL) | PANEL_UNLOCK_REGS);
+-	} else {
+-		I915_WRITE(PP_CONTROL,
+-			   I915_READ(PP_CONTROL) | PANEL_UNLOCK_REGS);
+-	}
 +	if (!intel_lvds_supported(dev))
 +		return false;
-+
+ 
  	/* Skip init on machines we know falsely report LVDS */
  	if (dmi_check_system(intel_no_lvds))
- 		return false;
+@@ -1100,6 +1109,19 @@ out:
+ 		pwm = I915_READ(BLC_PWM_PCH_CTL1);
+ 		pwm |= PWM_PCH_ENABLE;
+ 		I915_WRITE(BLC_PWM_PCH_CTL1, pwm);
++		/*
++		 * Unlock registers and just
++		 * leave them unlocked
++		 */
++		I915_WRITE(PCH_PP_CONTROL,
++			   I915_READ(PCH_PP_CONTROL) | PANEL_UNLOCK_REGS);
++	} else {
++		/*
++		 * Unlock registers and just
++		 * leave them unlocked
++		 */
++		I915_WRITE(PP_CONTROL,
++			   I915_READ(PP_CONTROL) | PANEL_UNLOCK_REGS);
+ 	}
+ 	dev_priv->lid_notifier.notifier_call = intel_lid_notify;
+ 	if (acpi_lid_notifier_register(&dev_priv->lid_notifier)) {
 diff --git a/drivers/gpu/drm/i915/intel_modes.c b/drivers/gpu/drm/i915/intel_modes.c
 index be2c6fe..9a2b270 100644
 --- a/drivers/gpu/drm/i915/intel_modes.c
@@ -72934,7 +73004,7 @@
  #include <linux/kernel.h>
  
 diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
-index 9b3f787..df62c39 100644
+index 9b3f787..01434ef 100644
 --- a/drivers/gpu/drm/radeon/evergreen.c
 +++ b/drivers/gpu/drm/radeon/evergreen.c
 @@ -50,6 +50,39 @@ static const u32 crtc_offsets[6] =
@@ -72986,7 +73056,7 @@
  {
  	u32 tmp = RREG32(MC_SHARED_CHMAP);
  
-@@ -1136,11 +1169,23 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *sav
+@@ -1136,11 +1169,24 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *sav
  		crtc_enabled = RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i]) & EVERGREEN_CRTC_MASTER_EN;
  		if (crtc_enabled) {
  			save->crtc_enabled[i] = true;
@@ -73002,6 +73072,7 @@
 +					WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 1);
 +					tmp |= EVERGREEN_CRTC_BLANK_DATA_EN;
 +					WREG32(EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i], tmp);
++					WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 0);
 +				}
 +			} else {
 +				tmp = RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i]);
@@ -73015,7 +73086,7 @@
  			}
  			/* wait for the next frame */
  			frame_count = radeon_get_vblank_counter(rdev, i);
-@@ -1149,12 +1194,21 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *sav
+@@ -1149,12 +1195,21 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *sav
  					break;
  				udelay(1);
  			}
@@ -73038,7 +73109,7 @@
  
  	blackout = RREG32(MC_SHARED_BLACKOUT_CNTL);
  	if ((blackout & BLACKOUT_MODE_MASK) != 1) {
-@@ -1166,6 +1220,22 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *sav
+@@ -1166,6 +1221,22 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *sav
  	}
  	/* wait for the MC to settle */
  	udelay(100);
@@ -73061,7 +73132,7 @@
  }
  
  void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *save)
-@@ -1187,6 +1257,33 @@ void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *s
+@@ -1187,6 +1258,33 @@ void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *s
  	WREG32(EVERGREEN_VGA_MEMORY_BASE_ADDRESS_HIGH, upper_32_bits(rdev->mc.vram_start));
  	WREG32(EVERGREEN_VGA_MEMORY_BASE_ADDRESS, (u32)rdev->mc.vram_start);
  
@@ -73095,7 +73166,7 @@
  	/* unblackout the MC */
  	tmp = RREG32(MC_SHARED_BLACKOUT_CNTL);
  	tmp &= ~BLACKOUT_MODE_MASK;
-@@ -1196,9 +1293,19 @@ void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *s
+@@ -1196,9 +1294,19 @@ void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *s
  
  	for (i = 0; i < rdev->num_crtc; i++) {
  		if (save->crtc_enabled[i]) {
@@ -73118,7 +73189,7 @@
  			/* wait for the next frame */
  			frame_count = radeon_get_vblank_counter(rdev, i);
  			for (j = 0; j < rdev->usec_timeout; j++) {
-@@ -1258,7 +1365,10 @@ void evergreen_mc_program(struct radeon_device *rdev)
+@@ -1258,7 +1366,10 @@ void evergreen_mc_program(struct radeon_device *rdev)
  			rdev->mc.vram_end >> 12);
  	}
  	WREG32(MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR, rdev->vram_scratch.gpu_addr >> 12);
@@ -73130,7 +73201,7 @@
  		tmp = RREG32(MC_FUS_VM_FB_OFFSET) & 0x000FFFFF;
  		tmp |= ((rdev->mc.vram_end >> 20) & 0xF) << 24;
  		tmp |= ((rdev->mc.vram_start >> 20) & 0xF) << 20;
-@@ -1293,18 +1403,20 @@ void evergreen_mc_program(struct radeon_device *rdev)
+@@ -1293,18 +1404,20 @@ void evergreen_mc_program(struct radeon_device *rdev)
   */
  void evergreen_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib)
  {
@@ -73157,7 +73228,7 @@
  }
  
  
-@@ -1342,71 +1454,73 @@ static int evergreen_cp_load_microcode(struct radeon_device *rdev)
+@@ -1342,71 +1455,73 @@ static int evergreen_cp_load_microcode(struct radeon_device *rdev)
  
  static int evergreen_cp_start(struct radeon_device *rdev)
  {
@@ -73262,7 +73333,7 @@
  	u32 tmp;
  	u32 rb_bufsz;
  	int r;
-@@ -1424,13 +1538,14 @@ int evergreen_cp_resume(struct radeon_device *rdev)
+@@ -1424,13 +1539,14 @@ int evergreen_cp_resume(struct radeon_device *rdev)
  	RREG32(GRBM_SOFT_RESET);
  
  	/* Set ring buffer size */
@@ -73279,7 +73350,7 @@
  
  	/* Set the write pointer delay */
  	WREG32(CP_RB_WPTR_DELAY, 0);
-@@ -1438,8 +1553,8 @@ int evergreen_cp_resume(struct radeon_device *rdev)
+@@ -1438,8 +1554,8 @@ int evergreen_cp_resume(struct radeon_device *rdev)
  	/* Initialize the ring buffer's read and write pointers */
  	WREG32(CP_RB_CNTL, tmp | RB_RPTR_WR_ENA);
  	WREG32(CP_RB_RPTR_WR, 0);
@@ -73290,7 +73361,7 @@
  
  	/* set the wb address wether it's enabled or not */
  	WREG32(CP_RB_RPTR_ADDR,
-@@ -1457,16 +1572,16 @@ int evergreen_cp_resume(struct radeon_device *rdev)
+@@ -1457,16 +1573,16 @@ int evergreen_cp_resume(struct radeon_device *rdev)
  	mdelay(1);
  	WREG32(CP_RB_CNTL, tmp);
  
@@ -73312,7 +73383,7 @@
  		return r;
  	}
  	return 0;
-@@ -1897,7 +2012,9 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
+@@ -1897,7 +2013,9 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
  
  
  	mc_shared_chmap = RREG32(MC_SHARED_CHMAP);
@@ -73323,7 +73394,7 @@
  		mc_arb_ramcfg = RREG32(FUS_MC_ARB_RAMCFG);
  	else
  		mc_arb_ramcfg = RREG32(MC_ARB_RAMCFG);
-@@ -2301,7 +2418,9 @@ int evergreen_mc_init(struct radeon_device *rdev)
+@@ -2301,7 +2419,9 @@ int evergreen_mc_init(struct radeon_device *rdev)
  
  	/* Get VRAM informations */
  	rdev->mc.vram_is_ddr = true;
@@ -73334,7 +73405,7 @@
  		tmp = RREG32(FUS_MC_ARB_RAMCFG);
  	else
  		tmp = RREG32(MC_ARB_RAMCFG);
-@@ -2333,14 +2452,16 @@ int evergreen_mc_init(struct radeon_device *rdev)
+@@ -2333,14 +2453,16 @@ int evergreen_mc_init(struct radeon_device *rdev)
  	rdev->mc.aper_base = pci_resource_start(rdev->pdev, 0);
  	rdev->mc.aper_size = pci_resource_len(rdev->pdev, 0);
  	/* Setup GPU memory space */
@@ -73355,7 +73426,7 @@
  	}
  	rdev->mc.visible_vram_size = rdev->mc.aper_size;
  	r700_vram_gtt_location(rdev, &rdev->mc);
-@@ -2349,7 +2470,7 @@ int evergreen_mc_init(struct radeon_device *rdev)
+@@ -2349,7 +2471,7 @@ int evergreen_mc_init(struct radeon_device *rdev)
  	return 0;
  }
  
@@ -73364,7 +73435,7 @@
  {
  	u32 srbm_status;
  	u32 grbm_status;
-@@ -2362,19 +2483,19 @@ bool evergreen_gpu_is_lockup(struct radeon_device *rdev)
+@@ -2362,19 +2484,19 @@ bool evergreen_gpu_is_lockup(struct radeon_device *rdev)
  	grbm_status_se0 = RREG32(GRBM_STATUS_SE0);
  	grbm_status_se1 = RREG32(GRBM_STATUS_SE1);
  	if (!(grbm_status & GUI_ACTIVE)) {
@@ -73391,7 +73462,7 @@
  }
  
  static int evergreen_gpu_soft_reset(struct radeon_device *rdev)
-@@ -2466,7 +2587,13 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
+@@ -2466,7 +2588,13 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
  {
  	u32 tmp;
  
@@ -73406,7 +73477,7 @@
  	WREG32(GRBM_INT_CNTL, 0);
  	WREG32(INT_MASK + EVERGREEN_CRTC0_REGISTER_OFFSET, 0);
  	WREG32(INT_MASK + EVERGREEN_CRTC1_REGISTER_OFFSET, 0);
-@@ -2490,7 +2617,9 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
+@@ -2490,7 +2618,9 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
  		WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, 0);
  	}
  
@@ -73417,7 +73488,7 @@
  	WREG32(DACB_AUTODETECT_INT_CONTROL, 0);
  
  	tmp = RREG32(DC_HPD1_INT_CONTROL) & DC_HPDx_INT_POLARITY;
-@@ -2511,6 +2640,7 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
+@@ -2511,6 +2641,7 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
  int evergreen_irq_set(struct radeon_device *rdev)
  {
  	u32 cp_int_cntl = CNTX_BUSY_INT_ENABLE | CNTX_EMPTY_INT_ENABLE;
@@ -73425,7 +73496,7 @@
  	u32 crtc1 = 0, crtc2 = 0, crtc3 = 0, crtc4 = 0, crtc5 = 0, crtc6 = 0;
  	u32 hpd1, hpd2, hpd3, hpd4, hpd5, hpd6;
  	u32 grbm_int_cntl = 0;
-@@ -2535,11 +2665,28 @@ int evergreen_irq_set(struct radeon_device *rdev)
+@@ -2535,11 +2666,28 @@ int evergreen_irq_set(struct radeon_device *rdev)
  	hpd5 = RREG32(DC_HPD5_INT_CONTROL) & ~DC_HPDx_INT_EN;
  	hpd6 = RREG32(DC_HPD6_INT_CONTROL) & ~DC_HPDx_INT_EN;
  
@@ -73458,7 +73529,7 @@
  	if (rdev->irq.crtc_vblank_int[0] ||
  	    rdev->irq.pflip[0]) {
  		DRM_DEBUG("evergreen_irq_set: vblank 0\n");
-@@ -2599,7 +2746,12 @@ int evergreen_irq_set(struct radeon_device *rdev)
+@@ -2599,7 +2747,12 @@ int evergreen_irq_set(struct radeon_device *rdev)
  		grbm_int_cntl |= GUI_IDLE_INT_ENABLE;
  	}
  
@@ -73472,7 +73543,7 @@
  	WREG32(GRBM_INT_CNTL, grbm_int_cntl);
  
  	WREG32(INT_MASK + EVERGREEN_CRTC0_REGISTER_OFFSET, crtc1);
-@@ -2765,7 +2917,6 @@ static u32 evergreen_get_ih_wptr(struct radeon_device *rdev)
+@@ -2765,7 +2918,6 @@ static u32 evergreen_get_ih_wptr(struct radeon_device *rdev)
  		tmp = RREG32(IH_RB_CNTL);
  		tmp |= IH_WPTR_OVERFLOW_CLEAR;
  		WREG32(IH_RB_CNTL, tmp);
@@ -73480,7 +73551,7 @@
  	}
  	return (wptr & rdev->ih.ptr_mask);
  }
-@@ -3015,11 +3166,24 @@ restart_ih:
+@@ -3015,11 +3167,24 @@ restart_ih:
  		case 177: /* CP_INT in IB1 */
  		case 178: /* CP_INT in IB2 */
  			DRM_DEBUG("IH: CP int: 0x%08x\n", src_data);
@@ -73507,7 +73578,7 @@
  			break;
  		case 233: /* GUI IDLE */
  			DRM_DEBUG("IH: GUI idle\n");
-@@ -3049,6 +3213,7 @@ restart_ih:
+@@ -3049,6 +3214,7 @@ restart_ih:
  
  static int evergreen_startup(struct radeon_device *rdev)
  {
@@ -73515,7 +73586,7 @@
  	int r;
  
  	/* enable pcie gen2 link */
-@@ -3095,7 +3260,7 @@ static int evergreen_startup(struct radeon_device *rdev)
+@@ -3095,7 +3261,7 @@ static int evergreen_startup(struct radeon_device *rdev)
  	r = evergreen_blit_init(rdev);
  	if (r) {
  		r600_blit_fini(rdev);
@@ -73524,7 +73595,7 @@
  		dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
  	}
  
-@@ -3104,6 +3269,12 @@ static int evergreen_startup(struct radeon_device *rdev)
+@@ -3104,6 +3270,12 @@ static int evergreen_startup(struct radeon_device *rdev)
  	if (r)
  		return r;
  
@@ -73537,7 +73608,7 @@
  	/* Enable IRQ */
  	if (!rdev->irq.installed) {
  		r = radeon_irq_kms_init(rdev);
-@@ -3119,7 +3290,9 @@ static int evergreen_startup(struct radeon_device *rdev)
+@@ -3119,7 +3291,9 @@ static int evergreen_startup(struct radeon_device *rdev)
  	}
  	evergreen_irq_set(rdev);
  
@@ -73548,7 +73619,7 @@
  	if (r)
  		return r;
  	r = evergreen_cp_load_microcode(rdev);
-@@ -3129,6 +3302,23 @@ static int evergreen_startup(struct radeon_device *rdev)
+@@ -3129,6 +3303,23 @@ static int evergreen_startup(struct radeon_device *rdev)
  	if (r)
  		return r;
  
@@ -73572,7 +73643,7 @@
  	return 0;
  }
  
-@@ -3148,15 +3338,11 @@ int evergreen_resume(struct radeon_device *rdev)
+@@ -3148,15 +3339,11 @@ int evergreen_resume(struct radeon_device *rdev)
  	/* post card */
  	atom_asic_init(rdev->mode_info.atom_context);
  
@@ -73590,7 +73661,7 @@
  		return r;
  	}
  
-@@ -3166,13 +3352,17 @@ int evergreen_resume(struct radeon_device *rdev)
+@@ -3166,13 +3353,17 @@ int evergreen_resume(struct radeon_device *rdev)
  
  int evergreen_suspend(struct radeon_device *rdev)
  {
@@ -73610,7 +73681,7 @@
  
  	return 0;
  }
-@@ -3243,8 +3433,8 @@ int evergreen_init(struct radeon_device *rdev)
+@@ -3243,8 +3434,8 @@ int evergreen_init(struct radeon_device *rdev)
  	if (r)
  		return r;
  
@@ -73621,7 +73692,7 @@
  
  	rdev->ih.ring_obj = NULL;
  	r600_ih_ring_init(rdev, 64 * 1024);
-@@ -3253,29 +3443,24 @@ int evergreen_init(struct radeon_device *rdev)
+@@ -3253,29 +3444,24 @@ int evergreen_init(struct radeon_device *rdev)
  	if (r)
  		return r;
  
@@ -73658,7 +73729,7 @@
  
  	/* Don't start up if the MC ucode is missing on BTC parts.
  	 * The default clocks and voltages before the MC ucode
-@@ -3293,15 +3478,17 @@ int evergreen_init(struct radeon_device *rdev)
+@@ -3293,15 +3479,17 @@ int evergreen_init(struct radeon_device *rdev)
  
  void evergreen_fini(struct radeon_device *rdev)
  {
@@ -104346,7 +104417,7 @@
  	info->apertures = alloc_apertures(1);
  	if (!info->apertures) {
 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c
-index 15fb260..7e07433 100644
+index 1ed5a1c..7e07433 100644
 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c
 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c
 @@ -69,12 +69,13 @@ struct vmw_user_fence {
@@ -104366,7 +104437,54 @@
  	uint32_t *tv_sec;
  	uint32_t *tv_usec;
  };
-@@ -784,46 +785,40 @@ int vmw_fence_obj_unref_ioctl(struct drm_device *dev, void *data,
+@@ -484,7 +485,14 @@ void vmw_fence_obj_flush(struct vmw_fence_obj *fence)
+ 
+ static void vmw_fence_destroy(struct vmw_fence_obj *fence)
+ {
++	struct vmw_fence_manager *fman = fence->fman;
++
+ 	kfree(fence);
++	/*
++	 * Free kernel space accounting.
++	 */
++	ttm_mem_global_free(vmw_mem_glob(fman->dev_priv),
++			    fman->fence_size);
+ }
+ 
+ int vmw_fence_create(struct vmw_fence_manager *fman,
+@@ -492,12 +500,20 @@ int vmw_fence_create(struct vmw_fence_manager *fman,
+ 		     uint32_t mask,
+ 		     struct vmw_fence_obj **p_fence)
+ {
++	struct ttm_mem_global *mem_glob = vmw_mem_glob(fman->dev_priv);
+ 	struct vmw_fence_obj *fence;
+ 	int ret;
+ 
++	ret = ttm_mem_global_alloc(mem_glob, fman->fence_size,
++				   false, false);
++	if (unlikely(ret != 0))
++		return ret;
++
+ 	fence = kzalloc(sizeof(*fence), GFP_KERNEL);
+-	if (unlikely(fence == NULL))
+-		return -ENOMEM;
++	if (unlikely(fence == NULL)) {
++		ret = -ENOMEM;
++		goto out_no_object;
++	}
+ 
+ 	ret = vmw_fence_obj_init(fman, fence, seqno, mask,
+ 				 vmw_fence_destroy);
+@@ -509,6 +525,8 @@ int vmw_fence_create(struct vmw_fence_manager *fman,
+ 
+ out_err_init:
+ 	kfree(fence);
++out_no_object:
++	ttm_mem_global_free(mem_glob, fman->fence_size);
+ 	return ret;
+ }
+ 
+@@ -767,46 +785,40 @@ int vmw_fence_obj_unref_ioctl(struct drm_device *dev, void *data,
  }
  
  /**
@@ -104442,7 +104560,7 @@
  }
  
  
-@@ -836,18 +831,21 @@ static void vmw_event_fence_action_delivered(struct drm_pending_event *e)
+@@ -819,18 +831,21 @@ static void vmw_event_fence_action_delivered(struct drm_pending_event *e)
   * This function is called when the seqno of the fence where @action is
   * attached has passed. It queues the event on the submitter's event list.
   * This function is always called from atomic context, and may be called
@@ -104468,7 +104586,7 @@
  	spin_lock_irqsave(&dev->event_lock, irq_flags);
  
  	if (likely(eaction->tv_sec != NULL)) {
-@@ -858,7 +856,9 @@ static void vmw_event_fence_action_seq_passed(struct vmw_fence_action *action)
+@@ -841,7 +856,9 @@ static void vmw_event_fence_action_seq_passed(struct vmw_fence_action *action)
  		*eaction->tv_usec = tv.tv_usec;
  	}
  
@@ -104479,7 +104597,7 @@
  	wake_up_all(&file_priv->event_wait);
  	spin_unlock_irqrestore(&dev->event_lock, irq_flags);
  }
-@@ -876,9 +876,15 @@ static void vmw_event_fence_action_cleanup(struct vmw_fence_action *action)
+@@ -859,9 +876,15 @@ static void vmw_event_fence_action_cleanup(struct vmw_fence_action *action)
  {
  	struct vmw_event_fence_action *eaction =
  		container_of(action, struct vmw_event_fence_action, action);
@@ -104496,7 +104614,7 @@
  }
  
  
-@@ -946,39 +952,23 @@ void vmw_fence_obj_add_action(struct vmw_fence_obj *fence,
+@@ -929,39 +952,23 @@ void vmw_fence_obj_add_action(struct vmw_fence_obj *fence,
   * an error code, the caller needs to free that object.
   */
  
@@ -104546,7 +104664,7 @@
  
  	eaction->action.seq_passed = vmw_event_fence_action_seq_passed;
  	eaction->action.cleanup = vmw_event_fence_action_cleanup;
-@@ -986,16 +976,89 @@ int vmw_event_fence_action_create(struct drm_file *file_priv,
+@@ -969,16 +976,89 @@ int vmw_event_fence_action_create(struct drm_file *file_priv,
  
  	eaction->fence = vmw_fence_obj_reference(fence);
  	eaction->dev = fman->dev_priv->dev;
@@ -104638,7 +104756,7 @@
  int vmw_fence_event_ioctl(struct drm_device *dev, void *data,
  			  struct drm_file *file_priv)
  {
-@@ -1008,8 +1071,6 @@ int vmw_fence_event_ioctl(struct drm_device *dev, void *data,
+@@ -991,8 +1071,6 @@ int vmw_fence_event_ioctl(struct drm_device *dev, void *data,
  		(struct drm_vmw_fence_rep __user *)(unsigned long)
  		arg->fence_rep;
  	uint32_t handle;
@@ -104647,7 +104765,7 @@
  	int ret;
  
  	/*
-@@ -1062,59 +1123,28 @@ int vmw_fence_event_ioctl(struct drm_device *dev, void *data,
+@@ -1045,59 +1123,28 @@ int vmw_fence_event_ioctl(struct drm_device *dev, void *data,
  
  	BUG_ON(fence == NULL);
  
@@ -104758,7 +104876,7 @@
  	return 0;
  out_err:
 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
-index eb9735e..00fb5aa 100644
+index eb9735e..7ca1d47 100644
 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
 +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
 @@ -422,7 +422,8 @@ static int do_surface_dirty_sou(struct vmw_private *dev_priv,
@@ -105038,43 +105156,6 @@
  void vmw_du_crtc_save(struct drm_crtc *crtc)
  {
  }
-@@ -1826,14 +1915,6 @@ int vmw_du_connector_fill_modes(struct drm_connector *connector,
- 		DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC)
- 	};
- 	int i;
--	u32 assumed_bpp = 2;
--
--	/*
--	 * If using screen objects, then assume 32-bpp because that's what the
--	 * SVGA device is assuming
--	 */
--	if (dev_priv->sou_priv)
--		assumed_bpp = 4;
- 
- 	/* Add preferred mode */
- 	{
-@@ -1844,9 +1925,8 @@ int vmw_du_connector_fill_modes(struct drm_connector *connector,
- 		mode->vdisplay = du->pref_height;
- 		vmw_guess_mode_timing(mode);
- 
--		if (vmw_kms_validate_mode_vram(dev_priv,
--						mode->hdisplay * assumed_bpp,
--						mode->vdisplay)) {
-+		if (vmw_kms_validate_mode_vram(dev_priv, mode->hdisplay * 2,
-+					       mode->vdisplay)) {
- 			drm_mode_probed_add(connector, mode);
- 		} else {
- 			drm_mode_destroy(dev, mode);
-@@ -1868,8 +1948,7 @@ int vmw_du_connector_fill_modes(struct drm_connector *connector,
- 		    bmode->vdisplay > max_height)
- 			continue;
- 
--		if (!vmw_kms_validate_mode_vram(dev_priv,
--						bmode->hdisplay * assumed_bpp,
-+		if (!vmw_kms_validate_mode_vram(dev_priv, bmode->hdisplay * 2,
- 						bmode->vdisplay))
- 			continue;
- 
 diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
 index e1cb855..8184bc5 100644
 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
@@ -106337,18 +106418,10 @@
  #define DRM_MODE_FB_DIRTY_ANNOTATE_FILL 0x02
  #define DRM_MODE_FB_DIRTY_FLAGS         0x03
 diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h
-index 7daeaba..757f980 100644
+index 7daeaba..53baa0d 100644
 --- a/include/drm/drm_pciids.h
 +++ b/include/drm/drm_pciids.h
-@@ -56,6 +56,7 @@
- 	{0x1002, 0x4C64, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV250|RADEON_IS_MOBILITY}, \
- 	{0x1002, 0x4C66, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV250|RADEON_IS_MOBILITY}, \
- 	{0x1002, 0x4C67, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV250|RADEON_IS_MOBILITY}, \
-+	{0x1002, 0x4C6E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV280|RADEON_IS_MOBILITY}, \
- 	{0x1002, 0x4E44, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R300}, \
- 	{0x1002, 0x4E45, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R300}, \
- 	{0x1002, 0x4E46, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R300}, \
-@@ -203,11 +204,60 @@
+@@ -203,11 +203,60 @@
  	{0x1002, 0x6778, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \
  	{0x1002, 0x6779, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \
  	{0x1002, 0x677B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAICOS|RADEON_NEW_MEMMAP}, \
@@ -106409,7 +106482,7 @@
  	{0x1002, 0x6850, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \
  	{0x1002, 0x6858, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \
  	{0x1002, 0x6859, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_NEW_MEMMAP}, \
-@@ -515,6 +565,43 @@
+@@ -515,6 +564,43 @@
  	{0x1002, 0x9808, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
  	{0x1002, 0x9809, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
  	{0x1002, 0x980A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PALM|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0001-Revert-workqueue-skip-nr_running-sanity-check-in-wor.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0001-Revert-workqueue-skip-nr_running-sanity-check-in-wor.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0001-Revert-workqueue-skip-nr_running-sanity-check-in-wor.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Steven Rostedt <srostedt at redhat.com>
 Date: Wed, 6 Jun 2012 17:07:34 -0400
-Subject: [PATCH 001/348] Revert "workqueue: skip nr_running sanity check in
+Subject: [PATCH 001/371] Revert "workqueue: skip nr_running sanity check in
  worker_enter_idle() if trustee is active"
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4d43c3f24ffa158da217e1b7d499ae8c936f3474
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ec7dc48cec907f5f957f9abe5e736ba8c93c34b8
 
 This reverts commit 5d79c6f64a904afc92a329f80abe693e3ae105fe.
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0002-x86-Call-idle-notifier-after-irq_enter.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0002-x86-Call-idle-notifier-after-irq_enter.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0002-x86-Call-idle-notifier-after-irq_enter.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Frederic Weisbecker <fweisbec at gmail.com>
 Date: Mon, 26 Sep 2011 12:19:11 +0200
-Subject: [PATCH 002/348] x86: Call idle notifier after irq_enter()
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e7ba258cff51f72970daa7a560abefc615dc174b
+Subject: [PATCH 002/371] x86: Call idle notifier after irq_enter()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fb2b677241dbabbb78415b8ad3ebb8856d14b34f
 
 Interrupts notify the idle exit state before calling irq_enter(). But
 the notifier code calls rcu_read_lock() and this is not allowed while
@@ -48,7 +48,7 @@
  5 files changed, 9 insertions(+), 9 deletions(-)
 
 diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
-index c4e3581..c2beffe 100644
+index 838a3b4..b3aa9f5 100644
 --- a/arch/x86/kernel/apic/apic.c
 +++ b/arch/x86/kernel/apic/apic.c
 @@ -876,8 +876,8 @@ void __irq_entry smp_apic_timer_interrupt(struct pt_regs *regs)
@@ -61,7 +61,7 @@
  	local_apic_timer_interrupt();
  	irq_exit();
  
-@@ -1813,8 +1813,8 @@ void smp_spurious_interrupt(struct pt_regs *regs)
+@@ -1815,8 +1815,8 @@ void smp_spurious_interrupt(struct pt_regs *regs)
  {
  	u32 v;
  
@@ -71,7 +71,7 @@
  	/*
  	 * Check if this really is a spurious interrupt and ACK it
  	 * if it is a vectored one.  Just in case...
-@@ -1850,8 +1850,8 @@ void smp_error_interrupt(struct pt_regs *regs)
+@@ -1852,8 +1852,8 @@ void smp_error_interrupt(struct pt_regs *regs)
  		"Illegal register address",	/* APIC Error Bit 7 */
  	};
  

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0003-slab-lockdep-Annotate-all-slab-caches.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0003-slab-lockdep-Annotate-all-slab-caches.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0003-slab-lockdep-Annotate-all-slab-caches.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Peter Zijlstra <a.p.zijlstra at chello.nl>
 Date: Mon, 28 Nov 2011 19:51:51 +0100
-Subject: [PATCH 003/348] slab, lockdep: Annotate all slab caches
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5228182ca8fa2cbdf98280e0e1a966a0052846ca
+Subject: [PATCH 003/371] slab, lockdep: Annotate all slab caches
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=453c1e558f868c29dfd6e0a6b77f839c1ef45504
 
 Currently we only annotate the kmalloc caches, annotate all of them.
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0004-x86-kprobes-Remove-remove-bogus-preempt_enable.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0004-x86-kprobes-Remove-remove-bogus-preempt_enable.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0004-x86-kprobes-Remove-remove-bogus-preempt_enable.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Thu, 17 Mar 2011 11:02:15 +0100
-Subject: [PATCH 004/348] x86: kprobes: Remove remove bogus preempt_enable
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d0d1b1db959e9909b38106f1d1a11c5190d11f9c
+Subject: [PATCH 004/371] x86: kprobes: Remove remove bogus preempt_enable
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=71a1d4c9de1527635e1e9e0f5b3abdcc6ba91c56
 
 The CONFIG_PREEMPT=n section of setup_singlestep() contains:
 
@@ -17,7 +17,7 @@
  1 file changed, 1 deletion(-)
 
 diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c
-index 7da647d..5604455 100644
+index 083848f..02cc07c 100644
 --- a/arch/x86/kernel/kprobes.c
 +++ b/arch/x86/kernel/kprobes.c
 @@ -478,7 +478,6 @@ static void __kprobes setup_singlestep(struct kprobe *p, struct pt_regs *regs,

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0005-x86-hpet-Disable-MSI-on-Lenovo-W510.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0005-x86-hpet-Disable-MSI-on-Lenovo-W510.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0005-x86-hpet-Disable-MSI-on-Lenovo-W510.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 30 Sep 2011 20:03:37 +0200
-Subject: [PATCH 005/348] x86: hpet: Disable MSI on Lenovo W510
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=60536bbb594c22e805faa3c5116c1a30c070ef2c
+Subject: [PATCH 005/371] x86: hpet: Disable MSI on Lenovo W510
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fb812ad059a50633f9dcaf164ca0921c97d73482
 
 MSI based per cpu timers lose interrupts when intel_idle() is enabled
 - independent of the c-state. With idle=poll the problem cannot be

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0006-block-Shorten-interrupt-disabled-regions.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0006-block-Shorten-interrupt-disabled-regions.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0006-block-Shorten-interrupt-disabled-regions.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 22 Jun 2011 19:47:02 +0200
-Subject: [PATCH 006/348] block: Shorten interrupt disabled regions
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1a7e5a09f3d30e691d2cc491768bc689645da17d
+Subject: [PATCH 006/371] block: Shorten interrupt disabled regions
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=215fe868916ec6c8881b4d406ea3996b5de22649
 
 Moving the blk_sched_flush_plug() call out of the interrupt/preempt
 disabled region in the scheduler allows us to replace

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0007-sched-Distangle-worker-accounting-from-rq-3Elock.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0007-sched-Distangle-worker-accounting-from-rq-3Elock.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0007-sched-Distangle-worker-accounting-from-rq-3Elock.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 22 Jun 2011 19:47:03 +0200
-Subject: [PATCH 007/348] sched: Distangle worker accounting from rq-%3Elock
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cc7eeac7045bd26f51842c83179f6172c3223884
+Subject: [PATCH 007/371] sched: Distangle worker accounting from rq-%3Elock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4f7cf818a6fecc1c97c19c5c150ba05ce499665c
 
 The worker accounting for cpu bound workers is plugged into the core
 scheduler code and the wakeup code. This is not a hard requirement and

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0008-mips-enable-interrupts-in-signal.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0008-mips-enable-interrupts-in-signal.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0008-mips-enable-interrupts-in-signal.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Mon, 18 Jul 2011 21:32:10 +0200
-Subject: [PATCH 008/348] mips-enable-interrupts-in-signal.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bae8586eb7f9839ed6a6fc7c6b506aafbb1fe926
+Subject: [PATCH 008/371] mips-enable-interrupts-in-signal.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=21be4b8f61b14024ef9a3f3829aa3d9bc2904d45
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0009-arm-enable-interrupts-in-signal-code.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0009-arm-enable-interrupts-in-signal-code.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0009-arm-enable-interrupts-in-signal-code.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sat, 16 Jul 2011 16:27:13 +0200
-Subject: [PATCH 009/348] arm-enable-interrupts-in-signal-code.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b801185b101bc712d87c0f680bd760666dcbed8c
+Subject: [PATCH 009/371] arm-enable-interrupts-in-signal-code.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bc4345ee6b767ba7b7c1c6dc389b279d69fde5c9
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0010-powerpc-85xx-Mark-cascade-irq-IRQF_NO_THREAD.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0010-powerpc-85xx-Mark-cascade-irq-IRQF_NO_THREAD.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0010-powerpc-85xx-Mark-cascade-irq-IRQF_NO_THREAD.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sat, 16 Jul 2011 12:09:54 +0200
-Subject: [PATCH 010/348] powerpc: 85xx: Mark cascade irq IRQF_NO_THREAD
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4c46fe25dbdf398ec8e55fbe1be9435b88078f45
+Subject: [PATCH 010/371] powerpc: 85xx: Mark cascade irq IRQF_NO_THREAD
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a5c0e0a7c24f1d19d446bfe84fed64307a8605dd
 
 Cascade interrupt must run in hard interrupt context.
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0011-powerpc-wsp-Mark-opb-cascade-handler-IRQF_NO_THREAD.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0011-powerpc-wsp-Mark-opb-cascade-handler-IRQF_NO_THREAD.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0011-powerpc-wsp-Mark-opb-cascade-handler-IRQF_NO_THREAD.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 5 Oct 2011 14:11:24 +0200
-Subject: [PATCH 011/348] powerpc: wsp: Mark opb cascade handler IRQF_NO_THREAD
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=da76dc5b20a53c911f70f03bf04663019ff7abf0
+Subject: [PATCH 011/371] powerpc: wsp: Mark opb cascade handler IRQF_NO_THREAD
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7db31b843190d3755aa01a601ff6842a714b6b02
 
 Cascade handlers must run in hard interrupt context.
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0012-powerpc-Mark-IPI-interrupts-IRQF_NO_THREAD.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0012-powerpc-Mark-IPI-interrupts-IRQF_NO_THREAD.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0012-powerpc-Mark-IPI-interrupts-IRQF_NO_THREAD.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 5 Oct 2011 14:00:26 +0200
-Subject: [PATCH 012/348] powerpc: Mark IPI interrupts IRQF_NO_THREAD
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=49b0d4f128b15e29fd81a32ca9db6695df7a22f4
+Subject: [PATCH 012/371] powerpc: Mark IPI interrupts IRQF_NO_THREAD
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1fbb41f7d790c101e1d5b0353f6ffc32da7cfacd
 
 IPI handlers cannot be threaded. Remove the obsolete IRQF_DISABLED
 flag (see commit e58aa3d2) while at it.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0013-powerpc-Allow-irq-threading.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0013-powerpc-Allow-irq-threading.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0013-powerpc-Allow-irq-threading.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sat, 16 Jul 2011 13:16:24 +0200
-Subject: [PATCH 013/348] powerpc: Allow irq threading
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9c0c72a4dd44bb40cc17ea490efc1669992c2744
+Subject: [PATCH 013/371] powerpc: Allow irq threading
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=36b8029cb8c30dd3b9bec0f4a0e94618c41a52a8
 
 All interrupts which must be non threaded are marked
 IRQF_NO_THREAD. So it's safe to allow force threaded handlers.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0014-sched-Keep-period-timer-ticking-when-throttling-acti.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0014-sched-Keep-period-timer-ticking-when-throttling-acti.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0014-sched-Keep-period-timer-ticking-when-throttling-acti.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Peter Zijlstra <peterz at infradead.org>
 Date: Tue, 18 Oct 2011 22:03:48 +0200
-Subject: [PATCH 014/348] sched: Keep period timer ticking when throttling
+Subject: [PATCH 014/371] sched: Keep period timer ticking when throttling
  active
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=41a3f1779c8c994d71451c0eff47469cb5c60458
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ca3039d074f0c7db1092f3c770c6b234b0e38e01
 
 When a runqueue is throttled we cannot disable the period timer
 because that timer is the only way to undo the throttling.
@@ -18,7 +18,7 @@
  1 file changed, 8 insertions(+), 5 deletions(-)
 
 diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
-index f57fda7..11143a1 100644
+index bd4afa4..89dba67 100644
 --- a/kernel/sched_rt.c
 +++ b/kernel/sched_rt.c
 @@ -581,12 +581,9 @@ static inline int balance_runtime(struct rt_rq *rt_rq)

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0015-sched-Do-not-throttle-due-to-PI-boosting.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0015-sched-Do-not-throttle-due-to-PI-boosting.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0015-sched-Do-not-throttle-due-to-PI-boosting.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Peter Zijlstra <peterz at infradead.org>
 Date: Tue, 18 Oct 2011 22:03:48 +0200
-Subject: [PATCH 015/348] sched: Do not throttle due to PI boosting
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1ee076f15b9773c3de633eb0ab0861ee04f9c5f3
+Subject: [PATCH 015/371] sched: Do not throttle due to PI boosting
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ad7b113c090a6aeb13df6a6ed25175105610a732
 
 When a runqueue has rt_runtime_us = 0 then the only way it can
 accumulate rt_time is via PI boosting. Though that causes the runqueue
@@ -17,7 +17,7 @@
  1 file changed, 18 insertions(+), 2 deletions(-)
 
 diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
-index 11143a1..f849559 100644
+index 89dba67..37ef951 100644
 --- a/kernel/sched_rt.c
 +++ b/kernel/sched_rt.c
 @@ -673,8 +673,24 @@ static int sched_rt_runtime_exceeded(struct rt_rq *rt_rq)

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0016-time-Remove-bogus-comments.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0016-time-Remove-bogus-comments.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0016-time-Remove-bogus-comments.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 28 Feb 2012 19:06:50 +0100
-Subject: [PATCH 016/348] time: Remove bogus comments
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ca8c54668626aa9742a1c3c9459bc9a30c1a2d90
+Subject: [PATCH 016/371] time: Remove bogus comments
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aa98665a88f76fe1fc680005b33c9ef5073755b8
 
 There is no global irq lock which makes a syscall magically SMP
 safe. Remove the outdated comment concerning do_settimeofday() as
@@ -13,7 +13,7 @@
  1 file changed, 6 deletions(-)
 
 diff --git a/kernel/time.c b/kernel/time.c
-index 060f961..a095290 100644
+index f64e88b..0864d70 100644
 --- a/kernel/time.c
 +++ b/kernel/time.c
 @@ -163,7 +163,6 @@ int do_sys_settimeofday(const struct timespec *tv, const struct timezone *tz)

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0017-x86-vdso-Remove-bogus-locking-in-update_vsyscall_tz.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0017-x86-vdso-Remove-bogus-locking-in-update_vsyscall_tz.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0017-x86-vdso-Remove-bogus-locking-in-update_vsyscall_tz.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 28 Feb 2012 19:10:46 +0100
-Subject: [PATCH 017/348] x86: vdso: Remove bogus locking in
+Subject: [PATCH 017/371] x86: vdso: Remove bogus locking in
  update_vsyscall_tz()
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f5f008bdade8f7025ce2895b3a7a4f81022f3ec0
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=95c0949f6236289810e11e52ef636998a0bef145
 
 Changing the sequence count in update_vsyscall_tz() is completely
 pointless.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0018-x86-vdso-Use-seqcount-instead-of-seqlock.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0018-x86-vdso-Use-seqcount-instead-of-seqlock.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0018-x86-vdso-Use-seqcount-instead-of-seqlock.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 28 Feb 2012 18:24:07 +0100
-Subject: [PATCH 018/348] x86: vdso: Use seqcount instead of seqlock
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=146013a633c7cdb470b229ac13215f1bee077088
+Subject: [PATCH 018/371] x86: vdso: Use seqcount instead of seqlock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f211fe927ba0e0f21cded5bd0b0a62507fe9caf0
 
 The update of the vdso data happens under xtime_lock, so adding a
 nested lock is pointless. Just use a seqcount to sync the readers.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0019-ia64-vsyscall-Use-seqcount-instead-of-seqlock.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0019-ia64-vsyscall-Use-seqcount-instead-of-seqlock.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0019-ia64-vsyscall-Use-seqcount-instead-of-seqlock.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 28 Feb 2012 18:33:08 +0100
-Subject: [PATCH 019/348] ia64: vsyscall: Use seqcount instead of seqlock
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=90552208ac4cd1240197ca0389457bdd36b08af5
+Subject: [PATCH 019/371] ia64: vsyscall: Use seqcount instead of seqlock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f6c87bf5a94800a97c74d66606fb8bd9ef21f88c
 
 The update of the vdso data happens under xtime_lock, so adding a
 nested lock is pointless. Just use a seqcount to sync the readers.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0020-seqlock-Remove-unused-functions.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0020-seqlock-Remove-unused-functions.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0020-seqlock-Remove-unused-functions.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sat, 16 Jul 2011 18:38:22 +0200
-Subject: [PATCH 020/348] seqlock: Remove unused functions
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=36d6c03427f13f0d3225f715ece029a7503978f4
+Subject: [PATCH 020/371] seqlock: Remove unused functions
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=53b27252494b1c05e388cb86c4bbe0dc424862fd
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0021-seqlock-Use-seqcount.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0021-seqlock-Use-seqcount.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0021-seqlock-Use-seqcount.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sat, 16 Jul 2011 18:40:26 +0200
-Subject: [PATCH 021/348] seqlock: Use seqcount
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=38c2750fcdb31ab4d14a59a52b16eef0b1c41efc
+Subject: [PATCH 021/371] seqlock: Use seqcount
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cd0f9788710a97af37f1c1c7e7b78a6ed011e637
 
 No point in having different implementations for the same thing.
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0022-vfs-fs_struct-Move-code-out-of-seqcount-write-sectio.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0022-vfs-fs_struct-Move-code-out-of-seqcount-write-sectio.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0022-vfs-fs_struct-Move-code-out-of-seqcount-write-sectio.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Al Viro <viro at ZenIV.linux.org.uk>
 Date: Thu, 15 Mar 2012 18:39:40 +0000
-Subject: [PATCH 022/348] vfs: fs_struct: Move code out of seqcount write
+Subject: [PATCH 022/371] vfs: fs_struct: Move code out of seqcount write
  sections
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=78475e329db0a5df732abd51a2b4da9878273407
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=736dbddf193a20a4e1497cc20291577da9d26004
 
 RT cannot disable preemption in the seqcount write sections due to
 functions called which take "sleeping" spinlocks.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0023-timekeeping-Split-xtime_lock.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0023-timekeeping-Split-xtime_lock.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0023-timekeeping-Split-xtime_lock.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Thu, 1 Mar 2012 15:14:06 +0100
-Subject: [PATCH 023/348] timekeeping: Split xtime_lock
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=791e32bff50382adf38e11633cf5cb86df78177e
+Subject: [PATCH 023/371] timekeeping: Split xtime_lock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b89dc467bf12c347aaf1849db751ad659d151a6b
 
 xtime_lock is going to be split apart in mainline, so we can shorten
 the seqcount protected regions and avoid updating seqcount in some
@@ -35,7 +35,7 @@
  }
  EXPORT_SYMBOL(get_jiffies_64);
 diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
-index f1eb182..09079b7 100644
+index 34fd01e..635c2bc 100644
 --- a/kernel/time/ntp.c
 +++ b/kernel/time/ntp.c
 @@ -362,6 +362,9 @@ int second_overflow(unsigned long secs)
@@ -57,7 +57,7 @@
  
  	/* Bump the maxerror field */
  	time_maxerror += MAXFREQ / NSEC_PER_USEC;
-@@ -623,7 +628,8 @@ int do_adjtimex(struct timex *txc)
+@@ -634,7 +639,8 @@ int do_adjtimex(struct timex *txc)
  
  	getnstimeofday(&ts);
  
@@ -67,7 +67,7 @@
  
  	if (txc->modes & ADJ_ADJTIME) {
  		long save_adjust = time_adjust;
-@@ -665,7 +671,8 @@ int do_adjtimex(struct timex *txc)
+@@ -676,7 +682,8 @@ int do_adjtimex(struct timex *txc)
  	/* fill PPS status fields */
  	pps_fill_timex(txc);
  
@@ -77,7 +77,7 @@
  
  	txc->time.tv_sec = ts.tv_sec;
  	txc->time.tv_usec = ts.tv_nsec;
-@@ -863,7 +870,8 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
+@@ -874,7 +881,8 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
  
  	pts_norm = pps_normalize_ts(*phase_ts);
  
@@ -87,7 +87,7 @@
  
  	/* clear the error bits, they will be set again if needed */
  	time_status &= ~(STA_PPSJITTER | STA_PPSWANDER | STA_PPSERROR);
-@@ -876,7 +884,8 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
+@@ -887,7 +895,8 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
  	 * just start the frequency interval */
  	if (unlikely(pps_fbase.tv_sec == 0)) {
  		pps_fbase = *raw_ts;
@@ -97,7 +97,7 @@
  		return;
  	}
  
-@@ -891,7 +900,8 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
+@@ -902,7 +911,8 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
  		time_status |= STA_PPSJITTER;
  		/* restart the frequency calibration interval */
  		pps_fbase = *raw_ts;
@@ -107,7 +107,7 @@
  		pr_err("hardpps: PPSJITTER: bad pulse\n");
  		return;
  	}
-@@ -908,7 +918,8 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
+@@ -919,7 +929,8 @@ void hardpps(const struct timespec *phase_ts, const struct timespec *raw_ts)
  
  	hardpps_update_phase(pts_norm.nsec);
  

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0024-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0024-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0024-intel_idle-Convert-i7300_idle_lock-to-raw-spinlock.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Mike Galbraith <efault at gmx.de>
 Date: Wed, 7 Dec 2011 12:48:42 +0100
-Subject: [PATCH 024/348] intel_idle: Convert i7300_idle_lock to raw spinlock
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c5447b1df776272ffc1c14341107ded274aa1737
+Subject: [PATCH 024/371] intel_idle: Convert i7300_idle_lock to raw spinlock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=80f53ce13e6628428e84252e6ec090247f7c5330
 
 24 core Intel box's first exposure to 3.0.12-rt30-rc3 didn't go well.
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0025-mm-memcg-shorten-preempt-disabled-section-around-eve.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0025-mm-memcg-shorten-preempt-disabled-section-around-eve.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0025-mm-memcg-shorten-preempt-disabled-section-around-eve.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Johannes Weiner <hannes at cmpxchg.org>
 Date: Thu, 17 Nov 2011 07:49:25 +0100
-Subject: [PATCH 025/348] mm: memcg: shorten preempt-disabled section around
+Subject: [PATCH 025/371] mm: memcg: shorten preempt-disabled section around
  event checks
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=18b9fec46097bee52c098e0f714aa8a920cf41bf
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=08fb89493839dcd179ada6eeed3669275c0167ef
 
 Only the ratelimit checks themselves have to run with preemption
 disabled, the resulting actions - checking for usage thresholds,

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0026-tracing-Account-for-preempt-off-in-preempt_schedule.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0026-tracing-Account-for-preempt-off-in-preempt_schedule.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0026-tracing-Account-for-preempt-off-in-preempt_schedule.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Steven Rostedt <rostedt at goodmis.org>
 Date: Thu, 29 Sep 2011 12:24:30 -0500
-Subject: [PATCH 026/348] tracing: Account for preempt off in
+Subject: [PATCH 026/371] tracing: Account for preempt off in
  preempt_schedule()
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=460f46b2c55328fa72327c66a24d8ddfe44f7954
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a698ede55c6c81cb34fcbc0abbe0a2c65a4ae897
 
 The preempt_schedule() uses the preempt_disable_notrace() version
 because it can cause infinite recursion by the function tracer as

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0027-signal-revert-ptrace-preempt-magic.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0027-signal-revert-ptrace-preempt-magic.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0027-signal-revert-ptrace-preempt-magic.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 21 Sep 2011 19:57:12 +0200
-Subject: [PATCH 027/348] signal-revert-ptrace-preempt-magic.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=981f8e23e2c6a45d93c837a5b114130e65da5152
+Subject: [PATCH 027/371] signal-revert-ptrace-preempt-magic.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e7b0e7c40705ee154187a30aa66a734d4e02705f
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0028-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0028-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0028-arm-Mark-pmu-interupt-IRQF_NO_THREAD.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 16 Mar 2011 14:45:31 +0100
-Subject: [PATCH 028/348] arm: Mark pmu interupt IRQF_NO_THREAD
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e5bd81fd7e2302b498edf422ed7662e640a4a850
+Subject: [PATCH 028/371] arm: Mark pmu interupt IRQF_NO_THREAD
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=34327a804ffc0ffbe424be7e5af386658b6949d9
 
 PMU interrupt must not be threaded. Remove IRQF_DISABLED while at it
 as we run all handlers with interrupts disabled anyway.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0029-arm-Allow-forced-irq-threading.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0029-arm-Allow-forced-irq-threading.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0029-arm-Allow-forced-irq-threading.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sat, 16 Jul 2011 13:15:20 +0200
-Subject: [PATCH 029/348] arm: Allow forced irq threading
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=74ea192b92d0728f85d0b396ca69f572e4550878
+Subject: [PATCH 029/371] arm: Allow forced irq threading
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a20b34f1c13490aa3e32594ad12e8b9af8f322d9
 
 All timer interrupts and the perf interrupt are marked NO_THREAD, so
 its safe to allow forced interrupt threading.
@@ -13,7 +13,7 @@
 
 --- a/arch/arm/Kconfig
 +++ b/arch/arm/Kconfig
-@@ -28,6 +28,7 @@ config ARM
+@@ -29,6 +29,7 @@ config ARM
  	select HAVE_GENERIC_HARDIRQS
  	select HAVE_SPARSE_IRQ
  	select GENERIC_IRQ_SHOW

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0030-preempt-rt-Convert-arm-boot_lock-to-raw.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0030-preempt-rt-Convert-arm-boot_lock-to-raw.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0030-preempt-rt-Convert-arm-boot_lock-to-raw.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Frank Rowand <frank.rowand at am.sony.com>
 Date: Mon, 19 Sep 2011 14:51:14 -0700
-Subject: [PATCH 030/348] preempt-rt: Convert arm boot_lock to raw
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=480e6eb25101d674f7c7290adcdd823fe0a906cc
+Subject: [PATCH 030/371] preempt-rt: Convert arm boot_lock to raw
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7cba0eb4ae0c92be3bc76627b3b1e14f8c84a5d9
 
 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.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0031-sched-Create-schedule_preempt_disabled.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0031-sched-Create-schedule_preempt_disabled.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0031-sched-Create-schedule_preempt_disabled.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Mon, 21 Mar 2011 12:09:35 +0100
-Subject: [PATCH 031/348] sched: Create schedule_preempt_disabled()
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=94f715701d1cc16c5a92b3a5554889ce47dbbb41
+Subject: [PATCH 031/371] sched: Create schedule_preempt_disabled()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7ec7e9405d8105d5cd297514f8d2eb50f70b3091
 
 Get rid of the ever repeating:
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0032-sched-Use-schedule_preempt_disabled.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0032-sched-Use-schedule_preempt_disabled.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0032-sched-Use-schedule_preempt_disabled.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Mon, 21 Mar 2011 12:33:18 +0100
-Subject: [PATCH 032/348] sched: Use schedule_preempt_disabled()
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=38deb0d80c602951b42027692a12135d573d9682
+Subject: [PATCH 032/371] sched: Use schedule_preempt_disabled()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6d79967c2f9f28140cd35c59668c94bce5cb06d1
 
 Coccinelle based conversion.
 
@@ -419,7 +419,7 @@
  }
  
 diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
-index 6a364a6..08840ab 100644
+index e361095..a8a8192 100644
 --- a/arch/x86/kernel/process_64.c
 +++ b/arch/x86/kernel/process_64.c
 @@ -150,9 +150,7 @@ void cpu_idle(void)

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0033-signals-Do-not-wakeup-self.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0033-signals-Do-not-wakeup-self.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0033-signals-Do-not-wakeup-self.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 3 Jul 2009 08:44:44 -0500
-Subject: [PATCH 033/348] signals: Do not wakeup self
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c7c6c2611cc8985b321d030fc91cd8ce7fe070cb
+Subject: [PATCH 033/371] signals: Do not wakeup self
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=de43c5239888b33033c82a66ce013b5a8d7b98fd
 
 Signals which are delivered by current to current can do without
 waking up current :)

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0034-posix-timers-Prevent-broadcast-signals.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0034-posix-timers-Prevent-broadcast-signals.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0034-posix-timers-Prevent-broadcast-signals.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 3 Jul 2009 08:29:20 -0500
-Subject: [PATCH 034/348] posix-timers: Prevent broadcast signals
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8efdb8a5d19cb8e3d5b59e879f69bff5d5d72a5e
+Subject: [PATCH 034/371] posix-timers: Prevent broadcast signals
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8a113b3e3e4b85374d9cee5f1e4b3578b58c4b38
 
 Posix timers should not send broadcast signals and kernel only
 signals. Prevent it.
@@ -12,7 +12,7 @@
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
-index e885be1..4b7183c 100644
+index 02824a5..81ad8aa 100644
 --- a/kernel/posix-timers.c
 +++ b/kernel/posix-timers.c
 @@ -439,6 +439,7 @@ static enum hrtimer_restart posix_timer_fn(struct hrtimer *timer)

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0035-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0035-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0035-signals-Allow-rt-tasks-to-cache-one-sigqueue-struct.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 3 Jul 2009 08:44:56 -0500
-Subject: [PATCH 035/348] signals: Allow rt tasks to cache one sigqueue struct
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0c794b3797749a36dad4ecf6bfd00b5fc8c2fed7
+Subject: [PATCH 035/371] signals: Allow rt tasks to cache one sigqueue struct
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b114ef11f9a052861d81cd5152d36147aff2485b
 
 To avoid allocation allow rt tasks to cache one sigqueue struct in
 task struct.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0036-signal-x86-Delay-calling-signals-in-atomic.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0036-signal-x86-Delay-calling-signals-in-atomic.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0036-signal-x86-Delay-calling-signals-in-atomic.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Oleg Nesterov <oleg at redhat.com>
 Date: Tue, 10 Apr 2012 14:33:53 -0400
-Subject: [PATCH 036/348] signal/x86: Delay calling signals in atomic
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2c50ac1938b79ba860f0ea6bca426f45ea086a4c
+Subject: [PATCH 036/371] signal/x86: Delay calling signals in atomic
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=449b218c0e938d3b04f49376dbc22d580451ecb5
 
 On x86_64 we must disable preemption before we enable interrupts
 for stack faults, int3 and debugging, because the current task is using

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0037-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0037-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0037-generic-Use-raw-local-irq-variant-for-generic-cmpxch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:29:30 -0500
-Subject: [PATCH 037/348] generic: Use raw local irq variant for generic
+Subject: [PATCH 037/371] generic: Use raw local irq variant for generic
  cmpxchg
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b313c936cc72cdca6d4919583eab3c40ebd220f0
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ffdf4f4af68eee165e0ad553e697eaa9bb4ac2e4
 
 No point in tracing those.
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0038-drivers-random-Reduce-preempt-disabled-region.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0038-drivers-random-Reduce-preempt-disabled-region.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0038-drivers-random-Reduce-preempt-disabled-region.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:29:30 -0500
-Subject: [PATCH 038/348] drivers: random: Reduce preempt disabled region
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7161eb8fd973a99d304108faba49713c84852bf7
+Subject: [PATCH 038/371] drivers: random: Reduce preempt disabled region
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9a8b05a66188ada90a43936780bdbada8eb2b97e
 
 No need to keep preemption disabled across the whole function.
 
@@ -12,7 +12,7 @@
  1 file changed, 5 insertions(+), 4 deletions(-)
 
 diff --git a/drivers/char/random.c b/drivers/char/random.c
-index c244f0e..5d223e1 100644
+index edf45ae..26af698 100644
 --- a/drivers/char/random.c
 +++ b/drivers/char/random.c
 @@ -701,8 +701,11 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num)

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0039-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0039-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0039-ARM-AT91-PIT-Remove-irq-handler-when-clock-event-is-.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Benedikt Spranger <b.spranger at linutronix.de>
 Date: Sat, 6 Mar 2010 17:47:10 +0100
-Subject: [PATCH 039/348] ARM: AT91: PIT: Remove irq handler when clock event
+Subject: [PATCH 039/371] ARM: AT91: PIT: Remove irq handler when clock event
  is unused
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=098279fc1d9223a6a59a398f977521507dc5dc04
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=20cd78cac74e6bdb564afbcbc5f8b152175366e7
 
 Setup and remove the interrupt handler in clock event mode selection.
 This avoids calling the (shared) interrupt handler when the device is

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0040-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0040-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0040-clocksource-TCLIB-Allow-higher-clock-rates-for-clock.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Benedikt Spranger <b.spranger at linutronix.de>
 Date: Mon, 8 Mar 2010 18:57:04 +0100
-Subject: [PATCH 040/348] clocksource: TCLIB: Allow higher clock rates for
+Subject: [PATCH 040/371] clocksource: TCLIB: Allow higher clock rates for
  clock events
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2ba25b8be1902a0cc98332119de31ed8f7458c15
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e64f5ddcbf911aca9e1b8638214789d8969b3b9e
 
 As default the TCLIB uses the 32KiHz base clock rate for clock events.
 Add a compile time selection to allow higher clock resulution.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0041-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0041-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0041-drivers-net-tulip_remove_one-needs-to-call-pci_disab.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:30:18 -0500
-Subject: [PATCH 041/348] drivers/net: tulip_remove_one needs to call
+Subject: [PATCH 041/371] drivers/net: tulip_remove_one needs to call
  pci_disable_device()
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5a478125fd686ac55ac6367fb1fb87515593b36d
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b9f72bdd87e04bc7835edcd2c401199d79612781
 
 Otherwise the device is not completely shut down.
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0042-drivers-net-Use-disable_irq_nosync-in-8139too.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0042-drivers-net-Use-disable_irq_nosync-in-8139too.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0042-drivers-net-Use-disable_irq_nosync-in-8139too.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:29:24 -0500
-Subject: [PATCH 042/348] drivers/net: Use disable_irq_nosync() in 8139too
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a85b5b390d0b22c84cd7b912071eb50df00225bb
+Subject: [PATCH 042/371] drivers/net: Use disable_irq_nosync() in 8139too
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=af977b28d63af04ef53dd0c306381a3f0c934dc9
 
 Use disable_irq_nosync() instead of disable_irq() as this might be
 called in atomic context with netpoll.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0043-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0043-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0043-drivers-net-ehea-Make-rx-irq-handler-non-threaded-IR.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Darren Hart <dvhltc at us.ibm.com>
 Date: Tue, 18 May 2010 14:33:07 -0700
-Subject: [PATCH 043/348] drivers: net: ehea: Make rx irq handler non-threaded
+Subject: [PATCH 043/371] drivers: net: ehea: Make rx irq handler non-threaded
  (IRQF_NO_THREAD)
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3d8d01d8b0405e8eb81a249be707e4f7604f2245
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=823afb3b0537d614e87debd52c4009702eb90148
 
 The underlying hardware is edge triggered but presented by XICS as level
 triggered. The edge triggered interrupts are not reissued after masking. This

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0044-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0044-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0044-drivers-net-at91_ether-Make-mdio-protection-rt-safe.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 17 Nov 2009 12:02:43 +0100
-Subject: [PATCH 044/348] drivers: net: at91_ether: Make mdio protection -rt
+Subject: [PATCH 044/371] drivers: net: at91_ether: Make mdio protection -rt
  safe
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8a7a246f442c6fea6287eba25ca8da447fb29b1d
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ad99173457cdcf93944ee221e03a7fa795713d5d
 
 Neither the phy interrupt nor the timer callback which updates the
 link status in absense of a phy interrupt are taking lp->lock which

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0045-preempt-mark-legitimated-no-resched-sites.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0045-preempt-mark-legitimated-no-resched-sites.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0045-preempt-mark-legitimated-no-resched-sites.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Mon, 21 Mar 2011 13:32:17 +0100
-Subject: [PATCH 045/348] preempt-mark-legitimated-no-resched-sites.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a8d96bdc78519a4d575bb2726b2aa91d3625eb68
+Subject: [PATCH 045/371] preempt-mark-legitimated-no-resched-sites.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6437171b1b6ae6ea3948b314fc684b636cc24e4c
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0046-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0046-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0046-mm-Prepare-decoupling-the-page-fault-disabling-logic.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:30:37 -0500
-Subject: [PATCH 046/348] mm: Prepare decoupling the page fault disabling logic
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a3a38b49e8edb2cd9c1a95638805c5e3f8acc8de
+Subject: [PATCH 046/371] mm: Prepare decoupling the page fault disabling logic
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=54ff45d6ea7d521301ce1998f1acb9b3b460cb26
 
 Add a pagefault_disabled variable to task_struct to allow decoupling
 the pagefault-disabled logic from the preempt count.
@@ -85,10 +85,10 @@
  	p->lockdep_depth = 0; /* no locks held yet */
  	p->curr_chain_key = 0;
 diff --git a/mm/memory.c b/mm/memory.c
-index 483e665..f116401 100644
+index 0a7bb38..bec0319 100644
 --- a/mm/memory.c
 +++ b/mm/memory.c
-@@ -3504,6 +3504,35 @@ unlock:
+@@ -3513,6 +3513,35 @@ unlock:
  	return 0;
  }
  

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0047-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0047-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0047-mm-Fixup-all-fault-handlers-to-check-current-pagefau.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Thu, 17 Mar 2011 11:32:28 +0100
-Subject: [PATCH 047/348] mm: Fixup all fault handlers to check
+Subject: [PATCH 047/371] mm: Fixup all fault handlers to check
  current->pagefault_disable
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=29f0635cae1e121852e44209c3e62a872eb4bc8e
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=46de2f5db384aabda18a740976a2eeae929ee3ef
 
 Necessary for decoupling pagefault disable from preempt count.
 
@@ -33,7 +33,7 @@
  22 files changed, 27 insertions(+), 24 deletions(-)
 
 diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
-index fadd5f8..6d73e1b 100644
+index e576b91..5e04e97 100644
 --- a/arch/alpha/mm/fault.c
 +++ b/arch/alpha/mm/fault.c
 @@ -107,7 +107,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
@@ -59,7 +59,7 @@
  
  	/*
 diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c
-index f7040a1..623a027 100644
+index 632b649..12d7c1d 100644
 --- a/arch/avr32/mm/fault.c
 +++ b/arch/avr32/mm/fault.c
 @@ -81,7 +81,8 @@ asmlinkage void do_page_fault(unsigned long ecr, struct pt_regs *regs)
@@ -73,7 +73,7 @@
  
  	local_irq_enable();
 diff --git a/arch/cris/mm/fault.c b/arch/cris/mm/fault.c
-index 9dcac8e..2b2c292 100644
+index 280c8ea..10d6ef5 100644
 --- a/arch/cris/mm/fault.c
 +++ b/arch/cris/mm/fault.c
 @@ -111,7 +111,7 @@ do_page_fault(unsigned long address, struct pt_regs *regs,
@@ -86,7 +86,7 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/frv/mm/fault.c b/arch/frv/mm/fault.c
-index a325d57..3da8ec7 100644
+index 46a3c18..ae89e6b 100644
 --- a/arch/frv/mm/fault.c
 +++ b/arch/frv/mm/fault.c
 @@ -79,7 +79,7 @@ asmlinkage void do_page_fault(int datammu, unsigned long esr0, unsigned long ear
@@ -99,7 +99,7 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
-index 20b3593..2a4e44f 100644
+index 1e362cd..b1049827 100644
 --- a/arch/ia64/mm/fault.c
 +++ b/arch/ia64/mm/fault.c
 @@ -89,7 +89,7 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re
@@ -112,7 +112,7 @@
  
  #ifdef CONFIG_VIRTUAL_MEM_MAP
 diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c
-index 2c9aeb4..16fa2c7 100644
+index beda9cc..d9100a8 100644
 --- a/arch/m32r/mm/fault.c
 +++ b/arch/m32r/mm/fault.c
 @@ -115,7 +115,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code,
@@ -125,7 +125,7 @@
  
  	/* When running in the kernel we expect faults to occur only to
 diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c
-index 2db6099..238ffc0 100644
+index d605b93..ad3cbf6 100644
 --- a/arch/m68k/mm/fault.c
 +++ b/arch/m68k/mm/fault.c
 @@ -85,7 +85,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
@@ -138,7 +138,7 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c
-index ae97d2c..c3f219c 100644
+index 31bb381..70bc11e 100644
 --- a/arch/microblaze/mm/fault.c
 +++ b/arch/microblaze/mm/fault.c
 @@ -107,7 +107,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long address,
@@ -151,7 +151,7 @@
  			goto bad_area_nosemaphore;
  
 diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
-index 937cf33..ce7e75e 100644
+index b8314cfe..cad2a11 100644
 --- a/arch/mips/mm/fault.c
 +++ b/arch/mips/mm/fault.c
 @@ -88,7 +88,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, unsigned long writ
@@ -164,7 +164,7 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/mn10300/mm/fault.c b/arch/mn10300/mm/fault.c
-index 0945409..53c8d16 100644
+index fe2ceb7..4b7e547 100644
 --- a/arch/mn10300/mm/fault.c
 +++ b/arch/mn10300/mm/fault.c
 @@ -168,7 +168,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long fault_code,
@@ -177,7 +177,7 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c
-index 18162ce..09ecc8a 100644
+index a9b765a..379e9e7 100644
 --- a/arch/parisc/mm/fault.c
 +++ b/arch/parisc/mm/fault.c
 @@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long code,
@@ -190,7 +190,7 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
-index 5efe8c9..17f8bbe 100644
+index 7450843..c9216c9 100644
 --- a/arch/powerpc/mm/fault.c
 +++ b/arch/powerpc/mm/fault.c
 @@ -162,7 +162,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address,
@@ -203,10 +203,10 @@
  			return SIGSEGV;
  		/* in_atomic() in user mode is really bad,
 diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
-index 0fc0a7e..b282958 100644
+index b53339d..fda8532 100644
 --- a/arch/s390/mm/fault.c
 +++ b/arch/s390/mm/fault.c
-@@ -294,7 +294,8 @@ static inline int do_exception(struct pt_regs *regs, int access,
+@@ -301,7 +301,8 @@ static inline int do_exception(struct pt_regs *regs, int access,
  	 * user context.
  	 */
  	fault = VM_FAULT_BADCONTEXT;
@@ -216,7 +216,7 @@
  		goto out;
  
  	address = trans_exc_code & __FAIL_ADDR_MASK;
-@@ -425,7 +426,8 @@ void __kprobes do_asce_exception(struct pt_regs *regs, long pgm_int_code,
+@@ -432,7 +433,8 @@ void __kprobes do_asce_exception(struct pt_regs *regs, long pgm_int_code,
  	struct mm_struct *mm = current->mm;
  	struct vm_area_struct *vma;
  
@@ -227,7 +227,7 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/score/mm/fault.c b/arch/score/mm/fault.c
-index 47b600e..4c12824 100644
+index b3744ca..02fc71a 100644
 --- a/arch/score/mm/fault.c
 +++ b/arch/score/mm/fault.c
 @@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long write,
@@ -240,7 +240,7 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c
-index 7bebd04..a67ac56 100644
+index db14482..12dcaf7 100644
 --- a/arch/sh/mm/fault_32.c
 +++ b/arch/sh/mm/fault_32.c
 @@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
@@ -253,7 +253,7 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
-index 8023fd7..e0742c1 100644
+index 802b806..434c714 100644
 --- a/arch/sparc/mm/fault_32.c
 +++ b/arch/sparc/mm/fault_32.c
 @@ -247,8 +247,8 @@ asmlinkage void do_sparc_fault(struct pt_regs *regs, int text_fault, int write,
@@ -268,7 +268,7 @@
  	perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
  
 diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
-index 2c0b966..6e3ea9f 100644
+index bfd7c02..e2a8e85 100644
 --- a/arch/sparc/mm/fault_64.c
 +++ b/arch/sparc/mm/fault_64.c
 @@ -330,7 +330,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
@@ -281,7 +281,7 @@
  
  	perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
 diff --git a/arch/tile/mm/fault.c b/arch/tile/mm/fault.c
-index 25b7b90..ecdb016 100644
+index c796ce44..93cf4c9 100644
 --- a/arch/tile/mm/fault.c
 +++ b/arch/tile/mm/fault.c
 @@ -346,7 +346,7 @@ static int handle_page_fault(struct pt_regs *regs,
@@ -294,7 +294,7 @@
  		goto bad_area_nosemaphore;
  	}
 diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c
-index dafc947..a283400 100644
+index f79ffc9..c402252 100644
 --- a/arch/um/kernel/trap.c
 +++ b/arch/um/kernel/trap.c
 @@ -37,7 +37,7 @@ int handle_page_fault(unsigned long address, unsigned long ip,
@@ -307,10 +307,10 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
-index 53a7b69..75a94fa 100644
+index 351590e..16a0d86 100644
 --- a/arch/x86/mm/fault.c
 +++ b/arch/x86/mm/fault.c
-@@ -1088,7 +1088,7 @@ do_page_fault(struct pt_regs *regs, unsigned long error_code)
+@@ -1090,7 +1090,7 @@ do_page_fault(struct pt_regs *regs, unsigned long error_code)
  	 * If we're in an interrupt, have no user context or are running
  	 * in an atomic region then we must not take the fault:
  	 */
@@ -320,7 +320,7 @@
  		return;
  	}
 diff --git a/arch/xtensa/mm/fault.c b/arch/xtensa/mm/fault.c
-index e367e30..705f483 100644
+index 4439a1d..1ab0754 100644
 --- a/arch/xtensa/mm/fault.c
 +++ b/arch/xtensa/mm/fault.c
 @@ -57,7 +57,7 @@ void do_page_fault(struct pt_regs *regs)

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0048-mm-pagefault_disabled.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0048-mm-pagefault_disabled.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0048-mm-pagefault_disabled.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Peter Zijlstra <a.p.zijlstra at chello.nl>
 Date: Thu, 11 Aug 2011 15:31:31 +0200
-Subject: [PATCH 048/348] mm: pagefault_disabled()
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3a3add0c6bbfd4f55bbfefe67200faa60469537f
+Subject: [PATCH 048/371] mm: pagefault_disabled()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3aa456c823f510bc57acb1a3af6e1e40c8f7ccf2
 
 Wrap the test for pagefault_disabled() into a helper, this allows us
 to remove the need for current->pagefault_disabled on !-rt kernels.
@@ -36,7 +36,7 @@
  24 files changed, 41 insertions(+), 26 deletions(-)
 
 diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
-index 6d73e1b..4a0a0af 100644
+index 5e04e97..d913e9b 100644
 --- a/arch/alpha/mm/fault.c
 +++ b/arch/alpha/mm/fault.c
 @@ -107,7 +107,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
@@ -62,7 +62,7 @@
  
  	/*
 diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c
-index 623a027..155ad8d 100644
+index 12d7c1d..fe16234 100644
 --- a/arch/avr32/mm/fault.c
 +++ b/arch/avr32/mm/fault.c
 @@ -81,8 +81,7 @@ asmlinkage void do_page_fault(unsigned long ecr, struct pt_regs *regs)
@@ -76,7 +76,7 @@
  
  	local_irq_enable();
 diff --git a/arch/cris/mm/fault.c b/arch/cris/mm/fault.c
-index 2b2c292..ba9cfbe 100644
+index 10d6ef5..35aa283 100644
 --- a/arch/cris/mm/fault.c
 +++ b/arch/cris/mm/fault.c
 @@ -111,7 +111,7 @@ do_page_fault(unsigned long address, struct pt_regs *regs,
@@ -89,7 +89,7 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/frv/mm/fault.c b/arch/frv/mm/fault.c
-index 3da8ec7..a9ce0f0 100644
+index ae89e6b..176093c 100644
 --- a/arch/frv/mm/fault.c
 +++ b/arch/frv/mm/fault.c
 @@ -79,7 +79,7 @@ asmlinkage void do_page_fault(int datammu, unsigned long esr0, unsigned long ear
@@ -102,7 +102,7 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
-index 2a4e44f..05946c2 100644
+index b1049827..d643140 100644
 --- a/arch/ia64/mm/fault.c
 +++ b/arch/ia64/mm/fault.c
 @@ -89,7 +89,7 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re
@@ -115,7 +115,7 @@
  
  #ifdef CONFIG_VIRTUAL_MEM_MAP
 diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c
-index 16fa2c7..6d763f6 100644
+index d9100a8..af29c04 100644
 --- a/arch/m32r/mm/fault.c
 +++ b/arch/m32r/mm/fault.c
 @@ -115,7 +115,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code,
@@ -128,7 +128,7 @@
  
  	/* When running in the kernel we expect faults to occur only to
 diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c
-index 238ffc0..74fe559 100644
+index ad3cbf6..ecefbdb 100644
 --- a/arch/m68k/mm/fault.c
 +++ b/arch/m68k/mm/fault.c
 @@ -85,7 +85,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
@@ -141,7 +141,7 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c
-index c3f219c..4cdd84d 100644
+index 70bc11e..35bf03d 100644
 --- a/arch/microblaze/mm/fault.c
 +++ b/arch/microblaze/mm/fault.c
 @@ -107,7 +107,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long address,
@@ -154,7 +154,7 @@
  			goto bad_area_nosemaphore;
  
 diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
-index ce7e75e..7ade72b 100644
+index cad2a11..42f77e9 100644
 --- a/arch/mips/mm/fault.c
 +++ b/arch/mips/mm/fault.c
 @@ -88,7 +88,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, unsigned long writ
@@ -167,7 +167,7 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/mn10300/mm/fault.c b/arch/mn10300/mm/fault.c
-index 53c8d16..2fea01c 100644
+index 4b7e547..f8bdd57 100644
 --- a/arch/mn10300/mm/fault.c
 +++ b/arch/mn10300/mm/fault.c
 @@ -168,7 +168,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long fault_code,
@@ -180,7 +180,7 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c
-index 09ecc8a..df22f39 100644
+index 379e9e7..34a5c37 100644
 --- a/arch/parisc/mm/fault.c
 +++ b/arch/parisc/mm/fault.c
 @@ -176,7 +176,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long code,
@@ -193,7 +193,7 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
-index 17f8bbe..94bedd4 100644
+index c9216c9..e605ce8 100644
 --- a/arch/powerpc/mm/fault.c
 +++ b/arch/powerpc/mm/fault.c
 @@ -162,7 +162,7 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address,
@@ -206,10 +206,10 @@
  			return SIGSEGV;
  		/* in_atomic() in user mode is really bad,
 diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
-index b282958..feb5518 100644
+index fda8532..229ca60 100644
 --- a/arch/s390/mm/fault.c
 +++ b/arch/s390/mm/fault.c
-@@ -294,8 +294,8 @@ static inline int do_exception(struct pt_regs *regs, int access,
+@@ -301,8 +301,8 @@ static inline int do_exception(struct pt_regs *regs, int access,
  	 * user context.
  	 */
  	fault = VM_FAULT_BADCONTEXT;
@@ -220,7 +220,7 @@
  		goto out;
  
  	address = trans_exc_code & __FAIL_ADDR_MASK;
-@@ -426,8 +426,8 @@ void __kprobes do_asce_exception(struct pt_regs *regs, long pgm_int_code,
+@@ -433,8 +433,8 @@ void __kprobes do_asce_exception(struct pt_regs *regs, long pgm_int_code,
  	struct mm_struct *mm = current->mm;
  	struct vm_area_struct *vma;
  
@@ -232,7 +232,7 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/score/mm/fault.c b/arch/score/mm/fault.c
-index 4c12824..59fccbe 100644
+index 02fc71a..7dce742 100644
 --- a/arch/score/mm/fault.c
 +++ b/arch/score/mm/fault.c
 @@ -72,7 +72,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long write,
@@ -245,7 +245,7 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c
-index a67ac56..643670d 100644
+index 12dcaf7..da16a99 100644
 --- a/arch/sh/mm/fault_32.c
 +++ b/arch/sh/mm/fault_32.c
 @@ -166,7 +166,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
@@ -258,7 +258,7 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
-index e0742c1..054cf56 100644
+index 434c714..76fd06d 100644
 --- a/arch/sparc/mm/fault_32.c
 +++ b/arch/sparc/mm/fault_32.c
 @@ -247,7 +247,7 @@ asmlinkage void do_sparc_fault(struct pt_regs *regs, int text_fault, int write,
@@ -271,7 +271,7 @@
  
  	perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
 diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
-index 6e3ea9f..dbc608c 100644
+index e2a8e85..6255243 100644
 --- a/arch/sparc/mm/fault_64.c
 +++ b/arch/sparc/mm/fault_64.c
 @@ -330,7 +330,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
@@ -284,7 +284,7 @@
  
  	perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
 diff --git a/arch/tile/mm/fault.c b/arch/tile/mm/fault.c
-index ecdb016..1b6fa51 100644
+index 93cf4c9..bd8f35c 100644
 --- a/arch/tile/mm/fault.c
 +++ b/arch/tile/mm/fault.c
 @@ -346,7 +346,7 @@ static int handle_page_fault(struct pt_regs *regs,
@@ -297,7 +297,7 @@
  		goto bad_area_nosemaphore;
  	}
 diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c
-index a283400..7878069 100644
+index c402252..846737e 100644
 --- a/arch/um/kernel/trap.c
 +++ b/arch/um/kernel/trap.c
 @@ -37,7 +37,7 @@ int handle_page_fault(unsigned long address, unsigned long ip,
@@ -310,10 +310,10 @@
  
  	down_read(&mm->mmap_sem);
 diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
-index 75a94fa..63da051 100644
+index 16a0d86..151d957 100644
 --- a/arch/x86/mm/fault.c
 +++ b/arch/x86/mm/fault.c
-@@ -1088,7 +1088,7 @@ do_page_fault(struct pt_regs *regs, unsigned long error_code)
+@@ -1090,7 +1090,7 @@ do_page_fault(struct pt_regs *regs, unsigned long error_code)
  	 * If we're in an interrupt, have no user context or are running
  	 * in an atomic region then we must not take the fault:
  	 */
@@ -323,7 +323,7 @@
  		return;
  	}
 diff --git a/arch/xtensa/mm/fault.c b/arch/xtensa/mm/fault.c
-index 705f483..8f3f52a 100644
+index 1ab0754..e1cdf65 100644
 --- a/arch/xtensa/mm/fault.c
 +++ b/arch/xtensa/mm/fault.c
 @@ -57,7 +57,7 @@ void do_page_fault(struct pt_regs *regs)

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0049-mm-raw_pagefault_disable.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0049-mm-raw_pagefault_disable.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0049-mm-raw_pagefault_disable.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Peter Zijlstra <a.p.zijlstra at chello.nl>
 Date: Fri, 5 Aug 2011 17:16:58 +0200
-Subject: [PATCH 049/348] mm: raw_pagefault_disable
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3f48cfaefbe3ceaf6a278586ffad42adde1c7acc
+Subject: [PATCH 049/371] mm: raw_pagefault_disable
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5fa5505878e002c9cf5cc512b6fb829796479050
 
 Adding migrate_disable() to pagefault_disable() to preserve the
 per-cpu thing for kmap_atomic might not have been the best of choices.
@@ -130,10 +130,10 @@
  		ret;					\
  	})
 diff --git a/mm/memory.c b/mm/memory.c
-index f116401..ddaa7d2 100644
+index bec0319..0b982d2 100644
 --- a/mm/memory.c
 +++ b/mm/memory.c
-@@ -3504,6 +3504,7 @@ unlock:
+@@ -3513,6 +3513,7 @@ unlock:
  	return 0;
  }
  
@@ -141,7 +141,7 @@
  void pagefault_disable(void)
  {
  	inc_preempt_count();
-@@ -3532,6 +3533,7 @@ void pagefault_enable(void)
+@@ -3541,6 +3542,7 @@ void pagefault_enable(void)
  	preempt_check_resched();
  }
  EXPORT_SYMBOL_GPL(pagefault_enable);

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0050-filemap-fix-up.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0050-filemap-fix-up.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0050-filemap-fix-up.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 17 Jun 2011 18:56:24 +0200
-Subject: [PATCH 050/348] filemap-fix-up.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c66a65534ab59b899990faf0f373960c94544f87
+Subject: [PATCH 050/371] filemap-fix-up.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e8ebaf1b87627f94a796177cef364faa370c9e13
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 Wrecked-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0051-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0051-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0051-mm-Remove-preempt-count-from-pagefault-disable-enabl.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sat, 25 Jul 2009 22:06:27 +0200
-Subject: [PATCH 051/348] mm: Remove preempt count from pagefault
+Subject: [PATCH 051/371] mm: Remove preempt count from pagefault
  disable/enable
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cb9936c3c3828bfa40e860fe2f44aff7d316fb43
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9d35038dbf7068bdb045957ef7742476d04542b1
 
 Now that all users are cleaned up, we can remove the preemption count.
 
@@ -12,10 +12,10 @@
  1 file changed, 7 deletions(-)
 
 diff --git a/mm/memory.c b/mm/memory.c
-index ddaa7d2..5e10b9a 100644
+index 0b982d2..f748dfa 100644
 --- a/mm/memory.c
 +++ b/mm/memory.c
-@@ -3507,7 +3507,6 @@ unlock:
+@@ -3516,7 +3516,6 @@ unlock:
  #ifdef CONFIG_PREEMPT_RT_FULL
  void pagefault_disable(void)
  {
@@ -23,7 +23,7 @@
  	current->pagefault_disabled++;
  	/*
  	 * make sure to have issued the store before a pagefault
-@@ -3525,12 +3524,6 @@ void pagefault_enable(void)
+@@ -3534,12 +3533,6 @@ void pagefault_enable(void)
  	 */
  	barrier();
  	current->pagefault_disabled--;

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0052-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0052-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0052-x86-highmem-Replace-BUG_ON-by-WARN_ON.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:29:25 -0500
-Subject: [PATCH 052/348] x86: highmem: Replace BUG_ON by WARN_ON
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=33f9ac93a20f4cf56e45ad041b578ac64a624486
+Subject: [PATCH 052/371] x86: highmem: Replace BUG_ON by WARN_ON
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f9a8351fadd88dfdd6a60ca2df482532825bc548
 
 The machine might survive that problem and be at least in a state
 which allows us to get more information about the problem.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0053-suspend-Prevent-might-sleep-splats.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0053-suspend-Prevent-might-sleep-splats.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0053-suspend-Prevent-might-sleep-splats.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Thu, 15 Jul 2010 10:29:00 +0200
-Subject: [PATCH 053/348] suspend: Prevent might sleep splats
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ba54c6f0a93c44ba869d3fbeff9119d22a8f43c7
+Subject: [PATCH 053/371] suspend: Prevent might sleep splats
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fde4dfdd6b98cfac179b8e009e45d1a45ae3e9c0
 
 timekeeping suspend/resume calls read_persistant_clock() which takes
 rtc_lock. That results in might sleep warnings because at that point
@@ -37,7 +37,7 @@
  
  #define TAINT_PROPRIETARY_MODULE	0
 diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
-index 013bd2e..5b5dab4 100644
+index e4ce628..6187c03 100644
 --- a/kernel/power/hibernate.c
 +++ b/kernel/power/hibernate.c
 @@ -284,6 +284,8 @@ static int create_image(int platform_mode)
@@ -73,7 +73,7 @@
  	local_irq_enable();
  
   Enable_cpus:
-@@ -554,6 +559,7 @@ int hibernation_platform_enter(void)
+@@ -560,6 +565,7 @@ int hibernation_platform_enter(void)
  		goto Platform_finish;
  
  	local_irq_disable();
@@ -81,7 +81,7 @@
  	syscore_suspend();
  	if (pm_wakeup_pending()) {
  		error = -EAGAIN;
-@@ -566,6 +572,7 @@ int hibernation_platform_enter(void)
+@@ -572,6 +578,7 @@ int hibernation_platform_enter(void)
  
   Power_up:
  	syscore_resume();

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0054-OF-Fixup-resursive-locking-code-paths.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0054-OF-Fixup-resursive-locking-code-paths.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0054-OF-Fixup-resursive-locking-code-paths.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Thu, 13 Aug 2009 09:04:10 +0200
-Subject: [PATCH 054/348] OF: Fixup resursive locking code paths
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fee128bfba9ccce400fc52b09ac5d0d7bdc11451
+Subject: [PATCH 054/371] OF: Fixup resursive locking code paths
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=570594108d1828c20633652dd173611a35e04586
 
 There is no real reason to use a rwlock for devtree_lock. It even
 could be a mutex, but unfortunately it's locked from cpu hotplug

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0055-of-convert-devtree-lock.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0055-of-convert-devtree-lock.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0055-of-convert-devtree-lock.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Mon, 21 Mar 2011 14:35:34 +0100
-Subject: [PATCH 055/348] of-convert-devtree-lock.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c820130893a13307f7a4ae4883bddc6ba10e5355
+Subject: [PATCH 055/371] of-convert-devtree-lock.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c207a342b45e066ec9877e1d10491a4576d488a3
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0056-list-add-list-last-entry.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0056-list-add-list-last-entry.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0056-list-add-list-last-entry.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Peter Zijlstra <peterz at infradead.org>
 Date: Tue, 21 Jun 2011 11:22:36 +0200
-Subject: [PATCH 056/348] list-add-list-last-entry.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b84dedd719b29834073bcd676116c5efe7feb955
+Subject: [PATCH 056/371] list-add-list-last-entry.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=00cc5184a9c0b250cb2c762a00ff4d4fbb2e8445
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0057-mm-page-alloc-use-list-last-entry.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0057-mm-page-alloc-use-list-last-entry.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0057-mm-page-alloc-use-list-last-entry.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Peter Zijlstra <peterz at infradead.org>
 Date: Tue, 21 Jun 2011 11:24:35 +0200
-Subject: [PATCH 057/348] mm-page-alloc-use-list-last-entry.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cde46fcee7e32cc056c82a9fc087a8ff567c6f7e
+Subject: [PATCH 057/371] mm-page-alloc-use-list-last-entry.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7f92093ea6768bb03904533feb4284cda4dc3267
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0058-mm-slab-move-debug-out.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0058-mm-slab-move-debug-out.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0058-mm-slab-move-debug-out.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Mon, 20 Jun 2011 10:42:04 +0200
-Subject: [PATCH 058/348] mm-slab-move-debug-out.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9c3330c4da7da07ae27da99bbcb6532e4bcbeb0c
+Subject: [PATCH 058/371] mm-slab-move-debug-out.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a0cd161c149f2c68de35928b3309961ed9078fbb
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0059-rwsem-inlcude-fix.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0059-rwsem-inlcude-fix.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0059-rwsem-inlcude-fix.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 15 Jul 2011 21:24:27 +0200
-Subject: [PATCH 059/348] rwsem-inlcude-fix.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5f16465c3f6ca3fc625fec4cc9b32a94756b5c5c
+Subject: [PATCH 059/371] rwsem-inlcude-fix.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=03df4dfb40e596883a9ebaad15604c8b3cb77458
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0060-sysctl-include-fix.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0060-sysctl-include-fix.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0060-sysctl-include-fix.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Mon, 14 Nov 2011 10:52:34 +0100
-Subject: [PATCH 060/348] sysctl-include-fix.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=de1f39d9045d5606055dae35258492387209c066
+Subject: [PATCH 060/371] sysctl-include-fix.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=224929cc6ba871182118438de618707ae9d8a26c
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0061-net-flip-lock-dep-thingy.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0061-net-flip-lock-dep-thingy.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0061-net-flip-lock-dep-thingy.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 28 Jun 2011 10:59:58 +0200
-Subject: [PATCH 061/348] net-flip-lock-dep-thingy.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3ef5ebb6bd91019b6e245165dc225e9e391c0b81
+Subject: [PATCH 061/371] net-flip-lock-dep-thingy.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9462fc2ce3a7695074b0f06e286ce37a5ded49b6
 
 =======================================================
 [ INFO: possible circular locking dependency detected ]
@@ -93,10 +93,10 @@
  1 file changed, 1 insertion(+), 2 deletions(-)
 
 diff --git a/net/core/sock.c b/net/core/sock.c
-index 8a2c2dd..df24d89 100644
+index e093528..fb9464e 100644
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
-@@ -2038,12 +2038,11 @@ void lock_sock_nested(struct sock *sk, int subclass)
+@@ -2037,12 +2037,11 @@ void lock_sock_nested(struct sock *sk, int subclass)
  	if (sk->sk_lock.owned)
  		__lock_sock(sk);
  	sk->sk_lock.owned = 1;

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0062-softirq-thread-do-softirq.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0062-softirq-thread-do-softirq.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0062-softirq-thread-do-softirq.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 28 Jun 2011 15:44:15 +0200
-Subject: [PATCH 062/348] softirq-thread-do-softirq.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=775b4fe5e0cc02a4e0e8d51954b2049bf99be175
+Subject: [PATCH 062/371] softirq-thread-do-softirq.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=943be3baaf569216c7c0458c93de062f01228cfc
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---
@@ -23,10 +23,10 @@
  extern void softirq_init(void);
  static inline void __raise_softirq_irqoff(unsigned int nr)
 diff --git a/net/core/dev.c b/net/core/dev.c
-index 854da15..1d41fdf 100644
+index fcb5133..3115455 100644
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -3036,7 +3036,7 @@ int netif_rx_ni(struct sk_buff *skb)
+@@ -3039,7 +3039,7 @@ int netif_rx_ni(struct sk_buff *skb)
  	preempt_disable();
  	err = netif_rx(skb);
  	if (local_softirq_pending())

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0063-softirq-split-out-code.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0063-softirq-split-out-code.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0063-softirq-split-out-code.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 28 Jun 2011 15:46:49 +0200
-Subject: [PATCH 063/348] softirq-split-out-code.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d864032b8afecfd6c33221473acff3100426e39e
+Subject: [PATCH 063/371] softirq-split-out-code.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3ea2def138a8d5216065e259d6da115c860921da
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0064-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0064-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0064-x86-Do-not-unmask-io_apic-when-interrupt-is-in-progr.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:29:27 -0500
-Subject: [PATCH 064/348] x86: Do not unmask io_apic when interrupt is in
+Subject: [PATCH 064/371] x86: Do not unmask io_apic when interrupt is in
  progress
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=309bd67040a6fa0a00c67f44a073744fca964701
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f0725444aaad5cfdaa5cb859419b68ddb21c3f7f
 
 With threaded interrupts we might see an interrupt in progress on
 migration. Do not unmask it when this is the case.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0065-x86-32-fix-signal-crap.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0065-x86-32-fix-signal-crap.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0065-x86-32-fix-signal-crap.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Mon, 18 Jul 2011 15:59:38 +0200
-Subject: [PATCH 065/348] x86-32-fix-signal-crap.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4ef1853168ce95533f2f2cabddf2b0f6c04772e3
+Subject: [PATCH 065/371] x86-32-fix-signal-crap.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1d3fd88aac60711bbf13a7b29561982a6aef3c28
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0066-x86-Do-not-disable-preemption-in-int3-on-32bit.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0066-x86-Do-not-disable-preemption-in-int3-on-32bit.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0066-x86-Do-not-disable-preemption-in-int3-on-32bit.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Steven Rostedt <rostedt at goodmis.org>
 Date: Tue, 10 Apr 2012 14:33:57 -0400
-Subject: [PATCH 066/348] x86: Do not disable preemption in int3 on 32bit
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=72c85740b19389423766b9954b411c8904157137
+Subject: [PATCH 066/371] x86: Do not disable preemption in int3 on 32bit
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=76c553971dc6ca70d351d16b06fea2c553b74350
 
 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
@@ -19,11 +19,15 @@
 Cc: stable-rt at vger.kernel.org
 Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-[bwh: Dropped changes to do_stack_segment(), removed by fix for CVE-2014-9090]
 ---
+ arch/x86/kernel/traps.c | 28 +++++++++++++++++++++-------
+ 1 file changed, 21 insertions(+), 7 deletions(-)
+
+diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
+index 2aff347..c77d9fb 100644
 --- a/arch/x86/kernel/traps.c
 +++ b/arch/x86/kernel/traps.c
-@@ -87,9 +87,21 @@ static inline void conditional_sti(struc
+@@ -87,9 +87,21 @@ static inline void conditional_sti(struct pt_regs *regs)
  		local_irq_enable();
  }
  
@@ -46,7 +50,7 @@
  	if (regs->flags & X86_EFLAGS_IF)
  		local_irq_enable();
  }
-@@ -100,11 +112,13 @@ static inline void conditional_cli(struc
+@@ -100,11 +112,13 @@ static inline void conditional_cli(struct pt_regs *regs)
  		local_irq_disable();
  }
  
@@ -61,7 +65,7 @@
  }
  
  static void __kprobes
-@@ -333,9 +347,9 @@ dotraplinkage void __kprobes do_int3(str
+@@ -333,9 +347,9 @@ dotraplinkage void __kprobes do_int3(struct pt_regs *regs, long error_code)
  		return;
  #endif
  
@@ -73,7 +77,7 @@
  }
  
  #ifdef CONFIG_X86_64
-@@ -458,12 +472,12 @@ dotraplinkage void __kprobes do_debug(st
+@@ -458,12 +472,12 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
  		return;
  
  	/* It's safe to allow irq's after DR6 has been saved */
@@ -88,7 +92,7 @@
  		return;
  	}
  
-@@ -482,7 +496,7 @@ dotraplinkage void __kprobes do_debug(st
+@@ -482,7 +496,7 @@ dotraplinkage void __kprobes do_debug(struct pt_regs *regs, long error_code)
  	si_code = get_si_code(tsk->thread.debugreg6);
  	if (tsk->thread.debugreg6 & (DR_STEP | DR_TRAP_BITS) || user_icebp)
  		send_sigtrap(tsk, regs, error_code, si_code);

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0067-rcu-Reduce-lock-section.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0067-rcu-Reduce-lock-section.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0067-rcu-Reduce-lock-section.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 24 Jun 2011 22:23:02 +0200
-Subject: [PATCH 067/348] rcu: Reduce lock section
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=40221df27030202f3a1d5faf61404147c4afb046
+Subject: [PATCH 067/371] rcu: Reduce lock section
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cf2b19b75d3d364b9dc473d7b43cbcd6462bd07a
 
 So the waitqueue wakeup is outside the raw locked section.
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0068-locking-various-init-fixes.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0068-locking-various-init-fixes.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0068-locking-various-init-fixes.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sun, 17 Jul 2011 21:25:03 +0200
-Subject: [PATCH 068/348] locking-various-init-fixes.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5bb94aeb4178427eb9a04adab4051f5a1f2ca1ab
+Subject: [PATCH 068/371] locking-various-init-fixes.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a46f061d34d7e6fa266a2a908ca758a85721d32b
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---
@@ -13,7 +13,7 @@
  5 files changed, 7 insertions(+), 7 deletions(-)
 
 diff --git a/drivers/char/random.c b/drivers/char/random.c
-index 5d223e1..94f53fe 100644
+index 26af698..6eeed0d 100644
 --- a/drivers/char/random.c
 +++ b/drivers/char/random.c
 @@ -445,7 +445,7 @@ static struct entropy_store input_pool = {

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0069-wait-Provide-__wake_up_all_locked.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0069-wait-Provide-__wake_up_all_locked.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0069-wait-Provide-__wake_up_all_locked.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Thu, 1 Dec 2011 00:04:00 +0100
-Subject: [PATCH 069/348] wait: Provide __wake_up_all_locked
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ae6368747968dfea85ceb7fb0ae21a1c0ee7121c
+Subject: [PATCH 069/371] wait: Provide __wake_up_all_locked
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bb182b7bce6ff0d17033f82060761974b19cece1
 
 For code which protects the waitqueue itself with another lock it
 makes no sense to acquire the waitqueue lock for wakeup all. Provide

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0070-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0070-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0070-pci-Use-__wake_up_all_locked-pci_unblock_user_cfg_ac.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Thu, 1 Dec 2011 00:07:16 +0100
-Subject: [PATCH 070/348] pci: Use __wake_up_all_locked
+Subject: [PATCH 070/371] pci: Use __wake_up_all_locked
  pci_unblock_user_cfg_access()
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b499412186f77f4670cd519dc1e016e007ec24cb
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3cf0dcba081deea654c013dabaa678183a426020
 
 The waitqueue is protected by the pci_lock, so we can just avoid to
 lock the waitqueue lock itself. That prevents the

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0071-latency-hist.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0071-latency-hist.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0071-latency-hist.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Carsten Emde <C.Emde at osadl.org>
 Date: Tue, 19 Jul 2011 14:03:41 +0100
-Subject: [PATCH 071/348] latency-hist.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2fea11ce0bbc4e9d12adf815f4e15dbe13ba8f6f
+Subject: [PATCH 071/371] latency-hist.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=577ad7513cae9df4ef4ef3664be732a70954185c
 
 This patch provides a recording mechanism to store data of potential
 sources of system latencies. The recordings separately determine the

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0072-hwlatdetect.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0072-hwlatdetect.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0072-hwlatdetect.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Carsten Emde <C.Emde at osadl.org>
 Date: Tue, 19 Jul 2011 13:53:12 +0100
-Subject: [PATCH 072/348] hwlatdetect.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=de757054302e852653b8dce7aa0aee1bba3f342b
+Subject: [PATCH 072/371] hwlatdetect.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=04fdb31a4e85e2e55e3ba5a5b362bc7aa4692ab9
 
 Jon Masters developed this wonderful SMI detector. For details please
 consult Documentation/hwlat_detector.txt. It could be ported to Linux

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0073-localversion.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0073-localversion.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0073-localversion.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 8 Jul 2011 20:25:16 +0200
-Subject: [PATCH 073/348] localversion.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=886cbeb8f0aaa25b94b66350d4345c186bec13b1
+Subject: [PATCH 073/371] localversion.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6cb7682cb7534a9669fd26e930a027c7789916bb
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0074-early-printk-consolidate.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0074-early-printk-consolidate.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0074-early-printk-consolidate.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sat, 23 Jul 2011 11:04:08 +0200
-Subject: [PATCH 074/348] early-printk-consolidate.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=db23f8d068023d7d5840b53a9a09be514469027e
+Subject: [PATCH 074/371] early-printk-consolidate.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cdcd4c12156f58a1e67014c8059d16016f02939d
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0075-printk-kill.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0075-printk-kill.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0075-printk-kill.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 22 Jul 2011 17:58:40 +0200
-Subject: [PATCH 075/348] printk-kill.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2e1288660588609c4ec06594e732d9f5ff34c0ef
+Subject: [PATCH 075/371] printk-kill.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6b0967a9b61e895aa2e234e09e36ecbe2e1d7734
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0076-printk-force_early_printk-boot-param-to-help-with-de.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0076-printk-force_early_printk-boot-param-to-help-with-de.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0076-printk-force_early_printk-boot-param-to-help-with-de.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Peter Zijlstra <a.p.zijlstra at chello.nl>
 Date: Fri, 2 Sep 2011 14:29:33 +0200
-Subject: [PATCH 076/348] printk: 'force_early_printk' boot param to help with
+Subject: [PATCH 076/371] printk: 'force_early_printk' boot param to help with
  debugging
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7a0b70eb83b0a849e499e931094a5e3932b5527e
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3431b5c057f6a04aff3cb82432347cb482564c19
 
 Gives me an option to screw printk and actually see what the machine
 says.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0077-rt-preempt-base-config.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0077-rt-preempt-base-config.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0077-rt-preempt-base-config.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 17 Jun 2011 12:39:57 +0200
-Subject: [PATCH 077/348] rt-preempt-base-config.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=220cc33464e5b82379dcea5c48e04c3df005725c
+Subject: [PATCH 077/371] rt-preempt-base-config.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=95363f7b3d7203fb0a1c4436fd5d7b07cd96ced9
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0078-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0078-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0078-bug-BUG_ON-WARN_ON-variants-dependend-on-RT-RT.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:29:58 -0500
-Subject: [PATCH 078/348] bug: BUG_ON/WARN_ON variants dependend on RT/!RT
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=af2830293e708b29978ef49aafb50ed9a7783c61
+Subject: [PATCH 078/371] bug: BUG_ON/WARN_ON variants dependend on RT/!RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7e167dffdc5b79ac94dfe07a2908bc356f222ea2
 
 Signed-off-by: Ingo Molnar <mingo at elte.hu>
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0079-rt-local_irq_-variants-depending-on-RT-RT.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0079-rt-local_irq_-variants-depending-on-RT-RT.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0079-rt-local_irq_-variants-depending-on-RT-RT.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 21 Jul 2009 22:34:14 +0200
-Subject: [PATCH 079/348] rt: local_irq_* variants depending on RT/!RT
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0ac02978bdc6d4c0c1dd84446f86d2836b466356
+Subject: [PATCH 079/371] rt: local_irq_* variants depending on RT/!RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=63b4e89e5f968204180076d1a6215e34ee2f6e75
 
 Add local_irq_*_(no)rt variant which are mainly used to break
 interrupt disabled sections on PREEMPT_RT or to explicitely disable

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0080-preempt-Provide-preempt_-_-no-rt-variants.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0080-preempt-Provide-preempt_-_-no-rt-variants.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0080-preempt-Provide-preempt_-_-no-rt-variants.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 24 Jul 2009 12:38:56 +0200
-Subject: [PATCH 080/348] preempt: Provide preempt_*_(no)rt variants
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bdb3602d9e53a120d4b6818c798185eb3abdf2fc
+Subject: [PATCH 080/371] preempt: Provide preempt_*_(no)rt variants
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ba6983723925abb10e458c5ce6bc401a14128f3c
 
 RT needs a few preempt_disable/enable points which are not necessary
 otherwise. Implement variants to avoid #ifdeffery.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0081-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0081-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0081-ata-Do-not-disable-interrupts-in-ide-code-for-preemp.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Steven Rostedt <srostedt at redhat.com>
 Date: Fri, 3 Jul 2009 08:44:29 -0500
-Subject: [PATCH 081/348] ata: Do not disable interrupts in ide code for
+Subject: [PATCH 081/371] ata: Do not disable interrupts in ide code for
  preempt-rt
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2598e4e377632de14a24ccd440da3459a729fe56
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0662b7790ec69b5d39c41e02672a5a68cb82510a
 
 Use the local_irq_*_nort variants.
 
@@ -14,7 +14,7 @@
  1 file changed, 6 insertions(+), 6 deletions(-)
 
 diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
-index 4cadfa2..100f85c 100644
+index 22edc92..e73dc2d 100644
 --- a/drivers/ata/libata-sff.c
 +++ b/drivers/ata/libata-sff.c
 @@ -678,9 +678,9 @@ unsigned int ata_sff_data_xfer_noirq(struct ata_device *dev, unsigned char *buf,

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0082-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0082-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0082-ide-Do-not-disable-interrupts-for-PREEMPT-RT.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:30:16 -0500
-Subject: [PATCH 082/348] ide: Do not disable interrupts for PREEMPT-RT
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b5afeabed6771559c8654da2e238bbd82fff07eb
+Subject: [PATCH 082/371] ide: Do not disable interrupts for PREEMPT-RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0c3ae1faf1f95e83cb69adab59703abb806134c7
 
 Use the local_irq_*_nort variants.
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0083-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0083-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0083-infiniband-Mellanox-IB-driver-patch-use-_nort-primit.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Sven-Thorsten Dietrich <sdietrich at novell.com>
 Date: Fri, 3 Jul 2009 08:30:35 -0500
-Subject: [PATCH 083/348] infiniband: Mellanox IB driver patch use _nort()
+Subject: [PATCH 083/371] infiniband: Mellanox IB driver patch use _nort()
  primitives
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=43c74b3ee9da4b612db5861dd36ab083e3f4bb09
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1783f7a595bfdecafdc47a488400fee1017fae22
 
 Fixes in_atomic stack-dump, when Mellanox module is loaded into the RT
 Kernel.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0084-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0084-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0084-input-gameport-Do-not-disable-interrupts-on-PREEMPT_.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:30:16 -0500
-Subject: [PATCH 084/348] input: gameport: Do not disable interrupts on
+Subject: [PATCH 084/371] input: gameport: Do not disable interrupts on
  PREEMPT_RT
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3813ef7357a3d262537474ba3ee64a98e43a8899
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=52263da2377bdd9cc2985c05a83f9537e5f9f3c3
 
 Use the _nort() primitives.
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0085-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0085-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0085-acpi-Do-not-disable-interrupts-on-PREEMPT_RT.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 21 Jul 2009 22:54:51 +0200
-Subject: [PATCH 085/348] acpi: Do not disable interrupts on PREEMPT_RT
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a68ad619b55a8a2bdf5d027610b2c4be7c0a8f08
+Subject: [PATCH 085/371] acpi: Do not disable interrupts on PREEMPT_RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ccf57c55eaa356cea34964c9570a9d3d8f95854f
 
 Use the local_irq_*_nort() variants.
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0086-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0086-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0086-core-Do-not-disable-interrupts-on-RT-in-kernel-users.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 21 Jul 2009 23:06:05 +0200
-Subject: [PATCH 086/348] core: Do not disable interrupts on RT in
+Subject: [PATCH 086/371] core: Do not disable interrupts on RT in
  kernel/users.c
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8166c5f19b955b1dea4efda8cfcb731a82019f8f
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b382f9267ca67c84630005fb47577a6bd26f8cc2
 
 Use the local_irq_*_nort variants to reduce latencies in RT. The code
 is serialized by the locks. No need to disable interrupts.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0087-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0087-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0087-core-Do-not-disable-interrupts-on-RT-in-res_counter..patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:44:33 -0500
-Subject: [PATCH 087/348] core: Do not disable interrupts on RT in
+Subject: [PATCH 087/371] core: Do not disable interrupts on RT in
  res_counter.c
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c2aaea5f9bf22dc1760ef03895e1c3b15c5ce9c6
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b48c12821cb0dded1999f13604af2caec731cdbb
 
 Frederic Weisbecker reported this warning:
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0088-usb-Use-local_irq_-_nort-variants.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0088-usb-Use-local_irq_-_nort-variants.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0088-usb-Use-local_irq_-_nort-variants.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Steven Rostedt <srostedt at redhat.com>
 Date: Fri, 3 Jul 2009 08:44:26 -0500
-Subject: [PATCH 088/348] usb: Use local_irq_*_nort() variants
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cfdb4c876f8785aa22be173399a11f516c030c5e
+Subject: [PATCH 088/371] usb: Use local_irq_*_nort() variants
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=df2abf9a6dd7ae823e0db4c7a95081bc5d9b0945
 
 [ tglx: Now that irqf_disabled is dead we should kill that ]
 
@@ -13,10 +13,10 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
-index 032e5a6..226d386 100644
+index c0ee52a..b427963 100644
 --- a/drivers/usb/core/hcd.c
 +++ b/drivers/usb/core/hcd.c
-@@ -2143,7 +2143,7 @@ irqreturn_t usb_hcd_irq (int irq, void *__hcd)
+@@ -2145,7 +2145,7 @@ irqreturn_t usb_hcd_irq (int irq, void *__hcd)
  	 * when the first handler doesn't use it.  So let's just
  	 * assume it's never used.
  	 */
@@ -25,7 +25,7 @@
  
  	if (unlikely(HCD_DEAD(hcd) || !HCD_HW_ACCESSIBLE(hcd))) {
  		rc = IRQ_NONE;
-@@ -2156,7 +2156,7 @@ irqreturn_t usb_hcd_irq (int irq, void *__hcd)
+@@ -2158,7 +2158,7 @@ irqreturn_t usb_hcd_irq (int irq, void *__hcd)
  		rc = IRQ_HANDLED;
  	}
  

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0089-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0089-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0089-tty-Do-not-disable-interrupts-in-put_ldisc-on-rt.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Mon, 17 Aug 2009 19:49:19 +0200
-Subject: [PATCH 089/348] tty: Do not disable interrupts in put_ldisc on -rt
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a4053aecd612571eaf50601c37ae3a4db02cbab7
+Subject: [PATCH 089/371] tty: Do not disable interrupts in put_ldisc on -rt
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e7e26f517ddce1d775bb4969533a4f7a8b8d5cd6
 
 Fixes the following on PREEMPT_RT:
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0090-mm-scatterlist-dont-disable-irqs-on-RT.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0090-mm-scatterlist-dont-disable-irqs-on-RT.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0090-mm-scatterlist-dont-disable-irqs-on-RT.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 3 Jul 2009 08:44:34 -0500
-Subject: [PATCH 090/348] mm: scatterlist dont disable irqs on RT
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=682730f66122e4d98d9c46e51601cbe341ec7032
+Subject: [PATCH 090/371] mm: scatterlist dont disable irqs on RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5a951eb9b0003bb8aee965c30567238b888f5162
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0091-signal-fix-up-rcu-wreckage.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0091-signal-fix-up-rcu-wreckage.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0091-signal-fix-up-rcu-wreckage.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 22 Jul 2011 08:07:08 +0200
-Subject: [PATCH 091/348] signal-fix-up-rcu-wreckage.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=786c46738587d61010a14be5a3e2819a71893dcc
+Subject: [PATCH 091/371] signal-fix-up-rcu-wreckage.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2a47601e5fc79ab0597659fdb31a8c33cdbd64a5
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0092-net-wireless-warn-nort.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0092-net-wireless-warn-nort.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0092-net-wireless-warn-nort.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Thu, 21 Jul 2011 21:05:33 +0200
-Subject: [PATCH 092/348] net-wireless-warn-nort.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=88a1a8e61a0224c768d47ca8a8f3278d4f831cde
+Subject: [PATCH 092/371] net-wireless-warn-nort.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f5b9e96d3f2964f4ed2b317acf3f4cdfbecf8fc1
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---
@@ -9,10 +9,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
-index 71d8564..b4c7f0b 100644
+index c0444a0..a84ba15 100644
 --- a/net/mac80211/rx.c
 +++ b/net/mac80211/rx.c
-@@ -3012,7 +3012,7 @@ void ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb)
+@@ -3013,7 +3013,7 @@ void ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb)
  	struct ieee80211_supported_band *sband;
  	struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
  

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0093-mm-Replace-cgroup_page-bit-spinlock.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0093-mm-Replace-cgroup_page-bit-spinlock.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0093-mm-Replace-cgroup_page-bit-spinlock.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 19 Aug 2009 09:56:42 +0200
-Subject: [PATCH 093/348] mm: Replace cgroup_page bit spinlock
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c0be607e7f73edb9e891f5e8b493d53da4c5e327
+Subject: [PATCH 093/371] mm: Replace cgroup_page bit spinlock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0defa6858cfce98266e9ed18e7227e1d24c52375
 
 Bit spinlocks are not working on RT. Replace them.
 
@@ -82,7 +82,7 @@
  
  #ifdef CONFIG_SPARSEMEM
 diff --git a/mm/page_cgroup.c b/mm/page_cgroup.c
-index 2d123f9..2e0d18d 100644
+index 6f4ef53..8e854bf 100644
 --- a/mm/page_cgroup.c
 +++ b/mm/page_cgroup.c
 @@ -17,6 +17,7 @@ static void __meminit init_page_cgroup(struct page_cgroup *pc, unsigned long id)

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0094-buffer_head-Replace-bh_uptodate_lock-for-rt.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0094-buffer_head-Replace-bh_uptodate_lock-for-rt.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0094-buffer_head-Replace-bh_uptodate_lock-for-rt.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 18 Mar 2011 09:18:52 +0100
-Subject: [PATCH 094/348] buffer_head: Replace bh_uptodate_lock for -rt
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=47e3df3697f0f8e0f1725662e6215c38d526b4a5
+Subject: [PATCH 094/371] buffer_head: Replace bh_uptodate_lock for -rt
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2740b96fa0b56a00782815dfc500d8bbb663f73f
 
 Wrap the bit_spin_lock calls into a separate inline and add the RT
 replacements with a real spinlock.
@@ -14,7 +14,7 @@
  3 files changed, 44 insertions(+), 21 deletions(-)
 
 diff --git a/fs/buffer.c b/fs/buffer.c
-index 59496e7..2939df6 100644
+index c457f84..74794b3 100644
 --- a/fs/buffer.c
 +++ b/fs/buffer.c
 @@ -331,8 +331,7 @@ static void end_buffer_async_read(struct buffer_head *bh, int uptodate)
@@ -76,7 +76,7 @@
  }
  EXPORT_SYMBOL(end_buffer_async_write);
  
-@@ -3226,6 +3218,7 @@ struct buffer_head *alloc_buffer_head(gfp_t gfp_flags)
+@@ -3234,6 +3226,7 @@ struct buffer_head *alloc_buffer_head(gfp_t gfp_flags)
  	struct buffer_head *ret = kmem_cache_zalloc(bh_cachep, gfp_flags);
  	if (ret) {
  		INIT_LIST_HEAD(&ret->b_assoc_buffers);

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0095-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0095-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0095-fs-jbd-jbd2-Make-state-lock-and-journal-head-lock-rt.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 18 Mar 2011 10:11:25 +0100
-Subject: [PATCH 095/348] fs: jbd/jbd2: Make state lock and journal head lock
+Subject: [PATCH 095/371] fs: jbd/jbd2: Make state lock and journal head lock
  rt safe
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bf8ea04ca6d6f757e57550ceca02d972aef9c0f8
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=985cb8d3b7c1242486ae676f13ac7c134922ae7e
 
 bit_spin_locks break under RT.
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0096-genirq-Disable-DEBUG_SHIRQ-for-rt.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0096-genirq-Disable-DEBUG_SHIRQ-for-rt.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0096-genirq-Disable-DEBUG_SHIRQ-for-rt.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 18 Mar 2011 10:22:04 +0100
-Subject: [PATCH 096/348] genirq: Disable DEBUG_SHIRQ for rt
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=37aea0ea3f70f82b7d52fc4b977dc5cf7d37d035
+Subject: [PATCH 096/371] genirq: Disable DEBUG_SHIRQ for rt
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e52d6f30b1c9295332bd92a8bb6794aa497aab86
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0097-genirq-Disable-random-call-on-preempt-rt.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0097-genirq-Disable-random-call-on-preempt-rt.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0097-genirq-Disable-random-call-on-preempt-rt.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 21 Jul 2009 16:07:37 +0200
-Subject: [PATCH 097/348] genirq: Disable random call on preempt-rt
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7357ce956a90d3de12469b121efe737d19ee4414
+Subject: [PATCH 097/371] genirq: Disable random call on preempt-rt
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7c631e6be2e7b30941f95c376be759fd175e6050
 
 The random call introduces high latencies and is almost
 unused. Disable it for -rt.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0098-genirq-disable-irqpoll-on-rt.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0098-genirq-disable-irqpoll-on-rt.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0098-genirq-disable-irqpoll-on-rt.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:29:57 -0500
-Subject: [PATCH 098/348] genirq: disable irqpoll on -rt
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7f4295fa6763e605effe0709d3bf8039a6bbaecc
+Subject: [PATCH 098/371] genirq: disable irqpoll on -rt
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=95bbf8677a79e66bbb032ec21aa4fdfddab256a7
 
 Creates long latencies for no value
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0099-genirq-force-threading.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0099-genirq-force-threading.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0099-genirq-force-threading.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sun, 3 Apr 2011 11:57:29 +0200
-Subject: [PATCH 099/348] genirq-force-threading.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9918781703512d6810b7b7eba799cf2f5a6564e5
+Subject: [PATCH 099/371] genirq-force-threading.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1358928e7c196b8038d408ae8f3ce0465bdee5a5
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0100-drivers-net-fix-livelock-issues.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0100-drivers-net-fix-livelock-issues.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0100-drivers-net-fix-livelock-issues.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sat, 20 Jun 2009 11:36:54 +0200
-Subject: [PATCH 100/348] drivers/net: fix livelock issues
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5d8715a59f5bae162316cc64c547bac6636f4401
+Subject: [PATCH 100/371] drivers/net: fix livelock issues
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9a5cce338c043e3ac149703fee10696cd442a569
 
 Preempt-RT runs into a live lock issue with the NETDEV_TX_LOCKED micro
 optimization. The reason is that the softirq thread is rescheduling

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0101-drivers-net-vortex-fix-locking-issues.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0101-drivers-net-vortex-fix-locking-issues.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0101-drivers-net-vortex-fix-locking-issues.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Steven Rostedt <rostedt at goodmis.org>
 Date: Fri, 3 Jul 2009 08:30:00 -0500
-Subject: [PATCH 101/348] drivers/net: vortex fix locking issues
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ed33d2737dac747cf63dec759eb8f5b0b193f1f9
+Subject: [PATCH 101/371] drivers/net: vortex fix locking issues
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=368ce7b8b375a599e8dd49b01bf16d20439fcdd4
 
 Argh, cut and paste wasn't enough...
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0102-drivers-net-gianfar-Make-RT-aware.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0102-drivers-net-gianfar-Make-RT-aware.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0102-drivers-net-gianfar-Make-RT-aware.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Thu, 1 Apr 2010 20:20:57 +0200
-Subject: [PATCH 102/348] drivers: net: gianfar: Make RT aware
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ba9393814967eec3c469f7cac9cf92414f5bf813
+Subject: [PATCH 102/371] drivers: net: gianfar: Make RT aware
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c7059d284dd73efd55b1a197398da3be8c223bce
 
 The adjust_link() disables interrupts before taking the queue
 locks. On RT those locks are converted to "sleeping" locks and

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0103-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0103-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0103-USB-Fix-the-mouse-problem-when-copying-large-amounts.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Wu Zhangjin <wuzj at lemote.com>
 Date: Mon, 4 Jan 2010 11:33:02 +0800
-Subject: [PATCH 103/348] USB: Fix the mouse problem when copying large amounts
+Subject: [PATCH 103/371] USB: Fix the mouse problem when copying large amounts
  of data
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=71b42c150f846bf4cd100d8588379371e06a2411
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3c694d18c95afb1b1a2788f10260092f21e86196
 
 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.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0104-local-var.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0104-local-var.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0104-local-var.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 24 Jun 2011 18:40:37 +0200
-Subject: [PATCH 104/348] local-var.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6bff29ee23608254a0de16a49fcfedbf7ebf2d15
+Subject: [PATCH 104/371] local-var.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1b905edf0869b3f7952890b7db7fd49944e4aeec
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0105-rt-local-irq-lock.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0105-rt-local-irq-lock.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0105-rt-local-irq-lock.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Mon, 20 Jun 2011 09:03:47 +0200
-Subject: [PATCH 105/348] rt-local-irq-lock.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=053eec2e19589d2e8d01aa4910cc166bbcf6ce0f
+Subject: [PATCH 105/371] rt-local-irq-lock.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=161bca76720c1c0f1f984cb710f89d4faf9f28ab
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0106-cpu-rt-variants.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0106-cpu-rt-variants.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0106-cpu-rt-variants.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 17 Jun 2011 15:42:38 +0200
-Subject: [PATCH 106/348] cpu-rt-variants.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a6e5748b8f9b14de082cf0493d12f61e6144a579
+Subject: [PATCH 106/371] cpu-rt-variants.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e3748db7e43648d256d70569dce2b4530c4cf960
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0107-mm-slab-wrap-functions.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0107-mm-slab-wrap-functions.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0107-mm-slab-wrap-functions.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sat, 18 Jun 2011 19:44:43 +0200
-Subject: [PATCH 107/348] mm-slab-wrap-functions.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4a78db83fc3cce26843871f26c0f40128c9964a4
+Subject: [PATCH 107/371] mm-slab-wrap-functions.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=04e38012ce2e9a90e459c27e50f36e5785111b88
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0108-slab-Fix-__do_drain-to-use-the-right-array-cache.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0108-slab-Fix-__do_drain-to-use-the-right-array-cache.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0108-slab-Fix-__do_drain-to-use-the-right-array-cache.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Steven Rostedt <rostedt at goodmis.org>
 Date: Tue, 11 Oct 2011 23:56:23 -0400
-Subject: [PATCH 108/348] slab: Fix __do_drain to use the right array cache
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3e193ad4ad8f431252402b04db7e49e714ef5eb5
+Subject: [PATCH 108/371] slab: Fix __do_drain to use the right array cache
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=eaf62ca397f2cba26c88462087607f55cccf31b7
 
 The array cache in __do_drain() was using the cpu_cache_get() function
 which uses smp_processor_id() to get the proper array. On mainline, this

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0109-mm-More-lock-breaks-in-slab.c.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0109-mm-More-lock-breaks-in-slab.c.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0109-mm-More-lock-breaks-in-slab.c.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Peter Zijlstra <a.p.zijlstra at chello.nl>
 Date: Fri, 3 Jul 2009 08:44:43 -0500
-Subject: [PATCH 109/348] mm: More lock breaks in slab.c
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=83a84e55684a9f3846861cfd16dbd58041624977
+Subject: [PATCH 109/371] mm: More lock breaks in slab.c
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4f56edc9e1745b84e0939b123cd480c6f9d2d8b5
 
 Handle __free_pages outside of the locked regions. This reduces the
 lock contention on the percpu slab locks in -rt significantly.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0110-mm-page_alloc-rt-friendly-per-cpu-pages.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0110-mm-page_alloc-rt-friendly-per-cpu-pages.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0110-mm-page_alloc-rt-friendly-per-cpu-pages.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:29:37 -0500
-Subject: [PATCH 110/348] mm: page_alloc: rt-friendly per-cpu pages
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d47e789bf6a4fa0299ca7687c67ebbb3182e9aca
+Subject: [PATCH 110/371] mm: page_alloc: rt-friendly per-cpu pages
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8127acc3f86dfe8cc5a9ca61dbba8fe560c287c3
 
 rt-friendly per-cpu pages: convert the irqs-off per-cpu locking
 method into a preemptible, explicit-per-cpu-locks method.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0111-mm-page_alloc-reduce-lock-sections-further.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0111-mm-page_alloc-reduce-lock-sections-further.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0111-mm-page_alloc-reduce-lock-sections-further.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Peter Zijlstra <a.p.zijlstra at chello.nl>
 Date: Fri, 3 Jul 2009 08:44:37 -0500
-Subject: [PATCH 111/348] mm: page_alloc reduce lock sections further
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=957d5adf3ab85b52433ca4c400a14c1ce98c4501
+Subject: [PATCH 111/371] mm: page_alloc reduce lock sections further
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=47c1c0cd87d8c49421f0496a7e0759b3d37a83f0
 
 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.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0112-mm-page-alloc-fix.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0112-mm-page-alloc-fix.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0112-mm-page-alloc-fix.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Thu, 21 Jul 2011 16:47:49 +0200
-Subject: [PATCH 112/348] mm-page-alloc-fix.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7fd7e338d89ae379f825082d5c9f2bd73b4b15e9
+Subject: [PATCH 112/371] mm-page-alloc-fix.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d3a69f5db1ec121bd59d4e78c83297c859ddc889
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0113-mm-convert-swap-to-percpu-locked.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0113-mm-convert-swap-to-percpu-locked.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0113-mm-convert-swap-to-percpu-locked.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:29:51 -0500
-Subject: [PATCH 113/348] mm: convert swap to percpu locked
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=85e809dd17c3c282fee8a910cdc19cbd60a58f33
+Subject: [PATCH 113/371] mm: convert swap to percpu locked
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b431964d9518b37f3aea492fb9eee4afb383bd5e
 
 Signed-off-by: Ingo Molnar <mingo at elte.hu>
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
@@ -12,7 +12,7 @@
 
 --- a/mm/swap.c
 +++ b/mm/swap.c
-@@ -34,6 +34,7 @@
+@@ -32,6 +32,7 @@
  #ifndef __GENKSYMS__
  #include <linux/hugetlb.h>
  #endif
@@ -20,7 +20,7 @@
  
  #include "internal.h"
  
-@@ -44,6 +45,9 @@ static DEFINE_PER_CPU(struct pagevec[NR_
+@@ -42,6 +43,9 @@ static DEFINE_PER_CPU(struct pagevec[NR_LRU_LISTS], lru_add_pvecs);
  static DEFINE_PER_CPU(struct pagevec, lru_rotate_pvecs);
  static DEFINE_PER_CPU(struct pagevec, lru_deactivate_pvecs);
  
@@ -30,7 +30,7 @@
  /*
   * This path almost never happens for VM activity - pages are normally
   * freed via pagevecs.  But it gets used by networking.
-@@ -345,11 +349,11 @@ void rotate_reclaimable_page(struct page
+@@ -343,11 +347,11 @@ void rotate_reclaimable_page(struct page *page)
  		unsigned long flags;
  
  		page_cache_get(page);
@@ -44,7 +44,7 @@
  	}
  }
  
-@@ -405,12 +409,13 @@ static void activate_page_drain(int cpu)
+@@ -403,12 +407,13 @@ static void activate_page_drain(int cpu)
  void activate_page(struct page *page)
  {
  	if (PageLRU(page) && !PageActive(page) && !PageUnevictable(page)) {
@@ -60,7 +60,7 @@
  	}
  }
  
-@@ -451,12 +456,12 @@ EXPORT_SYMBOL(mark_page_accessed);
+@@ -449,12 +454,12 @@ EXPORT_SYMBOL(mark_page_accessed);
  
  void __lru_cache_add(struct page *page, enum lru_list lru)
  {
@@ -75,7 +75,7 @@
  }
  EXPORT_SYMBOL(__lru_cache_add);
  
-@@ -590,9 +595,9 @@ static void drain_cpu_pagevecs(int cpu)
+@@ -588,9 +593,9 @@ static void drain_cpu_pagevecs(int cpu)
  		unsigned long flags;
  
  		/* No harm done if a racing interrupt already did this */
@@ -87,7 +87,7 @@
  	}
  
  	pvec = &per_cpu(lru_deactivate_pvecs, cpu);
-@@ -620,18 +625,19 @@ void deactivate_page(struct page *page)
+@@ -618,18 +623,19 @@ void deactivate_page(struct page *page)
  		return;
  
  	if (likely(get_page_unless_zero(page))) {
@@ -111,7 +111,7 @@
  }
  
  static void lru_add_drain_per_cpu(struct work_struct *dummy)
-@@ -861,6 +867,9 @@ void __init swap_setup(void)
+@@ -859,6 +865,9 @@ void __init swap_setup(void)
  {
  	unsigned long megs = totalram_pages >> (20 - PAGE_SHIFT);
  

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0114-mm-vmstat-fix-the-irq-lock-asymetry.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0114-mm-vmstat-fix-the-irq-lock-asymetry.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0114-mm-vmstat-fix-the-irq-lock-asymetry.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 22 Jun 2011 20:47:08 +0200
-Subject: [PATCH 114/348] mm-vmstat-fix-the-irq-lock-asymetry.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d8928c9c26a46ebf14a19f48f089842fcfd0dbf8
+Subject: [PATCH 114/371] mm-vmstat-fix-the-irq-lock-asymetry.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=826e36f9c7abe9db1fe0441954b7efbb1278f428
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0115-mm-make-vmstat-rt-aware.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0115-mm-make-vmstat-rt-aware.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0115-mm-make-vmstat-rt-aware.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:30:13 -0500
-Subject: [PATCH 115/348] mm: make vmstat -rt aware
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cd8a6585569b3fdb9244786ea92354fede124f1d
+Subject: [PATCH 115/371] mm: make vmstat -rt aware
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=12529bd96481bd063d2c751005f001009637727e
 
 Signed-off-by: Ingo Molnar <mingo at elte.hu>
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0116-mm-shrink-the-page-frame-to-rt-size.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0116-mm-shrink-the-page-frame-to-rt-size.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0116-mm-shrink-the-page-frame-to-rt-size.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Peter Zijlstra <peterz at infradead.org>
 Date: Fri, 3 Jul 2009 08:44:54 -0500
-Subject: [PATCH 116/348] mm: shrink the page frame to !-rt size
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ae3acb3a0e4f61a461c68bd5e513b6181df87f82
+Subject: [PATCH 116/371] mm: shrink the page frame to !-rt size
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=694af1136ab0a2063c9caf894ea5c1a13bf5fccc
 
 He below is a boot-tested hack to shrink the page frame size back to
 normal.
@@ -18,10 +18,10 @@
  3 files changed, 76 insertions(+), 8 deletions(-)
 
 diff --git a/include/linux/mm.h b/include/linux/mm.h
-index 305fd75..1aa1204 100644
+index e5ee683..82a8112 100644
 --- a/include/linux/mm.h
 +++ b/include/linux/mm.h
-@@ -1196,27 +1196,59 @@ static inline pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long a
+@@ -1198,27 +1198,59 @@ static inline pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long a
   * overflow into the next struct page (as it might with DEBUG_SPINLOCK).
   * When freeing, reset page->mapping so free_pages_check won't complain.
   */
@@ -106,10 +106,10 @@
  		struct kmem_cache *slab;	/* SLUB: Pointer to slab */
  		struct page *first_page;	/* Compound tail pages */
 diff --git a/mm/memory.c b/mm/memory.c
-index 5e10b9a..5b589e1 100644
+index f748dfa..a9bc468 100644
 --- a/mm/memory.c
 +++ b/mm/memory.c
-@@ -4088,3 +4088,35 @@ void copy_user_huge_page(struct page *dst, struct page *src,
+@@ -4097,3 +4097,35 @@ void copy_user_huge_page(struct page *dst, struct page *src,
  	}
  }
  #endif /* CONFIG_TRANSPARENT_HUGEPAGE || CONFIG_HUGETLBFS */

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0117-ARM-Initialize-ptl-lock-for-vector-page.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0117-ARM-Initialize-ptl-lock-for-vector-page.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0117-ARM-Initialize-ptl-lock-for-vector-page.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Frank Rowand <frank.rowand at am.sony.com>
 Date: Sat, 1 Oct 2011 18:58:13 -0700
-Subject: [PATCH 117/348] ARM: Initialize ptl->lock for vector page
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b2daff4d214e3f8c17c798c48199349931f04b50
+Subject: [PATCH 117/371] ARM: Initialize ptl->lock for vector page
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ed302cad504068a2517716f9d58517011102c199
 
 Without this patch, ARM can not use SPLIT_PTLOCK_CPUS if
 PREEMPT_RT_FULL=y because vectors_user_mapping() creates a

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0118-mm-Allow-only-slab-on-RT.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0118-mm-Allow-only-slab-on-RT.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0118-mm-Allow-only-slab-on-RT.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:44:03 -0500
-Subject: [PATCH 118/348] mm: Allow only slab on RT
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=87600f333be454b742ac190b2ecc6884013ff26c
+Subject: [PATCH 118/371] mm: Allow only slab on RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d68314cf9e77ad21acf3443e2e4a1232966aac67
 
 Signed-off-by: Ingo Molnar <mingo at elte.hu>
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0119-radix-tree-rt-aware.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0119-radix-tree-rt-aware.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0119-radix-tree-rt-aware.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sun, 17 Jul 2011 21:33:18 +0200
-Subject: [PATCH 119/348] radix-tree-rt-aware.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0d5524fe54407849e32a4ebd555dc35740cf020e
+Subject: [PATCH 119/371] radix-tree-rt-aware.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=03af7b9429713c7819efa25932c384125cfeeec0
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0120-panic-disable-random-on-rt.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0120-panic-disable-random-on-rt.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0120-panic-disable-random-on-rt.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 10 Apr 2012 14:34:04 -0400
-Subject: [PATCH 120/348] panic-disable-random-on-rt
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=90f1cc8fb9104188622b040534698e2dcd1699ac
+Subject: [PATCH 120/371] panic-disable-random-on-rt
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c5325cdf9ad5f0956025f690a19ee54d8aa3a772
 
 ---
  kernel/panic.c | 2 ++

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0121-ipc-Make-the-ipc-code-rt-aware.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0121-ipc-Make-the-ipc-code-rt-aware.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0121-ipc-Make-the-ipc-code-rt-aware.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:30:12 -0500
-Subject: [PATCH 121/348] ipc: Make the ipc code -rt aware
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4734247f60e8d8d16852f494e79c7feb3ed3a666
+Subject: [PATCH 121/371] ipc: Make the ipc code -rt aware
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=31b6034df3c8f28eb94cb22138f53f6b61f4c486
 
 RT serializes the code with the (rt)spinlock but keeps preemption
 enabled. Some parts of the code need to be atomic nevertheless.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0122-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0122-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0122-ipc-mqueue-Add-a-critical-section-to-avoid-a-deadloc.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: KOBAYASHI Yoshitake <yoshitake.kobayashi at toshiba.co.jp>
 Date: Sat, 23 Jul 2011 11:57:36 +0900
-Subject: [PATCH 122/348] ipc/mqueue: Add a critical section to avoid a
+Subject: [PATCH 122/371] ipc/mqueue: Add a critical section to avoid a
  deadlock
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=be0cfeee433e4b43357851b1ba9d0cd12c109517
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4d189e73bd444eaa9bca811e365f1aa928e78380
 
 (Repost for v3.0-rt1 and changed the distination addreses)
 I have tested the following patch on v3.0-rt1 with PREEMPT_RT_FULL.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0123-relay-fix-timer-madness.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0123-relay-fix-timer-madness.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0123-relay-fix-timer-madness.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:44:07 -0500
-Subject: [PATCH 123/348] relay: fix timer madness
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=219f260563cd1a028d7e9d7239374e751a6986ad
+Subject: [PATCH 123/371] relay: fix timer madness
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ecc29175cc1612c9d9c00a09ab77cd6b1b858a3a
 
 remove timer calls (!!!) from deep within the tracing infrastructure.
 This was totally bogus code that can cause lockups and worse.  Poll

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0124-net-ipv4-route-use-locks-on-up-rt.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0124-net-ipv4-route-use-locks-on-up-rt.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0124-net-ipv4-route-use-locks-on-up-rt.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 15 Jul 2011 16:24:45 +0200
-Subject: [PATCH 124/348] net-ipv4-route-use-locks-on-up-rt.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0f61dc46a39ff14ca164231659aabc253d52f8ab
+Subject: [PATCH 124/371] net-ipv4-route-use-locks-on-up-rt.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0633dbd84dea54737f95591fa0a7f27c98531725
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0125-workqueue-avoid-the-lock-in-cpu-dying.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0125-workqueue-avoid-the-lock-in-cpu-dying.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0125-workqueue-avoid-the-lock-in-cpu-dying.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 24 Jun 2011 20:39:24 +0200
-Subject: [PATCH 125/348] workqueue-avoid-the-lock-in-cpu-dying.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fb3b4a395d102f7711d9afb9d4e4a8d434772562
+Subject: [PATCH 125/371] workqueue-avoid-the-lock-in-cpu-dying.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0f6e973fcc260de4b12ef72047318d8832ef32b4
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0126-timers-prepare-for-full-preemption.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0126-timers-prepare-for-full-preemption.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0126-timers-prepare-for-full-preemption.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:29:34 -0500
-Subject: [PATCH 126/348] timers: prepare for full preemption
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c4f1947b00e80e1c183034141efc88205d874974
+Subject: [PATCH 126/371] timers: prepare for full preemption
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=eb3f774e931bff058cff0273ed0325283ea98a1f
 
 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

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0127-timers-preempt-rt-support.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0127-timers-preempt-rt-support.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0127-timers-preempt-rt-support.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:30:20 -0500
-Subject: [PATCH 127/348] timers: preempt-rt support
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=868dbfaccd94afea4da79c90bbe2f5ee7161798c
+Subject: [PATCH 127/371] timers: preempt-rt support
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1dd599d0d1af8532f604353d574a9dd994be9dd4
 
 Signed-off-by: Ingo Molnar <mingo at elte.hu>
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0128-timers-fix-timer-hotplug-on-rt.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0128-timers-fix-timer-hotplug-on-rt.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0128-timers-fix-timer-hotplug-on-rt.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:30:32 -0500
-Subject: [PATCH 128/348] timers: fix timer hotplug on -rt
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3f9539961836b706feb5688f4e5f690fcbd986f0
+Subject: [PATCH 128/371] timers: fix timer hotplug on -rt
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1d45424f08a400f28758294cb49c99f45d0a91c3
 
 Here we are in the CPU_DEAD notifier, and we must not sleep nor
 enable interrupts.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0129-timers-mov-printk_tick-to-soft-interrupt.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0129-timers-mov-printk_tick-to-soft-interrupt.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0129-timers-mov-printk_tick-to-soft-interrupt.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 3 Jul 2009 08:44:30 -0500
-Subject: [PATCH 129/348] timers: mov printk_tick to soft interrupt
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f7e42750d7823faf9fcc4a35d96289e7477f3582
+Subject: [PATCH 129/371] timers: mov printk_tick to soft interrupt
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6e8689a330bd468a8c01b6fc838db23474426ee9
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 Signed-off-by: Ingo Molnar <mingo at elte.hu>

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0130-timer-delay-waking-softirqs-from-the-jiffy-tick.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0130-timer-delay-waking-softirqs-from-the-jiffy-tick.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0130-timer-delay-waking-softirqs-from-the-jiffy-tick.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Peter Zijlstra <peterz at infradead.org>
 Date: Fri, 21 Aug 2009 11:56:45 +0200
-Subject: [PATCH 130/348] timer: delay waking softirqs from the jiffy tick
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8d02d987803d1be120e45846f6d9756fe7665f45
+Subject: [PATCH 130/371] timer: delay waking softirqs from the jiffy tick
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9dbb987ff911a316449e8fa8a3225e623e3b3bb0
 
 People were complaining about broken balancing with the recent -rt
 series.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0131-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0131-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0131-timers-Avoid-the-switch-timers-base-set-to-NULL-tric.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Thu, 21 Jul 2011 15:23:39 +0200
-Subject: [PATCH 131/348] timers: Avoid the switch timers base set to NULL
+Subject: [PATCH 131/371] timers: Avoid the switch timers base set to NULL
  trick on RT
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f04bb7fd9d4c9b75d0d1e97bdc1fb043e3aa45b1
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5c9d99b8554e4f6f1fa4283fe17e55c5f4629d1a
 
 On RT that code is preemptible, so we cannot assign NULL to timers
 base as a preempter would spin forever in lock_timer_base().

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0132-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0132-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0132-printk-Don-t-call-printk_tick-in-printk_needs_cpu-on.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Yong Zhang <yong.zhang0 at gmail.com>
 Date: Sun, 16 Oct 2011 18:56:45 +0800
-Subject: [PATCH 132/348] printk: Don't call printk_tick in printk_needs_cpu()
+Subject: [PATCH 132/371] printk: Don't call printk_tick in printk_needs_cpu()
  on RT
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f285897a7f30b6dd8b38c4868c1de34537b22287
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=795884c82666fb7f3b58e57d71d58fc793ca8d9e
 
 printk_tick() can't be called in atomic context when RT is enabled,
 otherwise below warning will show:

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0133-hrtimers-prepare-full-preemption.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0133-hrtimers-prepare-full-preemption.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0133-hrtimers-prepare-full-preemption.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:29:34 -0500
-Subject: [PATCH 133/348] hrtimers: prepare full preemption
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=355d42216ff53b7bef7fe90cffbfb89cd6ecb3b2
+Subject: [PATCH 133/371] hrtimers: prepare full preemption
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=42fbcdcb59c7dec1c4137383f9b108ac831b7344
 
 Make cancellation of a running callback in softirq context safe
 against preemption.
@@ -121,10 +121,10 @@
  		}
  		expires = timeval_to_ktime(value->it_value);
 diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
-index 4b7183c..1d5e435 100644
+index 81ad8aa..f183690 100644
 --- a/kernel/posix-timers.c
 +++ b/kernel/posix-timers.c
-@@ -773,6 +773,20 @@ SYSCALL_DEFINE1(timer_getoverrun, timer_t, timer_id)
+@@ -774,6 +774,20 @@ SYSCALL_DEFINE1(timer_getoverrun, timer_t, timer_id)
  	return overrun;
  }
  
@@ -145,7 +145,7 @@
  /* Set a POSIX.1b interval timer. */
  /* timr->it_lock is taken. */
  static int
-@@ -850,6 +864,7 @@ retry:
+@@ -851,6 +865,7 @@ retry:
  	if (!timr)
  		return -EINVAL;
  
@@ -153,7 +153,7 @@
  	kc = clockid_to_kclock(timr->it_clock);
  	if (WARN_ON_ONCE(!kc || !kc->timer_set))
  		error = -EINVAL;
-@@ -858,9 +873,12 @@ retry:
+@@ -859,9 +874,12 @@ retry:
  
  	unlock_timer(timr, flag);
  	if (error == TIMER_RETRY) {
@@ -166,7 +166,7 @@
  
  	if (old_setting && !error &&
  	    copy_to_user(old_setting, &old_spec, sizeof (old_spec)))
-@@ -898,10 +916,15 @@ retry_delete:
+@@ -899,10 +917,15 @@ retry_delete:
  	if (!timer)
  		return -EINVAL;
  
@@ -182,7 +182,7 @@
  
  	spin_lock(&current->sighand->siglock);
  	list_del(&timer->list);
-@@ -927,8 +950,18 @@ static void itimer_delete(struct k_itimer *timer)
+@@ -928,8 +951,18 @@ static void itimer_delete(struct k_itimer *timer)
  retry_delete:
  	spin_lock_irqsave(&timer->it_lock, flags);
  

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0134-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0134-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0134-hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 3 Jul 2009 08:44:31 -0500
-Subject: [PATCH 134/348] hrtimer: fixup hrtimer callback changes for
+Subject: [PATCH 134/371] hrtimer: fixup hrtimer callback changes for
  preempt-rt
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b935358ce6fde9aa3516641a1b2073d5e691d96d
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=84f66dfc43a7d95b8ae419e7c191624324639e55
 
 In preempt-rt we can not call the callbacks which take sleeping locks
 from the timer interrupt context.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0135-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0135-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0135-hrtimer-Don-t-call-the-timer-handler-from-hrtimer_st.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Peter Zijlstra <a.p.zijlstra at chello.nl>
 Date: Fri, 12 Aug 2011 17:39:54 +0200
-Subject: [PATCH 135/348] hrtimer: Don't call the timer handler from
+Subject: [PATCH 135/371] hrtimer: Don't call the timer handler from
  hrtimer_start
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2f56baeade6b31caca1ce1bfde16e17c075232a2
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f32110d7540d73f265c2f5cc1314340fd3b6ae60
 
  [<ffffffff812de4a9>] __delay+0xf/0x11
  [<ffffffff812e36e9>] do_raw_spin_lock+0xd2/0x13c

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0136-hrtimer-fix-reprogram-madness.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0136-hrtimer-fix-reprogram-madness.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0136-hrtimer-fix-reprogram-madness.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 14 Sep 2011 14:48:43 +0200
-Subject: [PATCH 136/348] hrtimer-fix-reprogram-madness.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f28d78d604ce8b8c6b69c943a09ba735b8d6badf
+Subject: [PATCH 136/371] hrtimer-fix-reprogram-madness.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=762585c356dc9ef9120417a5ce687f9a74ca7cd6
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0137-timer-fd-Prevent-live-lock.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0137-timer-fd-Prevent-live-lock.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0137-timer-fd-Prevent-live-lock.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 25 Jan 2012 11:08:40 +0100
-Subject: [PATCH 137/348] timer-fd: Prevent live lock
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=db6b082982c81b50f76920ac600490aa90c7d3b0
+Subject: [PATCH 137/371] timer-fd: Prevent live lock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a3db340c059dcec8f38d234741cf5f74098068a2
 
 If hrtimer_try_to_cancel() requires a retry, then depending on the
 priority setting te retry loop might prevent timer callback completion

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0138-posix-timers-thread-posix-cpu-timers-on-rt.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0138-posix-timers-thread-posix-cpu-timers-on-rt.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0138-posix-timers-thread-posix-cpu-timers-on-rt.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: John Stultz <johnstul at us.ibm.com>
 Date: Fri, 3 Jul 2009 08:29:58 -0500
-Subject: [PATCH 138/348] posix-timers: thread posix-cpu-timers on -rt
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ddb22a76bcd2d480caa9cbcdffa307eb4fc03ff4
+Subject: [PATCH 138/371] posix-timers: thread posix-cpu-timers on -rt
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9e2cf85e46d432d43a61b3adf7ab420c49e312e2
 
 posix-cpu-timer code takes non -rt safe locks in hard irq
 context. Move it to a thread.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0139-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0139-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0139-posix-timers-Shorten-posix_cpu_timers-CPU-kernel-thr.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Arnaldo Carvalho de Melo <acme at redhat.com>
 Date: Fri, 3 Jul 2009 08:30:00 -0500
-Subject: [PATCH 139/348] posix-timers: Shorten posix_cpu_timers/<CPU> kernel
+Subject: [PATCH 139/371] posix-timers: Shorten posix_cpu_timers/<CPU> kernel
  thread names
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2923b72c8b4a5794c8c3b087ee53ae5477f4fe26
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e692e2e41e20810d1b2ceb4d2c01f17e8554b624
 
 Shorten the softirq kernel thread names because they always overflow the
 limited comm length, appearing as "posix_cpu_timer" CPU# times.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0140-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0140-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0140-posix-timers-Avoid-wakeups-when-no-timers-are-active.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 3 Jul 2009 08:44:44 -0500
-Subject: [PATCH 140/348] posix-timers: Avoid wakeups when no timers are active
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=41593e9edc57676280698e42a1bb6e73c573b760
+Subject: [PATCH 140/371] posix-timers: Avoid wakeups when no timers are active
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f05c73555ddec49cfe7e4d3d3d5f04ef237a47cd
 
 Waking the thread even when no timers are scheduled is useless.
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0141-sched-delay-put-task.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0141-sched-delay-put-task.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0141-sched-delay-put-task.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 31 May 2011 16:59:16 +0200
-Subject: [PATCH 141/348] sched-delay-put-task.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7950522502fc850d5a5356f3c0c030c9f02874bd
+Subject: [PATCH 141/371] sched-delay-put-task.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=593d750dda7474260814175cc9f437d29edeb607
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---
@@ -11,7 +11,7 @@
 
 --- a/include/linux/sched.h
 +++ b/include/linux/sched.h
-@@ -1602,6 +1602,9 @@ struct task_struct {
+@@ -1600,6 +1600,9 @@ struct task_struct {
  #ifndef __GENKSYMS__
  	unsigned long rt_watchdog_stamp;
  #endif
@@ -21,7 +21,7 @@
  };
  
  /* Future-safe accessor for struct task_struct's cpus_allowed. */
-@@ -1804,6 +1807,15 @@ extern struct pid *cad_pid;
+@@ -1802,6 +1805,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 @@
  extern void __put_task_struct(struct task_struct *t);
  
  static inline void put_task_struct(struct task_struct *t)
-@@ -1811,6 +1823,7 @@ static inline void put_task_struct(struc
+@@ -1809,6 +1821,7 @@ static inline void put_task_struct(struct task_struct *t)
  	if (atomic_dec_and_test(&t->usage))
  		__put_task_struct(t);
  }
@@ -47,7 +47,7 @@
  extern void thread_group_times(struct task_struct *p, cputime_t *ut, cputime_t *st);
 --- a/kernel/fork.c
 +++ b/kernel/fork.c
-@@ -198,7 +198,18 @@ void __put_task_struct(struct task_struc
+@@ -198,7 +198,18 @@ void __put_task_struct(struct task_struct *tsk)
  	if (!profile_handoff_task(tsk))
  		free_task(tsk);
  }

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0142-sched-limit-nr-migrate.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0142-sched-limit-nr-migrate.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0142-sched-limit-nr-migrate.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Mon, 6 Jun 2011 12:12:51 +0200
-Subject: [PATCH 142/348] sched-limit-nr-migrate.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cf10a8bbd1d230567be6c1a3398e6a52965de3ac
+Subject: [PATCH 142/371] sched-limit-nr-migrate.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=732094937edf335ce77789a9cb7448fa7774fd0e
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0143-sched-mmdrop-delayed.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0143-sched-mmdrop-delayed.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0143-sched-mmdrop-delayed.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Mon, 6 Jun 2011 12:20:33 +0200
-Subject: [PATCH 143/348] sched-mmdrop-delayed.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7d0897e0ab93a7024aa12bcd915ab8a06eb2ac0a
+Subject: [PATCH 143/371] sched-mmdrop-delayed.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6529eb4177f8d5b41c9a52c2fe2fd58f78e75895
 
 Needs thread context (pgd_lock) -> ifdeffed. workqueues wont work with
 RT
@@ -24,7 +24,7 @@
  #include <asm/page.h>
  #include <asm/mmu.h>
  
-@@ -397,6 +398,9 @@ struct mm_struct {
+@@ -394,6 +395,9 @@ struct mm_struct {
  #ifndef __GENKSYMS__
  	unsigned long mmap_legacy_base;         /* base of mmap area in bottom-up allocations */
  #endif
@@ -36,7 +36,7 @@
  static inline void mm_init_cpumask(struct mm_struct *mm)
 --- a/include/linux/sched.h
 +++ b/include/linux/sched.h
-@@ -2305,12 +2305,24 @@ extern struct mm_struct * mm_alloc(void)
+@@ -2303,12 +2303,24 @@ extern struct mm_struct * mm_alloc(void);
  
  /* mmdrop drops the mm and the page tables */
  extern void __mmdrop(struct mm_struct *);
@@ -94,7 +94,7 @@
   */
 --- a/kernel/sched.c
 +++ b/kernel/sched.c
-@@ -3175,8 +3175,12 @@ static void finish_task_switch(struct rq
+@@ -3175,8 +3175,12 @@ static void finish_task_switch(struct rq *rq, struct task_struct *prev)
  	finish_lock_switch(rq, prev);
  
  	fire_sched_in_preempt_notifiers(current);
@@ -108,7 +108,7 @@
  	if (unlikely(prev_state == TASK_DEAD)) {
  		/*
  		 * Remove function-return probe instances associated with this
-@@ -6500,6 +6504,8 @@ static int migration_cpu_stop(void *data
+@@ -6500,6 +6504,8 @@ static int migration_cpu_stop(void *data)
  
  #ifdef CONFIG_HOTPLUG_CPU
  
@@ -131,7 +131,7 @@
  }
  
  /*
-@@ -6865,6 +6876,12 @@ migration_call(struct notifier_block *nf
+@@ -6865,6 +6876,12 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu)
  		migrate_nr_uninterruptible(rq);
  		calc_global_load_remove(rq);
  		break;

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0144-sched-rt-mutex-wakeup.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0144-sched-rt-mutex-wakeup.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0144-sched-rt-mutex-wakeup.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sat, 25 Jun 2011 09:21:04 +0200
-Subject: [PATCH 144/348] sched-rt-mutex-wakeup.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=31890448c89fdf1c0e9f9a5cfb6103afacaea15f
+Subject: [PATCH 144/371] sched-rt-mutex-wakeup.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1c0302cf9172add7c0c100bc849589bfcba1e2fa
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0145-sched-prevent-idle-boost.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0145-sched-prevent-idle-boost.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0145-sched-prevent-idle-boost.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Mon, 6 Jun 2011 20:07:38 +0200
-Subject: [PATCH 145/348] sched-prevent-idle-boost.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=23222a4b2a018acdb616b9631be9614bee925aa4
+Subject: [PATCH 145/371] sched-prevent-idle-boost.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1172e4e713b17e57211411baab461eafc0acce81
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0146-sched-might-sleep-do-not-account-rcu-depth.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0146-sched-might-sleep-do-not-account-rcu-depth.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0146-sched-might-sleep-do-not-account-rcu-depth.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 7 Jun 2011 09:19:06 +0200
-Subject: [PATCH 146/348] sched-might-sleep-do-not-account-rcu-depth.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=95890fc4aaef11999d8fed073447f119fe27094c
+Subject: [PATCH 146/371] sched-might-sleep-do-not-account-rcu-depth.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b1db3b6708be9f6d86a918ae150a33de59c698f7
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0147-sched-Break-out-from-load_balancing-on-rq_lock-conte.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0147-sched-Break-out-from-load_balancing-on-rq_lock-conte.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0147-sched-Break-out-from-load_balancing-on-rq_lock-conte.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Peter Zijlstra <peterz at infradead.org>
 Date: Tue, 16 Mar 2010 14:31:44 -0700
-Subject: [PATCH 147/348] sched: Break out from load_balancing on rq_lock
+Subject: [PATCH 147/371] sched: Break out from load_balancing on rq_lock
  contention
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a856b9834b071b8b1cba175371879740ab06d479
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=648de60f1e1bce843174e2e6560c415dfdbc5a97
 
 Also limit NEW_IDLE pull
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0148-sched-cond-resched.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0148-sched-cond-resched.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0148-sched-cond-resched.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 7 Jun 2011 11:25:03 +0200
-Subject: [PATCH 148/348] sched-cond-resched.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=da2a3527d569a3a612bd386df78fb505e64828df
+Subject: [PATCH 148/371] sched-cond-resched.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7c09c7eb23988362bd31d499acd879b090a95258
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0149-cond-resched-softirq-fix.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0149-cond-resched-softirq-fix.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0149-cond-resched-softirq-fix.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Thu, 14 Jul 2011 09:56:44 +0200
-Subject: [PATCH 149/348] cond-resched-softirq-fix.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=714e330fa84587f5a9015d3ee034973abc135706
+Subject: [PATCH 149/371] cond-resched-softirq-fix.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a3963179c4286846a865e29c4175dd06da72d5fa
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0150-sched-no-work-when-pi-blocked.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0150-sched-no-work-when-pi-blocked.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0150-sched-no-work-when-pi-blocked.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sun, 17 Jul 2011 20:46:52 +0200
-Subject: [PATCH 150/348] sched-no-work-when-pi-blocked.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b4d5746390f66c388c34a878987f1f9ef754905c
+Subject: [PATCH 150/371] sched-no-work-when-pi-blocked.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2a5591626db87c12509c11a2f01500809eb0b299
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0151-cond-resched-lock-rt-tweak.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0151-cond-resched-lock-rt-tweak.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0151-cond-resched-lock-rt-tweak.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sun, 17 Jul 2011 22:51:33 +0200
-Subject: [PATCH 151/348] cond-resched-lock-rt-tweak.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2e04c55b1f1a23564854339fc42ead80b0ccfea5
+Subject: [PATCH 151/371] cond-resched-lock-rt-tweak.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=db763d866118f4e1f49c81266b60993e132ad4c0
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0152-sched-disable-ttwu-queue.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0152-sched-disable-ttwu-queue.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0152-sched-disable-ttwu-queue.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 13 Sep 2011 16:42:35 +0200
-Subject: [PATCH 152/348] sched-disable-ttwu-queue.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=96c30a40f7a2d3aef13681020338ec6a87504c9b
+Subject: [PATCH 152/371] sched-disable-ttwu-queue.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f49bf065de9e0b2e0f2b895173abcb9a686c8638
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0153-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0153-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0153-sched-Disable-CONFIG_RT_GROUP_SCHED-on-RT.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Mon, 18 Jul 2011 17:03:52 +0200
-Subject: [PATCH 153/348] sched: Disable CONFIG_RT_GROUP_SCHED on RT
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0a9ee7d256fcf2dce729fd55fcc5d4a35bb2e5af
+Subject: [PATCH 153/371] sched: Disable CONFIG_RT_GROUP_SCHED on RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=774136e7cf0daf4cabfcc1392cf23372712894fa
 
 Carsten reported problems when running:
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0154-sched-ttwu-Return-success-when-only-changing-the-sav.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0154-sched-ttwu-Return-success-when-only-changing-the-sav.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0154-sched-ttwu-Return-success-when-only-changing-the-sav.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 13 Dec 2011 21:42:19 +0100
-Subject: [PATCH 154/348] sched: ttwu: Return success when only changing the
+Subject: [PATCH 154/371] sched: ttwu: Return success when only changing the
  saved_state value
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4bb73bafb24c003ab904fb12f9bdc101ba09dfd9
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d68007019a12d43db2e526f6108f26ec763f1473
 
 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

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0155-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0155-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0155-stop_machine-convert-stop_machine_run-to-PREEMPT_RT.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:30:27 -0500
-Subject: [PATCH 155/348] stop_machine: convert stop_machine_run() to
+Subject: [PATCH 155/371] stop_machine: convert stop_machine_run() to
  PREEMPT_RT
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a5e20c1641b8ee0ff4761352d59ed16a069b9653
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ef5c3b74d70ac926204d76010e397213df1d35e4
 
 Instead of playing with non-preemption, introduce explicit
 startup serialization. This is more robust and cleaner as

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0156-stomp-machine-mark-stomper-thread.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0156-stomp-machine-mark-stomper-thread.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0156-stomp-machine-mark-stomper-thread.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sun, 17 Jul 2011 19:53:19 +0200
-Subject: [PATCH 156/348] stomp-machine-mark-stomper-thread.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=95a61c33a45023cecd1b2dc9b89c6569a2c96148
+Subject: [PATCH 156/371] stomp-machine-mark-stomper-thread.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=31050429e348bf4d7bf9add2434a3a33f33cddb5
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0157-stomp-machine-raw-lock.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0157-stomp-machine-raw-lock.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0157-stomp-machine-raw-lock.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 29 Jun 2011 11:01:51 +0200
-Subject: [PATCH 157/348] stomp-machine-raw-lock.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4c92b213b645edfafcb15b01e2f925efa4ffcdf8
+Subject: [PATCH 157/371] stomp-machine-raw-lock.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=180d4bbbf9c1bab384f14d70d90967812362a3d5
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0158-hotplug-Lightweight-get-online-cpus.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0158-hotplug-Lightweight-get-online-cpus.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0158-hotplug-Lightweight-get-online-cpus.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 15 Jun 2011 12:36:06 +0200
-Subject: [PATCH 158/348] hotplug: Lightweight get online cpus
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=bf11b84e1772097b28e2259fb346846240d98a0a
+Subject: [PATCH 158/371] hotplug: Lightweight get online cpus
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8776f53ba9da8640bb5e5206605fc21843ebd5e8
 
 get_online_cpus() is a heavy weight function which involves a global
 mutex. migrate_disable() wants a simpler construct which prevents only

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0159-hotplug-sync_unplug-No.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0159-hotplug-sync_unplug-No.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0159-hotplug-sync_unplug-No.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Yong Zhang <yong.zhang0 at gmail.com>
 Date: Sun, 16 Oct 2011 18:56:43 +0800
-Subject: [PATCH 159/348] hotplug: sync_unplug: No " " in task name
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0cd3da71039a0f9ca566677bf574e8ecbd7e35e6
+Subject: [PATCH 159/371] hotplug: sync_unplug: No " " in task name
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fa1e5e026e63988b3ef570a6de9803cff96e875c
 
 Otherwise the output will look a little odd.
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0160-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0160-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0160-hotplug-Reread-hotplug_pcp-on-pin_current_cpu-retry.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Yong Zhang <yong.zhang0 at gmail.com>
 Date: Thu, 28 Jul 2011 11:16:00 +0800
-Subject: [PATCH 160/348] hotplug: Reread hotplug_pcp on pin_current_cpu()
+Subject: [PATCH 160/371] hotplug: Reread hotplug_pcp on pin_current_cpu()
  retry
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3a247f4bbe76e3f94bf50fa3c043a7d38eae9e10
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7eca19219b7f153c1ec04958619d774e2274fe29
 
 When retry happens, it's likely that the task has been migrated to
 another cpu (except unplug failed), but it still derefernces the

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0161-sched-migrate-disable.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0161-sched-migrate-disable.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0161-sched-migrate-disable.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Thu, 16 Jun 2011 13:26:08 +0200
-Subject: [PATCH 161/348] sched-migrate-disable.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a65f42c6f9d5fb1589adfc3ab020ca822c486f2f
+Subject: [PATCH 161/371] sched-migrate-disable.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7570172090beedbe68c7bf7e3761eadd018e348c
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0162-hotplug-use-migrate-disable.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0162-hotplug-use-migrate-disable.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0162-hotplug-use-migrate-disable.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sun, 17 Jul 2011 19:35:29 +0200
-Subject: [PATCH 162/348] hotplug-use-migrate-disable.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0c4f965f1655fd68219a6f6642fcd52315b6effb
+Subject: [PATCH 162/371] hotplug-use-migrate-disable.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7f2d29f837f57ab1c8143373f2945f8b89a4142c
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0163-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0163-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0163-hotplug-Call-cpu_unplug_begin-before-DOWN_PREPARE.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Yong Zhang <yong.zhang0 at gmail.com>
 Date: Sun, 16 Oct 2011 18:56:44 +0800
-Subject: [PATCH 163/348] hotplug: Call cpu_unplug_begin() before DOWN_PREPARE
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=284c9a0ef4957220c2263492572cd934906581f7
+Subject: [PATCH 163/371] hotplug: Call cpu_unplug_begin() before DOWN_PREPARE
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7565a037172591a393e4891f47cc66a1a9c44016
 
 cpu_unplug_begin() should be called before CPU_DOWN_PREPARE, because
 at CPU_DOWN_PREPARE cpu_active is cleared and sched_domain is

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0164-ftrace-migrate-disable-tracing.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0164-ftrace-migrate-disable-tracing.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0164-ftrace-migrate-disable-tracing.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sun, 17 Jul 2011 21:56:42 +0200
-Subject: [PATCH 164/348] ftrace-migrate-disable-tracing.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=89e7a9e85fb09ffb5c0477f18aa888b281613136
+Subject: [PATCH 164/371] ftrace-migrate-disable-tracing.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3a3c84aaf06be96735390039b3bce763fa391bbc
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0165-tracing-Show-padding-as-unsigned-short.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0165-tracing-Show-padding-as-unsigned-short.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0165-tracing-Show-padding-as-unsigned-short.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Steven Rostedt <rostedt at goodmis.org>
 Date: Wed, 16 Nov 2011 13:19:35 -0500
-Subject: [PATCH 165/348] tracing: Show padding as unsigned short
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=db27068fab370f87b0273296abf5215fccc7b0f1
+Subject: [PATCH 165/371] tracing: Show padding as unsigned short
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=48b49c564f507cca422b56f7ed8ca8a30ad470f7
 
 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

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0166-migrate-disable-rt-variant.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0166-migrate-disable-rt-variant.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0166-migrate-disable-rt-variant.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sun, 17 Jul 2011 19:48:20 +0200
-Subject: [PATCH 166/348] migrate-disable-rt-variant.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=001a85220e60f4d4bd33fef5e6888d1669318788
+Subject: [PATCH 166/371] migrate-disable-rt-variant.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6b3c10358bcef38b0f6cfb3d1ac03eab4d0d3452
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0167-sched-Optimize-migrate_disable.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0167-sched-Optimize-migrate_disable.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0167-sched-Optimize-migrate_disable.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Peter Zijlstra <a.p.zijlstra at chello.nl>
 Date: Thu, 11 Aug 2011 15:03:35 +0200
-Subject: [PATCH 167/348] sched: Optimize migrate_disable
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2c07d079b1a3282330ae1392983a6a3cdfcae9c3
+Subject: [PATCH 167/371] sched: Optimize migrate_disable
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=86ca8c2c4c6b05702eaa8e402df310d26a82d825
 
 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.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0168-sched-Generic-migrate_disable.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0168-sched-Generic-migrate_disable.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0168-sched-Generic-migrate_disable.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Peter Zijlstra <a.p.zijlstra at chello.nl>
 Date: Thu, 11 Aug 2011 15:14:58 +0200
-Subject: [PATCH 168/348] sched: Generic migrate_disable
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=87f217562021a3cd3d42e4d2d25aed3d6d081f3e
+Subject: [PATCH 168/371] sched: Generic migrate_disable
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c6c7ec2544b836d13cdcfdb7a3d8795ee36f66e2
 
 Make migrate_disable() be a preempt_disable() for !rt kernels. This
 allows generic code to use it but still enforces that these code

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0169-sched-rt-Fix-migrate_enable-thinko.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0169-sched-rt-Fix-migrate_enable-thinko.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0169-sched-rt-Fix-migrate_enable-thinko.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Mike Galbraith <efault at gmx.de>
 Date: Tue, 23 Aug 2011 16:12:43 +0200
-Subject: [PATCH 169/348] sched, rt: Fix migrate_enable() thinko
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fdac72e2dca6f1557a99395a77996fef23d77c78
+Subject: [PATCH 169/371] sched, rt: Fix migrate_enable() thinko
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c8793d4ca99bf918a38e8c7e79b5d05f409aa6db
 
 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.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0170-sched-teach-migrate_disable-about-atomic-contexts.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0170-sched-teach-migrate_disable-about-atomic-contexts.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0170-sched-teach-migrate_disable-about-atomic-contexts.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Peter Zijlstra <a.p.zijlstra at chello.nl>
 Date: Fri, 2 Sep 2011 14:29:27 +0200
-Subject: [PATCH 170/348] sched: teach migrate_disable about atomic contexts
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c6d4d43c943f55437e908d3b3119bb0f57ff2ffb
+Subject: [PATCH 170/371] sched: teach migrate_disable about atomic contexts
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b7760b0436f96ff2b4af1e560971197005620dd1
 
  <NMI>  [<ffffffff812dafd8>] spin_bug+0x94/0xa8
  [<ffffffff812db07f>] do_raw_spin_lock+0x43/0xea

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0171-sched-Postpone-actual-migration-disalbe-to-schedule.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0171-sched-Postpone-actual-migration-disalbe-to-schedule.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0171-sched-Postpone-actual-migration-disalbe-to-schedule.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Steven Rostedt <rostedt at goodmis.org>
 Date: Tue, 27 Sep 2011 08:40:23 -0400
-Subject: [PATCH 171/348] sched: Postpone actual migration disalbe to schedule
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9d8e575105712dfb5a1bb12ddf890feab5e3516c
+Subject: [PATCH 171/371] sched: Postpone actual migration disalbe to schedule
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1a9eeab8f85f68e939bf677d4d858c6d6a5c2bec
 
 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.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0172-sched-Do-not-compare-cpu-masks-in-scheduler.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0172-sched-Do-not-compare-cpu-masks-in-scheduler.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0172-sched-Do-not-compare-cpu-masks-in-scheduler.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Peter Zijlstra <a.p.zijlstra at chello.nl>
 Date: Tue, 27 Sep 2011 08:40:24 -0400
-Subject: [PATCH 172/348] sched: Do not compare cpu masks in scheduler
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=505d53c3576194902e2cc29188e9b2ef2656f47d
+Subject: [PATCH 172/371] sched: Do not compare cpu masks in scheduler
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7952703155d772344d83e9ef27377b22b8c96d5b
 
 Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
 Cc: Peter Zijlstra <peterz at infradead.org>

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0173-sched-Have-migrate_disable-ignore-bounded-threads.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0173-sched-Have-migrate_disable-ignore-bounded-threads.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0173-sched-Have-migrate_disable-ignore-bounded-threads.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Peter Zijlstra <a.p.zijlstra at chello.nl>
 Date: Tue, 27 Sep 2011 08:40:25 -0400
-Subject: [PATCH 173/348] sched: Have migrate_disable ignore bounded threads
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=45e2d607ee8737b183c1a45a69a928ed51792a6b
+Subject: [PATCH 173/371] sched: Have migrate_disable ignore bounded threads
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=84a22365dfd6b3c2ff4fe2b9da2b3abb8e133e79
 
 Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
 Cc: Peter Zijlstra <peterz at infradead.org>

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0174-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0174-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0174-sched-clear-pf-thread-bound-on-fallback-rq.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 4 Nov 2011 20:48:36 +0100
-Subject: [PATCH 174/348] sched-clear-pf-thread-bound-on-fallback-rq.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fee4956d26ebce39a4f46654d8f50fd4b7c6308c
+Subject: [PATCH 174/371] sched-clear-pf-thread-bound-on-fallback-rq.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fe5b4d9c1a63f7473a1ee336a3be32cd7b93ace7
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0175-ftrace-crap.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0175-ftrace-crap.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0175-ftrace-crap.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 9 Sep 2011 16:55:53 +0200
-Subject: [PATCH 175/348] ftrace-crap.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=46b49284483761e94b659707c57707d20421f564
+Subject: [PATCH 175/371] ftrace-crap.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1ca2bec47a9beab02e91cc4f5743a97251c2a752
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0176-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0176-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0176-ring-buffer-Convert-reader_lock-from-raw_spin_lock-i.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Steven Rostedt <rostedt at goodmis.org>
 Date: Tue, 27 Sep 2011 13:56:50 -0400
-Subject: [PATCH 176/348] ring-buffer: Convert reader_lock from raw_spin_lock
+Subject: [PATCH 176/371] ring-buffer: Convert reader_lock from raw_spin_lock
  into spin_lock
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=641ef453f3b9e7ca5f3ed70c8fd4c5f05ffb88a3
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=de5ccf6eb9acd7995ca6e7b80c3ef2b908ae2e3c
 
 The reader_lock is mostly taken in normal context with interrupts enabled.
 But because ftrace_dump() can happen anywhere, it is used as a spin lock

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0177-net-netif_rx_ni-migrate-disable.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0177-net-netif_rx_ni-migrate-disable.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0177-net-netif_rx_ni-migrate-disable.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sun, 17 Jul 2011 16:29:27 +0200
-Subject: [PATCH 177/348] net-netif_rx_ni-migrate-disable.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8567e46ac31786ecf1a43d27ec445bcbb1f1c33f
+Subject: [PATCH 177/371] net-netif_rx_ni-migrate-disable.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3c530e5c28f0e0954141d11c22c5f718cf06403b
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---
@@ -9,10 +9,10 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/net/core/dev.c b/net/core/dev.c
-index 1d41fdf..36a7af9 100644
+index 3115455..6de821b 100644
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -3033,11 +3033,11 @@ int netif_rx_ni(struct sk_buff *skb)
+@@ -3036,11 +3036,11 @@ int netif_rx_ni(struct sk_buff *skb)
  {
  	int err;
  

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0178-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0178-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0178-softirq-Sanitize-softirq-pending-for-NOHZ-RT.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 3 Jul 2009 13:16:38 -0500
-Subject: [PATCH 178/348] softirq: Sanitize softirq pending for NOHZ/RT
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e12a944024128b37af91a1ee79b6d8086f051e59
+Subject: [PATCH 178/371] softirq: Sanitize softirq pending for NOHZ/RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6cddb65e2c08dac69d0f9ece8fd5cb6555082c21
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0179-lockdep-rt.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0179-lockdep-rt.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0179-lockdep-rt.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sun, 17 Jul 2011 18:51:23 +0200
-Subject: [PATCH 179/348] lockdep-rt.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6b593f37abe6ab156233408f417905c11d63db8c
+Subject: [PATCH 179/371] lockdep-rt.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b2cad95f9f7b62c84c463442d3a9bcabed1ffa53
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0180-mutex-no-spin-on-rt.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0180-mutex-no-spin-on-rt.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0180-mutex-no-spin-on-rt.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sun, 17 Jul 2011 21:51:45 +0200
-Subject: [PATCH 180/348] mutex-no-spin-on-rt.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c949b4072196ec53ac88f049cb04de0c5e850257
+Subject: [PATCH 180/371] mutex-no-spin-on-rt.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9771129d803872936fb5aca522f64dea7e2643fb
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0181-softirq-local-lock.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0181-softirq-local-lock.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0181-softirq-local-lock.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 28 Jun 2011 15:57:18 +0200
-Subject: [PATCH 181/348] softirq-local-lock.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f76301240422d8ca2fb39558d53888e9eaa5f347
+Subject: [PATCH 181/371] softirq-local-lock.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=37a9601dfb031db1ff441f50348c6d8cb764162e
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0182-softirq-Export-in_serving_softirq.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0182-softirq-Export-in_serving_softirq.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0182-softirq-Export-in_serving_softirq.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: John Kacur <jkacur at redhat.com>
 Date: Mon, 14 Nov 2011 02:44:43 +0100
-Subject: [PATCH 182/348] softirq: Export in_serving_softirq()
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f26293c62a6cd8e20b6016b8d777160213d33fa9
+Subject: [PATCH 182/371] softirq: Export in_serving_softirq()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=53725b8dd62a6b49447e634115dd36d3d8e10212
 
 ERROR: "in_serving_softirq" [net/sched/cls_cgroup.ko] undefined!
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0183-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0183-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0183-hardirq.h-Define-softirq_count-as-OUL-to-kill-build-.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,11 +1,11 @@
 From: Yong Zhang <yong.zhang0 at gmail.com>
 Date: Thu, 13 Oct 2011 17:19:09 +0800
-Subject: [PATCH 183/348] hardirq.h: Define softirq_count() as OUL to kill
+Subject: [PATCH 183/371] hardirq.h: Define softirq_count() as OUL to kill
  build warning
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c27eee392f6783fbd3af8c3ad97142434aebb8cb
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1b6f584f2cabdb32ce5a676f685188441fcec036
 
 kernel/lockdep.c: In function ‘print_bad_irq_dependency’:
 kernel/lockdep.c:1476:3: warning: format ‘%lu’ expects type ‘long unsigned int’, but argument 7 has type ‘unsigned int’

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0184-softirq-Fix-unplug-deadlock.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0184-softirq-Fix-unplug-deadlock.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0184-softirq-Fix-unplug-deadlock.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Peter Zijlstra <a.p.zijlstra at chello.nl>
 Date: Fri, 30 Sep 2011 15:52:14 +0200
-Subject: [PATCH 184/348] softirq: Fix unplug deadlock
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=daa8c3e7edc49868743f96151aa979c0c00ae993
+Subject: [PATCH 184/371] softirq: Fix unplug deadlock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=690f4c04057b93930e28d5134823a9329393623f
 
 If ksoftirqd gets woken during hot-unplug, __thread_do_softirq() will
 call pin_current_cpu() which will block on the held cpu_hotplug.lock.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0185-softirq-disable-softirq-stacks-for-rt.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0185-softirq-disable-softirq-stacks-for-rt.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0185-softirq-disable-softirq-stacks-for-rt.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Mon, 18 Jul 2011 13:59:17 +0200
-Subject: [PATCH 185/348] softirq-disable-softirq-stacks-for-rt.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f4550a8839abbcb5fd60dfda47a1c2f4a14d89a6
+Subject: [PATCH 185/371] softirq-disable-softirq-stacks-for-rt.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=da2694b2c6fdf45daa3109634736a4b1dc5b1342
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---
@@ -118,10 +118,10 @@
  #ifdef CONFIG_HOTPLUG_CPU
  void fixup_irqs(void)
 diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
-index 4b511ef..d1e02b9 100644
+index 9d28dbac..65b8c7d 100644
 --- a/arch/x86/kernel/entry_64.S
 +++ b/arch/x86/kernel/entry_64.S
-@@ -1254,6 +1254,7 @@ ENTRY(kernel_execve)
+@@ -1207,6 +1207,7 @@ ENTRY(kernel_execve)
  	CFI_ENDPROC
  END(kernel_execve)
  
@@ -129,7 +129,7 @@
  /* Call softirq on interrupt stack. Interrupts are off. */
  ENTRY(call_softirq)
  	CFI_STARTPROC
-@@ -1273,6 +1274,7 @@ ENTRY(call_softirq)
+@@ -1226,6 +1227,7 @@ ENTRY(call_softirq)
  	ret
  	CFI_ENDPROC
  END(call_softirq)

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0186-softirq-make-fifo.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0186-softirq-make-fifo.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0186-softirq-make-fifo.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Thu, 21 Jul 2011 21:06:43 +0200
-Subject: [PATCH 186/348] softirq-make-fifo.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a7073e67015bcf5416bb008dee4996bb6e68e28c
+Subject: [PATCH 186/371] softirq-make-fifo.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a2d4838f5532b98d89088a2314dab99f7f6ffbd3
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0187-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0187-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0187-tasklet-Prevent-tasklets-from-going-into-infinite-sp.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Tue, 29 Nov 2011 20:18:22 -0500
-Subject: [PATCH 187/348] tasklet: Prevent tasklets from going into infinite
+Subject: [PATCH 187/371] tasklet: Prevent tasklets from going into infinite
  spin in RT
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=13c65a161e8c71ede46a69e97b821277945e0ce6
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=517f1ea556582b146ef74d92b8cf8efc2c8c22b8
 
 When CONFIG_PREEMPT_RT_FULL is enabled, tasklets run as threads,
 and spinlocks turn are mutexes. But this can cause issues with

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0188-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0188-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0188-genirq-Allow-disabling-of-softirq-processing-in-irq-.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 31 Jan 2012 13:01:27 +0100
-Subject: [PATCH 188/348] genirq: Allow disabling of softirq processing in irq
+Subject: [PATCH 188/371] genirq: Allow disabling of softirq processing in irq
  thread context
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e40b1d24ed09f4efb08dad67cb1ed0cc7937a50c
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2aa49fbb0a8e176999da75b2bc0a9ade3630aa95
 
 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

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0189-local-vars-migrate-disable.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0189-local-vars-migrate-disable.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0189-local-vars-migrate-disable.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 28 Jun 2011 20:42:16 +0200
-Subject: [PATCH 189/348] local-vars-migrate-disable.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cbc8f4edcfe3b5c74fc3abe87dd6028a8f713c8d
+Subject: [PATCH 189/371] local-vars-migrate-disable.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1097515229e94de5b5b0be8dfcf98d4e6dbf5e5b
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0190-md-raid5-Make-raid5_percpu-handling-RT-aware.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0190-md-raid5-Make-raid5_percpu-handling-RT-aware.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0190-md-raid5-Make-raid5_percpu-handling-RT-aware.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 6 Apr 2010 16:51:31 +0200
-Subject: [PATCH 190/348] md: raid5: Make raid5_percpu handling RT aware
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=efc489663a981a1ec973009820578fb9ded94b54
+Subject: [PATCH 190/371] md: raid5: Make raid5_percpu handling RT aware
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=68ebe53bcb12d2b11528cc020adadccae2ef19b3
 
 __raid_run_ops() disables preemption with get_cpu() around the access
 to the raid5_percpu variables. That causes scheduling while atomic

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0191-rtmutex-lock-killable.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0191-rtmutex-lock-killable.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0191-rtmutex-lock-killable.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Thu, 9 Jun 2011 11:43:52 +0200
-Subject: [PATCH 191/348] rtmutex-lock-killable.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a6e51a8f80b35ef78bae79f96bf6883389e82641
+Subject: [PATCH 191/371] rtmutex-lock-killable.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=338b5c942a3505ab2d36709bbc87b1efcc05e2e7
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0192-rtmutex-futex-prepare-rt.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0192-rtmutex-futex-prepare-rt.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0192-rtmutex-futex-prepare-rt.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 10 Jun 2011 11:04:15 +0200
-Subject: [PATCH 192/348] rtmutex-futex-prepare-rt.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5a859e27b3e63e6e35000ad9e4fedeb370d63030
+Subject: [PATCH 192/371] rtmutex-futex-prepare-rt.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8e3c04e71e249b7f3a875d2947d8fed3528c6440
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---
@@ -11,10 +11,10 @@
  3 files changed, 90 insertions(+), 18 deletions(-)
 
 diff --git a/kernel/futex.c b/kernel/futex.c
-index f31f190..9ab9845 100644
+index 7481595..bd5f495 100644
 --- a/kernel/futex.c
 +++ b/kernel/futex.c
-@@ -1568,6 +1568,16 @@ retry_private:
+@@ -1569,6 +1569,16 @@ retry_private:
  				requeue_pi_wake_futex(this, &key2, hb2);
  				drop_count++;
  				continue;

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0193-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0193-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0193-futex-Fix-bug-on-when-a-requeued-RT-task-times-out.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Steven Rostedt <rostedt at goodmis.org>
 Date: Tue, 10 Apr 2012 14:34:13 -0400
-Subject: [PATCH 193/348] futex: Fix bug on when a requeued RT task times out
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9c4b323c5f0bf8acad50a963f0a91595a461c5ca
+Subject: [PATCH 193/371] futex: Fix bug on when a requeued RT task times out
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d10574481fbe39b3b73ee9c6133440f2caa2fb77
 
 Requeue with timeout causes a bug with PREEMPT_RT_FULL.
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0194-rt-mutex-add-sleeping-spinlocks-support.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0194-rt-mutex-add-sleeping-spinlocks-support.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0194-rt-mutex-add-sleeping-spinlocks-support.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Fri, 10 Jun 2011 11:21:25 +0200
-Subject: [PATCH 194/348] rt-mutex-add-sleeping-spinlocks-support.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5454935457369b6d0d772d689a6063766032ca61
+Subject: [PATCH 194/371] rt-mutex-add-sleeping-spinlocks-support.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5522bfc69f94f347e73495609b34ecf678a18456
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---
@@ -74,7 +74,7 @@
  #define DEFINE_RT_MUTEX(mutexname) \
  	struct rt_mutex mutexname = __RT_MUTEX_INITIALIZER(mutexname)
 diff --git a/kernel/futex.c b/kernel/futex.c
-index 9ab9845..4fc27c3 100644
+index bd5f495..749e297 100644
 --- a/kernel/futex.c
 +++ b/kernel/futex.c
 @@ -2446,8 +2446,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags,

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0195-spinlock-types-separate-raw.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0195-spinlock-types-separate-raw.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0195-spinlock-types-separate-raw.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 29 Jun 2011 19:34:01 +0200
-Subject: [PATCH 195/348] spinlock-types-separate-raw.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=70fbbd65640208bc466273633edbae84aaebbc60
+Subject: [PATCH 195/371] spinlock-types-separate-raw.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=eed171529d5bebf074a57382a3cf2986ffaf8e8d
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0196-rtmutex-avoid-include-hell.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0196-rtmutex-avoid-include-hell.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0196-rtmutex-avoid-include-hell.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 29 Jun 2011 20:06:39 +0200
-Subject: [PATCH 196/348] rtmutex-avoid-include-hell.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6523dc6bd38b787bfbf7dde81372a5c4c7f62c9d
+Subject: [PATCH 196/371] rtmutex-avoid-include-hell.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b46a0de7838684e8e63bd45ddc0dfd1296bb5a5f
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0197-rt-add-rt-spinlocks.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0197-rt-add-rt-spinlocks.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0197-rt-add-rt-spinlocks.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 29 Jun 2011 19:43:35 +0200
-Subject: [PATCH 197/348] rt-add-rt-spinlocks.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=75ecf7d24ad9bb02a2ac083a8d285f81ffdec49d
+Subject: [PATCH 197/371] rt-add-rt-spinlocks.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cb4c351ddbdd939cb3f5883dec0f5a5ecb8c7fbf
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0198-rt-add-rt-to-mutex-headers.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0198-rt-add-rt-to-mutex-headers.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0198-rt-add-rt-to-mutex-headers.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 29 Jun 2011 20:56:22 +0200
-Subject: [PATCH 198/348] rt-add-rt-to-mutex-headers.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2bc5eab06c01eb7a81c06017bcec7e1bd7da5660
+Subject: [PATCH 198/371] rt-add-rt-to-mutex-headers.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ba7ff10e9c35e5c104b4d1547e8fb545683e5abc
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0199-rwsem-add-rt-variant.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0199-rwsem-add-rt-variant.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0199-rwsem-add-rt-variant.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 29 Jun 2011 21:02:53 +0200
-Subject: [PATCH 199/348] rwsem-add-rt-variant.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=da188930537db3353531ee5f36d91fec23b418d6
+Subject: [PATCH 199/371] rwsem-add-rt-variant.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=eab5be0740503a8d7dae48ac77513700c72bf185
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0200-rt-Add-the-preempt-rt-lock-replacement-APIs.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0200-rt-Add-the-preempt-rt-lock-replacement-APIs.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0200-rt-Add-the-preempt-rt-lock-replacement-APIs.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sun, 26 Jul 2009 19:39:56 +0200
-Subject: [PATCH 200/348] rt: Add the preempt-rt lock replacement APIs
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d2dbc4f3c80e9ed7a3e2ccda68131ec7ddf9141a
+Subject: [PATCH 200/371] rt: Add the preempt-rt lock replacement APIs
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2782fbb8db688d6efaf641508e83c65c56631408
 
 Map spinlocks, rwlocks, rw_semaphores and semaphores to the rt_mutex
 based locking functions for preempt-rt.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0201-rwlocks-Fix-section-mismatch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0201-rwlocks-Fix-section-mismatch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0201-rwlocks-Fix-section-mismatch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,10 +1,10 @@
 From: John Kacur <jkacur at redhat.com>
 Date: Mon, 19 Sep 2011 11:09:27 +0200
-Subject: [PATCH 201/348] rwlocks: Fix section mismatch
+Subject: [PATCH 201/371] rwlocks: Fix section mismatch
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=53d11941c27f7b177ba152e8ba10a22b37aae78f
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d9f34d390a1f2f9532e1ea0597368e43c5dccf6d
 
 This fixes the following build error for the preempt-rt kernel.
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0202-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0202-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0202-timer-handle-idle-trylock-in-get-next-timer-irq.patc.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sun, 17 Jul 2011 22:08:38 +0200
-Subject: [PATCH 202/348] timer-handle-idle-trylock-in-get-next-timer-irq.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e97cba8ed71a30deda2986c1c08515eb6704715d
+Subject: [PATCH 202/371] timer-handle-idle-trylock-in-get-next-timer-irq.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ba4c3ea482ffdf73207ea6e3545f7ea60e23c951
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0203-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0203-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0203-RCU-Force-PREEMPT_RCU-for-PREEMPT-RT.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:30:30 -0500
-Subject: [PATCH 203/348] RCU: Force PREEMPT_RCU for PREEMPT-RT
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=defc8c647c8a67a8a53550eed51f8846398a0f3a
+Subject: [PATCH 203/371] RCU: Force PREEMPT_RCU for PREEMPT-RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d50e4982b046eac94b5fd87c03144aa30fc52015
 
 PREEMPT_RT relies on PREEMPT_RCU - only allow RCU to be configured
 interactively in the !PREEMPT_RT case.

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0204-rcu-Frob-softirq-test.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0204-rcu-Frob-softirq-test.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0204-rcu-Frob-softirq-test.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Peter Zijlstra <a.p.zijlstra at chello.nl>
 Date: Sat, 13 Aug 2011 00:23:17 +0200
-Subject: [PATCH 204/348] rcu: Frob softirq test
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d0a4633251cf83b5ae9f041059e4ace243f15d5d
+Subject: [PATCH 204/371] rcu: Frob softirq test
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=68602587319d4e42f44a0cdea351b62340d4ef16
 
 With RT_FULL we get the below wreckage:
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0205-rcu-Merge-RCU-bh-into-RCU-preempt.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0205-rcu-Merge-RCU-bh-into-RCU-preempt.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0205-rcu-Merge-RCU-bh-into-RCU-preempt.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 5 Oct 2011 11:59:38 -0700
-Subject: [PATCH 205/348] rcu: Merge RCU-bh into RCU-preempt
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1ec86233dc12de7592c51e6e76c16c1f19621b1e
+Subject: [PATCH 205/371] rcu: Merge RCU-bh into RCU-preempt
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=77175fac83099dca75646e6ba454e424dad2c4e4
 
 The Linux kernel has long RCU-bh read-side critical sections that
 intolerably increase scheduling latency under mainline's RCU-bh rules,

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0206-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0206-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0206-rcu-Fix-macro-substitution-for-synchronize_rcu_bh-on.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,11 +1,11 @@
 From: John Kacur <jkacur at redhat.com>
 Date: Mon, 14 Nov 2011 02:44:42 +0100
-Subject: [PATCH 206/348] rcu: Fix macro substitution for synchronize_rcu_bh()
+Subject: [PATCH 206/371] rcu: Fix macro substitution for synchronize_rcu_bh()
  on RT
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c6fc0311e266e9f7a0832700d7a0aa51106ea6d1
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3fd170220d523f56b5a4495cfb56652659257a4f
 
 kernel/rcutorture.c:492: error: ‘synchronize_rcu_bh’ undeclared here (not in a function)
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0207-rcu-more-fallout.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0207-rcu-more-fallout.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0207-rcu-more-fallout.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Mon, 14 Nov 2011 10:57:54 +0100
-Subject: [PATCH 207/348] rcu-more-fallout.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b5b7c668d512c730dc350772f772973a023c6195
+Subject: [PATCH 207/371] rcu-more-fallout.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d7ea2767c08ca899cf7d8a6ea5525524ce4aa289
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0208-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0208-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0208-rcu-Make-ksoftirqd-do-RCU-quiescent-states.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: "Paul E. McKenney" <paulmck at linux.vnet.ibm.com>
 Date: Wed, 5 Oct 2011 11:45:18 -0700
-Subject: [PATCH 208/348] rcu: Make ksoftirqd do RCU quiescent states
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=927f7833fff765a8f21ef23eabeefd13cafcd778
+Subject: [PATCH 208/371] rcu: Make ksoftirqd do RCU quiescent states
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4b052b20f7db2c5bacda6333c096f0ab90cf791f
 
 Implementing RCU-bh in terms of RCU-preempt makes the system vulnerable
 to network-based denial-of-service attacks.  This patch therefore

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0209-rt-rcutree-Move-misplaced-prototype.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0209-rt-rcutree-Move-misplaced-prototype.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0209-rt-rcutree-Move-misplaced-prototype.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,10 +1,10 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Wed, 14 Dec 2011 12:51:28 +0100
-Subject: [PATCH 209/348] rt/rcutree: Move misplaced prototype
+Subject: [PATCH 209/371] rt/rcutree: Move misplaced prototype
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3d701dda2bb628cc2c567e27434dab9bfa4b5178
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ac5b84fabfc41d1ddf993af0775773992b84f147
 
 Fix this warning on x86 defconfig:
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0210-lglocks-rt.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0210-lglocks-rt.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0210-lglocks-rt.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Wed, 15 Jun 2011 11:02:21 +0200
-Subject: [PATCH 210/348] lglocks-rt.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e5ae63ce010ca55d460eba5e17626bf0f880e6d5
+Subject: [PATCH 210/371] lglocks-rt.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7637df42337fd38385db5aaab001da55804d277f
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0211-serial-8250-Clean-up-the-locking-for-rt.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0211-serial-8250-Clean-up-the-locking-for-rt.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0211-serial-8250-Clean-up-the-locking-for-rt.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:30:01 -0500
-Subject: [PATCH 211/348] serial: 8250: Clean up the locking for -rt
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=53e649cbea5f89ba2f17e4b32c1d6b70b5142ebf
+Subject: [PATCH 211/371] serial: 8250: Clean up the locking for -rt
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8b9743a5579ca043da12f336d4271cba1bd79464
 
 Signed-off-by: Ingo Molnar <mingo at elte.hu>
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0212-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0212-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0212-serial-8250-Call-flush_to_ldisc-when-the-irq-is-thre.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,8 +1,8 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Fri, 3 Jul 2009 08:30:01 -0500
-Subject: [PATCH 212/348] serial: 8250: Call flush_to_ldisc when the irq is
+Subject: [PATCH 212/371] serial: 8250: Call flush_to_ldisc when the irq is
  threaded
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ac65b6696c1ab36aabb1b9dc8713b1bd8349db1d
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=26f1d1c899ffe8e7b06bab33f3bd33b75c38b71b
 
 Signed-off-by: Ingo Molnar <mingo at elte.hu>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0213-drivers-tty-fix-omap-lock-crap.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0213-drivers-tty-fix-omap-lock-crap.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0213-drivers-tty-fix-omap-lock-crap.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Thu, 28 Jul 2011 13:32:57 +0200
-Subject: [PATCH 213/348] drivers-tty-fix-omap-lock-crap.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=63cd438835578d0f5e04e282d9c0f9c154a08456
+Subject: [PATCH 213/371] drivers-tty-fix-omap-lock-crap.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=26f7054e35d907088464d2051a566452df3559be
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0214-rt-Improve-the-serial-console-PASS_LIMIT.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0214-rt-Improve-the-serial-console-PASS_LIMIT.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0214-rt-Improve-the-serial-console-PASS_LIMIT.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,10 +1,10 @@
 From: Ingo Molnar <mingo at elte.hu>
 Date: Wed, 14 Dec 2011 13:05:54 +0100
-Subject: [PATCH 214/348] rt: Improve the serial console PASS_LIMIT
+Subject: [PATCH 214/371] rt: Improve the serial console PASS_LIMIT
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a7b40001bb8c8321dbb91116c4c7f62f5e868c67
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fdc897197d1b51599c831510288e23f59deb631d
 
 Beyond the warning:
 

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0215-fs-namespace-preemption-fix.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0215-fs-namespace-preemption-fix.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0215-fs-namespace-preemption-fix.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sun, 19 Jul 2009 08:44:27 -0500
-Subject: [PATCH 215/348] fs: namespace preemption fix
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c5126ed439b5f88c5c366857b9b347f0c79face6
+Subject: [PATCH 215/371] fs: namespace preemption fix
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=267636b1cafa53d45e8ea4ede591a0e9bc253c4e
 
 On RT we cannot loop with preemption disabled here as
 mnt_make_readonly() might have been preempted. We can safely enable

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0216-mm-protect-activate-switch-mm.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0216-mm-protect-activate-switch-mm.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0216-mm-protect-activate-switch-mm.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Mon, 4 Jul 2011 09:48:40 +0200
-Subject: [PATCH 216/348] mm-protect-activate-switch-mm.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d1ebd29e621da02bc945552cb78a0f3a36edc4a3
+Subject: [PATCH 216/371] mm-protect-activate-switch-mm.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e25780a0f60969255106f94aacb859845746b04c
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0217-fs-block-rt-support.patch.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0217-fs-block-rt-support.patch.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0217-fs-block-rt-support.patch.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Tue, 14 Jun 2011 17:05:09 +0200
-Subject: [PATCH 217/348] fs-block-rt-support.patch
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aa2743bb1247b2922c9519c84280078184b005bd
+Subject: [PATCH 217/371] fs-block-rt-support.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5b9f7c8cf466b1f20362c27c83f07c1b7a59a50c
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0218-fs-ntfs-disable-interrupt-only-on-RT.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0218-fs-ntfs-disable-interrupt-only-on-RT.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0218-fs-ntfs-disable-interrupt-only-on-RT.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Mike Galbraith <efault at gmx.de>
 Date: Fri, 3 Jul 2009 08:44:12 -0500
-Subject: [PATCH 218/348] fs: ntfs: disable interrupt only on !RT
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a19bc77e6ca2050e0879f01f68b69ed5eaf924ec
+Subject: [PATCH 218/371] fs: ntfs: disable interrupt only on !RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=909742c530cf8fb580b914616bd4264175b81c8a
 
 On Sat, 2007-10-27 at 11:44 +0200, Ingo Molnar wrote:
 > * Nick Piggin <nickpiggin at yahoo.com.au> wrote:

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0219-x86-Convert-mce-timer-to-hrtimer.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0219-x86-Convert-mce-timer-to-hrtimer.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0219-x86-Convert-mce-timer-to-hrtimer.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Mon, 13 Dec 2010 16:33:39 +0100
-Subject: [PATCH 219/348] x86: Convert mce timer to hrtimer
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=92ab1c55c998d2f73e2ddc4b1dd47798a91a1cab
+Subject: [PATCH 219/371] x86: Convert mce timer to hrtimer
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ba5407097e1cc9d1eb39074daed0b3a2a985dcb3
 
 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

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0220-x86-stackprotector-Avoid-random-pool-on-rt.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0220-x86-stackprotector-Avoid-random-pool-on-rt.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0220-x86-stackprotector-Avoid-random-pool-on-rt.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Thu, 16 Dec 2010 14:25:18 +0100
-Subject: [PATCH 220/348] x86: stackprotector: Avoid random pool on rt
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d7b550f8041c908b59dbee5f87ca1b5b4142196d
+Subject: [PATCH 220/371] x86: stackprotector: Avoid random pool on rt
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6109d60d5ed46bb7822c23bccb281174925dc49d
 
 CPU bringup calls into the random pool to initialize the stack
 canary. During boot that works nicely even on RT as the might sleep

Modified: dists/wheezy-security/linux/debian/patches/features/all/rt/0221-x86-Use-generic-rwsem_spinlocks-on-rt.patch
==============================================================================
--- dists/wheezy-security/linux/debian/patches/features/all/rt/0221-x86-Use-generic-rwsem_spinlocks-on-rt.patch	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0221-x86-Use-generic-rwsem_spinlocks-on-rt.patch	Fri Apr 24 14:53:49 2015	(r22529)
@@ -1,7 +1,7 @@
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sun, 26 Jul 2009 02:21:32 +0200
-Subject: [PATCH 221/348] x86: Use generic rwsem_spinlocks on -rt
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cbaac39090ed35868bfaac4aa7bcf5d9a3ca0b2d
+Subject: [PATCH 221/371] x86: Use generic rwsem_spinlocks on -rt
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4adcfa04a1f6ea6e15b275a53f205ecf2a18757c
 
 Simplifies the separation of anon_rw_semaphores and rw_semaphores for
 -rt.

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0222-workqueue-use-get-cpu-light.patch.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0222-workqueue-use-get-cpu-light.patch.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0222-workqueue-use-get-cpu-light.patch.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0222-workqueue-use-get-cpu-light.patch.patch)
@@ -0,0 +1,25 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Sun, 17 Jul 2011 21:42:26 +0200
+Subject: [PATCH 222/371] workqueue-use-get-cpu-light.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3d9f347bd28fb240b2aa193a080b2c28b11b6742
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ kernel/workqueue.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/kernel/workqueue.c b/kernel/workqueue.c
+index c7e6030..62ebed7 100644
+--- a/kernel/workqueue.c
++++ b/kernel/workqueue.c
+@@ -1083,8 +1083,8 @@ int queue_work(struct workqueue_struct *wq, struct work_struct *work)
+ {
+ 	int ret;
+ 
+-	ret = queue_work_on(get_cpu(), wq, work);
+-	put_cpu();
++	ret = queue_work_on(get_cpu_light(), wq, work);
++	put_cpu_light();
+ 
+ 	return ret;
+ }

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0223-epoll.patch.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0223-epoll.patch.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0223-epoll.patch.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0223-epoll.patch.patch)
@@ -0,0 +1,29 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Fri, 8 Jul 2011 16:35:35 +0200
+Subject: [PATCH 223/371] epoll.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8e4c3a8e62f9c4ddece904c731d6748df837c9de
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ fs/eventpoll.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/fs/eventpoll.c b/fs/eventpoll.c
+index 451b9b8..3ed4aca 100644
+--- a/fs/eventpoll.c
++++ b/fs/eventpoll.c
+@@ -464,12 +464,12 @@ static int ep_poll_wakeup_proc(void *priv, void *cookie, int call_nests)
+  */
+ static void ep_poll_safewake(wait_queue_head_t *wq)
+ {
+-	int this_cpu = get_cpu();
++	int this_cpu = get_cpu_light();
+ 
+ 	ep_call_nested(&poll_safewake_ncalls, EP_MAX_NESTS,
+ 		       ep_poll_wakeup_proc, NULL, wq, (void *) (long) this_cpu);
+ 
+-	put_cpu();
++	put_cpu_light();
+ }
+ 
+ static void ep_remove_wait_queue(struct eppoll_entry *pwq)

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0224-mm-vmalloc.patch.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0224-mm-vmalloc.patch.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0224-mm-vmalloc.patch.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0224-mm-vmalloc.patch.patch)
@@ -0,0 +1,67 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Tue, 12 Jul 2011 11:39:36 +0200
+Subject: [PATCH 224/371] mm-vmalloc.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4e083c7f5c941b725492ea5576f8723d6e2b4708
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ mm/vmalloc.c | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/mm/vmalloc.c b/mm/vmalloc.c
+index 1431458..6faf1f7 100644
+--- a/mm/vmalloc.c
++++ b/mm/vmalloc.c
+@@ -788,7 +788,7 @@ static struct vmap_block *new_vmap_block(gfp_t gfp_mask)
+ 	struct vmap_block *vb;
+ 	struct vmap_area *va;
+ 	unsigned long vb_idx;
+-	int node, err;
++	int node, err, cpu;
+ 
+ 	node = numa_node_id();
+ 
+@@ -827,12 +827,13 @@ static struct vmap_block *new_vmap_block(gfp_t gfp_mask)
+ 	BUG_ON(err);
+ 	radix_tree_preload_end();
+ 
+-	vbq = &get_cpu_var(vmap_block_queue);
++	cpu = get_cpu_light();
++	vbq = &__get_cpu_var(vmap_block_queue);
+ 	vb->vbq = vbq;
+ 	spin_lock(&vbq->lock);
+ 	list_add_rcu(&vb->free_list, &vbq->free);
+ 	spin_unlock(&vbq->lock);
+-	put_cpu_var(vmap_block_queue);
++	put_cpu_light();
+ 
+ 	return vb;
+ }
+@@ -906,7 +907,7 @@ static void *vb_alloc(unsigned long size, gfp_t gfp_mask)
+ 	struct vmap_block *vb;
+ 	unsigned long addr = 0;
+ 	unsigned int order;
+-	int purge = 0;
++	int purge = 0, cpu;
+ 
+ 	BUG_ON(size & ~PAGE_MASK);
+ 	BUG_ON(size > PAGE_SIZE*VMAP_MAX_ALLOC);
+@@ -914,7 +915,8 @@ static void *vb_alloc(unsigned long size, gfp_t gfp_mask)
+ 
+ again:
+ 	rcu_read_lock();
+-	vbq = &get_cpu_var(vmap_block_queue);
++	cpu = get_cpu_light();
++	vbq = &__get_cpu_var(vmap_block_queue);
+ 	list_for_each_entry_rcu(vb, &vbq->free, free_list) {
+ 		int i;
+ 
+@@ -951,7 +953,7 @@ next:
+ 	if (purge)
+ 		purge_fragmented_blocks_thiscpu();
+ 
+-	put_cpu_var(vmap_block_queue);
++	put_cpu_light();
+ 	rcu_read_unlock();
+ 
+ 	if (!addr) {

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0225-debugobjects-rt.patch.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0225-debugobjects-rt.patch.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0225-debugobjects-rt.patch.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0225-debugobjects-rt.patch.patch)
@@ -0,0 +1,37 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Sun, 17 Jul 2011 21:41:35 +0200
+Subject: [PATCH 225/371] debugobjects-rt.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8a5bf01dd678a79288322fe4c668077de49401de
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ lib/debugobjects.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/lib/debugobjects.c b/lib/debugobjects.c
+index a78b7c6..9b622c9 100644
+--- a/lib/debugobjects.c
++++ b/lib/debugobjects.c
+@@ -306,7 +306,10 @@ __debug_object_init(void *addr, struct debug_obj_descr *descr, int onstack)
+ 	struct debug_obj *obj;
+ 	unsigned long flags;
+ 
+-	fill_pool();
++#ifdef CONFIG_PREEMPT_RT_FULL
++	if (preempt_count() == 0 && !irqs_disabled())
++#endif
++		fill_pool();
+ 
+ 	db = get_bucket((unsigned long) addr);
+ 
+@@ -1015,9 +1018,9 @@ static int __init debug_objects_replace_static_objects(void)
+ 		}
+ 	}
+ 
++	local_irq_enable();
+ 	printk(KERN_DEBUG "ODEBUG: %d of %d active objects replaced\n", cnt,
+ 	       obj_pool_used);
+-	local_irq_enable();
+ 	return 0;
+ free:
+ 	hlist_for_each_entry_safe(obj, node, tmp, &objects, node) {

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0226-jump-label-rt.patch.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0226-jump-label-rt.patch.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0226-jump-label-rt.patch.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0226-jump-label-rt.patch.patch)
@@ -0,0 +1,23 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 13 Jul 2011 11:03:16 +0200
+Subject: [PATCH 226/371] jump-label-rt.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1c2591e858f96f7e1ce699e34eedaf58eec9408a
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ include/linux/jump_label.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/include/linux/jump_label.h b/include/linux/jump_label.h
+index 388b0d4..9cc8ed9 100644
+--- a/include/linux/jump_label.h
++++ b/include/linux/jump_label.h
+@@ -4,7 +4,7 @@
+ #include <linux/types.h>
+ #include <linux/compiler.h>
+ 
+-#if defined(CC_HAVE_ASM_GOTO) && defined(CONFIG_JUMP_LABEL)
++#if defined(CC_HAVE_ASM_GOTO) && defined(CONFIG_JUMP_LABEL) && !defined(CONFIG_PREEMPT_BASE)
+ 
+ struct jump_label_key {
+ 	atomic_t enabled;

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0227-skbufhead-raw-lock.patch.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0227-skbufhead-raw-lock.patch.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0227-skbufhead-raw-lock.patch.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0227-skbufhead-raw-lock.patch.patch)
@@ -0,0 +1,134 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Tue, 12 Jul 2011 15:38:34 +0200
+Subject: [PATCH 227/371] skbufhead-raw-lock.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=587c00b08b6ff56de1e0ff6a741ec1a30d845ae8
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ include/linux/netdevice.h |  1 +
+ include/linux/skbuff.h    |  7 +++++++
+ net/core/dev.c            | 26 ++++++++++++++++++++------
+ 3 files changed, 28 insertions(+), 6 deletions(-)
+
+diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
+index 4b04097..aa44bb5 100644
+--- a/include/linux/netdevice.h
++++ b/include/linux/netdevice.h
+@@ -1764,6 +1764,7 @@ struct softnet_data {
+ 	unsigned		dropped;
+ 	struct sk_buff_head	input_pkt_queue;
+ 	struct napi_struct	backlog;
++	struct sk_buff_head	tofree_queue;
+ };
+ 
+ static inline void input_queue_head_incr(struct softnet_data *sd)
+diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
+index 1b4ea29..4257e3a 100644
+--- a/include/linux/skbuff.h
++++ b/include/linux/skbuff.h
+@@ -124,6 +124,7 @@ struct sk_buff_head {
+ 
+ 	__u32		qlen;
+ 	spinlock_t	lock;
++	raw_spinlock_t	raw_lock;
+ };
+ 
+ struct sk_buff;
+@@ -943,6 +944,12 @@ static inline void skb_queue_head_init(struct sk_buff_head *list)
+ 	__skb_queue_head_init(list);
+ }
+ 
++static inline void skb_queue_head_init_raw(struct sk_buff_head *list)
++{
++	raw_spin_lock_init(&list->raw_lock);
++	__skb_queue_head_init(list);
++}
++
+ static inline void skb_queue_head_init_class(struct sk_buff_head *list,
+ 		struct lock_class_key *class)
+ {
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 6de821b..72d9af3 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -222,14 +222,14 @@ static inline struct hlist_head *dev_index_hash(struct net *net, int ifindex)
+ static inline void rps_lock(struct softnet_data *sd)
+ {
+ #ifdef CONFIG_RPS
+-	spin_lock(&sd->input_pkt_queue.lock);
++	raw_spin_lock(&sd->input_pkt_queue.raw_lock);
+ #endif
+ }
+ 
+ static inline void rps_unlock(struct softnet_data *sd)
+ {
+ #ifdef CONFIG_RPS
+-	spin_unlock(&sd->input_pkt_queue.lock);
++	raw_spin_unlock(&sd->input_pkt_queue.raw_lock);
+ #endif
+ }
+ 
+@@ -3419,7 +3419,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);
+-			kfree_skb(skb);
++			__skb_queue_tail(&sd->tofree_queue, skb);
+ 			input_queue_head_incr(sd);
+ 		}
+ 	}
+@@ -3428,10 +3428,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);
+-			kfree_skb(skb);
++			__skb_queue_tail(&sd->tofree_queue, skb);
+ 			input_queue_head_incr(sd);
+ 		}
+ 	}
++
++	if (!skb_queue_empty(&sd->tofree_queue))
++		raise_softirq_irqoff(NET_RX_SOFTIRQ);
+ }
+ 
+ static int napi_gro_complete(struct sk_buff *skb)
+@@ -3916,10 +3919,17 @@ static void net_rx_action(struct softirq_action *h)
+ 	struct softnet_data *sd = &__get_cpu_var(softnet_data);
+ 	unsigned long time_limit = jiffies + 2;
+ 	int budget = netdev_budget;
++	struct sk_buff *skb;
+ 	void *have;
+ 
+ 	local_irq_disable();
+ 
++	while ((skb = __skb_dequeue(&sd->tofree_queue))) {
++		local_irq_enable();
++		kfree_skb(skb);
++		local_irq_disable();
++	}
++
+ 	while (!list_empty(&sd->poll_list)) {
+ 		struct napi_struct *n;
+ 		int work, weight;
+@@ -6356,6 +6366,9 @@ static int dev_cpu_callback(struct notifier_block *nfb,
+ 		netif_rx(skb);
+ 		input_queue_head_incr(oldsd);
+ 	}
++	while ((skb = __skb_dequeue(&oldsd->tofree_queue))) {
++		kfree_skb(skb);
++	}
+ 
+ 	return NOTIFY_OK;
+ }
+@@ -6623,8 +6636,9 @@ static int __init net_dev_init(void)
+ 		struct softnet_data *sd = &per_cpu(softnet_data, i);
+ 
+ 		memset(sd, 0, sizeof(*sd));
+-		skb_queue_head_init(&sd->input_pkt_queue);
+-		skb_queue_head_init(&sd->process_queue);
++		skb_queue_head_init_raw(&sd->input_pkt_queue);
++		skb_queue_head_init_raw(&sd->process_queue);
++		skb_queue_head_init_raw(&sd->tofree_queue);
+ 		sd->completion_queue = NULL;
+ 		INIT_LIST_HEAD(&sd->poll_list);
+ 		sd->output_queue = NULL;

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0228-x86-no-perf-irq-work-rt.patch.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0228-x86-no-perf-irq-work-rt.patch.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0228-x86-no-perf-irq-work-rt.patch.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0228-x86-no-perf-irq-work-rt.patch.patch)
@@ -0,0 +1,68 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 13 Jul 2011 14:05:05 +0200
+Subject: [PATCH 228/371] x86-no-perf-irq-work-rt.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=657d54098929419af260cd991bf88cb98f0bdcc2
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ arch/x86/kernel/irq_work.c | 2 ++
+ kernel/irq_work.c          | 2 ++
+ kernel/timer.c             | 6 +++++-
+ 3 files changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/arch/x86/kernel/irq_work.c b/arch/x86/kernel/irq_work.c
+index ca8f703..129b8bb 100644
+--- a/arch/x86/kernel/irq_work.c
++++ b/arch/x86/kernel/irq_work.c
+@@ -18,6 +18,7 @@ void smp_irq_work_interrupt(struct pt_regs *regs)
+ 	irq_exit();
+ }
+ 
++#ifndef CONFIG_PREEMPT_RT_FULL
+ void arch_irq_work_raise(void)
+ {
+ #ifdef CONFIG_X86_LOCAL_APIC
+@@ -28,3 +29,4 @@ void arch_irq_work_raise(void)
+ 	apic_wait_icr_idle();
+ #endif
+ }
++#endif
+diff --git a/kernel/irq_work.c b/kernel/irq_work.c
+index c3c46c7..727ba59 100644
+--- a/kernel/irq_work.c
++++ b/kernel/irq_work.c
+@@ -105,8 +105,10 @@ void irq_work_run(void)
+ 	if (llist_empty(this_list))
+ 		return;
+ 
++#ifndef CONFIG_PREEMPT_RT_FULL
+ 	BUG_ON(!in_irq());
+ 	BUG_ON(!irqs_disabled());
++#endif
+ 
+ 	llnode = llist_del_all(this_list);
+ 	while (llnode != NULL) {
+diff --git a/kernel/timer.c b/kernel/timer.c
+index 471e277..be22b3c 100644
+--- a/kernel/timer.c
++++ b/kernel/timer.c
+@@ -1366,7 +1366,7 @@ void update_process_times(int user_tick)
+ 	scheduler_tick();
+ 	run_local_timers();
+ 	rcu_check_callbacks(cpu, user_tick);
+-#ifdef CONFIG_IRQ_WORK
++#if defined(CONFIG_IRQ_WORK) && !defined(CONFIG_PREEMPT_RT_FULL)
+ 	if (in_irq())
+ 		irq_work_run();
+ #endif
+@@ -1380,6 +1380,10 @@ static void run_timer_softirq(struct softirq_action *h)
+ {
+ 	struct tvec_base *base = __this_cpu_read(tvec_bases);
+ 
++#if defined(CONFIG_IRQ_WORK) && defined(CONFIG_PREEMPT_RT_FULL)
++	irq_work_run();
++#endif
++
+ 	printk_tick();
+ 	hrtimer_run_pending();
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0229-console-make-rt-friendly.patch.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0229-console-make-rt-friendly.patch.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0229-console-make-rt-friendly.patch.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0229-console-make-rt-friendly.patch.patch)
@@ -0,0 +1,85 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Sun, 17 Jul 2011 22:43:07 +0200
+Subject: [PATCH 229/371] console-make-rt-friendly.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5afc3aad42436fc14ac93870904111f8efd05a21
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ kernel/printk.c | 26 +++++++++++++++++++++++---
+ 1 file changed, 23 insertions(+), 3 deletions(-)
+
+diff --git a/kernel/printk.c b/kernel/printk.c
+index 6bf5457..9de8f0f 100644
+--- a/kernel/printk.c
++++ b/kernel/printk.c
+@@ -504,6 +504,7 @@ static void __call_console_drivers(unsigned start, unsigned end)
+ {
+ 	struct console *con;
+ 
++	migrate_disable();
+ 	for_each_console(con) {
+ 		if (exclusive_console && con != exclusive_console)
+ 			continue;
+@@ -512,6 +513,7 @@ static void __call_console_drivers(unsigned start, unsigned end)
+ 				(con->flags & CON_ANYTIME)))
+ 			con->write(con, &LOG_BUF(start), end - start);
+ 	}
++	migrate_enable();
+ }
+ 
+ #ifdef CONFIG_EARLY_PRINTK
+@@ -838,12 +840,18 @@ static inline int can_use_console(unsigned int cpu)
+  * interrupts disabled. It should return with 'lockbuf_lock'
+  * released but interrupts still disabled.
+  */
+-static int console_trylock_for_printk(unsigned int cpu)
++static int console_trylock_for_printk(unsigned int cpu, unsigned long flags)
+ 	__releases(&logbuf_lock)
+ {
+ 	int retval = 0, wake = 0;
++#ifdef CONFIG_PREEMPT_RT_FULL
++	int lock = !early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
++		!preempt_count();
++#else
++	int lock = 1;
++#endif
+ 
+-	if (console_trylock()) {
++	if (lock && console_trylock()) {
+ 		retval = 1;
+ 
+ 		/*
+@@ -1021,8 +1029,15 @@ asmlinkage int vprintk(const char *fmt, va_list args)
+ 	 * will release 'logbuf_lock' regardless of whether it
+ 	 * actually gets the semaphore or not.
+ 	 */
+-	if (console_trylock_for_printk(this_cpu))
++	if (console_trylock_for_printk(this_cpu, flags)) {
++#ifndef CONFIG_PREEMPT_RT_FULL
+ 		console_unlock();
++#else
++		raw_local_irq_restore(flags);
++		console_unlock();
++		raw_local_irq_save(flags);
++#endif
++	}
+ 
+ 	lockdep_on();
+ out_restore_irqs:
+@@ -1331,11 +1346,16 @@ again:
+ 		_con_start = con_start;
+ 		_log_end = log_end;
+ 		con_start = log_end;		/* Flush */
++#ifndef CONFIG_PREEMPT_RT_FULL
+ 		raw_spin_unlock(&logbuf_lock);
+ 		stop_critical_timings();	/* don't trace print latency */
+ 		call_console_drivers(_con_start, _log_end);
+ 		start_critical_timings();
+ 		local_irq_restore(flags);
++#else
++		raw_spin_unlock_irqrestore(&logbuf_lock, flags);
++		call_console_drivers(_con_start, _log_end);
++#endif
+ 	}
+ 	console_locked = 0;
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0230-printk-Disable-migration-instead-of-preemption.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0230-printk-Disable-migration-instead-of-preemption.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0230-printk-Disable-migration-instead-of-preemption.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0230-printk-Disable-migration-instead-of-preemption.patch)
@@ -0,0 +1,61 @@
+From: Richard Weinberger <rw at linutronix.de>
+Date: Mon, 12 Dec 2011 14:35:56 +0100
+Subject: [PATCH 230/371] printk: Disable migration instead of preemption
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=973f6e55a4c5b4fd17229ec022a20c6b23d03eda
+
+There is no need do disable preemption in vprintk(), disable_migrate()
+is sufficient. This fixes the following bug in -rt:
+
+[   14.759233] BUG: sleeping function called from invalid context
+at /home/rw/linux-rt/kernel/rtmutex.c:645
+[   14.759235] in_atomic(): 1, irqs_disabled(): 0, pid: 547, name: bash
+[   14.759244] Pid: 547, comm: bash Not tainted 3.0.12-rt29+ #3
+[   14.759246] Call Trace:
+[   14.759301]  [<ffffffff8106fade>] __might_sleep+0xeb/0xf0
+[   14.759318]  [<ffffffff810ad784>] rt_spin_lock_fastlock.constprop.9+0x21/0x43
+[   14.759336]  [<ffffffff8161fef0>] rt_spin_lock+0xe/0x10
+[   14.759354]  [<ffffffff81347ad1>] serial8250_console_write+0x81/0x121
+[   14.759366]  [<ffffffff8107ecd3>] __call_console_drivers+0x7c/0x93
+[   14.759369]  [<ffffffff8107ef31>] _call_console_drivers+0x5c/0x60
+[   14.759372]  [<ffffffff8107f7e5>] console_unlock+0x147/0x1a2
+[   14.759374]  [<ffffffff8107fd33>] vprintk+0x3ea/0x462
+[   14.759383]  [<ffffffff816160e0>] printk+0x51/0x53
+[   14.759399]  [<ffffffff811974e4>] ? proc_reg_poll+0x9a/0x9a
+[   14.759403]  [<ffffffff81335b42>] __handle_sysrq+0x50/0x14d
+[   14.759406]  [<ffffffff81335c8a>] write_sysrq_trigger+0x4b/0x53
+[   14.759408]  [<ffffffff81335c3f>] ? __handle_sysrq+0x14d/0x14d
+[   14.759410]  [<ffffffff81197583>] proc_reg_write+0x9f/0xbe
+[   14.759426]  [<ffffffff811497ec>] vfs_write+0xac/0xf3
+[   14.759429]  [<ffffffff8114a9b3>] ? fget_light+0x3a/0x9b
+[   14.759431]  [<ffffffff811499db>] sys_write+0x4a/0x6e
+[   14.759438]  [<ffffffff81625d52>] system_call_fastpath+0x16/0x1b
+
+Signed-off-by: Richard Weinberger <rw at linutronix.de>
+Link: http://lkml.kernel.org/r/1323696956-11445-1-git-send-email-rw@linutronix.de
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ kernel/printk.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/kernel/printk.c b/kernel/printk.c
+index 9de8f0f..b173409 100644
+--- a/kernel/printk.c
++++ b/kernel/printk.c
+@@ -912,7 +912,7 @@ asmlinkage int vprintk(const char *fmt, va_list args)
+ 	boot_delay_msec();
+ 	printk_delay();
+ 
+-	preempt_disable();
++	migrate_disable();
+ 	/* This stops the holder of console_sem just where we want him */
+ 	raw_local_irq_save(flags);
+ 	this_cpu = smp_processor_id();
+@@ -1043,7 +1043,7 @@ asmlinkage int vprintk(const char *fmt, va_list args)
+ out_restore_irqs:
+ 	raw_local_irq_restore(flags);
+ 
+-	preempt_enable();
++	migrate_enable();
+ 	return printed_len;
+ }
+ EXPORT_SYMBOL(printk);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0231-power-use-generic-rwsem-on-rt.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0231-power-use-generic-rwsem-on-rt.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0231-power-use-generic-rwsem-on-rt.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0231-power-use-generic-rwsem-on-rt.patch)
@@ -0,0 +1,26 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Tue, 10 Apr 2012 14:34:18 -0400
+Subject: [PATCH 231/371] power-use-generic-rwsem-on-rt
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2ce22a2c4ff099112f85ca34f1506995f1682312
+
+---
+ arch/powerpc/Kconfig | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
+index db7c441..19b439d 100644
+--- a/arch/powerpc/Kconfig
++++ b/arch/powerpc/Kconfig
+@@ -69,10 +69,11 @@ config LOCKDEP_SUPPORT
+ 
+ config RWSEM_GENERIC_SPINLOCK
+ 	bool
++	default y if PREEMPT_RT_FULL
+ 
+ config RWSEM_XCHGADD_ALGORITHM
+ 	bool
+-	default y
++	default y if !PREEMPT_RT_FULL
+ 
+ config GENERIC_LOCKBREAK
+ 	bool

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0232-power-disable-highmem-on-rt.patch.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0232-power-disable-highmem-on-rt.patch.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0232-power-disable-highmem-on-rt.patch.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0232-power-disable-highmem-on-rt.patch.patch)
@@ -0,0 +1,23 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Mon, 18 Jul 2011 17:08:34 +0200
+Subject: [PATCH 232/371] power-disable-highmem-on-rt.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0b8419d82bbd44467ddbe2a5baf958df9522c886
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ arch/powerpc/Kconfig | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
+index 19b439d..dd2ab05 100644
+--- a/arch/powerpc/Kconfig
++++ b/arch/powerpc/Kconfig
+@@ -277,7 +277,7 @@ menu "Kernel options"
+ 
+ config HIGHMEM
+ 	bool "High memory support"
+-	depends on PPC32
++	depends on PPC32 && !PREEMPT_RT_FULL
+ 
+ source kernel/time/Kconfig
+ source kernel/Kconfig.hz

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0233-arm-disable-highmem-on-rt.patch.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0233-arm-disable-highmem-on-rt.patch.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0233-arm-disable-highmem-on-rt.patch.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0233-arm-disable-highmem-on-rt.patch.patch)
@@ -0,0 +1,23 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Mon, 18 Jul 2011 17:09:28 +0200
+Subject: [PATCH 233/371] arm-disable-highmem-on-rt.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ba53ec12391a5e31d927f895a0c8a9a82c9450ea
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ arch/arm/Kconfig | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
+index 0b9c9bc..fe8955f 100644
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -1678,7 +1678,7 @@ config HAVE_ARCH_PFN_VALID
+ 
+ config HIGHMEM
+ 	bool "High Memory Support"
+-	depends on MMU
++	depends on MMU && !PREEMPT_RT_FULL
+ 	help
+ 	  The address space of ARM processors is only 4 Gigabytes large
+ 	  and it has to accommodate user address space, kernel address

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0234-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0234-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0234-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0234-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch)
@@ -0,0 +1,34 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Sat, 1 May 2010 18:29:35 +0200
+Subject: [PATCH 234/371] ARM: at91: tclib: Default to tclib timer for RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=87fcb72b0d40c5711f94ead28559201aaa4c3194
+
+RT is not too happy about the shared timer interrupt in AT91
+devices. Default to tclib timer for RT.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ drivers/misc/Kconfig | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
+index 1cb530c..951ae6c 100644
+--- a/drivers/misc/Kconfig
++++ b/drivers/misc/Kconfig
+@@ -82,6 +82,7 @@ config AB8500_PWM
+ config ATMEL_TCLIB
+ 	bool "Atmel AT32/AT91 Timer/Counter Library"
+ 	depends on (AVR32 || ARCH_AT91)
++	default y if PREEMPT_RT_FULL
+ 	help
+ 	  Select this if you want a library to allocate the Timer/Counter
+ 	  blocks found on many Atmel processors.  This facilitates using
+@@ -114,7 +115,7 @@ config ATMEL_TCB_CLKSRC_BLOCK
+ config ATMEL_TCB_CLKSRC_USE_SLOW_CLOCK
+ 	bool "TC Block use 32 KiHz clock"
+ 	depends on ATMEL_TCB_CLKSRC
+-	default y
++	default y if !PREEMPT_RT_FULL
+ 	help
+ 	  Select this to use 32 KiHz base clock rate as TC block clock
+ 	  source for clock events.

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0235-mips-disable-highmem-on-rt.patch.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0235-mips-disable-highmem-on-rt.patch.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0235-mips-disable-highmem-on-rt.patch.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0235-mips-disable-highmem-on-rt.patch.patch)
@@ -0,0 +1,23 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Mon, 18 Jul 2011 17:10:12 +0200
+Subject: [PATCH 235/371] mips-disable-highmem-on-rt.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=21175f167b166b295657a0feaa3d1ee1a1e45d44
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ arch/mips/Kconfig | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
+index d46f1da..9f02e8b 100644
+--- a/arch/mips/Kconfig
++++ b/arch/mips/Kconfig
+@@ -2040,7 +2040,7 @@ config CPU_R4400_WORKAROUNDS
+ #
+ config HIGHMEM
+ 	bool "High Memory Support"
+-	depends on 32BIT && CPU_SUPPORTS_HIGHMEM && SYS_SUPPORTS_HIGHMEM
++	depends on 32BIT && CPU_SUPPORTS_HIGHMEM && SYS_SUPPORTS_HIGHMEM && !PREEMPT_RT_FULL
+ 
+ config CPU_SUPPORTS_HIGHMEM
+ 	bool

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0236-net-Avoid-livelock-in-net_tx_action-on-RT.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0236-net-Avoid-livelock-in-net_tx_action-on-RT.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0236-net-Avoid-livelock-in-net_tx_action-on-RT.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0236-net-Avoid-livelock-in-net_tx_action-on-RT.patch)
@@ -0,0 +1,94 @@
+From: Steven Rostedt <srostedt at redhat.com>
+Date: Thu, 6 Oct 2011 10:48:39 -0400
+Subject: [PATCH 236/371] net: Avoid livelock in net_tx_action() on RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=312efc77b378e864095f37b12a3d23ca5fa3702c
+
+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
+return of interrupt in !RT.
+
+The spin_trylock() in net_tx_action() makes sure, that the softirq
+does not deadlock. When the lock can't be acquired q is requeued and
+the NET_TX softirq is raised. That causes the softirq to run over and
+over.
+
+That works in mainline as do_softirq() has a retry loop limit and
+leaves the softirq processing in the interrupt return path and
+schedules ksoftirqd. The task which holds qdisc_lock cannot be
+preempted, so the lock is released and either ksoftirqd or the next
+softirq in the return from interrupt path can proceed. Though it's a
+bit strange to actually run MAX_SOFTIRQ_RESTART (10) loops before it
+decides to bail out even if it's clear in the first iteration :)
+
+On RT all softirq processing is done in a FIFO thread and we don't
+have a loop limit, so ksoftirqd preempts the lock holder forever and
+unqueues and requeues until the reset button is hit.
+
+Due to the forced threading of ksoftirqd on RT we actually cannot
+deadlock on qdisc_lock because it's a "sleeping lock". So it's safe to
+replace the spin_trylock() with a spin_lock(). When contended,
+ksoftirqd is scheduled out and the lock holder can proceed.
+
+[ tglx: Massaged changelog and code comments ]
+
+Solved-by: Thomas Gleixner <tglx at linuxtronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+Tested-by: Carsten Emde <cbe at osadl.org>
+Cc: Clark Williams <williams at redhat.com>
+Cc: John Kacur <jkacur at redhat.com>
+Cc: Luis Claudio R. Goncalves <lclaudio at redhat.com>
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ net/core/dev.c | 32 +++++++++++++++++++++++++++++++-
+ 1 file changed, 31 insertions(+), 1 deletion(-)
+
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 72d9af3..4615283 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -3046,6 +3046,36 @@ int netif_rx_ni(struct sk_buff *skb)
+ }
+ EXPORT_SYMBOL(netif_rx_ni);
+ 
++#ifdef CONFIG_PREEMPT_RT_FULL
++/*
++ * RT runs ksoftirqd as a real time thread and the root_lock is a
++ * "sleeping spinlock". If the trylock fails then we can go into an
++ * infinite loop when ksoftirqd preempted the task which actually
++ * holds the lock, because we requeue q and raise NET_TX softirq
++ * causing ksoftirqd to loop forever.
++ *
++ * It's safe to use spin_lock on RT here as softirqs run in thread
++ * context and cannot deadlock against the thread which is holding
++ * root_lock.
++ *
++ * On !RT the trylock might fail, but there we bail out from the
++ * softirq loop after 10 attempts which we can't do on RT. And the
++ * task holding root_lock cannot be preempted, so the only downside of
++ * that trylock is that we need 10 loops to decide that we should have
++ * given up in the first one :)
++ */
++static inline int take_root_lock(spinlock_t *lock)
++{
++	spin_lock(lock);
++	return 1;
++}
++#else
++static inline int take_root_lock(spinlock_t *lock)
++{
++	return spin_trylock(lock);
++}
++#endif
++
+ static void net_tx_action(struct softirq_action *h)
+ {
+ 	struct softnet_data *sd = &__get_cpu_var(softnet_data);
+@@ -3084,7 +3114,7 @@ static void net_tx_action(struct softirq_action *h)
+ 			head = head->next_sched;
+ 
+ 			root_lock = qdisc_lock(q);
+-			if (spin_trylock(root_lock)) {
++			if (take_root_lock(root_lock)) {
+ 				smp_mb__before_clear_bit();
+ 				clear_bit(__QDISC_STATE_SCHED,
+ 					  &q->state);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0237-ping-sysrq.patch.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0237-ping-sysrq.patch.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0237-ping-sysrq.patch.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0237-ping-sysrq.patch.patch)
@@ -0,0 +1,129 @@
+From: Carsten Emde <C.Emde at osadl.org>
+Date: Tue, 19 Jul 2011 13:51:17 +0100
+Subject: [PATCH 237/371] ping-sysrq.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=734b036682c162cf775295abd74dae3e2da29ff8
+
+There are (probably rare) situations when a system crashed and the system
+console becomes unresponsive but the network icmp layer still is alive.
+Wouldn't it be wonderful, if we then could submit a sysreq command via ping?
+
+This patch provides this facility. Please consult the updated documentation
+Documentation/sysrq.txt for details.
+
+Signed-off-by: Carsten Emde <C.Emde at osadl.org>
+---
+ Documentation/sysrq.txt    | 11 +++++++++--
+ include/net/netns/ipv4.h   |  1 +
+ net/ipv4/icmp.c            | 30 ++++++++++++++++++++++++++++++
+ net/ipv4/sysctl_net_ipv4.c |  7 +++++++
+ 4 files changed, 47 insertions(+), 2 deletions(-)
+
+diff --git a/Documentation/sysrq.txt b/Documentation/sysrq.txt
+index 312e375..9981f30 100644
+--- a/Documentation/sysrq.txt
++++ b/Documentation/sysrq.txt
+@@ -57,10 +57,17 @@ On PowerPC - Press 'ALT - Print Screen (or F13) - <command key>,
+ On other - If you know of the key combos for other architectures, please
+            let me know so I can add them to this section.
+ 
+-On all -  write a character to /proc/sysrq-trigger.  e.g.:
+-
++On all -  write a character to /proc/sysrq-trigger, e.g.:
+ 		echo t > /proc/sysrq-trigger
+ 
++On all - Enable network SysRq by writing a cookie to icmp_echo_sysrq, e.g.
++		echo 0x01020304 >/proc/sys/net/ipv4/icmp_echo_sysrq
++	 Send an ICMP echo request with this pattern plus the particular
++	 SysRq command key. Example:
++	 	# ping -c1 -s57 -p0102030468
++	 will trigger the SysRq-H (help) command.
++
++
+ *  What are the 'command' keys?
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 'b'     - Will immediately reboot the system without syncing or unmounting
+diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h
+index d786b4f..8cef1d1 100644
+--- a/include/net/netns/ipv4.h
++++ b/include/net/netns/ipv4.h
+@@ -47,6 +47,7 @@ struct netns_ipv4 {
+ 
+ 	int sysctl_icmp_echo_ignore_all;
+ 	int sysctl_icmp_echo_ignore_broadcasts;
++	int sysctl_icmp_echo_sysrq;
+ 	int sysctl_icmp_ignore_bogus_error_responses;
+ 	int sysctl_icmp_ratelimit;
+ 	int sysctl_icmp_ratemask;
+diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c
+index ab188ae..028eb47 100644
+--- a/net/ipv4/icmp.c
++++ b/net/ipv4/icmp.c
+@@ -67,6 +67,7 @@
+ #include <linux/jiffies.h>
+ #include <linux/kernel.h>
+ #include <linux/fcntl.h>
++#include <linux/sysrq.h>
+ #include <linux/socket.h>
+ #include <linux/in.h>
+ #include <linux/inet.h>
+@@ -801,6 +802,30 @@ out_err:
+ }
+ 
+ /*
++ * 32bit and 64bit have different timestamp length, so we check for
++ * the cookie at offset 20 and verify it is repeated at offset 50
++ */
++#define CO_POS0		20
++#define CO_POS1		50
++#define CO_SIZE		sizeof(int)
++#define ICMP_SYSRQ_SIZE	57
++
++/*
++ * We got a ICMP_SYSRQ_SIZE sized ping request. Check for the cookie
++ * pattern and if it matches send the next byte as a trigger to sysrq.
++ */
++static void icmp_check_sysrq(struct net *net, struct sk_buff *skb)
++{
++	int cookie = htonl(net->ipv4.sysctl_icmp_echo_sysrq);
++	char *p = skb->data;
++
++	if (!memcmp(&cookie, p + CO_POS0, CO_SIZE) &&
++	    !memcmp(&cookie, p + CO_POS1, CO_SIZE) &&
++	    p[CO_POS0 + CO_SIZE] == p[CO_POS1 + CO_SIZE])
++		handle_sysrq(p[CO_POS0 + CO_SIZE]);
++}
++
++/*
+  *	Handle ICMP_ECHO ("ping") requests.
+  *
+  *	RFC 1122: 3.2.2.6 MUST have an echo server that answers ICMP echo
+@@ -827,6 +852,11 @@ static void icmp_echo(struct sk_buff *skb)
+ 		icmp_param.data_len	   = skb->len;
+ 		icmp_param.head_len	   = sizeof(struct icmphdr);
+ 		icmp_reply(&icmp_param, skb);
++
++		if (skb->len == ICMP_SYSRQ_SIZE &&
++		    net->ipv4.sysctl_icmp_echo_sysrq) {
++			icmp_check_sysrq(net, skb);
++		}
+ 	}
+ }
+ 
+diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c
+index 739b073..a489aba 100644
+--- a/net/ipv4/sysctl_net_ipv4.c
++++ b/net/ipv4/sysctl_net_ipv4.c
+@@ -691,6 +691,13 @@ static struct ctl_table ipv4_net_table[] = {
+ 		.proc_handler	= proc_dointvec
+ 	},
+ 	{
++		.procname	= "icmp_echo_sysrq",
++		.data		= &init_net.ipv4.sysctl_icmp_echo_sysrq,
++		.maxlen		= sizeof(int),
++		.mode		= 0644,
++		.proc_handler	= proc_dointvec
++	},
++	{
+ 		.procname	= "icmp_ignore_bogus_error_responses",
+ 		.data		= &init_net.ipv4.sysctl_icmp_ignore_bogus_error_responses,
+ 		.maxlen		= sizeof(int),

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0238-kgdb-serial-Short-term-workaround.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0238-kgdb-serial-Short-term-workaround.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0238-kgdb-serial-Short-term-workaround.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0238-kgdb-serial-Short-term-workaround.patch)
@@ -0,0 +1,116 @@
+From: Jason Wessel <jason.wessel at windriver.com>
+Date: Thu, 28 Jul 2011 12:42:23 -0500
+Subject: [PATCH 238/371] kgdb/serial: Short term workaround
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b2a119aed25ab7d6092891dc4800a18fa870438a
+
+On 07/27/2011 04:37 PM, Thomas Gleixner wrote:
+>  - KGDB (not yet disabled) is reportedly unusable on -rt right now due
+>    to missing hacks in the console locking which I dropped on purpose.
+>
+
+To work around this in the short term you can use this patch, in
+addition to the clocksource watchdog patch that Thomas brewed up.
+
+Comments are welcome of course.  Ultimately the right solution is to
+change separation between the console and the HW to have a polled mode
++ work queue so as not to introduce any kind of latency.
+
+Thanks,
+Jason.
+---
+ drivers/tty/serial/8250.c | 13 +++++++++----
+ include/linux/kdb.h       |  2 ++
+ kernel/debug/kdb/kdb_io.c |  6 ++----
+ 3 files changed, 13 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/tty/serial/8250.c b/drivers/tty/serial/8250.c
+index 2169073..b713a36 100644
+--- a/drivers/tty/serial/8250.c
++++ b/drivers/tty/serial/8250.c
+@@ -38,6 +38,7 @@
+ #include <linux/nmi.h>
+ #include <linux/mutex.h>
+ #include <linux/slab.h>
++#include <linux/kdb.h>
+ 
+ #include <asm/io.h>
+ #include <asm/irq.h>
+@@ -2892,10 +2893,14 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count)
+ 
+ 	touch_nmi_watchdog();
+ 
+-	if (up->port.sysrq || oops_in_progress)
+-		locked = spin_trylock_irqsave(&up->port.lock, flags);
+-	else
+-		spin_lock_irqsave(&up->port.lock, flags);
++	if (unlikely(in_kdb_printk())) {
++		locked = 0;
++	} else {
++		if (up->port.sysrq || oops_in_progress)
++			locked = spin_trylock_irqsave(&up->port.lock, flags);
++		else
++			spin_lock_irqsave(&up->port.lock, flags);
++	}
+ 
+ 	/*
+ 	 *	First save the IER then disable the interrupts
+diff --git a/include/linux/kdb.h b/include/linux/kdb.h
+index 0647258..0d1ebfc 100644
+--- a/include/linux/kdb.h
++++ b/include/linux/kdb.h
+@@ -150,12 +150,14 @@ extern int kdb_register(char *, kdb_func_t, char *, char *, short);
+ extern int kdb_register_repeat(char *, kdb_func_t, char *, char *,
+ 			       short, kdb_repeat_t);
+ extern int kdb_unregister(char *);
++#define in_kdb_printk() (kdb_trap_printk)
+ #else /* ! CONFIG_KGDB_KDB */
+ #define kdb_printf(...)
+ #define kdb_init(x)
+ #define kdb_register(...)
+ #define kdb_register_repeat(...)
+ #define kdb_uregister(x)
++#define in_kdb_printk() (0)
+ #endif	/* CONFIG_KGDB_KDB */
+ enum {
+ 	KDB_NOT_INITIALIZED,
+diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c
+index 4802eb5..5b7455f 100644
+--- a/kernel/debug/kdb/kdb_io.c
++++ b/kernel/debug/kdb/kdb_io.c
+@@ -553,7 +553,6 @@ int vkdb_printf(const char *fmt, va_list ap)
+ 	int diag;
+ 	int linecount;
+ 	int logging, saved_loglevel = 0;
+-	int saved_trap_printk;
+ 	int got_printf_lock = 0;
+ 	int retlen = 0;
+ 	int fnd, len;
+@@ -564,8 +563,6 @@ int vkdb_printf(const char *fmt, va_list ap)
+ 	unsigned long uninitialized_var(flags);
+ 
+ 	preempt_disable();
+-	saved_trap_printk = kdb_trap_printk;
+-	kdb_trap_printk = 0;
+ 
+ 	/* Serialize kdb_printf if multiple cpus try to write at once.
+ 	 * But if any cpu goes recursive in kdb, just print the output,
+@@ -821,7 +818,6 @@ kdb_print_out:
+ 	} else {
+ 		__release(kdb_printf_lock);
+ 	}
+-	kdb_trap_printk = saved_trap_printk;
+ 	preempt_enable();
+ 	return retlen;
+ }
+@@ -831,9 +827,11 @@ int kdb_printf(const char *fmt, ...)
+ 	va_list ap;
+ 	int r;
+ 
++	kdb_trap_printk++;
+ 	va_start(ap, fmt);
+ 	r = vkdb_printf(fmt, ap);
+ 	va_end(ap);
++	kdb_trap_printk--;
+ 
+ 	return r;
+ }

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0239-add-sys-kernel-realtime-entry.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0239-add-sys-kernel-realtime-entry.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0239-add-sys-kernel-realtime-entry.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0239-add-sys-kernel-realtime-entry.patch)
@@ -0,0 +1,50 @@
+From: Clark Williams <williams at redhat.com>
+Date: Sat, 30 Jul 2011 21:55:53 -0500
+Subject: [PATCH 239/371] add /sys/kernel/realtime entry
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b3b2ae937eabaf9f1c57717ff5d3431577061ecf
+
+Add a /sys/kernel entry to indicate that the kernel is a
+realtime kernel.
+
+Clark says that he needs this for udev rules, udev needs to evaluate
+if its a PREEMPT_RT kernel a few thousand times and parsing uname
+output is too slow or so.
+
+Are there better solutions? Should it exist and return 0 on !-rt?
+
+Signed-off-by: Clark Williams <williams at redhat.com>
+Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
+---
+ kernel/ksysfs.c | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/kernel/ksysfs.c b/kernel/ksysfs.c
+index 4e316e1..a546d33 100644
+--- a/kernel/ksysfs.c
++++ b/kernel/ksysfs.c
+@@ -133,6 +133,15 @@ KERNEL_ATTR_RO(vmcoreinfo);
+ 
+ #endif /* CONFIG_KEXEC */
+ 
++#if defined(CONFIG_PREEMPT_RT_FULL)
++static ssize_t  realtime_show(struct kobject *kobj,
++			      struct kobj_attribute *attr, char *buf)
++{
++	return sprintf(buf, "%d\n", 1);
++}
++KERNEL_ATTR_RO(realtime);
++#endif
++
+ /* whether file capabilities are enabled */
+ static ssize_t fscaps_show(struct kobject *kobj,
+ 				  struct kobj_attribute *attr, char *buf)
+@@ -182,6 +191,9 @@ static struct attribute * kernel_attrs[] = {
+ 	&kexec_crash_size_attr.attr,
+ 	&vmcoreinfo_attr.attr,
+ #endif
++#ifdef CONFIG_PREEMPT_RT_FULL
++	&realtime_attr.attr,
++#endif
+ 	NULL
+ };
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0240-mm-rt-kmap_atomic-scheduling.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0240-mm-rt-kmap_atomic-scheduling.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0240-mm-rt-kmap_atomic-scheduling.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0240-mm-rt-kmap_atomic-scheduling.patch)
@@ -0,0 +1,120 @@
+From: Peter Zijlstra <peterz at infradead.org>
+Date: Thu, 28 Jul 2011 10:43:51 +0200
+Subject: [PATCH 240/371] mm, rt: kmap_atomic scheduling
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2daa14bfe0977727de43e7657ddded05c8ffcfea
+
+In fact, with migrate_disable() existing one could play games with
+kmap_atomic. You could save/restore the kmap_atomic slots on context
+switch (if there are any in use of course), this should be esp easy now
+that we have a kmap_atomic stack.
+
+Something like the below.. it wants replacing all the preempt_disable()
+stuff with pagefault_disable() && migrate_disable() of course, but then
+you can flip kmaps around like below.
+
+Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
+[dvhart at linux.intel.com: build fix]
+Link: http://lkml.kernel.org/r/1311842631.5890.208.camel@twins
+---
+ arch/x86/kernel/process_32.c | 36 ++++++++++++++++++++++++++++++++++++
+ include/linux/sched.h        |  5 +++++
+ mm/memory.c                  |  2 ++
+ 3 files changed, 43 insertions(+)
+
+diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
+index ada175e..20f1573 100644
+--- a/arch/x86/kernel/process_32.c
++++ b/arch/x86/kernel/process_32.c
+@@ -39,6 +39,7 @@
+ #include <linux/io.h>
+ #include <linux/kdebug.h>
+ #include <linux/cpuidle.h>
++#include <linux/highmem.h>
+ 
+ #include <asm/pgtable.h>
+ #include <asm/system.h>
+@@ -339,6 +340,41 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+ 		     task_thread_info(next_p)->flags & _TIF_WORK_CTXSW_NEXT))
+ 		__switch_to_xtra(prev_p, next_p, tss);
+ 
++#if defined CONFIG_PREEMPT_RT_FULL && defined CONFIG_HIGHMEM
++	/*
++	 * Save @prev's kmap_atomic stack
++	 */
++	prev_p->kmap_idx = __this_cpu_read(__kmap_atomic_idx);
++	if (unlikely(prev_p->kmap_idx)) {
++		int i;
++
++		for (i = 0; i < prev_p->kmap_idx; i++) {
++			int idx = i + KM_TYPE_NR * smp_processor_id();
++
++			pte_t *ptep = kmap_pte - idx;
++			prev_p->kmap_pte[i] = *ptep;
++			kpte_clear_flush(ptep, __fix_to_virt(FIX_KMAP_BEGIN + idx));
++		}
++
++		__this_cpu_write(__kmap_atomic_idx, 0);
++	}
++
++	/*
++	 * Restore @next_p's kmap_atomic stack
++	 */
++	if (unlikely(next_p->kmap_idx)) {
++		int i;
++
++		__this_cpu_write(__kmap_atomic_idx, next_p->kmap_idx);
++
++		for (i = 0; i < next_p->kmap_idx; i++) {
++			int idx = i + KM_TYPE_NR * smp_processor_id();
++
++			set_pte(kmap_pte - idx, next_p->kmap_pte[i]);
++		}
++	}
++#endif
++
+ 	/*
+ 	 * Leave lazy mode, flushing any hypercalls made here.
+ 	 * This must be done before restoring TLS segments so
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index 4be25bc..0b99590 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
+@@ -63,6 +63,7 @@ struct sched_param {
+ #include <linux/nodemask.h>
+ #include <linux/mm_types.h>
+ 
++#include <asm/kmap_types.h>
+ #include <asm/system.h>
+ #include <asm/page.h>
+ #include <asm/ptrace.h>
+@@ -1612,6 +1613,10 @@ struct task_struct {
+ 	struct rcu_head put_rcu;
+ 	int softirq_nestcnt;
+ #endif
++#if defined CONFIG_PREEMPT_RT_FULL && defined CONFIG_HIGHMEM
++	int kmap_idx;
++	pte_t kmap_pte[KM_TYPE_NR];
++#endif
+ };
+ 
+ #ifdef CONFIG_PREEMPT_RT_FULL
+diff --git a/mm/memory.c b/mm/memory.c
+index a9bc468..d8ebfc6 100644
+--- a/mm/memory.c
++++ b/mm/memory.c
+@@ -3516,6 +3516,7 @@ unlock:
+ #ifdef CONFIG_PREEMPT_RT_FULL
+ void pagefault_disable(void)
+ {
++	migrate_disable();
+ 	current->pagefault_disabled++;
+ 	/*
+ 	 * make sure to have issued the store before a pagefault
+@@ -3533,6 +3534,7 @@ void pagefault_enable(void)
+ 	 */
+ 	barrier();
+ 	current->pagefault_disabled--;
++	migrate_enable();
+ }
+ EXPORT_SYMBOL_GPL(pagefault_enable);
+ #endif

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0241-ipc-sem-Rework-semaphore-wakeups.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0241-ipc-sem-Rework-semaphore-wakeups.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0241-ipc-sem-Rework-semaphore-wakeups.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0241-ipc-sem-Rework-semaphore-wakeups.patch)
@@ -0,0 +1,72 @@
+From: Peter Zijlstra <a.p.zijlstra at chello.nl>
+Date: Tue, 13 Sep 2011 15:09:40 +0200
+Subject: [PATCH 241/371] ipc/sem: Rework semaphore wakeups
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c9d49a094abb638129cd0457a4d6d4d97f76dcec
+
+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
+that on other CPUs.
+
+Kill this and simply wake the task directly from under the sem_lock.
+
+This was discovered by a migrate_disable() debug feature that
+disallows:
+
+  spin_lock();
+  preempt_disable();
+  spin_unlock()
+  preempt_enable();
+
+Cc: Manfred Spraul <manfred at colorfullife.com>
+Suggested-by: Thomas Gleixner <tglx at linutronix.de>
+Reported-by: Mike Galbraith <efault at gmx.de>
+Signed-off-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
+Cc: Manfred Spraul <manfred at colorfullife.com>
+Link: http://lkml.kernel.org/r/1315994224.5040.1.camel@twins
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ ipc/sem.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/ipc/sem.c b/ipc/sem.c
+index 5215a81..5eaf684 100644
+--- a/ipc/sem.c
++++ b/ipc/sem.c
+@@ -461,6 +461,13 @@ undo:
+ static void wake_up_sem_queue_prepare(struct list_head *pt,
+ 				struct sem_queue *q, int error)
+ {
++#ifdef CONFIG_PREEMPT_RT_BASE
++	struct task_struct *p = q->sleeper;
++	get_task_struct(p);
++	q->status = error;
++	wake_up_process(p);
++	put_task_struct(p);
++#else
+ 	if (list_empty(pt)) {
+ 		/*
+ 		 * Hold preempt off so that we don't get preempted and have the
+@@ -472,6 +479,7 @@ static void wake_up_sem_queue_prepare(struct list_head *pt,
+ 	q->pid = error;
+ 
+ 	list_add_tail(&q->simple_list, pt);
++#endif
+ }
+ 
+ /**
+@@ -485,6 +493,7 @@ static void wake_up_sem_queue_prepare(struct list_head *pt,
+  */
+ static void wake_up_sem_queue_do(struct list_head *pt)
+ {
++#ifndef CONFIG_PREEMPT_RT_BASE
+ 	struct sem_queue *q, *t;
+ 	int did_something;
+ 
+@@ -497,6 +506,7 @@ static void wake_up_sem_queue_do(struct list_head *pt)
+ 	}
+ 	if (did_something)
+ 		preempt_enable();
++#endif
+ }
+ 
+ static void unlink_queue(struct sem_array *sma, struct sem_queue *q)

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0242-sysrq-Allow-immediate-Magic-SysRq-output-for-PREEMPT.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0242-sysrq-Allow-immediate-Magic-SysRq-output-for-PREEMPT.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0242-sysrq-Allow-immediate-Magic-SysRq-output-for-PREEMPT.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0242-sysrq-Allow-immediate-Magic-SysRq-output-for-PREEMPT.patch)
@@ -0,0 +1,154 @@
+From: Frank Rowand <frank.rowand at am.sony.com>
+Date: Fri, 23 Sep 2011 13:43:12 -0700
+Subject: [PATCH 242/371] sysrq: Allow immediate Magic SysRq output for
+ PREEMPT_RT_FULL
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fa48df972a5f4217742f282e262e4277ff63cc0a
+
+Add a CONFIG option to allow the output from Magic SysRq to be output
+immediately, even if this causes large latencies.
+
+If PREEMPT_RT_FULL, printk() will not try to acquire the console lock
+when interrupts or preemption are disabled.  If the console lock is
+not acquired the printk() output will be buffered, but will not be
+output immediately. Some drivers call into the Magic SysRq code
+with interrupts or preemption disabled, so the output of Magic SysRq
+will be buffered instead of printing immediately if this option is
+not selected.
+
+Even with this option selected, Magic SysRq output will be delayed
+if the attempt to acquire the console lock fails.
+
+Signed-off-by: Frank Rowand <frank.rowand at am.sony.com>
+Link: http://lkml.kernel.org/r/4E7CEF60.5020508@am.sony.com
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ drivers/tty/serial/cpm_uart/cpm_uart_core.c |  2 +-
+ drivers/tty/sysrq.c                         | 23 +++++++++++++++++++++++
+ include/linux/sysrq.h                       |  5 +++++
+ kernel/printk.c                             |  5 +++--
+ lib/Kconfig.debug                           | 22 ++++++++++++++++++++++
+ 5 files changed, 54 insertions(+), 3 deletions(-)
+
+--- a/drivers/tty/serial/cpm_uart/cpm_uart_core.c
++++ b/drivers/tty/serial/cpm_uart/cpm_uart_core.c
+@@ -1226,7 +1226,7 @@ static void cpm_uart_console_write(struct console *co, const char *s,
+ {
+ 	struct uart_cpm_port *pinfo = &cpm_uart_ports[co->index];
+ 	unsigned long flags;
+-	int nolock = oops_in_progress;
++	int nolock = oops_in_progress || sysrq_in_progress;
+ 
+ 	if (unlikely(nolock)) {
+ 		local_irq_save(flags);
+--- a/drivers/tty/sysrq.c
++++ b/drivers/tty/sysrq.c
+@@ -492,6 +492,23 @@ static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p)
+                 sysrq_key_table[i] = op_p;
+ }
+ 
++#ifdef CONFIG_MAGIC_SYSRQ_FORCE_PRINTK
++
++int sysrq_in_progress;
++
++static void set_sysrq_in_progress(int value)
++{
++	sysrq_in_progress = value;
++}
++
++#else
++
++static void set_sysrq_in_progress(int value)
++{
++}
++
++#endif
++
+ void __handle_sysrq(int key, bool check_mask)
+ {
+ 	struct sysrq_key_op *op_p;
+@@ -500,6 +517,9 @@ void __handle_sysrq(int key, bool check_mask)
+ 	unsigned long flags;
+ 
+ 	spin_lock_irqsave(&sysrq_key_table_lock, flags);
++
++	set_sysrq_in_progress(1);
++
+ 	/*
+ 	 * Raise the apparent loglevel to maximum so that the sysrq header
+ 	 * is shown to provide the user with positive feedback.  We do not
+@@ -541,6 +561,9 @@ void __handle_sysrq(int key, bool check_mask)
+ 		printk("\n");
+ 		console_loglevel = orig_log_level;
+ 	}
++
++	set_sysrq_in_progress(0);
++
+ 	spin_unlock_irqrestore(&sysrq_key_table_lock, flags);
+ }
+ 
+--- a/include/linux/sysrq.h
++++ b/include/linux/sysrq.h
+@@ -38,6 +38,11 @@ struct sysrq_key_op {
+ 	int enable_mask;
+ };
+ 
++#ifdef CONFIG_MAGIC_SYSRQ_FORCE_PRINTK
++extern int sysrq_in_progress;
++#else
++#define sysrq_in_progress 0
++#endif
+ #ifdef CONFIG_MAGIC_SYSRQ
+ 
+ /* Generic SysRq interface -- you may call it from any device driver, supplying
+--- a/kernel/printk.c
++++ b/kernel/printk.c
+@@ -21,6 +21,7 @@
+ #include <linux/tty.h>
+ #include <linux/tty_driver.h>
+ #include <linux/console.h>
++#include <linux/sysrq.h>
+ #include <linux/init.h>
+ #include <linux/jiffies.h>
+ #include <linux/nmi.h>
+@@ -845,8 +846,8 @@ static int console_trylock_for_printk(unsigned int cpu, unsigned long flags)
+ {
+ 	int retval = 0, wake = 0;
+ #ifdef CONFIG_PREEMPT_RT_FULL
+-	int lock = !early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
+-		!preempt_count();
++	int lock = (!early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
++		!preempt_count()) || sysrq_in_progress;
+ #else
+ 	int lock = 1;
+ #endif
+--- a/lib/Kconfig.debug
++++ b/lib/Kconfig.debug
+@@ -62,6 +62,28 @@ config MAGIC_SYSRQ
+ 	  Specifies the default mask for the allowed SysRq keys.  This can be
+ 	  used to disable several sensitive keys by default.
+ 
++config MAGIC_SYSRQ_FORCE_PRINTK
++	bool "Force printk from Magic SysRq"
++	depends on MAGIC_SYSRQ && PREEMPT_RT_FULL
++	default n
++	help
++	  Allow the output from Magic SysRq to be output immediately, even if
++	  this causes large latencies.  This can cause performance problems
++	  for real-time processes.
++
++	  If PREEMPT_RT_FULL, printk() will not try to acquire the console lock
++	  when interrupts or preemption are disabled.  If the console lock is
++	  not acquired the printk() output will be buffered, but will not be
++	  output immediately.  Some drivers call into the Magic SysRq code
++	  with interrupts or preemption disabled, so the output of Magic SysRq
++	  will be buffered instead of printing immediately if this option is
++	  not selected.
++
++	  Even with this option selected, Magic SysRq output will be delayed
++	  if the attempt to acquire the console lock fails.
++
++	  Don't say Y unless you really know what this hack does.
++
+ config STRIP_ASM_SYMS
+ 	bool "Strip assembler-generated symbols during link"
+ 	default n

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0243-x86-kvm-require-const-tsc-for-rt.patch.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0243-x86-kvm-require-const-tsc-for-rt.patch.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0243-x86-kvm-require-const-tsc-for-rt.patch.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0243-x86-kvm-require-const-tsc-for-rt.patch.patch)
@@ -0,0 +1,28 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Sun, 6 Nov 2011 12:26:18 +0100
+Subject: [PATCH 243/371] x86-kvm-require-const-tsc-for-rt.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=036cedabd6e39542faf5e594ac57ea4d3ee19e92
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ arch/x86/kvm/x86.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
+index bb179cc..03cd705 100644
+--- a/arch/x86/kvm/x86.c
++++ b/arch/x86/kvm/x86.c
+@@ -5231,6 +5231,13 @@ int kvm_arch_init(void *opaque)
+ 		goto out;
+ 	}
+ 
++#ifdef CONFIG_PREEMPT_RT_FULL
++	if (!boot_cpu_has(X86_FEATURE_CONSTANT_TSC)) {
++		printk(KERN_ERR "RT requires X86_FEATURE_CONSTANT_TSC\n");
++		return -EOPNOTSUPP;
++	}
++#endif
++
+ 	r = kvm_mmu_module_init();
+ 	if (r)
+ 		goto out;

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0244-scsi-fcoe-rt-aware.patch.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0244-scsi-fcoe-rt-aware.patch.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0244-scsi-fcoe-rt-aware.patch.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0244-scsi-fcoe-rt-aware.patch.patch)
@@ -0,0 +1,113 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Sat, 12 Nov 2011 14:00:48 +0100
+Subject: [PATCH 244/371] scsi-fcoe-rt-aware.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5ef52a759b06f910972167fe7cd4381ca6bbfcd6
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ drivers/scsi/fcoe/fcoe.c      | 16 ++++++++--------
+ drivers/scsi/fcoe/fcoe_ctlr.c |  4 ++--
+ drivers/scsi/libfc/fc_exch.c  |  4 ++--
+ 3 files changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
+index 8d67467..4085187 100644
+--- a/drivers/scsi/fcoe/fcoe.c
++++ b/drivers/scsi/fcoe/fcoe.c
+@@ -1156,7 +1156,7 @@ static void fcoe_percpu_thread_destroy(unsigned int cpu)
+ 	struct sk_buff *skb;
+ #ifdef CONFIG_SMP
+ 	struct fcoe_percpu_s *p0;
+-	unsigned targ_cpu = get_cpu();
++	unsigned targ_cpu = get_cpu_light();
+ #endif /* CONFIG_SMP */
+ 
+ 	FCOE_DBG("Destroying receive thread for CPU %d\n", cpu);
+@@ -1212,7 +1212,7 @@ static void fcoe_percpu_thread_destroy(unsigned int cpu)
+ 			kfree_skb(skb);
+ 		spin_unlock_bh(&p->fcoe_rx_list.lock);
+ 	}
+-	put_cpu();
++	put_cpu_light();
+ #else
+ 	/*
+ 	 * This a non-SMP scenario where the singular Rx thread is
+@@ -1435,11 +1435,11 @@ err2:
+ static int fcoe_alloc_paged_crc_eof(struct sk_buff *skb, int tlen)
+ {
+ 	struct fcoe_percpu_s *fps;
+-	int rc;
++	int rc, cpu = get_cpu_light();
+ 
+-	fps = &get_cpu_var(fcoe_percpu);
++	fps = &per_cpu(fcoe_percpu, cpu);
+ 	rc = fcoe_get_paged_crc_eof(skb, tlen, fps);
+-	put_cpu_var(fcoe_percpu);
++	put_cpu_light();
+ 
+ 	return rc;
+ }
+@@ -1680,7 +1680,7 @@ static void fcoe_recv_frame(struct sk_buff *skb)
+ 	 */
+ 	hp = (struct fcoe_hdr *) skb_network_header(skb);
+ 
+-	stats = per_cpu_ptr(lport->dev_stats, get_cpu());
++	stats = per_cpu_ptr(lport->dev_stats, get_cpu_light());
+ 	if (unlikely(FC_FCOE_DECAPS_VER(hp) != FC_FCOE_VER)) {
+ 		if (stats->ErrorFrames < 5)
+ 			printk(KERN_WARNING "fcoe: FCoE version "
+@@ -1712,13 +1712,13 @@ static void fcoe_recv_frame(struct sk_buff *skb)
+ 		goto drop;
+ 
+ 	if (!fcoe_filter_frames(lport, fp)) {
+-		put_cpu();
++		put_cpu_light();
+ 		fc_exch_recv(lport, fp);
+ 		return;
+ 	}
+ drop:
+ 	stats->ErrorFrames++;
+-	put_cpu();
++	put_cpu_light();
+ 	kfree_skb(skb);
+ }
+ 
+diff --git a/drivers/scsi/fcoe/fcoe_ctlr.c b/drivers/scsi/fcoe/fcoe_ctlr.c
+index e7522dc..bfb83c0 100644
+--- a/drivers/scsi/fcoe/fcoe_ctlr.c
++++ b/drivers/scsi/fcoe/fcoe_ctlr.c
+@@ -719,7 +719,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip)
+ 	unsigned long sel_time = 0;
+ 	struct fcoe_dev_stats *stats;
+ 
+-	stats = per_cpu_ptr(fip->lp->dev_stats, get_cpu());
++	stats = per_cpu_ptr(fip->lp->dev_stats, get_cpu_light());
+ 
+ 	list_for_each_entry_safe(fcf, next, &fip->fcfs, list) {
+ 		deadline = fcf->time + fcf->fka_period + fcf->fka_period / 2;
+@@ -752,7 +752,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip)
+ 				sel_time = fcf->time;
+ 		}
+ 	}
+-	put_cpu();
++	put_cpu_light();
+ 	if (sel_time && !fip->sel_fcf && !fip->sel_time) {
+ 		sel_time += msecs_to_jiffies(FCOE_CTLR_START_DELAY);
+ 		fip->sel_time = sel_time;
+diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c
+index 9de9db2..340998f 100644
+--- a/drivers/scsi/libfc/fc_exch.c
++++ b/drivers/scsi/libfc/fc_exch.c
+@@ -724,10 +724,10 @@ static struct fc_exch *fc_exch_em_alloc(struct fc_lport *lport,
+ 	}
+ 	memset(ep, 0, sizeof(*ep));
+ 
+-	cpu = get_cpu();
++	cpu = get_cpu_light();
+ 	pool = per_cpu_ptr(mp->pool, cpu);
+ 	spin_lock_bh(&pool->lock);
+-	put_cpu();
++	put_cpu_light();
+ 
+ 	/* peek cache of free slot */
+ 	if (pool->left != FC_XID_UNKNOWN) {

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0245-x86-crypto-Reduce-preempt-disabled-regions.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0245-x86-crypto-Reduce-preempt-disabled-regions.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0245-x86-crypto-Reduce-preempt-disabled-regions.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0245-x86-crypto-Reduce-preempt-disabled-regions.patch)
@@ -0,0 +1,115 @@
+From: Peter Zijlstra <peterz at infradead.org>
+Date: Mon, 14 Nov 2011 18:19:27 +0100
+Subject: [PATCH 245/371] x86: crypto: Reduce preempt disabled regions
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c2e765267cbb8d487b4ec5afb20fb57a75a74c5d
+
+Restrict the preempt disabled regions to the actual floating point
+operations and enable preemption for the administrative actions.
+
+This is necessary on RT to avoid that kfree and other operations are
+called with preemption disabled.
+
+Reported-and-tested-by: Carsten Emde <cbe at osadl.org>
+Signed-off-by: Peter Zijlstra <peterz at infradead.org>
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ arch/x86/crypto/aesni-intel_glue.c | 24 +++++++++++++-----------
+ 1 file changed, 13 insertions(+), 11 deletions(-)
+
+diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c
+index 16acf68..9667249 100644
+--- a/arch/x86/crypto/aesni-intel_glue.c
++++ b/arch/x86/crypto/aesni-intel_glue.c
+@@ -289,14 +289,14 @@ static int ecb_encrypt(struct blkcipher_desc *desc,
+ 	err = blkcipher_walk_virt(desc, &walk);
+ 	desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP;
+ 
+-	kernel_fpu_begin();
+ 	while ((nbytes = walk.nbytes)) {
++		kernel_fpu_begin();
+ 		aesni_ecb_enc(ctx, walk.dst.virt.addr, walk.src.virt.addr,
+-			      nbytes & AES_BLOCK_MASK);
++				nbytes & AES_BLOCK_MASK);
++		kernel_fpu_end();
+ 		nbytes &= AES_BLOCK_SIZE - 1;
+ 		err = blkcipher_walk_done(desc, &walk, nbytes);
+ 	}
+-	kernel_fpu_end();
+ 
+ 	return err;
+ }
+@@ -313,14 +313,14 @@ static int ecb_decrypt(struct blkcipher_desc *desc,
+ 	err = blkcipher_walk_virt(desc, &walk);
+ 	desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP;
+ 
+-	kernel_fpu_begin();
+ 	while ((nbytes = walk.nbytes)) {
++		kernel_fpu_begin();
+ 		aesni_ecb_dec(ctx, walk.dst.virt.addr, walk.src.virt.addr,
+ 			      nbytes & AES_BLOCK_MASK);
++		kernel_fpu_end();
+ 		nbytes &= AES_BLOCK_SIZE - 1;
+ 		err = blkcipher_walk_done(desc, &walk, nbytes);
+ 	}
+-	kernel_fpu_end();
+ 
+ 	return err;
+ }
+@@ -359,14 +359,14 @@ static int cbc_encrypt(struct blkcipher_desc *desc,
+ 	err = blkcipher_walk_virt(desc, &walk);
+ 	desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP;
+ 
+-	kernel_fpu_begin();
+ 	while ((nbytes = walk.nbytes)) {
++		kernel_fpu_begin();
+ 		aesni_cbc_enc(ctx, walk.dst.virt.addr, walk.src.virt.addr,
+ 			      nbytes & AES_BLOCK_MASK, walk.iv);
++		kernel_fpu_end();
+ 		nbytes &= AES_BLOCK_SIZE - 1;
+ 		err = blkcipher_walk_done(desc, &walk, nbytes);
+ 	}
+-	kernel_fpu_end();
+ 
+ 	return err;
+ }
+@@ -383,14 +383,14 @@ static int cbc_decrypt(struct blkcipher_desc *desc,
+ 	err = blkcipher_walk_virt(desc, &walk);
+ 	desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP;
+ 
+-	kernel_fpu_begin();
+ 	while ((nbytes = walk.nbytes)) {
++		kernel_fpu_begin();
+ 		aesni_cbc_dec(ctx, walk.dst.virt.addr, walk.src.virt.addr,
+ 			      nbytes & AES_BLOCK_MASK, walk.iv);
++		kernel_fpu_end();
+ 		nbytes &= AES_BLOCK_SIZE - 1;
+ 		err = blkcipher_walk_done(desc, &walk, nbytes);
+ 	}
+-	kernel_fpu_end();
+ 
+ 	return err;
+ }
+@@ -445,18 +445,20 @@ static int ctr_crypt(struct blkcipher_desc *desc,
+ 	err = blkcipher_walk_virt_block(desc, &walk, AES_BLOCK_SIZE);
+ 	desc->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP;
+ 
+-	kernel_fpu_begin();
+ 	while ((nbytes = walk.nbytes) >= AES_BLOCK_SIZE) {
++		kernel_fpu_begin();
+ 		aesni_ctr_enc(ctx, walk.dst.virt.addr, walk.src.virt.addr,
+ 			      nbytes & AES_BLOCK_MASK, walk.iv);
++		kernel_fpu_end();
+ 		nbytes &= AES_BLOCK_SIZE - 1;
+ 		err = blkcipher_walk_done(desc, &walk, nbytes);
+ 	}
+ 	if (walk.nbytes) {
++		kernel_fpu_begin();
+ 		ctr_crypt_final(ctx, &walk);
++		kernel_fpu_end();
+ 		err = blkcipher_walk_done(desc, &walk, 0);
+ 	}
+-	kernel_fpu_end();
+ 
+ 	return err;
+ }

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0246-dm-Make-rt-aware.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0246-dm-Make-rt-aware.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0246-dm-Make-rt-aware.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0246-dm-Make-rt-aware.patch)
@@ -0,0 +1,37 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Mon, 14 Nov 2011 23:06:09 +0100
+Subject: [PATCH 246/371] dm: Make rt aware
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6ec3ce3749cd4b5ab6c1f1b87a8f9871247efb82
+
+Use the BUG_ON_NORT variant for the irq_disabled() checks. RT has
+interrupts legitimately enabled here as we cant deadlock against the
+irq thread due to the "sleeping spinlocks" conversion.
+
+Reported-by: Luis Claudio R. Goncalves <lclaudio at uudg.org>
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ drivers/md/dm.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/md/dm.c b/drivers/md/dm.c
+index 7ead065..81ee8e0 100644
+--- a/drivers/md/dm.c
++++ b/drivers/md/dm.c
+@@ -1676,14 +1676,14 @@ static void dm_request_fn(struct request_queue *q)
+ 		if (map_request(ti, clone, md))
+ 			goto requeued;
+ 
+-		BUG_ON(!irqs_disabled());
++		BUG_ON_NONRT(!irqs_disabled());
+ 		spin_lock(q->queue_lock);
+ 	}
+ 
+ 	goto out;
+ 
+ requeued:
+-	BUG_ON(!irqs_disabled());
++	BUG_ON_NONRT(!irqs_disabled());
+ 	spin_lock(q->queue_lock);
+ 
+ delay_and_out:

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0247-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0247-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0247-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0247-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch)
@@ -0,0 +1,39 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 14 Dec 2011 01:03:49 +0100
+Subject: [PATCH 247/371] cpumask: Disable CONFIG_CPUMASK_OFFSTACK for RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ed3c9923dc6d1c39995be4f98fc1bddd36efe83b
+
+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.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ arch/x86/Kconfig | 2 +-
+ lib/Kconfig      | 1 +
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
+index 0b699d8..b04e65e 100644
+--- a/arch/x86/Kconfig
++++ b/arch/x86/Kconfig
+@@ -731,7 +731,7 @@ config IOMMU_HELPER
+ config MAXSMP
+ 	bool "Enable Maximum number of SMP Processors and NUMA Nodes"
+ 	depends on X86_64 && SMP && DEBUG_KERNEL && EXPERIMENTAL
+-	select CPUMASK_OFFSTACK
++	select CPUMASK_OFFSTACK if !PREEMPT_RT_FULL
+ 	---help---
+ 	  Enable maximum number of CPUS and NUMA Nodes for this architecture.
+ 	  If unsure, say N.
+diff --git a/lib/Kconfig b/lib/Kconfig
+index 32f3e5a..63d81e8 100644
+--- a/lib/Kconfig
++++ b/lib/Kconfig
+@@ -231,6 +231,7 @@ config CHECK_SIGNATURE
+ 
+ config CPUMASK_OFFSTACK
+ 	bool "Force CPU masks off stack" if DEBUG_PER_CPU_MAPS
++	depends on !PREEMPT_RT_FULL
+ 	help
+ 	  Use dynamic allocation for cpumask_var_t, instead of putting
+ 	  them on the stack.  This is a bit more expensive, but avoids

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0248-seqlock-Prevent-rt-starvation.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0248-seqlock-Prevent-rt-starvation.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0248-seqlock-Prevent-rt-starvation.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0248-seqlock-Prevent-rt-starvation.patch)
@@ -0,0 +1,168 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 22 Feb 2012 12:03:30 +0100
+Subject: [PATCH 248/371] seqlock: Prevent rt starvation
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7977521b9f16c8f063da34c10c781bc7aa734c9b
+
+If a low prio writer gets preempted while holding the seqlock write
+locked, a high prio reader spins forever on RT.
+
+To prevent this let the reader grab the spinlock, so it blocks and
+eventually boosts the writer. This way the writer can proceed and
+endless spinning is prevented.
+
+For seqcount writers we disable preemption over the update code
+path. Thaanks to Al Viro for distangling some VFS code to make that
+possible.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+---
+ include/linux/seqlock.h | 55 ++++++++++++++++++++++++++++++++++++++++---------
+ include/net/neighbour.h |  2 +-
+ 2 files changed, 46 insertions(+), 11 deletions(-)
+
+diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h
+index cc7b65d..4ea1409 100644
+--- a/include/linux/seqlock.h
++++ b/include/linux/seqlock.h
+@@ -125,18 +125,30 @@ static inline int read_seqcount_retry(const seqcount_t *s, unsigned start)
+  * Sequence counter only version assumes that callers are using their
+  * own mutexing.
+  */
+-static inline void write_seqcount_begin(seqcount_t *s)
++static inline void __write_seqcount_begin(seqcount_t *s)
+ {
+ 	s->sequence++;
+ 	smp_wmb();
+ }
+ 
+-static inline void write_seqcount_end(seqcount_t *s)
++static inline void write_seqcount_begin(seqcount_t *s)
++{
++	preempt_disable_rt();
++	__write_seqcount_begin(s);
++}
++
++static inline void __write_seqcount_end(seqcount_t *s)
+ {
+ 	smp_wmb();
+ 	s->sequence++;
+ }
+ 
++static inline void write_seqcount_end(seqcount_t *s)
++{
++	__write_seqcount_end(s);
++	preempt_enable_rt();
++}
++
+ /**
+  * write_seqcount_barrier - invalidate in-progress read-side seq operations
+  * @s: pointer to seqcount_t
+@@ -177,10 +189,33 @@ typedef struct {
+ /*
+  * Read side functions for starting and finalizing a read side section.
+  */
++#ifndef CONFIG_PREEMPT_RT_FULL
+ static inline unsigned read_seqbegin(const seqlock_t *sl)
+ {
+ 	return read_seqcount_begin(&sl->seqcount);
+ }
++#else
++/*
++ * Starvation safe read side for RT
++ */
++static inline unsigned read_seqbegin(seqlock_t *sl)
++{
++	unsigned ret;
++
++repeat:
++	ret = sl->seqcount.sequence;
++	if (unlikely(ret & 1)) {
++		/*
++		 * 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);
++		goto repeat;
++	}
++	return ret;
++}
++#endif
+ 
+ static inline unsigned read_seqretry(const seqlock_t *sl, unsigned start)
+ {
+@@ -195,36 +230,36 @@ static inline unsigned read_seqretry(const seqlock_t *sl, unsigned start)
+ static inline void write_seqlock(seqlock_t *sl)
+ {
+ 	spin_lock(&sl->lock);
+-	write_seqcount_begin(&sl->seqcount);
++	__write_seqcount_begin(&sl->seqcount);
+ }
+ 
+ static inline void write_sequnlock(seqlock_t *sl)
+ {
+-	write_seqcount_end(&sl->seqcount);
++	__write_seqcount_end(&sl->seqcount);
+ 	spin_unlock(&sl->lock);
+ }
+ 
+ static inline void write_seqlock_bh(seqlock_t *sl)
+ {
+ 	spin_lock_bh(&sl->lock);
+-	write_seqcount_begin(&sl->seqcount);
++	__write_seqcount_begin(&sl->seqcount);
+ }
+ 
+ static inline void write_sequnlock_bh(seqlock_t *sl)
+ {
+-	write_seqcount_end(&sl->seqcount);
++	__write_seqcount_end(&sl->seqcount);
+ 	spin_unlock_bh(&sl->lock);
+ }
+ 
+ static inline void write_seqlock_irq(seqlock_t *sl)
+ {
+ 	spin_lock_irq(&sl->lock);
+-	write_seqcount_begin(&sl->seqcount);
++	__write_seqcount_begin(&sl->seqcount);
+ }
+ 
+ static inline void write_sequnlock_irq(seqlock_t *sl)
+ {
+-	write_seqcount_end(&sl->seqcount);
++	__write_seqcount_end(&sl->seqcount);
+ 	spin_unlock_irq(&sl->lock);
+ }
+ 
+@@ -233,7 +268,7 @@ static inline unsigned long __write_seqlock_irqsave(seqlock_t *sl)
+ 	unsigned long flags;
+ 
+ 	spin_lock_irqsave(&sl->lock, flags);
+-	write_seqcount_begin(&sl->seqcount);
++	__write_seqcount_begin(&sl->seqcount);
+ 	return flags;
+ }
+ 
+@@ -243,7 +278,7 @@ static inline unsigned long __write_seqlock_irqsave(seqlock_t *sl)
+ static inline void
+ write_sequnlock_irqrestore(seqlock_t *sl, unsigned long flags)
+ {
+-	write_seqcount_end(&sl->seqcount);
++	__write_seqcount_end(&sl->seqcount);
+ 	spin_unlock_irqrestore(&sl->lock, flags);
+ }
+ 
+diff --git a/include/net/neighbour.h b/include/net/neighbour.h
+index 2720884..6fda9fa 100644
+--- a/include/net/neighbour.h
++++ b/include/net/neighbour.h
+@@ -385,7 +385,7 @@ struct neighbour_cb {
+ 
+ #define NEIGH_CB(skb)	((struct neighbour_cb *)(skb)->cb)
+ 
+-static inline void neigh_ha_snapshot(char *dst, const struct neighbour *n,
++static inline void neigh_ha_snapshot(char *dst, struct neighbour *n,
+ 				     const struct net_device *dev)
+ {
+ 	unsigned int seq;

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0249-timer-Fix-hotplug-for-rt.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0249-timer-Fix-hotplug-for-rt.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0249-timer-Fix-hotplug-for-rt.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0249-timer-Fix-hotplug-for-rt.patch)
@@ -0,0 +1,73 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Thu, 1 Mar 2012 13:55:28 -0500
+Subject: [PATCH 249/371] timer: Fix hotplug for -rt
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f2fdcc2d5b1c8cb85af193a7d6a937e9f4137af9
+
+Revert the RT patch:
+    Author: Ingo Molnar <mingo at elte.hu>
+    Date:   Fri Jul 3 08:30:32 2009 -0500
+    timers: fix timer hotplug on -rt
+
+    Here we are in the CPU_DEAD notifier, and we must not sleep nor
+    enable interrupts.
+
+There's no problem with sleeping in this notifier.
+
+But the get_cpu_var() had to be converted to a get_local_var().
+
+Replace the previous fix with the get_local_var() convert.
+
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+Cc: Carsten Emde <C.Emde at osadl.org>
+Cc: John Kacur <jkacur at redhat.com>
+Cc: Peter Zijlstra <peterz at infradead.org>
+Cc: Clark Williams <clark.williams at gmail.com>
+Cc: stable-rt at vger.kernel.org
+Link: http://lkml.kernel.org/r/20120301190344.948157137@goodmis.org
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ kernel/timer.c | 16 +++++-----------
+ 1 file changed, 5 insertions(+), 11 deletions(-)
+
+diff --git a/kernel/timer.c b/kernel/timer.c
+index be22b3c..330565b 100644
+--- a/kernel/timer.c
++++ b/kernel/timer.c
+@@ -1746,21 +1746,17 @@ static void __cpuinit migrate_timers(int cpu)
+ {
+ 	struct tvec_base *old_base;
+ 	struct tvec_base *new_base;
+-	unsigned long flags;
+ 	int i;
+ 
+ 	BUG_ON(cpu_online(cpu));
+ 	old_base = per_cpu(tvec_bases, cpu);
+-	new_base = get_cpu_var(tvec_bases);
++	new_base = get_local_var(tvec_bases);
+ 	/*
+ 	 * The caller is globally serialized and nobody else
+ 	 * takes two locks at once, deadlock is not possible.
+ 	 */
+-	local_irq_save(flags);
+-	while (!spin_trylock(&new_base->lock))
+-		cpu_relax();
+-	while (!spin_trylock(&old_base->lock))
+-		cpu_relax();
++	spin_lock_irq(&new_base->lock);
++	spin_lock_nested(&old_base->lock, SINGLE_DEPTH_NESTING);
+ 
+ 	BUG_ON(old_base->running_timer);
+ 
+@@ -1774,10 +1770,8 @@ static void __cpuinit migrate_timers(int cpu)
+ 	}
+ 
+ 	spin_unlock(&old_base->lock);
+-	spin_unlock(&new_base->lock);
+-	local_irq_restore(flags);
+-
+-	put_cpu_var(tvec_bases);
++	spin_unlock_irq(&new_base->lock);
++	put_local_var(tvec_bases);
+ }
+ #endif /* CONFIG_HOTPLUG_CPU */
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0250-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0250-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0250-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0250-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch)
@@ -0,0 +1,45 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Thu, 1 Mar 2012 13:55:29 -0500
+Subject: [PATCH 250/371] futex/rt: Fix possible lockup when taking pi_lock in
+ proxy handler
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6d266e5913d8f99e10c52a083c0f25550a6d8e3e
+
+When taking the pi_lock, we must disable interrupts because the
+pi_lock can also be taken in an interrupt handler.
+
+Use raw_spin_lock_irq() instead of raw_spin_lock().
+
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+Cc: Carsten Emde <C.Emde at osadl.org>
+Cc: John Kacur <jkacur at redhat.com>
+Cc: Peter Zijlstra <peterz at infradead.org>
+Cc: Clark Williams <clark.williams at gmail.com>
+Cc: stable-rt at vger.kernel.org
+Link: http://lkml.kernel.org/r/20120301190345.165160680@goodmis.org
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ kernel/rtmutex.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index 441b7ef..01284ca 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -1582,14 +1582,14 @@ int rt_mutex_start_proxy_lock(struct rt_mutex *lock,
+ 	 * PI_REQUEUE_INPROGRESS, so that if the task is waking up
+ 	 * it will know that we are in the process of requeuing it.
+ 	 */
+-	raw_spin_lock(&task->pi_lock);
++	raw_spin_lock_irq(&task->pi_lock);
+ 	if (task->pi_blocked_on) {
+-		raw_spin_unlock(&task->pi_lock);
++		raw_spin_unlock_irq(&task->pi_lock);
+ 		raw_spin_unlock(&lock->wait_lock);
+ 		return -EAGAIN;
+ 	}
+ 	task->pi_blocked_on = PI_REQUEUE_INPROGRESS;
+-	raw_spin_unlock(&task->pi_lock);
++	raw_spin_unlock_irq(&task->pi_lock);
+ #endif
+ 
+ 	/* We enforce deadlock detection for futexes */

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0251-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0251-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0251-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0251-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch)
@@ -0,0 +1,35 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Thu, 1 Mar 2012 13:55:32 -0500
+Subject: [PATCH 251/371] ring-buffer/rt: Check for irqs disabled before
+ grabbing reader lock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3dfa1de0902d46146c97f5e451078c51ccccac22
+
+In RT the reader lock is a mutex and we can not grab it when preemption is
+disabled. The in_atomic() check that is there does not check if irqs are
+disabled. Add that check as well.
+
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+Cc: Carsten Emde <C.Emde at osadl.org>
+Cc: John Kacur <jkacur at redhat.com>
+Cc: Peter Zijlstra <peterz at infradead.org>
+Cc: Clark Williams <clark.williams at gmail.com>
+Cc: stable-rt at vger.kernel.org
+Link: http://lkml.kernel.org/r/20120301190345.786365803@goodmis.org
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ kernel/trace/ring_buffer.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
+index aa41914..f3856c2 100644
+--- a/kernel/trace/ring_buffer.c
++++ b/kernel/trace/ring_buffer.c
+@@ -1054,7 +1054,7 @@ static inline int ok_to_lock(void)
+ 	if (in_nmi())
+ 		return 0;
+ #ifdef CONFIG_PREEMPT_RT_FULL
+-	if (in_atomic())
++	if (in_atomic() || irqs_disabled())
+ 		return 0;
+ #endif
+ 	return 1;

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0252-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0252-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0252-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0252-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch)
@@ -0,0 +1,50 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Thu, 1 Mar 2012 13:55:33 -0500
+Subject: [PATCH 252/371] sched/rt: Fix wait_task_interactive() to test
+ rt_spin_lock state
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=713023834131ed9e93762cc9db198842088aecd5
+
+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 <rostedt at goodmis.org>
+Cc: Carsten Emde <C.Emde at osadl.org>
+Cc: John Kacur <jkacur at redhat.com>
+Cc: Peter Zijlstra <peterz at infradead.org>
+Cc: Clark Williams <clark.williams at gmail.com>
+Cc: stable-rt at vger.kernel.org
+Link: http://lkml.kernel.org/r/20120301190345.979435764@goodmis.org
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ kernel/sched.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/kernel/sched.c b/kernel/sched.c
+index 1e33a8a..4eea5da 100644
+--- a/kernel/sched.c
++++ b/kernel/sched.c
+@@ -2450,7 +2450,8 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state)
+ 		 * 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();
+ 		}
+@@ -2465,7 +2466,8 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state)
+ 		running = task_running(rq, p);
+ 		on_rq = p->on_rq;
+ 		ncsw = 0;
+-		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);
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0253-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0253-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0253-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0253-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch)
@@ -0,0 +1,109 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Thu, 1 Mar 2012 13:55:30 -0500
+Subject: [PATCH 253/371] lglock/rt: Use non-rt for_each_cpu() in -rt code
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=31de6ffe05ee8c78795baff36f0bd24f5ea1588c
+
+Currently the RT version of the lglocks() does a for_each_online_cpu()
+in the name##_global_lock_online() functions. Non-rt uses its own
+mask for this, and for good reason.
+
+A task may grab a *_global_lock_online(), and in the mean time, one
+of the CPUs goes offline. Now when that task does a *_global_unlock_online()
+it releases all the locks *except* the one that went offline.
+
+Now if that CPU were to come back on line, its lock is now owned by a
+task that never released it when it should have.
+
+This causes all sorts of fun errors. Like owners of a lock no longer
+existing, or sleeping on IO, waiting to be woken up by a task that
+happens to be blocked on the lock it never released.
+
+Convert the RT versions to use the lglock specific cpumasks. As once
+a CPU comes on line, the mask is set, and never cleared even when the
+CPU goes offline. The locks for that CPU will still be taken and released.
+
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+Cc: Carsten Emde <C.Emde at osadl.org>
+Cc: John Kacur <jkacur at redhat.com>
+Cc: Peter Zijlstra <peterz at infradead.org>
+Cc: Clark Williams <clark.williams at gmail.com>
+Cc: stable-rt at vger.kernel.org
+Link: http://lkml.kernel.org/r/20120301190345.374756214@goodmis.org
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ include/linux/lglock.h | 35 ++++++++++++++++++++++++++++++++---
+ 1 file changed, 32 insertions(+), 3 deletions(-)
+
+diff --git a/include/linux/lglock.h b/include/linux/lglock.h
+index 52b289f..cdfcef3 100644
+--- a/include/linux/lglock.h
++++ b/include/linux/lglock.h
+@@ -203,9 +203,31 @@
+ #else /* !PREEMPT_RT_FULL */
+ #define DEFINE_LGLOCK(name)						\
+ 									\
+- DEFINE_PER_CPU(struct rt_mutex, name##_lock);					\
++ DEFINE_PER_CPU(struct rt_mutex, name##_lock);				\
++ DEFINE_SPINLOCK(name##_cpu_lock);					\
++ cpumask_t name##_cpus __read_mostly;					\
+  DEFINE_LGLOCK_LOCKDEP(name);						\
+ 									\
++ static int								\
++ name##_lg_cpu_callback(struct notifier_block *nb,			\
++				unsigned long action, void *hcpu)	\
++ {									\
++	switch (action & ~CPU_TASKS_FROZEN) {				\
++	case CPU_UP_PREPARE:						\
++		spin_lock(&name##_cpu_lock);				\
++		cpu_set((unsigned long)hcpu, name##_cpus);		\
++		spin_unlock(&name##_cpu_lock);				\
++		break;							\
++	case CPU_UP_CANCELED: case CPU_DEAD:				\
++		spin_lock(&name##_cpu_lock);				\
++		cpu_clear((unsigned long)hcpu, name##_cpus);		\
++		spin_unlock(&name##_cpu_lock);				\
++	}								\
++	return NOTIFY_OK;						\
++ }									\
++ static struct notifier_block name##_lg_cpu_notifier = {		\
++	.notifier_call = name##_lg_cpu_callback,			\
++ };									\
+  void name##_lock_init(void) {						\
+ 	int i;								\
+ 	LOCKDEP_INIT_MAP(&name##_lock_dep_map, #name, &name##_lock_key, 0); \
+@@ -214,6 +236,11 @@
+ 		lock = &per_cpu(name##_lock, i);			\
+ 		rt_mutex_init(lock);					\
+ 	}								\
++	register_hotcpu_notifier(&name##_lg_cpu_notifier);		\
++	get_online_cpus();						\
++	for_each_online_cpu(i)						\
++		cpu_set(i, name##_cpus);				\
++	put_online_cpus();						\
+  }									\
+  EXPORT_SYMBOL(name##_lock_init);					\
+ 									\
+@@ -254,7 +281,8 @@
+  void name##_global_lock_online(void) {					\
+ 	int i;								\
+ 	rwlock_acquire(&name##_lock_dep_map, 0, 0, _RET_IP_);		\
+-	for_each_online_cpu(i) {					\
++	spin_lock(&name##_cpu_lock);					\
++	for_each_cpu(i, &name##_cpus) {					\
+ 		struct rt_mutex *lock;					\
+ 		lock = &per_cpu(name##_lock, i);			\
+ 		__rt_spin_lock(lock);					\
+@@ -265,11 +293,12 @@
+  void name##_global_unlock_online(void) {				\
+ 	int i;								\
+ 	rwlock_release(&name##_lock_dep_map, 1, _RET_IP_);		\
+-	for_each_online_cpu(i) {					\
++	for_each_cpu(i, &name##_cpus) {					\
+ 		struct rt_mutex *lock;					\
+ 		lock = &per_cpu(name##_lock, i);			\
+ 		__rt_spin_unlock(lock);					\
+ 	}								\
++	spin_unlock(&name##_cpu_lock);					\
+  }									\
+  EXPORT_SYMBOL(name##_global_unlock_online);				\
+ 									\

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0254-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0254-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0254-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0254-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch)
@@ -0,0 +1,124 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Fri, 2 Mar 2012 10:36:57 -0500
+Subject: [PATCH 254/371] cpu: Make hotplug.lock a "sleeping" spinlock on RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8cad519c3283afe3b45572e298ab966f36e8932d
+
+Tasks can block on hotplug.lock in pin_current_cpu(), but their state
+might be != RUNNING. So the mutex wakeup will set the state
+unconditionally to RUNNING. That might cause spurious unexpected
+wakeups. We could provide a state preserving mutex_lock() function,
+but this is semantically backwards. So instead we convert the
+hotplug.lock() to a spinlock for RT, which has the state preserving
+semantics already.
+
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+Cc: Carsten Emde <C.Emde at osadl.org>
+Cc: John Kacur <jkacur at redhat.com>
+Cc: Peter Zijlstra <peterz at infradead.org>
+Cc: Clark Williams <clark.williams at gmail.com>
+Cc: stable-rt at vger.kernel.org
+Link: http://lkml.kernel.org/r/1330702617.25686.265.camel@gandalf.stny.rr.com
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ kernel/cpu.c | 35 ++++++++++++++++++++++++++---------
+ 1 file changed, 26 insertions(+), 9 deletions(-)
+
+diff --git a/kernel/cpu.c b/kernel/cpu.c
+index 8fffbca..6ac3019 100644
+--- a/kernel/cpu.c
++++ b/kernel/cpu.c
+@@ -46,7 +46,12 @@ static int cpu_hotplug_disabled;
+ 
+ static struct {
+ 	struct task_struct *active_writer;
++#ifdef CONFIG_PREEMPT_RT_FULL
++	/* Makes the lock keep the task's state */
++	spinlock_t lock;
++#else
+ 	struct mutex lock; /* Synchronizes accesses to refcount, */
++#endif
+ 	/*
+ 	 * Also blocks the new readers during
+ 	 * an ongoing cpu hotplug operation.
+@@ -54,10 +59,22 @@ static struct {
+ 	int refcount;
+ } cpu_hotplug = {
+ 	.active_writer = NULL,
++#ifdef CONFIG_PREEMPT_RT_FULL
++	.lock = __SPIN_LOCK_UNLOCKED(cpu_hotplug.lock),
++#else
+ 	.lock = __MUTEX_INITIALIZER(cpu_hotplug.lock),
++#endif
+ 	.refcount = 0,
+ };
+ 
++#ifdef CONFIG_PREEMPT_RT_FULL
++# define hotplug_lock() rt_spin_lock(&cpu_hotplug.lock)
++# define hotplug_unlock() rt_spin_unlock(&cpu_hotplug.lock)
++#else
++# define hotplug_lock() mutex_lock(&cpu_hotplug.lock)
++# define hotplug_unlock() mutex_unlock(&cpu_hotplug.lock)
++#endif
++
+ struct hotplug_pcp {
+ 	struct task_struct *unplug;
+ 	int refcount;
+@@ -87,8 +104,8 @@ retry:
+ 		return;
+ 	}
+ 	preempt_enable();
+-	mutex_lock(&cpu_hotplug.lock);
+-	mutex_unlock(&cpu_hotplug.lock);
++	hotplug_lock();
++	hotplug_unlock();
+ 	preempt_disable();
+ 	goto retry;
+ }
+@@ -161,9 +178,9 @@ void get_online_cpus(void)
+ 	might_sleep();
+ 	if (cpu_hotplug.active_writer == current)
+ 		return;
+-	mutex_lock(&cpu_hotplug.lock);
++	hotplug_lock();
+ 	cpu_hotplug.refcount++;
+-	mutex_unlock(&cpu_hotplug.lock);
++	hotplug_unlock();
+ 
+ }
+ EXPORT_SYMBOL_GPL(get_online_cpus);
+@@ -172,10 +189,10 @@ void put_online_cpus(void)
+ {
+ 	if (cpu_hotplug.active_writer == current)
+ 		return;
+-	mutex_lock(&cpu_hotplug.lock);
++	hotplug_lock();
+ 	if (!--cpu_hotplug.refcount && unlikely(cpu_hotplug.active_writer))
+ 		wake_up_process(cpu_hotplug.active_writer);
+-	mutex_unlock(&cpu_hotplug.lock);
++	hotplug_unlock();
+ 
+ }
+ EXPORT_SYMBOL_GPL(put_online_cpus);
+@@ -207,11 +224,11 @@ static void cpu_hotplug_begin(void)
+ 	cpu_hotplug.active_writer = current;
+ 
+ 	for (;;) {
+-		mutex_lock(&cpu_hotplug.lock);
++		hotplug_lock();
+ 		if (likely(!cpu_hotplug.refcount))
+ 			break;
+ 		__set_current_state(TASK_UNINTERRUPTIBLE);
+-		mutex_unlock(&cpu_hotplug.lock);
++		hotplug_unlock();
+ 		schedule();
+ 	}
+ }
+@@ -219,7 +236,7 @@ static void cpu_hotplug_begin(void)
+ static void cpu_hotplug_done(void)
+ {
+ 	cpu_hotplug.active_writer = NULL;
+-	mutex_unlock(&cpu_hotplug.lock);
++	hotplug_unlock();
+ }
+ 
+ /*

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0255-softirq-Check-preemption-after-reenabling-interrupts.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0255-softirq-Check-preemption-after-reenabling-interrupts.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0255-softirq-Check-preemption-after-reenabling-interrupts.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0255-softirq-Check-preemption-after-reenabling-interrupts.patch)
@@ -0,0 +1,154 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Sun, 13 Nov 2011 17:17:09 +0100
+Subject: [PATCH 255/371] softirq: Check preemption after reenabling interrupts
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f65c27d34b573aa469c88b48dfe7b8f46cdee17e
+
+raise_softirq_irqoff() disables interrupts and wakes the softirq
+daemon, but after reenabling interrupts there is no preemption check,
+so the execution of the softirq thread might be delayed arbitrarily.
+
+In principle we could add that check to local_irq_enable/restore, but
+that's overkill as the rasie_softirq_irqoff() sections are the only
+ones which show this behaviour.
+
+Reported-by: Carsten Emde <cbe at osadl.org>
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+---
+ block/blk-iopoll.c      | 3 +++
+ block/blk-softirq.c     | 3 +++
+ include/linux/preempt.h | 3 +++
+ net/core/dev.c          | 6 ++++++
+ 4 files changed, 15 insertions(+)
+
+diff --git a/block/blk-iopoll.c b/block/blk-iopoll.c
+index 58916af..f7ca9b4 100644
+--- a/block/blk-iopoll.c
++++ b/block/blk-iopoll.c
+@@ -38,6 +38,7 @@ void blk_iopoll_sched(struct blk_iopoll *iop)
+ 	list_add_tail(&iop->list, &__get_cpu_var(blk_cpu_iopoll));
+ 	__raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ);
+ 	local_irq_restore(flags);
++	preempt_check_resched_rt();
+ }
+ EXPORT_SYMBOL(blk_iopoll_sched);
+ 
+@@ -135,6 +136,7 @@ static void blk_iopoll_softirq(struct softirq_action *h)
+ 		__raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ);
+ 
+ 	local_irq_enable();
++	preempt_check_resched_rt();
+ }
+ 
+ /**
+@@ -204,6 +206,7 @@ static int __cpuinit blk_iopoll_cpu_notify(struct notifier_block *self,
+ 				 &__get_cpu_var(blk_cpu_iopoll));
+ 		__raise_softirq_irqoff(BLOCK_IOPOLL_SOFTIRQ);
+ 		local_irq_enable();
++		preempt_check_resched_rt();
+ 	}
+ 
+ 	return NOTIFY_OK;
+diff --git a/block/blk-softirq.c b/block/blk-softirq.c
+index 1366a89..60a88ab 100644
+--- a/block/blk-softirq.c
++++ b/block/blk-softirq.c
+@@ -50,6 +50,7 @@ static void trigger_softirq(void *data)
+ 		raise_softirq_irqoff(BLOCK_SOFTIRQ);
+ 
+ 	local_irq_restore(flags);
++	preempt_check_resched_rt();
+ }
+ 
+ /*
+@@ -92,6 +93,7 @@ static int __cpuinit blk_cpu_notify(struct notifier_block *self,
+ 				 &__get_cpu_var(blk_cpu_done));
+ 		raise_softirq_irqoff(BLOCK_SOFTIRQ);
+ 		local_irq_enable();
++		preempt_check_resched_rt();
+ 	}
+ 
+ 	return NOTIFY_OK;
+@@ -150,6 +152,7 @@ do_local:
+ 		goto do_local;
+ 
+ 	local_irq_restore(flags);
++	preempt_check_resched_rt();
+ }
+ 
+ /**
+diff --git a/include/linux/preempt.h b/include/linux/preempt.h
+index 49bd6c7..53c9382 100644
+--- a/include/linux/preempt.h
++++ b/include/linux/preempt.h
+@@ -56,8 +56,10 @@ do { \
+ 
+ #ifndef CONFIG_PREEMPT_RT_BASE
+ # define preempt_enable_no_resched()	__preempt_enable_no_resched()
++# define preempt_check_resched_rt()	do { } while (0)
+ #else
+ # define preempt_enable_no_resched()	preempt_enable()
++# define preempt_check_resched_rt()	preempt_check_resched()
+ #endif
+ 
+ #define preempt_enable() \
+@@ -111,6 +113,7 @@ do { \
+ #define preempt_disable_notrace()		barrier()
+ #define preempt_enable_no_resched_notrace()	barrier()
+ #define preempt_enable_notrace()		barrier()
++#define preempt_check_resched_rt()	do { } while (0)
+ 
+ #endif /* CONFIG_PREEMPT_COUNT */
+ 
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 4615283..21a3d4a 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -1821,6 +1821,7 @@ static inline void __netif_reschedule(struct Qdisc *q)
+ 	sd->output_queue_tailp = &q->next_sched;
+ 	raise_softirq_irqoff(NET_TX_SOFTIRQ);
+ 	local_irq_restore(flags);
++	preempt_check_resched_rt();
+ }
+ 
+ void __netif_schedule(struct Qdisc *q)
+@@ -1842,6 +1843,7 @@ void dev_kfree_skb_irq(struct sk_buff *skb)
+ 		sd->completion_queue = skb;
+ 		raise_softirq_irqoff(NET_TX_SOFTIRQ);
+ 		local_irq_restore(flags);
++		preempt_check_resched_rt();
+ 	}
+ }
+ EXPORT_SYMBOL(dev_kfree_skb_irq);
+@@ -2971,6 +2973,7 @@ enqueue:
+ 	rps_unlock(sd);
+ 
+ 	local_irq_restore(flags);
++	preempt_check_resched_rt();
+ 
+ 	atomic_long_inc(&skb->dev->rx_dropped);
+ 	kfree_skb(skb);
+@@ -3803,6 +3806,7 @@ static void net_rps_action_and_irq_enable(struct softnet_data *sd)
+ 	} else
+ #endif
+ 		local_irq_enable();
++	preempt_check_resched_rt();
+ }
+ 
+ static int process_backlog(struct napi_struct *napi, int quota)
+@@ -3875,6 +3879,7 @@ void __napi_schedule(struct napi_struct *n)
+ 	local_irq_save(flags);
+ 	____napi_schedule(&__get_cpu_var(softnet_data), n);
+ 	local_irq_restore(flags);
++	preempt_check_resched_rt();
+ }
+ EXPORT_SYMBOL(__napi_schedule);
+ 
+@@ -6386,6 +6391,7 @@ static int dev_cpu_callback(struct notifier_block *nfb,
+ 
+ 	raise_softirq_irqoff(NET_TX_SOFTIRQ);
+ 	local_irq_enable();
++	preempt_check_resched_rt();
+ 
+ 	/* Process offline CPU's input_pkt_queue */
+ 	while ((skb = __skb_dequeue(&oldsd->process_queue))) {

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0256-rt-Introduce-cpu_chill.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0256-rt-Introduce-cpu_chill.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0256-rt-Introduce-cpu_chill.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0256-rt-Introduce-cpu_chill.patch)
@@ -0,0 +1,31 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 7 Mar 2012 20:51:03 +0100
+Subject: [PATCH 256/371] rt: Introduce cpu_chill()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b435f7fbed5fa57d5a5025271a09267f73d0b94f
+
+Retry loops on RT might loop forever when the modifying side was
+preempted. Add cpu_chill() to replace cpu_relax(). cpu_chill()
+defaults to cpu_relax() for non RT. On RT it puts the looping task to
+sleep for a tick so the preempted task can make progress.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+---
+ include/linux/delay.h | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/include/linux/delay.h b/include/linux/delay.h
+index a6ecb34..e23a7c0 100644
+--- a/include/linux/delay.h
++++ b/include/linux/delay.h
+@@ -52,4 +52,10 @@ static inline void ssleep(unsigned int seconds)
+ 	msleep(seconds * 1000);
+ }
+ 
++#ifdef CONFIG_PREEMPT_RT_FULL
++# define cpu_chill()	msleep(1)
++#else
++# define cpu_chill()	cpu_relax()
++#endif
++
+ #endif /* defined(_LINUX_DELAY_H) */

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0257-fs-dcache-Use-cpu_chill-in-trylock-loops.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0257-fs-dcache-Use-cpu_chill-in-trylock-loops.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0257-fs-dcache-Use-cpu_chill-in-trylock-loops.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0257-fs-dcache-Use-cpu_chill-in-trylock-loops.patch)
@@ -0,0 +1,103 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 7 Mar 2012 21:00:34 +0100
+Subject: [PATCH 257/371] fs: dcache: Use cpu_chill() in trylock loops
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7be3339eef074b8bd31b0d8b4fd483c1a8b72784
+
+Retry loops on RT might loop forever when the modifying side was
+preempted. Use cpu_chill() instead of cpu_relax() to let the system
+make progress.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+---
+ fs/autofs4/autofs_i.h | 1 +
+ fs/autofs4/expire.c   | 2 +-
+ fs/dcache.c           | 7 ++++---
+ fs/namespace.c        | 3 ++-
+ 4 files changed, 8 insertions(+), 5 deletions(-)
+
+diff --git a/fs/autofs4/autofs_i.h b/fs/autofs4/autofs_i.h
+index 650d520..fb77639 100644
+--- a/fs/autofs4/autofs_i.h
++++ b/fs/autofs4/autofs_i.h
+@@ -34,6 +34,7 @@
+ #include <linux/sched.h>
+ #include <linux/mount.h>
+ #include <linux/namei.h>
++#include <linux/delay.h>
+ #include <asm/current.h>
+ #include <asm/uaccess.h>
+ 
+diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c
+index 7fc0371..eb63fb7 100644
+--- a/fs/autofs4/expire.c
++++ b/fs/autofs4/expire.c
+@@ -161,7 +161,7 @@ again:
+ 			parent = p->d_parent;
+ 			if (!spin_trylock(&parent->d_lock)) {
+ 				spin_unlock(&p->d_lock);
+-				cpu_relax();
++				cpu_chill();
+ 				goto relock;
+ 			}
+ 			spin_unlock(&p->d_lock);
+diff --git a/fs/dcache.c b/fs/dcache.c
+index 8bc98af..cc254e3 100644
+--- a/fs/dcache.c
++++ b/fs/dcache.c
+@@ -37,6 +37,7 @@
+ #include <linux/rculist_bl.h>
+ #include <linux/prefetch.h>
+ #include <linux/ratelimit.h>
++#include <linux/delay.h>
+ #include "internal.h"
+ 
+ /*
+@@ -410,7 +411,7 @@ static inline struct dentry *dentry_kill(struct dentry *dentry, int ref)
+ 	if (inode && !spin_trylock(&inode->i_lock)) {
+ relock:
+ 		spin_unlock(&dentry->d_lock);
+-		cpu_relax();
++		cpu_chill();
+ 		return dentry; /* try again with same dentry */
+ 	}
+ 	if (IS_ROOT(dentry))
+@@ -796,7 +797,7 @@ relock:
+ 
+ 		if (!spin_trylock(&dentry->d_lock)) {
+ 			spin_unlock(&dcache_lru_lock);
+-			cpu_relax();
++			cpu_chill();
+ 			goto relock;
+ 		}
+ 
+@@ -1989,7 +1990,7 @@ again:
+ 	if (dentry->d_count == 1) {
+ 		if (inode && !spin_trylock(&inode->i_lock)) {
+ 			spin_unlock(&dentry->d_lock);
+-			cpu_relax();
++			cpu_chill();
+ 			goto again;
+ 		}
+ 		dentry->d_flags &= ~DCACHE_CANT_MOUNT;
+diff --git a/fs/namespace.c b/fs/namespace.c
+index d46980a..060c0a0 100644
+--- a/fs/namespace.c
++++ b/fs/namespace.c
+@@ -31,6 +31,7 @@
+ #include <linux/idr.h>
+ #include <linux/fs_struct.h>
+ #include <linux/fsnotify.h>
++#include <linux/delay.h>
+ #include <asm/uaccess.h>
+ #include <asm/unistd.h>
+ #include "pnode.h"
+@@ -346,7 +347,7 @@ int mnt_want_write(struct vfsmount *mnt)
+ 	 */
+ 	while (mnt->mnt_flags & MNT_WRITE_HOLD) {
+ 		preempt_enable();
+-		cpu_relax();
++		cpu_chill();
+ 		preempt_disable();
+ 	}
+ 	/*

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0258-net-Use-cpu_chill-instead-of-cpu_relax.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0258-net-Use-cpu_chill-instead-of-cpu_relax.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0258-net-Use-cpu_chill-instead-of-cpu_relax.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0258-net-Use-cpu_chill-instead-of-cpu_relax.patch)
@@ -0,0 +1,67 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 7 Mar 2012 21:10:04 +0100
+Subject: [PATCH 258/371] net: Use cpu_chill() instead of cpu_relax()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7d3b2cba4587635030d745b0c6731934f869845b
+
+Retry loops on RT might loop forever when the modifying side was
+preempted. Use cpu_chill() instead of cpu_relax() to let the system
+make progress.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+---
+ net/packet/af_packet.c | 5 +++--
+ net/rds/ib_rdma.c      | 3 ++-
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
+index 4f19bf2..5695d4c 100644
+--- a/net/packet/af_packet.c
++++ b/net/packet/af_packet.c
+@@ -89,6 +89,7 @@
+ #include <linux/virtio_net.h>
+ #include <linux/errqueue.h>
+ #include <linux/net_tstamp.h>
++#include <linux/delay.h>
+ 
+ #ifdef CONFIG_INET
+ #include <net/inet_common.h>
+@@ -681,7 +682,7 @@ static void prb_retire_rx_blk_timer_expired(unsigned long data)
+ 	if (BLOCK_NUM_PKTS(pbd)) {
+ 		while (atomic_read(&pkc->blk_fill_in_prog)) {
+ 			/* Waiting for skb_copy_bits to finish... */
+-			cpu_relax();
++			cpu_chill();
+ 		}
+ 	}
+ 
+@@ -926,7 +927,7 @@ static void prb_retire_current_block(struct tpacket_kbdq_core *pkc,
+ 		if (!(status & TP_STATUS_BLK_TMO)) {
+ 			while (atomic_read(&pkc->blk_fill_in_prog)) {
+ 				/* Waiting for skb_copy_bits to finish... */
+-				cpu_relax();
++				cpu_chill();
+ 			}
+ 		}
+ 		prb_close_block(pkc, pbd, po, status);
+diff --git a/net/rds/ib_rdma.c b/net/rds/ib_rdma.c
+index e8fdb17..5a44c6e 100644
+--- a/net/rds/ib_rdma.c
++++ b/net/rds/ib_rdma.c
+@@ -34,6 +34,7 @@
+ #include <linux/slab.h>
+ #include <linux/rculist.h>
+ #include <linux/llist.h>
++#include <linux/delay.h>
+ 
+ #include "rds.h"
+ #include "ib.h"
+@@ -286,7 +287,7 @@ static inline void wait_clean_list_grace(void)
+ 	for_each_online_cpu(cpu) {
+ 		flag = &per_cpu(clean_list_grace, cpu);
+ 		while (test_bit(CLEAN_LIST_BUSY_BIT, flag))
+-			cpu_relax();
++			cpu_chill();
+ 	}
+ }
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0259-kconfig-disable-a-few-options-rt.patch.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0259-kconfig-disable-a-few-options-rt.patch.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0259-kconfig-disable-a-few-options-rt.patch.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0259-kconfig-disable-a-few-options-rt.patch.patch)
@@ -0,0 +1,51 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Sun, 24 Jul 2011 12:11:43 +0200
+Subject: [PATCH 259/371] kconfig-disable-a-few-options-rt.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=626a0725ba323c21b16aad9cdf127e7272d67aaf
+
+Disable stuff which is known to have issues on RT
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ arch/Kconfig        | 1 +
+ drivers/net/Kconfig | 1 +
+ mm/Kconfig          | 2 +-
+ 3 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/arch/Kconfig b/arch/Kconfig
+index 4b0669c..73fc7cd 100644
+--- a/arch/Kconfig
++++ b/arch/Kconfig
+@@ -6,6 +6,7 @@ config OPROFILE
+ 	tristate "OProfile system profiling"
+ 	depends on PROFILING
+ 	depends on HAVE_OPROFILE
++	depends on !PREEMPT_RT_FULL
+ 	select RING_BUFFER
+ 	select RING_BUFFER_ALLOW_SWAP
+ 	help
+diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
+index 61d3d1f..226e40d 100644
+--- a/drivers/net/Kconfig
++++ b/drivers/net/Kconfig
+@@ -155,6 +155,7 @@ config MACVTAP
+ 
+ config NETCONSOLE
+ 	tristate "Network console logging support"
++	depends on !PREEMPT_RT_FULL
+ 	---help---
+ 	If you want to log kernel messages over the network, enable this.
+ 	See <file:Documentation/networking/netconsole.txt> for details.
+diff --git a/mm/Kconfig b/mm/Kconfig
+index 011b110..0526445 100644
+--- a/mm/Kconfig
++++ b/mm/Kconfig
+@@ -307,7 +307,7 @@ config NOMMU_INITIAL_TRIM_EXCESS
+ 
+ config TRANSPARENT_HUGEPAGE
+ 	bool "Transparent Hugepage Support"
+-	depends on X86 && MMU
++	depends on X86 && MMU && !PREEMPT_RT_FULL
+ 	select COMPACTION
+ 	help
+ 	  Transparent Hugepages allows the kernel to use huge pages and

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0260-kconfig-preempt-rt-full.patch.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0260-kconfig-preempt-rt-full.patch.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0260-kconfig-preempt-rt-full.patch.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0260-kconfig-preempt-rt-full.patch.patch)
@@ -0,0 +1,62 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 29 Jun 2011 14:58:57 +0200
+Subject: [PATCH 260/371] kconfig-preempt-rt-full.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4a4a9059e5fff4570aace71dabf82648573e5425
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ init/Makefile          | 2 +-
+ kernel/Kconfig.preempt | 7 +++++++
+ scripts/mkcompile_h    | 4 +++-
+ 3 files changed, 11 insertions(+), 2 deletions(-)
+
+diff --git a/init/Makefile b/init/Makefile
+index 0bf677a..6b473cd 100644
+--- a/init/Makefile
++++ b/init/Makefile
+@@ -29,4 +29,4 @@ silent_chk_compile.h = :
+ include/generated/compile.h: FORCE
+ 	@$($(quiet)chk_compile.h)
+ 	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkcompile_h $@ \
+-	"$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" "$(CC) $(KBUILD_CFLAGS)"
++	"$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" "$(CONFIG_PREEMPT_RT_FULL)" "$(CC) $(KBUILD_CFLAGS)"
+diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
+index 35c6f20..d0e9372 100644
+--- a/kernel/Kconfig.preempt
++++ b/kernel/Kconfig.preempt
+@@ -66,6 +66,13 @@ config PREEMPT_RTB
+ 	  enables changes which are preliminary for the full preemptiple
+ 	  RT kernel.
+ 
++config PREEMPT_RT_FULL
++	bool "Fully Preemptible Kernel (RT)"
++	depends on IRQ_FORCED_THREADING
++	select PREEMPT_RT_BASE
++	help
++	  All and everything
++
+ endchoice
+ 
+ config PREEMPT_COUNT
+diff --git a/scripts/mkcompile_h b/scripts/mkcompile_h
+index f221ddf..5f44009 100755
+--- a/scripts/mkcompile_h
++++ b/scripts/mkcompile_h
+@@ -4,7 +4,8 @@ TARGET=$1
+ ARCH=$2
+ SMP=$3
+ PREEMPT=$4
+-CC=$5
++RT=$5
++CC=$6
+ 
+ vecho() { [ "${quiet}" = "silent_" ] || echo "$@" ; }
+ 
+@@ -57,6 +58,7 @@ UTS_VERSION="#$VERSION"
+ CONFIG_FLAGS=""
+ if [ -n "$SMP" ] ; then CONFIG_FLAGS="SMP"; fi
+ if [ -n "$PREEMPT" ] ; then CONFIG_FLAGS="$CONFIG_FLAGS PREEMPT"; fi
++if [ -n "$RT" ] ; then CONFIG_FLAGS="$CONFIG_FLAGS RT"; fi
+ UTS_VERSION="$UTS_VERSION $CONFIG_FLAGS $TIMESTAMP"
+ 
+ # Truncate to maximum length

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0261-rt-Make-migrate_disable-enable-and-__rt_mutex_init-n.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0261-rt-Make-migrate_disable-enable-and-__rt_mutex_init-n.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0261-rt-Make-migrate_disable-enable-and-__rt_mutex_init-n.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0261-rt-Make-migrate_disable-enable-and-__rt_mutex_init-n.patch)
@@ -0,0 +1,51 @@
+From: Steven Rostedt <srostedt at redhat.com>
+Date: Mon, 16 Apr 2012 21:51:54 -0400
+Subject: [PATCH 261/371] rt: Make migrate_disable/enable() and __rt_mutex_init
+ non-GPL only
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c010b7ccf4c66b4bdfec46740a1cc5157e6e15e2
+
+Modules that load on the normal vanilla kernel should also load on
+an -rt kernel as well. This does not mean we condone non-GPL modules,
+we are only being consistent.
+
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/rtmutex.c | 2 +-
+ kernel/sched.c   | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index 01284ca..1042825 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -1499,7 +1499,7 @@ void __rt_mutex_init(struct rt_mutex *lock, const char *name)
+ 
+ 	debug_rt_mutex_init(lock, name);
+ }
+-EXPORT_SYMBOL_GPL(__rt_mutex_init);
++EXPORT_SYMBOL(__rt_mutex_init);
+ 
+ /**
+  * rt_mutex_init_proxy_locked - initialize and lock a rt_mutex on behalf of a
+diff --git a/kernel/sched.c b/kernel/sched.c
+index 4eea5da..6fdead4 100644
+--- a/kernel/sched.c
++++ b/kernel/sched.c
+@@ -4623,7 +4623,7 @@ void migrate_disable(void)
+ 	p->migrate_disable = 1;
+ 	preempt_enable();
+ }
+-EXPORT_SYMBOL_GPL(migrate_disable);
++EXPORT_SYMBOL(migrate_disable);
+ 
+ void migrate_enable(void)
+ {
+@@ -4675,7 +4675,7 @@ void migrate_enable(void)
+ 	unpin_current_cpu();
+ 	preempt_enable();
+ }
+-EXPORT_SYMBOL_GPL(migrate_enable);
++EXPORT_SYMBOL(migrate_enable);
+ #else
+ static inline void update_migrate_disable(struct task_struct *p) { }
+ #define migrate_disabled_updated(p)		0

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0262-scsi-qla2xxx-Use-local_irq_save_nort-in-qla2x00_poll.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0262-scsi-qla2xxx-Use-local_irq_save_nort-in-qla2x00_poll.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0262-scsi-qla2xxx-Use-local_irq_save_nort-in-qla2x00_poll.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0262-scsi-qla2xxx-Use-local_irq_save_nort-in-qla2x00_poll.patch)
@@ -0,0 +1,52 @@
+From: John Kacur <jkacur at redhat.com>
+Date: Fri, 27 Apr 2012 12:48:46 +0200
+Subject: [PATCH 262/371] scsi: qla2xxx: Use local_irq_save_nort() in
+ qla2x00_poll
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2d4c6cb9671b79a6d974862f27ad88a392cc0e58
+
+RT triggers the following:
+
+[   11.307652]  [<ffffffff81077b27>] __might_sleep+0xe7/0x110
+[   11.307663]  [<ffffffff8150e524>] rt_spin_lock+0x24/0x60
+[   11.307670]  [<ffffffff8150da78>] ? rt_spin_lock_slowunlock+0x78/0x90
+[   11.307703]  [<ffffffffa0272d83>] qla24xx_intr_handler+0x63/0x2d0 [qla2xxx]
+[   11.307736]  [<ffffffffa0262307>] qla2x00_poll+0x67/0x90 [qla2xxx]
+
+Function qla2x00_poll does local_irq_save() before calling qla24xx_intr_handler
+which has a spinlock. Since spinlocks are sleepable on rt, it is not allowed
+to call them with interrupts disabled. Therefore we use local_irq_save_nort()
+instead which saves flags without disabling interrupts.
+
+This fix needs to be applied to v3.0-rt, v3.2-rt and v3.4-rt
+
+Suggested-by: Thomas Gleixner
+Signed-off-by: John Kacur <jkacur at redhat.com>
+Cc: Steven Rostedt <rostedt at goodmis.org>
+Cc: David Sommerseth <davids at redhat.com>
+Link: http://lkml.kernel.org/r/1335523726-10024-1-git-send-email-jkacur@redhat.com
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ drivers/scsi/qla2xxx/qla_inline.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/scsi/qla2xxx/qla_inline.h b/drivers/scsi/qla2xxx/qla_inline.h
+index 9902834..6d01db6 100644
+--- a/drivers/scsi/qla2xxx/qla_inline.h
++++ b/drivers/scsi/qla2xxx/qla_inline.h
+@@ -36,12 +36,12 @@ qla2x00_poll(struct rsp_que *rsp)
+ {
+ 	unsigned long flags;
+ 	struct qla_hw_data *ha = rsp->hw;
+-	local_irq_save(flags);
++	local_irq_save_nort(flags);
+ 	if (IS_QLA82XX(ha))
+ 		qla82xx_poll(0, rsp);
+ 	else
+ 		ha->isp_ops->intr_handler(0, rsp);
+-	local_irq_restore(flags);
++	local_irq_restore_nort(flags);
+ }
+ 
+ static inline uint8_t *

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0263-net-RT-REmove-preemption-disabling-in-netif_rx.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0263-net-RT-REmove-preemption-disabling-in-netif_rx.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0263-net-RT-REmove-preemption-disabling-in-netif_rx.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0263-net-RT-REmove-preemption-disabling-in-netif_rx.patch)
@@ -0,0 +1,67 @@
+From: Priyanka Jain <Priyanka.Jain at freescale.com>
+Date: Thu, 17 May 2012 09:35:11 +0530
+Subject: [PATCH 263/371] net,RT:REmove preemption disabling in netif_rx()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=57b7ee3b92d9174abde8ce045f7d95b9fdc6e4bc
+
+1)enqueue_to_backlog() (called from netif_rx) should be
+  bind to a particluar CPU. This can be achieved by
+  disabling migration. No need to disable preemption
+
+2)Fixes crash "BUG: scheduling while atomic: ksoftirqd"
+  in case of RT.
+  If preemption is disabled, enqueue_to_backog() is called
+  in atomic context. And if backlog exceeds its count,
+  kfree_skb() is called. But in RT, kfree_skb() might
+  gets scheduled out, so it expects non atomic context.
+
+3)When CONFIG_PREEMPT_RT_FULL is not defined,
+ migrate_enable(), migrate_disable() maps to
+ preempt_enable() and preempt_disable(), so no
+ change in functionality in case of non-RT.
+
+-Replace preempt_enable(), preempt_disable() with
+ migrate_enable(), migrate_disable() respectively
+-Replace get_cpu(), put_cpu() with get_cpu_light(),
+ put_cpu_light() respectively
+
+Signed-off-by: Priyanka Jain <Priyanka.Jain at freescale.com>
+Acked-by: Rajan Srivastava <Rajan.Srivastava at freescale.com>
+Cc: <rostedt at goodmis.orgn>
+Link: http://lkml.kernel.org/r/1337227511-2271-1-git-send-email-Priyanka.Jain@freescale.com
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ net/core/dev.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 21a3d4a..7413d9d 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -3012,7 +3012,7 @@ int netif_rx(struct sk_buff *skb)
+ 		struct rps_dev_flow voidflow, *rflow = &voidflow;
+ 		int cpu;
+ 
+-		preempt_disable();
++		migrate_disable();
+ 		rcu_read_lock();
+ 
+ 		cpu = get_rps_cpu(skb->dev, skb, &rflow);
+@@ -3022,13 +3022,13 @@ int netif_rx(struct sk_buff *skb)
+ 		ret = enqueue_to_backlog(skb, cpu, &rflow->last_qtail);
+ 
+ 		rcu_read_unlock();
+-		preempt_enable();
++		migrate_enable();
+ 	}
+ #else
+ 	{
+ 		unsigned int qtail;
+-		ret = enqueue_to_backlog(skb, get_cpu(), &qtail);
+-		put_cpu();
++		ret = enqueue_to_backlog(skb, get_cpu_light(), &qtail);
++		put_cpu_light();
+ 	}
+ #endif
+ 	return ret;

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0264-mips-remove-smp-reserve-lock.patch.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0264-mips-remove-smp-reserve-lock.patch.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0264-mips-remove-smp-reserve-lock.patch.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0264-mips-remove-smp-reserve-lock.patch.patch)
@@ -0,0 +1,45 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Tue, 22 May 2012 21:15:10 +0200
+Subject: [PATCH 264/371] mips-remove-smp-reserve-lock.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3d9cb462add310d44187343fd61506f1471333e2
+
+Instead of making the lock raw, remove it as it protects nothing.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ arch/mips/cavium-octeon/smp.c | 6 ------
+ 1 file changed, 6 deletions(-)
+
+diff --git a/arch/mips/cavium-octeon/smp.c b/arch/mips/cavium-octeon/smp.c
+index efcfff4..86fce15 100644
+--- a/arch/mips/cavium-octeon/smp.c
++++ b/arch/mips/cavium-octeon/smp.c
+@@ -257,8 +257,6 @@ DEFINE_PER_CPU(int, cpu_state);
+ 
+ extern void fixup_irqs(void);
+ 
+-static DEFINE_SPINLOCK(smp_reserve_lock);
+-
+ static int octeon_cpu_disable(void)
+ {
+ 	unsigned int cpu = smp_processor_id();
+@@ -266,8 +264,6 @@ static int octeon_cpu_disable(void)
+ 	if (cpu == 0)
+ 		return -EBUSY;
+ 
+-	spin_lock(&smp_reserve_lock);
+-
+ 	cpu_clear(cpu, cpu_online_map);
+ 	cpu_clear(cpu, cpu_callin_map);
+ 	local_irq_disable();
+@@ -277,8 +273,6 @@ static int octeon_cpu_disable(void)
+ 	flush_cache_all();
+ 	local_flush_tlb_all();
+ 
+-	spin_unlock(&smp_reserve_lock);
+-
+ 	return 0;
+ }
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0265-Latency-histogramms-Cope-with-backwards-running-loca.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0265-Latency-histogramms-Cope-with-backwards-running-loca.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0265-Latency-histogramms-Cope-with-backwards-running-loca.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0265-Latency-histogramms-Cope-with-backwards-running-loca.patch)
@@ -0,0 +1,264 @@
+From: Carsten Emde <C.Emde at osadl.org>
+Date: Wed, 11 Jul 2012 22:05:17 +0000
+Subject: [PATCH 265/371] Latency histogramms: Cope with backwards running
+ local trace clock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=dbdb52b031e4be9b3c18eff24bf82b20fb6d48f9
+
+Thanks to the wonders of modern technology, the local trace clock can
+now run backwards. Since this never happened before, the time difference
+between now and somewhat earlier was expected to never become negative
+and, thus, stored in an unsigned integer variable. Nowadays, we need a
+signed integer to ensure that the value is stored as underflow in the
+related histogram. (In cases where this is not a misfunction, bipolar
+histograms can be used.)
+
+This patch takes care that all latency variables are represented as
+signed integers and negative numbers are considered as histogram
+underflows.
+
+In one of the misbehaving processors switching to global clock solved
+the problem:
+  echo global >/sys/kernel/debug/tracing/trace_clock
+
+Signed-off-by: Carsten Emde <C.Emde at osadl.org>
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ include/linux/sched.h       |  2 +-
+ kernel/trace/latency_hist.c | 71 +++++++++++++++++++++++----------------------
+ 2 files changed, 38 insertions(+), 35 deletions(-)
+
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index 0b99590..070487f 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
+@@ -1594,7 +1594,7 @@ struct task_struct {
+ #ifdef CONFIG_WAKEUP_LATENCY_HIST
+ 	u64 preempt_timestamp_hist;
+ #ifdef CONFIG_MISSED_TIMER_OFFSETS_HIST
+-	unsigned long timer_offset;
++	long timer_offset;
+ #endif
+ #endif
+ #endif /* CONFIG_TRACING */
+diff --git a/kernel/trace/latency_hist.c b/kernel/trace/latency_hist.c
+index 9d49fcb..d514eef 100644
+--- a/kernel/trace/latency_hist.c
++++ b/kernel/trace/latency_hist.c
+@@ -27,6 +27,8 @@
+ #include "trace.h"
+ #include <trace/events/sched.h>
+ 
++#define NSECS_PER_USECS 1000L
++
+ #define CREATE_TRACE_POINTS
+ #include <trace/events/hist.h>
+ 
+@@ -46,11 +48,11 @@ enum {
+ struct hist_data {
+ 	atomic_t hist_mode; /* 0 log, 1 don't log */
+ 	long offset; /* set it to MAX_ENTRY_NUM/2 for a bipolar scale */
+-	unsigned long min_lat;
+-	unsigned long max_lat;
++	long min_lat;
++	long max_lat;
+ 	unsigned long long below_hist_bound_samples;
+ 	unsigned long long above_hist_bound_samples;
+-	unsigned long long accumulate_lat;
++	long long accumulate_lat;
+ 	unsigned long long total_samples;
+ 	unsigned long long hist_array[MAX_ENTRY_NUM];
+ };
+@@ -152,8 +154,8 @@ static struct enable_data timerandwakeup_enabled_data = {
+ static DEFINE_PER_CPU(struct maxlatproc_data, timerandwakeup_maxlatproc);
+ #endif
+ 
+-void notrace latency_hist(int latency_type, int cpu, unsigned long latency,
+-			  unsigned long timeroffset, cycle_t stop,
++void notrace latency_hist(int latency_type, int cpu, long latency,
++			  long timeroffset, cycle_t stop,
+ 			  struct task_struct *p)
+ {
+ 	struct hist_data *my_hist;
+@@ -224,7 +226,7 @@ void notrace latency_hist(int latency_type, int cpu, unsigned long latency,
+ 		my_hist->hist_array[latency]++;
+ 
+ 	if (unlikely(latency > my_hist->max_lat ||
+-	    my_hist->min_lat == ULONG_MAX)) {
++	    my_hist->min_lat == LONG_MAX)) {
+ #if defined(CONFIG_WAKEUP_LATENCY_HIST) || \
+     defined(CONFIG_MISSED_TIMER_OFFSETS_HIST)
+ 		if (latency_type == WAKEUP_LATENCY ||
+@@ -263,15 +265,14 @@ static void *l_start(struct seq_file *m, loff_t *pos)
+ 		atomic_dec(&my_hist->hist_mode);
+ 
+ 		if (likely(my_hist->total_samples)) {
+-			unsigned long avg = (unsigned long)
+-			    div64_u64(my_hist->accumulate_lat,
++			long avg = (long) div64_s64(my_hist->accumulate_lat,
+ 			    my_hist->total_samples);
+ 			snprintf(minstr, sizeof(minstr), "%ld",
+-			    (long) my_hist->min_lat - my_hist->offset);
++			    my_hist->min_lat - my_hist->offset);
+ 			snprintf(avgstr, sizeof(avgstr), "%ld",
+-			    (long) avg - my_hist->offset);
++			    avg - my_hist->offset);
+ 			snprintf(maxstr, sizeof(maxstr), "%ld",
+-			    (long) my_hist->max_lat - my_hist->offset);
++			    my_hist->max_lat - my_hist->offset);
+ 		} else {
+ 			strcpy(minstr, "<undef>");
+ 			strcpy(avgstr, minstr);
+@@ -376,10 +377,10 @@ static void hist_reset(struct hist_data *hist)
+ 	memset(hist->hist_array, 0, sizeof(hist->hist_array));
+ 	hist->below_hist_bound_samples = 0ULL;
+ 	hist->above_hist_bound_samples = 0ULL;
+-	hist->min_lat = ULONG_MAX;
+-	hist->max_lat = 0UL;
++	hist->min_lat = LONG_MAX;
++	hist->max_lat = LONG_MIN;
+ 	hist->total_samples = 0ULL;
+-	hist->accumulate_lat = 0ULL;
++	hist->accumulate_lat = 0LL;
+ 
+ 	atomic_inc(&hist->hist_mode);
+ }
+@@ -790,9 +791,9 @@ static notrace void probe_preemptirqsoff_hist(void *v, int reason,
+ 
+ 			stop = ftrace_now(cpu);
+ 			time_set++;
+-			if (start && stop >= start) {
+-				unsigned long latency =
+-				    nsecs_to_usecs(stop - start);
++			if (start) {
++				long latency = ((long) (stop - start)) /
++				    NSECS_PER_USECS;
+ 
+ 				latency_hist(IRQSOFF_LATENCY, cpu, latency, 0,
+ 				    stop, NULL);
+@@ -808,9 +809,9 @@ static notrace void probe_preemptirqsoff_hist(void *v, int reason,
+ 
+ 			if (!(time_set++))
+ 				stop = ftrace_now(cpu);
+-			if (start && stop >= start) {
+-				unsigned long latency =
+-				    nsecs_to_usecs(stop - start);
++			if (start) {
++				long latency = ((long) (stop - start)) /
++				    NSECS_PER_USECS;
+ 
+ 				latency_hist(PREEMPTOFF_LATENCY, cpu, latency,
+ 				    0, stop, NULL);
+@@ -827,9 +828,10 @@ static notrace void probe_preemptirqsoff_hist(void *v, int reason,
+ 
+ 			if (!time_set)
+ 				stop = ftrace_now(cpu);
+-			if (start && stop >= start) {
+-				unsigned long latency =
+-				    nsecs_to_usecs(stop - start);
++			if (start) {
++				long latency = ((long) (stop - start)) /
++				    NSECS_PER_USECS;
++
+ 				latency_hist(PREEMPTIRQSOFF_LATENCY, cpu,
+ 				    latency, 0, stop, NULL);
+ 			}
+@@ -908,7 +910,7 @@ static notrace void probe_wakeup_latency_hist_stop(void *v,
+ {
+ 	unsigned long flags;
+ 	int cpu = task_cpu(next);
+-	unsigned long latency;
++	long latency;
+ 	cycle_t stop;
+ 	struct task_struct *cpu_wakeup_task;
+ 
+@@ -939,7 +941,8 @@ static notrace void probe_wakeup_latency_hist_stop(void *v,
+ 	 */
+ 	stop = ftrace_now(raw_smp_processor_id());
+ 
+-	latency = nsecs_to_usecs(stop - next->preempt_timestamp_hist);
++	latency = ((long) (stop - next->preempt_timestamp_hist)) /
++	    NSECS_PER_USECS;
+ 
+ 	if (per_cpu(wakeup_sharedprio, cpu)) {
+ 		latency_hist(WAKEUP_LATENCY_SHAREDPRIO, cpu, latency, 0, stop,
+@@ -975,7 +978,7 @@ static notrace void probe_hrtimer_interrupt(void *v, int cpu,
+ 	    (task->prio < curr->prio ||
+ 	    (task->prio == curr->prio &&
+ 	    !cpumask_test_cpu(cpu, &task->cpus_allowed)))) {
+-		unsigned long latency;
++		long latency;
+ 		cycle_t now;
+ 
+ 		if (missed_timer_offsets_pid) {
+@@ -985,7 +988,7 @@ static notrace void probe_hrtimer_interrupt(void *v, int cpu,
+ 		}
+ 
+ 		now = ftrace_now(cpu);
+-		latency = (unsigned long) div_s64(-latency_ns, 1000);
++		latency = (long) div_s64(-latency_ns, NSECS_PER_USECS);
+ 		latency_hist(MISSED_TIMER_OFFSETS, cpu, latency, latency, now,
+ 		    task);
+ #ifdef CONFIG_WAKEUP_LATENCY_HIST
+@@ -1026,7 +1029,7 @@ static __init int latency_hist_init(void)
+ 		    &per_cpu(irqsoff_hist, i), &latency_hist_fops);
+ 		my_hist = &per_cpu(irqsoff_hist, i);
+ 		atomic_set(&my_hist->hist_mode, 1);
+-		my_hist->min_lat = 0xFFFFFFFFUL;
++		my_hist->min_lat = LONG_MAX;
+ 	}
+ 	entry = debugfs_create_file("reset", 0644, dentry,
+ 	    (void *)IRQSOFF_LATENCY, &latency_hist_reset_fops);
+@@ -1041,7 +1044,7 @@ static __init int latency_hist_init(void)
+ 		    &per_cpu(preemptoff_hist, i), &latency_hist_fops);
+ 		my_hist = &per_cpu(preemptoff_hist, i);
+ 		atomic_set(&my_hist->hist_mode, 1);
+-		my_hist->min_lat = 0xFFFFFFFFUL;
++		my_hist->min_lat = LONG_MAX;
+ 	}
+ 	entry = debugfs_create_file("reset", 0644, dentry,
+ 	    (void *)PREEMPTOFF_LATENCY, &latency_hist_reset_fops);
+@@ -1056,7 +1059,7 @@ static __init int latency_hist_init(void)
+ 		    &per_cpu(preemptirqsoff_hist, i), &latency_hist_fops);
+ 		my_hist = &per_cpu(preemptirqsoff_hist, i);
+ 		atomic_set(&my_hist->hist_mode, 1);
+-		my_hist->min_lat = 0xFFFFFFFFUL;
++		my_hist->min_lat = LONG_MAX;
+ 	}
+ 	entry = debugfs_create_file("reset", 0644, dentry,
+ 	    (void *)PREEMPTIRQSOFF_LATENCY, &latency_hist_reset_fops);
+@@ -1081,14 +1084,14 @@ static __init int latency_hist_init(void)
+ 		    &latency_hist_fops);
+ 		my_hist = &per_cpu(wakeup_latency_hist, i);
+ 		atomic_set(&my_hist->hist_mode, 1);
+-		my_hist->min_lat = 0xFFFFFFFFUL;
++		my_hist->min_lat = LONG_MAX;
+ 
+ 		entry = debugfs_create_file(name, 0444, dentry_sharedprio,
+ 		    &per_cpu(wakeup_latency_hist_sharedprio, i),
+ 		    &latency_hist_fops);
+ 		my_hist = &per_cpu(wakeup_latency_hist_sharedprio, i);
+ 		atomic_set(&my_hist->hist_mode, 1);
+-		my_hist->min_lat = 0xFFFFFFFFUL;
++		my_hist->min_lat = LONG_MAX;
+ 
+ 		sprintf(name, cpufmt_maxlatproc, i);
+ 
+@@ -1122,7 +1125,7 @@ static __init int latency_hist_init(void)
+ 		    &per_cpu(missed_timer_offsets, i), &latency_hist_fops);
+ 		my_hist = &per_cpu(missed_timer_offsets, i);
+ 		atomic_set(&my_hist->hist_mode, 1);
+-		my_hist->min_lat = 0xFFFFFFFFUL;
++		my_hist->min_lat = LONG_MAX;
+ 
+ 		sprintf(name, cpufmt_maxlatproc, i);
+ 		mp = &per_cpu(missed_timer_offsets_maxlatproc, i);
+@@ -1150,7 +1153,7 @@ static __init int latency_hist_init(void)
+ 		    &latency_hist_fops);
+ 		my_hist = &per_cpu(timerandwakeup_latency_hist, i);
+ 		atomic_set(&my_hist->hist_mode, 1);
+-		my_hist->min_lat = 0xFFFFFFFFUL;
++		my_hist->min_lat = LONG_MAX;
+ 
+ 		sprintf(name, cpufmt_maxlatproc, i);
+ 		mp = &per_cpu(timerandwakeup_maxlatproc, i);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0266-Latency-histograms-Adjust-timer-if-already-elapsed-w.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0266-Latency-histograms-Adjust-timer-if-already-elapsed-w.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0266-Latency-histograms-Adjust-timer-if-already-elapsed-w.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0266-Latency-histograms-Adjust-timer-if-already-elapsed-w.patch)
@@ -0,0 +1,70 @@
+From: Carsten Emde <C.Emde at osadl.org>
+Date: Wed, 11 Jul 2012 22:05:18 +0000
+Subject: [PATCH 266/371] Latency histograms: Adjust timer, if already elapsed
+ when programmed
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b73352ae32ed61ff4955949ff9f574edf74b05e1
+
+Nothing prevents a programmer from calling clock_nanosleep() with an
+already elapsed wakeup time in absolute time mode or with a too small
+delay in relative time mode. Such timers cannot wake up in time and,
+thus, should be corrected when entered into the missed timers latency
+histogram (CONFIG_MISSED_TIMERS_HIST).
+
+This patch marks such timers and uses a corrected expiration time.
+
+Signed-off-by: Carsten Emde <C.Emde at osadl.org>
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ include/linux/hrtimer.h |  3 +++
+ kernel/hrtimer.c        | 16 ++++++++++++++--
+ 2 files changed, 17 insertions(+), 2 deletions(-)
+
+diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
+index 26b008b..7259cd3 100644
+--- a/include/linux/hrtimer.h
++++ b/include/linux/hrtimer.h
+@@ -113,6 +113,9 @@ struct hrtimer {
+ 	unsigned long			state;
+ 	struct list_head		cb_entry;
+ 	int				irqsafe;
++#ifdef CONFIG_MISSED_TIMER_OFFSETS_HIST
++	ktime_t 			praecox;
++#endif
+ #ifdef CONFIG_TIMER_STATS
+ 	int				start_pid;
+ 	void				*start_site;
+diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
+index 92b941f..f059ecd 100644
+--- a/kernel/hrtimer.c
++++ b/kernel/hrtimer.c
+@@ -1033,6 +1033,17 @@ int __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
+ #endif
+ 	}
+ 
++#ifdef CONFIG_MISSED_TIMER_OFFSETS_HIST
++	{
++		ktime_t now = new_base->get_time();
++
++		if (ktime_to_ns(tim) < ktime_to_ns(now))
++			timer->praecox = now;
++		else
++			timer->praecox = ktime_set(0, 0);
++	}
++#endif
++
+ 	hrtimer_set_expires_range_ns(timer, tim, delta_ns);
+ 
+ 	/* Switch the timer base, if necessary: */
+@@ -1492,8 +1503,9 @@ retry:
+ 			timer = container_of(node, struct hrtimer, node);
+ 
+ 			trace_hrtimer_interrupt(raw_smp_processor_id(),
+-			    ktime_to_ns(ktime_sub(
+-				hrtimer_get_expires(timer), basenow)),
++			    ktime_to_ns(ktime_sub(ktime_to_ns(timer->praecox) ?
++				timer->praecox : hrtimer_get_expires(timer),
++				basenow)),
+ 			    current,
+ 			    timer->function == hrtimer_wakeup ?
+ 			    container_of(timer, struct hrtimer_sleeper,

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0267-Disable-RT_GROUP_SCHED-in-PREEMPT_RT_FULL.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0267-Disable-RT_GROUP_SCHED-in-PREEMPT_RT_FULL.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0267-Disable-RT_GROUP_SCHED-in-PREEMPT_RT_FULL.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0267-Disable-RT_GROUP_SCHED-in-PREEMPT_RT_FULL.patch)
@@ -0,0 +1,29 @@
+From: Carsten Emde <C.Emde at osadl.org>
+Date: Wed, 11 Jul 2012 22:05:18 +0000
+Subject: [PATCH 267/371] Disable RT_GROUP_SCHED in PREEMPT_RT_FULL
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ba3046f18c45f3cfa9c254c2a6b501fe7c69e0e0
+
+Strange CPU stalls have been observed in RT when RT_GROUP_SCHED
+was configured.
+
+Disable it for now.
+
+Signed-off-by: Carsten Emde <C.Emde at osadl.org>
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ init/Kconfig | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/init/Kconfig b/init/Kconfig
+index 56a926e..f6411a5 100644
+--- a/init/Kconfig
++++ b/init/Kconfig
+@@ -732,6 +732,7 @@ config RT_GROUP_SCHED
+ 	bool "Group scheduling for SCHED_RR/FIFO"
+ 	depends on EXPERIMENTAL
+ 	depends on CGROUP_SCHED
++	depends on !PREEMPT_RT_FULL
+ 	default n
+ 	help
+ 	  This feature lets you explicitly allocate real CPU bandwidth

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0268-Latency-histograms-Detect-another-yet-overlooked-sha.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0268-Latency-histograms-Detect-another-yet-overlooked-sha.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0268-Latency-histograms-Detect-another-yet-overlooked-sha.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0268-Latency-histograms-Detect-another-yet-overlooked-sha.patch)
@@ -0,0 +1,35 @@
+From: Carsten Emde <C.Emde at osadl.org>
+Date: Wed, 11 Jul 2012 22:05:19 +0000
+Subject: [PATCH 268/371] Latency histograms: Detect another yet overlooked
+ sharedprio condition
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=43ecc7996e3e3a87c523b16de12f69b178edaabb
+
+While waiting for an RT process to be woken up, the previous process may
+go to wait and switch to another one with the same priority which then
+becomes current. This condition was not correctly recognized and led to
+erroneously high latency recordings during periods of low CPU load.
+
+This patch correctly marks such latencies as sharedprio and prevents
+them from being recorded as actual system latency.
+
+Signed-off-by: Carsten Emde <C.Emde at osadl.org>
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/trace/latency_hist.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/kernel/trace/latency_hist.c b/kernel/trace/latency_hist.c
+index d514eef..6a4c869 100644
+--- a/kernel/trace/latency_hist.c
++++ b/kernel/trace/latency_hist.c
+@@ -935,6 +935,9 @@ static notrace void probe_wakeup_latency_hist_stop(void *v,
+ 		goto out;
+ 	}
+ 
++	if (current->prio == cpu_wakeup_task->prio)
++		per_cpu(wakeup_sharedprio, cpu) = 1;
++
+ 	/*
+ 	 * The task we are waiting for is about to be switched to.
+ 	 * Calculate latency and store it in histogram.

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0269-slab-Prevent-local-lock-deadlock.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0269-slab-Prevent-local-lock-deadlock.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0269-slab-Prevent-local-lock-deadlock.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0269-slab-Prevent-local-lock-deadlock.patch)
@@ -0,0 +1,74 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 11 Jul 2012 22:05:19 +0000
+Subject: [PATCH 269/371] slab: Prevent local lock deadlock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8f7465331254ae9ce2c41f06ceb7c42e9d6956d8
+
+On RT we avoid the cross cpu function calls and take the per cpu local
+locks instead. Now the code missed that taking the local lock on the
+cpu which runs the code must use the proper local lock functions and
+not a simple spin_lock(). Otherwise it deadlocks later when trying to
+acquire the local lock with the proper function.
+
+Reported-and-tested-by: Chris Pringle <chris.pringle at miranda.com>
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ mm/slab.c | 26 ++++++++++++++++++++++----
+ 1 file changed, 22 insertions(+), 4 deletions(-)
+
+diff --git a/mm/slab.c b/mm/slab.c
+index dbeaf7e..629eed5 100644
+--- a/mm/slab.c
++++ b/mm/slab.c
+@@ -739,8 +739,26 @@ slab_on_each_cpu(void (*func)(void *arg, int this_cpu), void *arg)
+ {
+ 	unsigned int i;
+ 
++	get_cpu_light();
+ 	for_each_online_cpu(i)
+ 		func(arg, i);
++	put_cpu_light();
++}
++
++static void lock_slab_on(unsigned int cpu)
++{
++	if (cpu == smp_processor_id())
++		local_lock_irq(slab_lock);
++	else
++		local_spin_lock_irq(slab_lock, &per_cpu(slab_lock, cpu).lock);
++}
++
++static void unlock_slab_on(unsigned int cpu)
++{
++	if (cpu == smp_processor_id())
++		local_unlock_irq(slab_lock);
++	else
++		local_spin_unlock_irq(slab_lock, &per_cpu(slab_lock, cpu).lock);
+ }
+ #endif
+ 
+@@ -2630,10 +2648,10 @@ static void do_drain(void *arg, int cpu)
+ {
+ 	LIST_HEAD(tmp);
+ 
+-	spin_lock_irq(&per_cpu(slab_lock, cpu).lock);
++	lock_slab_on(cpu);
+ 	__do_drain(arg, cpu);
+ 	list_splice_init(&per_cpu(slab_free_list, cpu), &tmp);
+-	spin_unlock_irq(&per_cpu(slab_lock, cpu).lock);
++	unlock_slab_on(cpu);
+ 	free_delayed(&tmp);
+ }
+ #endif
+@@ -4101,9 +4119,9 @@ static void do_ccupdate_local(void *info)
+ #else
+ static void do_ccupdate_local(void *info, int cpu)
+ {
+-	spin_lock_irq(&per_cpu(slab_lock, cpu).lock);
++	lock_slab_on(cpu);
+ 	__do_ccupdate_local(info, cpu);
+-	spin_unlock_irq(&per_cpu(slab_lock, cpu).lock);
++	unlock_slab_on(cpu);
+ }
+ #endif
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0270-fs-jbd-pull-your-plug-when-waiting-for-space.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0270-fs-jbd-pull-your-plug-when-waiting-for-space.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0270-fs-jbd-pull-your-plug-when-waiting-for-space.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0270-fs-jbd-pull-your-plug-when-waiting-for-space.patch)
@@ -0,0 +1,32 @@
+From: Mike Galbraith <mgalbraith at suse.de>
+Date: Wed, 11 Jul 2012 22:05:20 +0000
+Subject: [PATCH 270/371] fs, jbd: pull your plug when waiting for space
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aefe99f7541dd5e91f3199a4ee178c147a01dcbc
+
+With an -rt kernel, and a heavy sync IO load, tasks can jam
+up on journal locks without unplugging, which can lead to
+terminal IO starvation.  Unplug and schedule when waiting for space.
+
+Signed-off-by: Mike Galbraith <mgalbraith at suse.de>
+Cc: Steven Rostedt <rostedt at goodmis.org>
+Cc: Theodore Tso <tytso at mit.edu>
+Link: http://lkml.kernel.org/r/1341812414.7370.73.camel@marge.simpson.net
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ fs/jbd/checkpoint.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/fs/jbd/checkpoint.c b/fs/jbd/checkpoint.c
+index 5c93ffc..ddbd223 100644
+--- a/fs/jbd/checkpoint.c
++++ b/fs/jbd/checkpoint.c
+@@ -129,6 +129,8 @@ void __log_wait_for_space(journal_t *journal)
+ 		if (journal->j_flags & JFS_ABORT)
+ 			return;
+ 		spin_unlock(&journal->j_state_lock);
++		if (current->plug)
++			io_schedule();
+ 		mutex_lock(&journal->j_checkpoint_mutex);
+ 
+ 		/*

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0271-perf-Make-swevent-hrtimer-run-in-irq-instead-of-soft.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0271-perf-Make-swevent-hrtimer-run-in-irq-instead-of-soft.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0271-perf-Make-swevent-hrtimer-run-in-irq-instead-of-soft.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0271-perf-Make-swevent-hrtimer-run-in-irq-instead-of-soft.patch)
@@ -0,0 +1,71 @@
+From: Yong Zhang <yong.zhang at windriver.com>
+Date: Wed, 11 Jul 2012 22:05:21 +0000
+Subject: [PATCH 271/371] perf: Make swevent hrtimer run in irq instead of
+ softirq
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cb2e362426ef3b7eebda74d9a56632acabbcc7e7
+
+Otherwise we get a deadlock like below:
+
+[ 1044.042749] BUG: scheduling while atomic: ksoftirqd/21/141/0x00010003
+[ 1044.042752] INFO: lockdep is turned off.
+[ 1044.042754] Modules linked in:
+[ 1044.042757] Pid: 141, comm: ksoftirqd/21 Tainted: G        W    3.4.0-rc2-rt3-23676-ga723175-dirty #29
+[ 1044.042759] Call Trace:
+[ 1044.042761]  <IRQ>  [<ffffffff8107d8e5>] __schedule_bug+0x65/0x80
+[ 1044.042770]  [<ffffffff8168978c>] __schedule+0x83c/0xa70
+[ 1044.042775]  [<ffffffff8106bdd2>] ? prepare_to_wait+0x32/0xb0
+[ 1044.042779]  [<ffffffff81689a5e>] schedule+0x2e/0xa0
+[ 1044.042782]  [<ffffffff81071ebd>] hrtimer_wait_for_timer+0x6d/0xb0
+[ 1044.042786]  [<ffffffff8106bb30>] ? wake_up_bit+0x40/0x40
+[ 1044.042790]  [<ffffffff81071f20>] hrtimer_cancel+0x20/0x40
+[ 1044.042794]  [<ffffffff8111da0c>] perf_swevent_cancel_hrtimer+0x3c/0x50
+[ 1044.042798]  [<ffffffff8111da31>] task_clock_event_stop+0x11/0x40
+[ 1044.042802]  [<ffffffff8111da6e>] task_clock_event_del+0xe/0x10
+[ 1044.042805]  [<ffffffff8111c568>] event_sched_out+0x118/0x1d0
+[ 1044.042809]  [<ffffffff8111c649>] group_sched_out+0x29/0x90
+[ 1044.042813]  [<ffffffff8111ed7e>] __perf_event_disable+0x18e/0x200
+[ 1044.042817]  [<ffffffff8111c343>] remote_function+0x63/0x70
+[ 1044.042821]  [<ffffffff810b0aae>] generic_smp_call_function_single_interrupt+0xce/0x120
+[ 1044.042826]  [<ffffffff81022bc7>] smp_call_function_single_interrupt+0x27/0x40
+[ 1044.042831]  [<ffffffff8168d50c>] call_function_single_interrupt+0x6c/0x80
+[ 1044.042833]  <EOI>  [<ffffffff811275b0>] ? perf_event_overflow+0x20/0x20
+[ 1044.042840]  [<ffffffff8168b970>] ? _raw_spin_unlock_irq+0x30/0x70
+[ 1044.042844]  [<ffffffff8168b976>] ? _raw_spin_unlock_irq+0x36/0x70
+[ 1044.042848]  [<ffffffff810702e2>] run_hrtimer_softirq+0xc2/0x200
+[ 1044.042853]  [<ffffffff811275b0>] ? perf_event_overflow+0x20/0x20
+[ 1044.042857]  [<ffffffff81045265>] __do_softirq_common+0xf5/0x3a0
+[ 1044.042862]  [<ffffffff81045c3d>] __thread_do_softirq+0x15d/0x200
+[ 1044.042865]  [<ffffffff81045dda>] run_ksoftirqd+0xfa/0x210
+[ 1044.042869]  [<ffffffff81045ce0>] ? __thread_do_softirq+0x200/0x200
+[ 1044.042873]  [<ffffffff81045ce0>] ? __thread_do_softirq+0x200/0x200
+[ 1044.042877]  [<ffffffff8106b596>] kthread+0xb6/0xc0
+[ 1044.042881]  [<ffffffff8168b97b>] ? _raw_spin_unlock_irq+0x3b/0x70
+[ 1044.042886]  [<ffffffff8168d994>] kernel_thread_helper+0x4/0x10
+[ 1044.042889]  [<ffffffff8107d98c>] ? finish_task_switch+0x8c/0x110
+[ 1044.042894]  [<ffffffff8168b97b>] ? _raw_spin_unlock_irq+0x3b/0x70
+[ 1044.042897]  [<ffffffff8168bd5d>] ? retint_restore_args+0xe/0xe
+[ 1044.042900]  [<ffffffff8106b4e0>] ? kthreadd+0x1e0/0x1e0
+[ 1044.042902]  [<ffffffff8168d990>] ? gs_change+0xb/0xb
+
+Signed-off-by: Yong Zhang <yong.zhang0 at gmail.com>
+Cc: Peter Zijlstra <a.p.zijlstra at chello.nl>
+Cc: Steven Rostedt <rostedt at goodmis.org>
+Link: http://lkml.kernel.org/r/1341476476-5666-1-git-send-email-yong.zhang0@gmail.com
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/events/core.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/kernel/events/core.c b/kernel/events/core.c
+index 2a4bf43..30f4725 100644
+--- a/kernel/events/core.c
++++ b/kernel/events/core.c
+@@ -5590,6 +5590,7 @@ static void perf_swevent_init_hrtimer(struct perf_event *event)
+ 
+ 	hrtimer_init(&hwc->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+ 	hwc->hrtimer.function = perf_swevent_hrtimer;
++	hwc->hrtimer.irqsafe = 1;
+ 
+ 	/*
+ 	 * Since hrtimers have a fixed rate, we can do a static freq->period

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0272-cpu-rt-Rework-cpu-down-for-PREEMPT_RT.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0272-cpu-rt-Rework-cpu-down-for-PREEMPT_RT.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0272-cpu-rt-Rework-cpu-down-for-PREEMPT_RT.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0272-cpu-rt-Rework-cpu-down-for-PREEMPT_RT.patch)
@@ -0,0 +1,542 @@
+From: Steven Rostedt <srostedt at redhat.com>
+Date: Mon, 16 Jul 2012 08:07:43 +0000
+Subject: [PATCH 272/371] cpu/rt: Rework cpu down for PREEMPT_RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=81d561fd4d6cdbdec8c2fe64ec7c0198b0a72d3e
+
+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
+order to handle per_cpu variables, tasks may be pinned to a CPU
+for a while, and even sleep. But these tasks need to be off the CPU
+if that CPU is going down.
+
+Several synchronization methods have been tried, but when stressed
+they failed. This is a new approach.
+
+A sync_tsk thread is still created and tasks may still block on a
+lock when the CPU is going down, but how that works is a bit different.
+When cpu_down() starts, it will create the sync_tsk and wait on it
+to inform that current tasks that are pinned on the CPU are no longer
+pinned. But new tasks that are about to be pinned will still be allowed
+to do so at this time.
+
+Then the notifiers are called. Several notifiers will bring down tasks
+that will enter these locations. Some of these tasks will take locks
+of other tasks that are on the CPU. If we don't let those other tasks
+continue, but make them block until CPU down is done, the tasks that
+the notifiers are waiting on will never complete as they are waiting
+for the locks held by the tasks that are blocked.
+
+Thus we still let the task pin the CPU until the notifiers are done.
+After the notifiers run, we then make new tasks entering the pinned
+CPU sections grab a mutex and wait. This mutex is now a per CPU mutex
+in the hotplug_pcp descriptor.
+
+To help things along, a new function in the scheduler code is created
+called migrate_me(). This function will try to migrate the current task
+off the CPU this is going down if possible. When the sync_tsk is created,
+all tasks will then try to migrate off the CPU going down. There are
+several cases that this wont work, but it helps in most cases.
+
+After the notifiers are called and if a task can't migrate off but enters
+the pin CPU sections, it will be forced to wait on the hotplug_pcp mutex
+until the CPU down is complete. Then the scheduler will force the migration
+anyway.
+
+Also, I found that THREAD_BOUND need to also be accounted for in the
+pinned CPU, and the migrate_disable no longer treats them special.
+This helps fix issues with ksoftirqd and workqueue that unbind on CPU down.
+
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ include/linux/sched.h |   7 ++
+ kernel/cpu.c          | 236 ++++++++++++++++++++++++++++++++++++++++++--------
+ kernel/sched.c        |  82 +++++++++++++++++-
+ 3 files changed, 285 insertions(+), 40 deletions(-)
+
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index 070487f..0e17eef 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
+@@ -1960,6 +1960,10 @@ extern void do_set_cpus_allowed(struct task_struct *p,
+ 
+ extern int set_cpus_allowed_ptr(struct task_struct *p,
+ 				const struct cpumask *new_mask);
++int migrate_me(void);
++void tell_sched_cpu_down_begin(int cpu);
++void tell_sched_cpu_down_done(int cpu);
++
+ #else
+ static inline void do_set_cpus_allowed(struct task_struct *p,
+ 				      const struct cpumask *new_mask)
+@@ -1972,6 +1976,9 @@ static inline int set_cpus_allowed_ptr(struct task_struct *p,
+ 		return -EINVAL;
+ 	return 0;
+ }
++static inline int migrate_me(void) { return 0; }
++static inline void tell_sched_cpu_down_begin(int cpu) { }
++static inline void tell_sched_cpu_down_done(int cpu) { }
+ #endif
+ 
+ #ifdef CONFIG_NO_HZ
+diff --git a/kernel/cpu.c b/kernel/cpu.c
+index 6ac3019..27ba05c 100644
+--- a/kernel/cpu.c
++++ b/kernel/cpu.c
+@@ -46,12 +46,7 @@ static int cpu_hotplug_disabled;
+ 
+ static struct {
+ 	struct task_struct *active_writer;
+-#ifdef CONFIG_PREEMPT_RT_FULL
+-	/* Makes the lock keep the task's state */
+-	spinlock_t lock;
+-#else
+ 	struct mutex lock; /* Synchronizes accesses to refcount, */
+-#endif
+ 	/*
+ 	 * Also blocks the new readers during
+ 	 * an ongoing cpu hotplug operation.
+@@ -67,20 +62,42 @@ static struct {
+ 	.refcount = 0,
+ };
+ 
+-#ifdef CONFIG_PREEMPT_RT_FULL
+-# define hotplug_lock() rt_spin_lock(&cpu_hotplug.lock)
+-# define hotplug_unlock() rt_spin_unlock(&cpu_hotplug.lock)
+-#else
+-# define hotplug_lock() mutex_lock(&cpu_hotplug.lock)
+-# define hotplug_unlock() mutex_unlock(&cpu_hotplug.lock)
+-#endif
+-
++/**
++ * hotplug_pcp - per cpu hotplug descriptor
++ * @unplug:	set when pin_current_cpu() needs to sync tasks
++ * @sync_tsk:	the task that waits for tasks to finish pinned sections
++ * @refcount:	counter of tasks in pinned sections
++ * @grab_lock:	set when the tasks entering pinned sections should wait
++ * @synced:	notifier for @sync_tsk to tell cpu_down it's finished
++ * @mutex:	the mutex to make tasks wait (used when @grab_lock is true)
++ * @mutex_init:	zero if the mutex hasn't been initialized yet.
++ *
++ * Although @unplug and @sync_tsk may point to the same task, the @unplug
++ * is used as a flag and still exists after @sync_tsk has exited and
++ * @sync_tsk set to NULL.
++ */
+ struct hotplug_pcp {
+ 	struct task_struct *unplug;
++	struct task_struct *sync_tsk;
+ 	int refcount;
++	int grab_lock;
+ 	struct completion synced;
++#ifdef CONFIG_PREEMPT_RT_FULL
++	spinlock_t lock;
++#else
++	struct mutex mutex;
++#endif
++	int mutex_init;
+ };
+ 
++#ifdef CONFIG_PREEMPT_RT_FULL
++# define hotplug_lock(hp) rt_spin_lock(&(hp)->lock)
++# define hotplug_unlock(hp) rt_spin_unlock(&(hp)->lock)
++#else
++# define hotplug_lock(hp) mutex_lock(&(hp)->mutex)
++# define hotplug_unlock(hp) mutex_unlock(&(hp)->mutex)
++#endif
++
+ static DEFINE_PER_CPU(struct hotplug_pcp, hotplug_pcp);
+ 
+ /**
+@@ -94,18 +111,40 @@ static DEFINE_PER_CPU(struct hotplug_pcp, hotplug_pcp);
+ void pin_current_cpu(void)
+ {
+ 	struct hotplug_pcp *hp;
++	int force = 0;
+ 
+ retry:
+ 	hp = &__get_cpu_var(hotplug_pcp);
+ 
+-	if (!hp->unplug || hp->refcount || preempt_count() > 1 ||
++	if (!hp->unplug || hp->refcount || force || preempt_count() > 1 ||
+ 	    hp->unplug == current || (current->flags & PF_STOMPER)) {
+ 		hp->refcount++;
+ 		return;
+ 	}
+-	preempt_enable();
+-	hotplug_lock();
+-	hotplug_unlock();
++
++	if (hp->grab_lock) {
++		preempt_enable();
++		hotplug_lock(hp);
++		hotplug_unlock(hp);
++	} else {
++		preempt_enable();
++		/*
++		 * Try to push this task off of this CPU.
++		 */
++		if (!migrate_me()) {
++			preempt_disable();
++			hp = &__get_cpu_var(hotplug_pcp);
++			if (!hp->grab_lock) {
++				/*
++				 * Just let it continue it's already pinned
++				 * or about to sleep.
++				 */
++				force = 1;
++				goto retry;
++			}
++			preempt_enable();
++		}
++	}
+ 	preempt_disable();
+ 	goto retry;
+ }
+@@ -127,26 +166,84 @@ void unpin_current_cpu(void)
+ 		wake_up_process(hp->unplug);
+ }
+ 
+-/*
+- * FIXME: Is this really correct under all circumstances ?
+- */
++static void wait_for_pinned_cpus(struct hotplug_pcp *hp)
++{
++	set_current_state(TASK_UNINTERRUPTIBLE);
++	while (hp->refcount) {
++		schedule_preempt_disabled();
++		set_current_state(TASK_UNINTERRUPTIBLE);
++	}
++}
++
+ static int sync_unplug_thread(void *data)
+ {
+ 	struct hotplug_pcp *hp = data;
+ 
+ 	preempt_disable();
+ 	hp->unplug = current;
++	wait_for_pinned_cpus(hp);
++
++	/*
++	 * This thread will synchronize the cpu_down() with threads
++	 * that have pinned the CPU. When the pinned CPU count reaches
++	 * zero, we inform the cpu_down code to continue to the next step.
++	 */
+ 	set_current_state(TASK_UNINTERRUPTIBLE);
+-	while (hp->refcount) {
+-		schedule_preempt_disabled();
++	preempt_enable();
++	complete(&hp->synced);
++
++	/*
++	 * If all succeeds, the next step will need tasks to wait till
++	 * the CPU is offline before continuing. To do this, the grab_lock
++	 * is set and tasks going into pin_current_cpu() will block on the
++	 * mutex. But we still need to wait for those that are already in
++	 * pinned CPU sections. If the cpu_down() failed, the kthread_should_stop()
++	 * will kick this thread out.
++	 */
++	while (!hp->grab_lock && !kthread_should_stop()) {
++		schedule();
++		set_current_state(TASK_UNINTERRUPTIBLE);
++	}
++
++	/* Make sure grab_lock is seen before we see a stale completion */
++	smp_mb();
++
++	/*
++	 * Now just before cpu_down() enters stop machine, we need to make
++	 * sure all tasks that are in pinned CPU sections are out, and new
++	 * tasks will now grab the lock, keeping them from entering pinned
++	 * CPU sections.
++	 */
++	if (!kthread_should_stop()) {
++		preempt_disable();
++		wait_for_pinned_cpus(hp);
++		preempt_enable();
++		complete(&hp->synced);
++	}
++
++	set_current_state(TASK_UNINTERRUPTIBLE);
++	while (!kthread_should_stop()) {
++		schedule();
+ 		set_current_state(TASK_UNINTERRUPTIBLE);
+ 	}
+ 	set_current_state(TASK_RUNNING);
+-	preempt_enable();
+-	complete(&hp->synced);
++
++	/*
++	 * Force this thread off this CPU as it's going down and
++	 * we don't want any more work on this CPU.
++	 */
++	current->flags &= ~PF_THREAD_BOUND;
++	do_set_cpus_allowed(current, cpu_present_mask);
++	migrate_me();
+ 	return 0;
+ }
+ 
++static void __cpu_unplug_sync(struct hotplug_pcp *hp)
++{
++	wake_up_process(hp->sync_tsk);
++	wait_for_completion(&hp->synced);
++}
++
+ /*
+  * Start the sync_unplug_thread on the target cpu and wait for it to
+  * complete.
+@@ -154,23 +251,83 @@ static int sync_unplug_thread(void *data)
+ static int cpu_unplug_begin(unsigned int cpu)
+ {
+ 	struct hotplug_pcp *hp = &per_cpu(hotplug_pcp, cpu);
+-	struct task_struct *tsk;
++	int err;
++
++	/* Protected by cpu_hotplug.lock */
++	if (!hp->mutex_init) {
++#ifdef CONFIG_PREEMPT_RT_FULL
++		spin_lock_init(&hp->lock);
++#else
++		mutex_init(&hp->mutex);
++#endif
++		hp->mutex_init = 1;
++	}
++
++	/* Inform the scheduler to migrate tasks off this CPU */
++	tell_sched_cpu_down_begin(cpu);
+ 
+ 	init_completion(&hp->synced);
+-	tsk = kthread_create(sync_unplug_thread, hp, "sync_unplug/%d", cpu);
+-	if (IS_ERR(tsk))
+-		return (PTR_ERR(tsk));
+-	kthread_bind(tsk, cpu);
+-	wake_up_process(tsk);
+-	wait_for_completion(&hp->synced);
++
++	hp->sync_tsk = kthread_create(sync_unplug_thread, hp, "sync_unplug/%d", cpu);
++	if (IS_ERR(hp->sync_tsk)) {
++		err = PTR_ERR(hp->sync_tsk);
++		hp->sync_tsk = NULL;
++		return err;
++	}
++	kthread_bind(hp->sync_tsk, cpu);
++
++	/*
++	 * Wait for tasks to get out of the pinned sections,
++	 * it's still OK if new tasks enter. Some CPU notifiers will
++	 * wait for tasks that are going to enter these sections and
++	 * we must not have them block.
++	 */
++	__cpu_unplug_sync(hp);
++
+ 	return 0;
+ }
+ 
++static void cpu_unplug_sync(unsigned int cpu)
++{
++	struct hotplug_pcp *hp = &per_cpu(hotplug_pcp, cpu);
++
++	init_completion(&hp->synced);
++	/* The completion needs to be initialzied before setting grab_lock */
++	smp_wmb();
++
++	/* Grab the mutex before setting grab_lock */
++	hotplug_lock(hp);
++	hp->grab_lock = 1;
++
++	/*
++	 * The CPU notifiers have been completed.
++	 * Wait for tasks to get out of pinned CPU sections and have new
++	 * tasks block until the CPU is completely down.
++	 */
++	__cpu_unplug_sync(hp);
++
++	/* All done with the sync thread */
++	kthread_stop(hp->sync_tsk);
++	hp->sync_tsk = NULL;
++}
++
+ static void cpu_unplug_done(unsigned int cpu)
+ {
+ 	struct hotplug_pcp *hp = &per_cpu(hotplug_pcp, cpu);
+ 
+ 	hp->unplug = NULL;
++	/* Let all tasks know cpu unplug is finished before cleaning up */
++	smp_wmb();
++
++	if (hp->sync_tsk)
++		kthread_stop(hp->sync_tsk);
++
++	if (hp->grab_lock) {
++		hotplug_unlock(hp);
++		/* protected by cpu_hotplug.lock */
++		hp->grab_lock = 0;
++	}
++	tell_sched_cpu_down_done(cpu);
+ }
+ 
+ void get_online_cpus(void)
+@@ -178,9 +335,9 @@ void get_online_cpus(void)
+ 	might_sleep();
+ 	if (cpu_hotplug.active_writer == current)
+ 		return;
+-	hotplug_lock();
++	mutex_lock(&cpu_hotplug.lock);
+ 	cpu_hotplug.refcount++;
+-	hotplug_unlock();
++	mutex_unlock(&cpu_hotplug.lock);
+ 
+ }
+ EXPORT_SYMBOL_GPL(get_online_cpus);
+@@ -189,10 +346,10 @@ void put_online_cpus(void)
+ {
+ 	if (cpu_hotplug.active_writer == current)
+ 		return;
+-	hotplug_lock();
++	mutex_lock(&cpu_hotplug.lock);
+ 	if (!--cpu_hotplug.refcount && unlikely(cpu_hotplug.active_writer))
+ 		wake_up_process(cpu_hotplug.active_writer);
+-	hotplug_unlock();
++	mutex_unlock(&cpu_hotplug.lock);
+ 
+ }
+ EXPORT_SYMBOL_GPL(put_online_cpus);
+@@ -224,11 +381,11 @@ static void cpu_hotplug_begin(void)
+ 	cpu_hotplug.active_writer = current;
+ 
+ 	for (;;) {
+-		hotplug_lock();
++		mutex_lock(&cpu_hotplug.lock);
+ 		if (likely(!cpu_hotplug.refcount))
+ 			break;
+ 		__set_current_state(TASK_UNINTERRUPTIBLE);
+-		hotplug_unlock();
++		mutex_unlock(&cpu_hotplug.lock);
+ 		schedule();
+ 	}
+ }
+@@ -236,7 +393,7 @@ static void cpu_hotplug_begin(void)
+ static void cpu_hotplug_done(void)
+ {
+ 	cpu_hotplug.active_writer = NULL;
+-	hotplug_unlock();
++	mutex_unlock(&cpu_hotplug.lock);
+ }
+ 
+ /*
+@@ -392,6 +549,9 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
+ 		goto out_release;
+ 	}
+ 
++	/* Notifiers are done. Don't let any more tasks pin this CPU. */
++	cpu_unplug_sync(cpu);
++
+ 	err = __stop_machine(take_cpu_down, &tcd_param, cpumask_of(cpu));
+ 	if (err) {
+ 		/* CPU didn't die: tell everyone.  Can't complain. */
+diff --git a/kernel/sched.c b/kernel/sched.c
+index 6fdead4..2ffaa5e 100644
+--- a/kernel/sched.c
++++ b/kernel/sched.c
+@@ -4601,7 +4601,7 @@ void migrate_disable(void)
+ {
+ 	struct task_struct *p = current;
+ 
+-	if (in_atomic() || p->flags & PF_THREAD_BOUND) {
++	if (in_atomic()) {
+ #ifdef CONFIG_SCHED_DEBUG
+ 		p->migrate_disable_atomic++;
+ #endif
+@@ -4632,7 +4632,7 @@ void migrate_enable(void)
+ 	unsigned long flags;
+ 	struct rq *rq;
+ 
+-	if (in_atomic() || p->flags & PF_THREAD_BOUND) {
++	if (in_atomic()) {
+ #ifdef CONFIG_SCHED_DEBUG
+ 		p->migrate_disable_atomic--;
+ #endif
+@@ -6558,6 +6558,84 @@ void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask)
+ 	cpumask_copy(&p->cpus_allowed, new_mask);
+ }
+ 
++static DEFINE_PER_CPU(struct cpumask, sched_cpumasks);
++static DEFINE_MUTEX(sched_down_mutex);
++static cpumask_t sched_down_cpumask;
++
++void tell_sched_cpu_down_begin(int cpu)
++{
++	mutex_lock(&sched_down_mutex);
++	cpumask_set_cpu(cpu, &sched_down_cpumask);
++	mutex_unlock(&sched_down_mutex);
++}
++
++void tell_sched_cpu_down_done(int cpu)
++{
++	mutex_lock(&sched_down_mutex);
++	cpumask_clear_cpu(cpu, &sched_down_cpumask);
++	mutex_unlock(&sched_down_mutex);
++}
++
++/**
++ * migrate_me - try to move the current task off this cpu
++ *
++ * Used by the pin_current_cpu() code to try to get tasks
++ * to move off the current CPU as it is going down.
++ * It will only move the task if the task isn't pinned to
++ * the CPU (with migrate_disable, affinity or THREAD_BOUND)
++ * and the task has to be in a RUNNING state. Otherwise the
++ * movement of the task will wake it up (change its state
++ * to running) when the task did not expect it.
++ *
++ * Returns 1 if it succeeded in moving the current task
++ *         0 otherwise.
++ */
++int migrate_me(void)
++{
++	struct task_struct *p = current;
++	struct migration_arg arg;
++	struct cpumask *cpumask;
++	struct cpumask *mask;
++	unsigned long flags;
++	unsigned int dest_cpu;
++	struct rq *rq;
++
++	/*
++	 * We can not migrate tasks bounded to a CPU or tasks not
++	 * running. The movement of the task will wake it up.
++	 */
++	if (p->flags & PF_THREAD_BOUND || p->state)
++		return 0;
++
++	mutex_lock(&sched_down_mutex);
++	rq = task_rq_lock(p, &flags);
++
++	cpumask = &__get_cpu_var(sched_cpumasks);
++	mask = &p->cpus_allowed;
++
++	cpumask_andnot(cpumask, mask, &sched_down_cpumask);
++
++	if (!cpumask_weight(cpumask)) {
++		/* It's only on this CPU? */
++		task_rq_unlock(rq, p, &flags);
++		mutex_unlock(&sched_down_mutex);
++		return 0;
++	}
++
++	dest_cpu = cpumask_any_and(cpu_active_mask, cpumask);
++
++	arg.task = p;
++	arg.dest_cpu = dest_cpu;
++
++	task_rq_unlock(rq, p, &flags);
++
++	stop_one_cpu(cpu_of(rq), migration_cpu_stop, &arg);
++	tlb_migrate_finish(p->mm);
++	mutex_unlock(&sched_down_mutex);
++
++	return 1;
++}
++
+ /*
+  * This is how migration works:
+  *

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0273-cpu-rt-Fix-cpu_hotplug-variable-initialization.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0273-cpu-rt-Fix-cpu_hotplug-variable-initialization.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0273-cpu-rt-Fix-cpu_hotplug-variable-initialization.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0273-cpu-rt-Fix-cpu_hotplug-variable-initialization.patch)
@@ -0,0 +1,32 @@
+From: Steven Rostedt <srostedt at redhat.com>
+Date: Tue, 17 Jul 2012 10:45:59 -0400
+Subject: [PATCH 273/371] cpu/rt: Fix cpu_hotplug variable initialization
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b65d962b3b8a03072b29cb564b01eb79e4c5861f
+
+The commit "cpu/rt: Rework cpu down for PREEMPT_RT" changed the double
+meaning of the cpu_hotplug.lock, where it was a spinlock for RT and a
+mutex for non-RT, to just a mutex for both.  But the initialization of
+the variable was not updated to reflect this change.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/cpu.c | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/kernel/cpu.c b/kernel/cpu.c
+index 27ba05c..5ef0c31 100644
+--- a/kernel/cpu.c
++++ b/kernel/cpu.c
+@@ -54,11 +54,7 @@ static struct {
+ 	int refcount;
+ } cpu_hotplug = {
+ 	.active_writer = NULL,
+-#ifdef CONFIG_PREEMPT_RT_FULL
+-	.lock = __SPIN_LOCK_UNLOCKED(cpu_hotplug.lock),
+-#else
+ 	.lock = __MUTEX_INITIALIZER(cpu_hotplug.lock),
+-#endif
+ 	.refcount = 0,
+ };
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0274-time-rt-Fix-up-leap-second-backport-for-RT-changes.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0274-time-rt-Fix-up-leap-second-backport-for-RT-changes.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0274-time-rt-Fix-up-leap-second-backport-for-RT-changes.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0274-time-rt-Fix-up-leap-second-backport-for-RT-changes.patch)
@@ -0,0 +1,66 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Thu, 2 Aug 2012 18:56:52 -0400
+Subject: [PATCH 274/371] time/rt: Fix up leap-second backport for RT changes
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0a489b839cb3d8b9aa51d61ac97a9014db8f8540
+
+The leap-second backport broke RT, and a few changes had to be done.
+
+1) The second_overflow now encompasses ntp_leap_second, and since
+second_overflow is called with the xtime_lock held, we can not take that
+lock either.
+
+2) Change ktime_get_update_offsets() to use read_seqcount_begin() instead
+of read_seq_begin() (and retry).
+
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/time/ntp.c         | 6 ------
+ kernel/time/timekeeping.c | 4 ++--
+ 2 files changed, 2 insertions(+), 8 deletions(-)
+
+diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
+index 635c2bc..92d97a7 100644
+--- a/kernel/time/ntp.c
++++ b/kernel/time/ntp.c
+@@ -362,9 +362,6 @@ int second_overflow(unsigned long secs)
+ 	int leap = 0;
+ 	s64 delta;
+ 
+-	raw_spin_lock(&xtime_lock);
+-	write_seqcount_begin(&xtime_seq);
+-
+ 	/*
+ 	 * Leap second processing. If in leap-insert state at the end of the
+ 	 * day, the system clock is set back one second; if in leap-delete
+@@ -405,9 +402,6 @@ int second_overflow(unsigned long secs)
+ 		break;
+ 	}
+ 
+-	write_seqcount_end(&xtime_seq);
+-	raw_spin_unlock(&xtime_lock);
+-
+ 	/* Bump the maxerror field */
+ 	time_maxerror += MAXFREQ / NSEC_PER_USEC;
+ 	if (time_maxerror > NTP_PHASE_LIMIT) {
+diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
+index d00be1d..0d8f0ed 100644
+--- a/kernel/time/timekeeping.c
++++ b/kernel/time/timekeeping.c
+@@ -1295,7 +1295,7 @@ ktime_t ktime_get_update_offsets(ktime_t *real, ktime_t *boot)
+ 	u64 secs, nsecs;
+ 
+ 	do {
+-		seq = read_seqbegin(&xtime_lock);
++		seq = read_seqcount_begin(&xtime_seq);
+ 
+ 		secs = xtime.tv_sec;
+ 		nsecs = xtime.tv_nsec;
+@@ -1305,7 +1305,7 @@ ktime_t ktime_get_update_offsets(ktime_t *real, ktime_t *boot)
+ 
+ 		*real = offs_real;
+ 		*boot = offs_boot;
+-	} while (read_seqretry(&xtime_lock, seq));
++	} while (read_seqcount_retry(&xtime_seq, seq));
+ 
+ 	now = ktime_add_ns(ktime_set(secs, 0), nsecs);
+ 	now = ktime_sub(now, *real);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0275-fix-printk-flush-of-messages.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0275-fix-printk-flush-of-messages.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0275-fix-printk-flush-of-messages.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0275-fix-printk-flush-of-messages.patch)
@@ -0,0 +1,55 @@
+From: Frank Rowand <frank.rowand at am.sony.com>
+Date: Wed, 16 May 2012 18:09:36 -0700
+Subject: [PATCH 275/371] fix printk flush of messages
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5a2447c21aaaa68e752caa426fa28546868860b3
+
+Updates console-make-rt-friendly.patch
+
+#ifdef CONFIG_PREEMPT_RT_FULL, printk() output is never flushed by
+printk() because:
+
+   # some liberties taken in this pseudo-code to make it easier to follow
+   printk()
+      vprintk()
+         raw_spin_lock(&logbuf_lock)
+            # increment preempt_count():
+            preempt_disable()
+      result = console_trylock_for_printk()
+         retval = 0
+         # lock will always be false, because preempt_count() will be >= 1
+         lock = ... && !preempt_count()
+         if (lock)
+            retval = 1
+         return retval
+      # result will always be false since lock will always be false
+      if (result)
+         console_unlock()
+            # this is where the printk() output would be flushed
+
+On system boot some printk() output is flushed because register_console()
+and tty_open() call console_unlock().
+
+This change also fixes the problem that was previously fixed by
+preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch
+
+Signed-off-by: Frank Rowand <frank.rowand at am.sony.com>
+Cc: Frank <Frank_Rowand at sonyusa.com>
+Link: http://lkml.kernel.org/r/4FB44FD0.4090800@am.sony.com
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ kernel/printk.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kernel/printk.c b/kernel/printk.c
+index 1e801523..7ee229c 100644
+--- a/kernel/printk.c
++++ b/kernel/printk.c
+@@ -847,7 +847,7 @@ static int console_trylock_for_printk(unsigned int cpu, unsigned long flags)
+ 	int retval = 0, wake = 0;
+ #ifdef CONFIG_PREEMPT_RT_FULL
+ 	int lock = (!early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
+-		!preempt_count()) || sysrq_in_progress;
++		(preempt_count() <= 1)) || sysrq_in_progress;
+ #else
+ 	int lock = 1;
+ #endif

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0276-fix-printk-flush-of-messages.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0276-fix-printk-flush-of-messages.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0276-fix-printk-flush-of-messages.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0276-fix-printk-flush-of-messages.patch)
@@ -0,0 +1,144 @@
+From: Frank Rowand <frank.rowand at am.sony.com>
+Date: Wed, 16 May 2012 18:05:53 -0700
+Subject: [PATCH 276/371] fix printk flush of messages
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aff516cfa332a1104983e96ac520a58a29ad1fc7
+
+Reverse preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch
+
+The problem addressed by that patch does not exist after applying
+console-make-rt-friendly-update.patch
+
+Signed-off-by: Frank Rowand <frank.rowand at am.sony.com>
+Link: http://lkml.kernel.org/r/4FB44EF1.9050809@am.sony.com
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ drivers/tty/serial/cpm_uart/cpm_uart_core.c |  2 +-
+ drivers/tty/sysrq.c                         | 23 -----------------------
+ include/linux/sysrq.h                       |  5 -----
+ kernel/printk.c                             |  5 ++---
+ lib/Kconfig.debug                           | 22 ----------------------
+ 5 files changed, 3 insertions(+), 54 deletions(-)
+
+--- a/drivers/tty/serial/cpm_uart/cpm_uart_core.c
++++ b/drivers/tty/serial/cpm_uart/cpm_uart_core.c
+@@ -1226,7 +1226,7 @@ static void cpm_uart_console_write(struct console *co, const char *s,
+ {
+ 	struct uart_cpm_port *pinfo = &cpm_uart_ports[co->index];
+ 	unsigned long flags;
+-	int nolock = oops_in_progress || sysrq_in_progress;
++	int nolock = oops_in_progress;
+ 
+ 	if (unlikely(nolock)) {
+ 		local_irq_save(flags);
+--- a/drivers/tty/sysrq.c
++++ b/drivers/tty/sysrq.c
+@@ -492,23 +492,6 @@ static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p)
+                 sysrq_key_table[i] = op_p;
+ }
+ 
+-#ifdef CONFIG_MAGIC_SYSRQ_FORCE_PRINTK
+-
+-int sysrq_in_progress;
+-
+-static void set_sysrq_in_progress(int value)
+-{
+-	sysrq_in_progress = value;
+-}
+-
+-#else
+-
+-static void set_sysrq_in_progress(int value)
+-{
+-}
+-
+-#endif
+-
+ void __handle_sysrq(int key, bool check_mask)
+ {
+ 	struct sysrq_key_op *op_p;
+@@ -517,9 +500,6 @@ void __handle_sysrq(int key, bool check_mask)
+ 	unsigned long flags;
+ 
+ 	spin_lock_irqsave(&sysrq_key_table_lock, flags);
+-
+-	set_sysrq_in_progress(1);
+-
+ 	/*
+ 	 * Raise the apparent loglevel to maximum so that the sysrq header
+ 	 * is shown to provide the user with positive feedback.  We do not
+@@ -561,9 +541,6 @@ void __handle_sysrq(int key, bool check_mask)
+ 		printk("\n");
+ 		console_loglevel = orig_log_level;
+ 	}
+-
+-	set_sysrq_in_progress(0);
+-
+ 	spin_unlock_irqrestore(&sysrq_key_table_lock, flags);
+ }
+ 
+--- a/include/linux/sysrq.h
++++ b/include/linux/sysrq.h
+@@ -38,11 +38,6 @@ struct sysrq_key_op {
+ 	int enable_mask;
+ };
+ 
+-#ifdef CONFIG_MAGIC_SYSRQ_FORCE_PRINTK
+-extern int sysrq_in_progress;
+-#else
+-#define sysrq_in_progress 0
+-#endif
+ #ifdef CONFIG_MAGIC_SYSRQ
+ 
+ /* Generic SysRq interface -- you may call it from any device driver, supplying
+--- a/kernel/printk.c
++++ b/kernel/printk.c
+@@ -21,7 +21,6 @@
+ #include <linux/tty.h>
+ #include <linux/tty_driver.h>
+ #include <linux/console.h>
+-#include <linux/sysrq.h>
+ #include <linux/init.h>
+ #include <linux/jiffies.h>
+ #include <linux/nmi.h>
+@@ -846,8 +845,8 @@ static int console_trylock_for_printk(unsigned int cpu, unsigned long flags)
+ {
+ 	int retval = 0, wake = 0;
+ #ifdef CONFIG_PREEMPT_RT_FULL
+-	int lock = (!early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
+-		(preempt_count() <= 1)) || sysrq_in_progress;
++	int lock = !early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
++		(preempt_count() <= 1);
+ #else
+ 	int lock = 1;
+ #endif
+--- a/lib/Kconfig.debug
++++ b/lib/Kconfig.debug
+@@ -62,28 +62,6 @@ config MAGIC_SYSRQ
+ 	  Specifies the default mask for the allowed SysRq keys.  This can be
+ 	  used to disable several sensitive keys by default.
+ 
+-config MAGIC_SYSRQ_FORCE_PRINTK
+-	bool "Force printk from Magic SysRq"
+-	depends on MAGIC_SYSRQ && PREEMPT_RT_FULL
+-	default n
+-	help
+-	  Allow the output from Magic SysRq to be output immediately, even if
+-	  this causes large latencies.  This can cause performance problems
+-	  for real-time processes.
+-
+-	  If PREEMPT_RT_FULL, printk() will not try to acquire the console lock
+-	  when interrupts or preemption are disabled.  If the console lock is
+-	  not acquired the printk() output will be buffered, but will not be
+-	  output immediately.  Some drivers call into the Magic SysRq code
+-	  with interrupts or preemption disabled, so the output of Magic SysRq
+-	  will be buffered instead of printing immediately if this option is
+-	  not selected.
+-
+-	  Even with this option selected, Magic SysRq output will be delayed
+-	  if the attempt to acquire the console lock fails.
+-
+-	  Don't say Y unless you really know what this hack does.
+-
+ config STRIP_ASM_SYMS
+ 	bool "Strip assembler-generated symbols during link"
+ 	default n

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0277-random-Make-it-work-on-rt.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0277-random-Make-it-work-on-rt.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0277-random-Make-it-work-on-rt.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0277-random-Make-it-work-on-rt.patch)
@@ -0,0 +1,115 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Tue, 21 Aug 2012 20:38:50 +0200
+Subject: [PATCH 277/371] random: Make it work on rt
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3526cadffd4f4cb6e395e07a6bb5c7c64505a514
+
+Delegate the random insertion to the forced threaded interrupt
+handler. Store the return IP of the hard interrupt handler in the irq
+descriptor and feed it into the random generator as a source of
+entropy.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ drivers/char/random.c   | 10 ++++++----
+ include/linux/irqdesc.h |  1 +
+ include/linux/random.h  |  2 +-
+ kernel/irq/handle.c     |  7 +++++--
+ kernel/irq/manage.c     |  6 ++++++
+ 5 files changed, 19 insertions(+), 7 deletions(-)
+
+--- a/drivers/char/random.c
++++ b/drivers/char/random.c
+@@ -767,18 +767,16 @@ EXPORT_SYMBOL_GPL(add_input_randomness);
+ 
+ static DEFINE_PER_CPU(struct fast_pool, irq_randomness);
+ 
+-void add_interrupt_randomness(int irq, int irq_flags)
++void add_interrupt_randomness(int irq, int irq_flags, __u64 ip)
+ {
+ 	struct entropy_store	*r;
+ 	struct fast_pool	*fast_pool = &__get_cpu_var(irq_randomness);
+-	struct pt_regs		*regs = get_irq_regs();
+ 	unsigned long		now = jiffies;
+ 	__u32			input[4], cycles = random_get_entropy();
+ 
+ 	input[0] = cycles ^ jiffies;
+ 	input[1] = irq;
+-	if (regs) {
+-		__u64 ip = instruction_pointer(regs);
++	if (ip) {
+ 		input[2] = ip;
+ 		input[3] = ip >> 32;
+ 	}
+@@ -792,7 +790,11 @@ void add_interrupt_randomness(int irq, int irq_flags)
+ 	fast_pool->last = now;
+ 
+ 	r = nonblocking_pool.initialized ? &input_pool : &nonblocking_pool;
++#ifndef CONFIG_PREEMPT_RT_FULL
+ 	__mix_pool_bytes(r, &fast_pool->pool, sizeof(fast_pool->pool), NULL);
++#else
++	mix_pool_bytes(r, &fast_pool->pool, sizeof(fast_pool->pool), NULL);
++#endif
+ 	/*
+ 	 * If we don't have a valid cycle counter, and we see
+ 	 * back-to-back timer interrupts, then skip giving credit for
+--- a/include/linux/irqdesc.h
++++ b/include/linux/irqdesc.h
+@@ -55,6 +55,7 @@ struct irq_desc {
+ 	unsigned int		irq_count;	/* For detecting broken IRQs */
+ 	unsigned long		last_unhandled;	/* Aging timer for unhandled count */
+ 	unsigned int		irqs_unhandled;
++	u64			random_ip;
+ 	raw_spinlock_t		lock;
+ 	struct cpumask		*percpu_enabled;
+ #ifdef CONFIG_SMP
+--- a/include/linux/random.h
++++ b/include/linux/random.h
+@@ -53,7 +53,7 @@ extern void rand_initialize_irq(int irq);
+ extern void add_device_randomness(const void *, unsigned int);
+ extern void add_input_randomness(unsigned int type, unsigned int code,
+ 				 unsigned int value);
+-extern void add_interrupt_randomness(int irq, int irq_flags);
++extern void add_interrupt_randomness(int irq, int irq_flags, __u64 ip);
+ 
+ extern void get_random_bytes(void *buf, int nbytes);
+ extern void get_random_bytes_arch(void *buf, int nbytes);
+--- a/kernel/irq/handle.c
++++ b/kernel/irq/handle.c
+@@ -116,6 +116,8 @@ static void irq_wake_thread(struct irq_desc *desc, struct irqaction *action)
+ irqreturn_t
+ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action)
+ {
++	struct pt_regs *regs = get_irq_regs();
++	u64 ip = regs ? instruction_pointer(regs) : 0;
+ 	irqreturn_t retval = IRQ_NONE;
+ 	unsigned int flags = 0, irq = desc->irq_data.irq;
+ 
+@@ -157,8 +159,9 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action)
+ 	} while (action);
+ 
+ #ifndef CONFIG_PREEMPT_RT_FULL
+-	/* FIXME: Can we unbreak that ? */
+-	add_interrupt_randomness(irq, flags);
++	add_interrupt_randomness(irq, flags, ip);
++#else
++	desc->random_ip = ip;
+ #endif
+ 
+ 	if (!noirqdebug)
+--- a/kernel/irq/manage.c
++++ b/kernel/irq/manage.c
+@@ -825,6 +825,12 @@ static int irq_thread(void *data)
+ 			action_ret = handler_fn(desc, action);
+ 			if (action_ret == IRQ_HANDLED)
+ 				atomic_inc(&desc->threads_handled);
++#ifdef CONFIG_PREEMPT_RT_FULL
++			migrate_disable();
++			add_interrupt_randomness(action->irq, 0,
++						 desc->random_ip ^ (u64) action);
++			migrate_enable();
++#endif
+ 		}
+ 
+ 		wake = atomic_dec_and_test(&desc->threads_active);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0278-softirq-Init-softirq-local-lock-after-per-cpu-sectio.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0278-softirq-Init-softirq-local-lock-after-per-cpu-sectio.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0278-softirq-Init-softirq-local-lock-after-per-cpu-sectio.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0278-softirq-Init-softirq-local-lock-after-per-cpu-sectio.patch)
@@ -0,0 +1,137 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Thu, 4 Oct 2012 11:02:04 -0400
+Subject: [PATCH 278/371] softirq: Init softirq local lock after per cpu
+ section is set up
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0f8ba353ed86dd08bd0f7149c0f60d670e3460cf
+
+I discovered this bug when booting 3.4-rt on my powerpc box. It crashed
+with the following report:
+
+------------[ cut here ]------------
+kernel BUG at /work/rt/stable-rt.git/kernel/rtmutex_common.h:75!
+Oops: Exception in kernel mode, sig: 5 [#1]
+PREEMPT SMP NR_CPUS=64 NUMA PA Semi PWRficient
+Modules linked in:
+NIP: c0000000004aa03c LR: c0000000004aa01c CTR: c00000000009b2ac
+REGS: c00000003e8d7950 TRAP: 0700   Not tainted  (3.4.11-test-rt19)
+MSR: 9000000000029032 <SF,HV,EE,ME,IR,DR,RI>  CR: 24000082  XER: 20000000
+SOFTE: 0
+TASK = c00000003e8fdcd0[11] 'ksoftirqd/1' THREAD: c00000003e8d4000 CPU: 1
+GPR00: 0000000000000001 c00000003e8d7bd0 c000000000d6cbb0 0000000000000000
+GPR04: c00000003e8fdcd0 0000000000000000 0000000024004082 c000000000011454
+GPR08: 0000000000000000 0000000080000001 c00000003e8fdcd1 0000000000000000
+GPR12: 0000000024000084 c00000000fff0280 ffffffffffffffff 000000003ffffad8
+GPR16: ffffffffffffffff 000000000072c798 0000000000000060 0000000000000000
+GPR20: 0000000000642741 000000000072c858 000000003ffffaf0 0000000000000417
+GPR24: 000000000072dcd0 c00000003e7ff990 0000000000000000 0000000000000001
+GPR28: 0000000000000000 c000000000792340 c000000000ccec78 c000000001182338
+NIP [c0000000004aa03c] .wakeup_next_waiter+0x44/0xb8
+LR [c0000000004aa01c] .wakeup_next_waiter+0x24/0xb8
+Call Trace:
+[c00000003e8d7bd0] [c0000000004aa01c] .wakeup_next_waiter+0x24/0xb8 (unreliable)
+[c00000003e8d7c60] [c0000000004a0320] .rt_spin_lock_slowunlock+0x8c/0xe4
+[c00000003e8d7ce0] [c0000000004a07cc] .rt_spin_unlock+0x54/0x64
+[c00000003e8d7d60] [c0000000000636bc] .__thread_do_softirq+0x130/0x174
+[c00000003e8d7df0] [c00000000006379c] .run_ksoftirqd+0x9c/0x1a4
+[c00000003e8d7ea0] [c000000000080b68] .kthread+0xa8/0xb4
+[c00000003e8d7f90] [c00000000001c2f8] .kernel_thread+0x54/0x70
+Instruction dump:
+60000000 e86d01c8 38630730 4bff7061 60000000 ebbf0008 7c7c1b78 e81d0040
+7fe00278 7c000074 7800d182 68000001 <0b000000> e88d01c8 387d0010 38840738
+
+The rtmutex_common.h:75 is:
+
+rt_mutex_top_waiter(struct rt_mutex *lock)
+{
+	struct rt_mutex_waiter *w;
+
+	w = plist_first_entry(&lock->wait_list, struct rt_mutex_waiter,
+			       list_entry);
+	BUG_ON(w->lock != lock);
+
+	return w;
+}
+
+Where the waiter->lock is corrupted. I saw various other random bugs
+that all had to with the softirq lock and plist. As plist needs to be
+initialized before it is used I investigated how this lock is
+initialized. It's initialized with:
+
+void __init softirq_early_init(void)
+{
+	local_irq_lock_init(local_softirq_lock);
+}
+
+Where:
+
+#define local_irq_lock_init(lvar)					\
+	do {								\
+		int __cpu;						\
+		for_each_possible_cpu(__cpu)				\
+			spin_lock_init(&per_cpu(lvar, __cpu).lock);	\
+	} while (0)
+
+As the softirq lock is a local_irq_lock, which is a per_cpu lock, the
+initialization is done to all per_cpu versions of the lock. But lets
+look at where the softirq_early_init() is called from.
+
+In init/main.c: start_kernel()
+
+/*
+ * Interrupts are still disabled. Do necessary setups, then
+ * enable them
+ */
+	softirq_early_init();
+	tick_init();
+	boot_cpu_init();
+	page_address_init();
+	printk(KERN_NOTICE "%s", linux_banner);
+	setup_arch(&command_line);
+	mm_init_owner(&init_mm, &init_task);
+	mm_init_cpumask(&init_mm);
+	setup_command_line(command_line);
+	setup_nr_cpu_ids();
+	setup_per_cpu_areas();
+	smp_prepare_boot_cpu();	/* arch-specific boot-cpu hooks */
+
+One of the first things that is called is the initialization of the
+softirq lock. But if you look further down, we see the per_cpu areas
+have not been set up yet. Thus initializing a local_irq_lock() before
+the per_cpu section is set up, may not work as it is initializing the
+per cpu locks before the per cpu exists.
+
+By moving the softirq_early_init() right after setup_per_cpu_areas(),
+the kernel boots fine.
+
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+Cc: Clark Williams <clark at redhat.com>
+Cc: John Kacur <jkacur at redhat.com>
+Cc: Carsten Emde <cbe at osadl.org>
+Cc: vomlehn at texas.net
+Cc: stable-rt at vger.kernel.org
+Link: http://lkml.kernel.org/r/1349362924.6755.18.camel@gandalf.local.home
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ init/main.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/init/main.c b/init/main.c
+index 8ccb56a..267e2c2 100644
+--- a/init/main.c
++++ b/init/main.c
+@@ -491,7 +491,6 @@ asmlinkage void __init start_kernel(void)
+  * Interrupts are still disabled. Do necessary setups, then
+  * enable them
+  */
+-	softirq_early_init();
+ 	tick_init();
+ 	boot_cpu_init();
+ 	page_address_init();
+@@ -502,6 +501,7 @@ asmlinkage void __init start_kernel(void)
+ 	setup_command_line(command_line);
+ 	setup_nr_cpu_ids();
+ 	setup_per_cpu_areas();
++	softirq_early_init();
+ 	smp_prepare_boot_cpu();	/* arch-specific boot-cpu hooks */
+ 
+ 	build_all_zonelists(NULL);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0279-mm-slab-Fix-potential-deadlock.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0279-mm-slab-Fix-potential-deadlock.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0279-mm-slab-Fix-potential-deadlock.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0279-mm-slab-Fix-potential-deadlock.patch)
@@ -0,0 +1,124 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 26 Sep 2012 16:20:00 +0200
+Subject: [PATCH 279/371] mm: slab: Fix potential deadlock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5a910985b2b671cb5dcb560253a3f7687a27ca59
+
+ =============================================
+[ INFO: possible recursive locking detected ]
+ 3.6.0-rt1+ #49 Not tainted
+ ---------------------------------------------
+ swapper/0/1 is trying to acquire lock:
+ lock_slab_on+0x72/0x77
+
+ but task is already holding lock:
+ __local_lock_irq+0x24/0x77
+
+ other info that might help us debug this:
+  Possible unsafe locking scenario:
+
+        CPU0
+        ----
+   lock(&per_cpu(slab_lock, __cpu).lock);
+   lock(&per_cpu(slab_lock, __cpu).lock);
+
+  *** DEADLOCK ***
+
+  May be due to missing lock nesting notation
+
+ 2 locks held by swapper/0/1:
+ kmem_cache_create+0x33/0x89
+ __local_lock_irq+0x24/0x77
+
+ stack backtrace:
+ Pid: 1, comm: swapper/0 Not tainted 3.6.0-rt1+ #49
+ Call Trace:
+ __lock_acquire+0x9a4/0xdc4
+ ? __local_lock_irq+0x24/0x77
+ ? lock_slab_on+0x72/0x77
+ lock_acquire+0xc4/0x108
+ ? lock_slab_on+0x72/0x77
+ ? unlock_slab_on+0x5b/0x5b
+ rt_spin_lock+0x36/0x3d
+ ? lock_slab_on+0x72/0x77
+ ? migrate_disable+0x85/0x93
+ lock_slab_on+0x72/0x77
+ do_ccupdate_local+0x19/0x44
+ slab_on_each_cpu+0x36/0x5a
+ do_tune_cpucache+0xc1/0x305
+ enable_cpucache+0x8c/0xb5
+ setup_cpu_cache+0x28/0x182
+ __kmem_cache_create+0x34b/0x380
+ ? shmem_mount+0x1a/0x1a
+ kmem_cache_create+0x4a/0x89
+ ? shmem_mount+0x1a/0x1a
+ shmem_init+0x3e/0xd4
+ kernel_init+0x11c/0x214
+ kernel_thread_helper+0x4/0x10
+ ? retint_restore_args+0x13/0x13
+ ? start_kernel+0x3bc/0x3bc
+ ? gs_change+0x13/0x13
+
+It's not a missing annotation. It's simply wrong code and needs to be
+fixed. Instead of nesting the local and the remote cpu lock simply
+acquire only the remote cpu lock, which is sufficient protection for
+this procedure.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ include/linux/locallock.h |  8 ++++++++
+ mm/slab.c                 | 10 ++--------
+ 2 files changed, 10 insertions(+), 8 deletions(-)
+
+diff --git a/include/linux/locallock.h b/include/linux/locallock.h
+index 8fbc393..0161fbb 100644
+--- a/include/linux/locallock.h
++++ b/include/linux/locallock.h
+@@ -96,6 +96,9 @@ static inline void __local_lock_irq(struct local_irq_lock *lv)
+ #define local_lock_irq(lvar)						\
+ 	do { __local_lock_irq(&get_local_var(lvar)); } while (0)
+ 
++#define local_lock_irq_on(lvar, cpu)					\
++	do { __local_lock_irq(&per_cpu(lvar, cpu)); } while (0)
++
+ static inline void __local_unlock_irq(struct local_irq_lock *lv)
+ {
+ 	LL_WARN(!lv->nestcnt);
+@@ -111,6 +114,11 @@ static inline void __local_unlock_irq(struct local_irq_lock *lv)
+ 		put_local_var(lvar);					\
+ 	} while (0)
+ 
++#define local_unlock_irq_on(lvar, cpu)					\
++	do {								\
++		__local_unlock_irq(&per_cpu(lvar, cpu));		\
++	} while (0)
++
+ static inline int __local_lock_irqsave(struct local_irq_lock *lv)
+ {
+ 	if (lv->owner != current) {
+diff --git a/mm/slab.c b/mm/slab.c
+index 629eed5..b2d5c23 100644
+--- a/mm/slab.c
++++ b/mm/slab.c
+@@ -747,18 +747,12 @@ slab_on_each_cpu(void (*func)(void *arg, int this_cpu), void *arg)
+ 
+ static void lock_slab_on(unsigned int cpu)
+ {
+-	if (cpu == smp_processor_id())
+-		local_lock_irq(slab_lock);
+-	else
+-		local_spin_lock_irq(slab_lock, &per_cpu(slab_lock, cpu).lock);
++	local_lock_irq_on(slab_lock, cpu);
+ }
+ 
+ static void unlock_slab_on(unsigned int cpu)
+ {
+-	if (cpu == smp_processor_id())
+-		local_unlock_irq(slab_lock);
+-	else
+-		local_spin_unlock_irq(slab_lock, &per_cpu(slab_lock, cpu).lock);
++	local_unlock_irq_on(slab_lock, cpu);
+ }
+ #endif
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0280-mm-page_alloc-Use-local_lock_on-instead-of-plain-spi.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0280-mm-page_alloc-Use-local_lock_on-instead-of-plain-spi.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0280-mm-page_alloc-Use-local_lock_on-instead-of-plain-spi.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0280-mm-page_alloc-Use-local_lock_on-instead-of-plain-spi.patch)
@@ -0,0 +1,62 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Thu, 27 Sep 2012 11:11:46 +0200
+Subject: [PATCH 280/371] mm: page_alloc: Use local_lock_on() instead of plain
+ spinlock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1ab6c6029a33fec9219218f915fae4525a873ed7
+
+The plain spinlock while sufficient does not update the local_lock
+internals. Use a proper local_lock function instead to ease debugging.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ include/linux/locallock.h | 11 +++++++++++
+ mm/page_alloc.c           |  4 ++--
+ 2 files changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/include/linux/locallock.h b/include/linux/locallock.h
+index 0161fbb..f1804a3 100644
+--- a/include/linux/locallock.h
++++ b/include/linux/locallock.h
+@@ -137,6 +137,12 @@ static inline int __local_lock_irqsave(struct local_irq_lock *lv)
+ 		_flags = __get_cpu_var(lvar).flags;			\
+ 	} while (0)
+ 
++#define local_lock_irqsave_on(lvar, _flags, cpu)			\
++	do {								\
++		__local_lock_irqsave(&per_cpu(lvar, cpu));		\
++		_flags = per_cpu(lvar, cpu).flags;			\
++	} while (0)
++
+ static inline int __local_unlock_irqrestore(struct local_irq_lock *lv,
+ 					    unsigned long flags)
+ {
+@@ -156,6 +162,11 @@ static inline int __local_unlock_irqrestore(struct local_irq_lock *lv,
+ 			put_local_var(lvar);				\
+ 	} while (0)
+ 
++#define local_unlock_irqrestore_on(lvar, flags, cpu)			\
++	do {								\
++		__local_unlock_irqrestore(&per_cpu(lvar, cpu), flags);	\
++	} while (0)
++
+ #define local_spin_trylock_irq(lvar, lock)				\
+ 	({								\
+ 		int __locked;						\
+diff --git a/mm/page_alloc.c b/mm/page_alloc.c
+index 3746038..bd02179 100644
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
+@@ -227,9 +227,9 @@ static DEFINE_LOCAL_IRQ_LOCK(pa_lock);
+ 
+ #ifdef CONFIG_PREEMPT_RT_BASE
+ # define cpu_lock_irqsave(cpu, flags)		\
+-	spin_lock_irqsave(&per_cpu(pa_lock, cpu).lock, flags)
++	local_lock_irqsave_on(pa_lock, flags, cpu)
+ # define cpu_unlock_irqrestore(cpu, flags)		\
+-	spin_unlock_irqrestore(&per_cpu(pa_lock, cpu).lock, flags)
++	local_unlock_irqrestore_on(pa_lock, flags, cpu)
+ #else
+ # define cpu_lock_irqsave(cpu, flags)		local_irq_save(flags)
+ # define cpu_unlock_irqrestore(cpu, flags)	local_irq_restore(flags)

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0281-rt-rwsem-rwlock-lockdep-annotations.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0281-rt-rwsem-rwlock-lockdep-annotations.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0281-rt-rwsem-rwlock-lockdep-annotations.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0281-rt-rwsem-rwlock-lockdep-annotations.patch)
@@ -0,0 +1,123 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Fri, 28 Sep 2012 10:49:42 +0100
+Subject: [PATCH 281/371] rt: rwsem/rwlock: lockdep annotations
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5a87e094b227b4d04f719154d01d2415979abd00
+
+rwlocks and rwsems on RT do not allow multiple readers. Annotate the
+lockdep acquire functions accordingly.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/rt.c | 46 +++++++++++++++++++++++++---------------------
+ 1 file changed, 25 insertions(+), 21 deletions(-)
+
+diff --git a/kernel/rt.c b/kernel/rt.c
+index 092d6b3..aa10504 100644
+--- a/kernel/rt.c
++++ b/kernel/rt.c
+@@ -216,15 +216,17 @@ int __lockfunc rt_read_trylock(rwlock_t *rwlock)
+ 	 * write locked.
+ 	 */
+ 	migrate_disable();
+-	if (rt_mutex_owner(lock) != current)
++	if (rt_mutex_owner(lock) != current) {
+ 		ret = rt_mutex_trylock(lock);
+-	else if (!rwlock->read_depth)
++		if (ret)
++			rwlock_acquire(&rwlock->dep_map, 0, 1, _RET_IP_);
++	} else if (!rwlock->read_depth) {
+ 		ret = 0;
++	}
+ 
+-	if (ret) {
++	if (ret)
+ 		rwlock->read_depth++;
+-		rwlock_acquire_read(&rwlock->dep_map, 0, 1, _RET_IP_);
+-	} else
++	else
+ 		migrate_enable();
+ 
+ 	return ret;
+@@ -242,13 +244,13 @@ void __lockfunc rt_read_lock(rwlock_t *rwlock)
+ {
+ 	struct rt_mutex *lock = &rwlock->lock;
+ 
+-	rwlock_acquire_read(&rwlock->dep_map, 0, 0, _RET_IP_);
+-
+ 	/*
+ 	 * recursive read locks succeed when current owns the lock
+ 	 */
+-	if (rt_mutex_owner(lock) != current)
++	if (rt_mutex_owner(lock) != current) {
++		rwlock_acquire(&rwlock->dep_map, 0, 0, _RET_IP_);
+ 		__rt_spin_lock(lock);
++	}
+ 	rwlock->read_depth++;
+ }
+ 
+@@ -264,11 +266,11 @@ EXPORT_SYMBOL(rt_write_unlock);
+ 
+ void __lockfunc rt_read_unlock(rwlock_t *rwlock)
+ {
+-	rwlock_release(&rwlock->dep_map, 1, _RET_IP_);
+-
+ 	/* Release the lock only when read_depth is down to 0 */
+-	if (--rwlock->read_depth == 0)
++	if (--rwlock->read_depth == 0) {
++		rwlock_release(&rwlock->dep_map, 1, _RET_IP_);
+ 		__rt_spin_unlock(&rwlock->lock);
++	}
+ }
+ EXPORT_SYMBOL(rt_read_unlock);
+ 
+@@ -315,9 +317,10 @@ EXPORT_SYMBOL(rt_up_write);
+ 
+ void  rt_up_read(struct rw_semaphore *rwsem)
+ {
+-	rwsem_release(&rwsem->dep_map, 1, _RET_IP_);
+-	if (--rwsem->read_depth == 0)
++	if (--rwsem->read_depth == 0) {
++		rwsem_release(&rwsem->dep_map, 1, _RET_IP_);
+ 		rt_mutex_unlock(&rwsem->lock);
++	}
+ }
+ EXPORT_SYMBOL(rt_up_read);
+ 
+@@ -366,15 +369,16 @@ int  rt_down_read_trylock(struct rw_semaphore *rwsem)
+ 	 * but not when read_depth == 0 which means that the rwsem is
+ 	 * write locked.
+ 	 */
+-	if (rt_mutex_owner(lock) != current)
++	if (rt_mutex_owner(lock) != current) {
+ 		ret = rt_mutex_trylock(&rwsem->lock);
+-	else if (!rwsem->read_depth)
++		if (ret)
++			rwsem_acquire(&rwsem->dep_map, 0, 1, _RET_IP_);
++	} else if (!rwsem->read_depth) {
+ 		ret = 0;
++	}
+ 
+-	if (ret) {
++	if (ret)
+ 		rwsem->read_depth++;
+-		rwsem_acquire(&rwsem->dep_map, 0, 1, _RET_IP_);
+-	}
+ 	return ret;
+ }
+ EXPORT_SYMBOL(rt_down_read_trylock);
+@@ -383,10 +387,10 @@ static void __rt_down_read(struct rw_semaphore *rwsem, int subclass)
+ {
+ 	struct rt_mutex *lock = &rwsem->lock;
+ 
+-	rwsem_acquire_read(&rwsem->dep_map, subclass, 0, _RET_IP_);
+-
+-	if (rt_mutex_owner(lock) != current)
++	if (rt_mutex_owner(lock) != current) {
++		rwsem_acquire(&rwsem->dep_map, subclass, 0, _RET_IP_);
+ 		rt_mutex_lock(&rwsem->lock);
++	}
+ 	rwsem->read_depth++;
+ }
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0282-sched-Better-debug-output-for-might-sleep.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0282-sched-Better-debug-output-for-might-sleep.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0282-sched-Better-debug-output-for-might-sleep.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0282-sched-Better-debug-output-for-might-sleep.patch)
@@ -0,0 +1,79 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Fri, 5 Oct 2012 08:56:15 +0100
+Subject: [PATCH 282/371] sched: Better debug output for might sleep
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=15f072a4329028cfedd6e25e796c14641b4690e8
+
+might sleep can tell us where interrupts have been disabled, but we
+have no idea what disabled preemption. Add some debug infrastructure.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ include/linux/sched.h |  4 ++++
+ kernel/sched.c        | 23 +++++++++++++++++++++--
+ 2 files changed, 25 insertions(+), 2 deletions(-)
+
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index 0e17eef..e032721 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
+@@ -1617,6 +1617,10 @@ struct task_struct {
+ 	int kmap_idx;
+ 	pte_t kmap_pte[KM_TYPE_NR];
+ #endif
++
++#ifdef CONFIG_DEBUG_PREEMPT
++	unsigned long preempt_disable_ip;
++#endif
+ };
+ 
+ #ifdef CONFIG_PREEMPT_RT_FULL
+diff --git a/kernel/sched.c b/kernel/sched.c
+index 2ffaa5e..ad71aaf 100644
+--- a/kernel/sched.c
++++ b/kernel/sched.c
+@@ -4492,8 +4492,13 @@ void __kprobes add_preempt_count(int val)
+ 	DEBUG_LOCKS_WARN_ON((preempt_count() & PREEMPT_MASK) >=
+ 				PREEMPT_MASK - 10);
+ #endif
+-	if (preempt_count() == val)
+-		trace_preempt_off(CALLER_ADDR0, get_parent_ip(CALLER_ADDR1));
++	if (preempt_count() == val) {
++		unsigned long ip = get_parent_ip(CALLER_ADDR1);
++#ifdef CONFIG_DEBUG_PREEMPT
++		current->preempt_disable_ip = ip;
++#endif
++		trace_preempt_off(CALLER_ADDR0, ip);
++	}
+ }
+ EXPORT_SYMBOL(add_preempt_count);
+ 
+@@ -4535,6 +4540,13 @@ static noinline void __schedule_bug(struct task_struct *prev)
+ 	print_modules();
+ 	if (irqs_disabled())
+ 		print_irqtrace_events(prev);
++#ifdef DEBUG_PREEMPT
++	if (in_atomic_preempt_off()) {
++		pr_err("Preemption disabled at:");
++		print_ip_sym(current->preempt_disable_ip);
++		pr_cont("\n");
++	}
++#endif
+ 
+ 	if (regs)
+ 		show_regs(regs);
+@@ -8925,6 +8937,13 @@ void __might_sleep(const char *file, int line, int preempt_offset)
+ 	debug_show_held_locks(current);
+ 	if (irqs_disabled())
+ 		print_irqtrace_events(current);
++#ifdef DEBUG_PREEMPT
++	if (!preempt_count_equals(preempt_offset)) {
++		pr_err("Preemption disabled at:");
++		print_ip_sym(current->preempt_disable_ip);
++		pr_cont("\n");
++	}
++#endif
+ 	dump_stack();
+ }
+ EXPORT_SYMBOL(__might_sleep);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0283-stomp_machine-Use-mutex_trylock-when-called-from-ina.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0283-stomp_machine-Use-mutex_trylock-when-called-from-ina.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0283-stomp_machine-Use-mutex_trylock-when-called-from-ina.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0283-stomp_machine-Use-mutex_trylock-when-called-from-ina.patch)
@@ -0,0 +1,63 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 3 Oct 2012 17:21:53 +0100
+Subject: [PATCH 283/371] stomp_machine: Use mutex_trylock when called from
+ inactive cpu
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6f8f49149a9fed40e5ca7aedd5f7069fa5664763
+
+If the stop machinery is called from inactive CPU we cannot use
+mutex_lock, because some other stomp machine invokation might be in
+progress and the mutex can be contended. We cannot schedule from this
+context, so trylock and loop.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/stop_machine.c | 13 +++++++++----
+ 1 file changed, 9 insertions(+), 4 deletions(-)
+
+diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c
+index 561ba3a..e98c70b 100644
+--- a/kernel/stop_machine.c
++++ b/kernel/stop_machine.c
+@@ -158,7 +158,7 @@ static DEFINE_PER_CPU(struct cpu_stop_work, stop_cpus_work);
+ 
+ static void queue_stop_cpus_work(const struct cpumask *cpumask,
+ 				 cpu_stop_fn_t fn, void *arg,
+-				 struct cpu_stop_done *done)
++				 struct cpu_stop_done *done, bool inactive)
+ {
+ 	struct cpu_stop_work *work;
+ 	unsigned int cpu;
+@@ -175,7 +175,12 @@ static void queue_stop_cpus_work(const struct cpumask *cpumask,
+ 	 * Make sure that all work is queued on all cpus before we
+ 	 * any of the cpus can execute it.
+ 	 */
+-	mutex_lock(&stopper_lock);
++	if (!inactive) {
++		mutex_lock(&stopper_lock);
++	} else {
++		while (!mutex_trylock(&stopper_lock))
++			cpu_relax();
++	}
+ 	for_each_cpu(cpu, cpumask)
+ 		cpu_stop_queue_work(&per_cpu(cpu_stopper, cpu),
+ 				    &per_cpu(stop_cpus_work, cpu));
+@@ -188,7 +193,7 @@ static int __stop_cpus(const struct cpumask *cpumask,
+ 	struct cpu_stop_done done;
+ 
+ 	cpu_stop_init_done(&done, cpumask_weight(cpumask));
+-	queue_stop_cpus_work(cpumask, fn, arg, &done);
++	queue_stop_cpus_work(cpumask, fn, arg, &done, false);
+ 	wait_for_stop_done(&done);
+ 	return done.executed ? done.ret : -ENOENT;
+ }
+@@ -601,7 +606,7 @@ int stop_machine_from_inactive_cpu(int (*fn)(void *), void *data,
+ 	set_state(&smdata, STOPMACHINE_PREPARE);
+ 	cpu_stop_init_done(&done, num_active_cpus());
+ 	queue_stop_cpus_work(cpu_active_mask, stop_machine_cpu_stop, &smdata,
+-			     &done);
++			     &done, true);
+ 	ret = stop_machine_cpu_stop(&smdata);
+ 
+ 	/* Busy wait for completion. */

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0284-slab-Fix-up-stable-merge-of-slab-init_lock_keys.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0284-slab-Fix-up-stable-merge-of-slab-init_lock_keys.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0284-slab-Fix-up-stable-merge-of-slab-init_lock_keys.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0284-slab-Fix-up-stable-merge-of-slab-init_lock_keys.patch)
@@ -0,0 +1,36 @@
+From: Steven Rostedt <srostedt at redhat.com>
+Date: Tue, 16 Oct 2012 17:00:19 -0400
+Subject: [PATCH 284/371] slab: Fix up stable merge of slab init_lock_keys()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e28fffccfa62f97d8056aa6d4e40ac78e33c707e
+
+There was a stable fix that moved the init_lock_keys() to after
+the enable_cpucache(). But -rt changed this function to
+init_cachep_lock_keys(). This moves the init afterwards to
+match the stable fix.
+
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ mm/slab.c | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/mm/slab.c b/mm/slab.c
+index b2d5c23..c23c4dc 100644
+--- a/mm/slab.c
++++ b/mm/slab.c
+@@ -1747,15 +1747,12 @@ void __init kmem_cache_init_late(void)
+ 	/* 6) resize the head arrays to their final sizes */
+ 	mutex_lock(&cache_chain_mutex);
+ 	list_for_each_entry(cachep, &cache_chain, next) {
+-		init_cachep_lock_keys(cachep);
+ 		if (enable_cpucache(cachep, GFP_NOWAIT))
+ 			BUG();
++		init_cachep_lock_keys(cachep);
+ 	}
+ 	mutex_unlock(&cache_chain_mutex);
+ 
+-	/* Annotate slab for lockdep -- annotate the malloc caches */
+-	init_lock_keys();
+-
+ 	/* Done! */
+ 	g_cpucache_up = FULL;
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0285-hrtimer-Raise-softirq-if-hrtimer-irq-stalled.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0285-hrtimer-Raise-softirq-if-hrtimer-irq-stalled.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0285-hrtimer-Raise-softirq-if-hrtimer-irq-stalled.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0285-hrtimer-Raise-softirq-if-hrtimer-irq-stalled.patch)
@@ -0,0 +1,40 @@
+From: Watanabe <shunsuke.watanabe at tel.com>
+Date: Sun, 28 Oct 2012 11:13:44 +0100
+Subject: [PATCH 285/371] hrtimer: Raise softirq if hrtimer irq stalled
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9c9bd242452302a959166191a89e9b168526e96b
+
+When the hrtimer stall detection hits the softirq is not raised.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+---
+ kernel/hrtimer.c | 9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
+index f059ecd..11df5cb 100644
+--- a/kernel/hrtimer.c
++++ b/kernel/hrtimer.c
+@@ -1554,11 +1554,7 @@ retry:
+ 	if (expires_next.tv64 == KTIME_MAX ||
+ 	    !tick_program_event(expires_next, 0)) {
+ 		cpu_base->hang_detected = 0;
+-
+-		if (raise)
+-			raise_softirq_irqoff(HRTIMER_SOFTIRQ);
+-
+-		return;
++		goto out;
+ 	}
+ 
+ 	/*
+@@ -1602,6 +1598,9 @@ retry:
+ 	tick_program_event(expires_next, 1);
+ 	printk_once(KERN_WARNING "hrtimer: interrupt took %llu ns\n",
+ 		    ktime_to_ns(delta));
++out:
++	if (raise)
++		raise_softirq_irqoff(HRTIMER_SOFTIRQ);
+ }
+ 
+ /*

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0286-rcu-Disable-RCU_FAST_NO_HZ-on-RT.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0286-rcu-Disable-RCU_FAST_NO_HZ-on-RT.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0286-rcu-Disable-RCU_FAST_NO_HZ-on-RT.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0286-rcu-Disable-RCU_FAST_NO_HZ-on-RT.patch)
@@ -0,0 +1,27 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Sun, 28 Oct 2012 13:26:09 +0000
+Subject: [PATCH 286/371] rcu: Disable RCU_FAST_NO_HZ on RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3442e6148ecfadd2b7144e7ae730de02c6518a83
+
+This uses a timer_list timer from the irq disabled guts of the idle
+code. Disable it for now to prevent wreckage.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+---
+ init/Kconfig | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/init/Kconfig b/init/Kconfig
+index f6411a5..0a2eeac 100644
+--- a/init/Kconfig
++++ b/init/Kconfig
+@@ -469,7 +469,7 @@ config RCU_FANOUT_EXACT
+ 
+ config RCU_FAST_NO_HZ
+ 	bool "Accelerate last non-dyntick-idle CPU's grace periods"
+-	depends on TREE_RCU && NO_HZ && SMP
++	depends on TREE_RCU && NO_HZ && SMP && !PREEMPT_RT_FULL
+ 	default n
+ 	help
+ 	  This option causes RCU to attempt to accelerate grace periods

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0287-net-netfilter-Serialize-xt_write_recseq-sections-on-.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0287-net-netfilter-Serialize-xt_write_recseq-sections-on-.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0287-net-netfilter-Serialize-xt_write_recseq-sections-on-.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0287-net-netfilter-Serialize-xt_write_recseq-sections-on-.patch)
@@ -0,0 +1,102 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Sun, 28 Oct 2012 11:18:08 +0100
+Subject: [PATCH 287/371] net: netfilter: Serialize xt_write_recseq sections on
+ RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fb72c8fbf0d09ec58866238993db5316b1a58def
+
+The netfilter code relies only on the implicit semantics of
+local_bh_disable() for serializing wt_write_recseq sections. RT breaks
+that and needs explicit serialization here.
+
+Reported-by: Peter LaDow <petela at gocougs.wsu.edu>
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+---
+ include/linux/locallock.h          | 4 ++++
+ include/linux/netfilter/x_tables.h | 7 +++++++
+ net/netfilter/core.c               | 6 ++++++
+ 3 files changed, 17 insertions(+)
+
+diff --git a/include/linux/locallock.h b/include/linux/locallock.h
+index f1804a3..a5eea5d 100644
+--- a/include/linux/locallock.h
++++ b/include/linux/locallock.h
+@@ -25,6 +25,9 @@ struct local_irq_lock {
+ 	DEFINE_PER_CPU(struct local_irq_lock, lvar) = {			\
+ 		.lock = __SPIN_LOCK_UNLOCKED((lvar).lock) }
+ 
++#define DECLARE_LOCAL_IRQ_LOCK(lvar)					\
++	DECLARE_PER_CPU(struct local_irq_lock, lvar)
++
+ #define local_irq_lock_init(lvar)					\
+ 	do {								\
+ 		int __cpu;						\
+@@ -220,6 +223,7 @@ static inline int __local_unlock_irqrestore(struct local_irq_lock *lv,
+ #else /* PREEMPT_RT_BASE */
+ 
+ #define DEFINE_LOCAL_IRQ_LOCK(lvar)		__typeof__(const int) lvar
++#define DECLARE_LOCAL_IRQ_LOCK(lvar)		extern __typeof__(const int) lvar
+ 
+ static inline void local_irq_lock_init(int lvar) { }
+ 
+diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h
+index 32cddf7..bed90da2 100644
+--- a/include/linux/netfilter/x_tables.h
++++ b/include/linux/netfilter/x_tables.h
+@@ -186,6 +186,7 @@ struct xt_counters_info {
+ #ifdef __KERNEL__
+ 
+ #include <linux/netdevice.h>
++#include <linux/locallock.h>
+ 
+ /**
+  * struct xt_action_param - parameters for matches/targets
+@@ -466,6 +467,8 @@ extern void xt_free_table_info(struct xt_table_info *info);
+  */
+ DECLARE_PER_CPU(seqcount_t, xt_recseq);
+ 
++DECLARE_LOCAL_IRQ_LOCK(xt_write_lock);
++
+ /**
+  * xt_write_recseq_begin - start of a write section
+  *
+@@ -480,6 +483,9 @@ static inline unsigned int xt_write_recseq_begin(void)
+ {
+ 	unsigned int addend;
+ 
++	/* RT protection */
++	local_lock(xt_write_lock);
++
+ 	/*
+ 	 * Low order bit of sequence is set if we already
+ 	 * called xt_write_recseq_begin().
+@@ -510,6 +516,7 @@ static inline void xt_write_recseq_end(unsigned int addend)
+ 	/* this is kind of a write_seqcount_end(), but addend is 0 or 1 */
+ 	smp_wmb();
+ 	__this_cpu_add(xt_recseq.sequence, addend);
++	local_unlock(xt_write_lock);
+ }
+ 
+ /*
+diff --git a/net/netfilter/core.c b/net/netfilter/core.c
+index afca6c7..aa3f87b 100644
+--- a/net/netfilter/core.c
++++ b/net/netfilter/core.c
+@@ -20,11 +20,17 @@
+ #include <linux/proc_fs.h>
+ #include <linux/mutex.h>
+ #include <linux/slab.h>
++#include <linux/locallock.h>
+ #include <net/net_namespace.h>
+ #include <net/sock.h>
+ 
+ #include "nf_internals.h"
+ 
++#ifdef CONFIG_PREEMPT_RT_BASE
++DEFINE_LOCAL_IRQ_LOCK(xt_write_lock);
++EXPORT_PER_CPU_SYMBOL(xt_write_lock);
++#endif
++
+ static DEFINE_MUTEX(afinfo_mutex);
+ 
+ const struct nf_afinfo __rcu *nf_afinfo[NFPROTO_NUMPROTO] __read_mostly;

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0288-sched-Adjust-sched_reset_on_fork-when-nothing-else-c.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0288-sched-Adjust-sched_reset_on_fork-when-nothing-else-c.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0288-sched-Adjust-sched_reset_on_fork-when-nothing-else-c.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0288-sched-Adjust-sched_reset_on_fork-when-nothing-else-c.patch)
@@ -0,0 +1,36 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Thu, 20 Dec 2012 14:58:00 +0100
+Subject: [PATCH 288/371] sched: Adjust sched_reset_on_fork when nothing else
+ changes
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5de49af9793f3f7426e0ebe481a9854259a564ec
+
+If the policy and priority remain unchanged a possible modification of
+sched_reset_on_fork gets lost in the early exit path.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable at vger.kernel.org
+Cc: stable-rt at vger.kernel.org
+---
+ kernel/sched.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/kernel/sched.c b/kernel/sched.c
+index ad71aaf..917a8c1 100644
+--- a/kernel/sched.c
++++ b/kernel/sched.c
+@@ -5724,11 +5724,13 @@ recheck:
+ 	}
+ 
+ 	/*
+-	 * If not changing anything there's no need to proceed further:
++	 * If not changing anything there's no need to proceed
++	 * further, but store a possible modification of
++	 * reset_on_fork.
+ 	 */
+ 	if (unlikely(policy == p->policy && (!rt_policy(policy) ||
+ 			param->sched_priority == p->rt_priority))) {
+-
++		p->sched_reset_on_fork = reset_on_fork;
+ 		__task_rq_unlock(rq);
+ 		raw_spin_unlock_irqrestore(&p->pi_lock, flags);
+ 		return 0;

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0289-sched-Queue-RT-tasks-to-head-when-prio-drops.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0289-sched-Queue-RT-tasks-to-head-when-prio-drops.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0289-sched-Queue-RT-tasks-to-head-when-prio-drops.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0289-sched-Queue-RT-tasks-to-head-when-prio-drops.patch)
@@ -0,0 +1,71 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Tue, 4 Dec 2012 08:56:41 +0100
+Subject: [PATCH 289/371] sched: Queue RT tasks to head when prio drops
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cfefd751f42bc26fb370516c7c118a920b80b4f9
+
+The following scenario does not work correctly:
+
+Runqueue of CPUx contains two runnable and pinned tasks:
+ T1: SCHED_FIFO, prio 80
+ T2: SCHED_FIFO, prio 80
+
+T1 is on the cpu and executes the following syscalls (classic priority
+ceiling scenario):
+
+ sys_sched_setscheduler(pid(T1), SCHED_FIFO, .prio = 90);
+ ...
+ sys_sched_setscheduler(pid(T1), SCHED_FIFO, .prio = 80);
+ ...
+
+Now T1 gets preempted by T3 (SCHED_FIFO, prio 95). After T3 goes back
+to sleep the scheduler picks T2. Surprise!
+
+The same happens w/o actual preemption when T1 is forced into the
+scheduler due to a sporadic NEED_RESCHED event. The scheduler invokes
+pick_next_task() which returns T2. So T1 gets preempted and scheduled
+out.
+
+This happens because sched_setscheduler() dequeues T1 from the prio 90
+list and then enqueues it on the tail of the prio 80 list behind T2.
+This violates the POSIX spec and surprises user space which relies on
+the guarantee that SCHED_FIFO tasks are not scheduled out unless they
+give the CPU up voluntarily or are preempted by a higher priority
+task. In the latter case the preempted task must get back on the CPU
+after the preempting task schedules out again.
+
+We fixed a similar issue already in commit 60db48c (sched: Queue a
+deboosted task to the head of the RT prio queue). The same treatment
+is necessary for sched_setscheduler(). So enqueue to head of the prio
+bucket list if the priority of the task is lowered.
+
+It might be possible that existing user space relies on the current
+behaviour, but it can be considered highly unlikely due to the corner
+case nature of the application scenario.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable at vger.kernel.org
+Cc: stable-rt at vger.kernel.org
+---
+ kernel/sched.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/kernel/sched.c b/kernel/sched.c
+index 917a8c1..07a58a4 100644
+--- a/kernel/sched.c
++++ b/kernel/sched.c
+@@ -5772,8 +5772,13 @@ recheck:
+ 
+ 	if (running)
+ 		p->sched_class->set_curr_task(rq);
+-	if (on_rq)
+-		activate_task(rq, p, 0);
++	if (on_rq) {
++		/*
++		 * We enqueue to tail when the priority of a task is
++		 * increased (user space view).
++		 */
++		activate_task(rq, p, oldprio <= p->prio ? ENQUEUE_HEAD : 0);
++	}
+ 
+ 	check_class_changed(rq, p, prev_class, oldprio);
+ 	task_rq_unlock(rq, p, &flags);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0290-sched-Consider-pi-boosting-in-setscheduler.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0290-sched-Consider-pi-boosting-in-setscheduler.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0290-sched-Consider-pi-boosting-in-setscheduler.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0290-sched-Consider-pi-boosting-in-setscheduler.patch)
@@ -0,0 +1,160 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Thu, 20 Dec 2012 15:13:49 +0100
+Subject: [PATCH 290/371] sched: Consider pi boosting in setscheduler
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a9b75465c8d654d6b7024415292d9a548b41e616
+
+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
+runqueue even if the new priority is lower than the current effective
+boosted priority. This can result in undesired reordering of the
+priority bucket list.
+
+If the new priority is less or equal than the current effective we
+just store the new parameters in the task struct and leave the
+scheduler class and the runqueue untouched. This is handled when the
+task deboosts itself. Only if the new priority is higher than the
+effective boosted priority we apply the change immediately.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable at vger.kernel.org
+Cc: stable-rt at vger.kernel.org
+---
+ include/linux/sched.h |  5 +++++
+ kernel/rtmutex.c      | 12 ++++++++++++
+ kernel/sched.c        | 39 +++++++++++++++++++++++++++++++--------
+ 3 files changed, 48 insertions(+), 8 deletions(-)
+
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index e032721..f201419 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
+@@ -2150,6 +2150,7 @@ extern unsigned int sysctl_sched_cfs_bandwidth_slice;
+ #ifdef CONFIG_RT_MUTEXES
+ extern int rt_mutex_getprio(struct task_struct *p);
+ extern void rt_mutex_setprio(struct task_struct *p, int prio);
++extern int rt_mutex_check_prio(struct task_struct *task, int newprio);
+ extern void rt_mutex_adjust_pi(struct task_struct *p);
+ static inline bool tsk_is_pi_blocked(struct task_struct *tsk)
+ {
+@@ -2160,6 +2161,10 @@ static inline int rt_mutex_getprio(struct task_struct *p)
+ {
+ 	return p->normal_prio;
+ }
++static inline int rt_mutex_check_prio(struct task_struct *task, int newprio)
++{
++	return 0;
++}
+ # define rt_mutex_adjust_pi(p)		do { } while (0)
+ static inline bool tsk_is_pi_blocked(struct task_struct *tsk)
+ {
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index 1042825..7e0c4d7a 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -176,6 +176,18 @@ int rt_mutex_getprio(struct task_struct *task)
+ }
+ 
+ /*
++ * Called by sched_setscheduler() to check whether the priority change
++ * is overruled by a possible priority boosting.
++ */
++int rt_mutex_check_prio(struct task_struct *task, int newprio)
++{
++	if (!task_has_pi_waiters(task))
++		return 0;
++
++	return task_top_pi_waiter(task)->pi_list_entry.prio <= newprio;
++}
++
++/*
+  * Adjust the priority of a task, after its pi_waiters got modified.
+  *
+  * This can be both boosting and unboosting. task->pi_lock must be held.
+diff --git a/kernel/sched.c b/kernel/sched.c
+index 07a58a4..7c2ed6a 100644
+--- a/kernel/sched.c
++++ b/kernel/sched.c
+@@ -5368,7 +5368,8 @@ EXPORT_SYMBOL(sleep_on_timeout);
+  * This function changes the 'effective' priority of a task. It does
+  * not touch ->normal_prio like __setscheduler().
+  *
+- * Used by the rt_mutex code to implement priority inheritance logic.
++ * Used by the rt_mutex code to implement priority inheritance
++ * logic. Call site only calls if the priority of the task changed.
+  */
+ void rt_mutex_setprio(struct task_struct *p, int prio)
+ {
+@@ -5591,20 +5592,25 @@ static struct task_struct *find_process_by_pid(pid_t pid)
+ 	return pid ? find_task_by_vpid(pid) : current;
+ }
+ 
+-/* Actually do priority change: must hold rq lock. */
+-static void
+-__setscheduler(struct rq *rq, struct task_struct *p, int policy, int prio)
++static void __setscheduler_params(struct task_struct *p, int policy, int prio)
+ {
+ 	p->policy = policy;
+ 	p->rt_priority = prio;
+ 	p->normal_prio = normal_prio(p);
++	set_load_weight(p);
++}
++
++/* Actually do priority change: must hold rq lock. */
++static void
++__setscheduler(struct rq *rq, struct task_struct *p, int policy, int prio)
++{
++	__setscheduler_params(p, policy, prio);
+ 	/* we are holding p->pi_lock already */
+ 	p->prio = rt_mutex_getprio(p);
+ 	if (rt_prio(p->prio))
+ 		p->sched_class = &rt_sched_class;
+ 	else
+ 		p->sched_class = &fair_sched_class;
+-	set_load_weight(p);
+ }
+ 
+ /*
+@@ -5629,6 +5635,7 @@ static bool check_same_owner(struct task_struct *p)
+ static int __sched_setscheduler(struct task_struct *p, int policy,
+ 				const struct sched_param *param, bool user)
+ {
++	int newprio = MAX_RT_PRIO - 1 - param->sched_priority;
+ 	int retval, oldprio, oldpolicy = -1, on_rq, running;
+ 	unsigned long flags;
+ 	const struct sched_class *prev_class;
+@@ -5757,6 +5764,25 @@ recheck:
+ 		task_rq_unlock(rq, p, &flags);
+ 		goto recheck;
+ 	}
++
++	p->sched_reset_on_fork = reset_on_fork;
++	oldprio = p->prio;
++
++	/*
++	 * Special case for priority boosted tasks.
++	 *
++	 * If the new priority is lower or equal (user space view)
++	 * than the current (boosted) priority, we just store the new
++	 * normal parameters and do not touch the scheduler class and
++	 * the runqueue. This will be done when the task deboost
++	 * itself.
++	 */
++	if (rt_mutex_check_prio(p, newprio)) {
++		__setscheduler_params(p, policy, param->sched_priority);
++		task_rq_unlock(rq, p, &flags);
++		return 0;
++	}
++
+ 	on_rq = p->on_rq;
+ 	running = task_current(rq, p);
+ 	if (on_rq)
+@@ -5764,9 +5790,6 @@ recheck:
+ 	if (running)
+ 		p->sched_class->put_prev_task(rq, p);
+ 
+-	p->sched_reset_on_fork = reset_on_fork;
+-
+-	oldprio = p->prio;
+ 	prev_class = p->sched_class;
+ 	__setscheduler(rq, p, policy, param->sched_priority);
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0291-drivers-tty-pl011-irq-disable-madness.patch.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0291-drivers-tty-pl011-irq-disable-madness.patch.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0291-drivers-tty-pl011-irq-disable-madness.patch.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0291-drivers-tty-pl011-irq-disable-madness.patch.patch)
@@ -0,0 +1,49 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Tue, 8 Jan 2013 21:36:51 +0100
+Subject: [PATCH 291/371] drivers-tty-pl011-irq-disable-madness.patch
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5b830326c7e6edce9a8d92e46077498aefbb9d47
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ drivers/tty/serial/amba-pl011.c | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
+index fe9f111..1fbaf66 100644
+--- a/drivers/tty/serial/amba-pl011.c
++++ b/drivers/tty/serial/amba-pl011.c
+@@ -1761,13 +1761,19 @@ pl011_console_write(struct console *co, const char *s, unsigned int count)
+ 
+ 	clk_enable(uap->clk);
+ 
+-	local_irq_save(flags);
++	/*
++	 * local_irq_save(flags);
++	 *
++	 * This local_irq_save() is nonsense. If we come in via sysrq
++	 * handling then interrupts are already disabled. Aside of
++	 * that the port.sysrq check is racy on SMP regardless.
++	*/
+ 	if (uap->port.sysrq)
+ 		locked = 0;
+ 	else if (oops_in_progress)
+-		locked = spin_trylock(&uap->port.lock);
++		locked = spin_trylock_irqsave(&uap->port.lock, flags);
+ 	else
+-		spin_lock(&uap->port.lock);
++		spin_lock_irqsave(&uap->port.lock, flags);
+ 
+ 	/*
+ 	 *	First save the CR then disable the interrupts
+@@ -1789,8 +1795,7 @@ pl011_console_write(struct console *co, const char *s, unsigned int count)
+ 	writew(old_cr, uap->port.membase + UART011_CR);
+ 
+ 	if (locked)
+-		spin_unlock(&uap->port.lock);
+-	local_irq_restore(flags);
++		spin_unlock_irqrestore(&uap->port.lock, flags);
+ 
+ 	clk_disable(uap->clk);
+ }

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0292-mmci-Remove-bogus-local_irq_save.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0292-mmci-Remove-bogus-local_irq_save.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0292-mmci-Remove-bogus-local_irq_save.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0292-mmci-Remove-bogus-local_irq_save.patch)
@@ -0,0 +1,44 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 9 Jan 2013 12:11:12 +0100
+Subject: [PATCH 292/371] mmci: Remove bogus local_irq_save()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=88bfc8dd6f7cc11b31fad971c45f1fcae623ad6d
+
+On !RT interrupt runs with interrupts disabled. On RT it's in a
+thread, so no need to disable interrupts at all.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ drivers/mmc/host/mmci.c | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
+index 0726e59..5d7bf83 100644
+--- a/drivers/mmc/host/mmci.c
++++ b/drivers/mmc/host/mmci.c
+@@ -859,15 +859,12 @@ static irqreturn_t mmci_pio_irq(int irq, void *dev_id)
+ 	struct sg_mapping_iter *sg_miter = &host->sg_miter;
+ 	struct variant_data *variant = host->variant;
+ 	void __iomem *base = host->base;
+-	unsigned long flags;
+ 	u32 status;
+ 
+ 	status = readl(base + MMCISTATUS);
+ 
+ 	dev_dbg(mmc_dev(host->mmc), "irq1 (pio) %08x\n", status);
+ 
+-	local_irq_save(flags);
+-
+ 	do {
+ 		unsigned int remain, len;
+ 		char *buffer;
+@@ -907,8 +904,6 @@ static irqreturn_t mmci_pio_irq(int irq, void *dev_id)
+ 
+ 	sg_miter_stop(sg_miter);
+ 
+-	local_irq_restore(flags);
+-
+ 	/*
+ 	 * If we have less than the fifo 'half-full' threshold to transfer,
+ 	 * trigger a PIO interrupt as soon as any data is available.

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0293-sched-Init-idle-on_rq-in-init_idle.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0293-sched-Init-idle-on_rq-in-init_idle.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0293-sched-Init-idle-on_rq-in-init_idle.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0293-sched-Init-idle-on_rq-in-init_idle.patch)
@@ -0,0 +1,24 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 9 Jan 2013 23:03:29 +0100
+Subject: [PATCH 293/371] sched: Init idle->on_rq in init_idle()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1e4ee3eb7b0367e4c0c6c73623215cfc96967214
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/sched.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/kernel/sched.c b/kernel/sched.c
+index 7c2ed6a..5e34172 100644
+--- a/kernel/sched.c
++++ b/kernel/sched.c
+@@ -6524,6 +6524,7 @@ void __cpuinit init_idle(struct task_struct *idle, int cpu)
+ 	rcu_read_unlock();
+ 
+ 	rq->curr = rq->idle = idle;
++	idle->on_rq = 1;
+ #if defined(CONFIG_SMP)
+ 	idle->on_cpu = 1;
+ #endif

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0294-sched-Check-for-idle-task-in-might_sleep.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0294-sched-Check-for-idle-task-in-might_sleep.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0294-sched-Check-for-idle-task-in-might_sleep.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0294-sched-Check-for-idle-task-in-might_sleep.patch)
@@ -0,0 +1,28 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 9 Jan 2013 23:34:08 +0100
+Subject: [PATCH 294/371] sched: Check for idle task in might_sleep()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=68da4089b12d67b2ac1d53043b248aca93eee520
+
+Idle is not allowed to call sleeping functions ever!
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/sched.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/kernel/sched.c b/kernel/sched.c
+index 5e34172..7dec8a3 100644
+--- a/kernel/sched.c
++++ b/kernel/sched.c
+@@ -8950,7 +8950,8 @@ void __might_sleep(const char *file, int line, int preempt_offset)
+ 	static unsigned long prev_jiffy;	/* ratelimiting */
+ 
+ 	rcu_sleep_check(); /* WARN_ON_ONCE() by default, no rate limit reqd. */
+-	if ((preempt_count_equals(preempt_offset) && !irqs_disabled()) ||
++	if ((preempt_count_equals(preempt_offset) && !irqs_disabled() &&
++	     !is_idle_task(current)) ||
+ 	    system_state != SYSTEM_RUNNING || oops_in_progress)
+ 		return;
+ 	if (time_before(jiffies, prev_jiffy + HZ) && prev_jiffy)

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0295-mm-swap-Initialize-local-locks-early.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0295-mm-swap-Initialize-local-locks-early.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0295-mm-swap-Initialize-local-locks-early.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0295-mm-swap-Initialize-local-locks-early.patch)
@@ -0,0 +1,42 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Thu, 10 Jan 2013 09:50:51 +0100
+Subject: [PATCH 295/371] mm: swap: Initialize local locks early
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=34430fb7c9c0fdc25a988d4071dc81e094b95b9b
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ mm/swap.c | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/mm/swap.c b/mm/swap.c
+index 15dc477..37b0623 100644
+--- a/mm/swap.c
++++ b/mm/swap.c
+@@ -848,6 +848,15 @@ unsigned pagevec_lookup(struct pagevec *pvec, struct address_space *mapping,
+ 
+ EXPORT_SYMBOL(pagevec_lookup);
+ 
++/* Early setup for the local locks */
++static int __init swap_init_locks(void)
++{
++	local_irq_lock_init(rotate_lock);
++	local_irq_lock_init(swap_lock);
++	return 1;
++}
++early_initcall(swap_init_locks);
++
+ unsigned pagevec_lookup_tag(struct pagevec *pvec, struct address_space *mapping,
+ 		pgoff_t *index, int tag, unsigned nr_pages)
+ {
+@@ -865,9 +874,6 @@ void __init swap_setup(void)
+ {
+ 	unsigned long megs = totalram_pages >> (20 - PAGE_SHIFT);
+ 
+-	local_irq_lock_init(rotate_lock);
+-	local_irq_lock_init(swap_lock);
+-
+ #ifdef CONFIG_SWAP
+ 	bdi_init(swapper_space.backing_dev_info);
+ #endif

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0296-x86-32-Use-kmap-switch-for-non-highmem-as-well.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0296-x86-32-Use-kmap-switch-for-non-highmem-as-well.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0296-x86-32-Use-kmap-switch-for-non-highmem-as-well.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0296-x86-32-Use-kmap-switch-for-non-highmem-as-well.patch)
@@ -0,0 +1,46 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 13 Feb 2013 10:59:53 +0100
+Subject: [PATCH 296/371] x86/32: Use kmap switch for non highmem as well
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c908dc93d6c9f320f3db6b40b9ff7229fddc5f69
+
+Even with CONFIG_HIGHMEM=n we need to take care of the "atomic"
+mappings which are installed via iomap_atomic.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ arch/x86/kernel/process_32.c | 2 +-
+ include/linux/sched.h        | 4 +++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
+index 20f1573..66ee590 100644
+--- a/arch/x86/kernel/process_32.c
++++ b/arch/x86/kernel/process_32.c
+@@ -340,7 +340,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+ 		     task_thread_info(next_p)->flags & _TIF_WORK_CTXSW_NEXT))
+ 		__switch_to_xtra(prev_p, next_p, tss);
+ 
+-#if defined CONFIG_PREEMPT_RT_FULL && defined CONFIG_HIGHMEM
++#ifdef CONFIG_PREEMPT_RT_FULL
+ 	/*
+ 	 * Save @prev's kmap_atomic stack
+ 	 */
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index f201419..8b91b7c 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
+@@ -1613,9 +1613,11 @@ struct task_struct {
+ 	struct rcu_head put_rcu;
+ 	int softirq_nestcnt;
+ #endif
+-#if defined CONFIG_PREEMPT_RT_FULL && defined CONFIG_HIGHMEM
++#ifdef CONFIG_PREEMPT_RT_FULL
++# if defined CONFIG_HIGHMEM || defined CONFIG_X86_32
+ 	int kmap_idx;
+ 	pte_t kmap_pte[KM_TYPE_NR];
++# endif
+ #endif
+ 
+ #ifdef CONFIG_DEBUG_PREEMPT

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0297-acpi-rt-Convert-acpi_gbl_hardware-lock-back-to-a-raw.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0297-acpi-rt-Convert-acpi_gbl_hardware-lock-back-to-a-raw.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0297-acpi-rt-Convert-acpi_gbl_hardware-lock-back-to-a-raw.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0297-acpi-rt-Convert-acpi_gbl_hardware-lock-back-to-a-raw.patch)
@@ -0,0 +1,183 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Wed, 13 Feb 2013 09:26:05 -0500
+Subject: [PATCH 297/371] acpi/rt: Convert acpi_gbl_hardware lock back to a
+ raw_spinlock_t
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1be49a761af99fab71bbffa40166dc069fbf5c3a
+
+We hit the following bug with 3.6-rt:
+
+[    5.898990] BUG: scheduling while atomic: swapper/3/0/0x00000002
+[    5.898991] no locks held by swapper/3/0.
+[    5.898993] Modules linked in:
+[    5.898996] Pid: 0, comm: swapper/3 Not tainted 3.6.11-rt28.19.el6rt.x86_64.debug #1
+[    5.898997] Call Trace:
+[    5.899011]  [<ffffffff810804e7>] __schedule_bug+0x67/0x90
+[    5.899028]  [<ffffffff81577923>] __schedule+0x793/0x7a0
+[    5.899032]  [<ffffffff810b4e40>] ? debug_rt_mutex_print_deadlock+0x50/0x200
+[    5.899034]  [<ffffffff81577b89>] schedule+0x29/0x70
+[    5.899036] BUG: scheduling while atomic: swapper/7/0/0x00000002
+[    5.899037] no locks held by swapper/7/0.
+[    5.899039]  [<ffffffff81578525>] rt_spin_lock_slowlock+0xe5/0x2f0
+[    5.899040] Modules linked in:
+[    5.899041]
+[    5.899045]  [<ffffffff81579a58>] ? _raw_spin_unlock_irqrestore+0x38/0x90
+[    5.899046] Pid: 0, comm: swapper/7 Not tainted 3.6.11-rt28.19.el6rt.x86_64.debug #1
+[    5.899047] Call Trace:
+[    5.899049]  [<ffffffff81578bc6>] rt_spin_lock+0x16/0x40
+[    5.899052]  [<ffffffff810804e7>] __schedule_bug+0x67/0x90
+[    5.899054]  [<ffffffff8157d3f0>] ? notifier_call_chain+0x80/0x80
+[    5.899056]  [<ffffffff81577923>] __schedule+0x793/0x7a0
+[    5.899059]  [<ffffffff812f2034>] acpi_os_acquire_lock+0x1f/0x23
+[    5.899062]  [<ffffffff810b4e40>] ? debug_rt_mutex_print_deadlock+0x50/0x200
+[    5.899068]  [<ffffffff8130be64>] acpi_write_bit_register+0x33/0xb0
+[    5.899071]  [<ffffffff81577b89>] schedule+0x29/0x70
+[    5.899072]  [<ffffffff8130be13>] ? acpi_read_bit_register+0x33/0x51
+[    5.899074]  [<ffffffff81578525>] rt_spin_lock_slowlock+0xe5/0x2f0
+[    5.899077]  [<ffffffff8131d1fc>] acpi_idle_enter_bm+0x8a/0x28e
+[    5.899079]  [<ffffffff81579a58>] ? _raw_spin_unlock_irqrestore+0x38/0x90
+[    5.899081]  [<ffffffff8107e5da>] ? this_cpu_load+0x1a/0x30
+[    5.899083]  [<ffffffff81578bc6>] rt_spin_lock+0x16/0x40
+[    5.899087]  [<ffffffff8144c759>] cpuidle_enter+0x19/0x20
+[    5.899088]  [<ffffffff8157d3f0>] ? notifier_call_chain+0x80/0x80
+[    5.899090]  [<ffffffff8144c777>] cpuidle_enter_state+0x17/0x50
+[    5.899092]  [<ffffffff812f2034>] acpi_os_acquire_lock+0x1f/0x23
+[    5.899094]  [<ffffffff8144d1a1>] cpuidle899101]  [<ffffffff8130be13>] ?
+
+As the acpi code disables interrupts in acpi_idle_enter_bm, and calls
+code that grabs the acpi lock, it causes issues as the lock is currently
+in RT a sleeping lock.
+
+The lock was converted from a raw to a sleeping lock due to some
+previous issues, and tests that showed it didn't seem to matter.
+Unfortunately, it did matter for one of our boxes.
+
+This patch converts the lock back to a raw lock. I've run this code on a
+few of my own machines, one being my laptop that uses the acpi quite
+extensively. I've been able to suspend and resume without issues.
+
+[ tglx: Made the change exclusive for acpi_gbl_hardware_lock ]
+
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+Cc: John Kacur <jkacur at gmail.com>
+Cc: Clark Williams <clark at redhat.com>
+Link: http://lkml.kernel.org/r/1360765565.23152.5.camel@gandalf.local.home
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ drivers/acpi/acpica/acglobal.h  |  2 +-
+ drivers/acpi/acpica/hwregs.c    |  4 ++--
+ drivers/acpi/acpica/hwxface.c   |  4 ++--
+ drivers/acpi/acpica/utmutex.c   |  4 ++--
+ include/acpi/platform/aclinux.h | 14 ++++++++++++++
+ 5 files changed, 21 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/acpi/acpica/acglobal.h b/drivers/acpi/acpica/acglobal.h
+index 76dc02f1..ca6bbe7 100644
+--- a/drivers/acpi/acpica/acglobal.h
++++ b/drivers/acpi/acpica/acglobal.h
+@@ -236,7 +236,7 @@ ACPI_EXTERN u8 acpi_gbl_global_lock_pending;
+  * interrupt level
+  */
+ ACPI_EXTERN acpi_spinlock acpi_gbl_gpe_lock;	/* For GPE data structs and registers */
+-ACPI_EXTERN acpi_spinlock acpi_gbl_hardware_lock;	/* For ACPI H/W except GPE registers */
++ACPI_EXTERN acpi_raw_spinlock acpi_gbl_hardware_lock;	/* For ACPI H/W except GPE registers */
+ 
+ /*****************************************************************************
+  *
+diff --git a/drivers/acpi/acpica/hwregs.c b/drivers/acpi/acpica/hwregs.c
+index cc70f3f..1df2ce6 100644
+--- a/drivers/acpi/acpica/hwregs.c
++++ b/drivers/acpi/acpica/hwregs.c
+@@ -263,14 +263,14 @@ acpi_status acpi_hw_clear_acpi_status(void)
+ 			  ACPI_BITMASK_ALL_FIXED_STATUS,
+ 			  ACPI_FORMAT_UINT64(acpi_gbl_xpm1a_status.address)));
+ 
+-	lock_flags = acpi_os_acquire_lock(acpi_gbl_hardware_lock);
++	raw_spin_lock_irqsave(acpi_gbl_hardware_lock, lock_flags);
+ 
+ 	/* Clear the fixed events in PM1 A/B */
+ 
+ 	status = acpi_hw_register_write(ACPI_REGISTER_PM1_STATUS,
+ 					ACPI_BITMASK_ALL_FIXED_STATUS);
+ 
+-	acpi_os_release_lock(acpi_gbl_hardware_lock, lock_flags);
++	raw_spin_unlock_irqrestore(acpi_gbl_hardware_lock, lock_flags);
+ 
+ 	if (ACPI_FAILURE(status))
+ 		goto exit;
+diff --git a/drivers/acpi/acpica/hwxface.c b/drivers/acpi/acpica/hwxface.c
+index c2793a8..5b28769 100644
+--- a/drivers/acpi/acpica/hwxface.c
++++ b/drivers/acpi/acpica/hwxface.c
+@@ -387,7 +387,7 @@ acpi_status acpi_write_bit_register(u32 register_id, u32 value)
+ 		return_ACPI_STATUS(AE_BAD_PARAMETER);
+ 	}
+ 
+-	lock_flags = acpi_os_acquire_lock(acpi_gbl_hardware_lock);
++	raw_spin_lock_irqsave(acpi_gbl_hardware_lock, lock_flags);
+ 
+ 	/*
+ 	 * At this point, we know that the parent register is one of the
+@@ -448,7 +448,7 @@ acpi_status acpi_write_bit_register(u32 register_id, u32 value)
+ 
+ unlock_and_exit:
+ 
+-	acpi_os_release_lock(acpi_gbl_hardware_lock, lock_flags);
++	raw_spin_unlock_irqrestore(acpi_gbl_hardware_lock, lock_flags);
+ 	return_ACPI_STATUS(status);
+ }
+ 
+diff --git a/drivers/acpi/acpica/utmutex.c b/drivers/acpi/acpica/utmutex.c
+index 7d797e2..b611bf3 100644
+--- a/drivers/acpi/acpica/utmutex.c
++++ b/drivers/acpi/acpica/utmutex.c
+@@ -88,7 +88,7 @@ acpi_status acpi_ut_mutex_initialize(void)
+ 		return_ACPI_STATUS (status);
+ 	}
+ 
+-	status = acpi_os_create_lock (&acpi_gbl_hardware_lock);
++	status = acpi_os_create_raw_lock (&acpi_gbl_hardware_lock);
+ 	if (ACPI_FAILURE (status)) {
+ 		return_ACPI_STATUS (status);
+ 	}
+@@ -135,7 +135,7 @@ void acpi_ut_mutex_terminate(void)
+ 	/* Delete the spinlocks */
+ 
+ 	acpi_os_delete_lock(acpi_gbl_gpe_lock);
+-	acpi_os_delete_lock(acpi_gbl_hardware_lock);
++	acpi_os_delete_raw_lock(acpi_gbl_hardware_lock);
+ 
+ 	/* Delete the reader/writer lock */
+ 
+diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h
+index f4b2eff..0e70789 100644
+--- a/include/acpi/platform/aclinux.h
++++ b/include/acpi/platform/aclinux.h
+@@ -73,6 +73,7 @@
+ 
+ #define acpi_cache_t                        struct kmem_cache
+ #define acpi_spinlock                       spinlock_t *
++#define acpi_raw_spinlock                   raw_spinlock_t *
+ #define acpi_cpu_flags                      unsigned long
+ 
+ #else /* !__KERNEL__ */
+@@ -176,6 +177,19 @@ static inline void *acpi_os_acquire_object(acpi_cache_t * cache)
+ 	lock ? AE_OK : AE_NO_MEMORY;				\
+ })
+ 
++#define acpi_os_create_raw_lock(__handle)			\
++({								\
++	raw_spinlock_t *lock = ACPI_ALLOCATE(sizeof(*lock));	\
++								\
++	if (lock) {						\
++		*(__handle) = lock;				\
++		raw_spin_lock_init(*(__handle));		\
++	}							\
++	lock ? AE_OK : AE_NO_MEMORY;				\
++})
++
++#define acpi_os_delete_raw_lock(__handle)	kfree(__handle)
++
+ #endif /* __KERNEL__ */
+ 
+ #endif /* __ACLINUX_H__ */

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0298-serial-Imx-Fix-recursive-locking-bug.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0298-serial-Imx-Fix-recursive-locking-bug.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0298-serial-Imx-Fix-recursive-locking-bug.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0298-serial-Imx-Fix-recursive-locking-bug.patch)
@@ -0,0 +1,125 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Thu, 14 Feb 2013 21:01:06 +0100
+Subject: [PATCH 298/371] serial: Imx: Fix recursive locking bug
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=225e23914f882db96fa47764834b016c61b2d888
+
+commit 9ec1882df2 (tty: serial: imx: console write routing is unsafe
+on SMP) introduced a recursive locking bug in imx_console_write().
+
+The callchain is:
+
+imx_rxint()
+  spin_lock_irqsave(&sport->port.lock,flags);
+  ...
+  uart_handle_sysrq_char();
+    sysrq_function();
+      printk();
+        imx_console_write();
+          spin_lock_irqsave(&sport->port.lock,flags); <--- DEAD
+
+The bad news is that the kernel debugging facilities can dectect the
+problem, but the printks never surface on the serial console for
+obvious reasons.
+
+There is a similar issue with oops_in_progress. If the kernel crashes
+we really don't want to be stuck on the lock and unable to tell what
+happened.
+
+In general most UP originated drivers miss these checks and nobody
+ever notices because CONFIG_PROVE_LOCKING seems to be still ignored by
+a large number of developers.
+
+The solution is to avoid locking in the sysrq case and trylock in the
+oops_in_progress case.
+
+This scheme is used in other drivers as well and it would be nice if
+we could move this to a common place, so the usual copy/paste/modify
+bugs can be avoided.
+
+Now there is another issue with this scheme:
+
+CPU0 	    	     	 CPU1
+printk()
+			 rxint()
+			   sysrq_detection() -> sets port->sysrq
+			 return from interrupt
+  console_write()
+     if (port->sysrq)
+     	avoid locking
+
+port->sysrq is reset with the next receive character. So as long as
+the port->sysrq is not reset and this can take an endless amount of
+time if after the break no futher receive character follows, all
+console writes happen unlocked.
+
+While the current writer is protected against other console writers by
+the console sem, it's unprotected against open/close or other
+operations which fiddle with the port. That's what the above mentioned
+commit tried to solve.
+
+That's an issue in all drivers which use that scheme and unfortunately
+there is no easy workaround. The only solution is to have a separate
+indicator port->sysrq_cpu. uart_handle_sysrq_char() then sets it to
+smp_processor_id() before calling into handle_sysrq() and resets it to
+-1 after that. Then change the locking check to:
+
+     if (port->sysrq_cpu == smp_processor_id())
+     	 locked = 0;
+     else if (oops_in_progress)
+         locked = spin_trylock_irqsave(port->lock, flags);
+     else
+  	 spin_lock_irqsave(port->lock, flags);
+
+That would force all other cpus into the spin_lock path. Problem
+solved, but that's way beyond the scope of this fix and really wants
+to be implemented in a common function which calls the uart specific
+write function to avoid another gazillion of hard to debug
+copy/paste/modify bugs.
+
+Reported-and-tested-by: Tim Sander <tim at krieglstein.org>
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
+Cc: Jiri Slaby <jslaby at suse.cz>
+Cc: Xinyu Chen <xinyu.chen at freescale.com>
+Cc: Dirk Behme <dirk.behme at de.bosch.com>
+Cc: Shawn Guo <shawn.guo at linaro.org>
+Cc: Tim Sander <tim at krieglstein.org>
+Cc: Sascha Hauer <s.hauer at pengutronix.de>
+Cc: stable-rt at vger.kernel.org
+Link: http://lkml.kernel.org/r/alpine.LFD.2.02.1302142006050.22263@ionos
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ drivers/tty/serial/imx.c | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
+index 8e68f79..5f5c214 100644
+--- a/drivers/tty/serial/imx.c
++++ b/drivers/tty/serial/imx.c
+@@ -1115,8 +1115,14 @@ imx_console_write(struct console *co, const char *s, unsigned int count)
+ 	struct imx_port *sport = imx_ports[co->index];
+ 	unsigned int old_ucr1, old_ucr2, ucr1;
+ 	unsigned long flags;
++	int locked = 1;
+ 
+-	spin_lock_irqsave(&sport->port.lock, flags);
++	if (sport->port.sysrq)
++		locked = 0;
++	else if (oops_in_progress)
++		locked = spin_trylock_irqsave(&sport->port.lock, flags);
++	else
++		spin_lock_irqsave(&sport->port.lock, flags);
+ 
+ 	/*
+ 	 *	First, save UCR1/2 and then disable interrupts
+@@ -1144,7 +1150,8 @@ imx_console_write(struct console *co, const char *s, unsigned int count)
+ 	writel(old_ucr1, sport->port.membase + UCR1);
+ 	writel(old_ucr2, sport->port.membase + UCR2);
+ 
+-	spin_unlock_irqrestore(&sport->port.lock, flags);
++	if (locked)
++		spin_unlock_irqrestore(&sport->port.lock, flags);
+ }
+ 
+ /*

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0299-wait-simple-Simple-waitqueue-implementation.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0299-wait-simple-Simple-waitqueue-implementation.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0299-wait-simple-Simple-waitqueue-implementation.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0299-wait-simple-Simple-waitqueue-implementation.patch)
@@ -0,0 +1,341 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Mon, 12 Dec 2011 12:29:04 +0100
+Subject: [PATCH 299/371] wait-simple: Simple waitqueue implementation
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ce6f68bba7955821cac7ecdb5f4de83422ab0f2a
+
+wait_queue is a swiss army knife and in most of the cases the
+complexity is not needed. For RT waitqueues are a constant source of
+trouble as we can't convert the head lock to a raw spinlock due to
+fancy and long lasting callbacks.
+
+Provide a slim version, which allows RT to replace wait queues. This
+should go mainline as well, as it lowers memory consumption and
+runtime overhead.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+[backport by: Tim Sander <tim.sander at hbm.com> ]
+---
+ include/linux/wait-simple.h | 172 ++++++++++++++++++++++++++++++++++++++++++++
+ kernel/Makefile             |   2 +-
+ kernel/wait-simple.c        | 119 ++++++++++++++++++++++++++++++
+ 3 files changed, 292 insertions(+), 1 deletion(-)
+ create mode 100644 include/linux/wait-simple.h
+ create mode 100644 kernel/wait-simple.c
+
+diff --git a/include/linux/wait-simple.h b/include/linux/wait-simple.h
+new file mode 100644
+index 0000000..44fee60
+--- /dev/null
++++ b/include/linux/wait-simple.h
+@@ -0,0 +1,172 @@
++#ifndef _LINUX_WAIT_SIMPLE_H
++#define _LINUX_WAIT_SIMPLE_H
++
++#include <linux/spinlock.h>
++#include <linux/list.h>
++
++#include <asm/current.h>
++
++struct swaiter {
++	struct task_struct	*task;
++	struct list_head	node;
++};
++
++#define DEFINE_SWAITER(name)					\
++	struct swaiter name = {					\
++		.task	= current,				\
++		.node	= LIST_HEAD_INIT((name).node),		\
++	}
++
++struct swait_head {
++	raw_spinlock_t		lock;
++	struct list_head	list;
++};
++
++#define SWAIT_HEAD_INITIALIZER(name) {				\
++		.lock	= __RAW_SPIN_LOCK_UNLOCKED(name.lock),	\
++		.list	= LIST_HEAD_INIT((name).list),		\
++	}
++
++#define DEFINE_SWAIT_HEAD(name)					\
++	struct swait_head name = SWAIT_HEAD_INITIALIZER(name)
++
++extern void __init_swait_head(struct swait_head *h, struct lock_class_key *key);
++
++#define init_swait_head(swh)					\
++	do {							\
++		static struct lock_class_key __key;		\
++								\
++		__init_swait_head((swh), &__key);		\
++	} while (0)
++
++/*
++ * Waiter functions
++ */
++extern void swait_prepare_locked(struct swait_head *head, struct swaiter *w);
++extern void swait_prepare(struct swait_head *head, struct swaiter *w, int state);
++extern void swait_finish_locked(struct swait_head *head, struct swaiter *w);
++extern void swait_finish(struct swait_head *head, struct swaiter *w);
++
++/*
++ * Wakeup functions
++ */
++extern unsigned int __swait_wake(struct swait_head *head, unsigned int state, unsigned int num);
++extern unsigned int __swait_wake_locked(struct swait_head *head, unsigned int state, unsigned int num);
++
++#define swait_wake(head)			__swait_wake(head, TASK_NORMAL, 1)
++#define swait_wake_interruptible(head)		__swait_wake(head, TASK_INTERRUPTIBLE, 1)
++#define swait_wake_all(head)			__swait_wake(head, TASK_NORMAL, 0)
++#define swait_wake_all_interruptible(head)	__swait_wake(head, TASK_INTERRUPTIBLE, 0)
++
++/*
++ * Event API
++ */
++#define __swait_event(wq, condition)					\
++do {									\
++	DEFINE_SWAITER(__wait);						\
++									\
++	for (;;) {							\
++		swait_prepare(&wq, &__wait, TASK_UNINTERRUPTIBLE);	\
++		if (condition)						\
++			break;						\
++		schedule();						\
++	}								\
++	swait_finish(&wq, &__wait);					\
++} while (0)
++
++/**
++ * swait_event - sleep until a condition gets true
++ * @wq: the waitqueue to wait on
++ * @condition: a C expression for the event to wait for
++ *
++ * The process is put to sleep (TASK_UNINTERRUPTIBLE) until the
++ * @condition evaluates to true. The @condition is checked each time
++ * the waitqueue @wq is woken up.
++ *
++ * wake_up() has to be called after changing any variable that could
++ * change the result of the wait condition.
++ */
++#define swait_event(wq, condition)					\
++do {									\
++	if (condition)							\
++		break;							\
++	__swait_event(wq, condition);					\
++} while (0)
++
++#define __swait_event_interruptible(wq, condition, ret)			\
++do {									\
++	DEFINE_SWAITER(__wait);						\
++									\
++	for (;;) {							\
++		swait_prepare(&wq, &__wait, TASK_INTERRUPTIBLE);	\
++		if (condition)						\
++			break;						\
++		if (signal_pending(current)) {				\
++			ret = -ERESTARTSYS;				\
++			break;						\
++		}							\
++		schedule();						\
++	}								\
++	swait_finish(&wq, &__wait);					\
++} while (0)
++
++/**
++ * swait_event_interruptible - sleep until a condition gets true
++ * @wq: the waitqueue to wait on
++ * @condition: a C expression for the event to wait for
++ *
++ * The process is put to sleep (TASK_INTERRUPTIBLE) until the
++ * @condition evaluates to true. The @condition is checked each time
++ * the waitqueue @wq is woken up.
++ *
++ * wake_up() has to be called after changing any variable that could
++ * change the result of the wait condition.
++ */
++#define swait_event_interruptible(wq, condition)			\
++({									\
++	int __ret = 0;							\
++	if (!(condition))						\
++		__swait_event_interruptible(wq, condition, __ret);	\
++	__ret;								\
++})
++
++#define __swait_event_timeout(wq, condition, ret)			\
++do {									\
++	DEFINE_SWAITER(__wait);						\
++									\
++	for (;;) {							\
++		swait_prepare(&wq, &__wait, TASK_UNINTERRUPTIBLE);	\
++		if (condition)						\
++			break;						\
++		ret = schedule_timeout(ret);				\
++		if (!ret)						\
++			break;						\
++	}								\
++	swait_finish(&wq, &__wait);					\
++} while (0)
++
++/**
++ * swait_event_timeout - sleep until a condition gets true or a timeout elapses
++ * @wq: the waitqueue to wait on
++ * @condition: a C expression for the event to wait for
++ * @timeout: timeout, in jiffies
++ *
++ * The process is put to sleep (TASK_UNINTERRUPTIBLE) until the
++ * @condition evaluates to true. The @condition is checked each time
++ * the waitqueue @wq is woken up.
++ *
++ * wake_up() has to be called after changing any variable that could
++ * change the result of the wait condition.
++ *
++ * The function returns 0 if the @timeout elapsed, and the remaining
++ * jiffies if the condition evaluated to true before the timeout elapsed.
++ */
++#define swait_event_timeout(wq, condition, timeout)			\
++({									\
++	long __ret = timeout;						\
++	if (!(condition))						\
++		__swait_event_timeout(wq, condition, __ret);		\
++	__ret;								\
++})
++
++#endif
+diff --git a/kernel/Makefile b/kernel/Makefile
+index c961d3a..0b0ed50 100644
+--- a/kernel/Makefile
++++ b/kernel/Makefile
+@@ -11,7 +11,7 @@ obj-y     = sched.o fork.o exec_domain.o panic.o printk.o \
+ 	    hrtimer.o nsproxy.o srcu.o semaphore.o \
+ 	    notifier.o ksysfs.o sched_clock.o cred.o \
+ 	    async.o range.o
+-obj-y += groups.o
++obj-y += groups.o wait-simple.o
+ 
+ ifdef CONFIG_FUNCTION_TRACER
+ # Do not trace debug files and internal ftrace files
+diff --git a/kernel/wait-simple.c b/kernel/wait-simple.c
+new file mode 100644
+index 0000000..c35ec78
+--- /dev/null
++++ b/kernel/wait-simple.c
+@@ -0,0 +1,119 @@
++/*
++ * Simple waitqueues without fancy flags and callbacks
++ *
++ * (C) 2011 Thomas Gleixner <tglx at linutronix.de>
++ *
++ * Based on kernel/wait.c
++ *
++ * For licencing details see kernel-base/COPYING
++ */
++#include <linux/init.h>
++#include <linux/export.h>
++#include <linux/sched.h>
++#include <linux/wait-simple.h>
++
++/* Adds w to head->list. Must be called with head->lock locked. */
++static inline void __swait_enqueue(struct swait_head *head, struct swaiter *w)
++{
++	list_add(&w->node, &head->list);
++}
++
++/* Removes w from head->list. Must be called with head->lock locked. */
++static inline void __swait_dequeue(struct swaiter *w)
++{
++	list_del_init(&w->node);
++}
++
++/* Check whether a head has waiters enqueued */
++static inline bool swait_head_has_waiters(struct swait_head *h)
++{
++	return !list_empty(&h->list);
++}
++
++void __init_swait_head(struct swait_head *head, struct lock_class_key *key)
++{
++	raw_spin_lock_init(&head->lock);
++	lockdep_set_class(&head->lock, key);
++	INIT_LIST_HEAD(&head->list);
++}
++EXPORT_SYMBOL_GPL(__init_swait_head);
++
++void swait_prepare_locked(struct swait_head *head, struct swaiter *w)
++{
++	w->task = current;
++	if (list_empty(&w->node))
++		__swait_enqueue(head, w);
++}
++
++void swait_prepare(struct swait_head *head, struct swaiter *w, int state)
++{
++	unsigned long flags;
++
++	raw_spin_lock_irqsave(&head->lock, flags);
++	swait_prepare_locked(head, w);
++	__set_current_state(state);
++	raw_spin_unlock_irqrestore(&head->lock, flags);
++}
++EXPORT_SYMBOL_GPL(swait_prepare);
++
++void swait_finish_locked(struct swait_head *head, struct swaiter *w)
++{
++	__set_current_state(TASK_RUNNING);
++	if (w->task)
++		__swait_dequeue(w);
++}
++
++void swait_finish(struct swait_head *head, struct swaiter *w)
++{
++	unsigned long flags;
++
++	__set_current_state(TASK_RUNNING);
++	if (w->task) {
++		raw_spin_lock_irqsave(&head->lock, flags);
++		__swait_dequeue(w);
++		raw_spin_unlock_irqrestore(&head->lock, flags);
++	}
++}
++EXPORT_SYMBOL_GPL(swait_finish);
++
++unsigned int
++__swait_wake_locked(struct swait_head *head, unsigned int state, unsigned int num)
++{
++	struct swaiter *curr, *next;
++	int woken = 0;
++
++	list_for_each_entry_safe(curr, next, &head->list, node) {
++		if (wake_up_state(curr->task, state)) {
++			__swait_dequeue(curr);
++			/*
++			 * The waiting task can free the waiter as
++			 * soon as curr->task = NULL is written,
++			 * without taking any locks. A memory barrier
++			 * is required here to prevent the following
++			 * store to curr->task from getting ahead of
++			 * the dequeue operation.
++			 */
++			smp_wmb();
++			curr->task = NULL;
++			if (++woken == num)
++				break;
++		}
++	}
++	return woken;
++}
++
++unsigned int
++__swait_wake(struct swait_head *head, unsigned int state, unsigned int num)
++{
++	unsigned long flags;
++	int woken;
++
++	if (!swait_head_has_waiters(head))
++		return 0;
++
++	raw_spin_lock_irqsave(&head->lock, flags);
++	woken = __swait_wake_locked(head, state, num);
++	raw_spin_unlock_irqrestore(&head->lock, flags);
++	return woken;
++}
++EXPORT_SYMBOL_GPL(__swait_wake);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0300-rcutiny-Use-simple-waitqueue.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0300-rcutiny-Use-simple-waitqueue.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0300-rcutiny-Use-simple-waitqueue.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0300-rcutiny-Use-simple-waitqueue.patch)
@@ -0,0 +1,83 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Mon, 3 Dec 2012 16:25:21 +0100
+Subject: [PATCH 300/371] rcutiny: Use simple waitqueue
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7868407064f4a3bced56a064ecf56902acac6db5
+
+Simple waitqueues can be handled from interrupt disabled contexts.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/rcutiny_plugin.h | 17 +++++++++--------
+ 1 file changed, 9 insertions(+), 8 deletions(-)
+
+diff --git a/kernel/rcutiny_plugin.h b/kernel/rcutiny_plugin.h
+index 2b0484a..f0a6606 100644
+--- a/kernel/rcutiny_plugin.h
++++ b/kernel/rcutiny_plugin.h
+@@ -26,6 +26,7 @@
+ #include <linux/module.h>
+ #include <linux/debugfs.h>
+ #include <linux/seq_file.h>
++#include <linux/wait-simple.h>
+ 
+ /* Global control variables for rcupdate callback mechanism. */
+ struct rcu_ctrlblk {
+@@ -250,7 +251,7 @@ static void show_tiny_preempt_stats(struct seq_file *m)
+ 
+ /* Controls for rcu_kthread() kthread. */
+ static struct task_struct *rcu_kthread_task;
+-static DECLARE_WAIT_QUEUE_HEAD(rcu_kthread_wq);
++static DEFINE_SWAIT_HEAD(rcu_kthread_wq);
+ static unsigned long have_rcu_kthread_work;
+ 
+ /*
+@@ -720,7 +721,7 @@ void synchronize_rcu(void)
+ }
+ EXPORT_SYMBOL_GPL(synchronize_rcu);
+ 
+-static DECLARE_WAIT_QUEUE_HEAD(sync_rcu_preempt_exp_wq);
++static DEFINE_SWAIT_HEAD(sync_rcu_preempt_exp_wq);
+ static unsigned long sync_rcu_preempt_exp_count;
+ static DEFINE_MUTEX(sync_rcu_preempt_exp_mutex);
+ 
+@@ -742,7 +743,7 @@ static int rcu_preempted_readers_exp(void)
+  */
+ static void rcu_report_exp_done(void)
+ {
+-	wake_up(&sync_rcu_preempt_exp_wq);
++	swait_wake(&sync_rcu_preempt_exp_wq);
+ }
+ 
+ /*
+@@ -794,8 +795,8 @@ void synchronize_rcu_expedited(void)
+ 	else {
+ 		rcu_initiate_boost();
+ 		local_irq_restore(flags);
+-		wait_event(sync_rcu_preempt_exp_wq,
+-			   !rcu_preempted_readers_exp());
++		swait_event(sync_rcu_preempt_exp_wq,
++			    !rcu_preempted_readers_exp());
+ 	}
+ 
+ 	/* Clean up and exit. */
+@@ -882,7 +883,7 @@ static void rcu_preempt_process_callbacks(void)
+ static void invoke_rcu_callbacks(void)
+ {
+ 	have_rcu_kthread_work = 1;
+-	wake_up(&rcu_kthread_wq);
++	swake_up(&rcu_kthread_wq);
+ }
+ 
+ /*
+@@ -899,8 +900,8 @@ static int rcu_kthread(void *arg)
+ 	unsigned long flags;
+ 
+ 	for (;;) {
+-		wait_event_interruptible(rcu_kthread_wq,
+-					 have_rcu_kthread_work != 0);
++		swait_event_interruptible(rcu_kthread_wq,
++					  have_rcu_kthread_work != 0);
+ 		morework = rcu_boost();
+ 		local_irq_save(flags);
+ 		work = have_rcu_kthread_work;

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0301-rcutiny-Fix-typo-of-using-swake_up-instead-of-swait_.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0301-rcutiny-Fix-typo-of-using-swake_up-instead-of-swait_.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0301-rcutiny-Fix-typo-of-using-swake_up-instead-of-swait_.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0301-rcutiny-Fix-typo-of-using-swake_up-instead-of-swait_.patch)
@@ -0,0 +1,28 @@
+From: "Steven Rostedt (Red Hat)" <rostedt at goodmis.org>
+Date: Wed, 1 May 2013 09:38:20 -0400
+Subject: [PATCH 301/371] rcutiny: Fix typo of using swake_up() instead of
+ swait_wake()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=28fb56b13dbbec22227f484fc0e62d5b7ebda627
+
+Converting the rcutiny wake up queues to use the simple wait queues
+there was a typo in one of the functions.
+
+Reported-by: Dmitry Lysenko <dvl36.ripe.nick at gmail.com>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/rcutiny_plugin.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kernel/rcutiny_plugin.h b/kernel/rcutiny_plugin.h
+index f0a6606..6242ccd 100644
+--- a/kernel/rcutiny_plugin.h
++++ b/kernel/rcutiny_plugin.h
+@@ -883,7 +883,7 @@ static void rcu_preempt_process_callbacks(void)
+ static void invoke_rcu_callbacks(void)
+ {
+ 	have_rcu_kthread_work = 1;
+-	swake_up(&rcu_kthread_wq);
++	swait_wake(&rcu_kthread_wq);
+ }
+ 
+ /*

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0302-x86-mce-Defer-mce-wakeups-to-threads-for-PREEMPT_RT.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0302-x86-mce-Defer-mce-wakeups-to-threads-for-PREEMPT_RT.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0302-x86-mce-Defer-mce-wakeups-to-threads-for-PREEMPT_RT.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0302-x86-mce-Defer-mce-wakeups-to-threads-for-PREEMPT_RT.patch)
@@ -0,0 +1,173 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Thu, 11 Apr 2013 14:33:34 -0400
+Subject: [PATCH 302/371] x86/mce: Defer mce wakeups to threads for PREEMPT_RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b9614715cdde96bf8ba832b914e5ac0cee812f27
+
+We had a customer report a lockup on a 3.0-rt kernel that had the
+following backtrace:
+
+[ffff88107fca3e80] rt_spin_lock_slowlock at ffffffff81499113
+[ffff88107fca3f40] rt_spin_lock at ffffffff81499a56
+[ffff88107fca3f50] __wake_up at ffffffff81043379
+[ffff88107fca3f80] mce_notify_irq at ffffffff81017328
+[ffff88107fca3f90] intel_threshold_interrupt at ffffffff81019508
+[ffff88107fca3fa0] smp_threshold_interrupt at ffffffff81019fc1
+[ffff88107fca3fb0] threshold_interrupt at ffffffff814a1853
+
+It actually bugged because the lock was taken by the same owner that
+already had that lock. What happened was the thread that was setting
+itself on a wait queue had the lock when an MCE triggered. The MCE
+interrupt does a wake up on its wait list and grabs the same lock.
+
+NOTE: THIS IS NOT A BUG ON MAINLINE
+
+Sorry for yelling, but as I Cc'd mainline maintainers I want them to
+know that this is an PREEMPT_RT bug only. I only Cc'd them for advice.
+
+On PREEMPT_RT the wait queue locks are converted from normal
+"spin_locks" into an rt_mutex (see the rt_spin_lock_slowlock above).
+These are not to be taken by hard interrupt context. This usually isn't
+a problem as most all interrupts in PREEMPT_RT are converted into
+schedulable threads. Unfortunately that's not the case with the MCE irq.
+
+As wait queue locks are notorious for long hold times, we can not
+convert them to raw_spin_locks without causing issues with -rt. But
+Thomas has created a "simple-wait" structure that uses raw spin locks
+which may have been a good fit.
+
+Unfortunately, wait queues are not the only issue, as the mce_notify_irq
+also does a schedule_work(), which grabs the workqueue spin locks that
+have the exact same issue.
+
+Thus, this patch I'm proposing is to move the actual work of the MCE
+interrupt into a helper thread that gets woken up on the MCE interrupt
+and does the work in a schedulable context.
+
+NOTE: THIS PATCH ONLY CHANGES THE BEHAVIOR WHEN PREEMPT_RT IS SET
+
+Oops, sorry for yelling again, but I want to stress that I keep the same
+behavior of mainline when PREEMPT_RT is not set. Thus, this only changes
+the MCE behavior when PREEMPT_RT is configured.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+[bigeasy at linutronix: make mce_notify_work() a proper prototype, use
+		     kthread_run()]
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ arch/x86/kernel/cpu/mcheck/mce.c | 78 +++++++++++++++++++++++++++++++---------
+ 1 file changed, 61 insertions(+), 17 deletions(-)
+
+diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
+index 7e4f230..8ceb100a 100644
+--- a/arch/x86/kernel/cpu/mcheck/mce.c
++++ b/arch/x86/kernel/cpu/mcheck/mce.c
+@@ -15,6 +15,7 @@
+ #include <linux/rcupdate.h>
+ #include <linux/kobject.h>
+ #include <linux/uaccess.h>
++#include <linux/kthread.h>
+ #include <linux/kdebug.h>
+ #include <linux/kernel.h>
+ #include <linux/percpu.h>
+@@ -1158,6 +1159,63 @@ static void mce_do_trigger(struct work_struct *work)
+ 
+ static DECLARE_WORK(mce_trigger_work, mce_do_trigger);
+ 
++static void __mce_notify_work(void)
++{
++	/* Not more than two messages every minute */
++	static DEFINE_RATELIMIT_STATE(ratelimit, 60*HZ, 2);
++
++	/* wake processes polling /dev/mcelog */
++	wake_up_interruptible(&mce_chrdev_wait);
++
++	/*
++	 * There is no risk of missing notifications because
++	 * work_pending is always cleared before the function is
++	 * executed.
++	 */
++	if (mce_helper[0] && !work_pending(&mce_trigger_work))
++		schedule_work(&mce_trigger_work);
++
++	if (__ratelimit(&ratelimit))
++		pr_info(HW_ERR "Machine check events logged\n");
++}
++
++#ifdef CONFIG_PREEMPT_RT_FULL
++struct task_struct *mce_notify_helper;
++
++static int mce_notify_helper_thread(void *unused)
++{
++	while (1) {
++		set_current_state(TASK_INTERRUPTIBLE);
++		schedule();
++		if (kthread_should_stop())
++			break;
++		__mce_notify_work();
++	}
++	return 0;
++}
++
++static int mce_notify_work_init(void)
++{
++	mce_notify_helper = kthread_run(mce_notify_helper_thread, NULL,
++					   "mce-notify");
++	if (!mce_notify_helper)
++		return -ENOMEM;
++
++	return 0;
++}
++
++static void mce_notify_work(void)
++{
++	wake_up_process(mce_notify_helper);
++}
++#else
++static void mce_notify_work(void)
++{
++	__mce_notify_work();
++}
++static inline int mce_notify_work_init(void) { return 0; }
++#endif
++
+ /*
+  * Notify the user(s) about new machine check events.
+  * Can be called from interrupt context, but not from machine check/NMI
+@@ -1165,26 +1223,10 @@ static DECLARE_WORK(mce_trigger_work, mce_do_trigger);
+  */
+ int mce_notify_irq(void)
+ {
+-	/* Not more than two messages every minute */
+-	static DEFINE_RATELIMIT_STATE(ratelimit, 60*HZ, 2);
+-
+ 	clear_thread_flag(TIF_MCE_NOTIFY);
+ 
+ 	if (test_and_clear_bit(0, &mce_need_notify)) {
+-		/* wake processes polling /dev/mcelog */
+-		wake_up_interruptible(&mce_chrdev_wait);
+-
+-		/*
+-		 * There is no risk of missing notifications because
+-		 * work_pending is always cleared before the function is
+-		 * executed.
+-		 */
+-		if (mce_helper[0] && !work_pending(&mce_trigger_work))
+-			schedule_work(&mce_trigger_work);
+-
+-		if (__ratelimit(&ratelimit))
+-			pr_info(HW_ERR "Machine check events logged\n");
+-
++		mce_notify_work();
+ 		return 1;
+ 	}
+ 	return 0;
+@@ -2146,6 +2188,8 @@ static __init int mcheck_init_device(void)
+ 	/* register character device /dev/mcelog */
+ 	misc_register(&mce_chrdev_device);
+ 
++	err = mce_notify_work_init();
++
+ 	return err;
+ }
+ device_initcall(mcheck_init_device);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0303-swap-Use-unique-local-lock-name-for-swap_lock.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0303-swap-Use-unique-local-lock-name-for-swap_lock.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0303-swap-Use-unique-local-lock-name-for-swap_lock.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0303-swap-Use-unique-local-lock-name-for-swap_lock.patch)
@@ -0,0 +1,110 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Tue, 23 Apr 2013 16:10:00 -0400
+Subject: [PATCH 303/371] swap: Use unique local lock name for swap_lock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7aa4af2d9ded88b0803fe80c0c7f792c6cfd2aa2
+
+From lib/Kconfig.debug on CONFIG_FORCE_WEAK_PER_CPU:
+
+----
+s390 and alpha require percpu variables in modules to be
+defined weak to work around addressing range issue which
+puts the following two restrictions on percpu variable
+definitions.
+
+1. percpu symbols must be unique whether static or not
+2. percpu variables can't be defined inside a function
+
+To ensure that generic code follows the above rules, this
+option forces all percpu variables to be defined as weak.
+----
+
+The addition of the local IRQ swap_lock in mm/swap.c broke this config
+as the name "swap_lock" is used through out the kernel. Just do a "git
+grep swap_lock" to see, and the new swap_lock is a local lock which
+defines the swap_lock for per_cpu.
+
+The fix was to rename swap_lock to swapvec_lock which keeps it unique.
+
+Reported-by: Mike Galbraith <bitbucket at online.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ mm/swap.c | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/mm/swap.c b/mm/swap.c
+index 37b0623..66a3874 100644
+--- a/mm/swap.c
++++ b/mm/swap.c
+@@ -44,7 +44,7 @@ static DEFINE_PER_CPU(struct pagevec, lru_rotate_pvecs);
+ static DEFINE_PER_CPU(struct pagevec, lru_deactivate_pvecs);
+ 
+ static DEFINE_LOCAL_IRQ_LOCK(rotate_lock);
+-static DEFINE_LOCAL_IRQ_LOCK(swap_lock);
++static DEFINE_LOCAL_IRQ_LOCK(swapvec_lock);
+ 
+ /*
+  * This path almost never happens for VM activity - pages are normally
+@@ -407,13 +407,13 @@ static void activate_page_drain(int cpu)
+ void activate_page(struct page *page)
+ {
+ 	if (PageLRU(page) && !PageActive(page) && !PageUnevictable(page)) {
+-		struct pagevec *pvec = &get_locked_var(swap_lock,
++		struct pagevec *pvec = &get_locked_var(swapvec_lock,
+ 						       activate_page_pvecs);
+ 
+ 		page_cache_get(page);
+ 		if (!pagevec_add(pvec, page))
+ 			pagevec_lru_move_fn(pvec, __activate_page, NULL);
+-		put_locked_var(swap_lock, activate_page_pvecs);
++		put_locked_var(swapvec_lock, activate_page_pvecs);
+ 	}
+ }
+ 
+@@ -454,12 +454,12 @@ EXPORT_SYMBOL(mark_page_accessed);
+ 
+ void __lru_cache_add(struct page *page, enum lru_list lru)
+ {
+-	struct pagevec *pvec = &get_locked_var(swap_lock, lru_add_pvecs)[lru];
++	struct pagevec *pvec = &get_locked_var(swapvec_lock, lru_add_pvecs)[lru];
+ 
+ 	page_cache_get(page);
+ 	if (!pagevec_add(pvec, page))
+ 		____pagevec_lru_add(pvec, lru);
+-	put_locked_var(swap_lock, lru_add_pvecs);
++	put_locked_var(swapvec_lock, lru_add_pvecs);
+ }
+ EXPORT_SYMBOL(__lru_cache_add);
+ 
+@@ -623,19 +623,19 @@ void deactivate_page(struct page *page)
+ 		return;
+ 
+ 	if (likely(get_page_unless_zero(page))) {
+-		struct pagevec *pvec = &get_locked_var(swap_lock,
++		struct pagevec *pvec = &get_locked_var(swapvec_lock,
+ 						       lru_deactivate_pvecs);
+ 
+ 		if (!pagevec_add(pvec, page))
+ 			pagevec_lru_move_fn(pvec, lru_deactivate_fn, NULL);
+-		put_locked_var(swap_lock, lru_deactivate_pvecs);
++		put_locked_var(swapvec_lock, lru_deactivate_pvecs);
+ 	}
+ }
+ 
+ void lru_add_drain(void)
+ {
+-	drain_cpu_pagevecs(local_lock_cpu(swap_lock));
+-	local_unlock_cpu(swap_lock);
++	drain_cpu_pagevecs(local_lock_cpu(swapvec_lock));
++	local_unlock_cpu(swapvec_lock);
+ }
+ 
+ static void lru_add_drain_per_cpu(struct work_struct *dummy)
+@@ -852,7 +852,7 @@ EXPORT_SYMBOL(pagevec_lookup);
+ static int __init swap_init_locks(void)
+ {
+ 	local_irq_lock_init(rotate_lock);
+-	local_irq_lock_init(swap_lock);
++	local_irq_lock_init(swapvec_lock);
+ 	return 1;
+ }
+ early_initcall(swap_init_locks);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0304-sched-Add-is_idle_task-to-handle-invalidated-uses-of.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0304-sched-Add-is_idle_task-to-handle-invalidated-uses-of.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0304-sched-Add-is_idle_task-to-handle-invalidated-uses-of.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0304-sched-Add-is_idle_task-to-handle-invalidated-uses-of.patch)
@@ -0,0 +1,46 @@
+From: "Paul E. McKenney" <paul.mckenney at linaro.org>
+Date: Thu, 10 Nov 2011 12:41:56 -0800
+Subject: [PATCH 304/371] sched: Add is_idle_task() to handle invalidated uses
+ of idle_cpu()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1ec1584cebc36da7976e2bab9ab6bad57a913d2e
+
+Commit 908a3283 (Fix idle_cpu()) invalidated some uses of idle_cpu(),
+which used to say whether or not the CPU was running the idle task,
+but now instead says whether or not the CPU is running the idle task
+in the absence of pending wakeups.  Although this new implementation
+gives a better answer to the question "is this CPU idle?", it also
+invalidates other uses that were made of idle_cpu().
+
+This commit therefore introduces a new is_idle_task() API member
+that determines whether or not the specified task is one of the
+idle tasks, allowing open-coded "->pid == 0" sequences to be replaced
+by something more meaningful.
+
+Suggested-by: Josh Triplett <josh at joshtriplett.org>
+Suggested-by: Peter Zijlstra <peterz at infradead.org>
+Signed-off-by: Paul E. McKenney <paul.mckenney at linaro.org>
+Signed-off-by: Paul E. McKenney <paulmck at linux.vnet.ibm.com>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ include/linux/sched.h | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index 8b91b7c..de90d55 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
+@@ -2186,6 +2186,14 @@ extern int sched_setscheduler(struct task_struct *, int,
+ extern int sched_setscheduler_nocheck(struct task_struct *, int,
+ 				      const struct sched_param *);
+ extern struct task_struct *idle_task(int cpu);
++/**
++ * is_idle_task - is the specified task an idle task?
++ * @tsk: the task in question.
++ */
++static inline bool is_idle_task(struct task_struct *p)
++{
++	return p->pid == 0;
++}
+ extern struct task_struct *curr_task(int cpu);
+ extern void set_curr_task(int cpu, struct task_struct *p);
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0305-sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0305-sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0305-sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0305-sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch)
@@ -0,0 +1,41 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Mon, 18 Mar 2013 15:12:49 -0400
+Subject: [PATCH 305/371] sched/workqueue: Only wake up idle workers if not
+ blocked on sleeping spin lock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=909b781101dd73be35a16be4ddd0c326d7a6e3e8
+
+In -rt, most spin_locks() turn into mutexes. One of these spin_lock
+conversions is performed on the workqueue gcwq->lock. When the idle
+worker is worken, the first thing it will do is grab that same lock and
+it too will block, possibly jumping into the same code, but because
+nr_running would already be decremented it prevents an infinite loop.
+
+But this is still a waste of CPU cycles, and it doesn't follow the method
+of mainline, as new workers should only be woken when a worker thread is
+truly going to sleep, and not just blocked on a spin_lock().
+
+Check the saved_state too before waking up new workers.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ kernel/sched.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/kernel/sched.c b/kernel/sched.c
+index 7dec8a3..9942f01 100644
+--- a/kernel/sched.c
++++ b/kernel/sched.c
+@@ -4807,8 +4807,10 @@ static inline void sched_submit_work(struct task_struct *tsk)
+ 	/*
+ 	 * If a worker went to sleep, notify and ask workqueue whether
+ 	 * it wants to wake up a task to maintain concurrency.
++	 * Only call wake up if prev isn't blocked on a sleeping
++	 * spin lock.
+ 	 */
+-	if (tsk->flags & PF_WQ_WORKER)
++	if (tsk->flags & PF_WQ_WORKER && !tsk->saved_state)
+ 		wq_worker_sleeping(tsk);
+ 
+ 	/*

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0306-x86-mce-fix-mce-timer-interval.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0306-x86-mce-fix-mce-timer-interval.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0306-x86-mce-fix-mce-timer-interval.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0306-x86-mce-fix-mce-timer-interval.patch)
@@ -0,0 +1,41 @@
+From: Mike Galbraith <bitbucket at online.de>
+Date: Wed, 29 May 2013 13:52:13 +0200
+Subject: [PATCH 306/371] x86/mce: fix mce timer interval
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=59eb1afb7422f554d39b41ef42acbcc985eb6803
+
+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.
+
+Add missing us -> ns conversion and 32 bit overflow prevention.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Mike Galbraith <bitbucket at online.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+[bigeasy: use ULL instead of u64 cast]
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ arch/x86/kernel/cpu/mcheck/mce.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
+index 8ceb100a..b08a373 100644
+--- a/arch/x86/kernel/cpu/mcheck/mce.c
++++ b/arch/x86/kernel/cpu/mcheck/mce.c
+@@ -1139,7 +1139,7 @@ static enum hrtimer_restart mce_start_timer(struct hrtimer *timer)
+ 		*n = min(*n*2, round_jiffies_relative(check_interval*HZ));
+ 
+ 	hrtimer_forward(timer, timer->base->get_time(),
+-			ns_to_ktime(jiffies_to_usecs(*n) * 1000));
++			ns_to_ktime(jiffies_to_usecs(*n) * 1000ULL));
+ 	return HRTIMER_RESTART;
+ }
+ 
+@@ -1435,7 +1435,7 @@ static void __mcheck_cpu_init_timer(void)
+ 	if (!*n)
+ 		return;
+ 
+-	hrtimer_start_range_ns(t, ns_to_ktime(jiffies_to_usecs(*n) * 1000),
++	hrtimer_start_range_ns(t, ns_to_ktime(jiffies_to_usecs(*n) * 1000ULL),
+ 			       0 , HRTIMER_MODE_REL_PINNED);
+ }
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0307-genirq-Set-irq-thread-to-RT-priority-on-creation.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0307-genirq-Set-irq-thread-to-RT-priority-on-creation.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0307-genirq-Set-irq-thread-to-RT-priority-on-creation.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0307-genirq-Set-irq-thread-to-RT-priority-on-creation.patch)
@@ -0,0 +1,68 @@
+From: Ivo Sieben <meltedpianoman at gmail.com>
+Date: Mon, 3 Jun 2013 10:12:02 +0000
+Subject: [PATCH 307/371] genirq: Set irq thread to RT priority on creation
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c38d5bbdfe3d00d310b3a658e26a5ed61d17264d
+
+When a threaded irq handler is installed the irq thread is initially
+created on normal scheduling priority. Only after the irq thread is
+woken up it sets its priority to RT_FIFO MAX_USER_RT_PRIO/2 itself.
+
+This means that interrupts that occur directly after the irq handler
+is installed will be handled on a normal scheduling priority instead
+of the realtime priority that one would expect.
+
+Fix this by setting the RT priority on creation of the irq_thread.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Ivo Sieben <meltedpianoman at gmail.com>
+Cc: Sebastian Andrzej Siewior  <bigeasy at linutronix.de>
+Cc: Steven Rostedt <rostedt at goodmis.org>
+Link: http://lkml.kernel.org/r/1370254322-17240-1-git-send-email-meltedpianoman@gmail.com
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ kernel/irq/manage.c | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
+index ed604da..8b484d8 100644
+--- a/kernel/irq/manage.c
++++ b/kernel/irq/manage.c
+@@ -783,9 +783,6 @@ static irqreturn_t irq_thread_fn(struct irq_desc *desc,
+  */
+ static int irq_thread(void *data)
+ {
+-	static const struct sched_param param = {
+-		.sched_priority = MAX_USER_RT_PRIO/2,
+-	};
+ 	struct irqaction *action = data;
+ 	struct irq_desc *desc = irq_to_desc(action->irq);
+ 	irqreturn_t (*handler_fn)(struct irq_desc *desc,
+@@ -798,7 +795,6 @@ static int irq_thread(void *data)
+ 	else
+ 		handler_fn = irq_thread_fn;
+ 
+-	sched_setscheduler(current, SCHED_FIFO, &param);
+ 	current->irqaction = action;
+ 
+ 	while (!irq_wait_for_interrupt(action)) {
+@@ -961,6 +957,9 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
+ 	 */
+ 	if (new->thread_fn && !nested) {
+ 		struct task_struct *t;
++		static const struct sched_param param = {
++			.sched_priority = MAX_USER_RT_PRIO/2,
++		};
+ 
+ 		t = kthread_create(irq_thread, new, "irq/%d-%s", irq,
+ 				   new->name);
+@@ -968,6 +967,9 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
+ 			ret = PTR_ERR(t);
+ 			goto out_mput;
+ 		}
++
++		sched_setscheduler(t, SCHED_FIFO, &param);
++
+ 		/*
+ 		 * We keep the reference to the task struct even if
+ 		 * the thread dies to avoid that the interrupt code

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0308-list_bl.h-make-list-head-locking-RT-safe.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0308-list_bl.h-make-list-head-locking-RT-safe.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0308-list_bl.h-make-list-head-locking-RT-safe.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0308-list_bl.h-make-list-head-locking-RT-safe.patch)
@@ -0,0 +1,113 @@
+From: Paul Gortmaker <paul.gortmaker at windriver.com>
+Date: Fri, 21 Jun 2013 15:07:25 -0400
+Subject: [PATCH 308/371] list_bl.h: make list head locking RT safe
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d099c2a862a2cc168c403286172262c6b4a3e3b3
+
+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
+head lock rt safe") we do the same thing here.
+
+We use the non atomic __set_bit and __clear_bit inside the scope of
+the lock to preserve the ability of the existing LIST_DEBUG code to
+use the zero'th bit in the sanity checks.
+
+As a bit spinlock, we had no lockdep visibility into the usage
+of the list head locking.  Now, if we were to implement it as a
+standard non-raw spinlock, we would see:
+
+BUG: sleeping function called from invalid context at kernel/rtmutex.c:658
+in_atomic(): 1, irqs_disabled(): 0, pid: 122, name: udevd
+5 locks held by udevd/122:
+ #0:  (&sb->s_type->i_mutex_key#7/1){+.+.+.}, at: [<ffffffff811967e8>] lock_rename+0xe8/0xf0
+ #1:  (rename_lock){+.+...}, at: [<ffffffff811a277c>] d_move+0x2c/0x60
+ #2:  (&dentry->d_lock){+.+...}, at: [<ffffffff811a0763>] dentry_lock_for_move+0xf3/0x130
+ #3:  (&dentry->d_lock/2){+.+...}, at: [<ffffffff811a0734>] dentry_lock_for_move+0xc4/0x130
+ #4:  (&dentry->d_lock/3){+.+...}, at: [<ffffffff811a0747>] dentry_lock_for_move+0xd7/0x130
+Pid: 122, comm: udevd Not tainted 3.4.47-rt62 #7
+Call Trace:
+ [<ffffffff810b9624>] __might_sleep+0x134/0x1f0
+ [<ffffffff817a24d4>] rt_spin_lock+0x24/0x60
+ [<ffffffff811a0c4c>] __d_shrink+0x5c/0xa0
+ [<ffffffff811a1b2d>] __d_drop+0x1d/0x40
+ [<ffffffff811a24be>] __d_move+0x8e/0x320
+ [<ffffffff811a278e>] d_move+0x3e/0x60
+ [<ffffffff81199598>] vfs_rename+0x198/0x4c0
+ [<ffffffff8119b093>] sys_renameat+0x213/0x240
+ [<ffffffff817a2de5>] ? _raw_spin_unlock+0x35/0x60
+ [<ffffffff8107781c>] ? do_page_fault+0x1ec/0x4b0
+ [<ffffffff817a32ca>] ? retint_swapgs+0xe/0x13
+ [<ffffffff813eb0e6>] ? trace_hardirqs_on_thunk+0x3a/0x3f
+ [<ffffffff8119b0db>] sys_rename+0x1b/0x20
+ [<ffffffff817a3b96>] system_call_fastpath+0x1a/0x1f
+
+Since we are only taking the lock during short lived list operations,
+lets assume for now that it being raw won't be a significant latency
+concern.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Paul Gortmaker <paul.gortmaker at windriver.com>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ include/linux/list_bl.h | 24 ++++++++++++++++++++++--
+ 1 file changed, 22 insertions(+), 2 deletions(-)
+
+diff --git a/include/linux/list_bl.h b/include/linux/list_bl.h
+index 31f9d75..ddfd46a 100644
+--- a/include/linux/list_bl.h
++++ b/include/linux/list_bl.h
+@@ -2,6 +2,7 @@
+ #define _LINUX_LIST_BL_H
+ 
+ #include <linux/list.h>
++#include <linux/spinlock.h>
+ #include <linux/bit_spinlock.h>
+ 
+ /*
+@@ -32,13 +33,22 @@
+ 
+ struct hlist_bl_head {
+ 	struct hlist_bl_node *first;
++#ifdef CONFIG_PREEMPT_RT_BASE
++	raw_spinlock_t lock;
++#endif
+ };
+ 
+ struct hlist_bl_node {
+ 	struct hlist_bl_node *next, **pprev;
+ };
+-#define INIT_HLIST_BL_HEAD(ptr) \
+-	((ptr)->first = NULL)
++
++static inline void INIT_HLIST_BL_HEAD(struct hlist_bl_head *h)
++{
++	h->first = NULL;
++#ifdef CONFIG_PREEMPT_RT_BASE
++	raw_spin_lock_init(&h->lock);
++#endif
++}
+ 
+ static inline void INIT_HLIST_BL_NODE(struct hlist_bl_node *h)
+ {
+@@ -117,12 +127,22 @@ static inline void hlist_bl_del_init(struct hlist_bl_node *n)
+ 
+ static inline void hlist_bl_lock(struct hlist_bl_head *b)
+ {
++#ifndef CONFIG_PREEMPT_RT_BASE
+ 	bit_spin_lock(0, (unsigned long *)b);
++#else
++	raw_spin_lock(&b->lock);
++	__set_bit(0, (unsigned long *)b);
++#endif
+ }
+ 
+ static inline void hlist_bl_unlock(struct hlist_bl_head *b)
+ {
++#ifndef CONFIG_PREEMPT_RT_BASE
+ 	__bit_spin_unlock(0, (unsigned long *)b);
++#else
++	__clear_bit(0, (unsigned long *)b);
++	raw_spin_unlock(&b->lock);
++#endif
+ }
+ 
+ /**

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0309-list_bl.h-fix-it-for-for-SMP-DEBUG_SPINLOCK.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0309-list_bl.h-fix-it-for-for-SMP-DEBUG_SPINLOCK.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0309-list_bl.h-fix-it-for-for-SMP-DEBUG_SPINLOCK.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0309-list_bl.h-fix-it-for-for-SMP-DEBUG_SPINLOCK.patch)
@@ -0,0 +1,62 @@
+From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= <u.kleine-koenig at pengutronix.de>
+Date: Tue, 9 Jul 2013 00:26:32 +0200
+Subject: [PATCH 309/371] list_bl.h: fix it for for !SMP && !DEBUG_SPINLOCK
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aea3274a79bedab25963f0caec93ba84c9425e1b
+
+The patch "list_bl.h: make list head locking RT safe" introduced
+an unconditional
+
+	__set_bit(0, (unsigned long *)b);
+
+in void hlist_bl_lock(struct hlist_bl_head *b). This clobbers the value
+of b->first. When the value of b->first is retrieved using
+hlist_bl_first the clobbering is undone using
+
+	(unsigned long)h->first & ~LIST_BL_LOCKMASK
+
+and so depending on LIST_BL_LOCKMASK being one. But LIST_BL_LOCKMASK is
+only one if at least on of CONFIG_SMP and CONFIG_DEBUG_SPINLOCK are
+defined. Without these the value returned by hlist_bl_first has the
+zeroth bit set which likely results in a crash.
+
+So only do the clobbering in the cases where LIST_BL_LOCKMASK is one.
+An alternative would be to always define LIST_BL_LOCKMASK to one with
+CONFIG_PREEMPT_RT_BASE.
+
+Cc: stable-rt at vger.kernel.org
+Acked-by: Paul Gortmaker <paul.gortmaker at windriver.com>
+Tested-by: Paul Gortmaker <paul.gortmaker at windriver.com>
+Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ include/linux/list_bl.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/include/linux/list_bl.h b/include/linux/list_bl.h
+index ddfd46a..becd7a6 100644
+--- a/include/linux/list_bl.h
++++ b/include/linux/list_bl.h
+@@ -131,8 +131,10 @@ static inline void hlist_bl_lock(struct hlist_bl_head *b)
+ 	bit_spin_lock(0, (unsigned long *)b);
+ #else
+ 	raw_spin_lock(&b->lock);
++#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK)
+ 	__set_bit(0, (unsigned long *)b);
+ #endif
++#endif
+ }
+ 
+ static inline void hlist_bl_unlock(struct hlist_bl_head *b)
+@@ -140,7 +142,9 @@ static inline void hlist_bl_unlock(struct hlist_bl_head *b)
+ #ifndef CONFIG_PREEMPT_RT_BASE
+ 	__bit_spin_unlock(0, (unsigned long *)b);
+ #else
++#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK)
+ 	__clear_bit(0, (unsigned long *)b);
++#endif
+ 	raw_spin_unlock(&b->lock);
+ #endif
+ }

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0310-timers-prepare-for-full-preemption-improve.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0310-timers-prepare-for-full-preemption-improve.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0310-timers-prepare-for-full-preemption-improve.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0310-timers-prepare-for-full-preemption-improve.patch)
@@ -0,0 +1,58 @@
+From: Zhao Hongjiang <zhaohongjiang at huawei.com>
+Date: Wed, 17 Apr 2013 17:44:16 +0800
+Subject: [PATCH 310/371] timers: prepare for full preemption improve
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8ff583ade4be710e9b108d2eefd586fa56d49a60
+
+wake_up should do nothing on the nort, so we should use wakeup_timer_waiters,
+also fix a spell mistake.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Zhao Hongjiang <zhaohongjiang at huawei.com>
+[bigeasy: s/CONFIG_PREEMPT_RT_BASE/CONFIG_PREEMPT_RT_FULL/]
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ kernel/timer.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/kernel/timer.c b/kernel/timer.c
+index 330565b..4fe22a0 100644
+--- a/kernel/timer.c
++++ b/kernel/timer.c
+@@ -76,7 +76,9 @@ struct tvec_root {
+ struct tvec_base {
+ 	spinlock_t lock;
+ 	struct timer_list *running_timer;
++#ifdef CONFIG_PREEMPT_RT_FULL
+ 	wait_queue_head_t wait_for_running_timer;
++#endif
+ 	unsigned long timer_jiffies;
+ 	unsigned long next_timer;
+ 	struct tvec_root tv1;
+@@ -930,7 +932,7 @@ static void wait_for_running_timer(struct timer_list *timer)
+ 			   base->running_timer != timer);
+ }
+ 
+-# define wakeup_timer_waiters(b)	wake_up(&(b)->wait_for_tunning_timer)
++# define wakeup_timer_waiters(b)	wake_up(&(b)->wait_for_running_timer)
+ #else
+ static inline void wait_for_running_timer(struct timer_list *timer)
+ {
+@@ -1183,7 +1185,7 @@ static inline void __run_timers(struct tvec_base *base)
+ 			spin_lock_irq(&base->lock);
+ 		}
+ 	}
+-	wake_up(&base->wait_for_running_timer);
++	wakeup_timer_waiters(base);
+ 	spin_unlock_irq(&base->lock);
+ }
+ 
+@@ -1706,7 +1708,9 @@ static int __cpuinit init_timers_cpu(int cpu)
+ 			base = &boot_tvec_bases;
+ 		}
+ 		spin_lock_init(&base->lock);
++#ifdef CONFIG_PREEMPT_RT_FULL
+ 		init_waitqueue_head(&base->wait_for_running_timer);
++#endif
+ 		tvec_base_done[cpu] = 1;
+ 	} else {
+ 		base = per_cpu(tvec_bases, cpu);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0311-kernel-cpu-fix-cpu-down-problem-if-kthread-s-cpu-is-.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0311-kernel-cpu-fix-cpu-down-problem-if-kthread-s-cpu-is-.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0311-kernel-cpu-fix-cpu-down-problem-if-kthread-s-cpu-is-.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0311-kernel-cpu-fix-cpu-down-problem-if-kthread-s-cpu-is-.patch)
@@ -0,0 +1,91 @@
+From: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Date: Fri, 7 Jun 2013 22:37:06 +0200
+Subject: [PATCH 311/371] kernel/cpu: fix cpu down problem if kthread's cpu is
+ going down
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=24a2a3f7b21070a9b4dc5b3e2d8448b4a86ae25a
+
+If kthread is pinned to CPUx and CPUx is going down then we get into
+trouble:
+- first the unplug thread is created
+- it will set itself to hp->unplug. As a result, every task that is
+  going to take a lock, has to leave the CPU.
+- the CPU_DOWN_PREPARE notifier are started. The worker thread will
+  start a new process for the "high priority worker".
+  Now kthread would like to take a lock but since it can't leave the CPU
+  it will never complete its task.
+
+We could fire the unplug thread after the notifier but then the cpu is
+no longer marked "online" and the unplug thread will run on CPU0 which
+was fixed before :)
+
+So instead the unplug thread is started and kept waiting until the
+notfier complete their work.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ kernel/cpu.c | 16 ++++++++++++++--
+ 1 file changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/kernel/cpu.c b/kernel/cpu.c
+index 5ef0c31..f56a8ec 100644
+--- a/kernel/cpu.c
++++ b/kernel/cpu.c
+@@ -78,6 +78,7 @@ struct hotplug_pcp {
+ 	int refcount;
+ 	int grab_lock;
+ 	struct completion synced;
++	struct completion unplug_wait;
+ #ifdef CONFIG_PREEMPT_RT_FULL
+ 	spinlock_t lock;
+ #else
+@@ -175,6 +176,7 @@ static int sync_unplug_thread(void *data)
+ {
+ 	struct hotplug_pcp *hp = data;
+ 
++	wait_for_completion(&hp->unplug_wait);
+ 	preempt_disable();
+ 	hp->unplug = current;
+ 	wait_for_pinned_cpus(hp);
+@@ -240,6 +242,14 @@ static void __cpu_unplug_sync(struct hotplug_pcp *hp)
+ 	wait_for_completion(&hp->synced);
+ }
+ 
++static void __cpu_unplug_wait(unsigned int cpu)
++{
++	struct hotplug_pcp *hp = &per_cpu(hotplug_pcp, cpu);
++
++	complete(&hp->unplug_wait);
++	wait_for_completion(&hp->synced);
++}
++
+ /*
+  * Start the sync_unplug_thread on the target cpu and wait for it to
+  * complete.
+@@ -263,6 +273,7 @@ static int cpu_unplug_begin(unsigned int cpu)
+ 	tell_sched_cpu_down_begin(cpu);
+ 
+ 	init_completion(&hp->synced);
++	init_completion(&hp->unplug_wait);
+ 
+ 	hp->sync_tsk = kthread_create(sync_unplug_thread, hp, "sync_unplug/%d", cpu);
+ 	if (IS_ERR(hp->sync_tsk)) {
+@@ -278,8 +289,7 @@ static int cpu_unplug_begin(unsigned int cpu)
+ 	 * wait for tasks that are going to enter these sections and
+ 	 * we must not have them block.
+ 	 */
+-	__cpu_unplug_sync(hp);
+-
++	wake_up_process(hp->sync_tsk);
+ 	return 0;
+ }
+ 
+@@ -545,6 +555,8 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
+ 		goto out_release;
+ 	}
+ 
++	__cpu_unplug_wait(cpu);
++
+ 	/* Notifiers are done. Don't let any more tasks pin this CPU. */
+ 	cpu_unplug_sync(cpu);
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0312-kernel-hotplug-restore-original-cpu-mask-oncpu-down.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0312-kernel-hotplug-restore-original-cpu-mask-oncpu-down.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0312-kernel-hotplug-restore-original-cpu-mask-oncpu-down.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0312-kernel-hotplug-restore-original-cpu-mask-oncpu-down.patch)
@@ -0,0 +1,61 @@
+From: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Date: Fri, 14 Jun 2013 17:16:35 +0200
+Subject: [PATCH 312/371] kernel/hotplug: restore original cpu mask oncpu/down
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b4192288380862c495681ed3abb3467c08117c3e
+
+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
+kernel. This patch ensures that we don't lose the initial setting unless
+the CPU the task is running is going down.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ kernel/cpu.c | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/kernel/cpu.c b/kernel/cpu.c
+index f56a8ec..063c2bb 100644
+--- a/kernel/cpu.c
++++ b/kernel/cpu.c
+@@ -518,6 +518,7 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
+ 		.hcpu = hcpu,
+ 	};
+ 	cpumask_var_t cpumask;
++	cpumask_var_t cpumask_org;
+ 
+ 	if (num_online_cpus() == 1)
+ 		return -EBUSY;
+@@ -528,6 +529,12 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
+ 	/* Move the downtaker off the unplug cpu */
+ 	if (!alloc_cpumask_var(&cpumask, GFP_KERNEL))
+ 		return -ENOMEM;
++	if (!alloc_cpumask_var(&cpumask_org, GFP_KERNEL))  {
++		free_cpumask_var(cpumask);
++		return -ENOMEM;
++	}
++
++	cpumask_copy(cpumask_org, tsk_cpus_allowed(current));
+ 	cpumask_andnot(cpumask, cpu_online_mask, cpumask_of(cpu));
+ 	set_cpus_allowed_ptr(current, cpumask);
+ 	free_cpumask_var(cpumask);
+@@ -536,7 +543,8 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
+ 	if (mycpu == cpu) {
+ 		printk(KERN_ERR "Yuck! Still on unplug CPU\n!");
+ 		migrate_enable();
+-		return -EBUSY;
++		err = -EBUSY;
++		goto restore_cpus;
+ 	}
+ 
+ 	cpu_hotplug_begin();
+@@ -594,6 +602,9 @@ out_cancel:
+ 	cpu_hotplug_done();
+ 	if (!err)
+ 		cpu_notify_nofail(CPU_POST_DEAD | mod, hcpu);
++restore_cpus:
++	set_cpus_allowed_ptr(current, cpumask_org);
++	free_cpumask_var(cpumask_org);
+ 	return err;
+ }
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0313-drm-i915-drop-trace_i915_gem_ring_dispatch-on-rt.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0313-drm-i915-drop-trace_i915_gem_ring_dispatch-on-rt.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0313-drm-i915-drop-trace_i915_gem_ring_dispatch-on-rt.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0313-drm-i915-drop-trace_i915_gem_ring_dispatch-on-rt.patch)
@@ -0,0 +1,59 @@
+From: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Date: Thu, 25 Apr 2013 18:12:52 +0200
+Subject: [PATCH 313/371] drm/i915: drop trace_i915_gem_ring_dispatch on rt
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=915cff33a1fc64bf274aa441998d3d3b3f9b906c
+
+This tracepoint is responsible for:
+
+|[<814cc358>] __schedule_bug+0x4d/0x59
+|[<814d24cc>] __schedule+0x88c/0x930
+|[<814d3b90>] ? _raw_spin_unlock_irqrestore+0x40/0x50
+|[<814d3b95>] ? _raw_spin_unlock_irqrestore+0x45/0x50
+|[<810b57b5>] ? task_blocks_on_rt_mutex+0x1f5/0x250
+|[<814d27d9>] schedule+0x29/0x70
+|[<814d3423>] rt_spin_lock_slowlock+0x15b/0x278
+|[<814d3786>] rt_spin_lock+0x26/0x30
+|[<a00dced9>] gen6_gt_force_wake_get+0x29/0x60 [i915]
+|[<a00e183f>] gen6_ring_get_irq+0x5f/0x100 [i915]
+|[<a00b2a33>] ftrace_raw_event_i915_gem_ring_dispatch+0xe3/0x100 [i915]
+|[<a00ac1b3>] i915_gem_do_execbuffer.isra.13+0xbd3/0x1430 [i915]
+|[<810f8943>] ? trace_buffer_unlock_commit+0x43/0x60
+|[<8113e8d2>] ? ftrace_raw_event_kmem_alloc+0xd2/0x180
+|[<8101d063>] ? native_sched_clock+0x13/0x80
+|[<a00acf29>] i915_gem_execbuffer2+0x99/0x280 [i915]
+|[<a00114a3>] drm_ioctl+0x4c3/0x570 [drm]
+|[<8101d0d9>] ? sched_clock+0x9/0x10
+|[<a00ace90>] ? i915_gem_execbuffer+0x480/0x480 [i915]
+|[<810f1c18>] ? rb_commit+0x68/0xa0
+|[<810f1c6c>] ? ring_buffer_unlock_commit+0x1c/0xa0
+|[<81197467>] do_vfs_ioctl+0x97/0x540
+|[<81021318>] ? ftrace_raw_event_sys_enter+0xd8/0x130
+|[<811979a1>] sys_ioctl+0x91/0xb0
+|[<814db931>] tracesys+0xe1/0xe6
+
+Chris Wilson does not like to move i915_trace_irq_get() out of the macro
+
+|No. This enables the IRQ, as well as making a number of
+|very expensively serialised read, unconditionally.
+
+so it is gone now on RT.
+
+Cc: stable-rt at vger.kernel.org
+Reported-by: Joakim Hernberg <jbh at alchemy.lu>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ drivers/gpu/drm/i915/i915_gem_execbuffer.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
++++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+@@ -1216,7 +1216,9 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
+ 			goto err;
+ 	}
+ 
++#ifndef CONFIG_PREEMPT_RT_BASE
+ 	trace_i915_gem_ring_dispatch(ring, seqno);
++#endif
+ 
+ 	exec_start = batch_obj->gtt_offset + args->batch_start_offset;
+ 	exec_len = args->batch_len;

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0314-rt-ntp-Move-call-to-schedule_delayed_work-to-helper-.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0314-rt-ntp-Move-call-to-schedule_delayed_work-to-helper-.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0314-rt-ntp-Move-call-to-schedule_delayed_work-to-helper-.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0314-rt-ntp-Move-call-to-schedule_delayed_work-to-helper-.patch)
@@ -0,0 +1,92 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Wed, 26 Jun 2013 15:28:11 -0400
+Subject: [PATCH 314/371] rt,ntp: Move call to schedule_delayed_work() to
+ helper thread
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6fd9fee49422259f71ef8805dbe43d6d8c02fbf9
+
+The ntp code for notify_cmos_timer() is called from a hard interrupt
+context. schedule_delayed_work() under PREEMPT_RT_FULL calls spinlocks
+that have been converted to mutexes, thus calling schedule_delayed_work()
+from interrupt is not safe.
+
+Add a helper thread that does the call to schedule_delayed_work and wake
+up that thread instead of calling schedule_delayed_work() directly.
+This is only for CONFIG_PREEMPT_RT_FULL, otherwise the code still calls
+schedule_delayed_work() directly in irq context.
+
+Note: There's a few places in the kernel that do this. Perhaps the RT
+code should have a dedicated thread that does the checks. Just register
+a notifier on boot up for your check and wake up the thread when
+needed. This will be a todo.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/time/ntp.c | 42 ++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 42 insertions(+)
+
+diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
+index 92d97a7..fa8fc3c 100644
+--- a/kernel/time/ntp.c
++++ b/kernel/time/ntp.c
+@@ -10,6 +10,7 @@
+ #include <linux/workqueue.h>
+ #include <linux/hrtimer.h>
+ #include <linux/jiffies.h>
++#include <linux/kthread.h>
+ #include <linux/math64.h>
+ #include <linux/timex.h>
+ #include <linux/time.h>
+@@ -490,11 +491,52 @@ static void sync_cmos_clock(struct work_struct *work)
+ 	schedule_delayed_work(&sync_cmos_work, timespec_to_jiffies(&next));
+ }
+ 
++#ifdef CONFIG_PREEMPT_RT_FULL
++/*
++ * RT can not call schedule_delayed_work from real interrupt context.
++ * Need to make a thread to do the real work.
++ */
++static struct task_struct *cmos_delay_thread;
++static bool do_cmos_delay;
++
++static int run_cmos_delay(void *ignore)
++{
++	while (!kthread_should_stop()) {
++		set_current_state(TASK_INTERRUPTIBLE);
++		if (do_cmos_delay) {
++			do_cmos_delay = false;
++			schedule_delayed_work(&sync_cmos_work, 0);
++		}
++		schedule();
++	}
++	__set_current_state(TASK_RUNNING);
++	return 0;
++}
++
++static void notify_cmos_timer(void)
++{
++	if (!no_sync_cmos_clock) {
++		do_cmos_delay = true;
++		/* Make visible before waking up process */
++		smp_wmb();
++		wake_up_process(cmos_delay_thread);
++	}
++}
++
++static __init int create_cmos_delay_thread(void)
++{
++	cmos_delay_thread = kthread_run(run_cmos_delay, NULL, "kcmosdelayd");
++	BUG_ON(!cmos_delay_thread);
++	return 0;
++}
++early_initcall(create_cmos_delay_thread);
++#else
+ static void notify_cmos_timer(void)
+ {
+ 	if (!no_sync_cmos_clock)
+ 		schedule_delayed_work(&sync_cmos_work, 0);
+ }
++#endif /* CONFIG_PREEMPT_RT_FULL */
+ 
+ #else
+ static inline void notify_cmos_timer(void) { }

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0315-hwlat-detector-Update-hwlat_detector-to-add-outer-lo.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0315-hwlat-detector-Update-hwlat_detector-to-add-outer-lo.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0315-hwlat-detector-Update-hwlat_detector-to-add-outer-lo.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0315-hwlat-detector-Update-hwlat_detector-to-add-outer-lo.patch)
@@ -0,0 +1,130 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Mon, 19 Aug 2013 17:33:25 -0400
+Subject: [PATCH 315/371] hwlat-detector: Update hwlat_detector to add outer
+ loop detection
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2c3ba75d50da357d5b2eec45bd1975677bd1b152
+
+The hwlat_detector reads two timestamps in a row, then reports any
+gap between those calls. The problem is, it misses everything between
+the second reading of the time stamp to the first reading of the time stamp
+in the next loop. That's were most of the time is spent, which means,
+chances are likely that it will miss all hardware latencies. This
+defeats the purpose.
+
+By also testing the first time stamp from the previous loop second
+time stamp (the outer loop), we are more likely to find a latency.
+
+Setting the threshold to 1, here's what the report now looks like:
+
+1347415723.0232202770	0	2
+1347415725.0234202822	0	2
+1347415727.0236202875	0	2
+1347415729.0238202928	0	2
+1347415731.0240202980	0	2
+1347415734.0243203061	0	2
+1347415736.0245203113	0	2
+1347415738.0247203166	2	0
+1347415740.0249203219	0	3
+1347415742.0251203272	0	3
+1347415743.0252203299	0	3
+1347415745.0254203351	0	2
+1347415747.0256203404	0	2
+1347415749.0258203457	0	2
+1347415751.0260203510	0	2
+1347415754.0263203589	0	2
+1347415756.0265203642	0	2
+1347415758.0267203695	0	2
+1347415760.0269203748	0	2
+1347415762.0271203801	0	2
+1347415764.0273203853	2	0
+
+There's some hardware latency that takes 2 microseconds to run.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Steven Rostedt <srostedt at redhat.com>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ drivers/misc/hwlat_detector.c | 32 ++++++++++++++++++++++++++------
+ 1 file changed, 26 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/misc/hwlat_detector.c b/drivers/misc/hwlat_detector.c
+index b7b7c90..f93b8ef 100644
+--- a/drivers/misc/hwlat_detector.c
++++ b/drivers/misc/hwlat_detector.c
+@@ -143,6 +143,7 @@ static void detector_exit(void);
+ struct sample {
+ 	u64		seqnum;		/* unique sequence */
+ 	u64		duration;	/* ktime delta */
++	u64		outer_duration;	/* ktime delta (outer loop) */
+ 	struct timespec	timestamp;	/* wall time */
+ 	unsigned long   lost;
+ };
+@@ -219,11 +220,13 @@ static struct sample *buffer_get_sample(struct sample *sample)
+  */
+ static int get_sample(void *unused)
+ {
+-	ktime_t start, t1, t2;
++	ktime_t start, t1, t2, last_t2;
+ 	s64 diff, total = 0;
+ 	u64 sample = 0;
++	u64 outer_sample = 0;
+ 	int ret = 1;
+ 
++	last_t2.tv64 = 0;
+ 	start = ktime_get(); /* start timestamp */
+ 
+ 	do {
+@@ -231,7 +234,22 @@ static int get_sample(void *unused)
+ 		t1 = ktime_get();	/* we'll look for a discontinuity */
+ 		t2 = ktime_get();
+ 
++		if (last_t2.tv64) {
++			/* Check the delta from the outer loop (t2 to next t1) */
++			diff = ktime_to_us(ktime_sub(t1, last_t2));
++			/* This shouldn't happen */
++			if (diff < 0) {
++				printk(KERN_ERR BANNER "time running backwards\n");
++				goto out;
++			}
++			if (diff > outer_sample)
++				outer_sample = diff;
++		}
++		last_t2 = t2;
++
+ 		total = ktime_to_us(ktime_sub(t2, start)); /* sample width */
++
++		/* This checks the inner loop (t1 to t2) */
+ 		diff = ktime_to_us(ktime_sub(t2, t1));     /* current diff */
+ 
+ 		/* This shouldn't happen */
+@@ -246,12 +264,13 @@ static int get_sample(void *unused)
+ 	} while (total <= data.sample_width);
+ 
+ 	/* If we exceed the threshold value, we have found a hardware latency */
+-	if (sample > data.threshold) {
++	if (sample > data.threshold || outer_sample > data.threshold) {
+ 		struct sample s;
+ 
+ 		data.count++;
+ 		s.seqnum = data.count;
+ 		s.duration = sample;
++		s.outer_duration = outer_sample;
+ 		s.timestamp = CURRENT_TIME;
+ 		__buffer_add_sample(&s);
+ 
+@@ -738,10 +757,11 @@ static ssize_t debug_sample_fread(struct file *filp, char __user *ubuf,
+ 		}
+ 	}
+ 
+-	len = snprintf(buf, sizeof(buf), "%010lu.%010lu\t%llu\n",
+-		      sample->timestamp.tv_sec,
+-		      sample->timestamp.tv_nsec,
+-		      sample->duration);
++	len = snprintf(buf, sizeof(buf), "%010lu.%010lu\t%llu\t%llu\n",
++		       sample->timestamp.tv_sec,
++		       sample->timestamp.tv_nsec,
++		       sample->duration,
++		       sample->outer_duration);
+ 
+ 
+ 	/* handling partial reads is more trouble than it's worth */

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0316-hwlat-detect-trace-Export-trace_clock_local-for-hwla.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0316-hwlat-detect-trace-Export-trace_clock_local-for-hwla.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0316-hwlat-detect-trace-Export-trace_clock_local-for-hwla.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0316-hwlat-detect-trace-Export-trace_clock_local-for-hwla.patch)
@@ -0,0 +1,27 @@
+From: "Steven Rostedt (Red Hat)" <rostedt at goodmis.org>
+Date: Sat, 7 Sep 2013 20:54:31 -0400
+Subject: [PATCH 316/371] hwlat-detect/trace: Export trace_clock_local for
+ hwlat-detector
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f2dc9ef389d2c375953fa0065ab9f8adeae24e50
+
+The hwlat-detector needs a better clock than just ktime_get() as that
+can induce its own latencies. The trace clock is perfect for it, but
+it needs to be exported for use by modules.
+
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/trace/trace_clock.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/kernel/trace/trace_clock.c b/kernel/trace/trace_clock.c
+index 3947835..1bbb1b2 100644
+--- a/kernel/trace/trace_clock.c
++++ b/kernel/trace/trace_clock.c
+@@ -44,6 +44,7 @@ u64 notrace trace_clock_local(void)
+ 
+ 	return clock;
+ }
++EXPORT_SYMBOL_GPL(trace_clock_local);
+ 
+ /*
+  * trace_clock(): 'between' trace clock. Not completely serialized,

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0317-hwlat-detector-Use-trace_clock_local-if-available.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0317-hwlat-detector-Use-trace_clock_local-if-available.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0317-hwlat-detector-Use-trace_clock_local-if-available.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0317-hwlat-detector-Use-trace_clock_local-if-available.patch)
@@ -0,0 +1,96 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Mon, 19 Aug 2013 17:33:26 -0400
+Subject: [PATCH 317/371] hwlat-detector: Use trace_clock_local if available
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=cc869576ca6e0af84a0ffa7d456aa556a4f4a7ee
+
+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
+dependency, use the trace_clock_local() which is already exported
+for module use. If CONFIG_TRACING is enabled, use that as the clock,
+otherwise use ktime_get().
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Steven Rostedt <srostedt at redhat.com>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ drivers/misc/hwlat_detector.c | 34 +++++++++++++++++++++++++---------
+ 1 file changed, 25 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/misc/hwlat_detector.c b/drivers/misc/hwlat_detector.c
+index f93b8ef..13443e9 100644
+--- a/drivers/misc/hwlat_detector.c
++++ b/drivers/misc/hwlat_detector.c
+@@ -51,6 +51,7 @@
+ #include <linux/version.h>
+ #include <linux/delay.h>
+ #include <linux/slab.h>
++#include <linux/trace_clock.h>
+ 
+ #define BUF_SIZE_DEFAULT	262144UL		/* 8K*(sizeof(entry)) */
+ #define BUF_FLAGS		(RB_FL_OVERWRITE)	/* no block on full */
+@@ -211,6 +212,21 @@ static struct sample *buffer_get_sample(struct sample *sample)
+ 	return sample;
+ }
+ 
++#ifndef CONFIG_TRACING
++#define time_type	ktime_t
++#define time_get()	ktime_get()
++#define time_to_us(x)	ktime_to_us(x)
++#define time_sub(a, b)	ktime_sub(a, b)
++#define init_time(a, b)	(a).tv64 = b
++#define time_u64(a)	(a).tv64
++#else
++#define time_type	u64
++#define time_get()	trace_clock_local()
++#define time_to_us(x)	div_u64(x, 1000)
++#define time_sub(a, b)	((a) - (b))
++#define init_time(a, b)	a = b
++#define time_u64(a)	a
++#endif
+ /**
+  * get_sample - sample the CPU TSC and look for likely hardware latencies
+  * @unused: This is not used but is a part of the stop_machine API
+@@ -220,23 +236,23 @@ static struct sample *buffer_get_sample(struct sample *sample)
+  */
+ static int get_sample(void *unused)
+ {
+-	ktime_t start, t1, t2, last_t2;
++	time_type start, t1, t2, last_t2;
+ 	s64 diff, total = 0;
+ 	u64 sample = 0;
+ 	u64 outer_sample = 0;
+ 	int ret = 1;
+ 
+-	last_t2.tv64 = 0;
+-	start = ktime_get(); /* start timestamp */
++	init_time(last_t2, 0);
++	start = time_get(); /* start timestamp */
+ 
+ 	do {
+ 
+-		t1 = ktime_get();	/* we'll look for a discontinuity */
+-		t2 = ktime_get();
++		t1 = time_get();	/* we'll look for a discontinuity */
++		t2 = time_get();
+ 
+-		if (last_t2.tv64) {
++		if (time_u64(last_t2)) {
+ 			/* Check the delta from the outer loop (t2 to next t1) */
+-			diff = ktime_to_us(ktime_sub(t1, last_t2));
++			diff = time_to_us(time_sub(t1, last_t2));
+ 			/* This shouldn't happen */
+ 			if (diff < 0) {
+ 				printk(KERN_ERR BANNER "time running backwards\n");
+@@ -247,10 +263,10 @@ static int get_sample(void *unused)
+ 		}
+ 		last_t2 = t2;
+ 
+-		total = ktime_to_us(ktime_sub(t2, start)); /* sample width */
++		total = time_to_us(time_sub(t2, start)); /* sample width */
+ 
+ 		/* This checks the inner loop (t1 to t2) */
+-		diff = ktime_to_us(ktime_sub(t2, t1));     /* current diff */
++		diff = time_to_us(time_sub(t2, t1));     /* current diff */
+ 
+ 		/* This shouldn't happen */
+ 		if (diff < 0) {

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0318-hwlat-detector-Use-thread-instead-of-stop-machine.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0318-hwlat-detector-Use-thread-instead-of-stop-machine.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0318-hwlat-detector-Use-thread-instead-of-stop-machine.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0318-hwlat-detector-Use-thread-instead-of-stop-machine.patch)
@@ -0,0 +1,186 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Mon, 19 Aug 2013 17:33:27 -0400
+Subject: [PATCH 318/371] hwlat-detector: Use thread instead of stop machine
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=5c3a149727f2a0fedcc9d47c130bd74455cf767b
+
+There's no reason to use stop machine to search for hardware latency.
+Simply disabling interrupts while running the loop will do enough to
+check if something comes in that wasn't disabled by interrupts being
+off, which is exactly what stop machine does.
+
+Instead of using stop machine, just have the thread disable interrupts
+while it checks for hardware latency.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ drivers/misc/hwlat_detector.c | 59 ++++++++++++++++++-------------------------
+ 1 file changed, 25 insertions(+), 34 deletions(-)
+
+diff --git a/drivers/misc/hwlat_detector.c b/drivers/misc/hwlat_detector.c
+index 13443e9..6f61d5f 100644
+--- a/drivers/misc/hwlat_detector.c
++++ b/drivers/misc/hwlat_detector.c
+@@ -41,7 +41,6 @@
+ #include <linux/module.h>
+ #include <linux/init.h>
+ #include <linux/ring_buffer.h>
+-#include <linux/stop_machine.h>
+ #include <linux/time.h>
+ #include <linux/hrtimer.h>
+ #include <linux/kthread.h>
+@@ -107,7 +106,6 @@ struct data;					/* Global state */
+ /* Sampling functions */
+ static int __buffer_add_sample(struct sample *sample);
+ static struct sample *buffer_get_sample(struct sample *sample);
+-static int get_sample(void *unused);
+ 
+ /* Threading and state */
+ static int kthread_fn(void *unused);
+@@ -149,7 +147,7 @@ struct sample {
+ 	unsigned long   lost;
+ };
+ 
+-/* keep the global state somewhere. Mostly used under stop_machine. */
++/* keep the global state somewhere. */
+ static struct data {
+ 
+ 	struct mutex lock;		/* protect changes */
+@@ -172,7 +170,7 @@ static struct data {
+  * @sample: The new latency sample value
+  *
+  * This receives a new latency sample and records it in a global ring buffer.
+- * No additional locking is used in this case - suited for stop_machine use.
++ * No additional locking is used in this case.
+  */
+ static int __buffer_add_sample(struct sample *sample)
+ {
+@@ -229,18 +227,17 @@ static struct sample *buffer_get_sample(struct sample *sample)
+ #endif
+ /**
+  * get_sample - sample the CPU TSC and look for likely hardware latencies
+- * @unused: This is not used but is a part of the stop_machine API
+  *
+  * Used to repeatedly capture the CPU TSC (or similar), looking for potential
+- * hardware-induced latency. Called under stop_machine, with data.lock held.
++ * hardware-induced latency. Called with interrupts disabled and with data.lock held.
+  */
+-static int get_sample(void *unused)
++static int get_sample(void)
+ {
+ 	time_type start, t1, t2, last_t2;
+ 	s64 diff, total = 0;
+ 	u64 sample = 0;
+ 	u64 outer_sample = 0;
+-	int ret = 1;
++	int ret = -1;
+ 
+ 	init_time(last_t2, 0);
+ 	start = time_get(); /* start timestamp */
+@@ -279,10 +276,14 @@ static int get_sample(void *unused)
+ 
+ 	} while (total <= data.sample_width);
+ 
++	ret = 0;
++
+ 	/* If we exceed the threshold value, we have found a hardware latency */
+ 	if (sample > data.threshold || outer_sample > data.threshold) {
+ 		struct sample s;
+ 
++		ret = 1;
++
+ 		data.count++;
+ 		s.seqnum = data.count;
+ 		s.duration = sample;
+@@ -295,7 +296,6 @@ static int get_sample(void *unused)
+ 			data.max_sample = sample;
+ 	}
+ 
+-	ret = 0;
+ out:
+ 	return ret;
+ }
+@@ -305,32 +305,30 @@ out:
+  * @unused: A required part of the kthread API.
+  *
+  * Used to periodically sample the CPU TSC via a call to get_sample. We
+- * use stop_machine, whith does (intentionally) introduce latency since we
++ * disable interrupts, which does (intentionally) introduce latency since we
+  * need to ensure nothing else might be running (and thus pre-empting).
+  * Obviously this should never be used in production environments.
+  *
+- * stop_machine will schedule us typically only on CPU0 which is fine for
+- * almost every real-world hardware latency situation - but we might later
+- * generalize this if we find there are any actualy systems with alternate
+- * SMI delivery or other non CPU0 hardware latencies.
++ * Currently this runs on which ever CPU it was scheduled on, but most
++ * real-worald hardware latency situations occur across several CPUs,
++ * but we might later generalize this if we find there are any actualy
++ * systems with alternate SMI delivery or other hardware latencies.
+  */
+ static int kthread_fn(void *unused)
+ {
+-	int err = 0;
+-	u64 interval = 0;
++	int ret;
++	u64 interval;
+ 
+ 	while (!kthread_should_stop()) {
+ 
+ 		mutex_lock(&data.lock);
+ 
+-		err = stop_machine(get_sample, unused, 0);
+-		if (err) {
+-			/* Houston, we have a problem */
+-			mutex_unlock(&data.lock);
+-			goto err_out;
+-		}
++		local_irq_disable();
++		ret = get_sample();
++		local_irq_enable();
+ 
+-		wake_up(&data.wq); /* wake up reader(s) */
++		if (ret > 0)
++			wake_up(&data.wq); /* wake up reader(s) */
+ 
+ 		interval = data.sample_window - data.sample_width;
+ 		do_div(interval, USEC_PER_MSEC); /* modifies interval value */
+@@ -338,15 +336,10 @@ static int kthread_fn(void *unused)
+ 		mutex_unlock(&data.lock);
+ 
+ 		if (msleep_interruptible(interval))
+-			goto out;
++			break;
+ 	}
+-		goto out;
+-err_out:
+-	printk(KERN_ERR BANNER "could not call stop_machine, disabling\n");
+-	enabled = 0;
+-out:
+-	return err;
+ 
++	return 0;
+ }
+ 
+ /**
+@@ -442,8 +435,7 @@ out:
+  * This function provides a generic read implementation for the global state
+  * "data" structure debugfs filesystem entries. It would be nice to use
+  * simple_attr_read directly, but we need to make sure that the data.lock
+- * spinlock is held during the actual read (even though we likely won't ever
+- * actually race here as the updater runs under a stop_machine context).
++ * is held during the actual read.
+  */
+ static ssize_t simple_data_read(struct file *filp, char __user *ubuf,
+ 				size_t cnt, loff_t *ppos, const u64 *entry)
+@@ -478,8 +470,7 @@ static ssize_t simple_data_read(struct file *filp, char __user *ubuf,
+  * This function provides a generic write implementation for the global state
+  * "data" structure debugfs filesystem entries. It would be nice to use
+  * simple_attr_write directly, but we need to make sure that the data.lock
+- * spinlock is held during the actual write (even though we likely won't ever
+- * actually race here as the updater runs under a stop_machine context).
++ * is held during the actual write.
+  */
+ static ssize_t simple_data_write(struct file *filp, const char __user *ubuf,
+ 				 size_t cnt, loff_t *ppos, u64 *entry)

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0319-genirq-do-not-invoke-the-affinity-callback-via-a-wor.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0319-genirq-do-not-invoke-the-affinity-callback-via-a-wor.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0319-genirq-do-not-invoke-the-affinity-callback-via-a-wor.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0319-genirq-do-not-invoke-the-affinity-callback-via-a-wor.patch)
@@ -0,0 +1,151 @@
+From: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Date: Wed, 21 Aug 2013 17:48:46 +0200
+Subject: [PATCH 319/371] genirq: do not invoke the affinity callback via a
+ workqueue
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=b1650111200519c39ca9a9da858a3d0ffc1b113d
+
+Joe Korty reported, that __irq_set_affinity_locked() schedules a
+workqueue while holding a rawlock which results in a might_sleep()
+warning.
+This patch moves the invokation into a process context so that we only
+wakeup() a process while holding the lock.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ include/linux/interrupt.h |  1 +
+ kernel/irq/manage.c       | 79 +++++++++++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 77 insertions(+), 3 deletions(-)
+
+diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
+index f70a65b..42f79fb 100644
+--- a/include/linux/interrupt.h
++++ b/include/linux/interrupt.h
+@@ -271,6 +271,7 @@ struct irq_affinity_notify {
+ 	unsigned int irq;
+ 	struct kref kref;
+ 	struct work_struct work;
++	struct list_head list;
+ 	void (*notify)(struct irq_affinity_notify *, const cpumask_t *mask);
+ 	void (*release)(struct kref *ref);
+ };
+diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
+index 8b484d8..200df86 100644
+--- a/kernel/irq/manage.c
++++ b/kernel/irq/manage.c
+@@ -141,6 +141,62 @@ static inline void
+ irq_get_pending(struct cpumask *mask, struct irq_desc *desc) { }
+ #endif
+ 
++#ifdef CONFIG_PREEMPT_RT_FULL
++static void _irq_affinity_notify(struct irq_affinity_notify *notify);
++static struct task_struct *set_affinity_helper;
++static LIST_HEAD(affinity_list);
++static DEFINE_RAW_SPINLOCK(affinity_list_lock);
++
++static int set_affinity_thread(void *unused)
++{
++	while (1) {
++		struct irq_affinity_notify *notify;
++		int empty;
++
++		set_current_state(TASK_INTERRUPTIBLE);
++
++		raw_spin_lock_irq(&affinity_list_lock);
++		empty = list_empty(&affinity_list);
++		raw_spin_unlock_irq(&affinity_list_lock);
++
++		if (empty)
++			schedule();
++		if (kthread_should_stop())
++			break;
++		set_current_state(TASK_RUNNING);
++try_next:
++		notify = NULL;
++
++		raw_spin_lock_irq(&affinity_list_lock);
++		if (!list_empty(&affinity_list)) {
++			notify = list_first_entry(&affinity_list,
++					struct irq_affinity_notify, list);
++			list_del_init(&notify->list);
++		}
++		raw_spin_unlock_irq(&affinity_list_lock);
++
++		if (!notify)
++			continue;
++		_irq_affinity_notify(notify);
++		goto try_next;
++	}
++	return 0;
++}
++
++static void init_helper_thread(void)
++{
++	if (set_affinity_helper)
++		return;
++	set_affinity_helper = kthread_run(set_affinity_thread, NULL,
++			"affinity-cb");
++	WARN_ON(IS_ERR(set_affinity_helper));
++}
++#else
++
++static inline void init_helper_thread(void) { }
++
++#endif
++
+ int __irq_set_affinity_locked(struct irq_data *data, const struct cpumask *mask)
+ {
+ 	struct irq_chip *chip = irq_data_get_irq_chip(data);
+@@ -166,7 +222,17 @@ int __irq_set_affinity_locked(struct irq_data *data, const struct cpumask *mask)
+ 
+ 	if (desc->affinity_notify) {
+ 		kref_get(&desc->affinity_notify->kref);
++
++#ifdef CONFIG_PREEMPT_RT_FULL
++		raw_spin_lock(&affinity_list_lock);
++		if (list_empty(&desc->affinity_notify->list))
++			list_add_tail(&affinity_list,
++					&desc->affinity_notify->list);
++		raw_spin_unlock(&affinity_list_lock);
++		wake_up_process(set_affinity_helper);
++#else
+ 		schedule_work(&desc->affinity_notify->work);
++#endif
+ 	}
+ 	irqd_set(data, IRQD_AFFINITY_SET);
+ 
+@@ -207,10 +273,8 @@ int irq_set_affinity_hint(unsigned int irq, const struct cpumask *m)
+ }
+ EXPORT_SYMBOL_GPL(irq_set_affinity_hint);
+ 
+-static void irq_affinity_notify(struct work_struct *work)
++static void _irq_affinity_notify(struct irq_affinity_notify *notify)
+ {
+-	struct irq_affinity_notify *notify =
+-		container_of(work, struct irq_affinity_notify, work);
+ 	struct irq_desc *desc = irq_to_desc(notify->irq);
+ 	cpumask_var_t cpumask;
+ 	unsigned long flags;
+@@ -232,6 +296,13 @@ out:
+ 	kref_put(&notify->kref, notify->release);
+ }
+ 
++static void irq_affinity_notify(struct work_struct *work)
++{
++	struct irq_affinity_notify *notify =
++		container_of(work, struct irq_affinity_notify, work);
++	_irq_affinity_notify(notify);
++}
++
+ /**
+  *	irq_set_affinity_notifier - control notification of IRQ affinity changes
+  *	@irq:		Interrupt for which to enable/disable notification
+@@ -261,6 +332,8 @@ irq_set_affinity_notifier(unsigned int irq, struct irq_affinity_notify *notify)
+ 		notify->irq = irq;
+ 		kref_init(&notify->kref);
+ 		INIT_WORK(&notify->work, irq_affinity_notify);
++		INIT_LIST_HEAD(&notify->list);
++		init_helper_thread();
+ 	}
+ 
+ 	raw_spin_lock_irqsave(&desc->lock, flags);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0320-genirq-Set-the-irq-thread-policy-without-checking-CA.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0320-genirq-Set-the-irq-thread-policy-without-checking-CA.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0320-genirq-Set-the-irq-thread-policy-without-checking-CA.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0320-genirq-Set-the-irq-thread-policy-without-checking-CA.patch)
@@ -0,0 +1,41 @@
+From: Thomas Pfaff <tpfaff at pcs.com>
+Date: Fri, 11 Oct 2013 12:42:49 +0200
+Subject: [PATCH 320/371] genirq: Set the irq thread policy without checking
+ CAP_SYS_NICE
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2a6f6607fb0ce9d1a38c82e0a157903792e176c1
+
+In commit ee23871389 ("genirq: Set irq thread to RT priority on
+creation") we moved the assigment of the thread's priority from the
+thread's function into __setup_irq(). That function may run in user
+context for instance if the user opens an UART node and then driver
+calls requests in the ->open() callback. That user may not have
+CAP_SYS_NICE and so the irq thread won't run with the SCHED_OTHER
+policy.
+
+This patch uses sched_setscheduler_nocheck() so we omit the CAP_SYS_NICE
+check which is otherwise required for the SCHED_OTHER policy.
+
+Cc: Ivo Sieben <meltedpianoman at gmail.com>
+Cc: stable at vger.kernel.org
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Thomas Pfaff <tpfaff at pcs.com>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+[bigeasy: rewrite the changelog]
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ kernel/irq/manage.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
+index 200df86..e4549b2 100644
+--- a/kernel/irq/manage.c
++++ b/kernel/irq/manage.c
+@@ -1041,7 +1041,7 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
+ 			goto out_mput;
+ 		}
+ 
+-		sched_setscheduler(t, SCHED_FIFO, &param);
++		sched_setscheduler_nocheck(t, SCHED_FIFO, &param);
+ 
+ 		/*
+ 		 * We keep the reference to the task struct even if

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0321-hwlat-detector-Don-t-ignore-threshold-module-paramet.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0321-hwlat-detector-Don-t-ignore-threshold-module-paramet.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0321-hwlat-detector-Don-t-ignore-threshold-module-paramet.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0321-hwlat-detector-Don-t-ignore-threshold-module-paramet.patch)
@@ -0,0 +1,30 @@
+From: Mike Galbraith <bitbucket at online.de>
+Date: Fri, 30 Aug 2013 07:57:25 +0200
+Subject: [PATCH 321/371] hwlat-detector: Don't ignore threshold module
+ parameter
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ec136e3971689e7c35a8d00c187feaebface1c97
+
+If the user specified a threshold at module load time, use it.
+
+Cc: stable-rt at vger.kernel.org
+Acked-by: Steven Rostedt <rostedt at goodmis.org>
+Signed-off-by: Mike Galbraith <bitbucket at online.de>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ drivers/misc/hwlat_detector.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/misc/hwlat_detector.c b/drivers/misc/hwlat_detector.c
+index 6f61d5f..d2676b8 100644
+--- a/drivers/misc/hwlat_detector.c
++++ b/drivers/misc/hwlat_detector.c
+@@ -413,7 +413,7 @@ static int init_stats(void)
+ 		goto out;
+ 
+ 	__reset_stats();
+-	data.threshold = DEFAULT_LAT_THRESHOLD;	    /* threshold us */
++	data.threshold = threshold ?: DEFAULT_LAT_THRESHOLD;	    /* threshold us */
+ 	data.sample_window = DEFAULT_SAMPLE_WINDOW; /* window us */
+ 	data.sample_width = DEFAULT_SAMPLE_WIDTH;   /* width us */
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0322-mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0322-mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0322-mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0322-mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch)
@@ -0,0 +1,72 @@
+From: Yang Shi <yang.shi at windriver.com>
+Date: Wed, 30 Oct 2013 11:48:33 -0700
+Subject: [PATCH 322/371] mm/memcontrol: Don't call schedule_work_on in
+ preemption disabled context
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9810d1b81485b1e106a5f92b56edf5b520826290
+
+The following trace is triggered when running ltp oom test cases:
+
+BUG: sleeping function called from invalid context at kernel/rtmutex.c:659
+in_atomic(): 1, irqs_disabled(): 0, pid: 17188, name: oom03
+Preemption disabled at:[<ffffffff8112ba70>] mem_cgroup_reclaim+0x90/0xe0
+
+CPU: 2 PID: 17188 Comm: oom03 Not tainted 3.10.10-rt3 #2
+Hardware name: Intel Corporation Calpella platform/MATXM-CORE-411-B, BIOS 4.6.3 08/18/2010
+ffff88007684d730 ffff880070df9b58 ffffffff8169918d ffff880070df9b70
+ffffffff8106db31 ffff88007688b4a0 ffff880070df9b88 ffffffff8169d9c0
+ffff88007688b4a0 ffff880070df9bc8 ffffffff81059da1 0000000170df9bb0
+Call Trace:
+[<ffffffff8169918d>] dump_stack+0x19/0x1b
+[<ffffffff8106db31>] __might_sleep+0xf1/0x170
+[<ffffffff8169d9c0>] rt_spin_lock+0x20/0x50
+[<ffffffff81059da1>] queue_work_on+0x61/0x100
+[<ffffffff8112b361>] drain_all_stock+0xe1/0x1c0
+[<ffffffff8112ba70>] mem_cgroup_reclaim+0x90/0xe0
+[<ffffffff8112beda>] __mem_cgroup_try_charge+0x41a/0xc40
+[<ffffffff810f1c91>] ? release_pages+0x1b1/0x1f0
+[<ffffffff8106f200>] ? sched_exec+0x40/0xb0
+[<ffffffff8112cc87>] mem_cgroup_charge_common+0x37/0x70
+[<ffffffff8112e2c6>] mem_cgroup_newpage_charge+0x26/0x30
+[<ffffffff8110af68>] handle_pte_fault+0x618/0x840
+[<ffffffff8103ecf6>] ? unpin_current_cpu+0x16/0x70
+[<ffffffff81070f94>] ? migrate_enable+0xd4/0x200
+[<ffffffff8110cde5>] handle_mm_fault+0x145/0x1e0
+[<ffffffff810301e1>] __do_page_fault+0x1a1/0x4c0
+[<ffffffff8169c9eb>] ? preempt_schedule_irq+0x4b/0x70
+[<ffffffff8169e3b7>] ? retint_kernel+0x37/0x40
+[<ffffffff8103053e>] do_page_fault+0xe/0x10
+[<ffffffff8169e4c2>] page_fault+0x22/0x30
+
+So, to prevent schedule_work_on from being called in preempt disabled context,
+replace the pair of get/put_cpu() to get/put_cpu_light().
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Yang Shi <yang.shi at windriver.com>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ mm/memcontrol.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/mm/memcontrol.c b/mm/memcontrol.c
+index f8bdd8d..df84f45 100644
+--- a/mm/memcontrol.c
++++ b/mm/memcontrol.c
+@@ -2077,7 +2077,7 @@ static void drain_all_stock(struct mem_cgroup *root_memcg, bool sync)
+ 
+ 	/* Notify other cpus that system-wide "drain" is running */
+ 	get_online_cpus();
+-	curcpu = get_cpu();
++	curcpu = get_cpu_light();
+ 	for_each_online_cpu(cpu) {
+ 		struct memcg_stock_pcp *stock = &per_cpu(memcg_stock, cpu);
+ 		struct mem_cgroup *memcg;
+@@ -2094,7 +2094,7 @@ static void drain_all_stock(struct mem_cgroup *root_memcg, bool sync)
+ 				schedule_work_on(cpu, &stock->work);
+ 		}
+ 	}
+-	put_cpu();
++	put_cpu_light();
+ 
+ 	if (!sync)
+ 		goto out;

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0323-drm-remove-preempt_disable-from-drm_calc_vbltimestam.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0323-drm-remove-preempt_disable-from-drm_calc_vbltimestam.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0323-drm-remove-preempt_disable-from-drm_calc_vbltimestam.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0323-drm-remove-preempt_disable-from-drm_calc_vbltimestam.patch)
@@ -0,0 +1,80 @@
+From: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Date: Fri, 11 Oct 2013 17:14:31 +0200
+Subject: [PATCH 323/371] drm: remove preempt_disable() from
+ drm_calc_vbltimestamp_from_scanoutpos()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=1efc93e70588fdd70c24aef54c65323217238a1d
+
+Luis captured the following:
+
+| BUG: sleeping function called from invalid context at kernel/rtmutex.c:659
+| in_atomic(): 1, irqs_disabled(): 0, pid: 517, name: Xorg
+| 2 locks held by Xorg/517:
+|  #0:
+|  (
+| &dev->vbl_lock
+| ){......}
+| , at:
+| [<ffffffffa0024c60>] drm_vblank_get+0x30/0x2b0 [drm]
+|  #1:
+|  (
+| &dev->vblank_time_lock
+| ){......}
+| , at:
+| [<ffffffffa0024ce1>] drm_vblank_get+0xb1/0x2b0 [drm]
+| Preemption disabled at:
+| [<ffffffffa008bc95>] i915_get_vblank_timestamp+0x45/0xa0 [i915]
+| CPU: 3 PID: 517 Comm: Xorg Not tainted 3.10.10-rt7+ #5
+| Call Trace:
+|  [<ffffffff8164b790>] dump_stack+0x19/0x1b
+|  [<ffffffff8107e62f>] __might_sleep+0xff/0x170
+|  [<ffffffff81651ac4>] rt_spin_lock+0x24/0x60
+|  [<ffffffffa0084e67>] i915_read32+0x27/0x170 [i915]
+|  [<ffffffffa008a591>] i915_pipe_enabled+0x31/0x40 [i915]
+|  [<ffffffffa008a6be>] i915_get_crtc_scanoutpos+0x3e/0x1b0 [i915]
+|  [<ffffffffa00245d4>] drm_calc_vbltimestamp_from_scanoutpos+0xf4/0x430 [drm]
+|  [<ffffffffa008bc95>] i915_get_vblank_timestamp+0x45/0xa0 [i915]
+|  [<ffffffffa0024998>] drm_get_last_vbltimestamp+0x48/0x70 [drm]
+|  [<ffffffffa0024db5>] drm_vblank_get+0x185/0x2b0 [drm]
+|  [<ffffffffa0025d03>] drm_wait_vblank+0x83/0x5d0 [drm]
+|  [<ffffffffa00212a2>] drm_ioctl+0x552/0x6a0 [drm]
+|  [<ffffffff811a0095>] do_vfs_ioctl+0x325/0x5b0
+|  [<ffffffff811a03a1>] SyS_ioctl+0x81/0xa0
+|  [<ffffffff8165a342>] tracesys+0xdd/0xe2
+
+After a longer thread it was decided to drop the preempt_disable()/
+enable() invocations which were meant for -RT and Mario Kleiner looks
+for a replacement.
+
+Cc: stable-rt at vger.kernel.org
+Reported-By: Luis Claudio R. Goncalves <lclaudio at uudg.org>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ drivers/gpu/drm/drm_irq.c | 7 -------
+ 1 file changed, 7 deletions(-)
+
+diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
+index 73af885..2b13224 100644
+--- a/drivers/gpu/drm/drm_irq.c
++++ b/drivers/gpu/drm/drm_irq.c
+@@ -619,11 +619,6 @@ int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev, int crtc,
+ 	 * code gets preempted or delayed for some reason.
+ 	 */
+ 	for (i = 0; i < DRM_TIMESTAMP_MAXRETRIES; i++) {
+-		/* Disable preemption to make it very likely to
+-		 * succeed in the first iteration even on PREEMPT_RT kernel.
+-		 */
+-		preempt_disable();
+-
+ 		/* Get system timestamp before query. */
+ 		do_gettimeofday(&stime);
+ 
+@@ -633,8 +628,6 @@ int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev, int crtc,
+ 		/* Get system timestamp after query. */
+ 		do_gettimeofday(&raw_time);
+ 
+-		preempt_enable();
+-
+ 		/* Return as no-op if scanout query unsupported or failed. */
+ 		if (!(vbl_status & DRM_SCANOUTPOS_VALID)) {
+ 			DRM_DEBUG("crtc %d : scanoutpos query failed [%d].\n",

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0324-cpu_down-move-migrate_enable-back.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0324-cpu_down-move-migrate_enable-back.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0324-cpu_down-move-migrate_enable-back.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0324-cpu_down-move-migrate_enable-back.patch)
@@ -0,0 +1,56 @@
+From: Tiejun Chen <tiejun.chen at windriver.com>
+Date: Thu, 7 Nov 2013 10:06:07 +0800
+Subject: [PATCH 324/371] cpu_down: move migrate_enable() back
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2185fee372179e9475a7f56edfb70e1389d56aa4
+
+Commit 08c1ab68, "hotplug-use-migrate-disable.patch", intends to
+use migrate_enable()/migrate_disable() to replace that combination
+of preempt_enable() and preempt_disable(), but actually in
+!CONFIG_PREEMPT_RT_FULL case, migrate_enable()/migrate_disable()
+are still equal to preempt_enable()/preempt_disable(). So that
+followed cpu_hotplug_begin()/cpu_unplug_begin(cpu) would go schedule()
+to trigger schedule_debug() like this:
+
+_cpu_down()
+	|
+	+ migrate_disable() = preempt_disable()
+	|
+	+ cpu_hotplug_begin() or cpu_unplug_begin()
+		|
+		+ schedule()
+			|
+			+ __schedule()
+				|
+				+ preempt_disable();
+				|
+				+ __schedule_bug() is true!
+
+So we should move migrate_enable() as the original scheme.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Tiejun Chen <tiejun.chen at windriver.com>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/cpu.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kernel/cpu.c b/kernel/cpu.c
+index 063c2bb..031c644 100644
+--- a/kernel/cpu.c
++++ b/kernel/cpu.c
+@@ -546,6 +546,7 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
+ 		err = -EBUSY;
+ 		goto restore_cpus;
+ 	}
++	migrate_enable();
+ 
+ 	cpu_hotplug_begin();
+ 	err = cpu_unplug_begin(cpu);
+@@ -598,7 +599,6 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
+ out_release:
+ 	cpu_unplug_done(cpu);
+ out_cancel:
+-	migrate_enable();
+ 	cpu_hotplug_done();
+ 	if (!err)
+ 		cpu_notify_nofail(CPU_POST_DEAD | mod, hcpu);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0325-swait-Add-a-few-more-users.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0325-swait-Add-a-few-more-users.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0325-swait-Add-a-few-more-users.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0325-swait-Add-a-few-more-users.patch)
@@ -0,0 +1,68 @@
+From: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Date: Mon, 28 Oct 2013 11:50:06 +0100
+Subject: [PATCH 325/371] swait: Add a few more users
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7ce668a8a28559ff38afa810095db4c20bdbdf1b
+
+The wait-simple queue is lighter weight and more efficient than the full
+wait queue, and may be used in atomic context on PREEMPT_RT.
+
+Fix up some places that needed to call the swait_*() functions instead
+of the wait_*() functions.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ drivers/net/wireless/orinoco/orinoco_usb.c | 2 +-
+ drivers/usb/gadget/f_fs.c                  | 2 +-
+ drivers/usb/gadget/inode.c                 | 4 ++--
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/net/wireless/orinoco/orinoco_usb.c b/drivers/net/wireless/orinoco/orinoco_usb.c
+index 0793e42..d45833f 100644
+--- a/drivers/net/wireless/orinoco/orinoco_usb.c
++++ b/drivers/net/wireless/orinoco/orinoco_usb.c
+@@ -714,7 +714,7 @@ static void ezusb_req_ctx_wait(struct ezusb_priv *upriv,
+ 			while (!ctx->done.done && msecs--)
+ 				udelay(1000);
+ 		} else {
+-			wait_event_interruptible(ctx->done.wait,
++			swait_event_interruptible(ctx->done.wait,
+ 						 ctx->done.done);
+ 		}
+ 		break;
+diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c
+index c635c4c..64c6aab 100644
+--- a/drivers/usb/gadget/f_fs.c
++++ b/drivers/usb/gadget/f_fs.c
+@@ -1270,7 +1270,7 @@ static void ffs_data_put(struct ffs_data *ffs)
+ 		BUG_ON(mutex_is_locked(&ffs->mutex) ||
+ 		       spin_is_locked(&ffs->ev.waitq.lock) ||
+ 		       waitqueue_active(&ffs->ev.waitq) ||
+-		       waitqueue_active(&ffs->ep0req_completion.wait));
++		       swaitqueue_active(&ffs->ep0req_completion.wait));
+ 		kfree(ffs);
+ 	}
+ }
+diff --git a/drivers/usb/gadget/inode.c b/drivers/usb/gadget/inode.c
+index 7138540..616d19e 100644
+--- a/drivers/usb/gadget/inode.c
++++ b/drivers/usb/gadget/inode.c
+@@ -339,7 +339,7 @@ ep_io (struct ep_data *epdata, void *buf, unsigned len)
+ 	spin_unlock_irq (&epdata->dev->lock);
+ 
+ 	if (likely (value == 0)) {
+-		value = wait_event_interruptible (done.wait, done.done);
++		value = swait_event_interruptible (done.wait, done.done);
+ 		if (value != 0) {
+ 			spin_lock_irq (&epdata->dev->lock);
+ 			if (likely (epdata->ep != NULL)) {
+@@ -348,7 +348,7 @@ ep_io (struct ep_data *epdata, void *buf, unsigned len)
+ 				usb_ep_dequeue (epdata->ep, epdata->req);
+ 				spin_unlock_irq (&epdata->dev->lock);
+ 
+-				wait_event (done.wait, done.done);
++				swait_event (done.wait, done.done);
+ 				if (epdata->status == -ECONNRESET)
+ 					epdata->status = -EINTR;
+ 			} else {

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0326-lockdep-Correctly-annotate-hardirq-context-in-irq_ex.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0326-lockdep-Correctly-annotate-hardirq-context-in-irq_ex.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0326-lockdep-Correctly-annotate-hardirq-context-in-irq_ex.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0326-lockdep-Correctly-annotate-hardirq-context-in-irq_ex.patch)
@@ -0,0 +1,139 @@
+From: Peter Zijlstra <peterz at infradead.org>
+Date: Tue, 19 Nov 2013 16:42:47 +0100
+Subject: [PATCH 326/371] lockdep: Correctly annotate hardirq context in
+ irq_exit()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d24d20c3727465870c3162197c3c8774449c968f
+
+There was a reported deadlock on -rt which lockdep didn't report.
+
+It turns out that in irq_exit() we tell lockdep that the hardirq
+context ends and then do all kinds of locking afterwards.
+
+To fix it, move trace_hardirq_exit() to the very end of irq_exit(), this
+ensures all locking in tick_irq_exit() and rcu_irq_exit() are properly
+recorded as happening from hardirq context.
+
+This however leads to the 'fun' little problem of running softirqs
+while in hardirq context. To cure this make the softirq code a little
+more complex (in the CONFIG_TRACE_IRQFLAGS case).
+
+Due to stack swizzling arch dependent trickery we cannot pass an
+argument to __do_softirq() to tell it if it was done from hardirq
+context or not; so use a side-band argument.
+
+When we do __do_softirq() from hardirq context, 'atomically' flip to
+softirq context and back, so that no locking goes without being in
+either hard- or soft-irq context.
+
+I didn't find any new problems in mainline using this patch, but it
+did show the -rt problem.
+
+Cc: stable-rt at vger.kernel.org
+Reported-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Cc: Frederic Weisbecker <fweisbec at gmail.com>
+Cc: Linus Torvalds <torvalds at linux-foundation.org>
+Cc: Andrew Morton <akpm at linux-foundation.org>
+Signed-off-by: Peter Zijlstra <peterz at infradead.org>
+Link: http://lkml.kernel.org/n/tip-dgwc5cdksbn0jk09vbmcc9sa@git.kernel.org
+Signed-off-by: Ingo Molnar <mingo at kernel.org>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ kernel/softirq.c | 49 ++++++++++++++++++++++++++++++++++++++++++++-----
+ 1 file changed, 44 insertions(+), 5 deletions(-)
+
+diff --git a/kernel/softirq.c b/kernel/softirq.c
+index ca00a68..7d882cc 100644
+--- a/kernel/softirq.c
++++ b/kernel/softirq.c
+@@ -297,6 +297,44 @@ EXPORT_SYMBOL(local_bh_enable_ip);
+  */
+ #define MAX_SOFTIRQ_RESTART 10
+ 
++#ifdef CONFIG_TRACE_IRQFLAGS
++/*
++ * Convoluted means of passing __do_softirq() a message through the various
++ * architecture execute_on_stack() bits.
++ *
++ * When we run softirqs from irq_exit() and thus on the hardirq stack we need
++ * to keep the lockdep irq context tracking as tight as possible in order to
++ * not miss-qualify lock contexts and miss possible deadlocks.
++ */
++static DEFINE_PER_CPU(int, softirq_from_hardirq);
++
++static inline void lockdep_softirq_from_hardirq(void)
++{
++	this_cpu_write(softirq_from_hardirq, 1);
++}
++
++static inline void lockdep_softirq_start(void)
++{
++	if (this_cpu_read(softirq_from_hardirq))
++		trace_hardirq_exit();
++	lockdep_softirq_enter();
++}
++
++static inline void lockdep_softirq_end(void)
++{
++	lockdep_softirq_exit();
++	if (this_cpu_read(softirq_from_hardirq)) {
++		this_cpu_write(softirq_from_hardirq, 0);
++		trace_hardirq_enter();
++	}
++}
++
++#else
++static inline void lockdep_softirq_from_hardirq(void) { }
++static inline void lockdep_softirq_start(void) { }
++static inline void lockdep_softirq_end(void) { }
++#endif
++
+ asmlinkage void __do_softirq(void)
+ {
+ 	__u32 pending;
+@@ -308,7 +346,7 @@ asmlinkage void __do_softirq(void)
+ 
+ 	__local_bh_disable((unsigned long)__builtin_return_address(0),
+ 			   SOFTIRQ_OFFSET);
+-	lockdep_softirq_enter();
++	lockdep_softirq_start();
+ 
+ 	cpu = smp_processor_id();
+ restart:
+@@ -324,7 +362,7 @@ restart:
+ 	if (pending)
+ 		wakeup_softirqd();
+ 
+-	lockdep_softirq_exit();
++	lockdep_softirq_end();
+ 
+ 	account_system_vtime(current);
+ 	__local_bh_enable(SOFTIRQ_OFFSET);
+@@ -582,9 +620,10 @@ void irq_enter(void)
+ static inline void invoke_softirq(void)
+ {
+ #ifndef CONFIG_PREEMPT_RT_FULL
+-	if (!force_irqthreads)
++	if (!force_irqthreads) {
++		lockdep_softirq_from_hardirq();
+ 		__do_softirq();
+-	else {
++	} else {
+ 		__local_bh_disable((unsigned long)__builtin_return_address(0),
+ 				SOFTIRQ_OFFSET);
+ 		wakeup_softirqd();
+@@ -618,7 +657,6 @@ static inline void invoke_softirq(void)
+ void irq_exit(void)
+ {
+ 	account_system_vtime(current);
+-	trace_hardirq_exit();
+ 	sub_preempt_count(IRQ_EXIT_OFFSET);
+ 	if (!in_interrupt() && local_softirq_pending())
+ 		invoke_softirq();
+@@ -629,6 +667,7 @@ void irq_exit(void)
+ 	if (idle_cpu(smp_processor_id()) && !in_interrupt() && !need_resched())
+ 		tick_nohz_stop_sched_tick(0);
+ #endif
++	trace_hardirq_exit(); /* must be last! */
+ 	__preempt_enable_no_resched();
+ }
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0327-rtmutex-use-a-trylock-for-waiter-lock-in-trylock.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0327-rtmutex-use-a-trylock-for-waiter-lock-in-trylock.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0327-rtmutex-use-a-trylock-for-waiter-lock-in-trylock.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0327-rtmutex-use-a-trylock-for-waiter-lock-in-trylock.patch)
@@ -0,0 +1,130 @@
+From: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Date: Fri, 15 Nov 2013 15:46:50 +0100
+Subject: [PATCH 327/371] rtmutex: use a trylock for waiter lock in trylock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=def53d919f3355e23134315a714315f2e896327a
+
+Mike Galbraith captered the following:
+| >#11 [ffff88017b243e90] _raw_spin_lock at ffffffff815d2596
+| >#12 [ffff88017b243e90] rt_mutex_trylock at ffffffff815d15be
+| >#13 [ffff88017b243eb0] get_next_timer_interrupt at ffffffff81063b42
+| >#14 [ffff88017b243f00] tick_nohz_stop_sched_tick at ffffffff810bd1fd
+| >#15 [ffff88017b243f70] tick_nohz_irq_exit at ffffffff810bd7d2
+| >#16 [ffff88017b243f90] irq_exit at ffffffff8105b02d
+| >#17 [ffff88017b243fb0] reschedule_interrupt at ffffffff815db3dd
+| >--- <IRQ stack> ---
+| >#18 [ffff88017a2a9bc8] reschedule_interrupt at ffffffff815db3dd
+| >    [exception RIP: task_blocks_on_rt_mutex+51]
+| >#19 [ffff88017a2a9ce0] rt_spin_lock_slowlock at ffffffff815d183c
+| >#20 [ffff88017a2a9da0] lock_timer_base.isra.35 at ffffffff81061cbf
+| >#21 [ffff88017a2a9dd0] schedule_timeout at ffffffff815cf1ce
+| >#22 [ffff88017a2a9e50] rcu_gp_kthread at ffffffff810f9bbb
+| >#23 [ffff88017a2a9ed0] kthread at ffffffff810796d5
+| >#24 [ffff88017a2a9f50] ret_from_fork at ffffffff815da04c
+
+lock_timer_base() does a try_lock() which deadlocks on the waiter lock
+not the lock itself.
+This patch takes the waiter_lock with trylock so it should work from interrupt
+context as well. If the fastpath doesn't work and the waiter_lock itself is
+taken then it seems that the lock itself taken.
+This patch also adds a "rt_spin_try_unlock" to keep lockdep happy. If we
+managed to take the wait_lock in the first place we should also be able
+to take it in the unlock path.
+
+Cc: stable-rt at vger.kernel.org
+Reported-by: Mike Galbraith <bitbucket at online.de>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ include/linux/spinlock_rt.h |  1 +
+ kernel/rtmutex.c            | 31 +++++++++++++++++++++++++++----
+ kernel/timer.c              |  2 +-
+ 3 files changed, 29 insertions(+), 5 deletions(-)
+
+diff --git a/include/linux/spinlock_rt.h b/include/linux/spinlock_rt.h
+index 3b555b4..28edba7 100644
+--- a/include/linux/spinlock_rt.h
++++ b/include/linux/spinlock_rt.h
+@@ -20,6 +20,7 @@ extern void __lockfunc rt_spin_lock(spinlock_t *lock);
+ extern unsigned long __lockfunc rt_spin_lock_trace_flags(spinlock_t *lock);
+ extern void __lockfunc rt_spin_lock_nested(spinlock_t *lock, int subclass);
+ extern void __lockfunc rt_spin_unlock(spinlock_t *lock);
++extern void __lockfunc rt_spin_unlock_after_trylock_in_irq(spinlock_t *lock);
+ extern void __lockfunc rt_spin_unlock_wait(spinlock_t *lock);
+ extern int __lockfunc rt_spin_trylock_irqsave(spinlock_t *lock, unsigned long *flags);
+ extern int __lockfunc rt_spin_trylock_bh(spinlock_t *lock);
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index 7e0c4d7a..744d41f 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -951,10 +951,8 @@ static void  noinline __sched rt_spin_lock_slowlock(struct rt_mutex *lock)
+ /*
+  * Slow path to release a rt_mutex spin_lock style
+  */
+-static void  noinline __sched rt_spin_lock_slowunlock(struct rt_mutex *lock)
++static void __sched __rt_spin_lock_slowunlock(struct rt_mutex *lock)
+ {
+-	raw_spin_lock(&lock->wait_lock);
+-
+ 	debug_rt_mutex_unlock(lock);
+ 
+ 	rt_mutex_deadlock_account_unlock(current);
+@@ -973,6 +971,23 @@ static void  noinline __sched rt_spin_lock_slowunlock(struct rt_mutex *lock)
+ 	rt_mutex_adjust_prio(current);
+ }
+ 
++static void  noinline __sched rt_spin_lock_slowunlock(struct rt_mutex *lock)
++{
++	raw_spin_lock(&lock->wait_lock);
++	__rt_spin_lock_slowunlock(lock);
++}
++
++static void  noinline __sched rt_spin_lock_slowunlock_hirq(struct rt_mutex *lock)
++{
++	int ret;
++
++	do {
++		ret = raw_spin_trylock(&lock->wait_lock);
++	} while (!ret);
++
++	__rt_spin_lock_slowunlock(lock);
++}
++
+ void __lockfunc rt_spin_lock(spinlock_t *lock)
+ {
+ 	rt_spin_lock_fastlock(&lock->lock, rt_spin_lock_slowlock);
+@@ -1003,6 +1018,13 @@ void __lockfunc rt_spin_unlock(spinlock_t *lock)
+ }
+ EXPORT_SYMBOL(rt_spin_unlock);
+ 
++void __lockfunc rt_spin_unlock_after_trylock_in_irq(spinlock_t *lock)
++{
++	/* NOTE: we always pass in '1' for nested, for simplicity */
++	spin_release(&lock->dep_map, 1, _RET_IP_);
++	rt_spin_lock_fastunlock(&lock->lock, rt_spin_lock_slowunlock_hirq);
++}
++
+ void __lockfunc __rt_spin_unlock(struct rt_mutex *lock)
+ {
+ 	rt_spin_lock_fastunlock(lock, rt_spin_lock_slowunlock);
+@@ -1236,7 +1258,8 @@ rt_mutex_slowtrylock(struct rt_mutex *lock)
+ {
+ 	int ret = 0;
+ 
+-	raw_spin_lock(&lock->wait_lock);
++	if (!raw_spin_trylock(&lock->wait_lock))
++		return ret;
+ 	init_lists(lock);
+ 
+ 	if (likely(rt_mutex_owner(lock) != current)) {
+diff --git a/kernel/timer.c b/kernel/timer.c
+index 4fe22a0..badd2d2 100644
+--- a/kernel/timer.c
++++ b/kernel/timer.c
+@@ -1336,7 +1336,7 @@ unsigned long get_next_timer_interrupt(unsigned long now)
+ 		if (time_before_eq(base->next_timer, base->timer_jiffies))
+ 			base->next_timer = __next_timer_interrupt(base);
+ 		expires = base->next_timer;
+-		rt_spin_unlock(&base->lock);
++		rt_spin_unlock_after_trylock_in_irq(&base->lock);
+ 	} else {
+ 		expires = now + 1;
+ 	}

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0328-smp-introduce-a-generic-on_each_cpu_mask-function.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0328-smp-introduce-a-generic-on_each_cpu_mask-function.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0328-smp-introduce-a-generic-on_each_cpu_mask-function.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0328-smp-introduce-a-generic-on_each_cpu_mask-function.patch)
@@ -0,0 +1,269 @@
+From: Gilad Ben-Yossef <gilad at benyossef.com>
+Date: Wed, 28 Mar 2012 14:42:43 -0700
+Subject: [PATCH 328/371] smp: introduce a generic on_each_cpu_mask() function
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=d45efcb45cffa87cee8d5166a21afdcc49a0a3d9
+
+[ Upstream commit 3fc498f165304dc913f1d13b5ac9ab4c758ee7ab ]
+
+We have lots of infrastructure in place to partition multi-core systems
+such that we have a group of CPUs that are dedicated to specific task:
+cgroups, scheduler and interrupt affinity, and cpuisol= boot parameter.
+Still, kernel code will at times interrupt all CPUs in the system via IPIs
+for various needs.  These IPIs are useful and cannot be avoided
+altogether, but in certain cases it is possible to interrupt only specific
+CPUs that have useful work to do and not the entire system.
+
+This patch set, inspired by discussions with Peter Zijlstra and Frederic
+Weisbecker when testing the nohz task patch set, is a first stab at trying
+to explore doing this by locating the places where such global IPI calls
+are being made and turning the global IPI into an IPI for a specific group
+of CPUs.  The purpose of the patch set is to get feedback if this is the
+right way to go for dealing with this issue and indeed, if the issue is
+even worth dealing with at all.  Based on the feedback from this patch set
+I plan to offer further patches that address similar issue in other code
+paths.
+
+This patch creates an on_each_cpu_mask() and on_each_cpu_cond()
+infrastructure API (the former derived from existing arch specific
+versions in Tile and Arm) and uses them to turn several global IPI
+invocation to per CPU group invocations.
+
+Core kernel:
+
+on_each_cpu_mask() calls a function on processors specified by cpumask,
+which may or may not include the local processor.
+
+You must not call this function with disabled interrupts or from a
+hardware interrupt handler or from a bottom half handler.
+
+arch/arm:
+
+Note that the generic version is a little different then the Arm one:
+
+1. It has the mask as first parameter
+2. It calls the function on the calling CPU with interrupts disabled,
+   but this should be OK since the function is called on the other CPUs
+   with interrupts disabled anyway.
+
+arch/tile:
+
+The API is the same as the tile private one, but the generic version
+also calls the function on the with interrupts disabled in UP case
+
+This is OK since the function is called on the other CPUs
+with interrupts disabled.
+
+Signed-off-by: Gilad Ben-Yossef <gilad at benyossef.com>
+Reviewed-by: Christoph Lameter <cl at linux.com>
+Acked-by: Chris Metcalf <cmetcalf at tilera.com>
+Acked-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
+Cc: Frederic Weisbecker <fweisbec at gmail.com>
+Cc: Russell King <linux at arm.linux.org.uk>
+Cc: Pekka Enberg <penberg at kernel.org>
+Cc: Matt Mackall <mpm at selenic.com>
+Cc: Rik van Riel <riel at redhat.com>
+Cc: Andi Kleen <andi at firstfloor.org>
+Cc: Sasha Levin <levinsasha928 at gmail.com>
+Cc: Mel Gorman <mel at csn.ul.ie>
+Cc: Alexander Viro <viro at zeniv.linux.org.uk>
+Cc: Avi Kivity <avi at redhat.com>
+Acked-by: Michal Nazarewicz <mina86 at mina86.org>
+Cc: Kosaki Motohiro <kosaki.motohiro at gmail.com>
+Cc: Milton Miller <miltonm at bga.com>
+Cc: Russell King <linux at arm.linux.org.uk>
+Acked-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
+Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ arch/arm/kernel/smp_tlb.c   | 20 +++++---------------
+ arch/tile/include/asm/smp.h |  7 -------
+ arch/tile/kernel/smp.c      | 19 -------------------
+ include/linux/smp.h         | 22 ++++++++++++++++++++++
+ kernel/smp.c                | 29 +++++++++++++++++++++++++++++
+ 5 files changed, 56 insertions(+), 41 deletions(-)
+
+diff --git a/arch/arm/kernel/smp_tlb.c b/arch/arm/kernel/smp_tlb.c
+index 7dcb352..02c5d2c 100644
+--- a/arch/arm/kernel/smp_tlb.c
++++ b/arch/arm/kernel/smp_tlb.c
+@@ -13,18 +13,6 @@
+ #include <asm/smp_plat.h>
+ #include <asm/tlbflush.h>
+ 
+-static void on_each_cpu_mask(void (*func)(void *), void *info, int wait,
+-	const struct cpumask *mask)
+-{
+-	preempt_disable();
+-
+-	smp_call_function_many(mask, func, info, wait);
+-	if (cpumask_test_cpu(smp_processor_id(), mask))
+-		func(info);
+-
+-	preempt_enable();
+-}
+-
+ /**********************************************************************/
+ 
+ /*
+@@ -87,7 +75,7 @@ void flush_tlb_all(void)
+ void flush_tlb_mm(struct mm_struct *mm)
+ {
+ 	if (tlb_ops_need_broadcast())
+-		on_each_cpu_mask(ipi_flush_tlb_mm, mm, 1, mm_cpumask(mm));
++		on_each_cpu_mask(mm_cpumask(mm), ipi_flush_tlb_mm, mm, 1);
+ 	else
+ 		local_flush_tlb_mm(mm);
+ }
+@@ -98,7 +86,8 @@ void flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr)
+ 		struct tlb_args ta;
+ 		ta.ta_vma = vma;
+ 		ta.ta_start = uaddr;
+-		on_each_cpu_mask(ipi_flush_tlb_page, &ta, 1, mm_cpumask(vma->vm_mm));
++		on_each_cpu_mask(mm_cpumask(vma->vm_mm), ipi_flush_tlb_page,
++					&ta, 1);
+ 	} else
+ 		local_flush_tlb_page(vma, uaddr);
+ }
+@@ -121,7 +110,8 @@ void flush_tlb_range(struct vm_area_struct *vma,
+ 		ta.ta_vma = vma;
+ 		ta.ta_start = start;
+ 		ta.ta_end = end;
+-		on_each_cpu_mask(ipi_flush_tlb_range, &ta, 1, mm_cpumask(vma->vm_mm));
++		on_each_cpu_mask(mm_cpumask(vma->vm_mm), ipi_flush_tlb_range,
++					&ta, 1);
+ 	} else
+ 		local_flush_tlb_range(vma, start, end);
+ }
+diff --git a/arch/tile/include/asm/smp.h b/arch/tile/include/asm/smp.h
+index 532124a..1aa759a 100644
+--- a/arch/tile/include/asm/smp.h
++++ b/arch/tile/include/asm/smp.h
+@@ -43,10 +43,6 @@ void evaluate_message(int tag);
+ /* Boot a secondary cpu */
+ void online_secondary(void);
+ 
+-/* Call a function on a specified set of CPUs (may include this one). */
+-extern void on_each_cpu_mask(const struct cpumask *mask,
+-			     void (*func)(void *), void *info, bool wait);
+-
+ /* Topology of the supervisor tile grid, and coordinates of boot processor */
+ extern HV_Topology smp_topology;
+ 
+@@ -91,9 +87,6 @@ void print_disabled_cpus(void);
+ 
+ #else /* !CONFIG_SMP */
+ 
+-#define on_each_cpu_mask(mask, func, info, wait)		\
+-  do { if (cpumask_test_cpu(0, (mask))) func(info); } while (0)
+-
+ #define smp_master_cpu		0
+ #define smp_height		1
+ #define smp_width		1
+diff --git a/arch/tile/kernel/smp.c b/arch/tile/kernel/smp.c
+index c52224d..a44e103 100644
+--- a/arch/tile/kernel/smp.c
++++ b/arch/tile/kernel/smp.c
+@@ -87,25 +87,6 @@ void send_IPI_allbutself(int tag)
+ 	send_IPI_many(&mask, tag);
+ }
+ 
+-
+-/*
+- * Provide smp_call_function_mask, but also run function locally
+- * if specified in the mask.
+- */
+-void on_each_cpu_mask(const struct cpumask *mask, void (*func)(void *),
+-		      void *info, bool wait)
+-{
+-	int cpu = get_cpu();
+-	smp_call_function_many(mask, func, info, wait);
+-	if (cpumask_test_cpu(cpu, mask)) {
+-		local_irq_disable();
+-		func(info);
+-		local_irq_enable();
+-	}
+-	put_cpu();
+-}
+-
+-
+ /*
+  * Functions related to starting/stopping cpus.
+  */
+diff --git a/include/linux/smp.h b/include/linux/smp.h
+index 78fd0a2..742a45a 100644
+--- a/include/linux/smp.h
++++ b/include/linux/smp.h
+@@ -101,6 +101,13 @@ static inline void call_function_init(void) { }
+ int on_each_cpu(smp_call_func_t func, void *info, int wait);
+ 
+ /*
++ * Call a function on processors specified by mask, which might include
++ * the local one.
++ */
++void on_each_cpu_mask(const struct cpumask *mask, smp_call_func_t func,
++		void *info, bool wait);
++
++/*
+  * Mark the boot cpu "online" so that it can call console drivers in
+  * printk() and can access its per-cpu storage.
+  */
+@@ -131,6 +138,21 @@ static inline int up_smp_call_function(smp_call_func_t func, void *info)
+ 		local_irq_enable();		\
+ 		0;				\
+ 	})
++/*
++ * Note we still need to test the mask even for UP
++ * because we actually can get an empty mask from
++ * code that on SMP might call us without the local
++ * CPU in the mask.
++ */
++#define on_each_cpu_mask(mask, func, info, wait) \
++	do {						\
++		if (cpumask_test_cpu(0, (mask))) {	\
++			local_irq_disable();		\
++			(func)(info);			\
++			local_irq_enable();		\
++		}					\
++	} while (0)
++
+ static inline void smp_send_reschedule(int cpu) { }
+ #define num_booting_cpus()			1
+ #define smp_prepare_boot_cpu()			do {} while (0)
+diff --git a/kernel/smp.c b/kernel/smp.c
+index 9e800b2..7b4e359 100644
+--- a/kernel/smp.c
++++ b/kernel/smp.c
+@@ -712,3 +712,32 @@ int on_each_cpu(void (*func) (void *info), void *info, int wait)
+ 	return ret;
+ }
+ EXPORT_SYMBOL(on_each_cpu);
++
++/**
++ * on_each_cpu_mask(): Run a function on processors specified by
++ * cpumask, which may include the local processor.
++ * @mask: The set of cpus to run on (only runs on online subset).
++ * @func: The function to run. This must be fast and non-blocking.
++ * @info: An arbitrary pointer to pass to the function.
++ * @wait: If true, wait (atomically) until function has completed
++ *        on other CPUs.
++ *
++ * If @wait is true, then returns once @func has returned.
++ *
++ * You must not call this function with disabled interrupts or
++ * from a hardware interrupt handler or from a bottom half handler.
++ */
++void on_each_cpu_mask(const struct cpumask *mask, smp_call_func_t func,
++			void *info, bool wait)
++{
++	int cpu = get_cpu();
++
++	smp_call_function_many(mask, func, info, wait);
++	if (cpumask_test_cpu(cpu, mask)) {
++		local_irq_disable();
++		func(info);
++		local_irq_enable();
++	}
++	put_cpu();
++}
++EXPORT_SYMBOL(on_each_cpu_mask);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0329-smp-add-func-to-IPI-cpus-based-on-parameter-func.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0329-smp-add-func-to-IPI-cpus-based-on-parameter-func.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0329-smp-add-func-to-IPI-cpus-based-on-parameter-func.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0329-smp-add-func-to-IPI-cpus-based-on-parameter-func.patch)
@@ -0,0 +1,159 @@
+From: Gilad Ben-Yossef <gilad at benyossef.com>
+Date: Wed, 28 Mar 2012 14:42:43 -0700
+Subject: [PATCH 329/371] smp: add func to IPI cpus based on parameter func
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=61a0b120ee7bde27d6201b62d553b81c6f653a71
+
+[ Upstream commit b3a7e98e024ffa9f7e4554dd720c508015c4a831 ]
+
+Add the on_each_cpu_cond() function that wraps on_each_cpu_mask() and
+calculates the cpumask of cpus to IPI by calling a function supplied as a
+parameter in order to determine whether to IPI each specific cpu.
+
+The function works around allocation failure of cpumask variable in
+CONFIG_CPUMASK_OFFSTACK=y by itereating over cpus sending an IPI a time
+via smp_call_function_single().
+
+The function is useful since it allows to seperate the specific code that
+decided in each case whether to IPI a specific cpu for a specific request
+from the common boilerplate code of handling creating the mask, handling
+failures etc.
+
+[akpm at linux-foundation.org: s/gfpflags/gfp_flags/]
+[akpm at linux-foundation.org: avoid double-evaluation of `info' (per Michal), parenthesise evaluation of `cond_func']
+[akpm at linux-foundation.org: s/CPU/CPUs, use all 80 cols in comment]
+Signed-off-by: Gilad Ben-Yossef <gilad at benyossef.com>
+Cc: Chris Metcalf <cmetcalf at tilera.com>
+Cc: Christoph Lameter <cl at linux-foundation.org>
+Acked-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
+Cc: Frederic Weisbecker <fweisbec at gmail.com>
+Cc: Russell King <linux at arm.linux.org.uk>
+Cc: Pekka Enberg <penberg at kernel.org>
+Cc: Matt Mackall <mpm at selenic.com>
+Cc: Sasha Levin <levinsasha928 at gmail.com>
+Cc: Rik van Riel <riel at redhat.com>
+Cc: Andi Kleen <andi at firstfloor.org>
+Cc: Alexander Viro <viro at zeniv.linux.org.uk>
+Cc: Avi Kivity <avi at redhat.com>
+Acked-by: Michal Nazarewicz <mina86 at mina86.org>
+Cc: Kosaki Motohiro <kosaki.motohiro at gmail.com>
+Cc: Milton Miller <miltonm at bga.com>
+Reviewed-by: "Srivatsa S. Bhat" <srivatsa.bhat at linux.vnet.ibm.com>
+Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ include/linux/smp.h | 24 +++++++++++++++++++++
+ kernel/smp.c        | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 85 insertions(+)
+
+diff --git a/include/linux/smp.h b/include/linux/smp.h
+index 742a45a..3001ba5 100644
+--- a/include/linux/smp.h
++++ b/include/linux/smp.h
+@@ -108,6 +108,15 @@ void on_each_cpu_mask(const struct cpumask *mask, smp_call_func_t func,
+ 		void *info, bool wait);
+ 
+ /*
++ * Call a function on each processor for which the supplied function
++ * cond_func returns a positive value. This may include the local
++ * processor.
++ */
++void on_each_cpu_cond(bool (*cond_func)(int cpu, void *info),
++		smp_call_func_t func, void *info, bool wait,
++		gfp_t gfp_flags);
++
++/*
+  * Mark the boot cpu "online" so that it can call console drivers in
+  * printk() and can access its per-cpu storage.
+  */
+@@ -152,6 +161,21 @@ static inline int up_smp_call_function(smp_call_func_t func, void *info)
+ 			local_irq_enable();		\
+ 		}					\
+ 	} while (0)
++/*
++ * Preemption is disabled here to make sure the cond_func is called under the
++ * same condtions in UP and SMP.
++ */
++#define on_each_cpu_cond(cond_func, func, info, wait, gfp_flags)\
++	do {							\
++		void *__info = (info);				\
++		preempt_disable();				\
++		if ((cond_func)(0, __info)) {			\
++			local_irq_disable();			\
++			(func)(__info);				\
++			local_irq_enable();			\
++		}						\
++		preempt_enable();				\
++	} while (0)
+ 
+ static inline void smp_send_reschedule(int cpu) { }
+ #define num_booting_cpus()			1
+diff --git a/kernel/smp.c b/kernel/smp.c
+index 7b4e359..d5f3238 100644
+--- a/kernel/smp.c
++++ b/kernel/smp.c
+@@ -741,3 +741,64 @@ void on_each_cpu_mask(const struct cpumask *mask, smp_call_func_t func,
+ 	put_cpu();
+ }
+ EXPORT_SYMBOL(on_each_cpu_mask);
++
++/*
++ * on_each_cpu_cond(): Call a function on each processor for which
++ * the supplied function cond_func returns true, optionally waiting
++ * for all the required CPUs to finish. This may include the local
++ * processor.
++ * @cond_func:	A callback function that is passed a cpu id and
++ *		the the info parameter. The function is called
++ *		with preemption disabled. The function should
++ *		return a blooean value indicating whether to IPI
++ *		the specified CPU.
++ * @func:	The function to run on all applicable CPUs.
++ *		This must be fast and non-blocking.
++ * @info:	An arbitrary pointer to pass to both functions.
++ * @wait:	If true, wait (atomically) until function has
++ *		completed on other CPUs.
++ * @gfp_flags:	GFP flags to use when allocating the cpumask
++ *		used internally by the function.
++ *
++ * The function might sleep if the GFP flags indicates a non
++ * atomic allocation is allowed.
++ *
++ * Preemption is disabled to protect against CPUs going offline but not online.
++ * CPUs going online during the call will not be seen or sent an IPI.
++ *
++ * You must not call this function with disabled interrupts or
++ * from a hardware interrupt handler or from a bottom half handler.
++ */
++void on_each_cpu_cond(bool (*cond_func)(int cpu, void *info),
++			smp_call_func_t func, void *info, bool wait,
++			gfp_t gfp_flags)
++{
++	cpumask_var_t cpus;
++	int cpu, ret;
++
++	might_sleep_if(gfp_flags & __GFP_WAIT);
++
++	if (likely(zalloc_cpumask_var(&cpus, (gfp_flags|__GFP_NOWARN)))) {
++		preempt_disable();
++		for_each_online_cpu(cpu)
++			if (cond_func(cpu, info))
++				cpumask_set_cpu(cpu, cpus);
++		on_each_cpu_mask(cpus, func, info, wait);
++		preempt_enable();
++		free_cpumask_var(cpus);
++	} else {
++		/*
++		 * No free cpumask, bother. No matter, we'll
++		 * just have to IPI them one by one.
++		 */
++		preempt_disable();
++		for_each_online_cpu(cpu)
++			if (cond_func(cpu, info)) {
++				ret = smp_call_function_single(cpu, func,
++								info, wait);
++				WARN_ON_ONCE(!ret);
++			}
++		preempt_enable();
++	}
++}
++EXPORT_SYMBOL(on_each_cpu_cond);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0330-fs-only-send-IPI-to-invalidate-LRU-BH-when-needed.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0330-fs-only-send-IPI-to-invalidate-LRU-BH-when-needed.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0330-fs-only-send-IPI-to-invalidate-LRU-BH-when-needed.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0330-fs-only-send-IPI-to-invalidate-LRU-BH-when-needed.patch)
@@ -0,0 +1,59 @@
+From: Gilad Ben-Yossef <gilad at benyossef.com>
+Date: Wed, 28 Mar 2012 14:42:45 -0700
+Subject: [PATCH 330/371] fs: only send IPI to invalidate LRU BH when needed
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=53366be4436dd9a6e579e9d6654c46a8d861c9e0
+
+[ Upstream commit 42be35d0390b966253136a285f507f5ad00fd9e8 ]
+
+In several code paths, such as when unmounting a file system (but not
+only) we send an IPI to ask each cpu to invalidate its local LRU BHs.
+
+For multi-cores systems that have many cpus that may not have any LRU BH
+because they are idle or because they have not performed any file system
+accesses since last invalidation (e.g.  CPU crunching on high perfomance
+computing nodes that write results to shared memory or only using
+filesystems that do not use the bh layer.) This can lead to loss of
+performance each time someone switches the KVM (the virtual keyboard and
+screen type, not the hypervisor) if it has a USB storage stuck in.
+
+This patch attempts to only send an IPI to cpus that have LRU BH.
+
+Signed-off-by: Gilad Ben-Yossef <gilad at benyossef.com>
+Acked-by: Peter Zijlstra <a.p.zijlstra at chello.nl>
+Cc: Alexander Viro <viro at zeniv.linux.org.uk>
+Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ fs/buffer.c | 15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/fs/buffer.c b/fs/buffer.c
+index 74794b3..4f5bc1d 100644
+--- a/fs/buffer.c
++++ b/fs/buffer.c
+@@ -1429,10 +1429,23 @@ static void invalidate_bh_lru(void *arg)
+ 	}
+ 	put_cpu_var(bh_lrus);
+ }
++
++static bool has_bh_in_lru(int cpu, void *dummy)
++{
++	struct bh_lru *b = per_cpu_ptr(&bh_lrus, cpu);
++	int i;
+ 	
++	for (i = 0; i < BH_LRU_SIZE; i++) {
++		if (b->bhs[i])
++			return 1;
++	}
++
++	return 0;
++}
++
+ void invalidate_bh_lrus(void)
+ {
+-	on_each_cpu(invalidate_bh_lru, NULL, 1);
++	on_each_cpu_cond(has_bh_in_lru, invalidate_bh_lru, NULL, 1, GFP_KERNEL);
+ }
+ EXPORT_SYMBOL_GPL(invalidate_bh_lrus);
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0331-rcutree-rcu_bh_qs-disable-irq-while-calling-rcu_pree.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0331-rcutree-rcu_bh_qs-disable-irq-while-calling-rcu_pree.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0331-rcutree-rcu_bh_qs-disable-irq-while-calling-rcu_pree.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0331-rcutree-rcu_bh_qs-disable-irq-while-calling-rcu_pree.patch)
@@ -0,0 +1,53 @@
+From: Tiejun Chen <tiejun.chen at windriver.com>
+Date: Wed, 18 Dec 2013 17:51:49 +0800
+Subject: [PATCH 331/371] rcutree/rcu_bh_qs: disable irq while calling
+ rcu_preempt_qs()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4329ae698c01a5efa975a87a6f59888cea16da78
+
+Any callers to the function rcu_preempt_qs() must disable irqs in
+order to protect the assignment to ->rcu_read_unlock_special. In
+RT case, rcu_bh_qs() as the wrapper of rcu_preempt_qs() is called
+in some scenarios where irq is enabled, like this path,
+
+do_single_softirq()
+    |
+    + local_irq_enable();
+    + handle_softirq()
+    |    |
+    |    + rcu_bh_qs()
+    |        |
+    |        + rcu_preempt_qs()
+    |
+    + local_irq_disable()
+
+So here we'd better disable irq directly inside of rcu_bh_qs() to
+fix this, otherwise the kernel may be freezable sometimes as
+observed. And especially this way is also kind and safe for the
+potential rcu_bh_qs() usage elsewhere in the future.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Tiejun Chen <tiejun.chen at windriver.com>
+Signed-off-by: Bin Jiang <bin.jiang at windriver.com>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/rcutree.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/kernel/rcutree.c b/kernel/rcutree.c
+index 82c2224..6c2ec2d 100644
+--- a/kernel/rcutree.c
++++ b/kernel/rcutree.c
+@@ -175,7 +175,12 @@ static void rcu_preempt_qs(int cpu);
+ 
+ void rcu_bh_qs(int cpu)
+ {
++	unsigned long flags;
++
++	/* Callers to this function, rcu_preempt_qs(), must disable irqs. */
++	local_irq_save(flags);
+ 	rcu_preempt_qs(cpu);
++	local_irq_restore(flags);
+ }
+ #else
+ void rcu_bh_qs(int cpu)

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0332-rt-Make-cpu_chill-use-hrtimer-instead-of-msleep.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0332-rt-Make-cpu_chill-use-hrtimer-instead-of-msleep.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0332-rt-Make-cpu_chill-use-hrtimer-instead-of-msleep.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0332-rt-Make-cpu_chill-use-hrtimer-instead-of-msleep.patch)
@@ -0,0 +1,93 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Wed, 5 Feb 2014 11:51:25 -0500
+Subject: [PATCH 332/371] rt: Make cpu_chill() use hrtimer instead of msleep()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8286f3c02d62499ca53fa1eedb2b8b6bba5e3851
+
+Ulrich Obergfell pointed out that cpu_chill() calls msleep() which is woken
+up by the ksoftirqd running the TIMER softirq. But as the cpu_chill() is
+called from softirq context, it may block the ksoftirqd() from running, in
+which case, it may never wake up the msleep() causing the deadlock.
+
+I checked the vmcore, and irq/74-qla2xxx is stuck in the msleep() call,
+running on CPU 8. The one ksoftirqd that is stuck, happens to be the one that
+runs on CPU 8, and it is blocked on a lock held by irq/74-qla2xxx. As that
+ksoftirqd is the one that will wake up irq/74-qla2xxx, and it happens to be
+blocked on a lock that irq/74-qla2xxx holds, we have our deadlock.
+
+The solution is not to convert the cpu_chill() back to a cpu_relax() as that
+will re-create a possible live lock that the cpu_chill() fixed earlier, and may
+also leave this bug open on other softirqs. The fix is to remove the
+dependency on ksoftirqd from cpu_chill(). That is, instead of calling
+msleep() that requires ksoftirqd to wake it up, use the
+hrtimer_nanosleep() code that does the wakeup from hard irq context.
+
+|Looks to be the lock of the block softirq. I don't have the core dump
+|anymore, but from what I could tell the ksoftirqd was blocked on the
+|block softirq lock, where the block softirq handler did a msleep
+|(called by the qla2xxx interrupt handler).
+|
+|Looking at trigger_softirq() in block/blk-softirq.c, it can do a
+|smp_callfunction() to another cpu to run the block softirq. If that
+|happens to be the cpu where the qla2xx irq handler is doing the block
+|softirq and is in a middle of a msleep(), I believe the ksoftirqd will
+|try to run the softirq. If it does that, then BOOM, it's deadlocked
+|because the ksoftirqd will never run the timer softirq either.
+
+|I should have also stated that it was only one lock that was involved.
+|But the lock owner was doing a msleep() that requires a wakeup by
+|ksoftirqd to continue. If ksoftirqd happens to be blocked on a lock
+|held by the msleep() caller, then you have your deadlock.
+|
+|It's best not to have any softirqs going to sleep requiring another
+|softirq to wake it up. Note, if we ever require a timer softirq to do a
+|cpu_chill() it will most definitely hit this deadlock.
+
+Cc: stable-rt at vger.kernel.org
+Found-by: Ulrich Obergfell <uobergfe at redhat.com>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+[bigeasy: add the 4 | chapters from email]
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ include/linux/delay.h |  2 +-
+ kernel/hrtimer.c      | 15 +++++++++++++++
+ 2 files changed, 16 insertions(+), 1 deletion(-)
+
+diff --git a/include/linux/delay.h b/include/linux/delay.h
+index e23a7c0..37caab3 100644
+--- a/include/linux/delay.h
++++ b/include/linux/delay.h
+@@ -53,7 +53,7 @@ static inline void ssleep(unsigned int seconds)
+ }
+ 
+ #ifdef CONFIG_PREEMPT_RT_FULL
+-# define cpu_chill()	msleep(1)
++extern void cpu_chill(void);
+ #else
+ # define cpu_chill()	cpu_relax()
+ #endif
+diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
+index 11df5cb..67d91e4 100644
+--- a/kernel/hrtimer.c
++++ b/kernel/hrtimer.c
+@@ -1869,6 +1869,21 @@ SYSCALL_DEFINE2(nanosleep, struct timespec __user *, rqtp,
+ 	return hrtimer_nanosleep(&tu, rmtp, HRTIMER_MODE_REL, CLOCK_MONOTONIC);
+ }
+ 
++#ifdef CONFIG_PREEMPT_RT_FULL
++/*
++ * Sleep for 1 ms in hope whoever holds what we want will let it go.
++ */
++void cpu_chill(void)
++{
++	struct timespec tu = {
++		.tv_nsec = NSEC_PER_MSEC,
++	};
++
++	hrtimer_nanosleep(&tu, NULL, HRTIMER_MODE_REL, CLOCK_MONOTONIC);
++}
++EXPORT_SYMBOL(cpu_chill);
++#endif
++
+ /*
+  * Functions related to boot-time initialization:
+  */

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0333-kernel-hrtimer-be-non-freezeable-in-cpu_chill.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0333-kernel-hrtimer-be-non-freezeable-in-cpu_chill.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0333-kernel-hrtimer-be-non-freezeable-in-cpu_chill.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0333-kernel-hrtimer-be-non-freezeable-in-cpu_chill.patch)
@@ -0,0 +1,61 @@
+From: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Date: Wed, 19 Feb 2014 11:56:06 +0100
+Subject: [PATCH 333/371] kernel/hrtimer: be non-freezeable in cpu_chill()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f3278c0ed8026eae3b63089963695e5d71206ee0
+
+Since we replaced msleep() by hrtimer I see now and then (rarely) this:
+
+| [....] Waiting for /dev to be fully populated...
+| =====================================
+| [ BUG: udevd/229 still has locks held! ]
+| 3.12.11-rt17 #23 Not tainted
+| -------------------------------------
+| 1 lock held by udevd/229:
+|  #0:  (&type->i_mutex_dir_key#2){+.+.+.}, at: lookup_slow+0x28/0x98
+|
+| stack backtrace:
+| CPU: 0 PID: 229 Comm: udevd Not tainted 3.12.11-rt17 #23
+| (unwind_backtrace+0x0/0xf8) from (show_stack+0x10/0x14)
+| (show_stack+0x10/0x14) from (dump_stack+0x74/0xbc)
+| (dump_stack+0x74/0xbc) from (do_nanosleep+0x120/0x160)
+| (do_nanosleep+0x120/0x160) from (hrtimer_nanosleep+0x90/0x110)
+| (hrtimer_nanosleep+0x90/0x110) from (cpu_chill+0x30/0x38)
+| (cpu_chill+0x30/0x38) from (dentry_kill+0x158/0x1ec)
+| (dentry_kill+0x158/0x1ec) from (dput+0x74/0x15c)
+| (dput+0x74/0x15c) from (lookup_real+0x4c/0x50)
+| (lookup_real+0x4c/0x50) from (__lookup_hash+0x34/0x44)
+| (__lookup_hash+0x34/0x44) from (lookup_slow+0x38/0x98)
+| (lookup_slow+0x38/0x98) from (path_lookupat+0x208/0x7fc)
+| (path_lookupat+0x208/0x7fc) from (filename_lookup+0x20/0x60)
+| (filename_lookup+0x20/0x60) from (user_path_at_empty+0x50/0x7c)
+| (user_path_at_empty+0x50/0x7c) from (user_path_at+0x14/0x1c)
+| (user_path_at+0x14/0x1c) from (vfs_fstatat+0x48/0x94)
+| (vfs_fstatat+0x48/0x94) from (SyS_stat64+0x14/0x30)
+| (SyS_stat64+0x14/0x30) from (ret_fast_syscall+0x0/0x48)
+
+For now I see no better way but to disable the freezer the sleep the period.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/hrtimer.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
+index 67d91e4..9749ae7 100644
+--- a/kernel/hrtimer.c
++++ b/kernel/hrtimer.c
+@@ -1878,8 +1878,12 @@ void cpu_chill(void)
+ 	struct timespec tu = {
+ 		.tv_nsec = NSEC_PER_MSEC,
+ 	};
++	unsigned int freeze_flag = current->flags & PF_NOFREEZE;
+ 
++	current->flags |= PF_NOFREEZE;
+ 	hrtimer_nanosleep(&tu, NULL, HRTIMER_MODE_REL, CLOCK_MONOTONIC);
++	if (!freeze_flag)
++		current->flags &= ~PF_NOFREEZE;
+ }
+ EXPORT_SYMBOL(cpu_chill);
+ #endif

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0334-arm-unwind-use-a-raw_spin_lock.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0334-arm-unwind-use-a-raw_spin_lock.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0334-arm-unwind-use-a-raw_spin_lock.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0334-arm-unwind-use-a-raw_spin_lock.patch)
@@ -0,0 +1,87 @@
+From: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Date: Fri, 20 Sep 2013 14:31:54 +0200
+Subject: [PATCH 334/371] arm/unwind: use a raw_spin_lock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f9dc57d498ccb27395acfe220f983d9534f15db6
+
+Mostly unwind is done with irqs enabled however SLUB may call it with
+irqs disabled while creating a new SLUB cache.
+
+I had system freeze while loading a module which called
+kmem_cache_create() on init. That means SLUB's __slab_alloc() disabled
+interrupts and then
+
+->new_slab_objects()
+ ->new_slab()
+  ->setup_object()
+   ->setup_object_debug()
+    ->init_tracking()
+     ->set_track()
+      ->save_stack_trace()
+       ->save_stack_trace_tsk()
+        ->walk_stackframe()
+         ->unwind_frame()
+          ->unwind_find_idx()
+           =>spin_lock_irqsave(&unwind_lock);
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ arch/arm/kernel/unwind.c | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/arch/arm/kernel/unwind.c b/arch/arm/kernel/unwind.c
+index 00df012..bbafc67 100644
+--- a/arch/arm/kernel/unwind.c
++++ b/arch/arm/kernel/unwind.c
+@@ -87,7 +87,7 @@ extern const struct unwind_idx __start_unwind_idx[];
+ static const struct unwind_idx *__origin_unwind_idx;
+ extern const struct unwind_idx __stop_unwind_idx[];
+ 
+-static DEFINE_SPINLOCK(unwind_lock);
++static DEFINE_RAW_SPINLOCK(unwind_lock);
+ static LIST_HEAD(unwind_tables);
+ 
+ /* Convert a prel31 symbol to an absolute address */
+@@ -195,7 +195,7 @@ static const struct unwind_idx *unwind_find_idx(unsigned long addr)
+ 		/* module unwind tables */
+ 		struct unwind_table *table;
+ 
+-		spin_lock_irqsave(&unwind_lock, flags);
++		raw_spin_lock_irqsave(&unwind_lock, flags);
+ 		list_for_each_entry(table, &unwind_tables, list) {
+ 			if (addr >= table->begin_addr &&
+ 			    addr < table->end_addr) {
+@@ -207,7 +207,7 @@ static const struct unwind_idx *unwind_find_idx(unsigned long addr)
+ 				break;
+ 			}
+ 		}
+-		spin_unlock_irqrestore(&unwind_lock, flags);
++		raw_spin_unlock_irqrestore(&unwind_lock, flags);
+ 	}
+ 
+ 	pr_debug("%s: idx = %p\n", __func__, idx);
+@@ -469,9 +469,9 @@ struct unwind_table *unwind_table_add(unsigned long start, unsigned long size,
+ 	tab->begin_addr = text_addr;
+ 	tab->end_addr = text_addr + text_size;
+ 
+-	spin_lock_irqsave(&unwind_lock, flags);
++	raw_spin_lock_irqsave(&unwind_lock, flags);
+ 	list_add_tail(&tab->list, &unwind_tables);
+-	spin_unlock_irqrestore(&unwind_lock, flags);
++	raw_spin_unlock_irqrestore(&unwind_lock, flags);
+ 
+ 	return tab;
+ }
+@@ -483,9 +483,9 @@ void unwind_table_del(struct unwind_table *tab)
+ 	if (!tab)
+ 		return;
+ 
+-	spin_lock_irqsave(&unwind_lock, flags);
++	raw_spin_lock_irqsave(&unwind_lock, flags);
+ 	list_del(&tab->list);
+-	spin_unlock_irqrestore(&unwind_lock, flags);
++	raw_spin_unlock_irqrestore(&unwind_lock, flags);
+ 
+ 	kfree(tab);
+ }

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0335-Revert-swait-Add-a-few-more-users.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0335-Revert-swait-Add-a-few-more-users.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0335-Revert-swait-Add-a-few-more-users.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0335-Revert-swait-Add-a-few-more-users.patch)
@@ -0,0 +1,68 @@
+From: "Steven Rostedt (Red Hat)" <rostedt at goodmis.org>
+Date: Tue, 11 Mar 2014 11:57:32 -0400
+Subject: [PATCH 335/371] Revert "swait: Add a few more users"
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=94f9aa8487289c609a6692459aef869abb4e492c
+
+This reverts commit 916c8d2de3c4759f57426fa3cfee63b491e88939.
+
+Seems that I was a bit too aggressive in backporting patches. I have
+to run make allmodconfigs to test them now. This patch broke the 3.2-rt
+for the modified files, as the updates used swait functionality that
+was not created in 3.2-rt.
+
+Reported-by: Ben Hutchings <ben at decadent.org.uk>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ drivers/net/wireless/orinoco/orinoco_usb.c | 2 +-
+ drivers/usb/gadget/f_fs.c                  | 2 +-
+ drivers/usb/gadget/inode.c                 | 4 ++--
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/net/wireless/orinoco/orinoco_usb.c b/drivers/net/wireless/orinoco/orinoco_usb.c
+index d45833f..0793e42 100644
+--- a/drivers/net/wireless/orinoco/orinoco_usb.c
++++ b/drivers/net/wireless/orinoco/orinoco_usb.c
+@@ -714,7 +714,7 @@ static void ezusb_req_ctx_wait(struct ezusb_priv *upriv,
+ 			while (!ctx->done.done && msecs--)
+ 				udelay(1000);
+ 		} else {
+-			swait_event_interruptible(ctx->done.wait,
++			wait_event_interruptible(ctx->done.wait,
+ 						 ctx->done.done);
+ 		}
+ 		break;
+diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c
+index 64c6aab..c635c4c 100644
+--- a/drivers/usb/gadget/f_fs.c
++++ b/drivers/usb/gadget/f_fs.c
+@@ -1270,7 +1270,7 @@ static void ffs_data_put(struct ffs_data *ffs)
+ 		BUG_ON(mutex_is_locked(&ffs->mutex) ||
+ 		       spin_is_locked(&ffs->ev.waitq.lock) ||
+ 		       waitqueue_active(&ffs->ev.waitq) ||
+-		       swaitqueue_active(&ffs->ep0req_completion.wait));
++		       waitqueue_active(&ffs->ep0req_completion.wait));
+ 		kfree(ffs);
+ 	}
+ }
+diff --git a/drivers/usb/gadget/inode.c b/drivers/usb/gadget/inode.c
+index 616d19e..7138540 100644
+--- a/drivers/usb/gadget/inode.c
++++ b/drivers/usb/gadget/inode.c
+@@ -339,7 +339,7 @@ ep_io (struct ep_data *epdata, void *buf, unsigned len)
+ 	spin_unlock_irq (&epdata->dev->lock);
+ 
+ 	if (likely (value == 0)) {
+-		value = swait_event_interruptible (done.wait, done.done);
++		value = wait_event_interruptible (done.wait, done.done);
+ 		if (value != 0) {
+ 			spin_lock_irq (&epdata->dev->lock);
+ 			if (likely (epdata->ep != NULL)) {
+@@ -348,7 +348,7 @@ ep_io (struct ep_data *epdata, void *buf, unsigned len)
+ 				usb_ep_dequeue (epdata->ep, epdata->req);
+ 				spin_unlock_irq (&epdata->dev->lock);
+ 
+-				swait_event (done.wait, done.done);
++				wait_event (done.wait, done.done);
+ 				if (epdata->status == -ECONNRESET)
+ 					epdata->status = -EINTR;
+ 			} else {

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0336-net-sched-dev_deactivate_many-use-msleep-1-instead-o.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0336-net-sched-dev_deactivate_many-use-msleep-1-instead-o.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0336-net-sched-dev_deactivate_many-use-msleep-1-instead-o.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0336-net-sched-dev_deactivate_many-use-msleep-1-instead-o.patch)
@@ -0,0 +1,61 @@
+From: Marc Kleine-Budde <mkl at pengutronix.de>
+Date: Wed, 5 Mar 2014 00:49:47 +0100
+Subject: [PATCH 336/371] net: sched: dev_deactivate_many(): use msleep(1)
+ instead of yield() to wait for outstanding qdisc_run calls
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4455764da9c070e3fd4a5a364dc5666cb460cc92
+
+On PREEMPT_RT enabled systems the interrupt handler run as threads at prio 50
+(by default). If a high priority userspace process tries to shut down a busy
+network interface it might spin in a yield loop waiting for the device to
+become idle. With the interrupt thread having a lower priority than the
+looping process it might never be scheduled and so result in a deadlock on UP
+systems.
+
+With Magic SysRq the following backtrace can be produced:
+
+> test_app R running      0   174    168 0x00000000
+> [<c02c7070>] (__schedule+0x220/0x3fc) from [<c02c7870>] (preempt_schedule_irq+0x48/0x80)
+> [<c02c7870>] (preempt_schedule_irq+0x48/0x80) from [<c0008fa8>] (svc_preempt+0x8/0x20)
+> [<c0008fa8>] (svc_preempt+0x8/0x20) from [<c001a984>] (local_bh_enable+0x18/0x88)
+> [<c001a984>] (local_bh_enable+0x18/0x88) from [<c025316c>] (dev_deactivate_many+0x220/0x264)
+> [<c025316c>] (dev_deactivate_many+0x220/0x264) from [<c023be04>] (__dev_close_many+0x64/0xd4)
+> [<c023be04>] (__dev_close_many+0x64/0xd4) from [<c023be9c>] (__dev_close+0x28/0x3c)
+> [<c023be9c>] (__dev_close+0x28/0x3c) from [<c023f7f0>] (__dev_change_flags+0x88/0x130)
+> [<c023f7f0>] (__dev_change_flags+0x88/0x130) from [<c023f904>] (dev_change_flags+0x10/0x48)
+> [<c023f904>] (dev_change_flags+0x10/0x48) from [<c024c140>] (do_setlink+0x370/0x7ec)
+> [<c024c140>] (do_setlink+0x370/0x7ec) from [<c024d2f0>] (rtnl_newlink+0x2b4/0x450)
+> [<c024d2f0>] (rtnl_newlink+0x2b4/0x450) from [<c024cfa0>] (rtnetlink_rcv_msg+0x158/0x1f4)
+> [<c024cfa0>] (rtnetlink_rcv_msg+0x158/0x1f4) from [<c0256740>] (netlink_rcv_skb+0xac/0xc0)
+> [<c0256740>] (netlink_rcv_skb+0xac/0xc0) from [<c024bbd8>] (rtnetlink_rcv+0x18/0x24)
+> [<c024bbd8>] (rtnetlink_rcv+0x18/0x24) from [<c02561b8>] (netlink_unicast+0x13c/0x198)
+> [<c02561b8>] (netlink_unicast+0x13c/0x198) from [<c025651c>] (netlink_sendmsg+0x264/0x2e0)
+> [<c025651c>] (netlink_sendmsg+0x264/0x2e0) from [<c022af98>] (sock_sendmsg+0x78/0x98)
+> [<c022af98>] (sock_sendmsg+0x78/0x98) from [<c022bb50>] (___sys_sendmsg.part.25+0x268/0x278)
+> [<c022bb50>] (___sys_sendmsg.part.25+0x268/0x278) from [<c022cf08>] (__sys_sendmsg+0x48/0x78)
+> [<c022cf08>] (__sys_sendmsg+0x48/0x78) from [<c0009320>] (ret_fast_syscall+0x0/0x2c)
+
+This patch works around the problem by replacing yield() by msleep(1), giving
+the interrupt thread time to finish, similar to other changes contained in the
+rt patch set. Using wait_for_completion() instead would probably be a better
+solution.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Marc Kleine-Budde <mkl at pengutronix.de>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ net/sched/sch_generic.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
+index 69fca27..9ede52e 100644
+--- a/net/sched/sch_generic.c
++++ b/net/sched/sch_generic.c
+@@ -847,7 +847,7 @@ void dev_deactivate_many(struct list_head *head)
+ 	/* Wait for outstanding qdisc_run calls. */
+ 	list_for_each_entry(dev, head, unreg_list)
+ 		while (some_qdisc_is_busy(dev))
+-			yield();
++			msleep(1);
+ }
+ 
+ void dev_deactivate(struct net_device *dev)

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0337-fs-jbd2-pull-your-plug-when-waiting-for-space.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0337-fs-jbd2-pull-your-plug-when-waiting-for-space.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0337-fs-jbd2-pull-your-plug-when-waiting-for-space.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0337-fs-jbd2-pull-your-plug-when-waiting-for-space.patch)
@@ -0,0 +1,34 @@
+From: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Date: Mon, 17 Feb 2014 17:30:03 +0100
+Subject: [PATCH 337/371] fs: jbd2: pull your plug when waiting for space
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=7087b4083345d56b7e5fc4ee01cbfd0a59320118
+
+Two cps in parallel managed to stall the the ext4 fs. It seems that
+journal code is either waiting for locks or sleeping waiting for
+something to happen. This seems similar to what Mike observed on ext3,
+here is his description:
+
+|With an -rt kernel, and a heavy sync IO load, tasks can jam
+|up on journal locks without unplugging, which can lead to
+|terminal IO starvation.  Unplug and schedule when waiting
+|for space.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ fs/jbd2/checkpoint.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/fs/jbd2/checkpoint.c b/fs/jbd2/checkpoint.c
+index 16a698b..c6443c3 100644
+--- a/fs/jbd2/checkpoint.c
++++ b/fs/jbd2/checkpoint.c
+@@ -129,6 +129,8 @@ void __jbd2_log_wait_for_space(journal_t *journal)
+ 		if (journal->j_flags & JBD2_ABORT)
+ 			return;
+ 		write_unlock(&journal->j_state_lock);
++		if (current->plug)
++			io_schedule();
+ 		mutex_lock(&journal->j_checkpoint_mutex);
+ 
+ 		/*

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0338-cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0338-cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0338-cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0338-cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch)
@@ -0,0 +1,109 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Tue, 4 Mar 2014 12:28:32 -0500
+Subject: [PATCH 338/371] cpu_chill: Add a UNINTERRUPTIBLE hrtimer_nanosleep
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=23bb58c5a8fd2d5b699c7c1244c597206539400a
+
+We hit another bug that was caused by switching cpu_chill() from
+msleep() to hrtimer_nanosleep().
+
+This time it is a livelock. The problem is that hrtimer_nanosleep()
+calls schedule with the state == TASK_INTERRUPTIBLE. But these means
+that if a signal is pending, the scheduler wont schedule, and will
+simply change the current task state back to TASK_RUNNING. This
+nullifies the whole point of cpu_chill() in the first place. That is,
+if a task is spinning on a try_lock() and it preempted the owner of the
+lock, if it has a signal pending, it will never give up the CPU to let
+the owner of the lock run.
+
+I made a static function __hrtimer_nanosleep() that takes a fifth
+parameter "state", which determines the task state of that the
+nanosleep() will be in. The normal hrtimer_nanosleep() will act the
+same, but cpu_chill() will call the __hrtimer_nanosleep() directly with
+the TASK_UNINTERRUPTIBLE state.
+
+cpu_chill() only cares that the first sleep happens, and does not care
+about the state of the restart schedule (in hrtimer_nanosleep_restart).
+
+Cc: stable-rt at vger.kernel.org
+Reported-by: Ulrich Obergfell <uobergfe at redhat.com>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+---
+ kernel/hrtimer.c | 25 ++++++++++++++++++-------
+ 1 file changed, 18 insertions(+), 7 deletions(-)
+
+diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
+index 9749ae7..f543790 100644
+--- a/kernel/hrtimer.c
++++ b/kernel/hrtimer.c
+@@ -1748,12 +1748,13 @@ void hrtimer_init_sleeper(struct hrtimer_sleeper *sl, struct task_struct *task)
+ }
+ EXPORT_SYMBOL_GPL(hrtimer_init_sleeper);
+ 
+-static int __sched do_nanosleep(struct hrtimer_sleeper *t, enum hrtimer_mode mode)
++static int __sched do_nanosleep(struct hrtimer_sleeper *t, enum hrtimer_mode mode,
++				unsigned long state)
+ {
+ 	hrtimer_init_sleeper(t, current);
+ 
+ 	do {
+-		set_current_state(TASK_INTERRUPTIBLE);
++		set_current_state(state);
+ 		hrtimer_start_expires(&t->timer, mode);
+ 		if (!hrtimer_active(&t->timer))
+ 			t->task = NULL;
+@@ -1797,7 +1798,8 @@ long __sched hrtimer_nanosleep_restart(struct restart_block *restart)
+ 				HRTIMER_MODE_ABS);
+ 	hrtimer_set_expires_tv64(&t.timer, restart->nanosleep.expires);
+ 
+-	if (do_nanosleep(&t, HRTIMER_MODE_ABS))
++	/* cpu_chill() does not care about restart state. */
++	if (do_nanosleep(&t, HRTIMER_MODE_ABS, TASK_INTERRUPTIBLE))
+ 		goto out;
+ 
+ 	rmtp = restart->nanosleep.rmtp;
+@@ -1814,8 +1816,10 @@ out:
+ 	return ret;
+ }
+ 
+-long hrtimer_nanosleep(struct timespec *rqtp, struct timespec __user *rmtp,
+-		       const enum hrtimer_mode mode, const clockid_t clockid)
++static long
++__hrtimer_nanosleep(struct timespec *rqtp, struct timespec __user *rmtp,
++		    const enum hrtimer_mode mode, const clockid_t clockid,
++		    unsigned long state)
+ {
+ 	struct restart_block *restart;
+ 	struct hrtimer_sleeper t;
+@@ -1828,7 +1832,7 @@ long hrtimer_nanosleep(struct timespec *rqtp, struct timespec __user *rmtp,
+ 
+ 	hrtimer_init_on_stack(&t.timer, clockid, mode);
+ 	hrtimer_set_expires_range_ns(&t.timer, timespec_to_ktime(*rqtp), slack);
+-	if (do_nanosleep(&t, mode))
++	if (do_nanosleep(&t, mode, state))
+ 		goto out;
+ 
+ 	/* Absolute timers do not update the rmtp value and restart: */
+@@ -1855,6 +1859,12 @@ out:
+ 	return ret;
+ }
+ 
++long hrtimer_nanosleep(struct timespec *rqtp, struct timespec __user *rmtp,
++		       const enum hrtimer_mode mode, const clockid_t clockid)
++{
++	return __hrtimer_nanosleep(rqtp, rmtp, mode, clockid, TASK_INTERRUPTIBLE);
++}
++
+ SYSCALL_DEFINE2(nanosleep, struct timespec __user *, rqtp,
+ 		struct timespec __user *, rmtp)
+ {
+@@ -1881,7 +1891,8 @@ void cpu_chill(void)
+ 	unsigned int freeze_flag = current->flags & PF_NOFREEZE;
+ 
+ 	current->flags |= PF_NOFREEZE;
+-	hrtimer_nanosleep(&tu, NULL, HRTIMER_MODE_REL, CLOCK_MONOTONIC);
++	__hrtimer_nanosleep(&tu, NULL, HRTIMER_MODE_REL, CLOCK_MONOTONIC,
++			    TASK_UNINTERRUPTIBLE);
+ 	if (!freeze_flag)
+ 		current->flags &= ~PF_NOFREEZE;
+ }

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0339-net-gianfar-do-not-disable-interrupts.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0339-net-gianfar-do-not-disable-interrupts.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0339-net-gianfar-do-not-disable-interrupts.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0339-net-gianfar-do-not-disable-interrupts.patch)
@@ -0,0 +1,252 @@
+From: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Date: Tue, 25 Mar 2014 18:34:20 +0100
+Subject: [PATCH 339/371] net: gianfar: do not disable interrupts
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4366e2ce0abd9c423a9ec7b6196ad86d0cc78d84
+
+each per-queue lock is taken with spin_lock_irqsave() except in the case
+where all of them are taken for some kind of serialisation. As an
+optimisation local_irq_save() is used so that lock_tx_qs() and
+lock_rx_qs() can use just the spin_lock() variant instead.
+On RT local_irq_save() behaves differently so we use the nort()
+variant.
+Lockdep screems easily by "ethtool -K eth0 rx off tx off"
+
+What remains is missing lockdep annotation that makes lockdep think
+lock_tx_qs() may cause a dead lock.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ drivers/net/ethernet/freescale/gianfar.c         | 16 ++++++++--------
+ drivers/net/ethernet/freescale/gianfar_ethtool.c |  8 ++++----
+ drivers/net/ethernet/freescale/gianfar_sysfs.c   | 24 ++++++++++++------------
+ 3 files changed, 24 insertions(+), 24 deletions(-)
+
+diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c
+index 7048ed8..5c35b28 100644
+--- a/drivers/net/ethernet/freescale/gianfar.c
++++ b/drivers/net/ethernet/freescale/gianfar.c
+@@ -1285,7 +1285,7 @@ static int gfar_suspend(struct device *dev)
+ 
+ 	if (netif_running(ndev)) {
+ 
+-		local_irq_save(flags);
++		local_irq_save_nort(flags);
+ 		lock_tx_qs(priv);
+ 		lock_rx_qs(priv);
+ 
+@@ -1303,7 +1303,7 @@ static int gfar_suspend(struct device *dev)
+ 
+ 		unlock_rx_qs(priv);
+ 		unlock_tx_qs(priv);
+-		local_irq_restore(flags);
++		local_irq_restore_nort(flags);
+ 
+ 		disable_napi(priv);
+ 
+@@ -1344,7 +1344,7 @@ static int gfar_resume(struct device *dev)
+ 	/* Disable Magic Packet mode, in case something
+ 	 * else woke us up.
+ 	 */
+-	local_irq_save(flags);
++	local_irq_save_nort(flags);
+ 	lock_tx_qs(priv);
+ 	lock_rx_qs(priv);
+ 
+@@ -1356,7 +1356,7 @@ static int gfar_resume(struct device *dev)
+ 
+ 	unlock_rx_qs(priv);
+ 	unlock_tx_qs(priv);
+-	local_irq_restore(flags);
++	local_irq_restore_nort(flags);
+ 
+ 	netif_device_attach(ndev);
+ 
+@@ -2323,7 +2323,7 @@ void gfar_vlan_mode(struct net_device *dev, u32 features)
+ 	u32 tempval;
+ 
+ 	regs = priv->gfargrp[0].regs;
+-	local_irq_save(flags);
++	local_irq_save_nort(flags);
+ 	lock_rx_qs(priv);
+ 
+ 	if (features & NETIF_F_HW_VLAN_TX) {
+@@ -2355,7 +2355,7 @@ void gfar_vlan_mode(struct net_device *dev, u32 features)
+ 	gfar_change_mtu(dev, dev->mtu);
+ 
+ 	unlock_rx_qs(priv);
+-	local_irq_restore(flags);
++	local_irq_restore_nort(flags);
+ }
+ 
+ static int gfar_change_mtu(struct net_device *dev, int new_mtu)
+@@ -3225,14 +3225,14 @@ static irqreturn_t gfar_error(int irq, void *grp_id)
+ 			dev->stats.tx_dropped++;
+ 			priv->extra_stats.tx_underrun++;
+ 
+-			local_irq_save(flags);
++			local_irq_save_nort(flags);
+ 			lock_tx_qs(priv);
+ 
+ 			/* Reactivate the Tx Queues */
+ 			gfar_write(&regs->tstat, gfargrp->tstat);
+ 
+ 			unlock_tx_qs(priv);
+-			local_irq_restore(flags);
++			local_irq_restore_nort(flags);
+ 		}
+ 		netif_dbg(priv, tx_err, dev, "Transmit Error\n");
+ 	}
+diff --git a/drivers/net/ethernet/freescale/gianfar_ethtool.c b/drivers/net/ethernet/freescale/gianfar_ethtool.c
+index 212736b..1fe331f 100644
+--- a/drivers/net/ethernet/freescale/gianfar_ethtool.c
++++ b/drivers/net/ethernet/freescale/gianfar_ethtool.c
+@@ -486,7 +486,7 @@ static int gfar_sringparam(struct net_device *dev, struct ethtool_ringparam *rva
+ 
+ 		/* Halt TX and RX, and process the frames which
+ 		 * have already been received */
+-		local_irq_save(flags);
++		local_irq_save_nort(flags);
+ 		lock_tx_qs(priv);
+ 		lock_rx_qs(priv);
+ 
+@@ -494,7 +494,7 @@ static int gfar_sringparam(struct net_device *dev, struct ethtool_ringparam *rva
+ 
+ 		unlock_rx_qs(priv);
+ 		unlock_tx_qs(priv);
+-		local_irq_restore(flags);
++		local_irq_restore_nort(flags);
+ 
+ 		for (i = 0; i < priv->num_rx_queues; i++)
+ 			gfar_clean_rx_ring(priv->rx_queue[i],
+@@ -535,7 +535,7 @@ int gfar_set_features(struct net_device *dev, u32 features)
+ 	if (dev->flags & IFF_UP) {
+ 		/* Halt TX and RX, and process the frames which
+ 		 * have already been received */
+-		local_irq_save(flags);
++		local_irq_save_nort(flags);
+ 		lock_tx_qs(priv);
+ 		lock_rx_qs(priv);
+ 
+@@ -543,7 +543,7 @@ int gfar_set_features(struct net_device *dev, u32 features)
+ 
+ 		unlock_tx_qs(priv);
+ 		unlock_rx_qs(priv);
+-		local_irq_restore(flags);
++		local_irq_restore_nort(flags);
+ 
+ 		for (i = 0; i < priv->num_rx_queues; i++)
+ 			gfar_clean_rx_ring(priv->rx_queue[i],
+diff --git a/drivers/net/ethernet/freescale/gianfar_sysfs.c b/drivers/net/ethernet/freescale/gianfar_sysfs.c
+index 64f4094..9f6fb3a 100644
+--- a/drivers/net/ethernet/freescale/gianfar_sysfs.c
++++ b/drivers/net/ethernet/freescale/gianfar_sysfs.c
+@@ -68,7 +68,7 @@ static ssize_t gfar_set_bd_stash(struct device *dev,
+ 		return count;
+ 
+ 
+-	local_irq_save(flags);
++	local_irq_save_nort(flags);
+ 	lock_rx_qs(priv);
+ 
+ 	/* Set the new stashing value */
+@@ -84,7 +84,7 @@ static ssize_t gfar_set_bd_stash(struct device *dev,
+ 	gfar_write(&regs->attr, temp);
+ 
+ 	unlock_rx_qs(priv);
+-	local_irq_restore(flags);
++	local_irq_restore_nort(flags);
+ 
+ 	return count;
+ }
+@@ -112,7 +112,7 @@ static ssize_t gfar_set_rx_stash_size(struct device *dev,
+ 	if (!(priv->device_flags & FSL_GIANFAR_DEV_HAS_BUF_STASHING))
+ 		return count;
+ 
+-	local_irq_save(flags);
++	local_irq_save_nort(flags);
+ 	lock_rx_qs(priv);
+ 
+ 	if (length > priv->rx_buffer_size)
+@@ -140,7 +140,7 @@ static ssize_t gfar_set_rx_stash_size(struct device *dev,
+ 
+ out:
+ 	unlock_rx_qs(priv);
+-	local_irq_restore(flags);
++	local_irq_restore_nort(flags);
+ 
+ 	return count;
+ }
+@@ -171,7 +171,7 @@ static ssize_t gfar_set_rx_stash_index(struct device *dev,
+ 	if (!(priv->device_flags & FSL_GIANFAR_DEV_HAS_BUF_STASHING))
+ 		return count;
+ 
+-	local_irq_save(flags);
++	local_irq_save_nort(flags);
+ 	lock_rx_qs(priv);
+ 
+ 	if (index > priv->rx_stash_size)
+@@ -189,7 +189,7 @@ static ssize_t gfar_set_rx_stash_index(struct device *dev,
+ 
+ out:
+ 	unlock_rx_qs(priv);
+-	local_irq_restore(flags);
++	local_irq_restore_nort(flags);
+ 
+ 	return count;
+ }
+@@ -219,7 +219,7 @@ static ssize_t gfar_set_fifo_threshold(struct device *dev,
+ 	if (length > GFAR_MAX_FIFO_THRESHOLD)
+ 		return count;
+ 
+-	local_irq_save(flags);
++	local_irq_save_nort(flags);
+ 	lock_tx_qs(priv);
+ 
+ 	priv->fifo_threshold = length;
+@@ -230,7 +230,7 @@ static ssize_t gfar_set_fifo_threshold(struct device *dev,
+ 	gfar_write(&regs->fifo_tx_thr, temp);
+ 
+ 	unlock_tx_qs(priv);
+-	local_irq_restore(flags);
++	local_irq_restore_nort(flags);
+ 
+ 	return count;
+ }
+@@ -259,7 +259,7 @@ static ssize_t gfar_set_fifo_starve(struct device *dev,
+ 	if (num > GFAR_MAX_FIFO_STARVE)
+ 		return count;
+ 
+-	local_irq_save(flags);
++	local_irq_save_nort(flags);
+ 	lock_tx_qs(priv);
+ 
+ 	priv->fifo_starve = num;
+@@ -270,7 +270,7 @@ static ssize_t gfar_set_fifo_starve(struct device *dev,
+ 	gfar_write(&regs->fifo_tx_starve, temp);
+ 
+ 	unlock_tx_qs(priv);
+-	local_irq_restore(flags);
++	local_irq_restore_nort(flags);
+ 
+ 	return count;
+ }
+@@ -300,7 +300,7 @@ static ssize_t gfar_set_fifo_starve_off(struct device *dev,
+ 	if (num > GFAR_MAX_FIFO_STARVE_OFF)
+ 		return count;
+ 
+-	local_irq_save(flags);
++	local_irq_save_nort(flags);
+ 	lock_tx_qs(priv);
+ 
+ 	priv->fifo_starve_off = num;
+@@ -311,7 +311,7 @@ static ssize_t gfar_set_fifo_starve_off(struct device *dev,
+ 	gfar_write(&regs->fifo_tx_starve_shutoff, temp);
+ 
+ 	unlock_tx_qs(priv);
+-	local_irq_restore(flags);
++	local_irq_restore_nort(flags);
+ 
+ 	return count;
+ }

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0340-rcu-make-RCU_BOOST-default-on-RT.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0340-rcu-make-RCU_BOOST-default-on-RT.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0340-rcu-make-RCU_BOOST-default-on-RT.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0340-rcu-make-RCU_BOOST-default-on-RT.patch)
@@ -0,0 +1,30 @@
+From: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Date: Fri, 21 Mar 2014 20:19:05 +0100
+Subject: [PATCH 340/371] rcu: make RCU_BOOST default on RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=6e0d2e6f1cbcb5e961cb4266097599806ed2ab04
+
+Since it is no longer invoked from the softirq people run into OOM more
+often if the priority of the RCU thread is too low. Making boosting
+default on RT should help in those case and it can be switched off if
+someone knows better.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ init/Kconfig | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/init/Kconfig b/init/Kconfig
+index 0a2eeac..5fb23d9 100644
+--- a/init/Kconfig
++++ b/init/Kconfig
+@@ -494,7 +494,7 @@ config TREE_RCU_TRACE
+ config RCU_BOOST
+ 	bool "Enable RCU priority boosting"
+ 	depends on RT_MUTEXES && PREEMPT_RCU
+-	default n
++	default y if PREEMPT_RT_FULL
+ 	help
+ 	  This option boosts the priority of preempted RCU readers that
+ 	  block the current preemptible RCU grace period for too long.

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0341-Fix-latency-histogram-after-hrtimer-Set-expiry-time-.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0341-Fix-latency-histogram-after-hrtimer-Set-expiry-time-.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0341-Fix-latency-histogram-after-hrtimer-Set-expiry-time-.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0341-Fix-latency-histogram-after-hrtimer-Set-expiry-time-.patch)
@@ -0,0 +1,46 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Sat, 28 Jun 2014 23:34:48 +0100
+Subject: [PATCH 341/371] Fix latency histogram after "hrtimer: Set expiry time
+ before switch_hrtimer_base()"
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=8701f911a1d4b28eff8b5cd4e72d81337ce4d46a
+
+In an rt-kernel with CONFIG_MISSED_TIMER_OFFSETS_HIST enabled,
+__hrtimer_start_range_ns() now crashes, as new_base is not assigned
+before it is used.
+
+Tested-by: Carsten Emde <C.Emde at osadl.org>
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/hrtimer.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
+index f543790..2bd88f0 100644
+--- a/kernel/hrtimer.c
++++ b/kernel/hrtimer.c
+@@ -1033,6 +1033,11 @@ int __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
+ #endif
+ 	}
+ 
++	hrtimer_set_expires_range_ns(timer, tim, delta_ns);
++
++	/* Switch the timer base, if necessary: */
++	new_base = switch_hrtimer_base(timer, base, mode & HRTIMER_MODE_PINNED);
++
+ #ifdef CONFIG_MISSED_TIMER_OFFSETS_HIST
+ 	{
+ 		ktime_t now = new_base->get_time();
+@@ -1044,11 +1049,6 @@ int __hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,
+ 	}
+ #endif
+ 
+-	hrtimer_set_expires_range_ns(timer, tim, delta_ns);
+-
+-	/* Switch the timer base, if necessary: */
+-	new_base = switch_hrtimer_base(timer, base, mode & HRTIMER_MODE_PINNED);
+-
+ 	timer_stats_hrtimer_set_start_info(timer);
+ 
+ 	leftmost = enqueue_hrtimer(timer, new_base);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0342-sched-Do-not-clear-PF_NO_SETAFFINITY-flag-in-select_.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0342-sched-Do-not-clear-PF_NO_SETAFFINITY-flag-in-select_.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0342-sched-Do-not-clear-PF_NO_SETAFFINITY-flag-in-select_.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0342-sched-Do-not-clear-PF_NO_SETAFFINITY-flag-in-select_.patch)
@@ -0,0 +1,50 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Tue, 1 Jul 2014 11:14:44 -0400
+Subject: [PATCH 342/371] sched: Do not clear PF_NO_SETAFFINITY flag in
+ select_fallback_rq()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=24d0abf473c1cf070877da5ecda9555de3f16175
+
+I talked with Peter Zijlstra about this, and he told me that the clearing
+of the PF_NO_SETAFFINITY flag was to deal with the optimization of
+migrate_disable/enable() that ignores tasks that have that flag set. But
+that optimization was removed when I did a rework of the cpu hotplug code.
+
+I found that ignoring tasks that had that flag set would cause those tasks
+to not sync with the hotplug code and cause the kernel to crash. Thus it
+needed to not treat them special and those tasks had to go though the same
+work as tasks without that flag set.
+
+Now that those tasks are not treated special, there's no reason to clear the
+flag.
+
+May still need to be tested as the migrate_me() code does not ignore those
+flags.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+Cc: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Cc: Clark Williams <williams at redhat.com>
+Cc: Peter Zijlstra <peterz at infradead.org>
+Link: http://lkml.kernel.org/r/20140701111444.0cfebaa1@gandalf.local.home
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ kernel/sched.c | 6 ------
+ 1 file changed, 6 deletions(-)
+
+diff --git a/kernel/sched.c b/kernel/sched.c
+index 9942f01..b0e6759 100644
+--- a/kernel/sched.c
++++ b/kernel/sched.c
+@@ -2572,12 +2572,6 @@ static int select_fallback_rq(int cpu, struct task_struct *p)
+ 		printk(KERN_INFO "process %d (%s) no longer affine to cpu%d\n",
+ 				task_pid_nr(p), p->comm, cpu);
+ 	}
+-	/*
+-	 * Clear PF_THREAD_BOUND, otherwise we wreckage
+-	 * migrate_disable/enable. See optimization for
+-	 * PF_THREAD_BOUND tasks there.
+-	 */
+-	p->flags &= ~PF_THREAD_BOUND;
+ 	return dest_cpu;
+ }
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0343-workqueue-Prevent-deadlock-stall-on-RT.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0343-workqueue-Prevent-deadlock-stall-on-RT.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0343-workqueue-Prevent-deadlock-stall-on-RT.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0343-workqueue-Prevent-deadlock-stall-on-RT.patch)
@@ -0,0 +1,158 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Fri, 27 Jun 2014 16:24:52 +0200
+Subject: [PATCH 343/371] workqueue: Prevent deadlock/stall on RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c994575bef464c7c8cab68707003e5ba77cdc985
+
+Austin reported a XFS deadlock/stall on RT where scheduled work gets
+never exececuted and tasks are waiting for each other for ever.
+
+The underlying problem is the modification of the RT code to the
+handling of workers which are about to go to sleep. In mainline a
+worker thread which goes to sleep wakes an idle worker if there is
+more work to do. This happens from the guts of the schedule()
+function. On RT this must be outside and the accessed data structures
+are not protected against scheduling due to the spinlock to rtmutex
+conversion. So the naive solution to this was to move the code outside
+of the scheduler and protect the data structures by the pool
+lock. That approach turned out to be a little naive as we cannot call
+into that code when the thread blocks on a lock, as it is not allowed
+to block on two locks in parallel. So we dont call into the worker
+wakeup magic when the worker is blocked on a lock, which causes the
+deadlock/stall observed by Austin and Mike.
+
+Looking deeper into that worker code it turns out that the only
+relevant data structure which needs to be protected is the list of
+idle workers which can be woken up.
+
+So the solution is to protect the list manipulation operations with
+preempt_enable/disable pairs on RT and call unconditionally into the
+worker code even when the worker is blocked on a lock. The preemption
+protection is safe as there is nothing which can fiddle with the list
+outside of thread context.
+
+Reported-and_tested-by: Austin Schuh <austin at peloton-tech.com>
+Reported-and_tested-by: Mike Galbraith <umgwanakikbuti at gmail.com>
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Link: http://vger.kernel.org/r/alpine.DEB.2.10.1406271249510.5170@nanos
+Cc: Richard Weinberger <richard.weinberger at gmail.com>
+Cc: Steven Rostedt <rostedt at goodmis.org>
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/sched.c     | 10 +++++-----
+ kernel/workqueue.c | 41 +++++++++++++++++++++++++++++++++++------
+ 2 files changed, 40 insertions(+), 11 deletions(-)
+
+diff --git a/kernel/sched.c b/kernel/sched.c
+index b0e6759..7fb61d3 100644
+--- a/kernel/sched.c
++++ b/kernel/sched.c
+@@ -4795,9 +4795,8 @@ need_resched:
+ 
+ static inline void sched_submit_work(struct task_struct *tsk)
+ {
+-	if (!tsk->state || tsk_is_pi_blocked(tsk))
++	if (!tsk->state)
+ 		return;
+-
+ 	/*
+ 	 * If a worker went to sleep, notify and ask workqueue whether
+ 	 * it wants to wake up a task to maintain concurrency.
+@@ -4807,6 +4806,10 @@ static inline void sched_submit_work(struct task_struct *tsk)
+ 	if (tsk->flags & PF_WQ_WORKER && !tsk->saved_state)
+ 		wq_worker_sleeping(tsk);
+ 
++
++	if (tsk_is_pi_blocked(tsk))
++		return;
++
+ 	/*
+ 	 * If we are going to sleep and we have plugged IO queued,
+ 	 * make sure to submit it to avoid deadlocks.
+@@ -4817,9 +4820,6 @@ static inline void sched_submit_work(struct task_struct *tsk)
+ 
+ static inline void sched_update_worker(struct task_struct *tsk)
+ {
+-	if (tsk_is_pi_blocked(tsk))
+-		return;
+-
+ 	if (tsk->flags & PF_WQ_WORKER)
+ 		wq_worker_running(tsk);
+ }
+diff --git a/kernel/workqueue.c b/kernel/workqueue.c
+index 62ebed7..505b50d 100644
+--- a/kernel/workqueue.c
++++ b/kernel/workqueue.c
+@@ -319,6 +319,31 @@ static inline int __next_wq_cpu(int cpu, const struct cpumask *mask,
+ 	     (cpu) < WORK_CPU_NONE;					\
+ 	     (cpu) = __next_wq_cpu((cpu), cpu_possible_mask, (wq)))
+ 
++#ifdef CONFIG_PREEMPT_RT_BASE
++static inline void rt_lock_idle_list(struct global_cwq *gcwq)
++{
++	preempt_disable();
++}
++static inline void rt_unlock_idle_list(struct global_cwq *gcwq)
++{
++	preempt_enable();
++}
++static inline void sched_lock_idle_list(struct global_cwq *gcwq) { }
++static inline void sched_unlock_idle_list(struct global_cwq *gcwq) { }
++#else
++static inline void rt_lock_idle_list(struct global_cwq *gcwq) { }
++static inline void rt_unlock_idle_list(struct global_cwq *gcwq) { }
++static inline void sched_lock_idle_list(struct global_cwq *gcwq)
++{
++	spin_lock_irq(&gcwq->lock);
++}
++static inline void sched_unlock_idle_list(struct global_cwq *gcwq)
++{
++	spin_unlock_irq(&gcwq->lock);
++}
++#endif
++
++
+ #ifdef CONFIG_DEBUG_OBJECTS_WORK
+ 
+ static struct debug_obj_descr work_debug_descr;
+@@ -655,10 +680,16 @@ static struct worker *first_worker(struct global_cwq *gcwq)
+  */
+ static void wake_up_worker(struct global_cwq *gcwq)
+ {
+-	struct worker *worker = first_worker(gcwq);
++	struct worker *worker;
++
++	rt_lock_idle_list(gcwq);
++
++	worker = first_worker(gcwq);
+ 
+ 	if (likely(worker))
+ 		wake_up_process(worker->task);
++
++	rt_unlock_idle_list(gcwq);
+ }
+ 
+ /**
+@@ -701,7 +732,6 @@ void wq_worker_sleeping(struct task_struct *task)
+ 
+ 	cpu = smp_processor_id();
+ 	gcwq = get_gcwq(cpu);
+-	spin_lock_irq(&gcwq->lock);
+ 	/*
+ 	 * The counterpart of the following dec_and_test, implied mb,
+ 	 * worklist not empty test sequence is in insert_work().
+@@ -709,11 +739,10 @@ void wq_worker_sleeping(struct task_struct *task)
+ 	 */
+ 	if (atomic_dec_and_test(get_gcwq_nr_running(cpu)) &&
+ 	    !list_empty(&gcwq->worklist)) {
+-		worker = first_worker(gcwq);
+-		if (worker)
+-			wake_up_process(worker->task);
++		sched_lock_idle_list(gcwq);
++		wake_up_worker(gcwq);
++		sched_unlock_idle_list(gcwq);
+ 	}
+-	spin_unlock_irq(&gcwq->lock);
+ }
+ 
+ /**

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0344-hrtimer-fix-the-miss-of-hrtimer_peek_ahead_timers-in.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0344-hrtimer-fix-the-miss-of-hrtimer_peek_ahead_timers-in.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0344-hrtimer-fix-the-miss-of-hrtimer_peek_ahead_timers-in.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0344-hrtimer-fix-the-miss-of-hrtimer_peek_ahead_timers-in.patch)
@@ -0,0 +1,89 @@
+From: Zhao Hongjiang <zhaohongjiang at huawei.com>
+Date: Mon, 15 Jul 2013 11:32:44 -0400
+Subject: [PATCH 344/371] hrtimer:fix the miss of hrtimer_peek_ahead_timers in
+ nort code
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=59569b5b5d6b339fb2bf415c0edc0e0f64f5d095
+
+When we run the test "taskset -c 1 stress -m 1 --vm-bytes 50M" and
+"taskset -c 1 cyclictest -t 1 -p 80 -n -m -v" with rt closed 3.4.26-rt38 kernel,
+the cyclictest's result is anomalous as follow:
+       0:     278:       1
+       0:     279:       2
+       0:     280:      17
+       0:     281:    1657
+       0:     282:    1680
+       0:     283:    4678
+       0:     284:    7026
+       0:     285:    6678
+       0:     286:    9677
+       0:     287:   12678
+       0:     288:   13090
+       0:     289:   14678
+       0:     290:   17677
+       0:     291:   20155
+       0:     292:   19678
+       0:     293:   22679
+       0:     294:   25676
+       0:     295:   26218
+       0:     296:   27679
+       0:     297:   30677
+       0:     298:   33283
+       0:     299:   32677
+       0:     300:   35676
+and the result is increase continuously forever. We find that the patch
+("hrtimer: fixup hrtimer callback changes for preempt-rt") has missed
+hrtimer_peek_ahead_timers() in hrtimer_rt_run_pending() fuction in nort
+code. We fix this and the test result isn't increase continuously as same
+as the result with nort 3.4.26 kernel as follow:
+       0:     636:       8
+       0:     637:       7
+       0:     638:       8
+       0:     639:       9
+       0:     640:       7
+       0:     641:       9
+       0:     642:       8
+       0:     643:       8
+       0:     644:       8
+       0:     645:      32
+       0:     646:    8683
+       0:     647:    7760
+       0:     648:    6784
+       0:     649:    5797
+       0:     650:    4810
+       0:     651:    3823
+       0:     652:    2836
+       0:     653:    1849
+       0:     654:     862
+       0:     655:       7
+       0:     656:       7
+       0:     657:       7
+       0:     658:       6
+       0:     659:       8
+       0:     660:       7
+
+Signed-off-by: Zhao Hongjiang <zhaohongjiang at huawei.com>
+Signed-off-by: Weng Meiling <wengmeiling.weng at huawei.com>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+[PG: direct cherry pick of b236e408 from v3.6-rt]
+Signed-off-by: Paul Gortmaker <paul.gortmaker at windriver.com>
+---
+ kernel/hrtimer.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
+index 2bd88f0..928473a 100644
+--- a/kernel/hrtimer.c
++++ b/kernel/hrtimer.c
+@@ -1452,7 +1452,11 @@ static int hrtimer_rt_defer(struct hrtimer *timer)
+ 
+ #else
+ 
+-static inline void hrtimer_rt_run_pending(void) { }
++static inline void hrtimer_rt_run_pending(void)
++{
++	hrtimer_peek_ahead_timers();
++}
++
+ static inline int hrtimer_rt_defer(struct hrtimer *timer) { return 0; }
+ 
+ #endif

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0345-lockdep-Fix-backport-of-Correctly-annotate-hardirq-c.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0345-lockdep-Fix-backport-of-Correctly-annotate-hardirq-c.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0345-lockdep-Fix-backport-of-Correctly-annotate-hardirq-c.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0345-lockdep-Fix-backport-of-Correctly-annotate-hardirq-c.patch)
@@ -0,0 +1,45 @@
+From: "Steven Rostedt (Red Hat)" <rostedt at goodmis.org>
+Date: Thu, 30 Oct 2014 18:19:04 -0400
+Subject: [PATCH 345/371] lockdep: Fix backport of "Correctly annotate hardirq
+ context in irq_exit()"
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=0d820fe104f13784a055925dd6ec6d7327087d53
+
+The backport of f1a83e652bed "lockdep: Correctly annotate hardirq context
+in irq_exit()" to v3.2.53-rt76 wasn't correct because v3.2-rt had two
+calls to invoke_softirq(). One when __ARCH_IRQ_EXIT_IRQS_DISABLED is defined
+and another when it is not defined. v3.14 which introduced this change
+only had one version.
+
+When I backported this change, I didn't see the two places and only one
+was added. Unfortunately, it was the one that x86 does not use, and this
+caused a lockdep splat on one of my tests. It only affected the -rt patch
+when PREEMPT_RT_FULL was not set, so I did not spend much time looking to
+see what broke.
+
+Well, I finally spent a little time and found the cause, and this was
+a simple fix. Now my all my tests pass on the v3.2-rt kernel, even the
+one where I test CONFIG_PREEMPT_RT_FULL not set.
+
+Cc: Peter Zijlstra <peterz at infradead.org>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/softirq.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/kernel/softirq.c b/kernel/softirq.c
+index 7d882cc..56d3085 100644
+--- a/kernel/softirq.c
++++ b/kernel/softirq.c
+@@ -637,9 +637,10 @@ static inline void invoke_softirq(void)
+ static inline void invoke_softirq(void)
+ {
+ #ifndef CONFIG_PREEMPT_RT_FULL
+-	if (!force_irqthreads)
++	if (!force_irqthreads) {
++		lockdep_softirq_from_hardirq();
+ 		do_softirq();
+-	else {
++	} else {
+ 		__local_bh_disable((unsigned long)__builtin_return_address(0),
+ 				SOFTIRQ_OFFSET);
+ 		wakeup_softirqd();

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0346-gpio-omap-use-raw-locks-for-locking.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0346-gpio-omap-use-raw-locks-for-locking.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0346-gpio-omap-use-raw-locks-for-locking.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0346-gpio-omap-use-raw-locks-for-locking.patch)
@@ -0,0 +1,267 @@
+From: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Date: Thu, 12 Feb 2015 16:01:13 +0100
+Subject: [PATCH 346/371] gpio: omap: use raw locks for locking
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=afe7db421552bde83c469e707aa093760ed4e7c9
+
+This patch converts gpio_bank.lock from a spin_lock into a
+raw_spin_lock. The call path is to access this lock is always under a
+raw_spin_lock, for instance
+- __setup_irq() holds &desc->lock with irq off
+  + __irq_set_trigger()
+   + omap_gpio_irq_type()
+
+- handle_level_irq() (runs with irqs off therefore raw locks)
+  + mask_ack_irq()
+   + omap_gpio_mask_irq()
+
+This fixes the obvious backtrace on -RT. However the locking vs context
+is not and this is not limited to -RT:
+- omap_gpio_irq_type() is called with IRQ off and has an conditional
+  call to pm_runtime_get_sync() which may sleep. Either it may happen or
+  it may not happen but pm_runtime_get_sync() should not be called with
+  irqs off.
+
+- omap_gpio_debounce() is holding the lock with IRQs off.
+  + omap2_set_gpio_debounce()
+   + clk_prepare_enable()
+    + clk_prepare() this one might sleep.
+  The number of users of gpiod_set_debounce() / gpio_set_debounce()
+  looks low but still this is not good.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ drivers/gpio/gpio-omap.c | 64 ++++++++++++++++++++++++------------------------
+ 1 file changed, 32 insertions(+), 32 deletions(-)
+
+diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
+index a6c10e8..e4d11e4 100644
+--- a/drivers/gpio/gpio-omap.c
++++ b/drivers/gpio/gpio-omap.c
+@@ -46,7 +46,7 @@ struct gpio_bank {
+ 	u32 saved_risingdetect;
+ 	u32 level_mask;
+ 	u32 toggle_mask;
+-	spinlock_t lock;
++	raw_spinlock_t lock;
+ 	struct gpio_chip chip;
+ 	struct clk *dbck;
+ 	u32 mod_usage;
+@@ -418,9 +418,9 @@ static int gpio_irq_type(struct irq_data *d, unsigned type)
+ 		return -EINVAL;
+ 
+ 	bank = irq_data_get_irq_chip_data(d);
+-	spin_lock_irqsave(&bank->lock, flags);
++	raw_spin_lock_irqsave(&bank->lock, flags);
+ 	retval = _set_gpio_triggering(bank, GPIO_INDEX(bank, gpio), type);
+-	spin_unlock_irqrestore(&bank->lock, flags);
++	raw_spin_unlock_irqrestore(&bank->lock, flags);
+ 
+ 	if (type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH))
+ 		__irq_set_handler_locked(d->irq, handle_level_irq);
+@@ -533,13 +533,13 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
+ 		return -EINVAL;
+ 	}
+ 
+-	spin_lock_irqsave(&bank->lock, flags);
++	raw_spin_lock_irqsave(&bank->lock, flags);
+ 	if (enable)
+ 		bank->suspend_wakeup |= gpio_bit;
+ 	else
+ 		bank->suspend_wakeup &= ~gpio_bit;
+ 
+-	spin_unlock_irqrestore(&bank->lock, flags);
++	raw_spin_unlock_irqrestore(&bank->lock, flags);
+ 
+ 	return 0;
+ }
+@@ -570,7 +570,7 @@ static int omap_gpio_request(struct gpio_chip *chip, unsigned offset)
+ 	struct gpio_bank *bank = container_of(chip, struct gpio_bank, chip);
+ 	unsigned long flags;
+ 
+-	spin_lock_irqsave(&bank->lock, flags);
++	raw_spin_lock_irqsave(&bank->lock, flags);
+ 
+ 	/* Set trigger to none. You need to enable the desired trigger with
+ 	 * request_irq() or set_irq_type().
+@@ -602,7 +602,7 @@ static int omap_gpio_request(struct gpio_chip *chip, unsigned offset)
+ 		}
+ 		bank->mod_usage |= 1 << offset;
+ 	}
+-	spin_unlock_irqrestore(&bank->lock, flags);
++	raw_spin_unlock_irqrestore(&bank->lock, flags);
+ 
+ 	return 0;
+ }
+@@ -612,7 +612,7 @@ static void omap_gpio_free(struct gpio_chip *chip, unsigned offset)
+ 	struct gpio_bank *bank = container_of(chip, struct gpio_bank, chip);
+ 	unsigned long flags;
+ 
+-	spin_lock_irqsave(&bank->lock, flags);
++	raw_spin_lock_irqsave(&bank->lock, flags);
+ #ifdef CONFIG_ARCH_OMAP16XX
+ 	if (bank->method == METHOD_GPIO_1610) {
+ 		/* Disable wake-up during idle for dynamic tick */
+@@ -651,7 +651,7 @@ static void omap_gpio_free(struct gpio_chip *chip, unsigned offset)
+ 		}
+ 	}
+ 	_reset_gpio(bank, bank->chip.base + offset);
+-	spin_unlock_irqrestore(&bank->lock, flags);
++	raw_spin_unlock_irqrestore(&bank->lock, flags);
+ }
+ 
+ /*
+@@ -751,9 +751,9 @@ static void gpio_irq_shutdown(struct irq_data *d)
+ 	struct gpio_bank *bank = irq_data_get_irq_chip_data(d);
+ 	unsigned long flags;
+ 
+-	spin_lock_irqsave(&bank->lock, flags);
++	raw_spin_lock_irqsave(&bank->lock, flags);
+ 	_reset_gpio(bank, gpio);
+-	spin_unlock_irqrestore(&bank->lock, flags);
++	raw_spin_unlock_irqrestore(&bank->lock, flags);
+ }
+ 
+ static void gpio_ack_irq(struct irq_data *d)
+@@ -770,10 +770,10 @@ static void gpio_mask_irq(struct irq_data *d)
+ 	struct gpio_bank *bank = irq_data_get_irq_chip_data(d);
+ 	unsigned long flags;
+ 
+-	spin_lock_irqsave(&bank->lock, flags);
++	raw_spin_lock_irqsave(&bank->lock, flags);
+ 	_set_gpio_irqenable(bank, gpio, 0);
+ 	_set_gpio_triggering(bank, GPIO_INDEX(bank, gpio), IRQ_TYPE_NONE);
+-	spin_unlock_irqrestore(&bank->lock, flags);
++	raw_spin_unlock_irqrestore(&bank->lock, flags);
+ }
+ 
+ static void gpio_unmask_irq(struct irq_data *d)
+@@ -784,7 +784,7 @@ static void gpio_unmask_irq(struct irq_data *d)
+ 	u32 trigger = irqd_get_trigger_type(d);
+ 	unsigned long flags;
+ 
+-	spin_lock_irqsave(&bank->lock, flags);
++	raw_spin_lock_irqsave(&bank->lock, flags);
+ 	if (trigger)
+ 		_set_gpio_triggering(bank, GPIO_INDEX(bank, gpio), trigger);
+ 
+@@ -796,7 +796,7 @@ static void gpio_unmask_irq(struct irq_data *d)
+ 	}
+ 
+ 	_set_gpio_irqenable(bank, gpio, 1);
+-	spin_unlock_irqrestore(&bank->lock, flags);
++	raw_spin_unlock_irqrestore(&bank->lock, flags);
+ }
+ 
+ static struct irq_chip gpio_irq_chip = {
+@@ -827,10 +827,10 @@ static int omap_mpuio_suspend_noirq(struct device *dev)
+ 					OMAP_MPUIO_GPIO_MASKIT / bank->stride;
+ 	unsigned long		flags;
+ 
+-	spin_lock_irqsave(&bank->lock, flags);
++	raw_spin_lock_irqsave(&bank->lock, flags);
+ 	bank->saved_wakeup = __raw_readl(mask_reg);
+ 	__raw_writel(0xffff & ~bank->suspend_wakeup, mask_reg);
+-	spin_unlock_irqrestore(&bank->lock, flags);
++	raw_spin_unlock_irqrestore(&bank->lock, flags);
+ 
+ 	return 0;
+ }
+@@ -843,9 +843,9 @@ static int omap_mpuio_resume_noirq(struct device *dev)
+ 					OMAP_MPUIO_GPIO_MASKIT / bank->stride;
+ 	unsigned long		flags;
+ 
+-	spin_lock_irqsave(&bank->lock, flags);
++	raw_spin_lock_irqsave(&bank->lock, flags);
+ 	__raw_writel(bank->saved_wakeup, mask_reg);
+-	spin_unlock_irqrestore(&bank->lock, flags);
++	raw_spin_unlock_irqrestore(&bank->lock, flags);
+ 
+ 	return 0;
+ }
+@@ -904,9 +904,9 @@ static int gpio_input(struct gpio_chip *chip, unsigned offset)
+ 	unsigned long flags;
+ 
+ 	bank = container_of(chip, struct gpio_bank, chip);
+-	spin_lock_irqsave(&bank->lock, flags);
++	raw_spin_lock_irqsave(&bank->lock, flags);
+ 	_set_gpio_direction(bank, offset, 1);
+-	spin_unlock_irqrestore(&bank->lock, flags);
++	raw_spin_unlock_irqrestore(&bank->lock, flags);
+ 	return 0;
+ }
+ 
+@@ -941,10 +941,10 @@ static int gpio_output(struct gpio_chip *chip, unsigned offset, int value)
+ 	unsigned long flags;
+ 
+ 	bank = container_of(chip, struct gpio_bank, chip);
+-	spin_lock_irqsave(&bank->lock, flags);
++	raw_spin_lock_irqsave(&bank->lock, flags);
+ 	bank->set_dataout(bank, offset, value);
+ 	_set_gpio_direction(bank, offset, 0);
+-	spin_unlock_irqrestore(&bank->lock, flags);
++	raw_spin_unlock_irqrestore(&bank->lock, flags);
+ 	return 0;
+ }
+ 
+@@ -962,9 +962,9 @@ static int gpio_debounce(struct gpio_chip *chip, unsigned offset,
+ 			dev_err(bank->dev, "Could not get gpio dbck\n");
+ 	}
+ 
+-	spin_lock_irqsave(&bank->lock, flags);
++	raw_spin_lock_irqsave(&bank->lock, flags);
+ 	_set_gpio_debounce(bank, offset, debounce);
+-	spin_unlock_irqrestore(&bank->lock, flags);
++	raw_spin_unlock_irqrestore(&bank->lock, flags);
+ 
+ 	return 0;
+ }
+@@ -975,9 +975,9 @@ static void gpio_set(struct gpio_chip *chip, unsigned offset, int value)
+ 	unsigned long flags;
+ 
+ 	bank = container_of(chip, struct gpio_bank, chip);
+-	spin_lock_irqsave(&bank->lock, flags);
++	raw_spin_lock_irqsave(&bank->lock, flags);
+ 	bank->set_dataout(bank, offset, value);
+-	spin_unlock_irqrestore(&bank->lock, flags);
++	raw_spin_unlock_irqrestore(&bank->lock, flags);
+ }
+ 
+ static int gpio_2irq(struct gpio_chip *chip, unsigned offset)
+@@ -1207,7 +1207,7 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev)
+ 	else
+ 		bank->set_dataout = _set_gpio_dataout_mask;
+ 
+-	spin_lock_init(&bank->lock);
++	raw_spin_lock_init(&bank->lock);
+ 
+ 	/* Static mapping, never released */
+ 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+@@ -1276,11 +1276,11 @@ static int omap_gpio_suspend(void)
+ 			continue;
+ 		}
+ 
+-		spin_lock_irqsave(&bank->lock, flags);
++		raw_spin_lock_irqsave(&bank->lock, flags);
+ 		bank->saved_wakeup = __raw_readl(wake_status);
+ 		__raw_writel(0xffffffff, wake_clear);
+ 		__raw_writel(bank->suspend_wakeup, wake_set);
+-		spin_unlock_irqrestore(&bank->lock, flags);
++		raw_spin_unlock_irqrestore(&bank->lock, flags);
+ 	}
+ 
+ 	return 0;
+@@ -1322,10 +1322,10 @@ static void omap_gpio_resume(void)
+ 			continue;
+ 		}
+ 
+-		spin_lock_irqsave(&bank->lock, flags);
++		raw_spin_lock_irqsave(&bank->lock, flags);
+ 		__raw_writel(0xffffffff, wake_clear);
+ 		__raw_writel(bank->saved_wakeup, wake_set);
+-		spin_unlock_irqrestore(&bank->lock, flags);
++		raw_spin_unlock_irqrestore(&bank->lock, flags);
+ 	}
+ }
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0347-create-rt-enqueue.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0347-create-rt-enqueue.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0347-create-rt-enqueue.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0347-create-rt-enqueue.patch)
@@ -0,0 +1,160 @@
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Wed, 11 Mar 2015 13:30:49 -0400
+Subject: [PATCH 347/371] create-rt-enqueue
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=e20cbd9c654b41696258929732d6fe6ac9172b6d
+
+To ease backporting patches, replace the plist functions with
+rt_mutex_enqueue{_pi}() and rt_mutex_dequeue{_pi}() like upstream -rt does.
+This will lower the conflicts in backporting patches.
+
+This also makes sure that every time a waiter is added to the pi_list it
+matches the priority of the waiter list.
+
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/rtmutex.c | 58 ++++++++++++++++++++++++++++++++++++++------------------
+ 1 file changed, 40 insertions(+), 18 deletions(-)
+
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index 744d41f..972ec87 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -154,6 +154,31 @@ static inline bool unlock_rt_mutex_safe(struct rt_mutex *lock)
+ }
+ #endif
+ 
++static inline void
++rt_mutex_enqueue(struct rt_mutex *lock, struct rt_mutex_waiter *waiter)
++{
++	plist_add(&waiter->list_entry, &lock->wait_list);
++}
++
++static inline void
++rt_mutex_dequeue(struct rt_mutex *lock, struct rt_mutex_waiter *waiter)
++{
++	plist_del(&waiter->list_entry, &lock->wait_list);
++}
++
++static inline void
++rt_mutex_enqueue_pi(struct task_struct *task, struct rt_mutex_waiter *waiter)
++{
++	waiter->pi_list_entry.prio = waiter->list_entry.prio;
++	plist_add(&waiter->pi_list_entry, &task->pi_waiters);
++}
++
++static inline void
++rt_mutex_dequeue_pi(struct task_struct *task, struct rt_mutex_waiter *waiter)
++{
++	plist_del(&waiter->pi_list_entry, &task->pi_waiters);
++}
++
+ static inline void init_lists(struct rt_mutex *lock)
+ {
+ 	if (unlikely(!lock->wait_list.node_list.prev))
+@@ -376,9 +401,9 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 	top_waiter = rt_mutex_top_waiter(lock);
+ 
+ 	/* Requeue the waiter */
+-	plist_del(&waiter->list_entry, &lock->wait_list);
++	rt_mutex_dequeue(lock, waiter);
+ 	waiter->list_entry.prio = task->prio;
+-	plist_add(&waiter->list_entry, &lock->wait_list);
++	rt_mutex_enqueue(lock, waiter);
+ 
+ 	/* Release the task */
+ 	raw_spin_unlock_irqrestore(&task->pi_lock, flags);
+@@ -404,17 +429,15 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 
+ 	if (waiter == rt_mutex_top_waiter(lock)) {
+ 		/* Boost the owner */
+-		plist_del(&top_waiter->pi_list_entry, &task->pi_waiters);
+-		waiter->pi_list_entry.prio = waiter->list_entry.prio;
+-		plist_add(&waiter->pi_list_entry, &task->pi_waiters);
++		rt_mutex_dequeue_pi(task, top_waiter);
++		rt_mutex_enqueue_pi(task, waiter);
+ 		__rt_mutex_adjust_prio(task);
+ 
+ 	} else if (top_waiter == waiter) {
+ 		/* Deboost the owner */
+-		plist_del(&waiter->pi_list_entry, &task->pi_waiters);
++		rt_mutex_dequeue_pi(task, waiter);
+ 		waiter = rt_mutex_top_waiter(lock);
+-		waiter->pi_list_entry.prio = waiter->list_entry.prio;
+-		plist_add(&waiter->pi_list_entry, &task->pi_waiters);
++		rt_mutex_enqueue_pi(task, waiter);
+ 		__rt_mutex_adjust_prio(task);
+ 	}
+ 
+@@ -530,7 +553,7 @@ __try_to_take_rt_mutex(struct rt_mutex *lock, struct task_struct *task,
+ 
+ 		/* remove the queued waiter. */
+ 		if (waiter) {
+-			plist_del(&waiter->list_entry, &lock->wait_list);
++			rt_mutex_dequeue(lock, waiter);
+ 			task->pi_blocked_on = NULL;
+ 		}
+ 
+@@ -540,8 +563,7 @@ __try_to_take_rt_mutex(struct rt_mutex *lock, struct task_struct *task,
+ 		 */
+ 		if (rt_mutex_has_waiters(lock)) {
+ 			top = rt_mutex_top_waiter(lock);
+-			top->pi_list_entry.prio = top->list_entry.prio;
+-			plist_add(&top->pi_list_entry, &task->pi_waiters);
++			rt_mutex_enqueue_pi(task, top);
+ 		}
+ 		raw_spin_unlock_irqrestore(&task->pi_lock, flags);
+ 	}
+@@ -619,7 +641,7 @@ static int task_blocks_on_rt_mutex(struct rt_mutex *lock,
+ 	/* Get the top priority waiter on the lock */
+ 	if (rt_mutex_has_waiters(lock))
+ 		top_waiter = rt_mutex_top_waiter(lock);
+-	plist_add(&waiter->list_entry, &lock->wait_list);
++	rt_mutex_enqueue(lock, waiter);
+ 
+ 	task->pi_blocked_on = waiter;
+ 
+@@ -630,8 +652,8 @@ static int task_blocks_on_rt_mutex(struct rt_mutex *lock,
+ 
+ 	raw_spin_lock_irqsave(&owner->pi_lock, flags);
+ 	if (waiter == rt_mutex_top_waiter(lock)) {
+-		plist_del(&top_waiter->pi_list_entry, &owner->pi_waiters);
+-		plist_add(&waiter->pi_list_entry, &owner->pi_waiters);
++		rt_mutex_dequeue_pi(owner, top_waiter);
++		rt_mutex_enqueue_pi(owner, waiter);
+ 
+ 		__rt_mutex_adjust_prio(owner);
+ 		if (rt_mutex_real_waiter(owner->pi_blocked_on))
+@@ -692,7 +714,7 @@ static void wakeup_next_waiter(struct rt_mutex *lock)
+ 	 * boosted mode and go back to normal after releasing
+ 	 * lock->wait_lock.
+ 	 */
+-	plist_del(&waiter->pi_list_entry, &current->pi_waiters);
++	rt_mutex_dequeue_pi(current, waiter);
+ 
+ 	/*
+ 	 * As we are waking up the top waiter, and the waiter stays
+@@ -729,7 +751,7 @@ static void remove_waiter(struct rt_mutex *lock,
+ 	unsigned long flags;
+ 
+ 	raw_spin_lock_irqsave(&current->pi_lock, flags);
+-	plist_del(&waiter->list_entry, &lock->wait_list);
++	rt_mutex_dequeue(lock, waiter);
+ 	current->pi_blocked_on = NULL;
+ 	raw_spin_unlock_irqrestore(&current->pi_lock, flags);
+ 
+@@ -740,13 +762,13 @@ static void remove_waiter(struct rt_mutex *lock,
+ 
+ 		raw_spin_lock_irqsave(&owner->pi_lock, flags);
+ 
+-		plist_del(&waiter->pi_list_entry, &owner->pi_waiters);
++		rt_mutex_dequeue_pi(owner, waiter);
+ 
+ 		if (rt_mutex_has_waiters(lock)) {
+ 			struct rt_mutex_waiter *next;
+ 
+ 			next = rt_mutex_top_waiter(lock);
+-			plist_add(&next->pi_list_entry, &owner->pi_waiters);
++			rt_mutex_enqueue_pi(owner, next);
+ 		}
+ 		__rt_mutex_adjust_prio(owner);
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0348-rtmutex-Simplify-rtmutex_slowtrylock.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0348-rtmutex-Simplify-rtmutex_slowtrylock.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0348-rtmutex-Simplify-rtmutex_slowtrylock.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0348-rtmutex-Simplify-rtmutex_slowtrylock.patch)
@@ -0,0 +1,82 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Tue, 10 Jun 2014 22:53:40 +0200
+Subject: [PATCH 348/371] rtmutex: Simplify rtmutex_slowtrylock()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fde36aeb56aa185c23c33eba82b3e804f952378c
+
+upstream-commit: 88f2b4c15e561bb5c28709d666364f273bf54b98
+
+Oleg noticed that rtmutex_slowtrylock() has a pointless check for
+rt_mutex_owner(lock) != current.
+
+To avoid calling try_to_take_rtmutex() we really want to check whether
+the lock has an owner at all or whether the trylock failed because the
+owner is NULL, but the RT_MUTEX_HAS_WAITERS bit is set. This covers
+the lock is owned by caller situation as well.
+
+We can actually do this check lockless. trylock is taking a chance
+whether we take lock->wait_lock to do the check or not.
+
+Add comments to the function while at it.
+
+Reported-by: Oleg Nesterov <oleg at redhat.com>
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Reviewed-by: Steven Rostedt <rostedt at goodmis.org>
+Reviewed-by: Lai Jiangshan <laijs at cn.fujitsu.com>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+
+Conflicts:
+	kernel/rtmutex.c
+---
+ kernel/rtmutex.c | 33 +++++++++++++++++++++------------
+ 1 file changed, 21 insertions(+), 12 deletions(-)
+
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index 972ec87..d190602 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -1275,24 +1275,33 @@ rt_mutex_slowlock(struct rt_mutex *lock, int state,
+ /*
+  * Slow path try-lock function:
+  */
+-static inline int
+-rt_mutex_slowtrylock(struct rt_mutex *lock)
++static inline int rt_mutex_slowtrylock(struct rt_mutex *lock)
+ {
+-	int ret = 0;
++	int ret;
+ 
++	/*
++	 * If the lock already has an owner we fail to get the lock.
++	 * This can be done without taking the @lock->wait_lock as
++	 * it is only being read, and this is a trylock anyway.
++	 */
++	if (rt_mutex_owner(lock))
++		return 0;
++
++	/*
++	 * The mutex has currently no owner. Lock the wait lock and
++	 * try to acquire the lock.
++	 */
+ 	if (!raw_spin_trylock(&lock->wait_lock))
+-		return ret;
++		return 0;
+ 	init_lists(lock);
+ 
+-	if (likely(rt_mutex_owner(lock) != current)) {
++	ret = try_to_take_rt_mutex(lock, current, NULL);
+ 
+-		ret = try_to_take_rt_mutex(lock, current, NULL);
+-		/*
+-		 * try_to_take_rt_mutex() sets the lock waiters
+-		 * bit unconditionally. Clean this up.
+-		 */
+-		fixup_rt_mutex_waiters(lock);
+-	}
++	/*
++	 * try_to_take_rt_mutex() sets the lock waiters bit
++	 * unconditionally. Clean this up.
++	 */
++	fixup_rt_mutex_waiters(lock);
+ 
+ 	raw_spin_unlock(&lock->wait_lock);
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0349-rtmutex-Simplify-and-document-try_to_take_rtmutex.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0349-rtmutex-Simplify-and-document-try_to_take_rtmutex.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0349-rtmutex-Simplify-and-document-try_to_take_rtmutex.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0349-rtmutex-Simplify-and-document-try_to_take_rtmutex.patch)
@@ -0,0 +1,198 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 11 Jun 2014 01:01:13 +0200
+Subject: [PATCH 349/371] rtmutex: Simplify and document try_to_take_rtmutex()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=849f4c95e5706921053b8aecdcf267a7ecae20c3
+
+upstream commit: 358c331f391f3e0432f4f96f25017d12ac8d10b1
+
+The current implementation of try_to_take_rtmutex() is correct, but
+requires more than a single brain twist to understand the clever
+encoded conditionals.
+
+Untangle it and document the cases proper.
+
+Looks less efficient at the first glance, but actually reduces the
+binary code size on x8664 by 80 bytes.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Reviewed-by: Steven Rostedt <rostedt at goodmis.org>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+
+Conflicts:
+	kernel/rtmutex.c
+---
+ kernel/rtmutex.c | 134 ++++++++++++++++++++++++++++++++++++-------------------
+ 1 file changed, 89 insertions(+), 45 deletions(-)
+
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index d190602..a74c57a 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -498,78 +498,122 @@ static inline int lock_is_stealable(struct task_struct *task,
+  *
+  * Must be called with lock->wait_lock held.
+  *
+- * @lock:   the lock to be acquired.
+- * @task:   the task which wants to acquire the lock
+- * @waiter: the waiter that is queued to the lock's wait list. (could be NULL)
++ * @lock:   The lock to be acquired.
++ * @task:   The task which wants to acquire the lock
++ * @waiter: The waiter that is queued to the lock's wait list if the
++ *	    callsite called task_blocked_on_lock(), otherwise NULL
+  */
+ static int
+ __try_to_take_rt_mutex(struct rt_mutex *lock, struct task_struct *task,
+ 		       struct rt_mutex_waiter *waiter, int mode)
+ {
++	unsigned long flags;
++
+ 	/*
+-	 * We have to be careful here if the atomic speedups are
+-	 * enabled, such that, when
+-	 *  - no other waiter is on the lock
+-	 *  - the lock has been released since we did the cmpxchg
+-	 * the lock can be released or taken while we are doing the
+-	 * checks and marking the lock with RT_MUTEX_HAS_WAITERS.
++	 * Before testing whether we can acquire @lock, we set the
++	 * RT_MUTEX_HAS_WAITERS bit in @lock->owner. This forces all
++	 * other tasks which try to modify @lock into the slow path
++	 * and they serialize on @lock->wait_lock.
+ 	 *
+-	 * The atomic acquire/release aware variant of
+-	 * mark_rt_mutex_waiters uses a cmpxchg loop. After setting
+-	 * the WAITERS bit, the atomic release / acquire can not
+-	 * happen anymore and lock->wait_lock protects us from the
+-	 * non-atomic case.
++	 * The RT_MUTEX_HAS_WAITERS bit can have a transitional state
++	 * as explained at the top of this file if and only if:
+ 	 *
+-	 * Note, that this might set lock->owner =
+-	 * RT_MUTEX_HAS_WAITERS in the case the lock is not contended
+-	 * any more. This is fixed up when we take the ownership.
+-	 * This is the transitional state explained at the top of this file.
++	 * - There is a lock owner. The caller must fixup the
++	 *   transient state if it does a trylock or leaves the lock
++	 *   function due to a signal or timeout.
++	 *
++	 * - @task acquires the lock and there are no other
++	 *   waiters. This is undone in rt_mutex_set_owner(@task) at
++	 *   the end of this function.
+ 	 */
+ 	mark_rt_mutex_waiters(lock);
+ 
++	/*
++	 * If @lock has an owner, give up.
++	 */
+ 	if (rt_mutex_owner(lock))
+ 		return 0;
+ 
+ 	/*
+-	 * It will get the lock because of one of these conditions:
+-	 * 1) there is no waiter
+-	 * 2) higher priority than waiters
+-	 * 3) it is top waiter
++	 * If @waiter != NULL, @task has already enqueued the waiter
++	 * into @lock waiter list. If @waiter == NULL then this is a
++	 * trylock attempt.
+ 	 */
+-	if (rt_mutex_has_waiters(lock)) {
+-		struct task_struct *pown = rt_mutex_top_waiter(lock)->task;
+-
+-		if (task != pown && !lock_is_stealable(task, pown, mode))
++	if (waiter) {
++		/*
++		 * If waiter is not the highest priority waiter of
++		 * @lock, give up.
++		 */
++		if (waiter != rt_mutex_top_waiter(lock))
+ 			return 0;
+-	}
+-
+-	/* We got the lock. */
+ 
+-	if (waiter || rt_mutex_has_waiters(lock)) {
+-		unsigned long flags;
+-		struct rt_mutex_waiter *top;
+-
+-		raw_spin_lock_irqsave(&task->pi_lock, flags);
+-
+-		/* remove the queued waiter. */
+-		if (waiter) {
+-			rt_mutex_dequeue(lock, waiter);
+-			task->pi_blocked_on = NULL;
+-		}
++		/*
++		 * We can acquire the lock. Remove the waiter from the
++		 * lock waiters list.
++		 */
++		rt_mutex_dequeue(lock, waiter);
+ 
++	} else {
+ 		/*
+-		 * We have to enqueue the top waiter(if it exists) into
+-		 * task->pi_waiters list.
++		 * If the lock has waiters already we check whether @task is
++		 * eligible to take over the lock.
++		 *
++		 * If there are no other waiters, @task can acquire
++		 * the lock.  @task->pi_blocked_on is NULL, so it does
++		 * not need to be dequeued.
+ 		 */
+ 		if (rt_mutex_has_waiters(lock)) {
+-			top = rt_mutex_top_waiter(lock);
+-			rt_mutex_enqueue_pi(task, top);
++			struct task_struct *pown = rt_mutex_top_waiter(lock)->task;
++
++			/*
++			 * If @task->prio is greater than or equal to
++			 * the top waiter priority (kernel view),
++			 * @task lost.
++			 */
++			if (task != pown && !lock_is_stealable(task, pown, mode))
++				return 0;
++
++			/*
++			 * The current top waiter stays enqueued. We
++			 * don't have to change anything in the lock
++			 * waiters order.
++			 */
++		} else {
++			/*
++			 * No waiters. Take the lock without the
++			 * pi_lock dance. at task->pi_blocked_on is NULL
++			 * and we have no waiters to enqueue in @task
++			 * pi waiters list.
++			 */
++			goto takeit;
+ 		}
+-		raw_spin_unlock_irqrestore(&task->pi_lock, flags);
+ 	}
+ 
++	/*
++	 * Clear @task->pi_blocked_on. Requires protection by
++	 * @task->pi_lock. Redundant operation for the @waiter == NULL
++	 * case, but conditionals are more expensive than a redundant
++	 * store.
++	 */
++	raw_spin_lock_irqsave(&task->pi_lock, flags);
++	task->pi_blocked_on = NULL;
++	/*
++	 * Finish the lock acquisition. @task is the new owner. If
++	 * other waiters exist we have to insert the highest priority
++	 * waiter into @task->pi_waiters list.
++	 */
++	if (rt_mutex_has_waiters(lock))
++		rt_mutex_enqueue_pi(task, rt_mutex_top_waiter(lock));
++	raw_spin_unlock_irqrestore(&task->pi_lock, flags);
++
++takeit:
++	/* We got the lock. */
+ 	debug_rt_mutex_lock(lock);
+ 
++	/*
++	 * This either preserves the RT_MUTEX_HAS_WAITERS bit if there
++	 * are still waiters or clears it.
++	 */
+ 	rt_mutex_set_owner(lock, task);
+ 
+ 	rt_mutex_deadlock_account_lock(lock, task);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0350-rtmutex-No-need-to-keep-task-ref-for-lock-owner-chec.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0350-rtmutex-No-need-to-keep-task-ref-for-lock-owner-chec.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0350-rtmutex-No-need-to-keep-task-ref-for-lock-owner-chec.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0350-rtmutex-No-need-to-keep-task-ref-for-lock-owner-chec.patch)
@@ -0,0 +1,45 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Sat, 7 Jun 2014 12:10:36 +0200
+Subject: [PATCH 350/371] rtmutex: No need to keep task ref for lock owner
+ check
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=baa484701e23c114f621b3cb6de01dc5607537c7
+
+upstream commit: 2ffa5a5cd2fe792b6399c903d5172adf088d8ff7
+
+There is no point to keep the task ref across the check for lock
+owner. Drop the ref before that, so the protection context is clear.
+
+Found while documenting the chain walk.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Reviewed-by: Steven Rostedt <rostedt at goodmis.org>
+Reviewed-by: Lai Jiangshan <laijs at cn.fujitsu.com>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/rtmutex.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index a74c57a..7d338c8 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -407,6 +407,8 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 
+ 	/* Release the task */
+ 	raw_spin_unlock_irqrestore(&task->pi_lock, flags);
++	put_task_struct(task);
++
+ 	if (!rt_mutex_owner(lock)) {
+ 		struct rt_mutex_waiter *lock_top_waiter;
+ 
+@@ -418,9 +420,8 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 		if (top_waiter != lock_top_waiter)
+ 			rt_mutex_wake_waiter(lock_top_waiter);
+ 		raw_spin_unlock(&lock->wait_lock);
+-		goto out_put_task;
++		return 0;
+ 	}
+-	put_task_struct(task);
+ 
+ 	/* Grab the next task */
+ 	task = rt_mutex_owner(lock);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0351-rtmutex-Clarify-the-boost-deboost-part.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0351-rtmutex-Clarify-the-boost-deboost-part.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0351-rtmutex-Clarify-the-boost-deboost-part.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0351-rtmutex-Clarify-the-boost-deboost-part.patch)
@@ -0,0 +1,143 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Thu, 22 May 2014 03:25:54 +0000
+Subject: [PATCH 351/371] rtmutex: Clarify the boost/deboost part
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aa6e4d4edf6be3785785e0aafa858b3f3d02987e
+
+upstream commit: a57594a13a446d1a6ab1dcd48339f799ce586843
+
+Add a separate local variable for the boost/deboost logic to make the
+code more readable. Add comments where appropriate.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Reviewed-by: Steven Rostedt <rostedt at goodmis.org>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+
+Conflicts:
+	kernel/rtmutex.c
+---
+ kernel/rtmutex.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++---------
+ 1 file changed, 48 insertions(+), 9 deletions(-)
+
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index 7d338c8..34c63cb 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -289,9 +289,10 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 				      struct rt_mutex_waiter *orig_waiter,
+ 				      struct task_struct *top_task)
+ {
+-	struct rt_mutex *lock;
+ 	struct rt_mutex_waiter *waiter, *top_waiter = orig_waiter;
++	struct rt_mutex_waiter *prerequeue_top_waiter;
+ 	int detect_deadlock, ret = 0, depth = 0;
++	struct rt_mutex *lock;
+ 	unsigned long flags;
+ 
+ 	detect_deadlock = debug_rt_mutex_detect_deadlock(orig_waiter,
+@@ -398,9 +399,14 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 		goto out_unlock_pi;
+ 	}
+ 
+-	top_waiter = rt_mutex_top_waiter(lock);
++	/*
++	 * Store the current top waiter before doing the requeue
++	 * operation on @lock. We need it for the boost/deboost
++	 * decision below.
++	 */
++	prerequeue_top_waiter = rt_mutex_top_waiter(lock);
+ 
+-	/* Requeue the waiter */
++	/* Requeue the waiter in the lock waiter list. */
+ 	rt_mutex_dequeue(lock, waiter);
+ 	waiter->list_entry.prio = task->prio;
+ 	rt_mutex_enqueue(lock, waiter);
+@@ -409,6 +415,11 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 	raw_spin_unlock_irqrestore(&task->pi_lock, flags);
+ 	put_task_struct(task);
+ 
++	/*
++	 * We must abort the chain walk if there is no lock owner even
++	 * in the dead lock detection case, as we have nothing to
++	 * follow here. This is the end of the chain we are walking.
++	 */
+ 	if (!rt_mutex_owner(lock)) {
+ 		struct rt_mutex_waiter *lock_top_waiter;
+ 
+@@ -417,29 +428,48 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 		 * to wake the new top waiter up to try to get the lock.
+ 		 */
+ 		lock_top_waiter = rt_mutex_top_waiter(lock);
+-		if (top_waiter != lock_top_waiter)
++		if (prerequeue_top_waiter != lock_top_waiter)
+ 			rt_mutex_wake_waiter(lock_top_waiter);
+ 		raw_spin_unlock(&lock->wait_lock);
+ 		return 0;
+ 	}
+ 
+-	/* Grab the next task */
++	/* Grab the next task, i.e. the owner of @lock */
+ 	task = rt_mutex_owner(lock);
+ 	get_task_struct(task);
+ 	raw_spin_lock_irqsave(&task->pi_lock, flags);
+ 
+ 	if (waiter == rt_mutex_top_waiter(lock)) {
+-		/* Boost the owner */
+-		rt_mutex_dequeue_pi(task, top_waiter);
++		/*
++		 * The waiter became the new top (highest priority)
++		 * waiter on the lock. Replace the previous top waiter
++		 * in the owner tasks pi waiters list with this waiter
++		 * and adjust the priority of the owner.
++		 */
++		rt_mutex_dequeue_pi(task, prerequeue_top_waiter);
+ 		rt_mutex_enqueue_pi(task, waiter);
+ 		__rt_mutex_adjust_prio(task);
+ 
+-	} else if (top_waiter == waiter) {
+-		/* Deboost the owner */
++	} else if (prerequeue_top_waiter == waiter) {
++		/*
++		 * The waiter was the top waiter on the lock, but is
++		 * no longer the top prority waiter. Replace waiter in
++		 * the owner tasks pi waiters list with the new top
++		 * (highest priority) waiter and adjust the priority
++		 * of the owner.
++		 * The new top waiter is stored in @waiter so that
++		 * @waiter == @top_waiter evaluates to true below and
++		 * we continue to deboost the rest of the chain.
++		 */
+ 		rt_mutex_dequeue_pi(task, waiter);
+ 		waiter = rt_mutex_top_waiter(lock);
+ 		rt_mutex_enqueue_pi(task, waiter);
+ 		__rt_mutex_adjust_prio(task);
++	} else {
++		/*
++		 * Nothing changed. No need to do any priority
++		 * adjustment.
++		 */
+ 	}
+ 
+ 	/*
+@@ -452,6 +482,10 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 
+ 	raw_spin_unlock_irqrestore(&task->pi_lock, flags);
+ 
++	/*
++	 * Store the top waiter of @lock for the end of chain walk
++	 * decision below.
++	 */
+ 	top_waiter = rt_mutex_top_waiter(lock);
+ 	raw_spin_unlock(&lock->wait_lock);
+ 
+@@ -462,6 +496,11 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 	if (!next_lock)
+ 		goto out_put_task;
+ 
++	/*
++	 * If the current waiter is not the top waiter on the lock,
++	 * then we can stop the chain walk here if we are not in full
++	 * deadlock detection mode.
++	 */
+ 	if (!detect_deadlock && waiter != top_waiter)
+ 		goto out_put_task;
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0352-rtmutex-Document-pi-chain-walk.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0352-rtmutex-Document-pi-chain-walk.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0352-rtmutex-Document-pi-chain-walk.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0352-rtmutex-Document-pi-chain-walk.patch)
@@ -0,0 +1,217 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Mon, 9 Jun 2014 19:40:34 +0200
+Subject: [PATCH 352/371] rtmutex: Document pi chain walk
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=c3853f9e24a960df9818b433f6cb31d3cbc5f4f4
+
+upstream commit: 3eb65aeadf701976b084e9171e16bb7d1e83fbb0
+
+Add commentry to document the chain walk and the protection mechanisms
+and their scope.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Reviewed-by: Steven Rostedt <rostedt at goodmis.org>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/rtmutex.c | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
+ 1 file changed, 91 insertions(+), 9 deletions(-)
+
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index 34c63cb..5c581a7 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -281,6 +281,48 @@ static inline struct rt_mutex *task_blocked_on_lock(struct task_struct *p)
+  * @top_task:	the current top waiter
+  *
+  * Returns 0 or -EDEADLK.
++ *
++ * Chain walk basics and protection scope
++ *
++ * [R] refcount on task
++ * [P] task->pi_lock held
++ * [L] rtmutex->wait_lock held
++ *
++ * Step	Description				Protected by
++ *	function arguments:
++ *	@task					[R]
++ *	@orig_lock if != NULL			@top_task is blocked on it
++ *	@next_lock				Unprotected. Cannot be
++ *						dereferenced. Only used for
++ *						comparison.
++ *	@orig_waiter if != NULL			@top_task is blocked on it
++ *	@top_task				current, or in case of proxy
++ *						locking protected by calling
++ *						code
++ *	again:
++ *	  loop_sanity_check();
++ *	retry:
++ * [1]	  lock(task->pi_lock);			[R] acquire [P]
++ * [2]	  waiter = task->pi_blocked_on;		[P]
++ * [3]	  check_exit_conditions_1();		[P]
++ * [4]	  lock = waiter->lock;			[P]
++ * [5]	  if (!try_lock(lock->wait_lock)) {	[P] try to acquire [L]
++ *	    unlock(task->pi_lock);		release [P]
++ *	    goto retry;
++ *	  }
++ * [6]	  check_exit_conditions_2();		[P] + [L]
++ * [7]	  requeue_lock_waiter(lock, waiter);	[P] + [L]
++ * [8]	  unlock(task->pi_lock);		release [P]
++ *	  put_task_struct(task);		release [R]
++ * [9]	  check_exit_conditions_3();		[L]
++ * [10]	  task = owner(lock);			[L]
++ *	  get_task_struct(task);		[L] acquire [R]
++ *	  lock(task->pi_lock);			[L] acquire [P]
++ * [11]	  requeue_pi_waiter(tsk, waiters(lock));[P] + [L]
++ * [12]	  check_exit_conditions_4();		[P] + [L]
++ * [13]	  unlock(task->pi_lock);		release [P]
++ *	  unlock(lock->wait_lock);		release [L]
++ *	  goto again;
+  */
+ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 				      int deadlock_detect,
+@@ -305,6 +347,9 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 	 * carefully whether things change under us.
+ 	 */
+  again:
++	/*
++	 * We limit the lock chain length for each invocation.
++	 */
+ 	if (++depth > max_lock_depth) {
+ 		static int prev_max;
+ 
+@@ -322,13 +367,28 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 
+ 		return -EDEADLK;
+ 	}
++
++	/*
++	 * We are fully preemptible here and only hold the refcount on
++	 * @task. So everything can have changed under us since the
++	 * caller or our own code below (goto retry/again) dropped all
++	 * locks.
++	 */
+  retry:
+ 	/*
+-	 * Task can not go away as we did a get_task() before !
++	 * [1] Task cannot go away as we did a get_task() before !
+ 	 */
+ 	raw_spin_lock_irqsave(&task->pi_lock, flags);
+ 
++	/*
++	 * [2] Get the waiter on which @task is blocked on.
++	 */
+ 	waiter = task->pi_blocked_on;
++
++	/*
++	 * [3] check_exit_conditions_1() protected by task->pi_lock.
++	 */
++
+ 	/*
+ 	 * Check whether the end of the boosting chain has been
+ 	 * reached or the state of the chain has changed while we
+@@ -379,7 +439,15 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 	if (!detect_deadlock && waiter->list_entry.prio == task->prio)
+ 		goto out_unlock_pi;
+ 
++	/*
++	 * [4] Get the next lock
++	 */
+ 	lock = waiter->lock;
++	/*
++	 * [5] We need to trylock here as we are holding task->pi_lock,
++	 * which is the reverse lock order versus the other rtmutex
++	 * operations.
++	 */
+ 	if (!raw_spin_trylock(&lock->wait_lock)) {
+ 		raw_spin_unlock_irqrestore(&task->pi_lock, flags);
+ 		cpu_relax();
+@@ -387,6 +455,9 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 	}
+ 
+ 	/*
++	 * [6] check_exit_conditions_2() protected by task->pi_lock and
++	 * lock->wait_lock.
++	 *
+ 	 * Deadlock detection. If the lock is the same as the original
+ 	 * lock which caused us to walk the lock chain or if the
+ 	 * current lock is owned by the task which initiated the chain
+@@ -406,16 +477,18 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 	 */
+ 	prerequeue_top_waiter = rt_mutex_top_waiter(lock);
+ 
+-	/* Requeue the waiter in the lock waiter list. */
++	/* [7] Requeue the waiter in the lock waiter list. */
+ 	rt_mutex_dequeue(lock, waiter);
+ 	waiter->list_entry.prio = task->prio;
+ 	rt_mutex_enqueue(lock, waiter);
+ 
+-	/* Release the task */
++	/* [8] Release the task */
+ 	raw_spin_unlock_irqrestore(&task->pi_lock, flags);
+ 	put_task_struct(task);
+ 
+ 	/*
++	 * [9] check_exit_conditions_3 protected by lock->wait_lock.
++	 *
+ 	 * We must abort the chain walk if there is no lock owner even
+ 	 * in the dead lock detection case, as we have nothing to
+ 	 * follow here. This is the end of the chain we are walking.
+@@ -424,8 +497,9 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 		struct rt_mutex_waiter *lock_top_waiter;
+ 
+ 		/*
+-		 * If the requeue above changed the top waiter, then we need
+-		 * to wake the new top waiter up to try to get the lock.
++		 * If the requeue [7] above changed the top waiter,
++		 * then we need to wake the new top waiter up to try
++		 * to get the lock.
+ 		 */
+ 		lock_top_waiter = rt_mutex_top_waiter(lock);
+ 		if (prerequeue_top_waiter != lock_top_waiter)
+@@ -434,11 +508,12 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 		return 0;
+ 	}
+ 
+-	/* Grab the next task, i.e. the owner of @lock */
++	/* [10] Grab the next task, i.e. the owner of @lock */
+ 	task = rt_mutex_owner(lock);
+ 	get_task_struct(task);
+ 	raw_spin_lock_irqsave(&task->pi_lock, flags);
+ 
++	/* [11] requeue the pi waiters if necessary */
+ 	if (waiter == rt_mutex_top_waiter(lock)) {
+ 		/*
+ 		 * The waiter became the new top (highest priority)
+@@ -473,23 +548,30 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 	}
+ 
+ 	/*
++	 * [12] check_exit_conditions_4() protected by task->pi_lock
++	 * and lock->wait_lock. The actual decisions are made after we
++	 * dropped the locks.
++	 *
+ 	 * Check whether the task which owns the current lock is pi
+ 	 * blocked itself. If yes we store a pointer to the lock for
+ 	 * the lock chain change detection above. After we dropped
+ 	 * task->pi_lock next_lock cannot be dereferenced anymore.
+ 	 */
+ 	next_lock = task_blocked_on_lock(task);
+-
+-	raw_spin_unlock_irqrestore(&task->pi_lock, flags);
+-
+ 	/*
+ 	 * Store the top waiter of @lock for the end of chain walk
+ 	 * decision below.
+ 	 */
+ 	top_waiter = rt_mutex_top_waiter(lock);
++
++	/* [13] Drop the locks */
++	raw_spin_unlock_irqrestore(&task->pi_lock, flags);
+ 	raw_spin_unlock(&lock->wait_lock);
+ 
+ 	/*
++	 * Make the actual exit decisions [12], based on the stored
++	 * values.
++	 *
+ 	 * We reached the end of the lock chain. Stop right here. No
+ 	 * point to go back just to figure that out.
+ 	 */

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0353-rtmutex-Simplify-remove_waiter.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0353-rtmutex-Simplify-remove_waiter.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0353-rtmutex-Simplify-remove_waiter.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0353-rtmutex-Simplify-remove_waiter.patch)
@@ -0,0 +1,83 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Sat, 7 Jun 2014 09:36:13 +0200
+Subject: [PATCH 353/371] rtmutex: Simplify remove_waiter()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=25ce14807e0293aebbbf0781cee0b6395d5b9ee4
+
+upstream commit: 1ca7b86062ec8473d03c5cdfd336abc8b1c8098c
+
+Exit right away, when the removed waiter was not the top priority
+waiter on the lock. Get rid of the extra indent level.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Reviewed-by: Steven Rostedt <rostedt at goodmis.org>
+Reviewed-by: Lai Jiangshan <laijs at cn.fujitsu.com>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+
+Conflicts:
+	kernel/rtmutex.c
+---
+ kernel/rtmutex.c | 33 ++++++++++++++++++---------------
+ 1 file changed, 18 insertions(+), 15 deletions(-)
+
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index 5c581a7..6405f7b 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -911,7 +911,7 @@ static void wakeup_next_waiter(struct rt_mutex *lock)
+ static void remove_waiter(struct rt_mutex *lock,
+ 			  struct rt_mutex_waiter *waiter)
+ {
+-	int first = (waiter == rt_mutex_top_waiter(lock));
++	bool is_top_waiter = (waiter == rt_mutex_top_waiter(lock));
+ 	struct task_struct *owner = rt_mutex_owner(lock);
+ 	struct rt_mutex *next_lock = NULL;
+ 	unsigned long flags;
+@@ -921,31 +921,34 @@ static void remove_waiter(struct rt_mutex *lock,
+ 	current->pi_blocked_on = NULL;
+ 	raw_spin_unlock_irqrestore(&current->pi_lock, flags);
+ 
+-	if (!owner)
++	/*
++	 * Only update priority if the waiter was the highest priority
++	 * waiter of the lock and there is an owner to update.
++	 */
++	if (!owner || !is_top_waiter)
+ 		return;
+ 
+-	if (first) {
+-
+-		raw_spin_lock_irqsave(&owner->pi_lock, flags);
++	raw_spin_lock_irqsave(&owner->pi_lock, flags);
+ 
+-		rt_mutex_dequeue_pi(owner, waiter);
++	rt_mutex_dequeue_pi(owner, waiter);
+ 
+-		if (rt_mutex_has_waiters(lock)) {
+-			struct rt_mutex_waiter *next;
++	if (rt_mutex_has_waiters(lock))
++		rt_mutex_enqueue_pi(owner, rt_mutex_top_waiter(lock));
+ 
+-			next = rt_mutex_top_waiter(lock);
+-			rt_mutex_enqueue_pi(owner, next);
+-		}
+-		__rt_mutex_adjust_prio(owner);
++	__rt_mutex_adjust_prio(owner);
+ 
+-		/* Store the lock on which owner is blocked or NULL */
++	/* Store the lock on which owner is blocked or NULL */
++	if (rt_mutex_real_waiter(owner->pi_blocked_on))
+ 		next_lock = task_blocked_on_lock(owner);
+ 
+-		raw_spin_unlock_irqrestore(&owner->pi_lock, flags);
+-	}
++	raw_spin_unlock_irqrestore(&owner->pi_lock, flags);
+ 
+ 	WARN_ON(!plist_node_empty(&waiter->pi_list_entry));
+ 
++	/*
++	 * Don't walk the chain, if the owner task is not blocked
++	 * itself.
++	 */
+ 	if (!next_lock)
+ 		return;
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0354-rtmutex-Confine-deadlock-logic-to-futex.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0354-rtmutex-Confine-deadlock-logic-to-futex.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0354-rtmutex-Confine-deadlock-logic-to-futex.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0354-rtmutex-Confine-deadlock-logic-to-futex.patch)
@@ -0,0 +1,325 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Thu, 22 May 2014 03:25:50 +0000
+Subject: [PATCH 354/371] rtmutex: Confine deadlock logic to futex
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9b1d9951a9b770b1ad0aa435767f42d69e7efa94
+
+upstream commit: c051b21f71d1ffdfd7ad406a1ef5ede5e5f974c5
+
+The deadlock logic is only required for futexes.
+
+Remove the extra arguments for the public functions and also for the
+futex specific ones which get always called with deadlock detection
+enabled.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Reviewed-by: Steven Rostedt <rostedt at goodmis.org>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+
+Conflicts:
+	include/linux/rtmutex.h
+	kernel/rtmutex.c
+---
+ include/linux/rtmutex.h |  8 +++-----
+ kernel/futex.c          | 10 ++++-----
+ kernel/rt.c             |  8 ++++----
+ kernel/rtmutex-tester.c |  4 ++--
+ kernel/rtmutex.c        | 54 ++++++++++++++++++++++++-------------------------
+ kernel/rtmutex_common.h |  7 +++----
+ 6 files changed, 43 insertions(+), 48 deletions(-)
+
+diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h
+index 5ebd0bb..9340b86 100644
+--- a/include/linux/rtmutex.h
++++ b/include/linux/rtmutex.h
+@@ -109,12 +109,10 @@ extern void __rt_mutex_init(struct rt_mutex *lock, const char *name);
+ extern void rt_mutex_destroy(struct rt_mutex *lock);
+ 
+ extern void rt_mutex_lock(struct rt_mutex *lock);
+-extern int rt_mutex_lock_interruptible(struct rt_mutex *lock,
+-						int detect_deadlock);
+-extern int rt_mutex_lock_killable(struct rt_mutex *lock, int detect_deadlock);
++extern int rt_mutex_lock_interruptible(struct rt_mutex *lock);
++extern int rt_mutex_lock_killable(struct rt_mutex *lock);
+ extern int rt_mutex_timed_lock(struct rt_mutex *lock,
+-					struct hrtimer_sleeper *timeout,
+-					int detect_deadlock);
++			       struct hrtimer_sleeper *timeout);
+ 
+ extern int rt_mutex_trylock(struct rt_mutex *lock);
+ 
+diff --git a/kernel/futex.c b/kernel/futex.c
+index 749e297..8ed0948 100644
+--- a/kernel/futex.c
++++ b/kernel/futex.c
+@@ -1563,7 +1563,7 @@ retry_private:
+ 			this->pi_state = pi_state;
+ 			ret = rt_mutex_start_proxy_lock(&pi_state->pi_mutex,
+ 							this->rt_waiter,
+-							this->task, 1);
++							this->task);
+ 			if (ret == 1) {
+ 				/* We got the lock. */
+ 				requeue_pi_wake_futex(this, &key2, hb2);
+@@ -2178,9 +2178,9 @@ retry_private:
+ 	/*
+ 	 * Block on the PI mutex:
+ 	 */
+-	if (!trylock)
+-		ret = rt_mutex_timed_lock(&q.pi_state->pi_mutex, to, 1);
+-	else {
++	if (!trylock) {
++		ret = rt_mutex_timed_futex_lock(&q.pi_state->pi_mutex, to);
++	} else {
+ 		ret = rt_mutex_trylock(&q.pi_state->pi_mutex);
+ 		/* Fixup the trylock return value: */
+ 		ret = ret ? 0 : -EWOULDBLOCK;
+@@ -2547,7 +2547,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags,
+ 		 */
+ 		WARN_ON(!q.pi_state);
+ 		pi_mutex = &q.pi_state->pi_mutex;
+-		ret = rt_mutex_finish_proxy_lock(pi_mutex, to, &rt_waiter, 1);
++		ret = rt_mutex_finish_proxy_lock(pi_mutex, to, &rt_waiter);
+ 		debug_rt_mutex_free_waiter(&rt_waiter);
+ 
+ 		spin_lock(&hb2->lock);
+diff --git a/kernel/rt.c b/kernel/rt.c
+index aa10504..389f9bd 100644
+--- a/kernel/rt.c
++++ b/kernel/rt.c
+@@ -98,7 +98,7 @@ int __lockfunc _mutex_lock_interruptible(struct mutex *lock)
+ 	int ret;
+ 
+ 	mutex_acquire(&lock->dep_map, 0, 0, _RET_IP_);
+-	ret = rt_mutex_lock_interruptible(&lock->lock, 0);
++	ret = rt_mutex_lock_interruptible(&lock->lock);
+ 	if (ret)
+ 		mutex_release(&lock->dep_map, 1, _RET_IP_);
+ 	return ret;
+@@ -110,7 +110,7 @@ int __lockfunc _mutex_lock_killable(struct mutex *lock)
+ 	int ret;
+ 
+ 	mutex_acquire(&lock->dep_map, 0, 0, _RET_IP_);
+-	ret = rt_mutex_lock_killable(&lock->lock, 0);
++	ret = rt_mutex_lock_killable(&lock->lock);
+ 	if (ret)
+ 		mutex_release(&lock->dep_map, 1, _RET_IP_);
+ 	return ret;
+@@ -137,7 +137,7 @@ int __lockfunc _mutex_lock_interruptible_nested(struct mutex *lock, int subclass
+ 	int ret;
+ 
+ 	mutex_acquire_nest(&lock->dep_map, subclass, 0, NULL, _RET_IP_);
+-	ret = rt_mutex_lock_interruptible(&lock->lock, 0);
++	ret = rt_mutex_lock_interruptible(&lock->lock);
+ 	if (ret)
+ 		mutex_release(&lock->dep_map, 1, _RET_IP_);
+ 	return ret;
+@@ -149,7 +149,7 @@ int __lockfunc _mutex_lock_killable_nested(struct mutex *lock, int subclass)
+ 	int ret;
+ 
+ 	mutex_acquire(&lock->dep_map, subclass, 0, _RET_IP_);
+-	ret = rt_mutex_lock_killable(&lock->lock, 0);
++	ret = rt_mutex_lock_killable(&lock->lock);
+ 	if (ret)
+ 		mutex_release(&lock->dep_map, 1, _RET_IP_);
+ 	return ret;
+diff --git a/kernel/rtmutex-tester.c b/kernel/rtmutex-tester.c
+index 3d9f31c..9eb84bb 100644
+--- a/kernel/rtmutex-tester.c
++++ b/kernel/rtmutex-tester.c
+@@ -14,7 +14,7 @@
+ #include <linux/timer.h>
+ #include <linux/freezer.h>
+ 
+-#include "rtmutex.h"
++#include "rtmutex_common.h"
+ 
+ #define MAX_RT_TEST_THREADS	8
+ #define MAX_RT_TEST_MUTEXES	8
+@@ -105,7 +105,7 @@ static int handle_op(struct test_thread_data *td, int lockwakeup)
+ 
+ 		td->mutexes[id] = 1;
+ 		td->event = atomic_add_return(1, &rttest_event);
+-		ret = rt_mutex_lock_interruptible(&mutexes[id], 0);
++		ret = rt_mutex_lock_interruptible(&mutexes[id]);
+ 		td->event = atomic_add_return(1, &rttest_event);
+ 		td->mutexes[id] = ret ? 0 : 4;
+ 		return ret ? -EINTR : 0;
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index 6405f7b..799efec 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -1548,16 +1548,15 @@ rt_mutex_slowunlock(struct rt_mutex *lock)
+  */
+ static inline int
+ rt_mutex_fastlock(struct rt_mutex *lock, int state,
+-		  int detect_deadlock,
+ 		  int (*slowfn)(struct rt_mutex *lock, int state,
+ 				struct hrtimer_sleeper *timeout,
+ 				int detect_deadlock))
+ {
+-	if (!detect_deadlock && likely(rt_mutex_cmpxchg(lock, NULL, current))) {
++	if (likely(rt_mutex_cmpxchg(lock, NULL, current))) {
+ 		rt_mutex_deadlock_account_lock(lock, current);
+ 		return 0;
+ 	} else
+-		return slowfn(lock, state, NULL, detect_deadlock);
++		return slowfn(lock, state, NULL, 0);
+ }
+ 
+ static inline int
+@@ -1604,7 +1603,7 @@ void __sched rt_mutex_lock(struct rt_mutex *lock)
+ {
+ 	might_sleep();
+ 
+-	rt_mutex_fastlock(lock, TASK_UNINTERRUPTIBLE, 0, rt_mutex_slowlock);
++	rt_mutex_fastlock(lock, TASK_UNINTERRUPTIBLE, rt_mutex_slowlock);
+ }
+ EXPORT_SYMBOL_GPL(rt_mutex_lock);
+ 
+@@ -1612,41 +1611,46 @@ EXPORT_SYMBOL_GPL(rt_mutex_lock);
+  * rt_mutex_lock_interruptible - lock a rt_mutex interruptible
+  *
+  * @lock:		the rt_mutex to be locked
+- * @detect_deadlock:	deadlock detection on/off
+  *
+  * Returns:
+  *  0		on success
+  * -EINTR	when interrupted by a signal
+- * -EDEADLK	when the lock would deadlock (when deadlock detection is on)
+  */
+-int __sched rt_mutex_lock_interruptible(struct rt_mutex *lock,
+-						 int detect_deadlock)
++int __sched rt_mutex_lock_interruptible(struct rt_mutex *lock)
+ {
+ 	might_sleep();
+ 
+-	return rt_mutex_fastlock(lock, TASK_INTERRUPTIBLE,
+-				 detect_deadlock, rt_mutex_slowlock);
++	return rt_mutex_fastlock(lock, TASK_INTERRUPTIBLE, rt_mutex_slowlock);
+ }
+ EXPORT_SYMBOL_GPL(rt_mutex_lock_interruptible);
+ 
++/*
++ * Futex variant with full deadlock detection.
++ */
++int rt_mutex_timed_futex_lock(struct rt_mutex *lock,
++			      struct hrtimer_sleeper *timeout)
++{
++	might_sleep();
++
++	return rt_mutex_timed_fastlock(lock, TASK_INTERRUPTIBLE, timeout, 1,
++				       rt_mutex_slowlock);
++}
++
+ /**
+  * rt_mutex_lock_killable - lock a rt_mutex killable
+  *
+  * @lock:		the rt_mutex to be locked
+- * @detect_deadlock:	deadlock detection on/off
+  *
+  * Returns:
+  *  0		on success
+  * -EINTR	when interrupted by a signal
+  * -EDEADLK	when the lock would deadlock (when deadlock detection is on)
+  */
+-int __sched rt_mutex_lock_killable(struct rt_mutex *lock,
+-				   int detect_deadlock)
++int __sched rt_mutex_lock_killable(struct rt_mutex *lock)
+ {
+ 	might_sleep();
+ 
+-	return rt_mutex_fastlock(lock, TASK_KILLABLE,
+-				 detect_deadlock, rt_mutex_slowlock);
++	return rt_mutex_fastlock(lock, TASK_KILLABLE, rt_mutex_slowlock);
+ }
+ EXPORT_SYMBOL_GPL(rt_mutex_lock_killable);
+ 
+@@ -1657,22 +1661,19 @@ EXPORT_SYMBOL_GPL(rt_mutex_lock_killable);
+  *
+  * @lock:		the rt_mutex to be locked
+  * @timeout:		timeout structure or NULL (no timeout)
+- * @detect_deadlock:	deadlock detection on/off
+  *
+  * Returns:
+  *  0		on success
+  * -EINTR	when interrupted by a signal
+  * -ETIMEDOUT	when the timeout expired
+- * -EDEADLK	when the lock would deadlock (when deadlock detection is on)
+  */
+ int
+-rt_mutex_timed_lock(struct rt_mutex *lock, struct hrtimer_sleeper *timeout,
+-		    int detect_deadlock)
++rt_mutex_timed_lock(struct rt_mutex *lock, struct hrtimer_sleeper *timeout)
+ {
+ 	might_sleep();
+ 
+-	return rt_mutex_timed_fastlock(lock, TASK_INTERRUPTIBLE, timeout,
+-				       detect_deadlock, rt_mutex_slowlock);
++	return rt_mutex_timed_fastlock(lock, TASK_INTERRUPTIBLE, timeout, 0,
++				       rt_mutex_slowlock);
+ }
+ EXPORT_SYMBOL_GPL(rt_mutex_timed_lock);
+ 
+@@ -1776,7 +1777,6 @@ void rt_mutex_proxy_unlock(struct rt_mutex *lock,
+  * @lock:		the rt_mutex to take
+  * @waiter:		the pre-initialized rt_mutex_waiter
+  * @task:		the task to prepare
+- * @detect_deadlock:	perform deadlock detection (1) or not (0)
+  *
+  * Returns:
+  *  0 - task blocked on lock
+@@ -1787,7 +1787,7 @@ void rt_mutex_proxy_unlock(struct rt_mutex *lock,
+  */
+ int rt_mutex_start_proxy_lock(struct rt_mutex *lock,
+ 			      struct rt_mutex_waiter *waiter,
+-			      struct task_struct *task, int detect_deadlock)
++			      struct task_struct *task)
+ {
+ 	int ret;
+ 
+@@ -1874,22 +1874,20 @@ struct task_struct *rt_mutex_next_owner(struct rt_mutex *lock)
+  * rt_mutex_finish_proxy_lock() - Complete lock acquisition
+  * @lock:		the rt_mutex we were woken on
+  * @to:			the timeout, null if none. hrtimer should already have
+- * 			been started.
++ *			been started.
+  * @waiter:		the pre-initialized rt_mutex_waiter
+- * @detect_deadlock:	perform deadlock detection (1) or not (0)
+  *
+  * Complete the lock acquisition started our behalf by another thread.
+  *
+  * Returns:
+  *  0 - success
+- * <0 - error, one of -EINTR, -ETIMEDOUT, or -EDEADLK
++ * <0 - error, one of -EINTR, -ETIMEDOUT
+  *
+  * Special API call for PI-futex requeue support
+  */
+ int rt_mutex_finish_proxy_lock(struct rt_mutex *lock,
+ 			       struct hrtimer_sleeper *to,
+-			       struct rt_mutex_waiter *waiter,
+-			       int detect_deadlock)
++			       struct rt_mutex_waiter *waiter)
+ {
+ 	int ret;
+ 
+diff --git a/kernel/rtmutex_common.h b/kernel/rtmutex_common.h
+index 6ec3dc1..efde341 100644
+--- a/kernel/rtmutex_common.h
++++ b/kernel/rtmutex_common.h
+@@ -114,12 +114,11 @@ extern void rt_mutex_proxy_unlock(struct rt_mutex *lock,
+ 				  struct task_struct *proxy_owner);
+ extern int rt_mutex_start_proxy_lock(struct rt_mutex *lock,
+ 				     struct rt_mutex_waiter *waiter,
+-				     struct task_struct *task,
+-				     int detect_deadlock);
++				     struct task_struct *task);
+ extern int rt_mutex_finish_proxy_lock(struct rt_mutex *lock,
+ 				      struct hrtimer_sleeper *to,
+-				      struct rt_mutex_waiter *waiter,
+-				      int detect_deadlock);
++				      struct rt_mutex_waiter *waiter);
++extern int rt_mutex_timed_futex_lock(struct rt_mutex *l, struct hrtimer_sleeper *to);
+ 
+ #ifdef CONFIG_DEBUG_RT_MUTEXES
+ # include "rtmutex-debug.h"

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0355-rtmutex-Cleanup-deadlock-detector-debug-logic.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0355-rtmutex-Cleanup-deadlock-detector-debug-logic.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0355-rtmutex-Cleanup-deadlock-detector-debug-logic.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0355-rtmutex-Cleanup-deadlock-detector-debug-logic.patch)
@@ -0,0 +1,335 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Thu, 22 May 2014 03:25:47 +0000
+Subject: [PATCH 355/371] rtmutex: Cleanup deadlock detector debug logic
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=70ac96ae9c5ade7edfe2e9efc5bc65d1d13f4480
+
+upstream commit: 8930ed80f970a90a795239e7415c9b0e6f964649
+
+The conditions under which deadlock detection is conducted are unclear
+and undocumented.
+
+Add constants instead of using 0/1 and provide a selection function
+which hides the additional debug dependency from the calling code.
+
+Add comments where needed.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: Peter Zijlstra <peterz at infradead.org>
+Reviewed-by: Steven Rostedt <rostedt at goodmis.org>
+Cc: Lai Jiangshan <laijs at cn.fujitsu.com>
+Link: http://lkml.kernel.org/r/20140522031949.947264874@linutronix.de
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+
+Conflicts:
+	kernel/rtmutex.c
+---
+ kernel/rtmutex-debug.c  |  5 ++--
+ kernel/rtmutex-debug.h  |  7 +++--
+ kernel/rtmutex.c        | 77 ++++++++++++++++++++++++++++++++++---------------
+ kernel/rtmutex.h        |  7 ++++-
+ kernel/rtmutex_common.h | 15 ++++++++++
+ 5 files changed, 82 insertions(+), 29 deletions(-)
+
+diff --git a/kernel/rtmutex-debug.c b/kernel/rtmutex-debug.c
+index 8eafd1b..5726637 100644
+--- a/kernel/rtmutex-debug.c
++++ b/kernel/rtmutex-debug.c
+@@ -65,12 +65,13 @@ void rt_mutex_debug_task_free(struct task_struct *task)
+  * the deadlock. We print when we return. act_waiter can be NULL in
+  * case of a remove waiter operation.
+  */
+-void debug_rt_mutex_deadlock(int detect, struct rt_mutex_waiter *act_waiter,
++void debug_rt_mutex_deadlock(enum rtmutex_chainwalk chwalk,
++			     struct rt_mutex_waiter *act_waiter,
+ 			     struct rt_mutex *lock)
+ {
+ 	struct task_struct *task;
+ 
+-	if (!debug_locks || detect || !act_waiter)
++	if (!debug_locks || chwalk == RT_MUTEX_FULL_CHAINWALK || !act_waiter)
+ 		return;
+ 
+ 	task = rt_mutex_owner(act_waiter->lock);
+diff --git a/kernel/rtmutex-debug.h b/kernel/rtmutex-debug.h
+index ab29b6a..d0519c3 100644
+--- a/kernel/rtmutex-debug.h
++++ b/kernel/rtmutex-debug.h
+@@ -20,14 +20,15 @@ extern void debug_rt_mutex_unlock(struct rt_mutex *lock);
+ extern void debug_rt_mutex_proxy_lock(struct rt_mutex *lock,
+ 				      struct task_struct *powner);
+ extern void debug_rt_mutex_proxy_unlock(struct rt_mutex *lock);
+-extern void debug_rt_mutex_deadlock(int detect, struct rt_mutex_waiter *waiter,
++extern void debug_rt_mutex_deadlock(enum rtmutex_chainwalk chwalk,
++				    struct rt_mutex_waiter *waiter,
+ 				    struct rt_mutex *lock);
+ extern void debug_rt_mutex_print_deadlock(struct rt_mutex_waiter *waiter);
+ # define debug_rt_mutex_reset_waiter(w)			\
+ 	do { (w)->deadlock_lock = NULL; } while (0)
+ 
+-static inline int debug_rt_mutex_detect_deadlock(struct rt_mutex_waiter *waiter,
+-						 int detect)
++static inline bool debug_rt_mutex_detect_deadlock(struct rt_mutex_waiter *waiter,
++						  enum rtmutex_chainwalk walk)
+ {
+ 	return (waiter != NULL);
+ }
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index 799efec..5b100b3 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -252,6 +252,32 @@ static void rt_mutex_wake_waiter(struct rt_mutex_waiter *waiter)
+ }
+ 
+ /*
++ * Deadlock detection is conditional:
++ *
++ * If CONFIG_DEBUG_RT_MUTEXES=n, deadlock detection is only conducted
++ * if the detect argument is == RT_MUTEX_FULL_CHAINWALK.
++ *
++ * If CONFIG_DEBUG_RT_MUTEXES=y, deadlock detection is always
++ * conducted independent of the detect argument.
++ *
++ * If the waiter argument is NULL this indicates the deboost path and
++ * deadlock detection is disabled independent of the detect argument
++ * and the config settings.
++ */
++static bool rt_mutex_cond_detect_deadlock(struct rt_mutex_waiter *waiter,
++					  enum rtmutex_chainwalk chwalk)
++{
++	/*
++	 * This is just a wrapper function for the following call,
++	 * because debug_rt_mutex_detect_deadlock() smells like a magic
++	 * debug feature and I wanted to keep the cond function in the
++	 * main source file along with the comments instead of having
++	 * two of the same in the headers.
++	 */
++	return debug_rt_mutex_detect_deadlock(waiter, chwalk);
++}
++
++/*
+  * Max number of times we'll walk the boosting chain:
+  */
+ int max_lock_depth = 1024;
+@@ -325,7 +351,7 @@ static inline struct rt_mutex *task_blocked_on_lock(struct task_struct *p)
+  *	  goto again;
+  */
+ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+-				      int deadlock_detect,
++				      enum rtmutex_chainwalk chwalk,
+ 				      struct rt_mutex *orig_lock,
+ 				      struct rt_mutex *next_lock,
+ 				      struct rt_mutex_waiter *orig_waiter,
+@@ -333,12 +359,12 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ {
+ 	struct rt_mutex_waiter *waiter, *top_waiter = orig_waiter;
+ 	struct rt_mutex_waiter *prerequeue_top_waiter;
+-	int detect_deadlock, ret = 0, depth = 0;
++	int ret = 0, depth = 0;
+ 	struct rt_mutex *lock;
++	bool detect_deadlock;
+ 	unsigned long flags;
+ 
+-	detect_deadlock = debug_rt_mutex_detect_deadlock(orig_waiter,
+-							 deadlock_detect);
++	detect_deadlock = rt_mutex_cond_detect_deadlock(orig_waiter, chwalk);
+ 
+ 	/*
+ 	 * The (de)boosting is a step by step approach with a lot of
+@@ -464,7 +490,7 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 	 * walk, we detected a deadlock.
+ 	 */
+ 	if (lock == orig_lock || rt_mutex_owner(lock) == top_task) {
+-		debug_rt_mutex_deadlock(deadlock_detect, orig_waiter, lock);
++		debug_rt_mutex_deadlock(chwalk, orig_waiter, lock);
+ 		raw_spin_unlock(&lock->wait_lock);
+ 		ret = -EDEADLK;
+ 		goto out_unlock_pi;
+@@ -760,7 +786,7 @@ try_to_take_rt_mutex(struct rt_mutex *lock, struct task_struct *task,
+ static int task_blocks_on_rt_mutex(struct rt_mutex *lock,
+ 				   struct rt_mutex_waiter *waiter,
+ 				   struct task_struct *task,
+-				   int detect_deadlock)
++				   enum rtmutex_chainwalk chwalk)
+ {
+ 	struct task_struct *owner = rt_mutex_owner(lock);
+ 	struct rt_mutex_waiter *top_waiter = waiter;
+@@ -824,7 +850,7 @@ static int task_blocks_on_rt_mutex(struct rt_mutex *lock,
+ 		__rt_mutex_adjust_prio(owner);
+ 		if (rt_mutex_real_waiter(owner->pi_blocked_on))
+ 			chain_walk = 1;
+-	} else if (debug_rt_mutex_detect_deadlock(waiter, detect_deadlock)) {
++	} else if (rt_mutex_cond_detect_deadlock(waiter, chwalk)) {
+ 		chain_walk = 1;
+ 	}
+ 
+@@ -849,7 +875,7 @@ static int task_blocks_on_rt_mutex(struct rt_mutex *lock,
+ 
+ 	raw_spin_unlock(&lock->wait_lock);
+ 
+-	res = rt_mutex_adjust_prio_chain(owner, detect_deadlock, lock,
++	res = rt_mutex_adjust_prio_chain(owner, chwalk, lock,
+ 					 next_lock, waiter, task);
+ 
+ 	raw_spin_lock(&lock->wait_lock);
+@@ -957,7 +983,8 @@ static void remove_waiter(struct rt_mutex *lock,
+ 
+ 	raw_spin_unlock(&lock->wait_lock);
+ 
+-	rt_mutex_adjust_prio_chain(owner, 0, lock, next_lock, NULL, current);
++	rt_mutex_adjust_prio_chain(owner, RT_MUTEX_MIN_CHAINWALK, lock,
++				   next_lock, NULL, current);
+ 
+ 	raw_spin_lock(&lock->wait_lock);
+ }
+@@ -986,7 +1013,8 @@ void rt_mutex_adjust_pi(struct task_struct *task)
+ 	get_task_struct(task);
+ 	next_lock = waiter->lock;
+ 	raw_spin_unlock_irqrestore(&task->pi_lock, flags);
+-	rt_mutex_adjust_prio_chain(task, 0, NULL, next_lock, NULL, task);
++	rt_mutex_adjust_prio_chain(task, RT_MUTEX_MIN_CHAINWALK, NULL,
++				   next_lock, NULL, task);
+ }
+ 
+ #ifdef CONFIG_PREEMPT_RT_FULL
+@@ -1387,7 +1415,7 @@ static void rt_mutex_handle_deadlock(int res, int detect_deadlock,
+ static int __sched
+ rt_mutex_slowlock(struct rt_mutex *lock, int state,
+ 		  struct hrtimer_sleeper *timeout,
+-		  int detect_deadlock)
++		  enum rtmutex_chainwalk chwalk)
+ {
+ 	struct rt_mutex_waiter waiter;
+ 	int ret = 0;
+@@ -1412,7 +1440,7 @@ rt_mutex_slowlock(struct rt_mutex *lock, int state,
+ 			timeout->task = NULL;
+ 	}
+ 
+-	ret = task_blocks_on_rt_mutex(lock, &waiter, current, detect_deadlock);
++	ret = task_blocks_on_rt_mutex(lock, &waiter, current, chwalk);
+ 
+ 	if (likely(!ret))
+ 		ret = __rt_mutex_slowlock(lock, state, timeout, &waiter);
+@@ -1421,7 +1449,7 @@ rt_mutex_slowlock(struct rt_mutex *lock, int state,
+ 
+ 	if (unlikely(ret)) {
+ 		remove_waiter(lock, &waiter);
+-		rt_mutex_handle_deadlock(ret, detect_deadlock, &waiter);
++		rt_mutex_handle_deadlock(ret, chwalk, &waiter);
+ 	}
+ 
+ 	/*
+@@ -1550,27 +1578,29 @@ static inline int
+ rt_mutex_fastlock(struct rt_mutex *lock, int state,
+ 		  int (*slowfn)(struct rt_mutex *lock, int state,
+ 				struct hrtimer_sleeper *timeout,
+-				int detect_deadlock))
++				enum rtmutex_chainwalk chwalk))
+ {
+ 	if (likely(rt_mutex_cmpxchg(lock, NULL, current))) {
+ 		rt_mutex_deadlock_account_lock(lock, current);
+ 		return 0;
+ 	} else
+-		return slowfn(lock, state, NULL, 0);
++		return slowfn(lock, state, NULL, RT_MUTEX_MIN_CHAINWALK);
+ }
+ 
+ static inline int
+ rt_mutex_timed_fastlock(struct rt_mutex *lock, int state,
+-			struct hrtimer_sleeper *timeout, int detect_deadlock,
++			struct hrtimer_sleeper *timeout,
++			enum rtmutex_chainwalk chwalk,
+ 			int (*slowfn)(struct rt_mutex *lock, int state,
+ 				      struct hrtimer_sleeper *timeout,
+ 				      int detect_deadlock))
+ {
+-	if (!detect_deadlock && likely(rt_mutex_cmpxchg(lock, NULL, current))) {
++	if (chwalk == RT_MUTEX_MIN_CHAINWALK &&
++	    likely(rt_mutex_cmpxchg(lock, NULL, current))) {
+ 		rt_mutex_deadlock_account_lock(lock, current);
+ 		return 0;
+ 	} else
+-		return slowfn(lock, state, timeout, detect_deadlock);
++		return slowfn(lock, state, timeout, chwalk);
+ }
+ 
+ static inline int
+@@ -1632,8 +1662,8 @@ int rt_mutex_timed_futex_lock(struct rt_mutex *lock,
+ {
+ 	might_sleep();
+ 
+-	return rt_mutex_timed_fastlock(lock, TASK_INTERRUPTIBLE, timeout, 1,
+-				       rt_mutex_slowlock);
++	return rt_mutex_timed_fastlock(lock, TASK_INTERRUPTIBLE, timeout,
++				       RT_MUTEX_FULL_CHAINWALK, rt_mutex_slowlock);
+ }
+ 
+ /**
+@@ -1672,8 +1702,8 @@ rt_mutex_timed_lock(struct rt_mutex *lock, struct hrtimer_sleeper *timeout)
+ {
+ 	might_sleep();
+ 
+-	return rt_mutex_timed_fastlock(lock, TASK_INTERRUPTIBLE, timeout, 0,
+-				       rt_mutex_slowlock);
++	return rt_mutex_timed_fastlock(lock, TASK_INTERRUPTIBLE, timeout,
++				       RT_MUTEX_MIN_CHAINWALK, rt_mutex_slowlock);
+ }
+ EXPORT_SYMBOL_GPL(rt_mutex_timed_lock);
+ 
+@@ -1828,7 +1858,8 @@ int rt_mutex_start_proxy_lock(struct rt_mutex *lock,
+ #endif
+ 
+ 	/* We enforce deadlock detection for futexes */
+-	ret = task_blocks_on_rt_mutex(lock, waiter, task, 1);
++	ret = task_blocks_on_rt_mutex(lock, waiter, task,
++				      RT_MUTEX_FULL_CHAINWALK);
+ 
+ 	if (ret && !rt_mutex_owner(lock)) {
+ 		/*
+diff --git a/kernel/rtmutex.h b/kernel/rtmutex.h
+index f6a1f3c..c406058 100644
+--- a/kernel/rtmutex.h
++++ b/kernel/rtmutex.h
+@@ -22,10 +22,15 @@
+ #define debug_rt_mutex_init(m, n)			do { } while (0)
+ #define debug_rt_mutex_deadlock(d, a ,l)		do { } while (0)
+ #define debug_rt_mutex_print_deadlock(w)		do { } while (0)
+-#define debug_rt_mutex_detect_deadlock(w,d)		(d)
+ #define debug_rt_mutex_reset_waiter(w)			do { } while (0)
+ 
+ static inline void rt_mutex_print_deadlock(struct rt_mutex_waiter *w)
+ {
+ 	WARN(1, "rtmutex deadlock detected\n");
+ }
++
++static inline bool debug_rt_mutex_detect_deadlock(struct rt_mutex_waiter *w,
++						  enum rtmutex_chainwalk walk)
++{
++	return walk == RT_MUTEX_FULL_CHAINWALK;
++}
+diff --git a/kernel/rtmutex_common.h b/kernel/rtmutex_common.h
+index efde341..213c7bf 100644
+--- a/kernel/rtmutex_common.h
++++ b/kernel/rtmutex_common.h
+@@ -102,6 +102,21 @@ static inline struct task_struct *rt_mutex_owner(struct rt_mutex *lock)
+ }
+ 
+ /*
++ * Constants for rt mutex functions which have a selectable deadlock
++ * detection.
++ *
++ * RT_MUTEX_MIN_CHAINWALK:	Stops the lock chain walk when there are
++ *				no further PI adjustments to be made.
++ *
++ * RT_MUTEX_FULL_CHAINWALK:	Invoke deadlock detection with a full
++ *				walk of the lock chain.
++ */
++enum rtmutex_chainwalk {
++	RT_MUTEX_MIN_CHAINWALK,
++	RT_MUTEX_FULL_CHAINWALK,
++};
++
++/*
+  * PI-futex support (proxy locking functions, etc.):
+  */
+ #define PI_WAKEUP_INPROGRESS	((struct rt_mutex_waiter *) 1)

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0356-rtmutex-Avoid-pointless-requeueing-in-the-deadlock-d.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0356-rtmutex-Avoid-pointless-requeueing-in-the-deadlock-d.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0356-rtmutex-Avoid-pointless-requeueing-in-the-deadlock-d.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0356-rtmutex-Avoid-pointless-requeueing-in-the-deadlock-d.patch)
@@ -0,0 +1,137 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Thu, 22 May 2014 03:25:57 +0000
+Subject: [PATCH 356/371] rtmutex: Avoid pointless requeueing in the deadlock
+ detection chain walk
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=9dc8944c0d56d8e3e14274abd5b079ca1c532d7d
+
+upstream commit: 67792e2cabadbadd1a93f6790fa7bcbd47eca7c3
+
+In case the dead lock detector is enabled we follow the lock chain to
+the end in rt_mutex_adjust_prio_chain, even if we could stop earlier
+due to the priority/waiter constellation.
+
+But once we are no longer the top priority waiter in a certain step
+or the task holding the lock has already the same priority then there
+is no point in dequeing and enqueing along the lock chain as there is
+no change at all.
+
+So stop the queueing at this point.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: Peter Zijlstra <peterz at infradead.org>
+Reviewed-by: Steven Rostedt <rostedt at goodmis.org>
+Cc: Lai Jiangshan <laijs at cn.fujitsu.com>
+Link: http://lkml.kernel.org/r/20140522031950.280830190@linutronix.de
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/rtmutex.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++------
+ 1 file changed, 70 insertions(+), 7 deletions(-)
+
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index 5b100b3..a94f3a3 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -363,6 +363,7 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 	struct rt_mutex *lock;
+ 	bool detect_deadlock;
+ 	unsigned long flags;
++	bool requeue = true;
+ 
+ 	detect_deadlock = rt_mutex_cond_detect_deadlock(orig_waiter, chwalk);
+ 
+@@ -452,18 +453,31 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 			goto out_unlock_pi;
+ 		/*
+ 		 * If deadlock detection is off, we stop here if we
+-		 * are not the top pi waiter of the task.
++		 * are not the top pi waiter of the task. If deadlock
++		 * detection is enabled we continue, but stop the
++		 * requeueing in the chain walk.
+ 		 */
+-		if (!detect_deadlock && top_waiter != task_top_pi_waiter(task))
+-			goto out_unlock_pi;
++		if (top_waiter != task_top_pi_waiter(task)) {
++			if (!detect_deadlock)
++				goto out_unlock_pi;
++			else
++				requeue = false;
++		}
+ 	}
+ 
+ 	/*
+-	 * When deadlock detection is off then we check, if further
+-	 * priority adjustment is necessary.
++	 * If the waiter priority is the same as the task priority
++	 * then there is no further priority adjustment necessary.  If
++	 * deadlock detection is off, we stop the chain walk. If its
++	 * enabled we continue, but stop the requeueing in the chain
++	 * walk.
+ 	 */
+-	if (!detect_deadlock && waiter->list_entry.prio == task->prio)
+-		goto out_unlock_pi;
++	if (waiter->list_entry.prio == task->prio) {
++		if (!detect_deadlock)
++			goto out_unlock_pi;
++		else
++			requeue = false;
++	}
+ 
+ 	/*
+ 	 * [4] Get the next lock
+@@ -497,6 +511,55 @@ static int rt_mutex_adjust_prio_chain(struct task_struct *task,
+ 	}
+ 
+ 	/*
++	 * If we just follow the lock chain for deadlock detection, no
++	 * need to do all the requeue operations. To avoid a truckload
++	 * of conditionals around the various places below, just do the
++	 * minimum chain walk checks.
++	 */
++	if (!requeue) {
++		/*
++		 * No requeue[7] here. Just release @task [8]
++		 */
++		raw_spin_unlock_irqrestore(&task->pi_lock, flags);
++		put_task_struct(task);
++
++		/*
++		 * [9] check_exit_conditions_3 protected by lock->wait_lock.
++		 * If there is no owner of the lock, end of chain.
++		 */
++		if (!rt_mutex_owner(lock)) {
++			raw_spin_unlock(&lock->wait_lock);
++			return 0;
++		}
++
++		/* [10] Grab the next task, i.e. owner of @lock */
++		task = rt_mutex_owner(lock);
++		get_task_struct(task);
++		raw_spin_lock_irqsave(&task->pi_lock, flags);
++
++		/*
++		 * No requeue [11] here. We just do deadlock detection.
++		 *
++		 * [12] Store whether owner is blocked
++		 * itself. Decision is made after dropping the locks
++		 */
++		next_lock = task_blocked_on_lock(task);
++		/*
++		 * Get the top waiter for the next iteration
++		 */
++		top_waiter = rt_mutex_top_waiter(lock);
++
++		/* [13] Drop locks */
++		raw_spin_unlock_irqrestore(&task->pi_lock, flags);
++		raw_spin_unlock(&lock->wait_lock);
++
++		/* If owner is not blocked, end of chain. */
++		if (!next_lock)
++			goto out_put_task;
++		goto again;
++	}
++
++	/*
+ 	 * Store the current top waiter before doing the requeue
+ 	 * operation on @lock. We need it for the boost/deboost
+ 	 * decision below.

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0357-futex-Make-unlock_pi-more-robust.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0357-futex-Make-unlock_pi-more-robust.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0357-futex-Make-unlock_pi-more-robust.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0357-futex-Make-unlock_pi-more-robust.patch)
@@ -0,0 +1,163 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 11 Jun 2014 20:45:38 +0000
+Subject: [PATCH 357/371] futex: Make unlock_pi more robust
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=dbb203fd39083fcdbb45115034a8f70895e01167
+
+upstream commit: ccf9e6a80d9e1b9df69c98e6b9745cf49869ee15
+
+The kernel tries to atomically unlock the futex without checking
+whether there is kernel state associated to the futex.
+
+So if user space manipulated the user space value, this will leave
+kernel internal state around associated to the owner task.
+
+For robustness sake, lookup first whether there are waiters on the
+futex. If there are waiters, wake the top priority waiter with all the
+proper sanity checks applied.
+
+If there are no waiters, do the atomic release. We do not have to
+preserve the waiters bit in this case, because a potentially incoming
+waiter is blocked on the hb->lock and will acquire the futex
+atomically. We neither have to preserve the owner died bit. The caller
+is the owner and it was supposed to cleanup the mess.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: Peter Zijlstra <peterz at infradead.org>
+Cc: Darren Hart <darren at dvhart.com>
+Cc: Davidlohr Bueso <davidlohr at hp.com>
+Cc: Kees Cook <kees at outflux.net>
+Cc: wad at chromium.org
+Link: http://lkml.kernel.org/r/20140611204237.016987332@linutronix.de
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/futex.c | 80 +++++++++++++++++++---------------------------------------
+ 1 file changed, 26 insertions(+), 54 deletions(-)
+
+diff --git a/kernel/futex.c b/kernel/futex.c
+index 8ed0948..71d414b 100644
+--- a/kernel/futex.c
++++ b/kernel/futex.c
+@@ -1039,22 +1039,6 @@ static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_q *this)
+ 	return 0;
+ }
+ 
+-static int unlock_futex_pi(u32 __user *uaddr, u32 uval)
+-{
+-	u32 uninitialized_var(oldval);
+-
+-	/*
+-	 * There is no waiter, so we unlock the futex. The owner died
+-	 * bit has not to be preserved here. We are the owner:
+-	 */
+-	if (cmpxchg_futex_value_locked(&oldval, uaddr, uval, 0))
+-		return -EFAULT;
+-	if (oldval != uval)
+-		return -EAGAIN;
+-
+-	return 0;
+-}
+-
+ /*
+  * Express the locking dependencies for lockdep:
+  */
+@@ -2242,11 +2226,10 @@ uaddr_faulted:
+  */
+ static int futex_unlock_pi(u32 __user *uaddr, unsigned int flags)
+ {
+-	struct futex_hash_bucket *hb;
+-	struct futex_q *this, *next;
+-	struct plist_head *head;
++	u32 uninitialized_var(curval), uval, vpid = task_pid_vnr(current);
+ 	union futex_key key = FUTEX_KEY_INIT;
+-	u32 uval, vpid = task_pid_vnr(current);
++	struct futex_hash_bucket *hb;
++	struct futex_q *match;
+ 	int ret;
+ 
+ retry:
+@@ -2259,61 +2242,50 @@ retry:
+ 		return -EPERM;
+ 
+ 	ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &key, VERIFY_WRITE);
+-	if (unlikely(ret != 0))
+-		goto out;
++	if (ret)
++		return ret;
+ 
+ 	hb = hash_futex(&key);
+ 	spin_lock(&hb->lock);
+ 
+ 	/*
+-	 * To avoid races, try to do the TID -> 0 atomic transition
+-	 * again. If it succeeds then we can return without waking
+-	 * anyone else up. We only try this if neither the waiters nor
+-	 * the owner died bit are set.
++	 * Check waiters first. We do not trust user space values at
++	 * all and we at least want to know if user space fiddled
++	 * with the futex value instead of blindly unlocking.
+ 	 */
+-	if (!(uval & ~FUTEX_TID_MASK) &&
+-	    cmpxchg_futex_value_locked(&uval, uaddr, vpid, 0))
+-		goto pi_faulted;
+-	/*
+-	 * Rare case: we managed to release the lock atomically,
+-	 * no need to wake anyone else up:
+-	 */
+-	if (unlikely(uval == vpid))
+-		goto out_unlock;
+-
+-	/*
+-	 * Ok, other tasks may need to be woken up - check waiters
+-	 * and do the wakeup if necessary:
+-	 */
+-	head = &hb->chain;
+-
+-	plist_for_each_entry_safe(this, next, head, list) {
+-		if (!match_futex (&this->key, &key))
+-			continue;
+-		ret = wake_futex_pi(uaddr, uval, this);
++	match = futex_top_waiter(hb, &key);
++	if (match) {
++		ret = wake_futex_pi(uaddr, uval, match);
+ 		/*
+-		 * The atomic access to the futex value
+-		 * generated a pagefault, so retry the
+-		 * user-access and the wakeup:
++		 * The atomic access to the futex value generated a
++		 * pagefault, so retry the user-access and the wakeup:
+ 		 */
+ 		if (ret == -EFAULT)
+ 			goto pi_faulted;
+ 		goto out_unlock;
+ 	}
++
+ 	/*
+-	 * No waiters - kernel unlocks the futex:
++	 * We have no kernel internal state, i.e. no waiters in the
++	 * kernel. Waiters which are about to queue themselves are stuck
++	 * on hb->lock. So we can safely ignore them. We do neither
++	 * preserve the WAITERS bit not the OWNER_DIED one. We are the
++	 * owner.
+ 	 */
+-	ret = unlock_futex_pi(uaddr, uval);
+-	if (ret == -EFAULT)
++	if (cmpxchg_futex_value_locked(&curval, uaddr, uval, 0))
+ 		goto pi_faulted;
+ 
++	/*
++	 * If uval has changed, let user space handle it.
++	 */
++	ret = (curval == uval) ? 0 : -EAGAIN;
++
+ out_unlock:
+ 	spin_unlock(&hb->lock);
+ 	put_futex_key(&key);
+-
+-out:
+ 	return ret;
+ 
++
+ pi_faulted:
+ 	spin_unlock(&hb->lock);
+ 	put_futex_key(&key);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0358-futex-Use-futex_top_waiter-in-lookup_pi_state.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0358-futex-Use-futex_top_waiter-in-lookup_pi_state.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0358-futex-Use-futex_top_waiter-in-lookup_pi_state.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0358-futex-Use-futex_top_waiter-in-lookup_pi_state.patch)
@@ -0,0 +1,178 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 11 Jun 2014 20:45:39 +0000
+Subject: [PATCH 358/371] futex: Use futex_top_waiter() in lookup_pi_state()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a8ea6d65076af079d3dfae7768b0042b85245afd
+
+upstream commit: bd1dbcc67cd2c1181e2c01daac51eabf1b964dd8
+
+No point in open coding the same function again.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Reviewed-by: Darren Hart <darren at dvhart.com>
+Cc: Peter Zijlstra <peterz at infradead.org>
+Cc: Davidlohr Bueso <davidlohr at hp.com>
+Cc: Kees Cook <kees at outflux.net>
+Cc: wad at chromium.org
+Link: http://lkml.kernel.org/r/20140611204237.092947239@linutronix.de
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/futex.c | 127 +++++++++++++++++++++++++++------------------------------
+ 1 file changed, 61 insertions(+), 66 deletions(-)
+
+diff --git a/kernel/futex.c b/kernel/futex.c
+index 71d414b..73b91f7 100644
+--- a/kernel/futex.c
++++ b/kernel/futex.c
+@@ -647,90 +647,85 @@ static int
+ lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
+ 		union futex_key *key, struct futex_pi_state **ps)
+ {
++	struct futex_q *match = futex_top_waiter(hb, key);
+ 	struct futex_pi_state *pi_state = NULL;
+-	struct futex_q *this, *next;
+-	struct plist_head *head;
+ 	struct task_struct *p;
+ 	pid_t pid = uval & FUTEX_TID_MASK;
+ 
+-	head = &hb->chain;
+-
+-	plist_for_each_entry_safe(this, next, head, list) {
+-		if (match_futex(&this->key, key)) {
+-			/*
+-			 * Sanity check the waiter before increasing
+-			 * the refcount and attaching to it.
+-			 */
+-			pi_state = this->pi_state;
+-			/*
+-			 * Userspace might have messed up non-PI and
+-			 * PI futexes [3]
+-			 */
+-			if (unlikely(!pi_state))
+-				return -EINVAL;
++	if (match) {
++		/*
++		 * Sanity check the waiter before increasing the
++		 * refcount and attaching to it.
++		 */
++		pi_state = match->pi_state;
++		/*
++		 * Userspace might have messed up non-PI and PI
++		 * futexes [3]
++		 */
++		if (unlikely(!pi_state))
++			return -EINVAL;
+ 
+-			WARN_ON(!atomic_read(&pi_state->refcount));
++		WARN_ON(!atomic_read(&pi_state->refcount));
+ 
++		/*
++		 * Handle the owner died case:
++		 */
++		if (uval & FUTEX_OWNER_DIED) {
+ 			/*
+-			 * Handle the owner died case:
++			 * exit_pi_state_list sets owner to NULL and
++			 * wakes the topmost waiter. The task which
++			 * acquires the pi_state->rt_mutex will fixup
++			 * owner.
+ 			 */
+-			if (uval & FUTEX_OWNER_DIED) {
++			if (!pi_state->owner) {
+ 				/*
+-				 * exit_pi_state_list sets owner to NULL and
+-				 * wakes the topmost waiter. The task which
+-				 * acquires the pi_state->rt_mutex will fixup
+-				 * owner.
++				 * No pi state owner, but the user
++				 * space TID is not 0. Inconsistent
++				 * state. [5]
+ 				 */
+-				if (!pi_state->owner) {
+-					/*
+-					 * No pi state owner, but the user
+-					 * space TID is not 0. Inconsistent
+-					 * state. [5]
+-					 */
+-					if (pid)
+-						return -EINVAL;
+-					/*
+-					 * Take a ref on the state and
+-					 * return. [4]
+-					 */
+-					goto out_state;
+-				}
+-
+-				/*
+-				 * If TID is 0, then either the dying owner
+-				 * has not yet executed exit_pi_state_list()
+-				 * or some waiter acquired the rtmutex in the
+-				 * pi state, but did not yet fixup the TID in
+-				 * user space.
+-				 *
+-				 * Take a ref on the state and return. [6]
+-				 */
+-				if (!pid)
+-					goto out_state;
+-			} else {
++				if (pid)
++					return -EINVAL;
+ 				/*
+-				 * If the owner died bit is not set,
+-				 * then the pi_state must have an
+-				 * owner. [7]
++				 * Take a ref on the state and
++				 * return. [4]
+ 				 */
+-				if (!pi_state->owner)
+-					return -EINVAL;
++				goto out_state;
+ 			}
+ 
+ 			/*
+-			 * Bail out if user space manipulated the
+-			 * futex value. If pi state exists then the
+-			 * owner TID must be the same as the user
+-			 * space TID. [9/10]
++			 * If TID is 0, then either the dying owner
++			 * has not yet executed exit_pi_state_list()
++			 * or some waiter acquired the rtmutex in the
++			 * pi state, but did not yet fixup the TID in
++			 * user space.
++			 *
++			 * Take a ref on the state and return. [6]
++			 */
++			if (!pid)
++				goto out_state;
++		} else {
++			/*
++			 * If the owner died bit is not set,
++			 * then the pi_state must have an
++			 * owner. [7]
+ 			 */
+-			if (pid != task_pid_vnr(pi_state->owner))
++			if (!pi_state->owner)
+ 				return -EINVAL;
+-
+-		out_state:
+-			atomic_inc(&pi_state->refcount);
+-			*ps = pi_state;
+-			return 0;
+ 		}
++
++		/*
++		 * Bail out if user space manipulated the
++		 * futex value. If pi state exists then the
++		 * owner TID must be the same as the user
++		 * space TID. [9/10]
++		 */
++		if (pid != task_pid_vnr(pi_state->owner))
++			return -EINVAL;
++
++	out_state:
++		atomic_inc(&pi_state->refcount);
++		*ps = pi_state;
++		return 0;
+ 	}
+ 
+ 	/*

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0359-futex-Split-out-the-waiter-check-from-lookup_pi_stat.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0359-futex-Split-out-the-waiter-check-from-lookup_pi_stat.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0359-futex-Split-out-the-waiter-check-from-lookup_pi_stat.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0359-futex-Split-out-the-waiter-check-from-lookup_pi_stat.patch)
@@ -0,0 +1,193 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 11 Jun 2014 20:45:39 +0000
+Subject: [PATCH 359/371] futex: Split out the waiter check from
+ lookup_pi_state()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=168489adf78f2062bac7e8af1e5edf2f9f2f4080
+
+upstream commit: e60cbc5ceaa518d630ab8f35a7d05cee1c752648
+
+We want to be a bit more clever in futex_lock_pi_atomic() and separate
+the possible states. Split out the waiter verification into a separate
+function. No functional change.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Reviewed-by: Darren Hart <darren at dvhart.com>
+Cc: Peter Zijlstra <peterz at infradead.org>
+Cc: Davidlohr Bueso <davidlohr at hp.com>
+Cc: Kees Cook <kees at outflux.net>
+Cc: wad at chromium.org
+Link: http://lkml.kernel.org/r/20140611204237.180458410@linutronix.de
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/futex.c | 138 +++++++++++++++++++++++++++++----------------------------
+ 1 file changed, 71 insertions(+), 67 deletions(-)
+
+diff --git a/kernel/futex.c b/kernel/futex.c
+index 73b91f7..58c66de 100644
+--- a/kernel/futex.c
++++ b/kernel/futex.c
+@@ -643,92 +643,96 @@ void exit_pi_state_list(struct task_struct *curr)
+  * [10] There is no transient state which leaves owner and user space
+  *	TID out of sync.
+  */
+-static int
+-lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
+-		union futex_key *key, struct futex_pi_state **ps)
++
++/*
++ * Validate that the existing waiter has a pi_state and sanity check
++ * the pi_state against the user space value. If correct, attach to
++ * it.
++ */
++static int attach_to_pi_state(u32 uval, struct futex_pi_state *pi_state,
++			      struct futex_pi_state **ps)
+ {
+-	struct futex_q *match = futex_top_waiter(hb, key);
+-	struct futex_pi_state *pi_state = NULL;
+-	struct task_struct *p;
+ 	pid_t pid = uval & FUTEX_TID_MASK;
+ 
+-	if (match) {
+-		/*
+-		 * Sanity check the waiter before increasing the
+-		 * refcount and attaching to it.
+-		 */
+-		pi_state = match->pi_state;
+-		/*
+-		 * Userspace might have messed up non-PI and PI
+-		 * futexes [3]
+-		 */
+-		if (unlikely(!pi_state))
+-			return -EINVAL;
++	/*
++	 * Userspace might have messed up non-PI and PI futexes [3]
++	 */
++	if (unlikely(!pi_state))
++		return -EINVAL;
+ 
+-		WARN_ON(!atomic_read(&pi_state->refcount));
++	WARN_ON(!atomic_read(&pi_state->refcount));
+ 
++	/*
++	 * Handle the owner died case:
++	 */
++	if (uval & FUTEX_OWNER_DIED) {
+ 		/*
+-		 * Handle the owner died case:
++		 * exit_pi_state_list sets owner to NULL and wakes the
++		 * topmost waiter. The task which acquires the
++		 * pi_state->rt_mutex will fixup owner.
+ 		 */
+-		if (uval & FUTEX_OWNER_DIED) {
+-			/*
+-			 * exit_pi_state_list sets owner to NULL and
+-			 * wakes the topmost waiter. The task which
+-			 * acquires the pi_state->rt_mutex will fixup
+-			 * owner.
+-			 */
+-			if (!pi_state->owner) {
+-				/*
+-				 * No pi state owner, but the user
+-				 * space TID is not 0. Inconsistent
+-				 * state. [5]
+-				 */
+-				if (pid)
+-					return -EINVAL;
+-				/*
+-				 * Take a ref on the state and
+-				 * return. [4]
+-				 */
+-				goto out_state;
+-			}
+-
++		if (!pi_state->owner) {
+ 			/*
+-			 * If TID is 0, then either the dying owner
+-			 * has not yet executed exit_pi_state_list()
+-			 * or some waiter acquired the rtmutex in the
+-			 * pi state, but did not yet fixup the TID in
+-			 * user space.
+-			 *
+-			 * Take a ref on the state and return. [6]
++			 * No pi state owner, but the user space TID
++			 * is not 0. Inconsistent state. [5]
+ 			 */
+-			if (!pid)
+-				goto out_state;
+-		} else {
++			if (pid)
++				return -EINVAL;
+ 			/*
+-			 * If the owner died bit is not set,
+-			 * then the pi_state must have an
+-			 * owner. [7]
++			 * Take a ref on the state and return success. [4]
+ 			 */
+-			if (!pi_state->owner)
+-				return -EINVAL;
++			goto out_state;
+ 		}
+ 
+ 		/*
+-		 * Bail out if user space manipulated the
+-		 * futex value. If pi state exists then the
+-		 * owner TID must be the same as the user
+-		 * space TID. [9/10]
++		 * If TID is 0, then either the dying owner has not
++		 * yet executed exit_pi_state_list() or some waiter
++		 * acquired the rtmutex in the pi state, but did not
++		 * yet fixup the TID in user space.
++		 *
++		 * Take a ref on the state and return success. [6]
++		 */
++		if (!pid)
++			goto out_state;
++	} else {
++		/*
++		 * If the owner died bit is not set, then the pi_state
++		 * must have an owner. [7]
+ 		 */
+-		if (pid != task_pid_vnr(pi_state->owner))
++		if (!pi_state->owner)
+ 			return -EINVAL;
+-
+-	out_state:
+-		atomic_inc(&pi_state->refcount);
+-		*ps = pi_state;
+-		return 0;
+ 	}
+ 
+ 	/*
++	 * Bail out if user space manipulated the futex value. If pi
++	 * state exists then the owner TID must be the same as the
++	 * user space TID. [9/10]
++	 */
++	if (pid != task_pid_vnr(pi_state->owner))
++		return -EINVAL;
++out_state:
++	atomic_inc(&pi_state->refcount);
++	*ps = pi_state;
++	return 0;
++}
++
++static int
++lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
++		union futex_key *key, struct futex_pi_state **ps)
++{
++	struct futex_q *match = futex_top_waiter(hb, key);
++	struct futex_pi_state *pi_state = NULL;
++	struct task_struct *p;
++	pid_t pid = uval & FUTEX_TID_MASK;
++
++	/*
++	 * If there is a waiter on that futex, validate it and
++	 * attach to the pi_state when the validation succeeds.
++	 */
++	if (match)
++		return attach_to_pi_state(uval, match->pi_state, ps);
++
++	/*
+ 	 * We are the first waiter - try to look up the real owner and attach
+ 	 * the new pi_state to it, but bail out when TID = 0 [1]
+ 	 */

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0360-futex-Split-out-the-first-waiter-attachment-from-loo.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0360-futex-Split-out-the-first-waiter-attachment-from-loo.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0360-futex-Split-out-the-first-waiter-attachment-from-loo.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0360-futex-Split-out-the-first-waiter-attachment-from-loo.patch)
@@ -0,0 +1,94 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 11 Jun 2014 20:45:40 +0000
+Subject: [PATCH 360/371] futex: Split out the first waiter attachment from
+ lookup_pi_state()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=ae4a56c0334110b6da764d7a89514a8b3acff1cc
+
+upstream commit: 04e1b2e52b17195c9a1daa5935c55a4c8716095c
+
+We want to be a bit more clever in futex_lock_pi_atomic() and separate
+the possible states. Split out the code which attaches the first
+waiter to the owner into a separate function. No functional change.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Reviewed-by: Darren Hart <darren at dvhart.com>
+Cc: Peter Zijlstra <peterz at infradead.org>
+Cc: Davidlohr Bueso <davidlohr at hp.com>
+Cc: Kees Cook <kees at outflux.net>
+Cc: wad at chromium.org
+Link: http://lkml.kernel.org/r/20140611204237.271300614@linutronix.de
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/futex.c | 42 ++++++++++++++++++++++++++++--------------
+ 1 file changed, 28 insertions(+), 14 deletions(-)
+
+diff --git a/kernel/futex.c b/kernel/futex.c
+index 58c66de..5015fbc 100644
+--- a/kernel/futex.c
++++ b/kernel/futex.c
+@@ -716,21 +716,16 @@ out_state:
+ 	return 0;
+ }
+ 
+-static int
+-lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
+-		union futex_key *key, struct futex_pi_state **ps)
++/*
++ * Lookup the task for the TID provided from user space and attach to
++ * it after doing proper sanity checks.
++ */
++static int attach_to_pi_owner(u32 uval, union futex_key *key,
++			      struct futex_pi_state **ps)
+ {
+-	struct futex_q *match = futex_top_waiter(hb, key);
+-	struct futex_pi_state *pi_state = NULL;
+-	struct task_struct *p;
+ 	pid_t pid = uval & FUTEX_TID_MASK;
+-
+-	/*
+-	 * If there is a waiter on that futex, validate it and
+-	 * attach to the pi_state when the validation succeeds.
+-	 */
+-	if (match)
+-		return attach_to_pi_state(uval, match->pi_state, ps);
++	struct futex_pi_state *pi_state;
++	struct task_struct *p;
+ 
+ 	/*
+ 	 * We are the first waiter - try to look up the real owner and attach
+@@ -773,7 +768,7 @@ lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
+ 	pi_state = alloc_pi_state();
+ 
+ 	/*
+-	 * Initialize the pi_mutex in locked state and make 'p'
++	 * Initialize the pi_mutex in locked state and make @p
+ 	 * the owner of it:
+ 	 */
+ 	rt_mutex_init_proxy_locked(&pi_state->pi_mutex, p);
+@@ -793,6 +788,25 @@ lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
+ 	return 0;
+ }
+ 
++static int lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
++			   union futex_key *key, struct futex_pi_state **ps)
++{
++	struct futex_q *match = futex_top_waiter(hb, key);
++
++	/*
++	 * If there is a waiter on that futex, validate it and
++	 * attach to the pi_state when the validation succeeds.
++	 */
++	if (match)
++		return attach_to_pi_state(uval, match->pi_state, ps);
++
++	/*
++	 * We are the first waiter - try to look up the owner based on
++	 * @uval and attach to it.
++	 */
++	return attach_to_pi_owner(uval, key, ps);
++}
++
+ /**
+  * futex_lock_pi_atomic() - Atomic work required to acquire a pi aware futex
+  * @uaddr:		the pi futex user address

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0361-futex-Simplify-futex_lock_pi_atomic-and-make-it-more.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0361-futex-Simplify-futex_lock_pi_atomic-and-make-it-more.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0361-futex-Simplify-futex_lock_pi_atomic-and-make-it-more.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0361-futex-Simplify-futex_lock_pi_atomic-and-make-it-more.patch)
@@ -0,0 +1,242 @@
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 11 Jun 2014 20:45:41 +0000
+Subject: [PATCH 361/371] futex: Simplify futex_lock_pi_atomic() and make it
+ more robust
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=22762506782c21a3aedaee709d9fd51e4ffc80ca
+
+upstream commit: af54d6a1c3ad474bbc9893c9905022646be6092c
+
+futex_lock_pi_atomic() is a maze of retry hoops and loops.
+
+Reduce it to simple and understandable states:
+
+First step is to lookup existing waiters (state) in the kernel.
+
+If there is an existing waiter, validate it and attach to it.
+
+If there is no existing waiter, check the user space value
+
+If the TID encoded in the user space value is 0, take over the futex
+preserving the owner died bit.
+
+If the TID encoded in the user space value is != 0, lookup the owner
+task, validate it and attach to it.
+
+Reduces text size by 128 bytes on x8664.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: Peter Zijlstra <peterz at infradead.org>
+Cc: Davidlohr Bueso <davidlohr at hp.com>
+Cc: Kees Cook <kees at outflux.net>
+Cc: wad at chromium.org
+Cc: Darren Hart <darren at dvhart.com>
+Link: http://lkml.kernel.org/r/alpine.DEB.2.10.1406131137020.5170@nanos
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/futex.c | 148 ++++++++++++++++++++++++---------------------------------
+ 1 file changed, 61 insertions(+), 87 deletions(-)
+
+diff --git a/kernel/futex.c b/kernel/futex.c
+index 5015fbc..cd2b055 100644
+--- a/kernel/futex.c
++++ b/kernel/futex.c
+@@ -807,6 +807,17 @@ static int lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
+ 	return attach_to_pi_owner(uval, key, ps);
+ }
+ 
++static int lock_pi_update_atomic(u32 __user *uaddr, u32 uval, u32 newval)
++{
++	u32 uninitialized_var(curval);
++
++	if (unlikely(cmpxchg_futex_value_locked(&curval, uaddr, uval, newval)))
++		return -EFAULT;
++
++	/*If user space value changed, let the caller retry */
++	return curval != uval ? -EAGAIN : 0;
++}
++
+ /**
+  * futex_lock_pi_atomic() - Atomic work required to acquire a pi aware futex
+  * @uaddr:		the pi futex user address
+@@ -830,113 +841,69 @@ static int futex_lock_pi_atomic(u32 __user *uaddr, struct futex_hash_bucket *hb,
+ 				struct futex_pi_state **ps,
+ 				struct task_struct *task, int set_waiters)
+ {
+-	int lock_taken, ret, force_take = 0;
+-	u32 uval, newval, curval, vpid = task_pid_vnr(task);
+-
+-retry:
+-	ret = lock_taken = 0;
++	u32 uval, newval, vpid = task_pid_vnr(task);
++	struct futex_q *match;
++	int ret;
+ 
+ 	/*
+-	 * To avoid races, we attempt to take the lock here again
+-	 * (by doing a 0 -> TID atomic cmpxchg), while holding all
+-	 * the locks. It will most likely not succeed.
++	 * Read the user space value first so we can validate a few
++	 * things before proceeding further.
+ 	 */
+-	newval = vpid;
+-	if (set_waiters)
+-		newval |= FUTEX_WAITERS;
+-
+-	if (unlikely(cmpxchg_futex_value_locked(&curval, uaddr, 0, newval)))
++	if (get_futex_value_locked(&uval, uaddr))
+ 		return -EFAULT;
+ 
+ 	/*
+ 	 * Detect deadlocks.
+ 	 */
+-	if ((unlikely((curval & FUTEX_TID_MASK) == vpid)))
++	if ((unlikely((uval & FUTEX_TID_MASK) == vpid)))
+ 		return -EDEADLK;
+ 
+ 	/*
+-	 * Surprise - we got the lock, but we do not trust user space at all.
++	 * Lookup existing state first. If it exists, try to attach to
++	 * its pi_state.
+ 	 */
+-	if (unlikely(!curval)) {
+-		/*
+-		 * We verify whether there is kernel state for this
+-		 * futex. If not, we can safely assume, that the 0 ->
+-		 * TID transition is correct. If state exists, we do
+-		 * not bother to fixup the user space state as it was
+-		 * corrupted already.
+-		 */
+-		return futex_top_waiter(hb, key) ? -EINVAL : 1;
+-	}
+-
+-	uval = curval;
+-
+-	/*
+-	 * Set the FUTEX_WAITERS flag, so the owner will know it has someone
+-	 * to wake at the next unlock.
+-	 */
+-	newval = curval | FUTEX_WAITERS;
++	match = futex_top_waiter(hb, key);
++	if (match)
++		return attach_to_pi_state(uval, match->pi_state, ps);
+ 
+ 	/*
+-	 * Should we force take the futex? See below.
++	 * No waiter and user TID is 0. We are here because the
++	 * waiters or the owner died bit is set or called from
++	 * requeue_cmp_pi or for whatever reason something took the
++	 * syscall.
+ 	 */
+-	if (unlikely(force_take)) {
++	if (!(uval & FUTEX_TID_MASK)) {
+ 		/*
+-		 * Keep the OWNER_DIED and the WAITERS bit and set the
+-		 * new TID value.
++		 * We take over the futex. No other waiters and the user space
++		 * TID is 0. We preserve the owner died bit.
+ 		 */
+-		newval = (curval & ~FUTEX_TID_MASK) | vpid;
+-		force_take = 0;
+-		lock_taken = 1;
+-	}
++		newval = uval & FUTEX_OWNER_DIED;
++		newval |= vpid;
+ 
+-	if (unlikely(cmpxchg_futex_value_locked(&curval, uaddr, uval, newval)))
+-		return -EFAULT;
+-	if (unlikely(curval != uval))
+-		goto retry;
++		/* The futex requeue_pi code can enforce the waiters bit */
++		if (set_waiters)
++			newval |= FUTEX_WAITERS;
++
++		ret = lock_pi_update_atomic(uaddr, uval, newval);
++		/* If the take over worked, return 1 */
++		return ret < 0 ? ret : 1;
++	}
+ 
+ 	/*
+-	 * We took the lock due to forced take over.
++	 * First waiter. Set the waiters bit before attaching ourself to
++	 * the owner. If owner tries to unlock, it will be forced into
++	 * the kernel and blocked on hb->lock.
+ 	 */
+-	if (unlikely(lock_taken))
+-		return 1;
+-
++	newval = uval | FUTEX_WAITERS;
++	ret = lock_pi_update_atomic(uaddr, uval, newval);
++	if (ret)
++		return ret;
+ 	/*
+-	 * We dont have the lock. Look up the PI state (or create it if
+-	 * we are the first waiter):
++	 * If the update of the user space value succeeded, we try to
++	 * attach to the owner. If that fails, no harm done, we only
++	 * set the FUTEX_WAITERS bit in the user space variable.
+ 	 */
+-	ret = lookup_pi_state(uval, hb, key, ps);
+-
+-	if (unlikely(ret)) {
+-		switch (ret) {
+-		case -ESRCH:
+-			/*
+-			 * We failed to find an owner for this
+-			 * futex. So we have no pi_state to block
+-			 * on. This can happen in two cases:
+-			 *
+-			 * 1) The owner died
+-			 * 2) A stale FUTEX_WAITERS bit
+-			 *
+-			 * Re-read the futex value.
+-			 */
+-			if (get_futex_value_locked(&curval, uaddr))
+-				return -EFAULT;
+-
+-			/*
+-			 * If the owner died or we have a stale
+-			 * WAITERS bit the owner TID in the user space
+-			 * futex is 0.
+-			 */
+-			if (!(curval & FUTEX_TID_MASK)) {
+-				force_take = 1;
+-				goto retry;
+-			}
+-		default:
+-			break;
+-		}
+-	}
+-
+-	return ret;
++	return attach_to_pi_owner(uval, key, ps);
+ }
+ 
+ /**
+@@ -1499,7 +1466,12 @@ retry_private:
+ 				goto retry;
+ 			goto out;
+ 		case -EAGAIN:
+-			/* The owner was exiting, try again. */
++			/*
++			 * Two reasons for this:
++			 * - Owner is exiting and we just wait for the
++			 *   exit to complete.
++			 * - The user space value changed.
++			 */
+ 			free_pi_state(pi_state);
+ 			pi_state = NULL;
+ 			double_unlock_hb(hb1, hb2);
+@@ -2154,8 +2126,10 @@ retry_private:
+ 			goto uaddr_faulted;
+ 		case -EAGAIN:
+ 			/*
+-			 * Task is exiting and we just wait for the
+-			 * exit to complete.
++			 * Two reasons for this:
++			 * - Task is exiting and we just wait for the
++			 *   exit to complete.
++			 * - The user space value changed.
+ 			 */
+ 			queue_unlock(&q, hb);
+ 			put_futex_key(&q.key);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0362-rt-mutex-avoid-a-NULL-pointer-dereference-on-deadloc.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0362-rt-mutex-avoid-a-NULL-pointer-dereference-on-deadloc.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0362-rt-mutex-avoid-a-NULL-pointer-dereference-on-deadloc.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0362-rt-mutex-avoid-a-NULL-pointer-dereference-on-deadloc.patch)
@@ -0,0 +1,38 @@
+From: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Date: Tue, 17 Feb 2015 16:18:05 +0100
+Subject: [PATCH 362/371] rt-mutex: avoid a NULL pointer dereference on
+ deadlock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=4e671f7086c89c73b73c990b33b1eb4f9d547243
+
+With task_blocks_on_rt_mutex() returning early -EDEADLK we never add the
+waiter to the waitqueue. Later, we try to remove it via remove_waiter()
+and go boom in rt_mutex_top_waiter() because rb_entry() gives a NULL
+pointer.
+Tested on v3.18-RT where rtmutex is used for regular mutex and I tried
+to get one twice in a row.
+
+Not sure when this started but I guess 397335f00 ("rtmutex: Fix deadlock
+detector for real") or commit 3d5c9340 ("rtmutex: Handle deadlock
+detection smarter").
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ kernel/rtmutex.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index a94f3a3..52cab27 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -1511,7 +1511,8 @@ rt_mutex_slowlock(struct rt_mutex *lock, int state,
+ 	set_current_state(TASK_RUNNING);
+ 
+ 	if (unlikely(ret)) {
+-		remove_waiter(lock, &waiter);
++		if (rt_mutex_has_waiters(lock))
++			remove_waiter(lock, &waiter);
+ 		rt_mutex_handle_deadlock(ret, chwalk, &waiter);
+ 	}
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0363-x86-UV-raw_spinlock-conversion.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0363-x86-UV-raw_spinlock-conversion.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0363-x86-UV-raw_spinlock-conversion.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0363-x86-UV-raw_spinlock-conversion.patch)
@@ -0,0 +1,319 @@
+From: Mike Galbraith <umgwanakikbuti at gmail.com>
+Date: Sun, 2 Nov 2014 08:31:37 +0100
+Subject: [PATCH 363/371] x86: UV: raw_spinlock conversion
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f8964280e8b3f22cd8fbda335de842bd1dc81766
+
+Shrug.  Lots of hobbyists have a beast in their basement, right?
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Mike Galbraith <mgalbraith at suse.de>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ arch/x86/include/asm/uv/uv_bau.h   | 12 ++++++------
+ arch/x86/include/asm/uv/uv_hub.h   |  2 +-
+ arch/x86/kernel/apic/x2apic_uv_x.c | 12 ++++++------
+ arch/x86/platform/uv/tlb_uv.c      | 30 +++++++++++++++---------------
+ arch/x86/platform/uv/uv_time.c     | 21 +++++++++++++--------
+ 5 files changed, 41 insertions(+), 36 deletions(-)
+
+diff --git a/arch/x86/include/asm/uv/uv_bau.h b/arch/x86/include/asm/uv/uv_bau.h
+index 679229f..8ec3813 100644
+--- a/arch/x86/include/asm/uv/uv_bau.h
++++ b/arch/x86/include/asm/uv/uv_bau.h
+@@ -601,8 +601,8 @@ struct bau_control {
+ 	unsigned short		uvhub_quiesce;
+ 	short			socket_acknowledge_count[DEST_Q_SIZE];
+ 	cycles_t		send_message;
+-	spinlock_t		uvhub_lock;
+-	spinlock_t		queue_lock;
++	raw_spinlock_t		uvhub_lock;
++	raw_spinlock_t		queue_lock;
+ 	/* tunables */
+ 	int			max_concurr;
+ 	int			max_concurr_const;
+@@ -759,15 +759,15 @@ static inline int atom_asr(short i, struct atomic_short *v)
+  * to be lowered below the current 'v'.  atomic_add_unless can only stop
+  * on equal.
+  */
+-static inline int atomic_inc_unless_ge(spinlock_t *lock, atomic_t *v, int u)
++static inline int atomic_inc_unless_ge(raw_spinlock_t *lock, atomic_t *v, int u)
+ {
+-	spin_lock(lock);
++	raw_spin_lock(lock);
+ 	if (atomic_read(v) >= u) {
+-		spin_unlock(lock);
++		raw_spin_unlock(lock);
+ 		return 0;
+ 	}
+ 	atomic_inc(v);
+-	spin_unlock(lock);
++	raw_spin_unlock(lock);
+ 	return 1;
+ }
+ 
+diff --git a/arch/x86/include/asm/uv/uv_hub.h b/arch/x86/include/asm/uv/uv_hub.h
+index 21f7385..953f5c6 100644
+--- a/arch/x86/include/asm/uv/uv_hub.h
++++ b/arch/x86/include/asm/uv/uv_hub.h
+@@ -475,7 +475,7 @@ struct uv_blade_info {
+ 	unsigned short	nr_online_cpus;
+ 	unsigned short	pnode;
+ 	short		memory_nid;
+-	spinlock_t	nmi_lock;
++	raw_spinlock_t	nmi_lock;
+ 	unsigned long	nmi_count;
+ };
+ extern struct uv_blade_info *uv_blade_info;
+diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
+index 79b05b8..8703c96 100644
+--- a/arch/x86/kernel/apic/x2apic_uv_x.c
++++ b/arch/x86/kernel/apic/x2apic_uv_x.c
+@@ -56,7 +56,7 @@ int uv_min_hub_revision_id;
+ EXPORT_SYMBOL_GPL(uv_min_hub_revision_id);
+ unsigned int uv_apicid_hibits;
+ EXPORT_SYMBOL_GPL(uv_apicid_hibits);
+-static DEFINE_SPINLOCK(uv_nmi_lock);
++static DEFINE_RAW_SPINLOCK(uv_nmi_lock);
+ 
+ static struct apic apic_x2apic_uv_x;
+ 
+@@ -689,13 +689,13 @@ int uv_handle_nmi(unsigned int reason, struct pt_regs *regs)
+ 	real_uv_nmi = (uv_read_local_mmr(UVH_NMI_MMR) & UV_NMI_PENDING_MASK);
+ 
+ 	if (unlikely(real_uv_nmi)) {
+-		spin_lock(&uv_blade_info[bid].nmi_lock);
++		raw_spin_lock(&uv_blade_info[bid].nmi_lock);
+ 		real_uv_nmi = (uv_read_local_mmr(UVH_NMI_MMR) & UV_NMI_PENDING_MASK);
+ 		if (real_uv_nmi) {
+ 			uv_blade_info[bid].nmi_count++;
+ 			uv_write_local_mmr(UVH_NMI_MMR_CLEAR, UV_NMI_PENDING_MASK);
+ 		}
+-		spin_unlock(&uv_blade_info[bid].nmi_lock);
++		raw_spin_unlock(&uv_blade_info[bid].nmi_lock);
+ 	}
+ 
+ 	if (likely(__get_cpu_var(cpu_last_nmi_count) == uv_blade_info[bid].nmi_count))
+@@ -707,10 +707,10 @@ int uv_handle_nmi(unsigned int reason, struct pt_regs *regs)
+ 	 * Use a lock so only one cpu prints at a time.
+ 	 * This prevents intermixed output.
+ 	 */
+-	spin_lock(&uv_nmi_lock);
++	raw_spin_lock(&uv_nmi_lock);
+ 	pr_info("UV NMI stack dump cpu %u:\n", smp_processor_id());
+ 	dump_stack();
+-	spin_unlock(&uv_nmi_lock);
++	raw_spin_unlock(&uv_nmi_lock);
+ 
+ 	return NMI_HANDLED;
+ }
+@@ -805,7 +805,7 @@ void __init uv_system_init(void)
+ 			uv_blade_info[blade].pnode = pnode;
+ 			uv_blade_info[blade].nr_possible_cpus = 0;
+ 			uv_blade_info[blade].nr_online_cpus = 0;
+-			spin_lock_init(&uv_blade_info[blade].nmi_lock);
++			raw_spin_lock_init(&uv_blade_info[blade].nmi_lock);
+ 			max_pnode = max(pnode, max_pnode);
+ 			blade++;
+ 		}
+diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c
+index 29a69550..2e9a93f 100644
+--- a/arch/x86/platform/uv/tlb_uv.c
++++ b/arch/x86/platform/uv/tlb_uv.c
+@@ -39,7 +39,7 @@ static int timeout_base_ns[] = {
+ static int timeout_us;
+ static int nobau;
+ static int baudisabled;
+-static spinlock_t disable_lock;
++static raw_spinlock_t disable_lock;
+ static cycles_t congested_cycles;
+ 
+ /* tunables: */
+@@ -545,7 +545,7 @@ int handle_uv2_busy(struct bau_control *bcp)
+ 	cycles_t ttm;
+ 
+ 	stat->s_uv2_wars++;
+-	spin_lock(&hmaster->uvhub_lock);
++	raw_spin_lock(&hmaster->uvhub_lock);
+ 	/* try for the original first */
+ 	if (busy_one != normal) {
+ 		if (!normal_busy(bcp))
+@@ -595,12 +595,12 @@ int handle_uv2_busy(struct bau_control *bcp)
+ 		 * free up.
+ 		 */
+ 		stat->s_uv2_war_waits++;
+-		spin_unlock(&hmaster->uvhub_lock);
++		raw_spin_unlock(&hmaster->uvhub_lock);
+ 		ttm = get_cycles();
+ 		do {
+ 			cpu_relax();
+ 		} while (normal_busy(bcp));
+-		spin_lock(&hmaster->uvhub_lock);
++		raw_spin_lock(&hmaster->uvhub_lock);
+ 		/* switch to the original descriptor */
+ 		bcp->using_desc = normal;
+ 		bau_desc_old = bcp->descriptor_base;
+@@ -610,7 +610,7 @@ int handle_uv2_busy(struct bau_control *bcp)
+ 		bau_desc_new += (ITEMS_PER_DESC * normal);
+ 		*bau_desc_new = *bau_desc_old; /* copy the entire descriptor */
+ 	}
+-	spin_unlock(&hmaster->uvhub_lock);
++	raw_spin_unlock(&hmaster->uvhub_lock);
+ 	return FLUSH_RETRY_BUSYBUG;
+ }
+ 
+@@ -732,9 +732,9 @@ static void destination_plugged(struct bau_desc *bau_desc,
+ 
+ 		quiesce_local_uvhub(hmaster);
+ 
+-		spin_lock(&hmaster->queue_lock);
++		raw_spin_lock(&hmaster->queue_lock);
+ 		reset_with_ipi(&bau_desc->distribution, bcp);
+-		spin_unlock(&hmaster->queue_lock);
++		raw_spin_unlock(&hmaster->queue_lock);
+ 
+ 		end_uvhub_quiesce(hmaster);
+ 
+@@ -754,9 +754,9 @@ static void destination_timeout(struct bau_desc *bau_desc,
+ 
+ 		quiesce_local_uvhub(hmaster);
+ 
+-		spin_lock(&hmaster->queue_lock);
++		raw_spin_lock(&hmaster->queue_lock);
+ 		reset_with_ipi(&bau_desc->distribution, bcp);
+-		spin_unlock(&hmaster->queue_lock);
++		raw_spin_unlock(&hmaster->queue_lock);
+ 
+ 		end_uvhub_quiesce(hmaster);
+ 
+@@ -773,7 +773,7 @@ static void disable_for_congestion(struct bau_control *bcp,
+ 					struct ptc_stats *stat)
+ {
+ 	/* let only one cpu do this disabling */
+-	spin_lock(&disable_lock);
++	raw_spin_lock(&disable_lock);
+ 
+ 	if (!baudisabled && bcp->period_requests &&
+ 	    ((bcp->period_time / bcp->period_requests) > congested_cycles)) {
+@@ -792,7 +792,7 @@ static void disable_for_congestion(struct bau_control *bcp,
+ 		}
+ 	}
+ 
+-	spin_unlock(&disable_lock);
++	raw_spin_unlock(&disable_lock);
+ }
+ 
+ static void count_max_concurr(int stat, struct bau_control *bcp,
+@@ -841,7 +841,7 @@ static void record_send_stats(cycles_t time1, cycles_t time2,
+  */
+ static void uv1_throttle(struct bau_control *hmaster, struct ptc_stats *stat)
+ {
+-	spinlock_t *lock = &hmaster->uvhub_lock;
++	raw_spinlock_t *lock = &hmaster->uvhub_lock;
+ 	atomic_t *v;
+ 
+ 	v = &hmaster->active_descriptor_count;
+@@ -1859,8 +1859,8 @@ static void __init init_per_cpu_tunables(void)
+ 		bcp->cong_reps			= congested_reps;
+ 		bcp->cong_period		= congested_period;
+ 		bcp->clocks_per_100_usec =	usec_2_cycles(100);
+-		spin_lock_init(&bcp->queue_lock);
+-		spin_lock_init(&bcp->uvhub_lock);
++		raw_spin_lock_init(&bcp->queue_lock);
++		raw_spin_lock_init(&bcp->uvhub_lock);
+ 	}
+ }
+ 
+@@ -2087,7 +2087,7 @@ static int __init uv_bau_init(void)
+ 	}
+ 
+ 	nuvhubs = uv_num_possible_blades();
+-	spin_lock_init(&disable_lock);
++	raw_spin_lock_init(&disable_lock);
+ 	congested_cycles = usec_2_cycles(congested_respns_us);
+ 
+ 	uv_base_pnode = 0x7fffffff;
+diff --git a/arch/x86/platform/uv/uv_time.c b/arch/x86/platform/uv/uv_time.c
+index 9f29a01..d2e2f23 100644
+--- a/arch/x86/platform/uv/uv_time.c
++++ b/arch/x86/platform/uv/uv_time.c
+@@ -58,7 +58,7 @@ static DEFINE_PER_CPU(struct clock_event_device, cpu_ced);
+ 
+ /* There is one of these allocated per node */
+ struct uv_rtc_timer_head {
+-	spinlock_t	lock;
++	raw_spinlock_t	lock;
+ 	/* next cpu waiting for timer, local node relative: */
+ 	int		next_cpu;
+ 	/* number of cpus on this node: */
+@@ -178,7 +178,7 @@ static __init int uv_rtc_allocate_timers(void)
+ 				uv_rtc_deallocate_timers();
+ 				return -ENOMEM;
+ 			}
+-			spin_lock_init(&head->lock);
++			raw_spin_lock_init(&head->lock);
+ 			head->ncpus = uv_blade_nr_possible_cpus(bid);
+ 			head->next_cpu = -1;
+ 			blade_info[bid] = head;
+@@ -232,7 +232,7 @@ static int uv_rtc_set_timer(int cpu, u64 expires)
+ 	unsigned long flags;
+ 	int next_cpu;
+ 
+-	spin_lock_irqsave(&head->lock, flags);
++	raw_spin_lock_irqsave(&head->lock, flags);
+ 
+ 	next_cpu = head->next_cpu;
+ 	*t = expires;
+@@ -244,12 +244,12 @@ static int uv_rtc_set_timer(int cpu, u64 expires)
+ 		if (uv_setup_intr(cpu, expires)) {
+ 			*t = ULLONG_MAX;
+ 			uv_rtc_find_next_timer(head, pnode);
+-			spin_unlock_irqrestore(&head->lock, flags);
++			raw_spin_unlock_irqrestore(&head->lock, flags);
+ 			return -ETIME;
+ 		}
+ 	}
+ 
+-	spin_unlock_irqrestore(&head->lock, flags);
++	raw_spin_unlock_irqrestore(&head->lock, flags);
+ 	return 0;
+ }
+ 
+@@ -268,7 +268,7 @@ static int uv_rtc_unset_timer(int cpu, int force)
+ 	unsigned long flags;
+ 	int rc = 0;
+ 
+-	spin_lock_irqsave(&head->lock, flags);
++	raw_spin_lock_irqsave(&head->lock, flags);
+ 
+ 	if ((head->next_cpu == bcpu && uv_read_rtc(NULL) >= *t) || force)
+ 		rc = 1;
+@@ -280,7 +280,7 @@ static int uv_rtc_unset_timer(int cpu, int force)
+ 			uv_rtc_find_next_timer(head, pnode);
+ 	}
+ 
+-	spin_unlock_irqrestore(&head->lock, flags);
++	raw_spin_unlock_irqrestore(&head->lock, flags);
+ 
+ 	return rc;
+ }
+@@ -300,13 +300,18 @@ static int uv_rtc_unset_timer(int cpu, int force)
+ static cycle_t uv_read_rtc(struct clocksource *cs)
+ {
+ 	unsigned long offset;
++	cycle_t cycles;
+ 
++	preempt_disable();
+ 	if (uv_get_min_hub_revision_id() == 1)
+ 		offset = 0;
+ 	else
+ 		offset = (uv_blade_processor_id() * L1_CACHE_BYTES) % PAGE_SIZE;
+ 
+-	return (cycle_t)uv_read_local_mmr(UVH_RTC | offset);
++	cycles = (cycle_t)uv_read_local_mmr(UVH_RTC | offset);
++	preempt_enable();
++
++	return cycles;
+ }
+ 
+ /*

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0364-ARM-enable-irq-in-translation-section-permission-fau.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0364-ARM-enable-irq-in-translation-section-permission-fau.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0364-ARM-enable-irq-in-translation-section-permission-fau.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0364-ARM-enable-irq-in-translation-section-permission-fau.patch)
@@ -0,0 +1,93 @@
+From: "Yadi.hu" <yadi.hu at windriver.com>
+Date: Wed, 10 Dec 2014 10:32:09 +0800
+Subject: [PATCH 364/371] ARM: enable irq in translation/section permission
+ fault handlers
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=f91798f04749b74413b5706822ed2195dcfbd43a
+
+Probably happens on all ARM, with
+CONFIG_PREEMPT_RT_FULL
+CONFIG_DEBUG_ATOMIC_SLEEP
+
+This simple program....
+
+int main() {
+   *((char*)0xc0001000) = 0;
+};
+
+[ 512.742724] BUG: sleeping function called from invalid context at kernel/rtmutex.c:658
+[ 512.743000] in_atomic(): 0, irqs_disabled(): 128, pid: 994, name: a
+[ 512.743217] INFO: lockdep is turned off.
+[ 512.743360] irq event stamp: 0
+[ 512.743482] hardirqs last enabled at (0): [< (null)>] (null)
+[ 512.743714] hardirqs last disabled at (0): [<c0426370>] copy_process+0x3b0/0x11c0
+[ 512.744013] softirqs last enabled at (0): [<c0426370>] copy_process+0x3b0/0x11c0
+[ 512.744303] softirqs last disabled at (0): [< (null)>] (null)
+[ 512.744631] [<c041872c>] (unwind_backtrace+0x0/0x104)
+[ 512.745001] [<c09af0c4>] (dump_stack+0x20/0x24)
+[ 512.745355] [<c0462490>] (__might_sleep+0x1dc/0x1e0)
+[ 512.745717] [<c09b6770>] (rt_spin_lock+0x34/0x6c)
+[ 512.746073] [<c0441bf0>] (do_force_sig_info+0x34/0xf0)
+[ 512.746457] [<c0442668>] (force_sig_info+0x18/0x1c)
+[ 512.746829] [<c041d880>] (__do_user_fault+0x9c/0xd8)
+[ 512.747185] [<c041d938>] (do_bad_area+0x7c/0x94)
+[ 512.747536] [<c041d990>] (do_sect_fault+0x40/0x48)
+[ 512.747898] [<c040841c>] (do_DataAbort+0x40/0xa0)
+[ 512.748181] Exception stack(0xecaa1fb0 to 0xecaa1ff8)
+
+Oxc0000000 belongs to kernel address space, user task can not be
+allowed to access it. For above condition, correct result is that
+test case should receive a “segment fault” and exits but not stacks.
+
+the root cause is commit 02fe2845d6a8 ("avoid enabling interrupts in
+prefetch/data abort handlers"),it deletes irq enable block in Data
+abort assemble code and move them into page/breakpiont/alignment fault
+handlers instead. But author does not enable irq in translation/section
+permission fault handlers. ARM disables irq when it enters exception/
+interrupt mode, if kernel doesn't enable irq, it would be still disabled
+during translation/section permission fault.
+
+We see the above splat because do_force_sig_info is still called with
+IRQs off, and that code eventually does a:
+
+        spin_lock_irqsave(&t->sighand->siglock, flags);
+
+As this is architecture independent code, and we've not seen any other
+need for other arch to have the siglock converted to raw lock, we can
+conclude that we should enable irq for ARM translation/section
+permission exception.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Yadi.hu <yadi.hu at windriver.com>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ arch/arm/mm/fault.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
+index 4c306f2..61af818 100644
+--- a/arch/arm/mm/fault.c
++++ b/arch/arm/mm/fault.c
+@@ -416,6 +416,9 @@ do_translation_fault(unsigned long addr, unsigned int fsr,
+ 	if (addr < TASK_SIZE)
+ 		return do_page_fault(addr, fsr, regs);
+ 
++	if (interrupts_enabled(regs))
++		local_irq_enable();
++
+ 	if (user_mode(regs))
+ 		goto bad_area;
+ 
+@@ -478,6 +481,9 @@ do_translation_fault(unsigned long addr, unsigned int fsr,
+ static int
+ do_sect_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
+ {
++	if (interrupts_enabled(regs))
++		local_irq_enable();
++
+ 	do_bad_area(addr, fsr, regs);
+ 	return 0;
+ }

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0365-arm-futex-disable-preemption-during-futex_atomic_cmp.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0365-arm-futex-disable-preemption-during-futex_atomic_cmp.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0365-arm-futex-disable-preemption-during-futex_atomic_cmp.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0365-arm-futex-disable-preemption-during-futex_atomic_cmp.patch)
@@ -0,0 +1,55 @@
+From: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Date: Wed, 18 Feb 2015 14:07:21 +0100
+Subject: [PATCH 365/371] arm/futex: disable preemption during
+ futex_atomic_cmpxchg_inatomic()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=fcaeac4a412858ad15c6746ac227a65a1306e961
+
+The ARM UP implementation of futex_atomic_cmpxchg_inatomic() assumes that
+pagefault_disable() inherits a preempt disabled section. This assumtion
+is true for mainline but -RT reverts this and allows preemption in
+pagefault disabled regions.
+The code sequence of futex_atomic_cmpxchg_inatomic():
+
+|   x = *futex;
+|   if (x == oldval)
+|           *futex = newval;
+
+The problem occurs if the code is preempted after reading the futex value or
+after comparing it with x. While preempted, the futex owner has to be
+scheduled which then releases the lock (in userland because it has no waiter
+yet). Once the code is back on the CPU, it overwrites the futex value
+with with the old PID and the waiter bit set.
+
+The workaround is to explicit disable code preemption to avoid the
+described race window.
+
+Debugged-by:  Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ arch/arm/include/asm/futex.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/arch/arm/include/asm/futex.h b/arch/arm/include/asm/futex.h
+index aefd459..48fc90c 100644
+--- a/arch/arm/include/asm/futex.h
++++ b/arch/arm/include/asm/futex.h
+@@ -86,6 +86,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
+ 	int ret = 0;
+ 	u32 val;
+ 
++	preempt_disable_rt();
++
+ 	if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
+ 		return -EFAULT;
+ 
+@@ -100,6 +102,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
+ 	: "cc", "memory");
+ 
+ 	*uval = val;
++
++	preempt_enable_rt();
+ 	return ret;
+ }
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0366-scheduling-while-atomic-in-cgroup-code.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0366-scheduling-while-atomic-in-cgroup-code.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0366-scheduling-while-atomic-in-cgroup-code.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0366-scheduling-while-atomic-in-cgroup-code.patch)
@@ -0,0 +1,68 @@
+From: Mike Galbraith <umgwanakikbuti at gmail.com>
+Date: Sat, 21 Jun 2014 10:09:48 +0200
+Subject: [PATCH 366/371] scheduling while atomic in cgroup code
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=08dc7bde72d57a85b274e4dabd54330b30dddfb2
+
+mm, memcg: make refill_stock() use get_cpu_light()
+
+Nikita reported the following memcg scheduling while atomic bug:
+
+Call Trace:
+[e22d5a90] [c0007ea8] show_stack+0x4c/0x168 (unreliable)
+[e22d5ad0] [c0618c04] __schedule_bug+0x94/0xb0
+[e22d5ae0] [c060b9ec] __schedule+0x530/0x550
+[e22d5bf0] [c060bacc] schedule+0x30/0xbc
+[e22d5c00] [c060ca24] rt_spin_lock_slowlock+0x180/0x27c
+[e22d5c70] [c00b39dc] res_counter_uncharge_until+0x40/0xc4
+[e22d5ca0] [c013ca88] drain_stock.isra.20+0x54/0x98
+[e22d5cc0] [c01402ac] __mem_cgroup_try_charge+0x2e8/0xbac
+[e22d5d70] [c01410d4] mem_cgroup_charge_common+0x3c/0x70
+[e22d5d90] [c0117284] __do_fault+0x38c/0x510
+[e22d5df0] [c011a5f4] handle_pte_fault+0x98/0x858
+[e22d5e50] [c060ed08] do_page_fault+0x42c/0x6fc
+[e22d5f40] [c000f5b4] handle_page_fault+0xc/0x80
+
+What happens:
+
+   refill_stock()
+      get_cpu_var()
+      drain_stock()
+         res_counter_uncharge()
+            res_counter_uncharge_until()
+               spin_lock() <== boom
+
+Fix it by replacing get/put_cpu_var() with get/put_cpu_light().
+
+Cc: stable-rt at vger.kernel.org
+Reported-by: Nikita Yushchenko <nyushchenko at dev.rtsoft.ru>
+Signed-off-by: Mike Galbraith <umgwanakikbuti at gmail.com>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ mm/memcontrol.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/mm/memcontrol.c b/mm/memcontrol.c
+index df84f45..663f1a0 100644
+--- a/mm/memcontrol.c
++++ b/mm/memcontrol.c
+@@ -2056,14 +2056,17 @@ static void drain_local_stock(struct work_struct *dummy)
+  */
+ static void refill_stock(struct mem_cgroup *memcg, unsigned int nr_pages)
+ {
+-	struct memcg_stock_pcp *stock = &get_cpu_var(memcg_stock);
++	struct memcg_stock_pcp *stock;
++	int cpu = get_cpu_light();
++
++	stock = &per_cpu(memcg_stock, cpu);
+ 
+ 	if (stock->cached != memcg) { /* reset if necessary */
+ 		drain_stock(stock);
+ 		stock->cached = memcg;
+ 	}
+ 	stock->nr_pages += nr_pages;
+-	put_cpu_var(memcg_stock);
++	put_cpu_light();
+ }
+ 
+ /*

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0367-work-simple-Simple-work-queue-implemenation.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0367-work-simple-Simple-work-queue-implemenation.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0367-work-simple-Simple-work-queue-implemenation.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0367-work-simple-Simple-work-queue-implemenation.patch)
@@ -0,0 +1,242 @@
+From: Daniel Wagner <daniel.wagner at bmw-carit.de>
+Date: Fri, 11 Jul 2014 15:26:11 +0200
+Subject: [PATCH 367/371] work-simple: Simple work queue implemenation
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=58fe57efcc0f98c6b13e4323eb6f043a89e2ae8d
+
+Provides a framework for enqueuing callbacks from irq context
+PREEMPT_RT_FULL safe. The callbacks are executed in kthread context.
+
+Bases on wait-simple.
+
+Signed-off-by: Daniel Wagner <daniel.wagner at bmw-carit.de>
+Cc: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ include/linux/work-simple.h |  24 +++++++
+ kernel/Makefile             |   2 +-
+ kernel/work-simple.c        | 172 ++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 197 insertions(+), 1 deletion(-)
+ create mode 100644 include/linux/work-simple.h
+ create mode 100644 kernel/work-simple.c
+
+diff --git a/include/linux/work-simple.h b/include/linux/work-simple.h
+new file mode 100644
+index 0000000..f175fa9
+--- /dev/null
++++ b/include/linux/work-simple.h
+@@ -0,0 +1,24 @@
++#ifndef _LINUX_SWORK_H
++#define _LINUX_SWORK_H
++
++#include <linux/list.h>
++
++struct swork_event {
++	struct list_head item;
++	unsigned long flags;
++	void (*func)(struct swork_event *);
++};
++
++static inline void INIT_SWORK(struct swork_event *event,
++			      void (*func)(struct swork_event *))
++{
++	event->flags = 0;
++	event->func = func;
++}
++
++bool swork_queue(struct swork_event *sev);
++
++int swork_get(void);
++void swork_put(void);
++
++#endif /* _LINUX_SWORK_H */
+diff --git a/kernel/Makefile b/kernel/Makefile
+index 0b0ed50..b34456e 100644
+--- a/kernel/Makefile
++++ b/kernel/Makefile
+@@ -11,7 +11,7 @@ obj-y     = sched.o fork.o exec_domain.o panic.o printk.o \
+ 	    hrtimer.o nsproxy.o srcu.o semaphore.o \
+ 	    notifier.o ksysfs.o sched_clock.o cred.o \
+ 	    async.o range.o
+-obj-y += groups.o wait-simple.o
++obj-y += groups.o wait-simple.o work-simple.o
+ 
+ ifdef CONFIG_FUNCTION_TRACER
+ # Do not trace debug files and internal ftrace files
+diff --git a/kernel/work-simple.c b/kernel/work-simple.c
+new file mode 100644
+index 0000000..c996f75
+--- /dev/null
++++ b/kernel/work-simple.c
+@@ -0,0 +1,172 @@
++/*
++ * Copyright (C) 2014 BMW Car IT GmbH, Daniel Wagner daniel.wagner at bmw-carit.de
++ *
++ * Provides a framework for enqueuing callbacks from irq context
++ * PREEMPT_RT_FULL safe. The callbacks are executed in kthread context.
++ */
++
++#include <linux/wait-simple.h>
++#include <linux/work-simple.h>
++#include <linux/kthread.h>
++#include <linux/slab.h>
++#include <linux/spinlock.h>
++
++#define SWORK_EVENT_PENDING     (1 << 0)
++
++static DEFINE_MUTEX(worker_mutex);
++static struct sworker *glob_worker;
++
++struct sworker {
++	struct list_head events;
++	struct swait_head wq;
++
++	raw_spinlock_t lock;
++
++	struct task_struct *task;
++	int refs;
++};
++
++static bool swork_readable(struct sworker *worker)
++{
++	bool r;
++
++	if (kthread_should_stop())
++		return true;
++
++	raw_spin_lock_irq(&worker->lock);
++	r = !list_empty(&worker->events);
++	raw_spin_unlock_irq(&worker->lock);
++
++	return r;
++}
++
++static int swork_kthread(void *arg)
++{
++	struct sworker *worker = arg;
++
++	for (;;) {
++		swait_event_interruptible(worker->wq,
++					swork_readable(worker));
++		if (kthread_should_stop())
++			break;
++
++		raw_spin_lock_irq(&worker->lock);
++		while (!list_empty(&worker->events)) {
++			struct swork_event *sev;
++
++			sev = list_first_entry(&worker->events,
++					struct swork_event, item);
++			list_del(&sev->item);
++			raw_spin_unlock_irq(&worker->lock);
++
++			WARN_ON_ONCE(!test_and_clear_bit(SWORK_EVENT_PENDING,
++							 &sev->flags));
++			sev->func(sev);
++			raw_spin_lock_irq(&worker->lock);
++		}
++		raw_spin_unlock_irq(&worker->lock);
++	}
++	return 0;
++}
++
++static struct sworker *swork_create(void)
++{
++	struct sworker *worker;
++
++	worker = kzalloc(sizeof(*worker), GFP_KERNEL);
++	if (!worker)
++		return ERR_PTR(-ENOMEM);
++
++	INIT_LIST_HEAD(&worker->events);
++	raw_spin_lock_init(&worker->lock);
++	init_swait_head(&worker->wq);
++
++	worker->task = kthread_run(swork_kthread, worker, "kswork");
++	if (IS_ERR(worker->task)) {
++		kfree(worker);
++		return ERR_PTR(-ENOMEM);
++	}
++
++	return worker;
++}
++
++static void swork_destroy(struct sworker *worker)
++{
++	kthread_stop(worker->task);
++
++	WARN_ON(!list_empty(&worker->events));
++	kfree(worker);
++}
++
++/**
++ * swork_queue - queue swork
++ *
++ * Returns %false if @work was already on a queue, %true otherwise.
++ *
++ * The work is queued and processed on a random CPU
++ */
++bool swork_queue(struct swork_event *sev)
++{
++	unsigned long flags;
++
++	if (test_and_set_bit(SWORK_EVENT_PENDING, &sev->flags))
++		return false;
++
++	raw_spin_lock_irqsave(&glob_worker->lock, flags);
++	list_add_tail(&sev->item, &glob_worker->events);
++	raw_spin_unlock_irqrestore(&glob_worker->lock, flags);
++
++	swait_wake(&glob_worker->wq);
++	return true;
++}
++EXPORT_SYMBOL_GPL(swork_queue);
++
++/**
++ * swork_get - get an instance of the sworker
++ *
++ * Returns an negative error code if the initialization if the worker did not
++ * work, %0 otherwise.
++ *
++ */
++int swork_get(void)
++{
++	struct sworker *worker;
++
++	mutex_lock(&worker_mutex);
++	if (!glob_worker) {
++		worker = swork_create();
++		if (IS_ERR(worker)) {
++			mutex_unlock(&worker_mutex);
++			return -ENOMEM;
++		}
++
++		glob_worker = worker;
++	}
++
++	glob_worker->refs++;
++	mutex_unlock(&worker_mutex);
++
++	return 0;
++}
++EXPORT_SYMBOL_GPL(swork_get);
++
++/**
++ * swork_put - puts an instance of the sworker
++ *
++ * Will destroy the sworker thread. This function must not be called until all
++ * queued events have been completed.
++ */
++void swork_put(void)
++{
++	mutex_lock(&worker_mutex);
++
++	glob_worker->refs--;
++	if (glob_worker->refs > 0)
++		goto out;
++
++	swork_destroy(glob_worker);
++	glob_worker = NULL;
++out:
++	mutex_unlock(&worker_mutex);
++}
++EXPORT_SYMBOL_GPL(swork_put);

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0368-sunrpc-make-svc_xprt_do_enqueue-use-get_cpu_light.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0368-sunrpc-make-svc_xprt_do_enqueue-use-get_cpu_light.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0368-sunrpc-make-svc_xprt_do_enqueue-use-get_cpu_light.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0368-sunrpc-make-svc_xprt_do_enqueue-use-get_cpu_light.patch)
@@ -0,0 +1,52 @@
+From: Mike Galbraith <umgwanakikbuti at gmail.com>
+Date: Wed, 18 Feb 2015 16:05:28 +0100
+Subject: [PATCH 368/371] sunrpc: make svc_xprt_do_enqueue() use
+ get_cpu_light()
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=aa460993403030b9099cbbd2c05fb9771b8a94a3
+
+|BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:915
+|in_atomic(): 1, irqs_disabled(): 0, pid: 3194, name: rpc.nfsd
+|Preemption disabled at:[<ffffffffa06bf0bb>] svc_xprt_received+0x4b/0xc0 [sunrpc]
+|CPU: 6 PID: 3194 Comm: rpc.nfsd Not tainted 3.18.7-rt1 #9
+|Hardware name: MEDION MS-7848/MS-7848, BIOS M7848W08.404 11/06/2014
+| ffff880409630000 ffff8800d9a33c78 ffffffff815bdeb5 0000000000000002
+| 0000000000000000 ffff8800d9a33c98 ffffffff81073c86 ffff880408dd6008
+| ffff880408dd6000 ffff8800d9a33cb8 ffffffff815c3d84 ffff88040b3ac000
+|Call Trace:
+| [<ffffffff815bdeb5>] dump_stack+0x4f/0x9e
+| [<ffffffff81073c86>] __might_sleep+0xe6/0x150
+| [<ffffffff815c3d84>] rt_spin_lock+0x24/0x50
+| [<ffffffffa06beec0>] svc_xprt_do_enqueue+0x80/0x230 [sunrpc]
+| [<ffffffffa06bf0bb>] svc_xprt_received+0x4b/0xc0 [sunrpc]
+| [<ffffffffa06c03ed>] svc_add_new_perm_xprt+0x6d/0x80 [sunrpc]
+| [<ffffffffa06b2693>] svc_addsock+0x143/0x200 [sunrpc]
+| [<ffffffffa072e69c>] write_ports+0x28c/0x340 [nfsd]
+| [<ffffffffa072d2ac>] nfsctl_transaction_write+0x4c/0x80 [nfsd]
+| [<ffffffff8117ee83>] vfs_write+0xb3/0x1d0
+| [<ffffffff8117f889>] SyS_write+0x49/0xb0
+| [<ffffffff815c4556>] system_call_fastpath+0x16/0x1b
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Mike Galbraith <umgwanakikbuti at gmail.com>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ net/sunrpc/svc_xprt.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
+index 9acee9d..877ec8c 100644
+--- a/net/sunrpc/svc_xprt.c
++++ b/net/sunrpc/svc_xprt.c
+@@ -322,9 +322,9 @@ void svc_xprt_enqueue(struct svc_xprt *xprt)
+ 	if (!svc_xprt_has_something_to_do(xprt))
+ 		return;
+ 
+-	cpu = get_cpu();
++	cpu = get_cpu_light();
+ 	pool = svc_pool_for_cpu(xprt->xpt_server, cpu);
+-	put_cpu();
++	put_cpu_light();
+ 
+ 	spin_lock_bh(&pool->sp_lock);
+ 

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0369-lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0369-lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0369-lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0369-lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch)
@@ -0,0 +1,146 @@
+From: Josh Cartwright <josh.cartwright at ni.com>
+Date: Wed, 28 Jan 2015 13:08:45 -0600
+Subject: [PATCH 369/371] lockdep: selftest: fix warnings due to missing
+ PREEMPT_RT conditionals
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2b1994d429a12b38764caef4de70340f95aab2bd
+
+"lockdep: Selftest: Only do hardirq context test for raw spinlock"
+disabled the execution of certain tests with PREEMPT_RT_FULL, but did
+not prevent the tests from still being defined.  This leads to warnings
+like:
+
+  ./linux/lib/locking-selftest.c:574:1: warning: 'irqsafe1_hard_rlock_12' defined but not used [-Wunused-function]
+  ./linux/lib/locking-selftest.c:574:1: warning: 'irqsafe1_hard_rlock_21' defined but not used [-Wunused-function]
+  ./linux/lib/locking-selftest.c:577:1: warning: 'irqsafe1_hard_wlock_12' defined but not used [-Wunused-function]
+  ./linux/lib/locking-selftest.c:577:1: warning: 'irqsafe1_hard_wlock_21' defined but not used [-Wunused-function]
+  ./linux/lib/locking-selftest.c:580:1: warning: 'irqsafe1_soft_spin_12' defined but not used [-Wunused-function]
+  ...
+
+Fixed by wrapping the test definitions in #ifndef CONFIG_PREEMPT_RT_FULL
+conditionals.
+
+Cc: stable-rt at vger.kernel.org
+Signed-off-by: Josh Cartwright <josh.cartwright at ni.com>
+Signed-off-by: Xander Huff <xander.huff at ni.com>
+Acked-by: Gratian Crisan <gratian.crisan at ni.com>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+---
+ lib/locking-selftest.c | 27 +++++++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
+
+diff --git a/lib/locking-selftest.c b/lib/locking-selftest.c
+index 507a22f..51e558f 100644
+--- a/lib/locking-selftest.c
++++ b/lib/locking-selftest.c
+@@ -570,6 +570,8 @@ GENERATE_TESTCASE(init_held_rsem)
+ #include "locking-selftest-spin-hardirq.h"
+ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe1_hard_spin)
+ 
++#ifndef CONFIG_PREEMPT_RT_FULL
++
+ #include "locking-selftest-rlock-hardirq.h"
+ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe1_hard_rlock)
+ 
+@@ -585,9 +587,12 @@ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe1_soft_rlock)
+ #include "locking-selftest-wlock-softirq.h"
+ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe1_soft_wlock)
+ 
++#endif
++
+ #undef E1
+ #undef E2
+ 
++#ifndef CONFIG_PREEMPT_RT_FULL
+ /*
+  * Enabling hardirqs with a softirq-safe lock held:
+  */
+@@ -620,6 +625,8 @@ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2A_rlock)
+ #undef E1
+ #undef E2
+ 
++#endif
++
+ /*
+  * Enabling irqs with an irq-safe lock held:
+  */
+@@ -643,6 +650,8 @@ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2A_rlock)
+ #include "locking-selftest-spin-hardirq.h"
+ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2B_hard_spin)
+ 
++#ifndef CONFIG_PREEMPT_RT_FULL
++
+ #include "locking-selftest-rlock-hardirq.h"
+ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2B_hard_rlock)
+ 
+@@ -658,6 +667,8 @@ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2B_soft_rlock)
+ #include "locking-selftest-wlock-softirq.h"
+ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2B_soft_wlock)
+ 
++#endif
++
+ #undef E1
+ #undef E2
+ 
+@@ -689,6 +700,8 @@ GENERATE_PERMUTATIONS_2_EVENTS(irqsafe2B_soft_wlock)
+ #include "locking-selftest-spin-hardirq.h"
+ GENERATE_PERMUTATIONS_3_EVENTS(irqsafe3_hard_spin)
+ 
++#ifndef CONFIG_PREEMPT_RT_FULL
++
+ #include "locking-selftest-rlock-hardirq.h"
+ GENERATE_PERMUTATIONS_3_EVENTS(irqsafe3_hard_rlock)
+ 
+@@ -704,6 +717,8 @@ GENERATE_PERMUTATIONS_3_EVENTS(irqsafe3_soft_rlock)
+ #include "locking-selftest-wlock-softirq.h"
+ GENERATE_PERMUTATIONS_3_EVENTS(irqsafe3_soft_wlock)
+ 
++#endif
++
+ #undef E1
+ #undef E2
+ #undef E3
+@@ -737,6 +752,8 @@ GENERATE_PERMUTATIONS_3_EVENTS(irqsafe3_soft_wlock)
+ #include "locking-selftest-spin-hardirq.h"
+ GENERATE_PERMUTATIONS_3_EVENTS(irqsafe4_hard_spin)
+ 
++#ifndef CONFIG_PREEMPT_RT_FULL
++
+ #include "locking-selftest-rlock-hardirq.h"
+ GENERATE_PERMUTATIONS_3_EVENTS(irqsafe4_hard_rlock)
+ 
+@@ -752,10 +769,14 @@ GENERATE_PERMUTATIONS_3_EVENTS(irqsafe4_soft_rlock)
+ #include "locking-selftest-wlock-softirq.h"
+ GENERATE_PERMUTATIONS_3_EVENTS(irqsafe4_soft_wlock)
+ 
++#endif
++
+ #undef E1
+ #undef E2
+ #undef E3
+ 
++#ifndef CONFIG_PREEMPT_RT_FULL
++
+ /*
+  * read-lock / write-lock irq inversion.
+  *
+@@ -818,6 +839,10 @@ GENERATE_PERMUTATIONS_3_EVENTS(irq_inversion_soft_wlock)
+ #undef E2
+ #undef E3
+ 
++#endif
++
++#ifndef CONFIG_PREEMPT_RT_FULL
++
+ /*
+  * read-lock / write-lock recursion that is actually safe.
+  */
+@@ -856,6 +881,8 @@ GENERATE_PERMUTATIONS_3_EVENTS(irq_read_recursion_soft)
+ #undef E2
+ #undef E3
+ 
++#endif
++
+ /*
+  * read-lock / write-lock recursion that is unsafe.
+  */

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0370-fs-btrfs-fix-rt-deadlock-on-extent_buffer-lock.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0370-fs-btrfs-fix-rt-deadlock-on-extent_buffer-lock.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0370-fs-btrfs-fix-rt-deadlock-on-extent_buffer-lock.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0370-fs-btrfs-fix-rt-deadlock-on-extent_buffer-lock.patch)
@@ -0,0 +1,57 @@
+From: Mike Galbraith <mgalbraith at suse.de>
+Date: Sun, 2 Nov 2014 08:31:18 +0100
+Subject: [PATCH 370/371] fs,btrfs: fix rt deadlock on extent_buffer->lock
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=2f98c53099e350ce12e6777231b29c3d9ef7c34d
+
+Sat Jul 14 12:30:41 CEST 2012
+
+Trivially repeatable deadlock is cured by enabling lockdep code in
+btrfs_clear_path_blocking() as suggested by Chris Mason.  He also
+suggested restricting blocking reader count to one, and not allowing
+a spinning reader while blocking reader exists.  This has proven to
+be unnecessary, the strict lock order enforcement is enough.. or
+rather that's my box's opinion after long hours of hard pounding.
+
+Note: extent-tree.c bit is additional recommendation from Chris
+      Mason, split into a separate patch after discussion.
+
+Link: http://lkml.kernel.org/r/1414913478.5380.114.camel@marge.simpson.net
+
+Cc: linux-rt-users <linux-rt-users at vger.kernel.org>
+Cc: Thomas Gleixner <tglx at linutronix.de>
+Cc: Carsten Emde <C.Emde at osadl.org>
+Cc: John Kacur <jkacur at redhat.com>
+Cc: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
+Cc: Clark Williams <williams at redhat.com>
+Cc: Chris Mason <chris.mason at fusionio.com>
+Signed-off-by: Mike Galbraith <efault at gmx.de>
+Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
+
+Conflicts:
+	fs/btrfs/extent-tree.c
+---
+ fs/btrfs/ctree.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c
+index dede441..980adc0 100644
+--- a/fs/btrfs/ctree.c
++++ b/fs/btrfs/ctree.c
+@@ -77,7 +77,7 @@ noinline void btrfs_clear_path_blocking(struct btrfs_path *p,
+ {
+ 	int i;
+ 
+-#ifdef CONFIG_DEBUG_LOCK_ALLOC
++#if (defined(CONFIG_DEBUG_LOCK_ALLOC) || defined(CONFIG_PREEMPT_RT_BASE))
+ 	/* lockdep really cares that we take all of these spinlocks
+ 	 * in the right order.  If any of the locks in the path are not
+ 	 * currently blocking, it is going to complain.  So, make really
+@@ -104,7 +104,7 @@ noinline void btrfs_clear_path_blocking(struct btrfs_path *p,
+ 		}
+ 	}
+ 
+-#ifdef CONFIG_DEBUG_LOCK_ALLOC
++#if (defined(CONFIG_DEBUG_LOCK_ALLOC) || defined(CONFIG_PREEMPT_RT_BASE))
+ 	if (held)
+ 		btrfs_clear_lock_blocking_rw(held, held_rw);
+ #endif

Copied: dists/wheezy-security/linux/debian/patches/features/all/rt/0371-Linux-3.2.68-rt99-REBASE.patch (from r22528, dists/wheezy/linux/debian/patches/features/all/rt/0371-Linux-3.2.68-rt99-REBASE.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/wheezy-security/linux/debian/patches/features/all/rt/0371-Linux-3.2.68-rt99-REBASE.patch	Fri Apr 24 14:53:49 2015	(r22529, copy of r22528, dists/wheezy/linux/debian/patches/features/all/rt/0371-Linux-3.2.68-rt99-REBASE.patch)
@@ -0,0 +1,16 @@
+From: "Steven Rostedt (Red Hat)" <rostedt at goodmis.org>
+Date: Thu, 12 Mar 2015 15:49:24 -0400
+Subject: [PATCH 371/371] Linux 3.2.68-rt99 REBASE
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=3f175d569941339e26a5be52fb6a122e8631538d
+
+---
+ localversion-rt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/localversion-rt b/localversion-rt
+index b2111a2..31145e7 100644
+--- a/localversion-rt
++++ b/localversion-rt
+@@ -1 +1 @@
+--rt24
++-rt99

Modified: dists/wheezy-security/linux/debian/patches/series
==============================================================================
--- dists/wheezy-security/linux/debian/patches/series	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/series	Fri Apr 24 14:53:49 2015	(r22529)
@@ -608,7 +608,6 @@
 debian/x86-mm-avoid-abi-change-in-3.2.44.patch
 features/all/cpu-devices/cpufreq-Longhaul-Disable-driver-by-default.patch
 
-bugfix/all/ext4-make-orphan-functions-be-no-op-in-no-journal-mo.patch
 debian/jbd2-avoid-ABI-change-in-3.2.45.patch
 bugfix/all/sctp-Export-sctp_do_peeloff.patch
 bugfix/all/dlm-Do-not-allocate-a-fd-for-peeloff.patch
@@ -626,7 +625,6 @@
 features/arm/mtd-m25p80-modify-info-for-Micron-N25Q128.patch
 debian/perf-avoid-abi-change-in-3.2.49.patch
 
-bugfix/s390/s390-revert-clockevent.patch
 debian/tracing-avoid-abi-change-in-3.2.51.patch
 debian/mm-avoid-abi-change-in-3.2.51.patch
 features/all/mvsas-Recognise-device-subsystem-9485-9485-as-88SE94.patch
@@ -1103,7 +1101,6 @@
 features/all/igb/0178-igb-Fixed-Wake-On-LAN-support.patch
 features/all/igb/0179-igb-Fix-for-issue-where-values-could-be-too-high-for.patch
 features/all/igb/0180-igb-disable-eee.patch
-bugfix/x86/crypto-ghash-clmulni-intel-use-C-implementation-for-.patch
 
 bugfix/x86/revert-perf-x86-amd-ibs-fix-waking-up-from-s3-for-amd-family-10h.patch
 
@@ -1131,45 +1128,39 @@
 debian/ip-ident-avoid-abi-change-in-3.2.63.patch
 debian/scsi-avoid-abi-change-in-3.2.62.patch
 debian/nlattr-avoid-abi-change-in-3.2.61.patch
-bugfix/all/udf-Avoid-infinite-loop-when-processing-indirect-ICB.patch
 debian/sp5100_tco-reject-sb8x0-chips.patch
-bugfix/all/drivers-net-disable-ufo-through-virtio.patch
-bugfix/all/drivers-net-ipv6-select-ipv6-fragment-idents-for-vir.patch
 debian/drivers-net-avoid-abi-change-for-ufo-ipv6-fix.patch
-bugfix/all/revert-drivers-net-disable-ufo-through-virtio-in-macvtap-and-tun.patch
-bugfix/all/net-sctp-fix-NULL-pointer-dereference-in-af-from_add.patch
-bugfix/all/media-ttusb-dec-buffer-overflow-in-ioctl.patch
 debian/regulatory-avoid-abi-change-in-3.2.64.patch
 debian/ceph-avoid-abi-change-in-3.2.64.patch
 debian/perf-avoid-abi-change-in-3.2.65.patch
 debian/mm-truncate-avoid-abi-change-in-3.2.65.patch
-bugfix/x86/kvm-x86-don-t-report-guest-userspace-emulation-error-to-userspace.patch
-bugfix/x86/x86-kvm-clear-paravirt_enabled-on-kvm-guests-for-espfix32-s-benefit.patch
-bugfix/all/isofs-fix-infinite-looping-over-ce-entries.patch
-bugfix/x86/revert-x86-mm-set-nx-across-entire-pmd-at-boot.patch
-bugfix/x86/revert-x86-64bit-mm-mark-data-bss-brk-to-nx.patch
-bugfix/x86/x86-cpu-amd-add-workaround-for-family-16h-erratum-79.patch
-bugfix/x86/x86-tls-validate-tls-entries-to-protect-espfix.patch
-bugfix/x86/x86_64-switch_to-load-tls-descriptors-before-switchi.patch
-bugfix/all/keys-close-race-between-key-lookup-and-freeing.patch
-bugfix/all/isofs-fix-unchecked-printing-of-er-records.patch
-bugfix/all/splice-apply-generic-position-and-size-checks-to-eac.patch
-bugfix/all/crypto-prefix-module-autoloading-with-crypto.patch
-bugfix/all/crypto-include-crypto-module-prefix-in-template.patch
-bugfix/all/crypto-add-missing-crypto-module-aliases.patch
-bugfix/all/netfilter-conntrack-disable-generic-tracking-for-kno.patch
-bugfix/x86/x86_64-vdso-fix-the-vdso-address-randomization-algor.patch
-bugfix/x86/kvm-x86-emulator-reject-sysenter-in-compatibility-mo.patch
-bugfix/x86/kvm-x86-sysenter-emulation-is-broken.patch
-bugfix/all/move-d_rcu-from-overlapping-d_child-to-overlapping-d_alias.patch
 bugfix/all/aufs-move-d_rcu-from-overlapping-d_child-to-overlapping-d.patch
-bugfix/all/deal-with-deadlock-in-d_walk.patch
-bugfix/all/dcache-fix-locking-bugs-in-backported-deal-with-deadlock-in-d_walk.patch
 debian/vfs-avoid-abi-change-for-dentry-union-changes.patch
 bugfix/all/vfs-read-file_handle-only-once-in-handle_to_path.patch
 bugfix/all/aslr-fix-stack-randomization-on-64-bit-systems.patch
-bugfix/all/vfs-fix-vfsmount_lock-imbalance-in-path_init.patch
-bugfix/all/net-sctp-fix-slab-corruption-from-use-after-free-on-init-collisions.patch
-bugfix/x86/x86-tls-ldt-stop-checking-lm-in-ldt_empty.patch
-bugfix/x86/x86-tls-interpret-an-all-zero-struct-user_desc-as-no-segment.patch
-bugfix/all/ecryptfs-remove-buggy-and-unnecessary-write-in-file-name-decode.patch
+debian/sock-fix-abi-change-in-3.2.67.patch
+debian/rmap-fix-abi-change-in-3.2.67.patch
+
+# Update hpsa device IDs
+features/all/hpsa/0001-SCSI-hpsa-add-HP-Smart-Array-Gen9-PCI-ID-s.patch
+features/all/hpsa/0002-SCSI-hpsa-add-HP-Smart-Array-Gen8-names.patch
+features/all/hpsa/0003-SCSI-hpsa-housekeeping-patch-for-device_id-and-produ.patch
+features/all/hpsa/0004-SCSI-hpsa-remove-unused-Smart-Array-ID.patch
+features/all/hpsa/0005-SCSI-hpsa-remove-P822se-PCI-ID.patch
+features/all/hpsa/0006-SCSI-hpsa-add-HP-3PAR-vendor-id-to-pci_ids.h.patch
+features/all/hpsa/0007-SCSI-hpsa-Add-support-for-a-few-HP-Storage-controlle.patch
+features/all/hpsa/0008-hpsa-add-new-Smart-Array-PCI-IDs-May-2014.patch
+features/all/hpsa/0009-hpsa-fix-a-couple-pci-id-table-mistakes.patch
+features/all/hpsa/0010-hpsa-add-in-gen9-controller-model-names.patch
+features/all/hpsa/0011-hpsa-add-in-P840ar-controller-model-name.patch
+
+bugfix/all/nfsv4-minor-cleanups-for-nfs4_handle_exception-and-n.patch
+bugfix/all/netfilter-ipset-Check-and-reject-crazy-0-input-param.patch
+
+bugfix/all/ib-core-prevent-integer-overflow-in-ib_umem_get.patch
+bugfix/all/netfilter-nf_conntrack-reserve-two-bytes-for-nf_ct_e.patch
+bugfix/all/net-llc-use-correct-size-for-sysctl-timeout-entries.patch
+bugfix/all/net-rds-use-correct-size-for-max-unacked-packets-and.patch
+bugfix/all/xen-pciback-limit-guest-control-of-command-register.patch
+bugfix/x86/x86-asm-entry-64-remove-a-bogus-ret_from_fork-optimi.patch
+bugfix/all/ipv6-don-t-reduce-hop-limit-for-an-interface.patch

Modified: dists/wheezy-security/linux/debian/patches/series-rt
==============================================================================
--- dists/wheezy-security/linux/debian/patches/series-rt	Fri Apr 24 13:21:11 2015	(r22528)
+++ dists/wheezy-security/linux/debian/patches/series-rt	Fri Apr 24 14:53:49 2015	(r22529)
@@ -219,128 +219,153 @@
 features/all/rt/0219-x86-Convert-mce-timer-to-hrtimer.patch
 features/all/rt/0220-x86-stackprotector-Avoid-random-pool-on-rt.patch
 features/all/rt/0221-x86-Use-generic-rwsem_spinlocks-on-rt.patch
-features/all/rt/0223-workqueue-use-get-cpu-light.patch.patch
-features/all/rt/0224-epoll.patch.patch
-features/all/rt/0225-mm-vmalloc.patch.patch
-features/all/rt/0226-debugobjects-rt.patch.patch
-features/all/rt/0227-jump-label-rt.patch.patch
-features/all/rt/0228-skbufhead-raw-lock.patch.patch
-features/all/rt/0229-x86-no-perf-irq-work-rt.patch.patch
-features/all/rt/0230-console-make-rt-friendly.patch.patch
-features/all/rt/0231-printk-Disable-migration-instead-of-preemption.patch
-features/all/rt/0232-power-use-generic-rwsem-on-rt.patch
-features/all/rt/0233-power-disable-highmem-on-rt.patch.patch
-features/all/rt/0234-arm-disable-highmem-on-rt.patch.patch
-features/all/rt/0235-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch
-features/all/rt/0236-mips-disable-highmem-on-rt.patch.patch
-features/all/rt/0237-net-Avoid-livelock-in-net_tx_action-on-RT.patch
-features/all/rt/0238-ping-sysrq.patch.patch
-features/all/rt/0239-kgdb-serial-Short-term-workaround.patch
-features/all/rt/0240-add-sys-kernel-realtime-entry.patch
-features/all/rt/0241-mm-rt-kmap_atomic-scheduling.patch
-features/all/rt/0242-ipc-sem-Rework-semaphore-wakeups.patch
-features/all/rt/0243-sysrq-Allow-immediate-Magic-SysRq-output-for-PREEMPT.patch
-features/all/rt/0244-x86-kvm-require-const-tsc-for-rt.patch.patch
-features/all/rt/0245-scsi-fcoe-rt-aware.patch.patch
-features/all/rt/0246-x86-crypto-Reduce-preempt-disabled-regions.patch
-features/all/rt/0247-dm-Make-rt-aware.patch
-features/all/rt/0248-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch
-features/all/rt/0249-seqlock-Prevent-rt-starvation.patch
-features/all/rt/0250-timer-Fix-hotplug-for-rt.patch
-features/all/rt/0251-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch
-features/all/rt/0252-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch
-features/all/rt/0253-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch
-features/all/rt/0254-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch
-features/all/rt/0255-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch
-features/all/rt/0256-softirq-Check-preemption-after-reenabling-interrupts.patch
-features/all/rt/0257-rt-Introduce-cpu_chill.patch
-features/all/rt/0258-fs-dcache-Use-cpu_chill-in-trylock-loops.patch
-features/all/rt/0259-net-Use-cpu_chill-instead-of-cpu_relax.patch
-features/all/rt/0260-kconfig-disable-a-few-options-rt.patch.patch
-features/all/rt/0261-kconfig-preempt-rt-full.patch.patch
-features/all/rt/0262-rt-Make-migrate_disable-enable-and-__rt_mutex_init-n.patch
-features/all/rt/0263-scsi-qla2xxx-Use-local_irq_save_nort-in-qla2x00_poll.patch
-features/all/rt/0264-net-RT-REmove-preemption-disabling-in-netif_rx.patch
-features/all/rt/0265-mips-remove-smp-reserve-lock.patch.patch
-features/all/rt/0266-Latency-histogramms-Cope-with-backwards-running-loca.patch
-features/all/rt/0267-Latency-histograms-Adjust-timer-if-already-elapsed-w.patch
-features/all/rt/0268-Disable-RT_GROUP_SCHED-in-PREEMPT_RT_FULL.patch
-features/all/rt/0269-Latency-histograms-Detect-another-yet-overlooked-sha.patch
-features/all/rt/0270-slab-Prevent-local-lock-deadlock.patch
-features/all/rt/0271-fs-jbd-pull-your-plug-when-waiting-for-space.patch
-features/all/rt/0272-perf-Make-swevent-hrtimer-run-in-irq-instead-of-soft.patch
-features/all/rt/0273-cpu-rt-Rework-cpu-down-for-PREEMPT_RT.patch
-features/all/rt/0274-cpu-rt-Fix-cpu_hotplug-variable-initialization.patch
-features/all/rt/0275-time-rt-Fix-up-leap-second-backport-for-RT-changes.patch
+features/all/rt/0222-workqueue-use-get-cpu-light.patch.patch
+features/all/rt/0223-epoll.patch.patch
+features/all/rt/0224-mm-vmalloc.patch.patch
+features/all/rt/0225-debugobjects-rt.patch.patch
+features/all/rt/0226-jump-label-rt.patch.patch
+features/all/rt/0227-skbufhead-raw-lock.patch.patch
+features/all/rt/0228-x86-no-perf-irq-work-rt.patch.patch
+features/all/rt/0229-console-make-rt-friendly.patch.patch
+features/all/rt/0230-printk-Disable-migration-instead-of-preemption.patch
+features/all/rt/0231-power-use-generic-rwsem-on-rt.patch
+features/all/rt/0232-power-disable-highmem-on-rt.patch.patch
+features/all/rt/0233-arm-disable-highmem-on-rt.patch.patch
+features/all/rt/0234-ARM-at91-tclib-Default-to-tclib-timer-for-RT.patch
+features/all/rt/0235-mips-disable-highmem-on-rt.patch.patch
+features/all/rt/0236-net-Avoid-livelock-in-net_tx_action-on-RT.patch
+features/all/rt/0237-ping-sysrq.patch.patch
+features/all/rt/0238-kgdb-serial-Short-term-workaround.patch
+features/all/rt/0239-add-sys-kernel-realtime-entry.patch
+features/all/rt/0240-mm-rt-kmap_atomic-scheduling.patch
+features/all/rt/0241-ipc-sem-Rework-semaphore-wakeups.patch
+features/all/rt/0242-sysrq-Allow-immediate-Magic-SysRq-output-for-PREEMPT.patch
+features/all/rt/0243-x86-kvm-require-const-tsc-for-rt.patch.patch
+features/all/rt/0244-scsi-fcoe-rt-aware.patch.patch
+features/all/rt/0245-x86-crypto-Reduce-preempt-disabled-regions.patch
+features/all/rt/0246-dm-Make-rt-aware.patch
+features/all/rt/0247-cpumask-Disable-CONFIG_CPUMASK_OFFSTACK-for-RT.patch
+features/all/rt/0248-seqlock-Prevent-rt-starvation.patch
+features/all/rt/0249-timer-Fix-hotplug-for-rt.patch
+features/all/rt/0250-futex-rt-Fix-possible-lockup-when-taking-pi_lock-in-.patch
+features/all/rt/0251-ring-buffer-rt-Check-for-irqs-disabled-before-grabbi.patch
+features/all/rt/0252-sched-rt-Fix-wait_task_interactive-to-test-rt_spin_l.patch
+features/all/rt/0253-lglock-rt-Use-non-rt-for_each_cpu-in-rt-code.patch
+features/all/rt/0254-cpu-Make-hotplug.lock-a-sleeping-spinlock-on-RT.patch
+features/all/rt/0255-softirq-Check-preemption-after-reenabling-interrupts.patch
+features/all/rt/0256-rt-Introduce-cpu_chill.patch
+features/all/rt/0257-fs-dcache-Use-cpu_chill-in-trylock-loops.patch
+features/all/rt/0258-net-Use-cpu_chill-instead-of-cpu_relax.patch
+features/all/rt/0259-kconfig-disable-a-few-options-rt.patch.patch
+features/all/rt/0260-kconfig-preempt-rt-full.patch.patch
+features/all/rt/0261-rt-Make-migrate_disable-enable-and-__rt_mutex_init-n.patch
+features/all/rt/0262-scsi-qla2xxx-Use-local_irq_save_nort-in-qla2x00_poll.patch
+features/all/rt/0263-net-RT-REmove-preemption-disabling-in-netif_rx.patch
+features/all/rt/0264-mips-remove-smp-reserve-lock.patch.patch
+features/all/rt/0265-Latency-histogramms-Cope-with-backwards-running-loca.patch
+features/all/rt/0266-Latency-histograms-Adjust-timer-if-already-elapsed-w.patch
+features/all/rt/0267-Disable-RT_GROUP_SCHED-in-PREEMPT_RT_FULL.patch
+features/all/rt/0268-Latency-histograms-Detect-another-yet-overlooked-sha.patch
+features/all/rt/0269-slab-Prevent-local-lock-deadlock.patch
+features/all/rt/0270-fs-jbd-pull-your-plug-when-waiting-for-space.patch
+features/all/rt/0271-perf-Make-swevent-hrtimer-run-in-irq-instead-of-soft.patch
+features/all/rt/0272-cpu-rt-Rework-cpu-down-for-PREEMPT_RT.patch
+features/all/rt/0273-cpu-rt-Fix-cpu_hotplug-variable-initialization.patch
+features/all/rt/0274-time-rt-Fix-up-leap-second-backport-for-RT-changes.patch
+features/all/rt/0275-fix-printk-flush-of-messages.patch
 features/all/rt/0276-fix-printk-flush-of-messages.patch
-features/all/rt/0277-fix-printk-flush-of-messages.patch
-features/all/rt/0278-random-Make-it-work-on-rt.patch
-features/all/rt/0279-softirq-Init-softirq-local-lock-after-per-cpu-sectio.patch
-features/all/rt/0280-mm-slab-Fix-potential-deadlock.patch
-features/all/rt/0281-mm-page_alloc-Use-local_lock_on-instead-of-plain-spi.patch
-features/all/rt/0282-rt-rwsem-rwlock-lockdep-annotations.patch
-features/all/rt/0283-sched-Better-debug-output-for-might-sleep.patch
-features/all/rt/0284-stomp_machine-Use-mutex_trylock-when-called-from-ina.patch
-features/all/rt/0285-slab-Fix-up-stable-merge-of-slab-init_lock_keys.patch
-features/all/rt/0286-hrtimer-Raise-softirq-if-hrtimer-irq-stalled.patch
-features/all/rt/0287-rcu-Disable-RCU_FAST_NO_HZ-on-RT.patch
-features/all/rt/0288-net-netfilter-Serialize-xt_write_recseq-sections-on-.patch
-features/all/rt/0289-sched-Adjust-sched_reset_on_fork-when-nothing-else-c.patch
-features/all/rt/0290-sched-Queue-RT-tasks-to-head-when-prio-drops.patch
-features/all/rt/0291-sched-Consider-pi-boosting-in-setscheduler.patch
-features/all/rt/0292-drivers-tty-pl011-irq-disable-madness.patch.patch
-features/all/rt/0293-mmci-Remove-bogus-local_irq_save.patch
-features/all/rt/0294-sched-Init-idle-on_rq-in-init_idle.patch
-features/all/rt/0295-sched-Check-for-idle-task-in-might_sleep.patch
-features/all/rt/0296-mm-swap-Initialize-local-locks-early.patch
-features/all/rt/0297-x86-32-Use-kmap-switch-for-non-highmem-as-well.patch
-features/all/rt/0298-acpi-rt-Convert-acpi_gbl_hardware-lock-back-to-a-raw.patch
-features/all/rt/0299-serial-Imx-Fix-recursive-locking-bug.patch
-features/all/rt/0300-wait-simple-Simple-waitqueue-implementation.patch
-features/all/rt/0301-rcutiny-Use-simple-waitqueue.patch
-features/all/rt/0302-rcutiny-Fix-typo-of-using-swake_up-instead-of-swait_.patch
-features/all/rt/0303-x86-mce-Defer-mce-wakeups-to-threads-for-PREEMPT_RT.patch
-features/all/rt/0304-swap-Use-unique-local-lock-name-for-swap_lock.patch
-features/all/rt/0305-sched-Add-is_idle_task-to-handle-invalidated-uses-of.patch
-features/all/rt/0306-sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch
-features/all/rt/0307-x86-mce-fix-mce-timer-interval.patch
-features/all/rt/0308-genirq-Set-irq-thread-to-RT-priority-on-creation.patch
-features/all/rt/0309-list_bl.h-make-list-head-locking-RT-safe.patch
-features/all/rt/0310-list_bl.h-fix-it-for-for-SMP-DEBUG_SPINLOCK.patch
-features/all/rt/0311-timers-prepare-for-full-preemption-improve.patch
-features/all/rt/0312-kernel-cpu-fix-cpu-down-problem-if-kthread-s-cpu-is-.patch
-features/all/rt/0313-kernel-hotplug-restore-original-cpu-mask-oncpu-down.patch
-features/all/rt/0314-drm-i915-drop-trace_i915_gem_ring_dispatch-on-rt.patch
-features/all/rt/0315-rt-ntp-Move-call-to-schedule_delayed_work-to-helper-.patch
-features/all/rt/0316-hwlat-detector-Update-hwlat_detector-to-add-outer-lo.patch
-features/all/rt/0317-hwlat-detect-trace-Export-trace_clock_local-for-hwla.patch
-features/all/rt/0318-hwlat-detector-Use-trace_clock_local-if-available.patch
-features/all/rt/0319-hwlat-detector-Use-thread-instead-of-stop-machine.patch
-features/all/rt/0320-genirq-do-not-invoke-the-affinity-callback-via-a-wor.patch
-features/all/rt/0321-genirq-Set-the-irq-thread-policy-without-checking-CA.patch
-features/all/rt/0322-hwlat-detector-Don-t-ignore-threshold-module-paramet.patch
-features/all/rt/0323-mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch
-features/all/rt/0324-drm-remove-preempt_disable-from-drm_calc_vbltimestam.patch
-features/all/rt/0325-cpu_down-move-migrate_enable-back.patch
-features/all/rt/0326-swait-Add-a-few-more-users.patch
-features/all/rt/0327-lockdep-Correctly-annotate-hardirq-context-in-irq_ex.patch
-features/all/rt/0328-rtmutex-use-a-trylock-for-waiter-lock-in-trylock.patch
-features/all/rt/0329-smp-introduce-a-generic-on_each_cpu_mask-function.patch
-features/all/rt/0330-smp-add-func-to-IPI-cpus-based-on-parameter-func.patch
-features/all/rt/0331-fs-only-send-IPI-to-invalidate-LRU-BH-when-needed.patch
-features/all/rt/0332-rcutree-rcu_bh_qs-disable-irq-while-calling-rcu_pree.patch
-features/all/rt/0334-rt-Make-cpu_chill-use-hrtimer-instead-of-msleep.patch
-features/all/rt/0335-kernel-hrtimer-be-non-freezeable-in-cpu_chill.patch
-features/all/rt/0336-arm-unwind-use-a-raw_spin_lock.patch
-features/all/rt/0337-Revert-swait-Add-a-few-more-users.patch
-features/all/rt/0338-net-sched-dev_deactivate_many-use-msleep-1-instead-o.patch
-features/all/rt/0339-fs-jbd2-pull-your-plug-when-waiting-for-space.patch
-features/all/rt/0340-cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch
-features/all/rt/0341-net-gianfar-do-not-disable-interrupts.patch
-features/all/rt/0342-rcu-make-RCU_BOOST-default-on-RT.patch
-features/all/rt/0343-Fix-latency-histogram-after-hrtimer-Set-expiry-time-.patch
-features/all/rt/0344-sched-Do-not-clear-PF_NO_SETAFFINITY-flag-in-select_.patch
-features/all/rt/0345-workqueue-Prevent-deadlock-stall-on-RT.patch
-features/all/rt/0346-hrtimer-fix-the-miss-of-hrtimer_peek_ahead_timers-in.patch
-features/all/rt/0347-lockdep-Fix-backport-of-Correctly-annotate-hardirq-c.patch
-features/all/rt/0348-Linux-3.2.64-rt94-REBASE.patch
+features/all/rt/0277-random-Make-it-work-on-rt.patch
+features/all/rt/0278-softirq-Init-softirq-local-lock-after-per-cpu-sectio.patch
+features/all/rt/0279-mm-slab-Fix-potential-deadlock.patch
+features/all/rt/0280-mm-page_alloc-Use-local_lock_on-instead-of-plain-spi.patch
+features/all/rt/0281-rt-rwsem-rwlock-lockdep-annotations.patch
+features/all/rt/0282-sched-Better-debug-output-for-might-sleep.patch
+features/all/rt/0283-stomp_machine-Use-mutex_trylock-when-called-from-ina.patch
+features/all/rt/0284-slab-Fix-up-stable-merge-of-slab-init_lock_keys.patch
+features/all/rt/0285-hrtimer-Raise-softirq-if-hrtimer-irq-stalled.patch
+features/all/rt/0286-rcu-Disable-RCU_FAST_NO_HZ-on-RT.patch
+features/all/rt/0287-net-netfilter-Serialize-xt_write_recseq-sections-on-.patch
+features/all/rt/0288-sched-Adjust-sched_reset_on_fork-when-nothing-else-c.patch
+features/all/rt/0289-sched-Queue-RT-tasks-to-head-when-prio-drops.patch
+features/all/rt/0290-sched-Consider-pi-boosting-in-setscheduler.patch
+features/all/rt/0291-drivers-tty-pl011-irq-disable-madness.patch.patch
+features/all/rt/0292-mmci-Remove-bogus-local_irq_save.patch
+features/all/rt/0293-sched-Init-idle-on_rq-in-init_idle.patch
+features/all/rt/0294-sched-Check-for-idle-task-in-might_sleep.patch
+features/all/rt/0295-mm-swap-Initialize-local-locks-early.patch
+features/all/rt/0296-x86-32-Use-kmap-switch-for-non-highmem-as-well.patch
+features/all/rt/0297-acpi-rt-Convert-acpi_gbl_hardware-lock-back-to-a-raw.patch
+features/all/rt/0298-serial-Imx-Fix-recursive-locking-bug.patch
+features/all/rt/0299-wait-simple-Simple-waitqueue-implementation.patch
+features/all/rt/0300-rcutiny-Use-simple-waitqueue.patch
+features/all/rt/0301-rcutiny-Fix-typo-of-using-swake_up-instead-of-swait_.patch
+features/all/rt/0302-x86-mce-Defer-mce-wakeups-to-threads-for-PREEMPT_RT.patch
+features/all/rt/0303-swap-Use-unique-local-lock-name-for-swap_lock.patch
+features/all/rt/0304-sched-Add-is_idle_task-to-handle-invalidated-uses-of.patch
+features/all/rt/0305-sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch
+features/all/rt/0306-x86-mce-fix-mce-timer-interval.patch
+features/all/rt/0307-genirq-Set-irq-thread-to-RT-priority-on-creation.patch
+features/all/rt/0308-list_bl.h-make-list-head-locking-RT-safe.patch
+features/all/rt/0309-list_bl.h-fix-it-for-for-SMP-DEBUG_SPINLOCK.patch
+features/all/rt/0310-timers-prepare-for-full-preemption-improve.patch
+features/all/rt/0311-kernel-cpu-fix-cpu-down-problem-if-kthread-s-cpu-is-.patch
+features/all/rt/0312-kernel-hotplug-restore-original-cpu-mask-oncpu-down.patch
+features/all/rt/0313-drm-i915-drop-trace_i915_gem_ring_dispatch-on-rt.patch
+features/all/rt/0314-rt-ntp-Move-call-to-schedule_delayed_work-to-helper-.patch
+features/all/rt/0315-hwlat-detector-Update-hwlat_detector-to-add-outer-lo.patch
+features/all/rt/0316-hwlat-detect-trace-Export-trace_clock_local-for-hwla.patch
+features/all/rt/0317-hwlat-detector-Use-trace_clock_local-if-available.patch
+features/all/rt/0318-hwlat-detector-Use-thread-instead-of-stop-machine.patch
+features/all/rt/0319-genirq-do-not-invoke-the-affinity-callback-via-a-wor.patch
+features/all/rt/0320-genirq-Set-the-irq-thread-policy-without-checking-CA.patch
+features/all/rt/0321-hwlat-detector-Don-t-ignore-threshold-module-paramet.patch
+features/all/rt/0322-mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch
+features/all/rt/0323-drm-remove-preempt_disable-from-drm_calc_vbltimestam.patch
+features/all/rt/0324-cpu_down-move-migrate_enable-back.patch
+features/all/rt/0325-swait-Add-a-few-more-users.patch
+features/all/rt/0326-lockdep-Correctly-annotate-hardirq-context-in-irq_ex.patch
+features/all/rt/0327-rtmutex-use-a-trylock-for-waiter-lock-in-trylock.patch
+features/all/rt/0328-smp-introduce-a-generic-on_each_cpu_mask-function.patch
+features/all/rt/0329-smp-add-func-to-IPI-cpus-based-on-parameter-func.patch
+features/all/rt/0330-fs-only-send-IPI-to-invalidate-LRU-BH-when-needed.patch
+features/all/rt/0331-rcutree-rcu_bh_qs-disable-irq-while-calling-rcu_pree.patch
+features/all/rt/0332-rt-Make-cpu_chill-use-hrtimer-instead-of-msleep.patch
+features/all/rt/0333-kernel-hrtimer-be-non-freezeable-in-cpu_chill.patch
+features/all/rt/0334-arm-unwind-use-a-raw_spin_lock.patch
+features/all/rt/0335-Revert-swait-Add-a-few-more-users.patch
+features/all/rt/0336-net-sched-dev_deactivate_many-use-msleep-1-instead-o.patch
+features/all/rt/0337-fs-jbd2-pull-your-plug-when-waiting-for-space.patch
+features/all/rt/0338-cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch
+features/all/rt/0339-net-gianfar-do-not-disable-interrupts.patch
+features/all/rt/0340-rcu-make-RCU_BOOST-default-on-RT.patch
+features/all/rt/0341-Fix-latency-histogram-after-hrtimer-Set-expiry-time-.patch
+features/all/rt/0342-sched-Do-not-clear-PF_NO_SETAFFINITY-flag-in-select_.patch
+features/all/rt/0343-workqueue-Prevent-deadlock-stall-on-RT.patch
+features/all/rt/0344-hrtimer-fix-the-miss-of-hrtimer_peek_ahead_timers-in.patch
+features/all/rt/0345-lockdep-Fix-backport-of-Correctly-annotate-hardirq-c.patch
+features/all/rt/0346-gpio-omap-use-raw-locks-for-locking.patch
+features/all/rt/0347-create-rt-enqueue.patch
+features/all/rt/0348-rtmutex-Simplify-rtmutex_slowtrylock.patch
+features/all/rt/0349-rtmutex-Simplify-and-document-try_to_take_rtmutex.patch
+features/all/rt/0350-rtmutex-No-need-to-keep-task-ref-for-lock-owner-chec.patch
+features/all/rt/0351-rtmutex-Clarify-the-boost-deboost-part.patch
+features/all/rt/0352-rtmutex-Document-pi-chain-walk.patch
+features/all/rt/0353-rtmutex-Simplify-remove_waiter.patch
+features/all/rt/0354-rtmutex-Confine-deadlock-logic-to-futex.patch
+features/all/rt/0355-rtmutex-Cleanup-deadlock-detector-debug-logic.patch
+features/all/rt/0356-rtmutex-Avoid-pointless-requeueing-in-the-deadlock-d.patch
+features/all/rt/0357-futex-Make-unlock_pi-more-robust.patch
+features/all/rt/0358-futex-Use-futex_top_waiter-in-lookup_pi_state.patch
+features/all/rt/0359-futex-Split-out-the-waiter-check-from-lookup_pi_stat.patch
+features/all/rt/0360-futex-Split-out-the-first-waiter-attachment-from-loo.patch
+features/all/rt/0361-futex-Simplify-futex_lock_pi_atomic-and-make-it-more.patch
+features/all/rt/0362-rt-mutex-avoid-a-NULL-pointer-dereference-on-deadloc.patch
+features/all/rt/0363-x86-UV-raw_spinlock-conversion.patch
+features/all/rt/0364-ARM-enable-irq-in-translation-section-permission-fau.patch
+features/all/rt/0365-arm-futex-disable-preemption-during-futex_atomic_cmp.patch
+features/all/rt/0366-scheduling-while-atomic-in-cgroup-code.patch
+features/all/rt/0367-work-simple-Simple-work-queue-implemenation.patch
+features/all/rt/0368-sunrpc-make-svc_xprt_do_enqueue-use-get_cpu_light.patch
+features/all/rt/0369-lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch
+features/all/rt/0370-fs-btrfs-fix-rt-deadlock-on-extent_buffer-lock.patch
+features/all/rt/0371-Linux-3.2.68-rt99-REBASE.patch



More information about the Kernel-svn-changes mailing list