[kernel] r18803 - in dists/squeeze-backports/linux-2.6: . debian debian/abi debian/config debian/config/alpha debian/config/amd64 debian/config/amd64/none debian/config/armel debian/config/armhf debian/config/hppa debian/config/i386 debian/config/i386/none debian/config/i386/rt debian/config/ia64 debian/config/kernelarch-mips debian/config/kernelarch-x86 debian/config/m68k debian/config/mips debian/config/mipsel debian/config/powerpc debian/config/sh4 debian/config/sparc debian/patches/bugfix/all debian/patches/bugfix/arm debian/patches/bugfix/x86 debian/patches/debian debian/patches/features/all debian/patches/features/all/rt debian/patches/series debian/po debian/templates

Ben Hutchings benh at alioth.debian.org
Sat Mar 10 17:58:59 UTC 2012


Author: benh
Date: Sat Mar 10 17:58:57 2012
New Revision: 18803

Log:
Merge changes from trunk up to 3.2.9-1

Added:
   dists/squeeze-backports/linux-2.6/debian/config/amd64/none/
      - copied from r18788, dists/sid/linux-2.6/debian/config/amd64/none/
   dists/squeeze-backports/linux-2.6/debian/config/i386/none/defines
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/config/i386/none/defines
   dists/squeeze-backports/linux-2.6/debian/config/i386/rt/
      - copied from r18697, dists/trunk/linux-2.6/debian/config/i386/rt/
   dists/squeeze-backports/linux-2.6/debian/config/kernelarch-mips/
      - copied from r18788, dists/sid/linux-2.6/debian/config/kernelarch-mips/
   dists/squeeze-backports/linux-2.6/debian/patches/bugfix/all/ipsec-be-careful-of-non-existing-mac-headers.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/bugfix/all/ipsec-be-careful-of-non-existing-mac-headers.patch
   dists/squeeze-backports/linux-2.6/debian/patches/bugfix/all/iwlwifi-fix-key-removal.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/bugfix/all/iwlwifi-fix-key-removal.patch
   dists/squeeze-backports/linux-2.6/debian/patches/bugfix/arm/ARM-ixp4xx-mtd-oops.patch
      - copied unchanged from r18697, dists/trunk/linux-2.6/debian/patches/bugfix/arm/ARM-ixp4xx-mtd-oops.patch
   dists/squeeze-backports/linux-2.6/debian/patches/bugfix/x86/drm-i915-do-not-enable-RC6p-on-Sandy-Bridge.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/bugfix/x86/drm-i915-do-not-enable-RC6p-on-Sandy-Bridge.patch
   dists/squeeze-backports/linux-2.6/debian/patches/bugfix/x86/drm-i915-fix-operator-precedence-when-enabling-RC6p.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/bugfix/x86/drm-i915-fix-operator-precedence-when-enabling-RC6p.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/fs-hardlink-creation-restriction-cleanup.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/fs-hardlink-creation-restriction-cleanup.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/fs-hardlink-creation-restrictions-fix.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/fs-hardlink-creation-restrictions-fix.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/fs-hardlink-creation-restrictions.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/fs-hardlink-creation-restrictions.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/fs-symlink-restrictions-on-sticky-directories-fix-2.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/fs-symlink-restrictions-on-sticky-directories-fix-2.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/fs-symlink-restrictions-on-sticky-directories.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/fs-symlink-restrictions-on-sticky-directories.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/hwmon-it87-Add-IT8728F-support.patch
      - copied unchanged from r18697, dists/trunk/linux-2.6/debian/patches/features/all/hwmon-it87-Add-IT8728F-support.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/check-series
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/check-series
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch
      - copied, changed from r18697, dists/trunk/linux-2.6/debian/patches/features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/fs-dentry-use-seqlock.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/fs-dentry-use-seqlock.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/fs-protect-opencoded-isize-seqcount.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/fs-protect-opencoded-isize-seqcount.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/fs-struct-use-seqlock.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/fs-struct-use-seqlock.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/futex-requeue-pi-fix.patch
      - copied, changed from r18697, dists/trunk/linux-2.6/debian/patches/features/all/rt/futex-requeue-pi-fix.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/ia64-vdso-use-seqcount.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/ia64-vdso-use-seqcount.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch
      - copied, changed from r18697, dists/trunk/linux-2.6/debian/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-u64-stat-protect-seqcount.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/net-u64-stat-protect-seqcount.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/oleg-signal-rt-fix.patch
      - copied, changed from r18697, dists/trunk/linux-2.6/debian/patches/features/all/rt/oleg-signal-rt-fix.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rfc-timer-fix-hotplug-for-rt.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/rfc-timer-fix-hotplug-for-rt.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/seqlock-prevent-rt-starvation.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/seqlock-prevent-rt-starvation.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/seqlock-provide-seq-spin-lock.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/seqlock-provide-seq-spin-lock.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/time-remove-bogus-comments.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/time-remove-bogus-comments.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/timekeeping-split-xtime-lock.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/timekeeping-split-xtime-lock.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/timer-fd-avoid-live-lock.patch
      - copied unchanged from r18697, dists/trunk/linux-2.6/debian/patches/features/all/rt/timer-fd-avoid-live-lock.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86-vdso-remove-bogus-locking-in-update_vsyscall_tz.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/x86-vdso-remove-bogus-locking-in-update_vsyscall_tz.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86-vdso-use-seqcount.patch
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/x86-vdso-use-seqcount.patch
   dists/squeeze-backports/linux-2.6/debian/po/pl.po
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/po/pl.po
   dists/squeeze-backports/linux-2.6/debian/po/tr.po
      - copied unchanged from r18788, dists/sid/linux-2.6/debian/po/tr.po
Deleted:
   dists/squeeze-backports/linux-2.6/debian/abi/
   dists/squeeze-backports/linux-2.6/debian/config/m68k/config.hp
   dists/squeeze-backports/linux-2.6/debian/config/m68k/config.q40
   dists/squeeze-backports/linux-2.6/debian/config/m68k/config.sun3
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/acpi-gpe-use-wait-simple.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/acpi-make-ec-lock-raw-as-well.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/acpi-make-gbl-hardware-lock-raw.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/seqlock-raw-seqlock.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/timekeeping-covert-xtimelock.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/wait-simple-version.patch
Modified:
   dists/squeeze-backports/linux-2.6/   (props changed)
   dists/squeeze-backports/linux-2.6/debian/changelog
   dists/squeeze-backports/linux-2.6/debian/config/alpha/config
   dists/squeeze-backports/linux-2.6/debian/config/amd64/defines
   dists/squeeze-backports/linux-2.6/debian/config/armel/config
   dists/squeeze-backports/linux-2.6/debian/config/armel/config.iop32x
   dists/squeeze-backports/linux-2.6/debian/config/armel/config.ixp4xx
   dists/squeeze-backports/linux-2.6/debian/config/armel/config.kirkwood
   dists/squeeze-backports/linux-2.6/debian/config/armel/config.mv78xx0
   dists/squeeze-backports/linux-2.6/debian/config/armel/config.orion5x
   dists/squeeze-backports/linux-2.6/debian/config/armel/config.versatile
   dists/squeeze-backports/linux-2.6/debian/config/armhf/config.mx5
   dists/squeeze-backports/linux-2.6/debian/config/armhf/config.omap
   dists/squeeze-backports/linux-2.6/debian/config/config
   dists/squeeze-backports/linux-2.6/debian/config/defines
   dists/squeeze-backports/linux-2.6/debian/config/hppa/config
   dists/squeeze-backports/linux-2.6/debian/config/i386/defines
   dists/squeeze-backports/linux-2.6/debian/config/ia64/config
   dists/squeeze-backports/linux-2.6/debian/config/kernelarch-x86/config
   dists/squeeze-backports/linux-2.6/debian/config/kernelarch-x86/config-arch-32
   dists/squeeze-backports/linux-2.6/debian/config/kernelarch-x86/config-arch-64
   dists/squeeze-backports/linux-2.6/debian/config/m68k/config
   dists/squeeze-backports/linux-2.6/debian/config/m68k/config.amiga
   dists/squeeze-backports/linux-2.6/debian/config/m68k/config.atari
   dists/squeeze-backports/linux-2.6/debian/config/m68k/config.bvme6000
   dists/squeeze-backports/linux-2.6/debian/config/m68k/config.mac
   dists/squeeze-backports/linux-2.6/debian/config/m68k/config.mvme147
   dists/squeeze-backports/linux-2.6/debian/config/m68k/config.mvme16x
   dists/squeeze-backports/linux-2.6/debian/config/m68k/defines
   dists/squeeze-backports/linux-2.6/debian/config/mips/config
   dists/squeeze-backports/linux-2.6/debian/config/mips/config.4kc-malta
   dists/squeeze-backports/linux-2.6/debian/config/mips/config.5kc-malta
   dists/squeeze-backports/linux-2.6/debian/config/mips/config.octeon
   dists/squeeze-backports/linux-2.6/debian/config/mips/config.r4k-ip22
   dists/squeeze-backports/linux-2.6/debian/config/mips/config.r5k-ip32
   dists/squeeze-backports/linux-2.6/debian/config/mips/config.sb1-bcm91250a
   dists/squeeze-backports/linux-2.6/debian/config/mips/config.sb1a-bcm91480b
   dists/squeeze-backports/linux-2.6/debian/config/mips/defines
   dists/squeeze-backports/linux-2.6/debian/config/mipsel/config
   dists/squeeze-backports/linux-2.6/debian/config/mipsel/config.loongson-2f
   dists/squeeze-backports/linux-2.6/debian/config/mipsel/config.r5k-cobalt
   dists/squeeze-backports/linux-2.6/debian/config/mipsel/defines
   dists/squeeze-backports/linux-2.6/debian/config/powerpc/config
   dists/squeeze-backports/linux-2.6/debian/config/powerpc/config.powerpc64
   dists/squeeze-backports/linux-2.6/debian/config/sh4/config.sh7751r
   dists/squeeze-backports/linux-2.6/debian/config/sh4/config.sh7785lcr
   dists/squeeze-backports/linux-2.6/debian/config/sparc/config
   dists/squeeze-backports/linux-2.6/debian/patches/debian/version.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/arm-disable-highmem-on-rt.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/arm-enable-interrupts-in-signal-code.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/arm-mark-pmu-interupt-no-thread.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/block-shorten-interrupt-disabled-regions.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/cond-resched-lock-rt-tweak.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/cond-resched-softirq-rt.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/drivers-net-ehea-mark-rx-irq-no-thread.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/early-printk-consolidate.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/epoll-use-get-cpu-light.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/filemap-fix-up.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/genirq-disable-irqpoll-on-rt.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/hrtimer-fix-reprogram-madness.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/hrtimers-prepare-full-preemption.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/kgb-serial-hackaround.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/latency-hist.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/lglocks-rt.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/localversion.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/lockdep-no-softirq-accounting-on-rt.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/locking-various-init-fixes.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/md-raid5-percpu-handling-rt-aware.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-prepare-pf-disable-discoupling.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-shrink-the-page-frame-to-rt-size.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-slab-move-debug-out.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-flip-lock-dep-thingy.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-ipv4-route-use-locks-on-up-rt.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-netif_rx_ni-migrate-disable.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-tx-action-avoid-livelock-on-rt.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-wireless-warn-nort.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/of-convert-devtree-lock.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/panic-disable-random-on-rt.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/pci-access-use-__wake_up_all_locked.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-frob-hrtimer.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable-2.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-frob-pagefault_disable.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-re-_3_0-rt4.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/preempt-mark-legitimated-no-resched-sites.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/printk-disable-migration-instead-of-preemption.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-mutex-add-sleeping-spinlocks-support.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-rcutree-warn-fix.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-sched-have-migrate_disable-ignore-bounded-threads.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-serial-warn-fix.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rtmutex-futex-prepare-rt.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-cond-resched.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-delay-put-task.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-distangle-worker-accounting-from-rq-3elock.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-keep-period-timer-alive-when-throttled.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-load-balance-break-on-rq-contention.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-migrate-disable.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-mmdrop-delayed.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-no-work-when-pi-blocked.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-prevent-boosting-from-throttling.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-prevent-idle-boost.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-rt-fix-migrate_enable-thinko.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-rt-mutex-wakeup.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-teach-migrate_disable-about-atomic-contexts.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-use-schedule-preempt-disabled.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/scsi-fcoe-rt-aware.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/seqlock-remove-unused-functions.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/seqlock-use-seqcount.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/series
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/signal-fix-up-rcu-wreckage.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/skbufhead-raw-lock.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-disable-softirq-stacks-for-rt.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-fix-unplug-deadlock.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-local-lock.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-make-fifo.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-thread-do-softirq.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/stomp-machine-mark-stomper-thread.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/suspend-prevernt-might-sleep-splats.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/timer-handle-idle-trylock-in-get-next-timer-irq.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/tty-use-local-irq-nort.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/usb-fix-mouse-problem-copying-large-data.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/usb-hcd-use-local-irq-nort.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/wait-provide-__wake_up_all_locked.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86-io-apic-migra-no-unmask.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86-kvm-require-const-tsc-for-rt.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86-mce-timer-hrtimer.patch
   dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86_64-patch-for-idle-notifiers.patch
   dists/squeeze-backports/linux-2.6/debian/patches/series/base
   dists/squeeze-backports/linux-2.6/debian/patches/series/base-extra
   dists/squeeze-backports/linux-2.6/debian/po/nl.po
   dists/squeeze-backports/linux-2.6/debian/rules
   dists/squeeze-backports/linux-2.6/debian/rules.real
   dists/squeeze-backports/linux-2.6/debian/templates/control.image.type-plain.in
   dists/squeeze-backports/linux-2.6/debian/templates/control.image.type-standalone.in

Modified: dists/squeeze-backports/linux-2.6/debian/changelog
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/changelog	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/changelog	Sat Mar 10 17:58:57 2012	(r18803)
@@ -1,12 +1,136 @@
-linux-2.6 (3.2.4-1~bpo60+1) squeeze-backports; urgency=low
+linux-2.6 (3.2.9-1~bpo60+1) squeeze-backports; urgency=low
 
   * Rebuild for squeeze:
     - Use gcc-4.4 for all architectures
     - Disable building of udebs
-    - Change ABI number to 0.bpo.1
+    - Change ABI number to 0.bpo.2
     - Monkey-patch Python collections module to add OrderedDict if necessary
 
- -- Ben Hutchings <ben at decadent.org.uk>  Fri, 10 Feb 2012 02:22:53 +0000
+ -- Ben Hutchings <ben at decadent.org.uk>  Sat, 10 Mar 2012 16:35:35 +0000
+
+linux-2.6 (3.2.9-1) unstable; urgency=high
+
+  * New upstream stable update:
+    http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.8
+    - [i386] i387: move TS_USEDFPU flag from thread_info to task_struct
+    - [x86] additional refactoring of FPU/SSE state save and restore
+    http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.9
+    - vfs: fix d_inode_lookup() dentry ref leak
+    - target: Allow control CDBs with data > 1 page
+    - epoll: introduce POLLFREE to flush ->signalfd_wqh before kfree()
+    - epoll: ep_unregister_pollwait() can use the freed pwq->whead
+    - epoll: limit paths (CVE-2011-1083)
+    - cdrom: use copy_to_user() without the underscores
+
+  [ Bastian Blank ]
+  * [mips,mipsel] Also remove ext4 modules from installer.
+
+  [ Ben Hutchings ]
+  * Update debconf template translations:
+    - Update Dutch (Willem Kuyn) (Closes: #658736)
+    - Add Polish (Michał Kułach) (Closes: #658912)
+  * Bump ABI to 2
+  * fs: Introduce and enable security restrictions on links:
+    - Do not follow symlinks in /tmp that are owned by other users
+      (sysctl: fs.protected_symlinks)
+    - Do not allow unprivileged users to create hard links to sensitive files
+      (sysctl: fs.protected_hardlinks) (Closes: #609455)
+      + This breaks the 'at' package in stable, which will be fixed shortly
+        (see #597130)
+    The precise restrictions are specified in Documentation/sysctl/fs.txt in
+    the linux-doc-3.2 and linux-source-3.2 packages.
+  * iwlwifi: fix key removal (Closes: #651199)
+  * cgroups: Set CGROUP_PERF
+  * hid: Enable HID_HOLTEK, HID_PRIMAX, HID_SPEEDLINK, HID_WIIMOTE as modules,
+    HID_ACRUX_FF
+  * media/rc: Enable RC_ATI_REMOTE as module
+  * gspca: Enable USB_GSPCA_TOPRO as module
+  * dvb-usb: Enable DVB_USB_PCTV452E, DVB_USB_MXL111SF as modules
+
+  [ Uwe Kleine-König ]
+  * [x86] Update rt featureset to 3.2.9-rt15
+
+ -- Ben Hutchings <ben at decadent.org.uk>  Sun, 04 Mar 2012 15:32:20 +0000
+
+linux-2.6 (3.2.7-1) unstable; urgency=low
+
+  * New upstream stable update:
+    http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.7
+
+  [ Ben Hutchings ]
+  * Add Turkish debconf template translations (Mert Dirik) (Closes: #660117)
+  * [amd64] Disable BLK_DEV_IDEPNP, BLK_DEV_OPTI621, IDE_GENERIC
+  * Use libata-based drivers for most of the remaining PATA controllers:
+    - pata_legacy replaces ide-generic
+    - pata_isapnp replaces ide-pnp
+    - pata_opti replaces opti621
+    - pata_hpt366 and pata_hpt37x replace hpt366
+    - pata_ninja32 replaces delkin_cb
+    - pata_cs5535 replaces cs5535
+    - pata_winbond replaces sl82c105
+    - [alpha] pata_cypress replaces cy82c693
+    - [hppa] pata_ns87415 replaces ns87415
+    - [sparc] Various replacements, as for x86 in 2.6.32-10
+  * Disable old IDE subsystem [!ia64,m68k]:
+    - Disable BLK_DEV_IT8172, BLK_DEV_IT8213, BLK_DEV_TC86C001, BLK_DEV_TRM290
+    - [alpha] Disable BLK_DEV_4DRIVES, BLK_DEV_ALI14XX, BLK_DEV_DTC2278,
+      BLK_DEV_HT6560B, BLK_DEV_QD65XX, BLK_DEV_UMC8672
+  * fs: Enable EFI_PARTITION in all configurations (Closes: #660582)
+  * [i386] Re-enable INTEL_IOMMU, IRQ_REMAP
+  * [mips/r5k-ip32] Enable INPUT_SGI_BTNS (previously INPUT_SGIO2_BTNS)
+  * [powerpc/powerpc64] Enable IBM_EMAC (previously IBM_NEW_EMAC)
+  * [x86] drm/i915: do not enable RC6p on Sandy Bridge (Closes: #660265)
+  * ipsec: be careful of non existing mac headers (Closes: #660804)
+  * version: Use maintainer rather than uploader address for official
+    binary packages
+
+  [ Bastian Blank ]
+  * Don't advertise Xen support for rt images. (closes: #659988)
+  * [m68k,mips,mipsel] Use ext4 for all ext-variants. (closes: #660446)
+  * [m68k,mips,mipsel] Don't built-in ramdisk support.
+  * [hppa,mips,mipsel] Don't built-in cramfs support.
+  * [alpha,hppa] Don't built-in ext2.
+  * Remove IDE trigger for LED support.
+  * Remove all framebuffer bootup logos.
+  * NFSv4: Fix an Oops in the NFSv4 getacl code.
+
+ -- Bastian Blank <waldi at debian.org>  Tue, 28 Feb 2012 16:00:41 +0100
+
+linux-2.6 (3.2.6-1) unstable; urgency=low
+
+  * New upstream stable update:
+    http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.5
+    http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.6
+    - ALSA: hda - Apply 0x0f-VREF fix to all ASUS laptops with ALC861/660
+      (Closes: #657302)
+    - [armhf] vfp: flush thread hwstate before restoring context from sigframe
+    - proc: mem_release() should check mm != NULL
+    - proc: make sure mem_open() doesnt pin the targets memory
+    - [arm] sched/rt: Fix task stack corruption under
+      __ARCH_WANT_INTERRUPTS_ON_CTXSW
+    - eCryptfs: Infinite loop due to overflow in ecryptfs_write()
+    - iscsi-target: Fix reject release handling in iscsit_free_cmd()
+    - iscsi-target: Fix double list_add with iscsit_alloc_buffs reject
+    - pcmcia: fix socket refcount decrementing on each resume
+
+  [ Aurelien Jarno ]
+  * hwmon: backport IT8728F support for linux 3.3. 
+
+  [ Uwe Kleine-König ]
+  * [amd64] Update rt featureset to 3.2.5-rt12
+  * [i386] enable rt featureset for 686-pae
+
+  [ Arnaud Patard ]
+  * Merge ixp4xx oops fix when probing mtd.
+
+  [ Ben Hutchings ]
+  * Change linux-image dependencies to allow kmod as an alternative to
+    module-init-tools
+  * relay: prevent integer overflow in relay_open()
+  * builddeb: Don't create files in /tmp with predictable names
+  * ath9k: fix a WEP crypto related regression (Closes: #659484)
+
+ -- Ben Hutchings <ben at decadent.org.uk>  Thu, 16 Feb 2012 02:38:38 +0000
 
 linux-2.6 (3.2.4-1) unstable; urgency=low
 

Modified: dists/squeeze-backports/linux-2.6/debian/config/alpha/config
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/alpha/config	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/alpha/config	Sat Mar 10 17:58:57 2012	(r18803)
@@ -56,7 +56,10 @@
 CONFIG_PATA_AMD=m
 CONFIG_PATA_CS5520=m
 CONFIG_PATA_CS5530=m
+CONFIG_PATA_CYPRESS=m
 CONFIG_PATA_EFAR=m
+CONFIG_PATA_HPT366=m
+CONFIG_PATA_HPT37X=m
 CONFIG_PATA_NS87415=m
 CONFIG_PATA_OLDPIIX=m
 CONFIG_PATA_PDC2027X=m
@@ -66,7 +69,10 @@
 CONFIG_PATA_SIL680=m
 CONFIG_PATA_TRIFLEX=m
 CONFIG_PATA_VIA=m
+CONFIG_PATA_ISAPNP=y
 CONFIG_PATA_MPIIX=m
+CONFIG_PATA_OPTI=m
+CONFIG_PATA_LEGACY=m
 
 ##
 ## file: drivers/atm/Kconfig
@@ -284,46 +290,6 @@
 CONFIG_SCx200_ACB=m
 
 ##
-## file: drivers/ide/Kconfig
-##
-CONFIG_IDE=m
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=m
-# CONFIG_BLK_DEV_IDECS is not set
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_IDE_GENERIC=m
-CONFIG_BLK_DEV_IDEPNP=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=m
-CONFIG_BLK_DEV_OPTI621=m
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_BLK_DEV_TRIFLEX is not set
-CONFIG_BLK_DEV_CY82C693=m
-# CONFIG_BLK_DEV_CS5520 is not set
-# CONFIG_BLK_DEV_CS5530 is not set
-CONFIG_BLK_DEV_HPT366=m
-# CONFIG_BLK_DEV_SC1200 is not set
-# CONFIG_BLK_DEV_PIIX is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-# CONFIG_BLK_DEV_SVWKS is not set
-# CONFIG_BLK_DEV_SIIMAGE is not set
-# CONFIG_BLK_DEV_SLC90E66 is not set
-CONFIG_BLK_DEV_TRM290=m
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-CONFIG_BLK_DEV_4DRIVES=y
-CONFIG_BLK_DEV_ALI14XX=m
-CONFIG_BLK_DEV_DTC2278=m
-CONFIG_BLK_DEV_HT6560B=m
-CONFIG_BLK_DEV_QD65XX=m
-CONFIG_BLK_DEV_UMC8672=m
-
-##
 ## file: drivers/input/gameport/Kconfig
 ##
 CONFIG_GAMEPORT=m
@@ -1045,11 +1011,6 @@
 CONFIG_FONT_8x16=y
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-# CONFIG_LOGO is not set
-
-##
 ## file: drivers/watchdog/Kconfig
 ##
 CONFIG_PCWATCHDOG=m
@@ -1067,11 +1028,6 @@
 CONFIG_BINFMT_EM86=m
 
 ##
-## file: fs/ext2/Kconfig
-##
-CONFIG_EXT2_FS=y
-
-##
 ## file: fs/partitions/Kconfig
 ##
 CONFIG_ACORN_PARTITION=y
@@ -1251,12 +1207,3 @@
 ##
 CONFIG_SND_HDA_INTEL=m
 
-##
-## file: unknown
-##
-# CONFIG_MTD_DEBUG is not set
-CONFIG_NET_ISA=y
-CONFIG_NET_PCI=y
-CONFIG_NET_PCMCIA=y
-CONFIG_NET_VENDOR_SMC=y
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/amd64/defines
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/amd64/defines	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/amd64/defines	Sat Mar 10 17:58:57 2012	(r18803)
@@ -1,8 +1,7 @@
 [base]
 featuresets:
+ none
  rt
-flavours:
- amd64
 kernel-arch: x86
 
 [build]
@@ -16,13 +15,7 @@
 [amd64_description]
 hardware: 64-bit PCs
 hardware-long: PCs with AMD64 or Intel 64 processors
-parts: xen
 
 [amd64_image]
 configs:
  kernelarch-x86/config-arch-64
-
-[amd64_xen]
-dom0-support: true
-flavours:
- amd64

Modified: dists/squeeze-backports/linux-2.6/debian/config/armel/config
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/armel/config	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/armel/config	Sat Mar 10 17:58:57 2012	(r18803)
@@ -114,4 +114,3 @@
 ##
 # CONFIG_SECURITY_TOMOYO is not set
 
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/armel/config.iop32x
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/armel/config.iop32x	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/armel/config.iop32x	Sat Mar 10 17:58:57 2012	(r18803)
@@ -75,6 +75,8 @@
 CONFIG_PATA_CS5520=m
 CONFIG_PATA_CS5530=m
 CONFIG_PATA_EFAR=m
+CONFIG_PATA_HPT366=m
+CONFIG_PATA_HPT37X=m
 CONFIG_PATA_NETCELL=m
 CONFIG_PATA_NS87415=m
 CONFIG_PATA_OLDPIIX=m
@@ -85,8 +87,11 @@
 CONFIG_PATA_SIL680=m
 CONFIG_PATA_TRIFLEX=m
 CONFIG_PATA_VIA=m
+CONFIG_PATA_WINBOND=m
 CONFIG_PATA_MPIIX=m
 CONFIG_PATA_NS87410=m
+CONFIG_PATA_OPTI=m
+CONFIG_PATA_LEGACY=m
 
 ##
 ## file: drivers/block/Kconfig
@@ -215,40 +220,6 @@
 # CONFIG_I2C_STUB is not set
 
 ##
-## file: drivers/ide/Kconfig
-##
-CONFIG_IDE=m
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=m
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_IDE_GENERIC=m
-CONFIG_BLK_DEV_OFFBOARD=y
-# CONFIG_BLK_DEV_GENERIC is not set
-CONFIG_BLK_DEV_OPTI621=m
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_BLK_DEV_TRIFLEX is not set
-CONFIG_BLK_DEV_CY82C693=m
-# CONFIG_BLK_DEV_CS5520 is not set
-# CONFIG_BLK_DEV_CS5530 is not set
-CONFIG_BLK_DEV_HPT366=m
-# CONFIG_BLK_DEV_SC1200 is not set
-# CONFIG_BLK_DEV_PIIX is not set
-# CONFIG_BLK_DEV_IT821X is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-# CONFIG_BLK_DEV_SVWKS is not set
-# CONFIG_BLK_DEV_SIIMAGE is not set
-CONFIG_BLK_DEV_SL82C105=m
-# CONFIG_BLK_DEV_SLC90E66 is not set
-CONFIG_BLK_DEV_TRM290=m
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-
-##
 ## file: drivers/input/gameport/Kconfig
 ##
 CONFIG_GAMEPORT=m
@@ -288,7 +259,6 @@
 CONFIG_NEW_LEDS=y
 CONFIG_LEDS_CLASS=y
 CONFIG_LEDS_PCA9532=y
-# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
 
 ##
 ## file: drivers/media/Kconfig
@@ -596,7 +566,6 @@
 CONFIG_SGI_PARTITION=y
 CONFIG_ULTRIX_PARTITION=y
 CONFIG_SUN_PARTITION=y
-CONFIG_EFI_PARTITION=y
 
 ##
 ## file: init/Kconfig
@@ -725,10 +694,3 @@
 ##
 # CONFIG_SND_HDA_INTEL is not set
 
-##
-## file: unknown
-##
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_NET_PCI is not set
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/armel/config.ixp4xx
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/armel/config.ixp4xx	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/armel/config.ixp4xx	Sat Mar 10 17:58:57 2012	(r18803)
@@ -244,11 +244,6 @@
 # CONFIG_SCx200_ACB is not set
 
 ##
-## file: drivers/ide/Kconfig
-##
-# CONFIG_IDE is not set
-
-##
 ## file: drivers/input/gameport/Kconfig
 ##
 CONFIG_GAMEPORT=m
@@ -702,7 +697,6 @@
 CONFIG_SGI_PARTITION=y
 CONFIG_ULTRIX_PARTITION=y
 CONFIG_SUN_PARTITION=y
-CONFIG_EFI_PARTITION=y
 
 ##
 ## file: init/Kconfig
@@ -829,13 +823,3 @@
 ##
 # CONFIG_SND_HDA_INTEL is not set
 
-##
-## file: unknown
-##
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_DEBUG is not set
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NETDEV_10000 is not set
-# CONFIG_NET_PCI is not set
-# CONFIG_NET_POCKET is not set
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/armel/config.kirkwood
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/armel/config.kirkwood	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/armel/config.kirkwood	Sat Mar 10 17:58:57 2012	(r18803)
@@ -631,7 +631,6 @@
 CONFIG_SGI_PARTITION=y
 CONFIG_ULTRIX_PARTITION=y
 CONFIG_SUN_PARTITION=y
-CONFIG_EFI_PARTITION=y
 
 ##
 ## file: fs/ubifs/Kconfig
@@ -688,12 +687,3 @@
 CONFIG_SND_KIRKWOOD_SOC_OPENRD=m
 CONFIG_SND_KIRKWOOD_SOC_T5325=m
 
-##
-## file: unknown
-##
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_DEBUG is not set
-CONFIG_NETDEV_1000=y
-# CONFIG_NETDEV_10000 is not set
-# CONFIG_NET_ETHERNET is not set
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/armel/config.mv78xx0
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/armel/config.mv78xx0	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/armel/config.mv78xx0	Sat Mar 10 17:58:57 2012	(r18803)
@@ -1,8 +1,8 @@
 ##
 ## file: arch/arm/Kconfig
 ##
-## choice: ARM system type
 CONFIG_MMU=y
+## choice: ARM system type
 # CONFIG_ARCH_INTEGRATOR is not set
 # CONFIG_ARCH_REALVIEW is not set
 # CONFIG_ARCH_VERSATILE is not set
@@ -20,8 +20,8 @@
 # CONFIG_ARCH_IXP23XX is not set
 # CONFIG_ARCH_IXP2000 is not set
 # CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_ORION5X is not set
 CONFIG_ARCH_MV78XX0=y
+# CONFIG_ARCH_ORION5X is not set
 # CONFIG_ARCH_KS8695 is not set
 # CONFIG_ARCH_PNX4008 is not set
 # CONFIG_ARCH_PXA is not set
@@ -33,6 +33,7 @@
 # CONFIG_ARCH_OMAP is not set
 ## end choice
 CONFIG_PCI=y
+CONFIG_HIGHMEM=y
 CONFIG_LEDS=y
 CONFIG_LEDS_CPU=y
 CONFIG_UACCESS_WITH_MEMCPY=y
@@ -47,7 +48,6 @@
 # CONFIG_FPE_FASTFPE is not set
 CONFIG_VFP=y
 # CONFIG_ARTHUR is not set
-CONFIG_HIGHMEM=y
 
 ##
 ## file: arch/arm/mach-mv78xx0/Kconfig
@@ -569,7 +569,6 @@
 CONFIG_SGI_PARTITION=y
 CONFIG_ULTRIX_PARTITION=y
 CONFIG_SUN_PARTITION=y
-CONFIG_EFI_PARTITION=y
 
 ##
 ## file: mm/Kconfig
@@ -599,12 +598,3 @@
 ##
 CONFIG_WAN_ROUTER=m
 
-##
-## file: unknown
-##
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_DEBUG is not set
-CONFIG_NETDEV_1000=y
-# CONFIG_NETDEV_10000 is not set
-# CONFIG_NET_ETHERNET is not set
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/armel/config.orion5x
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/armel/config.orion5x	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/armel/config.orion5x	Sat Mar 10 17:58:57 2012	(r18803)
@@ -592,7 +592,6 @@
 CONFIG_SGI_PARTITION=y
 CONFIG_ULTRIX_PARTITION=y
 CONFIG_SUN_PARTITION=y
-CONFIG_EFI_PARTITION=y
 
 ##
 ## file: mm/Kconfig
@@ -622,12 +621,3 @@
 ##
 CONFIG_WAN_ROUTER=m
 
-##
-## file: unknown
-##
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-# CONFIG_MTD_DEBUG is not set
-CONFIG_NETDEV_1000=y
-# CONFIG_NETDEV_10000 is not set
-# CONFIG_NET_ETHERNET is not set
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/armel/config.versatile
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/armel/config.versatile	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/armel/config.versatile	Sat Mar 10 17:58:57 2012	(r18803)
@@ -459,14 +459,6 @@
 CONFIG_DISPLAY_SUPPORT=m
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
-
-##
 ## file: kernel/Kconfig.preempt
 ##
 ## choice: Preemption Model
@@ -525,11 +517,3 @@
 ##
 # CONFIG_WAN_ROUTER is not set
 
-##
-## file: unknown
-##
-CONFIG_NETDEV_1000=y
-# CONFIG_NETDEV_10000 is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_NET_PCI=y
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/armhf/config.mx5
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/armhf/config.mx5	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/armhf/config.mx5	Sat Mar 10 17:58:57 2012	(r18803)
@@ -173,6 +173,5 @@
 ##
 ## file: unknown
 ##
-CONFIG_LEDS_GPIO_PLATFORM=y
 CONFIG_SND_SOC_IMX_SGTL5000=m
 

Modified: dists/squeeze-backports/linux-2.6/debian/config/armhf/config.omap
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/armhf/config.omap	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/armhf/config.omap	Sat Mar 10 17:58:57 2012	(r18803)
@@ -331,10 +331,3 @@
 CONFIG_SND_OMAP_SOC_RX51=m
 CONFIG_SND_OMAP_SOC_SDP4430=m
 
-##
-## file: unknown
-##
-CONFIG_LEDS_GPIO_PLATFORM=y
-# CONFIG_OMAP_PM_NONE is not set
-CONFIG_USB_MUSB_OTG=y
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/config
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/config	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/config	Sat Mar 10 17:58:57 2012	(r18803)
@@ -133,7 +133,7 @@
 CONFIG_PATA_JMICRON=m
 CONFIG_PATA_MARVELL=m
 # CONFIG_PATA_NETCELL is not set
-# CONFIG_PATA_NINJA32 is not set
+CONFIG_PATA_NINJA32=m
 # CONFIG_PATA_NS87415 is not set
 # CONFIG_PATA_OLDPIIX is not set
 # CONFIG_PATA_OPTIDMA is not set
@@ -374,21 +374,24 @@
 CONFIG_HID=m
 CONFIG_HIDRAW=y
 CONFIG_HID_ACRUX=m
-CONFIG_HID_ACRUX_FF=m
+CONFIG_HID_ACRUX_FF=y
 CONFIG_HID_PRODIKEYS=m
 CONFIG_HID_DRAGONRISE=m
 CONFIG_DRAGONRISE_FF=y
 CONFIG_HID_EMS_FF=m
 CONFIG_HID_ELECOM=m
+CONFIG_HID_HOLTEK=m
 CONFIG_HID_KEYTOUCH=m
 CONFIG_HID_UCLOGIC=m
 CONFIG_HID_WALTOP=m
 CONFIG_HID_GYRATION=m
 CONFIG_HID_TWINHAN=m
 CONFIG_HID_LCPOWER=m
+CONFIG_HID_LOGITECH_DJ=m
 CONFIG_LOGITECH_FF=y
 CONFIG_LOGIRUMBLEPAD2_FF=y
 CONFIG_LOGIG940_FF=y
+CONFIG_LOGIWHEELS_FF=y
 CONFIG_HID_MAGICMOUSE=m
 CONFIG_HID_MULTITOUCH=m
 CONFIG_HID_NTRIG=m
@@ -397,6 +400,7 @@
 CONFIG_PANTHERLORD_FF=y
 CONFIG_HID_PETALYNX=m
 CONFIG_HID_PICOLCD=m
+CONFIG_HID_PRIMAX=m
 CONFIG_HID_QUANTA=m
 CONFIG_HID_ROCCAT=m
 CONFIG_HID_ROCCAT_ARVO=m
@@ -406,6 +410,7 @@
 CONFIG_HID_ROCCAT_PYRA=m
 CONFIG_HID_SAMSUNG=m
 CONFIG_HID_SONY=m
+CONFIG_HID_SPEEDLINK=m
 CONFIG_HID_SUNPLUS=m
 CONFIG_HID_GREENASIA=m
 CONFIG_GREENASIA_FF=y
@@ -416,6 +421,7 @@
 CONFIG_THRUSTMASTER_FF=y
 CONFIG_HID_WACOM=m
 CONFIG_HID_WACOM_POWER_SUPPLY=y
+CONFIG_HID_WIIMOTE=m
 CONFIG_HID_ZEROPLUS=m
 CONFIG_ZEROPLUS_FF=y
 CONFIG_HID_ZYDACRON=m
@@ -542,18 +548,16 @@
 ##
 ## file: drivers/ide/Kconfig
 ##
+# CONFIG_IDE is not set
+#. But for ia64 and m68k flavours that need it
 CONFIG_IDE_GD=m
 CONFIG_IDE_GD_ATA=y
 CONFIG_IDE_GD_ATAPI=y
-CONFIG_BLK_DEV_DELKIN=m
 # CONFIG_IDE_TASK_IOCTL is not set
 CONFIG_IDE_PROC_FS=y
 # CONFIG_BLK_DEV_PLATFORM is not set
 # CONFIG_BLK_DEV_JMICRON is not set
-CONFIG_BLK_DEV_IT8172=m
-CONFIG_BLK_DEV_IT8213=m
 # CONFIG_BLK_DEV_IT821X is not set
-CONFIG_BLK_DEV_TC86C001=m
 
 ##
 ## file: drivers/idle/Kconfig
@@ -870,7 +874,6 @@
 CONFIG_LEDS_MC13783=m
 CONFIG_LEDS_TRIGGERS=y
 CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
 CONFIG_LEDS_TRIGGER_HEARTBEAT=m
 CONFIG_LEDS_TRIGGER_BACKLIGHT=m
 CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
@@ -974,6 +977,7 @@
 CONFIG_DVB_USB_OPERA1=m
 CONFIG_DVB_USB_AF9005=m
 CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_PCTV452E=m
 CONFIG_DVB_USB_DW2102=m
 CONFIG_DVB_USB_CINERGY_T2=m
 CONFIG_DVB_USB_ANYSEE=m
@@ -986,6 +990,7 @@
 CONFIG_DVB_USB_LME2510=m
 CONFIG_DVB_USB_TECHNISAT_USB2=m
 CONFIG_DVB_USB_IT913X=m
+CONFIG_DVB_USB_MXL111SF=m
 
 ##
 ## file: drivers/media/dvb/firewire/Kconfig
@@ -1125,6 +1130,7 @@
 CONFIG_IR_RC5_SZ_DECODER=m
 CONFIG_IR_MCE_KBD_DECODER=m
 CONFIG_IR_LIRC_CODEC=m
+CONFIG_RC_ATI_REMOTE=m
 CONFIG_IR_ENE=m
 CONFIG_IR_IMON=m
 CONFIG_IR_MCEUSB=m
@@ -1312,6 +1318,7 @@
 CONFIG_USB_GSPCA_STV0680=m
 CONFIG_USB_GSPCA_SUNPLUS=m
 CONFIG_USB_GSPCA_T613=m
+CONFIG_USB_GSPCA_TOPRO=m
 CONFIG_USB_GSPCA_TV8532=m
 CONFIG_USB_GSPCA_VC032X=m
 CONFIG_USB_GSPCA_VICAM=m
@@ -2970,6 +2977,12 @@
 # CONFIG_USB_DEVICE_CLASS is not set
 CONFIG_USB_DYNAMIC_MINORS=y
 CONFIG_USB_SUSPEND=y
+# CONFIG_USB_OTG is not set
+
+##
+## file: drivers/usb/dwc3/Kconfig
+##
+# CONFIG_USB_DWC3 is not set
 
 ##
 ## file: drivers/usb/gadget/Kconfig
@@ -3190,6 +3203,11 @@
 CONFIG_DISPLAY_SUPPORT=m
 
 ##
+## file: drivers/video/logo/Kconfig
+##
+# CONFIG_LOGO is not set
+
+##
 ## file: drivers/virtio/Kconfig
 ##
 CONFIG_VIRTIO_PCI=m
@@ -3252,6 +3270,9 @@
 CONFIG_HUGETLBFS=y
 CONFIG_MISC_FILESYSTEMS=y
 CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_PROTECTED_LINKS=y
+CONFIG_PROTECTED_SYMLINKS=y
+CONFIG_PROTECTED_HARDLINKS=y
 
 ##
 ## file: fs/9p/Kconfig
@@ -3663,7 +3684,7 @@
 # CONFIG_ULTRIX_PARTITION is not set
 # CONFIG_SUN_PARTITION is not set
 CONFIG_KARMA_PARTITION=y
-# CONFIG_EFI_PARTITION is not set
+CONFIG_EFI_PARTITION=y
 # CONFIG_SYSV68_PARTITION is not set
 
 ##
@@ -3798,6 +3819,7 @@
 CONFIG_CGROUP_MEM_RES_CTLR_DISABLED=y
 CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
 # CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED is not set
+CONFIG_CGROUP_PERF=y
 CONFIG_CGROUP_SCHED=y
 CONFIG_FAIR_GROUP_SCHED=y
 # CONFIG_RT_GROUP_SCHED is not set

Modified: dists/squeeze-backports/linux-2.6/debian/config/defines
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/defines	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/defines	Sat Mar 10 17:58:57 2012	(r18803)
@@ -1,9 +1,5 @@
 [abi]
-abiname: 0.bpo.1
-ignore-changes:
- module:arch/x86/kvm/*
- fixed_phy_add
- fixed_phy_set_link_update
+abiname: 0.bpo.2
 
 [base]
 arches:

Modified: dists/squeeze-backports/linux-2.6/debian/config/hppa/config
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/hppa/config	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/hppa/config	Sat Mar 10 17:58:57 2012	(r18803)
@@ -23,6 +23,12 @@
 # CONFIG_DEBUG_RODATA is not set
 
 ##
+## file: drivers/ata/Kconfig
+##
+CONFIG_PATA_NS87415=m
+CONFIG_PATA_LEGACY=m
+
+##
 ## file: drivers/block/Kconfig
 ##
 # CONFIG_BLK_DEV_FD is not set
@@ -88,39 +94,6 @@
 # CONFIG_I2C is not set
 
 ##
-## file: drivers/ide/Kconfig
-##
-CONFIG_IDE=m
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=m
-# CONFIG_BLK_DEV_IDECS is not set
-CONFIG_BLK_DEV_IDECD=m
-# CONFIG_BLK_DEV_IDETAPE is not set
-CONFIG_IDE_GENERIC=m
-# CONFIG_BLK_DEV_OFFBOARD is not set
-# CONFIG_BLK_DEV_GENERIC is not set
-# CONFIG_BLK_DEV_OPTI621 is not set
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_BLK_DEV_TRIFLEX is not set
-# CONFIG_BLK_DEV_CY82C693 is not set
-# CONFIG_BLK_DEV_CS5520 is not set
-# CONFIG_BLK_DEV_CS5530 is not set
-# CONFIG_BLK_DEV_HPT366 is not set
-# CONFIG_BLK_DEV_SC1200 is not set
-# CONFIG_BLK_DEV_PIIX is not set
-CONFIG_BLK_DEV_NS87415=m
-# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-# CONFIG_BLK_DEV_SVWKS is not set
-# CONFIG_BLK_DEV_SIIMAGE is not set
-# CONFIG_BLK_DEV_SLC90E66 is not set
-# CONFIG_BLK_DEV_TRM290 is not set
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-
-##
 ## file: drivers/input/Kconfig
 ##
 # CONFIG_INPUT_JOYDEV is not set
@@ -651,30 +624,11 @@
 CONFIG_FONT_8x16=y
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_LOGO_PARISC_CLUT224=y
-
-##
 ## file: drivers/w1/Kconfig
 ##
 # CONFIG_W1 is not set
 
 ##
-## file: fs/cramfs/Kconfig
-##
-CONFIG_CRAMFS=y
-
-##
-## file: fs/ext2/Kconfig
-##
-CONFIG_EXT2_FS=y
-
-##
 ## file: fs/nfs/Kconfig
 ##
 CONFIG_ROOT_NFS=y
@@ -833,11 +787,3 @@
 ##
 # CONFIG_SND_HDA_INTEL is not set
 
-##
-## file: unknown
-##
-CONFIG_NET_ISA=y
-CONFIG_NET_PCI=y
-CONFIG_NET_PCMCIA=y
-CONFIG_NET_VENDOR_SMC=y
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/i386/defines
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/i386/defines	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/i386/defines	Sat Mar 10 17:58:57 2012	(r18803)
@@ -1,8 +1,7 @@
 [base]
-flavours:
- 486
- 686-pae
- amd64
+featuresets:
+ none
+ rt
 kernel-arch: x86
 
 [description]
@@ -31,30 +30,18 @@
 [686-pae_description]
 hardware: modern PCs
 hardware-long: PCs with one or more processors supporting PAE
-parts: pae xen
+parts: pae
 
 [686-pae_image]
 configs:
  kernelarch-x86/config-arch-32
 recommends: libc6-i686
 
-[686-pae_xen]
-dom0-support: true
-flavours:
- i386
- amd64
-
 [amd64_description]
 hardware: 64-bit PCs
 hardware-long: PCs with AMD64 or Intel 64 processors
-parts: xen
 
 [amd64_image]
 configs:
  kernelarch-x86/config-arch-64
 recommends: libc6-i686
-
-[amd64_xen]
-dom0-support: true
-flavours:
- amd64

Copied: dists/squeeze-backports/linux-2.6/debian/config/i386/none/defines (from r18788, dists/sid/linux-2.6/debian/config/i386/none/defines)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/config/i386/none/defines	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/config/i386/none/defines)
@@ -0,0 +1,22 @@
+[base]
+flavours:
+ 486
+ 686-pae
+ amd64
+
+[686-pae_description]
+parts: xen
+
+[686-pae_xen]
+dom0-support: true
+flavours:
+ i386
+ amd64
+
+[amd64_description]
+parts: xen
+
+[amd64_xen]
+dom0-support: true
+flavours:
+ amd64

Modified: dists/squeeze-backports/linux-2.6/debian/config/ia64/config
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/ia64/config	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/ia64/config	Sat Mar 10 17:58:57 2012	(r18803)
@@ -58,6 +58,8 @@
 CONFIG_PATA_CS5520=m
 CONFIG_PATA_CS5530=m
 CONFIG_PATA_EFAR=m
+CONFIG_PATA_HPT366=m
+CONFIG_PATA_HPT37X=m
 CONFIG_PATA_NETCELL=m
 CONFIG_PATA_NS87415=m
 CONFIG_PATA_OLDPIIX=m
@@ -70,6 +72,8 @@
 CONFIG_PATA_VIA=m
 CONFIG_PATA_MPIIX=m
 CONFIG_PATA_NS87410=m
+CONFIG_PATA_OPTI=m
+CONFIG_PATA_LEGACY=m
 
 ##
 ## file: drivers/block/Kconfig
@@ -231,19 +235,18 @@
 # CONFIG_BLK_DEV_IDECS is not set
 CONFIG_BLK_DEV_IDECD=m
 CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_IDE_GENERIC=m
+# CONFIG_IDE_GENERIC is not set
 # CONFIG_BLK_DEV_IDEPNP is not set
 # CONFIG_BLK_DEV_GENERIC is not set
-CONFIG_BLK_DEV_OPTI621=m
+# CONFIG_BLK_DEV_OPTI621 is not set
 # CONFIG_BLK_DEV_AEC62XX is not set
 # CONFIG_BLK_DEV_ALI15X3 is not set
 # CONFIG_BLK_DEV_AMD74XX is not set
 # CONFIG_BLK_DEV_CMD64X is not set
 # CONFIG_BLK_DEV_TRIFLEX is not set
-CONFIG_BLK_DEV_CY82C693=m
 # CONFIG_BLK_DEV_CS5520 is not set
 # CONFIG_BLK_DEV_CS5530 is not set
-CONFIG_BLK_DEV_HPT366=m
+# CONFIG_BLK_DEV_HPT366 is not set
 # CONFIG_BLK_DEV_SC1200 is not set
 # CONFIG_BLK_DEV_PIIX is not set
 # CONFIG_BLK_DEV_NS87415 is not set
@@ -756,14 +759,6 @@
 CONFIG_FONT_8x16=y
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-
-##
 ## file: fs/partitions/Kconfig
 ##
 CONFIG_ACORN_PARTITION=y
@@ -786,7 +781,6 @@
 CONFIG_SGI_PARTITION=y
 CONFIG_ULTRIX_PARTITION=y
 CONFIG_SUN_PARTITION=y
-CONFIG_EFI_PARTITION=y
 
 ##
 ## file: net/ax25/Kconfig
@@ -880,9 +874,3 @@
 ##
 CONFIG_SND_HDA_INTEL=m
 
-##
-## file: unknown
-##
-CONFIG_NET_PCI=y
-CONFIG_NET_PCMCIA=y
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/kernelarch-x86/config
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/kernelarch-x86/config	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/kernelarch-x86/config	Sat Mar 10 17:58:57 2012	(r18803)
@@ -152,6 +152,8 @@
 CONFIG_PATA_CS5520=m
 CONFIG_PATA_CS5530=m
 CONFIG_PATA_EFAR=m
+CONFIG_PATA_HPT366=m
+CONFIG_PATA_HPT37X=m
 CONFIG_PATA_NETCELL=m
 CONFIG_PATA_NS87415=m
 CONFIG_PATA_OLDPIIX=m
@@ -516,46 +518,6 @@
 CONFIG_SCx200_ACB=m
 
 ##
-## file: drivers/ide/Kconfig
-##
-CONFIG_IDE=m
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=m
-# CONFIG_BLK_DEV_IDECS is not set
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-# CONFIG_BLK_DEV_IDEACPI is not set
-CONFIG_IDE_GENERIC=m
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-CONFIG_BLK_DEV_IDEPNP=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-# CONFIG_BLK_DEV_GENERIC is not set
-CONFIG_BLK_DEV_OPTI621=m
-# CONFIG_BLK_DEV_RZ1000 is not set
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_BLK_DEV_ATIIXP is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_BLK_DEV_TRIFLEX is not set
-CONFIG_BLK_DEV_CY82C693=m
-# CONFIG_BLK_DEV_CS5520 is not set
-# CONFIG_BLK_DEV_CS5530 is not set
-CONFIG_BLK_DEV_HPT366=m
-# CONFIG_BLK_DEV_SC1200 is not set
-# CONFIG_BLK_DEV_PIIX is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-# CONFIG_BLK_DEV_SVWKS is not set
-# CONFIG_BLK_DEV_SIIMAGE is not set
-# CONFIG_BLK_DEV_SIS5513 is not set
-# CONFIG_BLK_DEV_SLC90E66 is not set
-CONFIG_BLK_DEV_TRM290=m
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-
-##
 ## file: drivers/idle/Kconfig
 ##
 CONFIG_INTEL_IDLE=y
@@ -622,6 +584,13 @@
 CONFIG_INPUT_TOUCHSCREEN=y
 
 ##
+## file: drivers/iommu/Kconfig
+##
+CONFIG_INTEL_IOMMU=y
+# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
+CONFIG_IRQ_REMAP=y
+
+##
 ## file: drivers/isdn/Kconfig
 ##
 CONFIG_ISDN=y
@@ -1537,11 +1506,6 @@
 CONFIG_FONT_8x16=y
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-# CONFIG_LOGO is not set
-
-##
 ## file: drivers/watchdog/Kconfig
 ##
 CONFIG_ACQUIRE_WDT=m
@@ -1609,7 +1573,6 @@
 CONFIG_SGI_PARTITION=y
 CONFIG_ULTRIX_PARTITION=y
 CONFIG_SUN_PARTITION=y
-CONFIG_EFI_PARTITION=y
 
 ##
 ## file: kernel/irq/Kconfig
@@ -1774,15 +1737,3 @@
 ##
 CONFIG_SND_HDA_INTEL=m
 
-##
-## file: unknown
-##
-CONFIG_DMAR=y
-# CONFIG_DMAR_DEFAULT_ON is not set
-# CONFIG_ET131X_DEBUG is not set
-CONFIG_INTR_REMAP=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_POHMELFS_CRYPTO=y
-# CONFIG_XEN_DEBUG is not set
-CONFIG_XEN_PLATFORM_PCI=y
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/kernelarch-x86/config-arch-32
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/kernelarch-x86/config-arch-32	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/kernelarch-x86/config-arch-32	Sat Mar 10 17:58:57 2012	(r18803)
@@ -62,8 +62,11 @@
 ##
 ## file: drivers/ata/Kconfig
 ##
-# CONFIG_PATA_CS5535 is not set
+CONFIG_PATA_CS5535=m
 CONFIG_PATA_CS5536=m
+CONFIG_PATA_ISAPNP=m
+CONFIG_PATA_OPTI=m
+CONFIG_PATA_LEGACY=m
 
 ##
 ## file: drivers/atm/Kconfig
@@ -153,18 +156,6 @@
 CONFIG_SCx200_I2C_SDA=13
 
 ##
-## file: drivers/ide/Kconfig
-##
-CONFIG_BLK_DEV_CS5535=m
-# CONFIG_BLK_DEV_CS5536 is not set
-# CONFIG_BLK_DEV_4DRIVES is not set
-# CONFIG_BLK_DEV_ALI14XX is not set
-# CONFIG_BLK_DEV_DTC2278 is not set
-# CONFIG_BLK_DEV_HT6560B is not set
-# CONFIG_BLK_DEV_QD65XX is not set
-# CONFIG_BLK_DEV_UMC8672 is not set
-
-##
 ## file: drivers/input/misc/Kconfig
 ##
 CONFIG_INPUT_WISTRON_BTNS=m
@@ -574,8 +565,3 @@
 ##
 CONFIG_SND_SIS7019=m
 
-##
-## file: unknown
-##
-CONFIG_CS5535_GPIO=m
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/kernelarch-x86/config-arch-64
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/kernelarch-x86/config-arch-64	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/kernelarch-x86/config-arch-64	Sat Mar 10 17:58:57 2012	(r18803)
@@ -53,11 +53,6 @@
 CONFIG_I2C_STUB=m
 
 ##
-## file: drivers/ide/Kconfig
-##
-# CONFIG_IDEPCI_PCIBUS_ORDER is not set
-
-##
 ## file: drivers/input/mouse/Kconfig
 ##
 CONFIG_MOUSE_PS2_LOGIPS2PP=y
@@ -70,10 +65,6 @@
 ##
 CONFIG_AMD_IOMMU=y
 # CONFIG_AMD_IOMMU_STATS is not set
-CONFIG_INTEL_IOMMU=y
-# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
-CONFIG_INTEL_IOMMU_FLOPPY_WA=y
-CONFIG_IRQ_REMAP=y
 
 ##
 ## file: drivers/macintosh/Kconfig

Modified: dists/squeeze-backports/linux-2.6/debian/config/m68k/config
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/m68k/config	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/m68k/config	Sat Mar 10 17:58:57 2012	(r18803)
@@ -11,8 +11,6 @@
 ##
 ## file: drivers/block/Kconfig
 ##
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=4096
 # CONFIG_CDROM_PKTCDVD is not set
 
@@ -101,7 +99,6 @@
 ##
 CONFIG_NETDEVICES=y
 # CONFIG_BONDING is not set
-CONFIG_EQUALIZER=m
 # CONFIG_NETPOLL_TRAP is not set
 # CONFIG_TUN is not set
 
@@ -188,11 +185,6 @@
 # CONFIG_CIFS is not set
 
 ##
-## file: fs/cramfs/Kconfig
-##
-CONFIG_CRAMFS=m
-
-##
 ## file: fs/efs/Kconfig
 ##
 # CONFIG_EFS_FS is not set
@@ -200,12 +192,18 @@
 ##
 ## file: fs/ext2/Kconfig
 ##
-CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS is not set
 
 ##
 ## file: fs/ext3/Kconfig
 ##
-CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS is not set
+
+##
+## file: fs/ext4/Kconfig
+##
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_USE_FOR_EXT23=y
 
 ##
 ## file: fs/freevxfs/Kconfig

Modified: dists/squeeze-backports/linux-2.6/debian/config/m68k/config.amiga
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/m68k/config.amiga	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/m68k/config.amiga	Sat Mar 10 17:58:57 2012	(r18803)
@@ -246,14 +246,6 @@
 CONFIG_FONT_PEARL_8x8=y
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-
-##
 ## file: drivers/zorro/Kconfig
 ##
 CONFIG_ZORRO_NAMES=y
@@ -264,16 +256,6 @@
 CONFIG_AFFS_FS=y
 
 ##
-## file: fs/hfs/Kconfig
-##
-CONFIG_HFS_FS=m
-
-##
-## file: fs/hfsplus/Kconfig
-##
-CONFIG_HFSPLUS_FS=m
-
-##
 ## file: fs/partitions/Kconfig
 ##
 # CONFIG_PARTITION_ADVANCED is not set
@@ -318,9 +300,6 @@
 # CONFIG_FB_CYBER is not set
 # CONFIG_FB_RETINAZ3 is not set
 # CONFIG_FB_VIRGE is not set
-CONFIG_NET_ETHERNET=y
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_PCI is not set
 # CONFIG_NET_VENDOR_SMC is not set
 # CONFIG_OKTAGON_SCSI is not set
 CONFIG_SCSI_AMIGA7XX=y

Modified: dists/squeeze-backports/linux-2.6/debian/config/m68k/config.atari
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/m68k/config.atari	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/m68k/config.atari	Sat Mar 10 17:58:57 2012	(r18803)
@@ -124,7 +124,6 @@
 ##
 ## file: drivers/rtc/Kconfig
 ##
-CONFIG_RTC_CLASS=y
 CONFIG_RTC_DRV_GENERIC=y
 
 ##
@@ -159,26 +158,6 @@
 CONFIG_FONT_8x16=y
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-# CONFIG_LOGO is not set
-
-##
-## file: fs/affs/Kconfig
-##
-CONFIG_AFFS_FS=m
-
-##
-## file: fs/hfs/Kconfig
-##
-CONFIG_HFS_FS=m
-
-##
-## file: fs/hfsplus/Kconfig
-##
-CONFIG_HFSPLUS_FS=m
-
-##
 ## file: fs/nfs/Kconfig
 ##
 # CONFIG_NFS_V4 is not set
@@ -200,16 +179,6 @@
 # CONFIG_UFS_FS_WRITE is not set
 
 ##
-## file: lib/Kconfig
-##
-CONFIG_CRC32=y
-
-##
-## file: net/ipv4/Kconfig
-##
-# CONFIG_IP_PNP is not set
-
-##
 ## file: net/ipx/Kconfig
 ##
 CONFIG_IPX=m
@@ -232,6 +201,5 @@
 CONFIG_ATARI_ROM_ISA=y
 CONFIG_ATARI_SCC=y
 CONFIG_ATARI_SCC_DMA=y
-CONFIG_NET_ETHERNET=y
 CONFIG_STRAM_PROC=y
 

Modified: dists/squeeze-backports/linux-2.6/debian/config/m68k/config.bvme6000
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/m68k/config.bvme6000	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/m68k/config.bvme6000	Sat Mar 10 17:58:57 2012	(r18803)
@@ -39,11 +39,6 @@
 # CONFIG_FIREWIRE is not set
 
 ##
-## file: drivers/ide/Kconfig
-##
-# CONFIG_IDE is not set
-
-##
 ## file: drivers/input/joystick/Kconfig
 ##
 # CONFIG_INPUT_JOYSTICK is not set
@@ -133,5 +128,4 @@
 ## file: unknown
 ##
 CONFIG_BVME6000_SCC=y
-CONFIG_NET_ETHERNET=y
 

Modified: dists/squeeze-backports/linux-2.6/debian/config/m68k/config.mac
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/m68k/config.mac	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/m68k/config.mac	Sat Mar 10 17:58:57 2012	(r18803)
@@ -158,20 +158,6 @@
 CONFIG_FONT_6x11=y
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-CONFIG_LOGO_MAC_CLUT224=y
-
-##
-## file: fs/affs/Kconfig
-##
-CONFIG_AFFS_FS=m
-
-##
 ## file: fs/hfs/Kconfig
 ##
 CONFIG_HFS_FS=y
@@ -221,6 +207,5 @@
 ## file: unknown
 ##
 CONFIG_MAC_SCC=y
-CONFIG_NET_ETHERNET=y
 # CONFIG_NET_VENDOR_SMC is not set
 

Modified: dists/squeeze-backports/linux-2.6/debian/config/m68k/config.mvme147
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/m68k/config.mvme147	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/m68k/config.mvme147	Sat Mar 10 17:58:57 2012	(r18803)
@@ -34,11 +34,6 @@
 CONFIG_GEN_RTC=m
 
 ##
-## file: drivers/ide/Kconfig
-##
-# CONFIG_IDE is not set
-
-##
 ## file: drivers/input/joystick/Kconfig
 ##
 # CONFIG_INPUT_JOYSTICK is not set
@@ -100,14 +95,6 @@
 CONFIG_FONT_8x16=y
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-
-##
 ## file: fs/nfs/Kconfig
 ##
 CONFIG_NFS_FS=y
@@ -141,5 +128,4 @@
 ## file: unknown
 ##
 CONFIG_MVME147_SCC=y
-CONFIG_NET_ETHERNET=y
 

Modified: dists/squeeze-backports/linux-2.6/debian/config/m68k/config.mvme16x
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/m68k/config.mvme16x	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/m68k/config.mvme16x	Sat Mar 10 17:58:57 2012	(r18803)
@@ -39,11 +39,6 @@
 # CONFIG_FIREWIRE is not set
 
 ##
-## file: drivers/ide/Kconfig
-##
-# CONFIG_IDE is not set
-
-##
 ## file: drivers/input/joystick/Kconfig
 ##
 # CONFIG_INPUT_JOYSTICK is not set
@@ -105,14 +100,6 @@
 CONFIG_FONT_8x16=y
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
-CONFIG_LOGO_LINUX_CLUT224=y
-
-##
 ## file: fs/nfs/Kconfig
 ##
 CONFIG_NFS_FS=y
@@ -146,5 +133,4 @@
 ## file: unknown
 ##
 CONFIG_MVME162_SCC=y
-CONFIG_NET_ETHERNET=y
 

Modified: dists/squeeze-backports/linux-2.6/debian/config/m68k/defines
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/m68k/defines	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/m68k/defines	Sat Mar 10 17:58:57 2012	(r18803)
@@ -5,12 +5,9 @@
  amiga
  atari
  bvme6000
-# hp
  mac
  mvme147
  mvme16x
-# q40
-# sun3
 kernel-arch: m68k
 
 [image]
@@ -26,9 +23,6 @@
 [bvme6000_description]
 hardware: BVM BVME4000 and BVME6000
 
-[hp_description]
-hardware: HP
-
 [mac_description]
 hardware: Macintosh
 
@@ -38,9 +32,3 @@
 [mvme16x_description]
 hardware: Motorola MVME162/6/7, MVME172/7
 
-[q40_description]
-hardware: Q40 and Q60
-
-[sun3_description]
-hardware: sun3
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/mips/config
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/mips/config	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/mips/config	Sat Mar 10 17:58:57 2012	(r18803)
@@ -5,11 +5,5 @@
 CONFIG_CPU_BIG_ENDIAN=y
 # CONFIG_CPU_LITTLE_ENDIAN is not set
 ## end choice
-CONFIG_SECCOMP=y
 # CONFIG_RAPIDIO is not set
 
-##
-## file: drivers/net/ethernet/sun/Kconfig
-##
-# CONFIG_NIU is not set
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/mips/config.4kc-malta
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/mips/config.4kc-malta	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/mips/config.4kc-malta	Sat Mar 10 17:58:57 2012	(r18803)
@@ -147,8 +147,6 @@
 CONFIG_BLK_DEV_UMEM=m
 CONFIG_BLK_DEV_SX8=m
 # CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=65536
 CONFIG_CDROM_PKTCDVD=m
 CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -317,11 +315,6 @@
 # CONFIG_I2C_STUB is not set
 
 ##
-## file: drivers/ide/Kconfig
-##
-# CONFIG_IDE is not set
-
-##
 ## file: drivers/input/gameport/Kconfig
 ##
 CONFIG_GAMEPORT=m
@@ -1060,11 +1053,6 @@
 CONFIG_DISPLAY_SUPPORT=m
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-
-##
 ## file: drivers/watchdog/Kconfig
 ##
 CONFIG_PCIPCWATCHDOG=m
@@ -1072,27 +1060,12 @@
 CONFIG_USBPCWATCHDOG=m
 
 ##
-## file: fs/cramfs/Kconfig
-##
-CONFIG_CRAMFS=y
-
-##
 ## file: fs/dlm/Kconfig
 ##
 CONFIG_DLM=m
 # CONFIG_DLM_DEBUG is not set
 
 ##
-## file: fs/ext2/Kconfig
-##
-CONFIG_EXT2_FS=y
-
-##
-## file: fs/ext3/Kconfig
-##
-CONFIG_EXT3_FS=y
-
-##
 ## file: fs/nfs/Kconfig
 ##
 CONFIG_NFS_FS=y
@@ -1267,14 +1240,3 @@
 ##
 CONFIG_SND_HDA_INTEL=m
 
-##
-## file: unknown
-##
-# CONFIG_BASLER_EXCITE is not set
-# CONFIG_MTD_DEBUG is not set
-CONFIG_NETDEV_1000=y
-CONFIG_NET_PCI=y
-CONFIG_NET_POCKET=y
-# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
-CONFIG_VIRTUALIZATION=y
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/mips/config.5kc-malta
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/mips/config.5kc-malta	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/mips/config.5kc-malta	Sat Mar 10 17:58:57 2012	(r18803)
@@ -150,8 +150,6 @@
 CONFIG_BLK_DEV_UMEM=m
 CONFIG_BLK_DEV_SX8=m
 # CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=65536
 CONFIG_CDROM_PKTCDVD=m
 CONFIG_CDROM_PKTCDVD_BUFFERS=8
@@ -320,11 +318,6 @@
 # CONFIG_I2C_STUB is not set
 
 ##
-## file: drivers/ide/Kconfig
-##
-# CONFIG_IDE is not set
-
-##
 ## file: drivers/input/gameport/Kconfig
 ##
 CONFIG_GAMEPORT=m
@@ -1064,11 +1057,6 @@
 CONFIG_DISPLAY_SUPPORT=m
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-
-##
 ## file: drivers/watchdog/Kconfig
 ##
 CONFIG_PCIPCWATCHDOG=m
@@ -1076,27 +1064,12 @@
 CONFIG_USBPCWATCHDOG=m
 
 ##
-## file: fs/cramfs/Kconfig
-##
-CONFIG_CRAMFS=y
-
-##
 ## file: fs/dlm/Kconfig
 ##
 CONFIG_DLM=m
 # CONFIG_DLM_DEBUG is not set
 
 ##
-## file: fs/ext2/Kconfig
-##
-CONFIG_EXT2_FS=y
-
-##
-## file: fs/ext3/Kconfig
-##
-CONFIG_EXT3_FS=y
-
-##
 ## file: fs/nfs/Kconfig
 ##
 CONFIG_NFS_FS=y
@@ -1271,14 +1244,3 @@
 ##
 CONFIG_SND_HDA_INTEL=m
 
-##
-## file: unknown
-##
-# CONFIG_BASLER_EXCITE is not set
-# CONFIG_MTD_DEBUG is not set
-CONFIG_NETDEV_1000=y
-CONFIG_NET_PCI=y
-CONFIG_NET_POCKET=y
-# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
-CONFIG_VIRTUALIZATION=y
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/mips/config.octeon
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/mips/config.octeon	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/mips/config.octeon	Sat Mar 10 17:58:57 2012	(r18803)
@@ -93,10 +93,6 @@
 CONFIG_OCTEON_MGMT_ETHERNET=y
 
 ##
-## file: drivers/net/phy/Kconfig
-##
-
-##
 ## file: drivers/rtc/Kconfig
 ##
 CONFIG_RTC_DRV_DS1307=y
@@ -121,16 +117,6 @@
 CONFIG_SERIAL_8250_RUNTIME_UARTS=2
 
 ##
-## file: fs/ext2/Kconfig
-##
-CONFIG_EXT2_FS=y
-
-##
-## file: fs/ext3/Kconfig
-##
-CONFIG_EXT3_FS=y
-
-##
 ## file: kernel/power/Kconfig
 ##
 # CONFIG_SUSPEND is not set
@@ -144,9 +130,3 @@
 CONFIG_SPARSEMEM_MANUAL=y
 ## end choice
 
-##
-## file: unknown
-##
-CONFIG_CAVIUM_OCTEON_SPECIFIC_OPTIONS=y
-CONFIG_MTD_PARTITIONS=y
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/mips/config.r4k-ip22
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/mips/config.r4k-ip22	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/mips/config.r4k-ip22	Sat Mar 10 17:58:57 2012	(r18803)
@@ -105,8 +105,6 @@
 ##
 ## file: drivers/block/Kconfig
 ##
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=8192
 # CONFIG_CDROM_PKTCDVD is not set
 
@@ -192,11 +190,6 @@
 # CONFIG_I2C_STUB is not set
 
 ##
-## file: drivers/ide/Kconfig
-##
-# CONFIG_IDE is not set
-
-##
 ## file: drivers/input/Kconfig
 ##
 # CONFIG_INPUT_JOYDEV is not set
@@ -474,15 +467,6 @@
 CONFIG_FONT_8x16=y
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_SGI_CLUT224=y
-
-##
 ## file: drivers/w1/Kconfig
 ##
 # CONFIG_W1 is not set
@@ -496,21 +480,6 @@
 # CONFIG_WDT is not set
 
 ##
-## file: fs/cramfs/Kconfig
-##
-CONFIG_CRAMFS=y
-
-##
-## file: fs/ext2/Kconfig
-##
-CONFIG_EXT2_FS=y
-
-##
-## file: fs/ext3/Kconfig
-##
-CONFIG_EXT3_FS=y
-
-##
 ## file: fs/partitions/Kconfig
 ##
 CONFIG_SGI_PARTITION=y
@@ -579,17 +548,3 @@
 CONFIG_SND_MIPS=y
 CONFIG_SND_SGI_HAL2=m
 
-##
-## file: unknown
-##
-# CONFIG_MIPS_ATLAS is not set
-# CONFIG_MIPS_SEAD is not set
-CONFIG_NET_ISA=y
-# CONFIG_NET_PCI is not set
-# CONFIG_NET_POCKET is not set
-CONFIG_NET_VENDOR_SMC=y
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/mips/config.r5k-ip32
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/mips/config.r5k-ip32	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/mips/config.r5k-ip32	Sat Mar 10 17:58:57 2012	(r18803)
@@ -104,8 +104,6 @@
 ##
 ## file: drivers/block/Kconfig
 ##
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=8192
 # CONFIG_CDROM_PKTCDVD is not set
 
@@ -219,11 +217,6 @@
 # CONFIG_SCx200_ACB is not set
 
 ##
-## file: drivers/ide/Kconfig
-##
-# CONFIG_IDE is not set
-
-##
 ## file: drivers/infiniband/Kconfig
 ##
 # CONFIG_INFINIBAND is not set
@@ -257,6 +250,7 @@
 ## file: drivers/input/misc/Kconfig
 ##
 CONFIG_INPUT_MISC=y
+CONFIG_INPUT_SGI_BTNS=m
 
 ##
 ## file: drivers/input/mouse/Kconfig
@@ -588,15 +582,6 @@
 CONFIG_FONT_8x16=y
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_SGI_CLUT224=y
-
-##
 ## file: drivers/w1/Kconfig
 ##
 # CONFIG_W1 is not set
@@ -608,21 +593,6 @@
 # CONFIG_WDTPCI is not set
 
 ##
-## file: fs/cramfs/Kconfig
-##
-CONFIG_CRAMFS=y
-
-##
-## file: fs/ext2/Kconfig
-##
-CONFIG_EXT2_FS=y
-
-##
-## file: fs/ext3/Kconfig
-##
-CONFIG_EXT3_FS=y
-
-##
 ## file: fs/partitions/Kconfig
 ##
 CONFIG_SGI_PARTITION=y
@@ -715,16 +685,3 @@
 ##
 # CONFIG_SND_HDA_INTEL is not set
 
-##
-## file: unknown
-##
-CONFIG_INPUT_SGIO2_BTNS=m
-# CONFIG_MIPS_ATLAS is not set
-# CONFIG_MIPS_SEAD is not set
-CONFIG_NET_PCI=y
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-# CONFIG_VIDEO_SAA5246A is not set
-# CONFIG_VIDEO_SAA5249 is not set
-# CONFIG_VIDEO_STRADIS is not set
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/mips/config.sb1-bcm91250a
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/mips/config.sb1-bcm91250a	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/mips/config.sb1-bcm91250a	Sat Mar 10 17:58:57 2012	(r18803)
@@ -163,8 +163,6 @@
 # CONFIG_BLK_DEV_UMEM is not set
 # CONFIG_BLK_DEV_SX8 is not set
 # CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=8192
 # CONFIG_CDROM_PKTCDVD is not set
 
@@ -277,11 +275,6 @@
 # CONFIG_SCx200_ACB is not set
 
 ##
-## file: drivers/ide/Kconfig
-##
-# CONFIG_IDE is not set
-
-##
 ## file: drivers/infiniband/Kconfig
 ##
 # CONFIG_INFINIBAND is not set
@@ -743,14 +736,6 @@
 CONFIG_FONT_8x16=y
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-
-##
 ## file: drivers/w1/Kconfig
 ##
 # CONFIG_W1 is not set
@@ -763,21 +748,6 @@
 # CONFIG_USBPCWATCHDOG is not set
 
 ##
-## file: fs/cramfs/Kconfig
-##
-CONFIG_CRAMFS=y
-
-##
-## file: fs/ext2/Kconfig
-##
-CONFIG_EXT2_FS=y
-
-##
-## file: fs/ext3/Kconfig
-##
-CONFIG_EXT3_FS=y
-
-##
 ## file: fs/nfs/Kconfig
 ##
 CONFIG_NFS_FS=y
@@ -840,16 +810,3 @@
 ##
 # CONFIG_WAN_ROUTER is not set
 
-##
-## file: unknown
-##
-CONFIG_BLK_DEV_IDE_SWARM=y
-# CONFIG_LAN_SAA9730 is not set
-# CONFIG_MIPS_ATLAS is not set
-# CONFIG_MIPS_SEAD is not set
-CONFIG_NETDEV_1000=y
-CONFIG_NET_PCI=y
-# CONFIG_NET_POCKET is not set
-CONFIG_SIBYTE_CFE=y
-# CONFIG_SIMULATION is not set
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/mips/config.sb1a-bcm91480b
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/mips/config.sb1a-bcm91480b	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/mips/config.sb1a-bcm91480b	Sat Mar 10 17:58:57 2012	(r18803)
@@ -163,8 +163,6 @@
 # CONFIG_BLK_DEV_UMEM is not set
 # CONFIG_BLK_DEV_SX8 is not set
 # CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=8192
 # CONFIG_CDROM_PKTCDVD is not set
 
@@ -283,11 +281,6 @@
 # CONFIG_SCx200_ACB is not set
 
 ##
-## file: drivers/ide/Kconfig
-##
-# CONFIG_IDE is not set
-
-##
 ## file: drivers/infiniband/Kconfig
 ##
 # CONFIG_INFINIBAND is not set
@@ -749,14 +742,6 @@
 CONFIG_FONT_8x16=y
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-
-##
 ## file: drivers/w1/Kconfig
 ##
 # CONFIG_W1 is not set
@@ -769,21 +754,6 @@
 # CONFIG_USBPCWATCHDOG is not set
 
 ##
-## file: fs/cramfs/Kconfig
-##
-CONFIG_CRAMFS=y
-
-##
-## file: fs/ext2/Kconfig
-##
-CONFIG_EXT2_FS=y
-
-##
-## file: fs/ext3/Kconfig
-##
-CONFIG_EXT3_FS=y
-
-##
 ## file: fs/nfs/Kconfig
 ##
 CONFIG_NFS_FS=y
@@ -846,16 +816,3 @@
 ##
 # CONFIG_WAN_ROUTER is not set
 
-##
-## file: unknown
-##
-# CONFIG_BLK_DEV_IDE_SWARM is not set
-# CONFIG_LAN_SAA9730 is not set
-# CONFIG_MIPS_ATLAS is not set
-# CONFIG_MIPS_SEAD is not set
-CONFIG_NETDEV_1000=y
-CONFIG_NET_PCI=y
-# CONFIG_NET_POCKET is not set
-CONFIG_SIBYTE_CFE=y
-# CONFIG_SIMULATION is not set
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/mips/defines
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/mips/defines	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/mips/defines	Sat Mar 10 17:58:57 2012	(r18803)
@@ -9,7 +9,15 @@
  octeon
 kernel-arch: mips
 
+[abi]
+ignore-changes:
+# Removal of EXT3_FS
+ journal_* log_start_commit log_wait_commit
+
 [image]
+configs:
+ kernelarch-mips/config
+ mips/config
 initramfs: false
 
 [r4k-ip22_description]

Modified: dists/squeeze-backports/linux-2.6/debian/config/mipsel/config
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/mipsel/config	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/mipsel/config	Sat Mar 10 17:58:57 2012	(r18803)
@@ -5,10 +5,4 @@
 # CONFIG_CPU_BIG_ENDIAN is not set
 CONFIG_CPU_LITTLE_ENDIAN=y
 ## end choice
-CONFIG_SECCOMP=y
-
-##
-## file: drivers/net/ethernet/sun/Kconfig
-##
-# CONFIG_NIU is not set
 

Modified: dists/squeeze-backports/linux-2.6/debian/config/mipsel/config.loongson-2f
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/mipsel/config.loongson-2f	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/mipsel/config.loongson-2f	Sat Mar 10 17:58:57 2012	(r18803)
@@ -126,18 +126,3 @@
 # CONFIG_VGA_CONSOLE is not set
 CONFIG_FRAMEBUFFER_CONSOLE=y
 
-##
-## file: fs/ext2/Kconfig
-##
-CONFIG_EXT2_FS=y
-
-##
-## file: fs/ext3/Kconfig
-##
-CONFIG_EXT3_FS=y
-
-##
-## file: unknown
-##
-CONFIG_NET_PCI=y
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/mipsel/config.r5k-cobalt
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/mipsel/config.r5k-cobalt	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/mipsel/config.r5k-cobalt	Sat Mar 10 17:58:57 2012	(r18803)
@@ -111,8 +111,6 @@
 # CONFIG_BLK_DEV_UMEM is not set
 # CONFIG_BLK_DEV_SX8 is not set
 # CONFIG_BLK_DEV_UB is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=8192
 # CONFIG_CDROM_PKTCDVD is not set
 
@@ -165,11 +163,6 @@
 # CONFIG_I2C is not set
 
 ##
-## file: drivers/ide/Kconfig
-##
-# CONFIG_IDE is not set
-
-##
 ## file: drivers/infiniband/Kconfig
 ##
 # CONFIG_INFINIBAND is not set
@@ -713,21 +706,6 @@
 # CONFIG_W1 is not set
 
 ##
-## file: fs/cramfs/Kconfig
-##
-CONFIG_CRAMFS=y
-
-##
-## file: fs/ext2/Kconfig
-##
-CONFIG_EXT2_FS=y
-
-##
-## file: fs/ext3/Kconfig
-##
-CONFIG_EXT3_FS=y
-
-##
 ## file: fs/partitions/Kconfig
 ##
 CONFIG_MSDOS_PARTITION=y
@@ -846,13 +824,3 @@
 ##
 CONFIG_SND_HDA_INTEL=m
 
-##
-## file: unknown
-##
-# CONFIG_LAN_SAA9730 is not set
-# CONFIG_MIPS_ATLAS is not set
-# CONFIG_MIPS_SEAD is not set
-# CONFIG_MTD_DEBUG is not set
-CONFIG_NET_PCI=y
-# CONFIG_NET_POCKET is not set
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/mipsel/defines
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/mipsel/defines	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/mipsel/defines	Sat Mar 10 17:58:57 2012	(r18803)
@@ -8,7 +8,15 @@
  loongson-2f
 kernel-arch: mips
 
+[abi]
+ignore-changes:
+# Removal of EXT3_FS
+ journal_* log_start_commit log_wait_commit
+
 [image]
+configs:
+ kernelarch-mips/config
+ mipsel/config
 initramfs: false
 
 [r5k-cobalt_description]

Modified: dists/squeeze-backports/linux-2.6/debian/config/powerpc/config
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/powerpc/config	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/powerpc/config	Sat Mar 10 17:58:57 2012	(r18803)
@@ -79,6 +79,8 @@
 ## file: drivers/ata/Kconfig
 ##
 CONFIG_ATA=y
+CONFIG_PATA_HPT366=m
+CONFIG_PATA_HPT37X=m
 CONFIG_PATA_MACIO=y
 CONFIG_PATA_NETCELL=m
 CONFIG_PATA_NS87415=m
@@ -87,6 +89,7 @@
 CONFIG_PATA_SC1200=m
 CONFIG_PATA_SIL680=m
 CONFIG_PATA_VIA=m
+CONFIG_PATA_WINBOND=m
 CONFIG_PATA_NS87410=m
 CONFIG_PATA_PCMCIA=m
 
@@ -271,42 +274,6 @@
 CONFIG_SCx200_ACB=m
 
 ##
-## file: drivers/ide/Kconfig
-##
-CONFIG_IDE=m
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=m
-CONFIG_IDE_GD_ATA=y
-# CONFIG_BLK_DEV_IDECS is not set
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-# CONFIG_IDE_GENERIC is not set
-# CONFIG_BLK_DEV_OFFBOARD is not set
-# CONFIG_BLK_DEV_GENERIC is not set
-# CONFIG_BLK_DEV_OPTI621 is not set
-# CONFIG_BLK_DEV_AEC62XX is not set
-# CONFIG_BLK_DEV_ALI15X3 is not set
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_BLK_DEV_TRIFLEX is not set
-# CONFIG_BLK_DEV_CY82C693 is not set
-# CONFIG_BLK_DEV_CS5520 is not set
-# CONFIG_BLK_DEV_CS5530 is not set
-CONFIG_BLK_DEV_HPT366=m
-# CONFIG_BLK_DEV_SC1200 is not set
-# CONFIG_BLK_DEV_PIIX is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_PDC202XX_OLD is not set
-# CONFIG_BLK_DEV_PDC202XX_NEW is not set
-# CONFIG_BLK_DEV_SVWKS is not set
-# CONFIG_BLK_DEV_SIIMAGE is not set
-CONFIG_BLK_DEV_SL82C105=m
-# CONFIG_BLK_DEV_SLC90E66 is not set
-CONFIG_BLK_DEV_TRM290=m
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-# CONFIG_BLK_DEV_IDE_PMAC is not set
-
-##
 ## file: drivers/input/gameport/Kconfig
 ##
 CONFIG_GAMEPORT=m
@@ -895,14 +862,6 @@
 CONFIG_FONT_8x16=y
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-CONFIG_LOGO_LINUX_VGA16=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-
-##
 ## file: drivers/watchdog/Kconfig
 ##
 CONFIG_WATCHDOG_RTAS=m
@@ -915,7 +874,6 @@
 ##
 CONFIG_AMIGA_PARTITION=y
 CONFIG_MAC_PARTITION=y
-CONFIG_EFI_PARTITION=y
 
 ##
 ## file: lib/Kconfig.debug
@@ -1075,10 +1033,3 @@
 CONFIG_SND_POWERMAC=m
 CONFIG_SND_POWERMAC_AUTO_DRC=y
 
-##
-## file: unknown
-##
-CONFIG_NET_PCI=y
-CONFIG_NET_PCMCIA=y
-CONFIG_PROC_PREPRESIDUAL=y
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/powerpc/config.powerpc64
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/powerpc/config.powerpc64	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/powerpc/config.powerpc64	Sat Mar 10 17:58:57 2012	(r18803)
@@ -118,6 +118,17 @@
 CONFIG_EHEA=m
 
 ##
+## file: drivers/net/ethernet/ibm/emac/Kconfig
+##
+CONFIG_IBM_EMAC=m
+# CONFIG_IBM_EMAC_DEBUG is not set
+CONFIG_IBM_EMAC_POLL_WEIGHT=32
+CONFIG_IBM_EMAC_RXB=128
+CONFIG_IBM_EMAC_RX_COPY_THRESHOLD=256
+CONFIG_IBM_EMAC_RX_SKB_HEADROOM=0
+CONFIG_IBM_EMAC_TXB=64
+
+##
 ## file: drivers/net/ethernet/marvell/Kconfig
 ##
 # CONFIG_MV643XX_ETH is not set
@@ -200,14 +211,3 @@
 CONFIG_SND_PS3=m
 CONFIG_SND_PS3_DEFAULT_START_DELAY=2000
 
-##
-## file: unknown
-##
-CONFIG_IBM_NEW_EMAC=m
-# CONFIG_IBM_NEW_EMAC_DEBUG is not set
-CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32
-CONFIG_IBM_NEW_EMAC_RXB=128
-CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256
-CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0
-CONFIG_IBM_NEW_EMAC_TXB=64
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/sh4/config.sh7751r
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/sh4/config.sh7751r	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/sh4/config.sh7751r	Sat Mar 10 17:58:57 2012	(r18803)
@@ -111,12 +111,6 @@
 ##
 ## file: drivers/rtc/Kconfig
 ##
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
 CONFIG_RTC_DRV_R9701=y
 # CONFIG_RTC_DRV_SH is not set
 # CONFIG_RTC_DRV_GENERIC is not set
@@ -179,14 +173,6 @@
 CONFIG_FONT_8x16=y
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-CONFIG_LOGO_SUPERH_MONO=y
-CONFIG_LOGO_SUPERH_VGA16=y
-CONFIG_LOGO_SUPERH_CLUT224=y
-
-##
 ## file: fs/ext3/Kconfig
 ##
 CONFIG_EXT3_FS=y
@@ -204,12 +190,3 @@
 CONFIG_FLATMEM_MANUAL=y
 ## end choice
 
-##
-## file: unknown
-##
-CONFIG_HAVE_MLOCK=y
-CONFIG_HAVE_MLOCKED_PAGE_BIT=y
-CONFIG_NET_ETHERNET=y
-CONFIG_NET_PCI=y
-CONFIG_SH_PCIDMA_NONCOHERENT=y
-

Modified: dists/squeeze-backports/linux-2.6/debian/config/sh4/config.sh7785lcr
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/sh4/config.sh7785lcr	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/sh4/config.sh7785lcr	Sat Mar 10 17:58:57 2012	(r18803)
@@ -156,12 +156,6 @@
 ##
 ## file: drivers/rtc/Kconfig
 ##
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-CONFIG_RTC_INTF_SYSFS=y
-CONFIG_RTC_INTF_PROC=y
-CONFIG_RTC_INTF_DEV=y
 CONFIG_RTC_DRV_RS5C372=y
 # CONFIG_RTC_DRV_SH is not set
 # CONFIG_RTC_DRV_GENERIC is not set
@@ -225,14 +219,6 @@
 CONFIG_FONT_8x16=y
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-CONFIG_LOGO_SUPERH_MONO=y
-CONFIG_LOGO_SUPERH_VGA16=y
-CONFIG_LOGO_SUPERH_CLUT224=y
-
-##
 ## file: drivers/watchdog/Kconfig
 ##
 CONFIG_WATCHDOG=y
@@ -262,10 +248,6 @@
 ##
 ## file: unknown
 ##
-CONFIG_HAVE_MLOCK=y
-CONFIG_HAVE_MLOCKED_PAGE_BIT=y
-CONFIG_NETDEV_1000=y
 CONFIG_PMB_ENABLE=y
 CONFIG_PMB_FIXED=y
-CONFIG_SH_PCIDMA_NONCOHERENT=y
 

Modified: dists/squeeze-backports/linux-2.6/debian/config/sparc/config
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/config/sparc/config	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/config/sparc/config	Sat Mar 10 17:58:57 2012	(r18803)
@@ -18,6 +18,22 @@
 CONFIG_SUN_OPENPROMFS=m
 
 ##
+## file: drivers/ata/Kconfig
+##
+CONFIG_PATA_ALI=m
+CONFIG_PATA_CS5520=m
+CONFIG_PATA_CS5530=m
+CONFIG_PATA_NETCELL=m
+CONFIG_PATA_NS87415=m
+CONFIG_PATA_PDC2027X=m
+CONFIG_PATA_PDC_OLD=m
+CONFIG_PATA_SERVERWORKS=m
+CONFIG_PATA_SIL680=m
+CONFIG_PATA_VIA=m
+CONFIG_PATA_NS87410=m
+CONFIG_PATA_LEGACY=m
+
+##
 ## file: drivers/block/Kconfig
 ##
 CONFIG_BLK_DEV_FD=y
@@ -137,38 +153,6 @@
 # CONFIG_I2C_STUB is not set
 
 ##
-## file: drivers/ide/Kconfig
-##
-CONFIG_IDE=y
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=y
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_IDE_GENERIC=m
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=m
-# CONFIG_BLK_DEV_OPTI621 is not set
-# CONFIG_BLK_DEV_AEC62XX is not set
-CONFIG_BLK_DEV_ALI15X3=m
-# CONFIG_BLK_DEV_AMD74XX is not set
-# CONFIG_BLK_DEV_CMD64X is not set
-# CONFIG_BLK_DEV_TRIFLEX is not set
-CONFIG_BLK_DEV_CY82C693=m
-CONFIG_BLK_DEV_CS5520=m
-CONFIG_BLK_DEV_CS5530=m
-# CONFIG_BLK_DEV_HPT366 is not set
-# CONFIG_BLK_DEV_SC1200 is not set
-# CONFIG_BLK_DEV_PIIX is not set
-CONFIG_BLK_DEV_NS87415=m
-CONFIG_BLK_DEV_PDC202XX_OLD=m
-CONFIG_BLK_DEV_PDC202XX_NEW=m
-CONFIG_BLK_DEV_SVWKS=m
-CONFIG_BLK_DEV_SIIMAGE=m
-# CONFIG_BLK_DEV_SLC90E66 is not set
-CONFIG_BLK_DEV_TRM290=m
-CONFIG_BLK_DEV_VIA82CXXX=m
-
-##
 ## file: drivers/input/Kconfig
 ##
 # CONFIG_INPUT_JOYDEV is not set
@@ -555,15 +539,6 @@
 # CONFIG_FONT_SUN12x22 is not set
 
 ##
-## file: drivers/video/logo/Kconfig
-##
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-CONFIG_LOGO_SUN_CLUT224=y
-
-##
 ## file: drivers/w1/Kconfig
 ##
 # CONFIG_W1 is not set
@@ -572,7 +547,6 @@
 ## file: fs/partitions/Kconfig
 ##
 CONFIG_SUN_PARTITION=y
-CONFIG_EFI_PARTITION=y
 
 ##
 ## file: mm/Kconfig
@@ -699,9 +673,3 @@
 CONFIG_SND_SUN_CS4231=m
 CONFIG_SND_SUN_DBRI=m
 
-##
-## file: unknown
-##
-CONFIG_MYRI_SBUS=m
-CONFIG_NET_PCI=y
-

Copied: dists/squeeze-backports/linux-2.6/debian/patches/bugfix/all/ipsec-be-careful-of-non-existing-mac-headers.patch (from r18788, dists/sid/linux-2.6/debian/patches/bugfix/all/ipsec-be-careful-of-non-existing-mac-headers.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/bugfix/all/ipsec-be-careful-of-non-existing-mac-headers.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/bugfix/all/ipsec-be-careful-of-non-existing-mac-headers.patch)
@@ -0,0 +1,142 @@
+From: Eric Dumazet <eric.dumazet at gmail.com>
+Date: Thu, 23 Feb 2012 10:55:02 +0000
+Subject: [PATCH] ipsec: be careful of non existing mac headers
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+commit 03606895cd98c0a628b17324fd7b5ff15db7e3cd upstream.
+
+Niccolo Belli reported ipsec crashes in case we handle a frame without
+mac header (atm in his case)
+
+Before copying mac header, better make sure it is present.
+
+Bugzilla reference:  https://bugzilla.kernel.org/show_bug.cgi?id=42809
+
+Reported-by: Niccolò Belli <darkbasic at linuxsystems.it>
+Tested-by: Niccolò Belli <darkbasic at linuxsystems.it>
+Signed-off-by: Eric Dumazet <eric.dumazet at gmail.com>
+Signed-off-by: David S. Miller <davem at davemloft.net>
+---
+ include/linux/skbuff.h       |   10 ++++++++++
+ net/ipv4/xfrm4_mode_beet.c   |    5 +----
+ net/ipv4/xfrm4_mode_tunnel.c |    6 ++----
+ net/ipv6/xfrm6_mode_beet.c   |    6 +-----
+ net/ipv6/xfrm6_mode_tunnel.c |    6 ++----
+ 5 files changed, 16 insertions(+), 17 deletions(-)
+
+diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
+index 50db9b0..ae86ade 100644
+--- a/include/linux/skbuff.h
++++ b/include/linux/skbuff.h
+@@ -1465,6 +1465,16 @@ static inline void skb_set_mac_header(struct sk_buff *skb, const int offset)
+ }
+ #endif /* NET_SKBUFF_DATA_USES_OFFSET */
+ 
++static inline void skb_mac_header_rebuild(struct sk_buff *skb)
++{
++	if (skb_mac_header_was_set(skb)) {
++		const unsigned char *old_mac = skb_mac_header(skb);
++
++		skb_set_mac_header(skb, -skb->mac_len);
++		memmove(skb_mac_header(skb), old_mac, skb->mac_len);
++	}
++}
++
+ static inline int skb_checksum_start_offset(const struct sk_buff *skb)
+ {
+ 	return skb->csum_start - skb_headroom(skb);
+diff --git a/net/ipv4/xfrm4_mode_beet.c b/net/ipv4/xfrm4_mode_beet.c
+index 6341818..e3db3f9 100644
+--- a/net/ipv4/xfrm4_mode_beet.c
++++ b/net/ipv4/xfrm4_mode_beet.c
+@@ -110,10 +110,7 @@ static int xfrm4_beet_input(struct xfrm_state *x, struct sk_buff *skb)
+ 
+ 	skb_push(skb, sizeof(*iph));
+ 	skb_reset_network_header(skb);
+-
+-	memmove(skb->data - skb->mac_len, skb_mac_header(skb),
+-		skb->mac_len);
+-	skb_set_mac_header(skb, -skb->mac_len);
++	skb_mac_header_rebuild(skb);
+ 
+ 	xfrm4_beet_make_header(skb);
+ 
+diff --git a/net/ipv4/xfrm4_mode_tunnel.c b/net/ipv4/xfrm4_mode_tunnel.c
+index 534972e..ed4bf11 100644
+--- a/net/ipv4/xfrm4_mode_tunnel.c
++++ b/net/ipv4/xfrm4_mode_tunnel.c
+@@ -66,7 +66,6 @@ static int xfrm4_mode_tunnel_output(struct xfrm_state *x, struct sk_buff *skb)
+ 
+ static int xfrm4_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb)
+ {
+-	const unsigned char *old_mac;
+ 	int err = -EINVAL;
+ 
+ 	if (XFRM_MODE_SKB_CB(skb)->protocol != IPPROTO_IPIP)
+@@ -84,10 +83,9 @@ static int xfrm4_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb)
+ 	if (!(x->props.flags & XFRM_STATE_NOECN))
+ 		ipip_ecn_decapsulate(skb);
+ 
+-	old_mac = skb_mac_header(skb);
+-	skb_set_mac_header(skb, -skb->mac_len);
+-	memmove(skb_mac_header(skb), old_mac, skb->mac_len);
+ 	skb_reset_network_header(skb);
++	skb_mac_header_rebuild(skb);
++
+ 	err = 0;
+ 
+ out:
+diff --git a/net/ipv6/xfrm6_mode_beet.c b/net/ipv6/xfrm6_mode_beet.c
+index a81ce94..9949a35 100644
+--- a/net/ipv6/xfrm6_mode_beet.c
++++ b/net/ipv6/xfrm6_mode_beet.c
+@@ -80,7 +80,6 @@ static int xfrm6_beet_output(struct xfrm_state *x, struct sk_buff *skb)
+ static int xfrm6_beet_input(struct xfrm_state *x, struct sk_buff *skb)
+ {
+ 	struct ipv6hdr *ip6h;
+-	const unsigned char *old_mac;
+ 	int size = sizeof(struct ipv6hdr);
+ 	int err;
+ 
+@@ -90,10 +89,7 @@ static int xfrm6_beet_input(struct xfrm_state *x, struct sk_buff *skb)
+ 
+ 	__skb_push(skb, size);
+ 	skb_reset_network_header(skb);
+-
+-	old_mac = skb_mac_header(skb);
+-	skb_set_mac_header(skb, -skb->mac_len);
+-	memmove(skb_mac_header(skb), old_mac, skb->mac_len);
++	skb_mac_header_rebuild(skb);
+ 
+ 	xfrm6_beet_make_header(skb);
+ 
+diff --git a/net/ipv6/xfrm6_mode_tunnel.c b/net/ipv6/xfrm6_mode_tunnel.c
+index 261e6e6..9f2095b 100644
+--- a/net/ipv6/xfrm6_mode_tunnel.c
++++ b/net/ipv6/xfrm6_mode_tunnel.c
+@@ -63,7 +63,6 @@ static int xfrm6_mode_tunnel_output(struct xfrm_state *x, struct sk_buff *skb)
+ static int xfrm6_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb)
+ {
+ 	int err = -EINVAL;
+-	const unsigned char *old_mac;
+ 
+ 	if (XFRM_MODE_SKB_CB(skb)->protocol != IPPROTO_IPV6)
+ 		goto out;
+@@ -80,10 +79,9 @@ static int xfrm6_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb)
+ 	if (!(x->props.flags & XFRM_STATE_NOECN))
+ 		ipip6_ecn_decapsulate(skb);
+ 
+-	old_mac = skb_mac_header(skb);
+-	skb_set_mac_header(skb, -skb->mac_len);
+-	memmove(skb_mac_header(skb), old_mac, skb->mac_len);
+ 	skb_reset_network_header(skb);
++	skb_mac_header_rebuild(skb);
++
+ 	err = 0;
+ 
+ out:
+-- 
+1.7.9.1
+

Copied: dists/squeeze-backports/linux-2.6/debian/patches/bugfix/all/iwlwifi-fix-key-removal.patch (from r18788, dists/sid/linux-2.6/debian/patches/bugfix/all/iwlwifi-fix-key-removal.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/bugfix/all/iwlwifi-fix-key-removal.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/bugfix/all/iwlwifi-fix-key-removal.patch)
@@ -0,0 +1,57 @@
+From: Johannes Berg <johannes.berg at intel.com>
+Date: Fri, 17 Feb 2012 09:47:14 -0800
+Subject: [PATCH] iwlwifi: fix key removal
+
+commit 5dcbf480473f6c3f06ad2426b7517038a2a18911 upstream.
+
+When trying to remove a key, we always send key
+flags just setting the key type, not including
+the multicast flag and the key ID. As a result,
+whenever any key was removed, the unicast key 0
+would be removed, causing a complete connection
+loss after the second rekey (the first doesn't
+cause a key removal). Fix the key removal code
+to include the key ID and multicast flag, thus
+removing the correct key.
+
+Cc: stable at vger.kernel.org
+Reported-by: Alexander Schnaidt <alex.schnaidt at googlemail.com>
+Tested-by: Alexander Schnaidt <alex.schnaidt at googlemail.com>
+Signed-off-by: Johannes Berg <johannes.berg at intel.com>
+Signed-off-by: Wey-Yi Guy <wey-yi.w.guy at intel.com>
+Signed-off-by: John W. Linville <linville at tuxdriver.com>
+---
+ drivers/net/wireless/iwlwifi/iwl-agn-sta.c |   10 +++++++++-
+ 1 files changed, 9 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c
+index 7353826..e483cfa 100644
+--- a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c
++++ b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c
+@@ -1187,6 +1187,7 @@ int iwl_remove_dynamic_key(struct iwl_priv *priv,
+ 	unsigned long flags;
+ 	struct iwl_addsta_cmd sta_cmd;
+ 	u8 sta_id = iwlagn_key_sta_id(priv, ctx->vif, sta);
++	__le16 key_flags;
+ 
+ 	/* if station isn't there, neither is the key */
+ 	if (sta_id == IWL_INVALID_STATION)
+@@ -1212,7 +1213,14 @@ int iwl_remove_dynamic_key(struct iwl_priv *priv,
+ 		IWL_ERR(priv, "offset %d not used in uCode key table.\n",
+ 			keyconf->hw_key_idx);
+ 
+-	sta_cmd.key.key_flags = STA_KEY_FLG_NO_ENC | STA_KEY_FLG_INVALID;
++	key_flags = cpu_to_le16(keyconf->keyidx << STA_KEY_FLG_KEYID_POS);
++	key_flags |= STA_KEY_FLG_MAP_KEY_MSK | STA_KEY_FLG_NO_ENC |
++		     STA_KEY_FLG_INVALID;
++
++	if (!(keyconf->flags & IEEE80211_KEY_FLAG_PAIRWISE))
++		key_flags |= STA_KEY_MULTICAST_MSK;
++
++	sta_cmd.key.key_flags = key_flags;
+ 	sta_cmd.key.key_offset = WEP_INVALID_OFFSET;
+ 	sta_cmd.sta.modify_mask = STA_MODIFY_KEY_MASK;
+ 	sta_cmd.mode = STA_CONTROL_MODIFY_MSK;
+-- 
+1.7.9.1
+

Copied: dists/squeeze-backports/linux-2.6/debian/patches/bugfix/arm/ARM-ixp4xx-mtd-oops.patch (from r18697, dists/trunk/linux-2.6/debian/patches/bugfix/arm/ARM-ixp4xx-mtd-oops.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/bugfix/arm/ARM-ixp4xx-mtd-oops.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18697, dists/trunk/linux-2.6/debian/patches/bugfix/arm/ARM-ixp4xx-mtd-oops.patch)
@@ -0,0 +1,123 @@
+Queued as http://git.infradead.org/users/dedekind/l2-mtd.git/commit/40421b7fb59974bef9362b74c8d7b92944c578c4
+
+From: Marc Kleine-Budde <mkl at blackshift.org>
+To: linux-kernel at vger.kernel.org
+Subject: [PATCH 2/2] mtd: ixp4xx: oops in ixp4xx_flash_probe
+Date: Wed,  8 Feb 2012 20:24:29 +0100
+Message-Id: <1328729069-21308-3-git-send-email-mkl at blackshift.org>
+In-Reply-To: <1328729069-21308-1-git-send-email-mkl at blackshift.org>
+References: <1328729069-21308-1-git-send-email-mkl at blackshift.org>
+Cc: Marc Kleine-Budde <mkl at blackshift.org>, linux-mtd at lists.infradead.org,
+ linux-arm-kernel at lists.infradead.org
+
+In commit "c797533 mtd: abstract last MTD partition parser argument" the
+third argument of "mtd_device_parse_register()" changed from start address
+of the MTD device to a pointer to a struct.
+
+The "ixp4xx_flash_probe()" function was not converted properly, causing
+this oops during boot:
+
+Searching for RedBoot partition table in IXP4XX-Flash.0 at offset 0x7e0000
+Unable to handle kernel paging request at virtual address 50000000
+pgd = c0004000
+[50000000] *pgd=00000000
+Internal error: Oops: f5 [#1]
+CPU: 0    Not tainted  (3.2.5-00002-gc809cb2 #4)
+PC is at parse_redboot_partitions+0x400/0x5b0
+LR is at parse_redboot_partitions+0x3e0/0x5b0
+pc : [<c01642ec>]    lr : [<c01642cc>]    psr: 20000013
+sp : c0829de4  ip : c0829de4  fp : c0829e3c
+r10: c180d000  r9 : 00000000  r8 : 00000008
+r7 : 00000200  r6 : 50000000  r5 : 00000000  r4 : c0888c00
+r3 : c0944400  r2 : 00000000  r1 : c02c6060  r0 : 00000007
+Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
+Control: 000039ff  Table: 00004000  DAC: 00000017
+Process swapper (pid: 1, stack limit = 0xc0828260)
+Stack: (0xc0829de4 to 0xc082a000)
+9de0:          c0829e0c c182d000 c0179a08 c0944400 00000048 00000000 00000000
+9e00: 00020000 c0829e70 c180d000 00020000 00000000 00000000 c028ba40 c028ba18
+9e20: c028be88 50000000 c024b250 c0888c00 c0829e6c c0829e40 c0162f58 c0163ef8
+9e40: c0829e70 00000000 00000000 c0888c00 00000000 00000000 00000000 00000000
+9e60: c0829e90 c0829e70 c015ffac c0162ed8 c09418a0 c09418a0 c027cc28 c027cedc
+9e80: 00000000 c0829eb4 c0829e94 c017a464 c015ff90 00000000 c027cc30 c02a2568
+9ea0: c027cc30 c028be48 c0829ec4 c0829eb8 c01338c4 c017a318 c0829ee8 c0829ec8
+9ec0: c01323b4 c01338b4 c027cc30 c028be48 c027cc64 00000000 00000000 c0829f04
+9ee0: c0829eec c013254c c0132338 c028be48 c0829f08 c01324b8 c0829f2c c0829f08
+9f00: c0131ba0 c01324c4 c08240f8 c083fbd0 c028be48 c028a4ac c0941840 00000000
+9f20: c0829f3c c0829f30 c0132218 c0131b40 c0829f68 c0829f40 c01314c0 c0132204
+9f40: c0236120 c02765cc c028be48 c026d95c 00000013 00000000 00000000 c0829f88
+9f60: c0829f6c c0132b90 c013134c c02765cc 00000000 c026d95c 00000013 c0829f98
+9f80: c0829f8c c0133d28 c0132b1c c0829fa8 c0829f9c c026d970 c0133ce8 c0829fdc
+9fa0: c0829fac c025d270 c026d968 c028271c c0023c94 00000013 c02765cc c02766bc
+9fc0: c0023c94 00000013 00000000 00000000 c0829ff4 c0829fe0 c025d400 c025d1d8
+9fe0: 00000000 c025d380 00000000 c0829ff8 c0023c94 c025d38c 62737507 6f74735f
+Backtrace:
+[<c0163eec>] (parse_redboot_partitions+0x0/0x5b0) from [<c0162f58>] (parse_mtd_partitions+0x8c/0xdc)
+[<c0162ecc>] (parse_mtd_partitions+0x0/0xdc) from [<c015ffac>] (mtd_device_parse_register+0x28/0xc8)
+[<c015ff84>] (mtd_device_parse_register+0x0/0xc8) from [<c017a464>] (ixp4xx_flash_probe+0x158/0x1dc)
+ r7:00000000 r6:c027cedc r5:c027cc28 r4:c09418a0
+[<c017a30c>] (ixp4xx_flash_probe+0x0/0x1dc) from [<c01338c4>] (platform_drv_probe+0x1c/0x20)
+ r7:c028be48 r6:c027cc30 r5:c02a2568 r4:c027cc30
+[<c01338a8>] (platform_drv_probe+0x0/0x20) from [<c01323b4>] (driver_probe_device+0x88/0x18c)
+[<c013232c>] (driver_probe_device+0x0/0x18c) from [<c013254c>] (__driver_attach+0x94/0x98)
+ r8:00000000 r7:00000000 r6:c027cc64 r5:c028be48 r4:c027cc30
+[<c01324b8>] (__driver_attach+0x0/0x98) from [<c0131ba0>] (bus_for_each_dev+0x6c/0x94)
+ r6:c01324b8 r5:c0829f08 r4:c028be48
+[<c0131b34>] (bus_for_each_dev+0x0/0x94) from [<c0132218>] (driver_attach+0x20/0x28)
+ r7:00000000 r6:c0941840 r5:c028a4ac r4:c028be48
+[<c01321f8>] (driver_attach+0x0/0x28) from [<c01314c0>] (bus_add_driver+0x180/0x25c)
+[<c0131340>] (bus_add_driver+0x0/0x25c) from [<c0132b90>] (driver_register+0x80/0x13c)
+[<c0132b10>] (driver_register+0x0/0x13c) from [<c0133d28>] (platform_driver_register+0x4c/0x60)
+ r7:00000013 r6:c026d95c r5:00000000 r4:c02765cc
+[<c0133cdc>] (platform_driver_register+0x0/0x60) from [<c026d970>] (ixp4xx_flash_init+0x14/0x1c)
+[<c026d95c>] (ixp4xx_flash_init+0x0/0x1c) from [<c025d270>] (do_one_initcall+0xa4/0x17c)
+[<c025d1cc>] (do_one_initcall+0x0/0x17c) from [<c025d400>] (kernel_init+0x80/0x124)
+ r9:00000000 r8:00000000 r7:00000013 r6:c0023c94 r5:c02766bc
+r4:c02765cc
+[<c025d380>] (kernel_init+0x0/0x124) from [<c0023c94>] (do_exit+0x0/0x694)
+ r5:c025d380 r4:00000000
+Code: 0a000028 e3560000 e583a000 0a00001f (e5962000)
+---[ end trace bf1eac11c431d0ba ]---
+
+This patch fixes the problem by filling the needed information into a
+"struct mtd_part_parser_data" and passing it to
+"mtd_device_parse_register()".
+
+Cc: linux-mtd at lists.infradead.org
+Signed-off-by: Marc Kleine-Budde <mkl at blackshift.org>
+---
+ drivers/mtd/maps/ixp4xx.c |    5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/mtd/maps/ixp4xx.c b/drivers/mtd/maps/ixp4xx.c
+index 8b54101..e864fc6 100644
+--- a/drivers/mtd/maps/ixp4xx.c
++++ b/drivers/mtd/maps/ixp4xx.c
+@@ -182,6 +182,9 @@ static int ixp4xx_flash_probe(struct platform_device *dev)
+ {
+ 	struct flash_platform_data *plat = dev->dev.platform_data;
+ 	struct ixp4xx_flash_info *info;
++	struct mtd_part_parser_data ppdata = {
++		.origin = dev->resource->start,
++	};
+ 	int err = -1;
+ 
+ 	if (!plat)
+@@ -247,7 +250,7 @@ static int ixp4xx_flash_probe(struct platform_device *dev)
+ 	/* Use the fast version */
+ 	info->map.write = ixp4xx_write16;
+ 
+-	err = mtd_device_parse_register(info->mtd, probes, dev->resource->start,
++	err = mtd_device_parse_register(info->mtd, probes, &ppdata,
+ 			plat->parts, plat->nr_parts);
+ 	if (err) {
+ 		printk(KERN_ERR "Could not parse partitions\n");
+-- 
+1.7.4.1
+
+
+_______________________________________________
+linux-arm-kernel mailing list
+linux-arm-kernel at lists.infradead.org
+http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
+

Copied: dists/squeeze-backports/linux-2.6/debian/patches/bugfix/x86/drm-i915-do-not-enable-RC6p-on-Sandy-Bridge.patch (from r18788, dists/sid/linux-2.6/debian/patches/bugfix/x86/drm-i915-do-not-enable-RC6p-on-Sandy-Bridge.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/bugfix/x86/drm-i915-do-not-enable-RC6p-on-Sandy-Bridge.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/bugfix/x86/drm-i915-do-not-enable-RC6p-on-Sandy-Bridge.patch)
@@ -0,0 +1,45 @@
+From: Eugeni Dodonov <eugeni.dodonov at intel.com>
+Date: Tue, 14 Feb 2012 11:44:48 -0200
+Subject: [PATCH] drm/i915: do not enable RC6p on Sandy Bridge
+
+commit 1c8ecf80fdee4e7b23a9e7da7ff9bd59ba2dcf96 upstream.
+
+With base on latest findings, RC6p seems to be respondible for RC6-related
+issues on Sandy Bridge platform. To work-around those issues, the previous
+solution was to completely disable RC6 on Sandy Bridge for the past few
+releases, even if plain RC6 was not giving any issues.
+
+What this patch does is preventing RC6p from being enabled on Sandy Bridge
+even if users enable RC6 via a kernel parameter. So it won't change the
+defaults in any way, but will ensure that if users do enable RC6 manually
+it won't break their machines by enabling this extra state.
+
+Proper fix for this (enabling specific RC6 states according to the GPU
+generation) were proposed for the -next kernel, but we are too late in the
+release process now to pick such changes.
+
+Acked-by: Keith Packard <keithp at keithp.com>
+Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
+Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
+---
+ drivers/gpu/drm/i915/intel_display.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index d9b042b..049804e 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -8182,8 +8182,8 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv)
+ 	I915_WRITE(GEN6_RC6pp_THRESHOLD, 64000); /* unused */
+ 
+ 	if (intel_enable_rc6(dev_priv->dev))
+-		rc6_mask = GEN6_RC_CTL_RC6p_ENABLE |
+-			GEN6_RC_CTL_RC6_ENABLE;
++		rc6_mask = GEN6_RC_CTL_RC6_ENABLE |
++			(IS_GEN7(dev_priv->dev)) ? GEN6_RC_CTL_RC6p_ENABLE : 0;
+ 
+ 	I915_WRITE(GEN6_RC_CONTROL,
+ 		   rc6_mask |
+-- 
+1.7.9.1
+

Copied: dists/squeeze-backports/linux-2.6/debian/patches/bugfix/x86/drm-i915-fix-operator-precedence-when-enabling-RC6p.patch (from r18788, dists/sid/linux-2.6/debian/patches/bugfix/x86/drm-i915-fix-operator-precedence-when-enabling-RC6p.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/bugfix/x86/drm-i915-fix-operator-precedence-when-enabling-RC6p.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/bugfix/x86/drm-i915-fix-operator-precedence-when-enabling-RC6p.patch)
@@ -0,0 +1,30 @@
+From: Eugeni Dodonov <eugeni.dodonov at intel.com>
+Date: Thu, 23 Feb 2012 17:57:06 -0800
+Subject: [PATCH 1/1] drm/i915: fix operator precedence when enabling RC6p
+
+As noticed by Torsten Kaiser, the operator precedence can play tricks with
+us here.
+
+CC: Dave Airlie <airlied at redhat.com>
+CC: Jesse Barnes <jbarnes at virtuousgeek.org>
+Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com>
+---
+ drivers/gpu/drm/i915/intel_display.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index e654f32..4871ba0 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -8194,7 +8194,7 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv)
+ 
+ 	if (intel_enable_rc6(dev_priv->dev))
+ 		rc6_mask = GEN6_RC_CTL_RC6_ENABLE |
+-			(IS_GEN7(dev_priv->dev)) ? GEN6_RC_CTL_RC6p_ENABLE : 0;
++			((IS_GEN7(dev_priv->dev)) ? GEN6_RC_CTL_RC6p_ENABLE : 0);
+ 
+ 	I915_WRITE(GEN6_RC_CONTROL,
+ 		   rc6_mask |
+-- 
+1.7.8.4
+

Modified: dists/squeeze-backports/linux-2.6/debian/patches/debian/version.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/debian/version.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/debian/version.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -12,7 +12,7 @@
 +#ifdef LINUX_COMPILE_DISTRIBUTION_OFFICIAL_BUILD
 +	" (" LINUX_COMPILE_DISTRIBUTION " "
 +	     LINUX_COMPILE_DISTRIBUTION_VERSION ")"
-+	" (" LINUX_COMPILE_DISTRIBUTION_UPLOADER ")"
++	" (" LINUX_COMPILE_DISTRIBUTION_MAINTAINER ")"
 +#else
 +# ifdef LINUX_COMPILE_DISTRIBUTION_VERSION
 +	" (" LINUX_COMPILE_DISTRIBUTION_VERSION ")"
@@ -27,7 +27,7 @@
 +#ifdef LINUX_COMPILE_DISTRIBUTION_OFFICIAL_BUILD
 +	" (" LINUX_COMPILE_DISTRIBUTION " "
 +	     LINUX_COMPILE_DISTRIBUTION_VERSION ")"
-+	" (" LINUX_COMPILE_DISTRIBUTION_UPLOADER ")"
++	" (" LINUX_COMPILE_DISTRIBUTION_MAINTAINER ")"
 +#else
 +# ifdef LINUX_COMPILE_DISTRIBUTION_VERSION
 +	" (" LINUX_COMPILE_DISTRIBUTION_VERSION ")"
@@ -49,7 +49,7 @@
 +
 +  if [ "$DISTRIBUTION_OFFICIAL_BUILD" ]; then
 +    echo \#define LINUX_COMPILE_DISTRIBUTION_OFFICIAL_BUILD
-+    echo \#define LINUX_COMPILE_DISTRIBUTION_UPLOADER \"$DISTRIBUTION_UPLOADER\"
++    echo \#define LINUX_COMPILE_DISTRIBUTION_MAINTAINER \"$DISTRIBUTION_MAINTAINER\"
 +    echo \#define LINUX_COMPILE_DISTRIBUTION_VERSION \"$DISTRIBUTION_VERSION\"
 +    echo \#define LINUX_COMPILE_BY \"unknown\"
 +    echo \#define LINUX_COMPILE_HOST \"$DISTRIBUTION\"

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/fs-hardlink-creation-restriction-cleanup.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/fs-hardlink-creation-restriction-cleanup.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/fs-hardlink-creation-restriction-cleanup.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/fs-hardlink-creation-restriction-cleanup.patch)
@@ -0,0 +1,112 @@
+From 52db90d0fa770e2277645eb34956820cec26b2cb Mon Sep 17 00:00:00 2001
+From: Kees Cook <keescook at chromium.org>
+Date: Sat, 25 Feb 2012 12:28:44 +1100
+Subject: [PATCH 5/5] fs: hardlink creation restriction cleanup
+
+Clean-up of hardlink restriction logic, as suggested by Andrew Morton.
+
+Signed-off-by: Kees Cook <keescook at chromium.org>
+Cc: Ingo Molnar <mingo at elte.hu>
+Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
+---
+ fs/namei.c |   62 ++++++++++++++++++++++++++++++++++++++++++-----------------
+ 1 files changed, 44 insertions(+), 18 deletions(-)
+
+diff --git a/fs/namei.c b/fs/namei.c
+index fe13533..1436fae 100644
+--- a/fs/namei.c
++++ b/fs/namei.c
+@@ -693,46 +693,72 @@ static inline int may_follow_link(struct path *link)
+ }
+ 
+ /**
++ * safe_hardlink_source - Check for safe hardlink conditions
++ * @inode: the source inode to hardlink from
++ *
++ * Return false if at least one of the following conditions:
++ *    - inode is not a regular file
++ *    - inode is setuid
++ *    - inode is setgid and group-exec
++ *    - access failure for read and write
++ *
++ * Otherwise returns true.
++ */
++static bool safe_hardlink_source(struct inode *inode)
++{
++	mode_t mode = inode->i_mode;
++
++	/* Special files should not get pinned to the filesystem. */
++	if (!S_ISREG(mode))
++		return false;
++
++	/* Setuid files should not get pinned to the filesystem. */
++	if (mode & S_ISUID)
++		return false;
++
++	/* Executable setgid files should not get pinned to the filesystem. */
++	if ((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP))
++		return false;
++
++	/* Hardlinking to unreadable or unwritable sources is dangerous. */
++	if (inode_permission(inode, MAY_READ | MAY_WRITE))
++		return false;
++
++	return true;
++}
++
++/**
+  * may_linkat - Check permissions for creating a hardlink
+  * @link: the source to hardlink from
+  *
+  * Block hardlink when all of:
+  *  - sysctl_protected_hardlinks enabled
+  *  - fsuid does not match inode
+- *  - at least one of:
+- *    - inode is not a regular file
+- *    - inode is setuid
+- *    - inode is setgid and group-exec
+- *    - access failure for read and write
++ *  - hardlink source is unsafe (see safe_hardlink_source() above)
+  *  - not CAP_FOWNER
+  *
+  * Returns 0 if successful, -ve on error.
+  */
+ static int may_linkat(struct path *link)
+ {
+-	int error = 0;
+ 	const struct cred *cred;
+ 	struct inode *inode;
+-	int mode;
+ 
+ 	if (!sysctl_protected_hardlinks)
+ 		return 0;
+ 
+ 	cred = current_cred();
+ 	inode = link->dentry->d_inode;
+-	mode = inode->i_mode;
+-
+-	if (cred->fsuid != inode->i_uid &&
+-	    (!S_ISREG(mode) || (mode & S_ISUID) ||
+-	     ((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)) ||
+-	     (inode_permission(inode, MAY_READ | MAY_WRITE))) &&
+-	    !capable(CAP_FOWNER))
+-		error = -EPERM;
+ 
+-	if (error)
+-		audit_log_link_denied("linkat", link);
++	/* Source inode owner (or CAP_FOWNER) can hardlink all they like,
++	 * otherwise, it must be a safe source.
++	 */
++	if (cred->fsuid == inode->i_uid || safe_hardlink_source(inode) ||
++	    capable(CAP_FOWNER))
++		return 0;
+ 
+-	return error;
++	audit_log_link_denied("linkat", link);
++	return -EPERM;
+ }
+ #else
+ static inline int may_follow_link(struct path *link)
+-- 
+1.7.9.1
+

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/fs-hardlink-creation-restrictions-fix.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/fs-hardlink-creation-restrictions-fix.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/fs-hardlink-creation-restrictions-fix.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/fs-hardlink-creation-restrictions-fix.patch)
@@ -0,0 +1,39 @@
+From 19f621ccbef745dedad641f44f535e3bcb00f30d Mon Sep 17 00:00:00 2001
+From: Andrew Morton <akpm at linux-foundation.org>
+Date: Sat, 25 Feb 2012 12:28:43 +1100
+Subject: [PATCH 4/5] fs-hardlink-creation-restrictions-fix
+
+uninline may_linkat() and audit_log_link_denied().
+
+Cc: Kees Cook <keescook at chromium.org>
+Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
+---
+ fs/namei.c |    5 ++---
+ 1 files changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/fs/namei.c b/fs/namei.c
+index 7be190c..fe13533 100644
+--- a/fs/namei.c
++++ b/fs/namei.c
+@@ -629,8 +629,7 @@ int sysctl_protected_symlinks __read_mostly =
+ int sysctl_protected_hardlinks __read_mostly =
+ 	CONFIG_PROTECTED_HARDLINKS_SYSCTL;
+ 
+-static inline void
+-audit_log_link_denied(const char *operation, struct path *link)
++static void audit_log_link_denied(const char *operation, struct path *link)
+ {
+ 	struct audit_buffer *ab;
+ 
+@@ -709,7 +708,7 @@ static inline int may_follow_link(struct path *link)
+  *
+  * Returns 0 if successful, -ve on error.
+  */
+-static inline int may_linkat(struct path *link)
++static int may_linkat(struct path *link)
+ {
+ 	int error = 0;
+ 	const struct cred *cred;
+-- 
+1.7.9.1
+

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/fs-hardlink-creation-restrictions.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/fs-hardlink-creation-restrictions.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/fs-hardlink-creation-restrictions.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/fs-hardlink-creation-restrictions.patch)
@@ -0,0 +1,390 @@
+From fa3abdeee4e792ed794eef7ea71e7e0073cec32d Mon Sep 17 00:00:00 2001
+From: Kees Cook <keescook at chromium.org>
+Date: Sat, 25 Feb 2012 12:28:43 +1100
+Subject: [PATCH 3/5] fs: hardlink creation restrictions
+
+On systems that have user-writable directories on the same partition as
+system files, a long-standing class of security issues is the
+hardlink-based time-of-check-time-of-use race, most commonly seen in
+world-writable directories like /tmp.  The common method of exploitation
+of this flaw is to cross privilege boundaries when following a given
+hardlink (i.e.  a root process follows a hardlink created by another
+user).  Additionally, an issue exists where users can "pin" a potentially
+vulnerable setuid/setgid file so that an administrator will not actually
+upgrade a system fully.
+
+The solution is to permit hardlinks to only be created when the user is
+already the existing file's owner, or if they already have read/write
+access to the existing file.
+
+Many Linux users are surprised when they learn they can link to files they
+have no access to, so this change appears to follow the doctrine of "least
+surprise".  Additionally, this change does not violate POSIX, which states
+"the implementation may require that the calling process has permission to
+access the existing file"[1].
+
+This change is known to break some implementations of the "at" daemon,
+though the version used by Fedora and Ubuntu has been fixed[2] for a
+while.  Otherwise, the change has been undisruptive while in use in Ubuntu
+for the last 1.5 years.
+
+This patch is based on the patch in Openwall and grsecurity.  I have added
+a sysctl to enable the protected behavior, documentation, and an audit
+notification.
+
+[1] http://pubs.opengroup.org/onlinepubs/9699919799/functions/linkat.html
+[2] http://anonscm.debian.org/gitweb/?p=collab-maint/at.git;a=commitdiff;h=f4114656c3a6c6f6070e315ffdf940a49eda3279
+
+Signed-off-by: Kees Cook <keescook at chromium.org>
+Acked-by: Ingo Molnar <mingo at elte.hu>
+Cc: Matthew Wilcox <matthew at wil.cx>
+Cc: Alexander Viro <viro at zeniv.linux.org.uk>
+Cc: Rik van Riel <riel at redhat.com>
+Cc: Federica Teodori <federica.teodori at googlemail.com>
+Cc: Lucian Adrian Grijincu <lucian.grijincu at gmail.com>
+Cc: Peter Zijlstra <a.p.zijlstra at chello.nl>
+Cc: Eric Paris <eparis at redhat.com>
+Cc: Randy Dunlap <rdunlap at xenotime.net>
+Cc: Dan Rosenberg <drosenberg at vsecurity.com>
+Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
+---
+ Documentation/sysctl/fs.txt |   21 ++++++++
+ fs/Kconfig                  |   54 ++++++++++++++++------
+ fs/namei.c                  |  109 ++++++++++++++++++++++++++++++++-----------
+ include/linux/fs.h          |    1 +
+ kernel/sysctl.c             |   11 ++++-
+ 5 files changed, 153 insertions(+), 43 deletions(-)
+
+diff --git a/Documentation/sysctl/fs.txt b/Documentation/sysctl/fs.txt
+index 01daa80..9d29414 100644
+--- a/Documentation/sysctl/fs.txt
++++ b/Documentation/sysctl/fs.txt
+@@ -32,6 +32,7 @@ Currently, these files are in /proc/sys/fs:
+ - nr_open
+ - overflowuid
+ - overflowgid
++- protected_hardlinks
+ - protected_symlinks
+ - suid_dumpable
+ - super-max
+@@ -158,6 +159,26 @@ The default is 65534.
+ 
+ ==============================================================
+ 
++protected_hardlinks:
++
++A long-standing class of security issues is the hardlink-based
++time-of-check-time-of-use race, most commonly seen in world-writable
++directories like /tmp. The common method of exploitation of this flaw
++is to cross privilege boundaries when following a given hardlink (i.e. a
++root process follows a hardlink created by another user). Additionally,
++on systems without separated partitions, this stops unauthorized users
++from "pinning" vulnerable setuid/setgid files against being upgraded by
++the administrator, or linking to special files.
++
++When set to "0", hardlink creation behavior is unrestricted.
++
++When set to "1" hardlinks cannot be created by users if they do not
++already own the source file, or do not have read/write access to it.
++
++This protection is based on the restrictions in Openwall and grsecurity.
++
++==============================================================
++
+ protected_symlinks:
+ 
+ A long-standing class of security issues is the symlink-based
+diff --git a/fs/Kconfig b/fs/Kconfig
+index f2c46f3..d2a422e 100644
+--- a/fs/Kconfig
++++ b/fs/Kconfig
+@@ -272,27 +272,29 @@ endif # NETWORK_FILESYSTEMS
+ source "fs/nls/Kconfig"
+ source "fs/dlm/Kconfig"
+ 
+-config PROTECTED_SYMLINKS
+-	bool "Evaluate vulnerable symlink conditions"
++config PROTECTED_LINKS
++	bool "Evaluate vulnerable link conditions"
+ 	default y
+ 	help
+-	  A long-standing class of security issues is the symlink-based
++	  A long-standing class of security issues is the link-based
+ 	  time-of-check-time-of-use race, most commonly seen in
+ 	  world-writable directories like /tmp. The common method of
+ 	  exploitation of this flaw is to cross privilege boundaries
+-	  when following a given symlink (i.e. a root process follows
+-	  a malicious symlink belonging to another user).
++	  when following a given link (i.e. a root process follows
++	  a malicious symlink belonging to another user, or a hardlink
++	  created to a root-owned file).
+ 
+-	  Enabling this adds the logic to examine these dangerous symlink
+-	  conditions. Whether or not the dangerous symlink situations are
+-	  allowed is controlled by PROTECTED_SYMLINKS_ENABLED.
++	  Enabling this adds the logic to examine these dangerous link
++	  conditions. Whether or not the dangerous link situations are
++	  allowed is controlled by PROTECTED_HARDLINKS_ENABLED and
++	  PROTECTED_SYMLINKS_ENABLED.
+ 
+-config PROTECTED_SYMLINKS_ENABLED
+-	depends on PROTECTED_SYMLINKS
++config PROTECTED_SYMLINKS
++	depends on PROTECTED_LINKS
+ 	bool "Disallow symlink following in sticky world-writable dirs"
+ 	default y
+ 	help
+-	  Solve ToCToU symlink race vulnerablities by permitting symlinks
++	  Solve ToCToU symlink race vulnerabilities by permitting symlinks
+ 	  to be followed only when outside a sticky world-writable directory,
+ 	  or when the uid of the symlink and follower match, or when the
+ 	  directory and symlink owners match.
+@@ -300,10 +302,34 @@ config PROTECTED_SYMLINKS_ENABLED
+ 	  When PROC_SYSCTL is enabled, this setting can also be controlled
+ 	  via /proc/sys/kernel/protected_symlinks.
+ 
+-config PROTECTED_SYMLINKS_ENABLED_SYSCTL
+-	depends on PROTECTED_SYMLINKS
++	  See Documentation/sysctl/fs.txt for details.
++
++config PROTECTED_SYMLINKS_SYSCTL
++	depends on PROTECTED_LINKS
++	int
++	default "1" if PROTECTED_SYMLINKS
++	default "0"
++
++config PROTECTED_HARDLINKS
++	depends on PROTECTED_LINKS
++	bool "Disallow hardlink creation to non-accessible files"
++	default y
++	help
++	  Solve ToCToU hardlink race vulnerabilities by permitting hardlinks
++	  to be created only when to a regular file that is owned by the user,
++	  or is readable and writable by the user. Also blocks users from
++	  "pinning" vulnerable setuid/setgid programs from being upgraded by
++	  the administrator.
++
++	  When PROC_SYSCTL is enabled, this setting can also be controlled
++	  via /proc/sys/kernel/protected_hardlinks.
++
++	  See Documentation/sysctl/fs.txt for details.
++
++config PROTECTED_HARDLINKS_SYSCTL
++	depends on PROTECTED_LINKS
+ 	int
+-	default "1" if PROTECTED_SYMLINKS_ENABLED
++	default "1" if PROTECTED_HARDLINKS
+ 	default "0"
+ 
+ endmenu
+diff --git a/fs/namei.c b/fs/namei.c
+index 39edcf7..7be190c 100644
+--- a/fs/namei.c
++++ b/fs/namei.c
+@@ -623,16 +623,33 @@ static inline void put_link(struct nameidata *nd, struct path *link, void *cooki
+ 	path_put(link);
+ }
+ 
+-#ifdef CONFIG_PROTECTED_SYMLINKS
++#ifdef CONFIG_PROTECTED_LINKS
+ int sysctl_protected_symlinks __read_mostly =
+-	CONFIG_PROTECTED_SYMLINKS_ENABLED_SYSCTL;
++	CONFIG_PROTECTED_SYMLINKS_SYSCTL;
++int sysctl_protected_hardlinks __read_mostly =
++	CONFIG_PROTECTED_HARDLINKS_SYSCTL;
++
++static inline void
++audit_log_link_denied(const char *operation, struct path *link)
++{
++	struct audit_buffer *ab;
++
++	ab = audit_log_start(current->audit_context, GFP_KERNEL, AUDIT_AVC);
++	audit_log_format(ab, "op=%s action=denied", operation);
++	audit_log_format(ab, " pid=%d comm=", current->pid);
++	audit_log_untrustedstring(ab, current->comm);
++	audit_log_d_path(ab, " path=", link);
++	audit_log_format(ab, " dev=");
++	audit_log_untrustedstring(ab, link->dentry->d_inode->i_sb->s_id);
++	audit_log_format(ab, " ino=%lu", link->dentry->d_inode->i_ino);
++	audit_log_end(ab);
++}
+ 
+ /**
+  * may_follow_link - Check symlink following for unsafe situations
+- * @dentry: The inode/dentry of the symlink
+- * @nameidata: The path data of the symlink
++ * @link: The path of the symlink
+  *
+- * In the case of the protected_symlinks sysctl being enabled,
++ * In the case of the sysctl_protected_symlinks sysctl being enabled,
+  * CAP_DAC_OVERRIDE needs to be specifically ignored if the symlink is
+  * in a sticky world-writable directory. This is to protect privileged
+  * processes from failing races against path names that may change out
+@@ -643,19 +660,20 @@ int sysctl_protected_symlinks __read_mostly =
+  *
+  * Returns 0 if following the symlink is allowed, -ve on error.
+  */
+-static inline int
+-may_follow_link(struct dentry *dentry, struct nameidata *nameidata)
++static inline int may_follow_link(struct path *link)
+ {
+ 	int error = 0;
+ 	const struct inode *parent;
+ 	const struct inode *inode;
+ 	const struct cred *cred;
++	struct dentry *dentry;
+ 
+ 	if (!sysctl_protected_symlinks)
+ 		return 0;
+ 
+ 	/* Allowed if owner and follower match. */
+ 	cred = current_cred();
++	dentry = link->dentry;
+ 	inode = dentry->d_inode;
+ 	if (cred->fsuid == inode->i_uid)
+ 		return 0;
+@@ -669,29 +687,61 @@ may_follow_link(struct dentry *dentry, struct nameidata *nameidata)
+ 	}
+ 	spin_unlock(&dentry->d_lock);
+ 
+-#ifdef CONFIG_AUDIT
+-	if (error) {
+-		struct audit_buffer *ab;
+-
+-		ab = audit_log_start(current->audit_context,
+-				     GFP_KERNEL, AUDIT_AVC);
+-		audit_log_format(ab, "op=follow_link action=denied");
+-		audit_log_format(ab, " pid=%d comm=", current->pid);
+-		audit_log_untrustedstring(ab, current->comm);
+-		audit_log_d_path(ab, " path=", &nameidata->path);
+-		audit_log_format(ab, " name=");
+-		audit_log_untrustedstring(ab, dentry->d_name.name);
+-		audit_log_format(ab, " dev=");
+-		audit_log_untrustedstring(ab, inode->i_sb->s_id);
+-		audit_log_format(ab, " ino=%lu", inode->i_ino);
+-		audit_log_end(ab);
+-	}
+-#endif
++	if (error)
++		audit_log_link_denied("follow_link", link);
++
++	return error;
++}
++
++/**
++ * may_linkat - Check permissions for creating a hardlink
++ * @link: the source to hardlink from
++ *
++ * Block hardlink when all of:
++ *  - sysctl_protected_hardlinks enabled
++ *  - fsuid does not match inode
++ *  - at least one of:
++ *    - inode is not a regular file
++ *    - inode is setuid
++ *    - inode is setgid and group-exec
++ *    - access failure for read and write
++ *  - not CAP_FOWNER
++ *
++ * Returns 0 if successful, -ve on error.
++ */
++static inline int may_linkat(struct path *link)
++{
++	int error = 0;
++	const struct cred *cred;
++	struct inode *inode;
++	int mode;
++
++	if (!sysctl_protected_hardlinks)
++		return 0;
++
++	cred = current_cred();
++	inode = link->dentry->d_inode;
++	mode = inode->i_mode;
++
++	if (cred->fsuid != inode->i_uid &&
++	    (!S_ISREG(mode) || (mode & S_ISUID) ||
++	     ((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)) ||
++	     (inode_permission(inode, MAY_READ | MAY_WRITE))) &&
++	    !capable(CAP_FOWNER))
++		error = -EPERM;
++
++	if (error)
++		audit_log_link_denied("linkat", link);
++
+ 	return error;
+ }
+ #else
+-static inline int
+-may_follow_link(struct dentry *dentry, struct nameidata *nameidata)
++static inline int may_follow_link(struct path *link)
++{
++	return 0;
++}
++
++static inline int may_linkat(struct path *link)
+ {
+ 	return 0;
+ }
+@@ -720,7 +770,7 @@ follow_link(struct path *link, struct nameidata *nd, void **p, bool sensitive)
+ 	nd_set_link(nd, NULL);
+ 
+ 	if (sensitive)
+-		error = may_follow_link(link->dentry, nd);
++		error = may_follow_link(link);
+ 	if (!error)
+ 		error = security_inode_follow_link(link->dentry, nd);
+ 	if (error) {
+@@ -3058,6 +3108,9 @@ SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname,
+ 	error = -EXDEV;
+ 	if (old_path.mnt != new_path.mnt)
+ 		goto out_dput;
++	error = may_linkat(&old_path);
++	if (error)
++		goto out_dput;
+ 	error = mnt_want_write(new_path.mnt);
+ 	if (error)
+ 		goto out_dput;
+diff --git a/include/linux/fs.h b/include/linux/fs.h
+index 404cc89..f42a557 100644
+--- a/include/linux/fs.h
++++ b/include/linux/fs.h
+@@ -424,6 +424,7 @@ extern int sysctl_nr_open;
+ extern struct inodes_stat_t inodes_stat;
+ extern int leases_enable, lease_break_time;
+ extern int sysctl_protected_symlinks;
++extern int sysctl_protected_hardlinks;
+ 
+ struct buffer_head;
+ typedef int (get_block_t)(struct inode *inode, sector_t iblock,
+diff --git a/kernel/sysctl.c b/kernel/sysctl.c
+index 0624e7c..0b29d58 100644
+--- a/kernel/sysctl.c
++++ b/kernel/sysctl.c
+@@ -1497,7 +1497,7 @@ static struct ctl_table fs_table[] = {
+ 	},
+ #endif
+ #endif
+-#ifdef CONFIG_PROTECTED_SYMLINKS
++#ifdef CONFIG_PROTECTED_LINKS
+ 	{
+ 		.procname	= "protected_symlinks",
+ 		.data		= &sysctl_protected_symlinks,
+@@ -1507,6 +1507,15 @@ static struct ctl_table fs_table[] = {
+ 		.extra1		= &zero,
+ 		.extra2		= &one,
+ 	},
++	{
++		.procname	= "protected_hardlinks",
++		.data		= &sysctl_protected_hardlinks,
++		.maxlen		= sizeof(int),
++		.mode		= 0600,
++		.proc_handler	= proc_dointvec_minmax,
++		.extra1		= &zero,
++		.extra2		= &one,
++	},
+ #endif
+ 	{
+ 		.procname	= "suid_dumpable",
+-- 
+1.7.9.1
+

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/fs-symlink-restrictions-on-sticky-directories-fix-2.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/fs-symlink-restrictions-on-sticky-directories-fix-2.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/fs-symlink-restrictions-on-sticky-directories-fix-2.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/fs-symlink-restrictions-on-sticky-directories-fix-2.patch)
@@ -0,0 +1,151 @@
+From d48f814bd83a3cbd95dedaf5e4dd91c05cffddc6 Mon Sep 17 00:00:00 2001
+From: Kees Cook <keescook at chromium.org>
+Date: Sat, 25 Feb 2012 12:28:43 +1100
+Subject: [PATCH 2/5] fs-symlink-restrictions-on-sticky-directories-fix-2
+
+s/sticky_//
+
+Cc: Kees Cook <keescook at chromium.org>
+Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
+---
+ Documentation/sysctl/fs.txt |    4 ++--
+ fs/Kconfig                  |   16 ++++++++--------
+ fs/namei.c                  |   10 +++++-----
+ include/linux/fs.h          |    2 +-
+ kernel/sysctl.c             |    6 +++---
+ 5 files changed, 19 insertions(+), 19 deletions(-)
+
+diff --git a/Documentation/sysctl/fs.txt b/Documentation/sysctl/fs.txt
+index 4b47cd5..01daa80 100644
+--- a/Documentation/sysctl/fs.txt
++++ b/Documentation/sysctl/fs.txt
+@@ -32,7 +32,7 @@ Currently, these files are in /proc/sys/fs:
+ - nr_open
+ - overflowuid
+ - overflowgid
+-- protected_sticky_symlinks
++- protected_symlinks
+ - suid_dumpable
+ - super-max
+ - super-nr
+@@ -158,7 +158,7 @@ The default is 65534.
+ 
+ ==============================================================
+ 
+-protected_sticky_symlinks:
++protected_symlinks:
+ 
+ A long-standing class of security issues is the symlink-based
+ time-of-check-time-of-use race, most commonly seen in world-writable
+diff --git a/fs/Kconfig b/fs/Kconfig
+index d0fdbdd..f2c46f3 100644
+--- a/fs/Kconfig
++++ b/fs/Kconfig
+@@ -272,7 +272,7 @@ endif # NETWORK_FILESYSTEMS
+ source "fs/nls/Kconfig"
+ source "fs/dlm/Kconfig"
+ 
+-config PROTECTED_STICKY_SYMLINKS
++config PROTECTED_SYMLINKS
+ 	bool "Evaluate vulnerable symlink conditions"
+ 	default y
+ 	help
+@@ -285,10 +285,10 @@ config PROTECTED_STICKY_SYMLINKS
+ 
+ 	  Enabling this adds the logic to examine these dangerous symlink
+ 	  conditions. Whether or not the dangerous symlink situations are
+-	  allowed is controlled by PROTECTED_STICKY_SYMLINKS_ENABLED.
++	  allowed is controlled by PROTECTED_SYMLINKS_ENABLED.
+ 
+-config PROTECTED_STICKY_SYMLINKS_ENABLED
+-	depends on PROTECTED_STICKY_SYMLINKS
++config PROTECTED_SYMLINKS_ENABLED
++	depends on PROTECTED_SYMLINKS
+ 	bool "Disallow symlink following in sticky world-writable dirs"
+ 	default y
+ 	help
+@@ -298,12 +298,12 @@ config PROTECTED_STICKY_SYMLINKS_ENABLED
+ 	  directory and symlink owners match.
+ 
+ 	  When PROC_SYSCTL is enabled, this setting can also be controlled
+-	  via /proc/sys/kernel/protected_sticky_symlinks.
++	  via /proc/sys/kernel/protected_symlinks.
+ 
+-config PROTECTED_STICKY_SYMLINKS_ENABLED_SYSCTL
+-	depends on PROTECTED_STICKY_SYMLINKS
++config PROTECTED_SYMLINKS_ENABLED_SYSCTL
++	depends on PROTECTED_SYMLINKS
+ 	int
+-	default "1" if PROTECTED_STICKY_SYMLINKS_ENABLED
++	default "1" if PROTECTED_SYMLINKS_ENABLED
+ 	default "0"
+ 
+ endmenu
+diff --git a/fs/namei.c b/fs/namei.c
+index 5b4c05b..39edcf7 100644
+--- a/fs/namei.c
++++ b/fs/namei.c
+@@ -623,16 +623,16 @@ static inline void put_link(struct nameidata *nd, struct path *link, void *cooki
+ 	path_put(link);
+ }
+ 
+-#ifdef CONFIG_PROTECTED_STICKY_SYMLINKS
+-int sysctl_protected_sticky_symlinks __read_mostly =
+-	CONFIG_PROTECTED_STICKY_SYMLINKS_ENABLED_SYSCTL;
++#ifdef CONFIG_PROTECTED_SYMLINKS
++int sysctl_protected_symlinks __read_mostly =
++	CONFIG_PROTECTED_SYMLINKS_ENABLED_SYSCTL;
+ 
+ /**
+  * may_follow_link - Check symlink following for unsafe situations
+  * @dentry: The inode/dentry of the symlink
+  * @nameidata: The path data of the symlink
+  *
+- * In the case of the protected_sticky_symlinks sysctl being enabled,
++ * In the case of the protected_symlinks sysctl being enabled,
+  * CAP_DAC_OVERRIDE needs to be specifically ignored if the symlink is
+  * in a sticky world-writable directory. This is to protect privileged
+  * processes from failing races against path names that may change out
+@@ -651,7 +651,7 @@ may_follow_link(struct dentry *dentry, struct nameidata *nameidata)
+ 	const struct inode *inode;
+ 	const struct cred *cred;
+ 
+-	if (!sysctl_protected_sticky_symlinks)
++	if (!sysctl_protected_symlinks)
+ 		return 0;
+ 
+ 	/* Allowed if owner and follower match. */
+diff --git a/include/linux/fs.h b/include/linux/fs.h
+index aba8db0..404cc89 100644
+--- a/include/linux/fs.h
++++ b/include/linux/fs.h
+@@ -423,7 +423,7 @@ extern unsigned long get_max_files(void);
+ extern int sysctl_nr_open;
+ extern struct inodes_stat_t inodes_stat;
+ extern int leases_enable, lease_break_time;
+-extern int sysctl_protected_sticky_symlinks;
++extern int sysctl_protected_symlinks;
+ 
+ struct buffer_head;
+ typedef int (get_block_t)(struct inode *inode, sector_t iblock,
+diff --git a/kernel/sysctl.c b/kernel/sysctl.c
+index c469b88..0624e7c 100644
+--- a/kernel/sysctl.c
++++ b/kernel/sysctl.c
+@@ -1497,10 +1497,10 @@ static struct ctl_table fs_table[] = {
+ 	},
+ #endif
+ #endif
+-#ifdef CONFIG_PROTECTED_STICKY_SYMLINKS
++#ifdef CONFIG_PROTECTED_SYMLINKS
+ 	{
+-		.procname	= "protected_sticky_symlinks",
+-		.data		= &sysctl_protected_sticky_symlinks,
++		.procname	= "protected_symlinks",
++		.data		= &sysctl_protected_symlinks,
+ 		.maxlen		= sizeof(int),
+ 		.mode		= 0600,
+ 		.proc_handler	= proc_dointvec_minmax,
+-- 
+1.7.9.1
+

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/fs-symlink-restrictions-on-sticky-directories.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/fs-symlink-restrictions-on-sticky-directories.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/fs-symlink-restrictions-on-sticky-directories.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/fs-symlink-restrictions-on-sticky-directories.patch)
@@ -0,0 +1,329 @@
+From af16d0017a7de1f00af3966b5013bebfce8a81b4 Mon Sep 17 00:00:00 2001
+From: Kees Cook <keescook at chromium.org>
+Date: Sat, 25 Feb 2012 12:28:42 +1100
+Subject: [PATCH 1/5] fs: symlink restrictions on sticky directories
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+A longstanding class of security issues is the symlink-based
+time-of-check-time-of-use race, most commonly seen in world-writable
+directories like /tmp.  The common method of exploitation of this flaw is
+to cross privilege boundaries when following a given symlink (i.e.  a root
+process follows a symlink belonging to another user).  For a likely
+incomplete list of hundreds of examples across the years, please see:
+http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp
+
+The solution is to permit symlinks to only be followed when outside a
+sticky world-writable directory, or when the uid of the symlink and
+follower match, or when the directory owner matches the symlink's owner.
+
+Some pointers to the history of earlier discussion that I could find:
+
+ 1996 Aug, Zygo Blaxell
+  http://marc.info/?l=bugtraq&m=87602167419830&w=2
+ 1996 Oct, Andrew Tridgell
+  http://lkml.indiana.edu/hypermail/linux/kernel/9610.2/0086.html
+ 1997 Dec, Albert D Cahalan
+  http://lkml.org/lkml/1997/12/16/4
+ 2005 Feb, Lorenzo Hernández García-Hierro
+  http://lkml.indiana.edu/hypermail/linux/kernel/0502.0/1896.html
+ 2010 May, Kees Cook
+  https://lkml.org/lkml/2010/5/30/144
+
+Past objections and rebuttals could be summarized as:
+
+ - Violates POSIX.
+   - POSIX didn't consider this situation and it's not useful to follow
+     a broken specification at the cost of security.
+ - Might break unknown applications that use this feature.
+   - Applications that break because of the change are easy to spot and
+     fix. Applications that are vulnerable to symlink ToCToU by not having
+     the change aren't. Additionally, no applications have yet been found
+     that rely on this behavior.
+ - Applications should just use mkstemp() or O_CREATE|O_EXCL.
+   - True, but applications are not perfect, and new software is written
+     all the time that makes these mistakes; blocking this flaw at the
+     kernel is a single solution to the entire class of vulnerability.
+ - This should live in the core VFS.
+   - This should live in an LSM. (https://lkml.org/lkml/2010/5/31/135)
+ - This should live in an LSM.
+   - This should live in the core VFS. (https://lkml.org/lkml/2010/8/2/188)
+
+This patch is based on the patch in Openwall and grsecurity, along with
+suggestions from Al Viro.  I have added a sysctl to enable the protected
+behavior, documentation, and an audit notification.
+
+[akpm at linux-foundation.org: move sysctl_protected_sticky_symlinks declaration into .h]
+Signed-off-by: Kees Cook <keescook at chromium.org>
+Reviewed-by: Ingo Molnar <mingo at elte.hu>
+Cc: Matthew Wilcox <matthew at wil.cx>
+Cc: Alexander Viro <viro at zeniv.linux.org.uk>
+Cc: Rik van Riel <riel at redhat.com>
+Cc: Federica Teodori <federica.teodori at googlemail.com>
+Cc: Lucian Adrian Grijincu <lucian.grijincu at gmail.com>
+Cc: Ingo Molnar <mingo at elte.hu>
+Cc: Peter Zijlstra <a.p.zijlstra at chello.nl>
+Cc: Eric Paris <eparis at redhat.com>
+Cc: Randy Dunlap <rdunlap at xenotime.net>
+Cc: Dan Rosenberg <drosenberg at vsecurity.com>
+Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
+---
+ Documentation/sysctl/fs.txt |   21 ++++++++++
+ fs/Kconfig                  |   34 ++++++++++++++++
+ fs/namei.c                  |   91 ++++++++++++++++++++++++++++++++++++++++---
+ include/linux/fs.h          |    1 +
+ kernel/sysctl.c             |   11 +++++
+ 5 files changed, 152 insertions(+), 6 deletions(-)
+
+diff --git a/Documentation/sysctl/fs.txt b/Documentation/sysctl/fs.txt
+index 88fd7f5..4b47cd5 100644
+--- a/Documentation/sysctl/fs.txt
++++ b/Documentation/sysctl/fs.txt
+@@ -32,6 +32,7 @@ Currently, these files are in /proc/sys/fs:
+ - nr_open
+ - overflowuid
+ - overflowgid
++- protected_sticky_symlinks
+ - suid_dumpable
+ - super-max
+ - super-nr
+@@ -157,6 +158,26 @@ The default is 65534.
+ 
+ ==============================================================
+ 
++protected_sticky_symlinks:
++
++A long-standing class of security issues is the symlink-based
++time-of-check-time-of-use race, most commonly seen in world-writable
++directories like /tmp. The common method of exploitation of this flaw
++is to cross privilege boundaries when following a given symlink (i.e. a
++root process follows a symlink belonging to another user). For a likely
++incomplete list of hundreds of examples across the years, please see:
++http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp
++
++When set to "0", symlink following behavior is unrestricted.
++
++When set to "1" symlinks are permitted to be followed only when outside
++a sticky world-writable directory, or when the uid of the symlink and
++follower match, or when the directory owner matches the symlink's owner.
++
++This protection is based on the restrictions in Openwall and grsecurity.
++
++==============================================================
++
+ suid_dumpable:
+ 
+ This value can be used to query and set the core dump mode for setuid
+diff --git a/fs/Kconfig b/fs/Kconfig
+index 1497ddf..d0fdbdd 100644
+--- a/fs/Kconfig
++++ b/fs/Kconfig
+@@ -272,4 +272,38 @@ endif # NETWORK_FILESYSTEMS
+ source "fs/nls/Kconfig"
+ source "fs/dlm/Kconfig"
+ 
++config PROTECTED_STICKY_SYMLINKS
++	bool "Evaluate vulnerable symlink conditions"
++	default y
++	help
++	  A long-standing class of security issues is the symlink-based
++	  time-of-check-time-of-use race, most commonly seen in
++	  world-writable directories like /tmp. The common method of
++	  exploitation of this flaw is to cross privilege boundaries
++	  when following a given symlink (i.e. a root process follows
++	  a malicious symlink belonging to another user).
++
++	  Enabling this adds the logic to examine these dangerous symlink
++	  conditions. Whether or not the dangerous symlink situations are
++	  allowed is controlled by PROTECTED_STICKY_SYMLINKS_ENABLED.
++
++config PROTECTED_STICKY_SYMLINKS_ENABLED
++	depends on PROTECTED_STICKY_SYMLINKS
++	bool "Disallow symlink following in sticky world-writable dirs"
++	default y
++	help
++	  Solve ToCToU symlink race vulnerablities by permitting symlinks
++	  to be followed only when outside a sticky world-writable directory,
++	  or when the uid of the symlink and follower match, or when the
++	  directory and symlink owners match.
++
++	  When PROC_SYSCTL is enabled, this setting can also be controlled
++	  via /proc/sys/kernel/protected_sticky_symlinks.
++
++config PROTECTED_STICKY_SYMLINKS_ENABLED_SYSCTL
++	depends on PROTECTED_STICKY_SYMLINKS
++	int
++	default "1" if PROTECTED_STICKY_SYMLINKS_ENABLED
++	default "0"
++
+ endmenu
+diff --git a/fs/namei.c b/fs/namei.c
+index 5d1fab5..5b4c05b 100644
+--- a/fs/namei.c
++++ b/fs/namei.c
+@@ -623,10 +623,84 @@ static inline void put_link(struct nameidata *nd, struct path *link, void *cooki
+ 	path_put(link);
+ }
+ 
++#ifdef CONFIG_PROTECTED_STICKY_SYMLINKS
++int sysctl_protected_sticky_symlinks __read_mostly =
++	CONFIG_PROTECTED_STICKY_SYMLINKS_ENABLED_SYSCTL;
++
++/**
++ * may_follow_link - Check symlink following for unsafe situations
++ * @dentry: The inode/dentry of the symlink
++ * @nameidata: The path data of the symlink
++ *
++ * In the case of the protected_sticky_symlinks sysctl being enabled,
++ * CAP_DAC_OVERRIDE needs to be specifically ignored if the symlink is
++ * in a sticky world-writable directory. This is to protect privileged
++ * processes from failing races against path names that may change out
++ * from under them by way of other users creating malicious symlinks.
++ * It will permit symlinks to be followed only when outside a sticky
++ * world-writable directory, or when the uid of the symlink and follower
++ * match, or when the directory owner matches the symlink's owner.
++ *
++ * Returns 0 if following the symlink is allowed, -ve on error.
++ */
++static inline int
++may_follow_link(struct dentry *dentry, struct nameidata *nameidata)
++{
++	int error = 0;
++	const struct inode *parent;
++	const struct inode *inode;
++	const struct cred *cred;
++
++	if (!sysctl_protected_sticky_symlinks)
++		return 0;
++
++	/* Allowed if owner and follower match. */
++	cred = current_cred();
++	inode = dentry->d_inode;
++	if (cred->fsuid == inode->i_uid)
++		return 0;
++
++	/* Check parent directory mode and owner. */
++	spin_lock(&dentry->d_lock);
++	parent = dentry->d_parent->d_inode;
++	if ((parent->i_mode & (S_ISVTX|S_IWOTH)) == (S_ISVTX|S_IWOTH) &&
++	    parent->i_uid != inode->i_uid) {
++		error = -EACCES;
++	}
++	spin_unlock(&dentry->d_lock);
++
++#ifdef CONFIG_AUDIT
++	if (error) {
++		struct audit_buffer *ab;
++
++		ab = audit_log_start(current->audit_context,
++				     GFP_KERNEL, AUDIT_AVC);
++		audit_log_format(ab, "op=follow_link action=denied");
++		audit_log_format(ab, " pid=%d comm=", current->pid);
++		audit_log_untrustedstring(ab, current->comm);
++		audit_log_d_path(ab, " path=", &nameidata->path);
++		audit_log_format(ab, " name=");
++		audit_log_untrustedstring(ab, dentry->d_name.name);
++		audit_log_format(ab, " dev=");
++		audit_log_untrustedstring(ab, inode->i_sb->s_id);
++		audit_log_format(ab, " ino=%lu", inode->i_ino);
++		audit_log_end(ab);
++	}
++#endif
++	return error;
++}
++#else
++static inline int
++may_follow_link(struct dentry *dentry, struct nameidata *nameidata)
++{
++	return 0;
++}
++#endif
++
+ static __always_inline int
+-follow_link(struct path *link, struct nameidata *nd, void **p)
++follow_link(struct path *link, struct nameidata *nd, void **p, bool sensitive)
+ {
+-	int error;
++	int error = 0;
+ 	struct dentry *dentry = link->dentry;
+ 
+ 	BUG_ON(nd->flags & LOOKUP_RCU);
+@@ -645,7 +719,10 @@ follow_link(struct path *link, struct nameidata *nd, void **p)
+ 	touch_atime(link->mnt, dentry);
+ 	nd_set_link(nd, NULL);
+ 
+-	error = security_inode_follow_link(link->dentry, nd);
++	if (sensitive)
++		error = may_follow_link(link->dentry, nd);
++	if (!error)
++		error = security_inode_follow_link(link->dentry, nd);
+ 	if (error) {
+ 		*p = ERR_PTR(error); /* no ->put_link(), please */
+ 		path_put(&nd->path);
+@@ -1342,7 +1419,7 @@ static inline int nested_symlink(struct path *path, struct nameidata *nd)
+ 		struct path link = *path;
+ 		void *cookie;
+ 
+-		res = follow_link(&link, nd, &cookie);
++		res = follow_link(&link, nd, &cookie, false);
+ 		if (!res)
+ 			res = walk_component(nd, path, &nd->last,
+ 					     nd->last_type, LOOKUP_FOLLOW);
+@@ -1615,7 +1692,8 @@ static int path_lookupat(int dfd, const char *name,
+ 			void *cookie;
+ 			struct path link = path;
+ 			nd->flags |= LOOKUP_PARENT;
+-			err = follow_link(&link, nd, &cookie);
++
++			err = follow_link(&link, nd, &cookie, true);
+ 			if (!err)
+ 				err = lookup_last(nd, &path);
+ 			put_link(nd, &link, cookie);
+@@ -2327,7 +2405,8 @@ static struct file *path_openat(int dfd, const char *pathname,
+ 		}
+ 		nd->flags |= LOOKUP_PARENT;
+ 		nd->flags &= ~(LOOKUP_OPEN|LOOKUP_CREATE|LOOKUP_EXCL);
+-		error = follow_link(&link, nd, &cookie);
++
++		error = follow_link(&link, nd, &cookie, true);
+ 		if (unlikely(error))
+ 			filp = ERR_PTR(error);
+ 		else
+diff --git a/include/linux/fs.h b/include/linux/fs.h
+index 9808b21..aba8db0 100644
+--- a/include/linux/fs.h
++++ b/include/linux/fs.h
+@@ -423,6 +423,7 @@ extern unsigned long get_max_files(void);
+ extern int sysctl_nr_open;
+ extern struct inodes_stat_t inodes_stat;
+ extern int leases_enable, lease_break_time;
++extern int sysctl_protected_sticky_symlinks;
+ 
+ struct buffer_head;
+ typedef int (get_block_t)(struct inode *inode, sector_t iblock,
+diff --git a/kernel/sysctl.c b/kernel/sysctl.c
+index 62538ee..c469b88 100644
+--- a/kernel/sysctl.c
++++ b/kernel/sysctl.c
+@@ -1497,6 +1497,17 @@ static struct ctl_table fs_table[] = {
+ 	},
+ #endif
+ #endif
++#ifdef CONFIG_PROTECTED_STICKY_SYMLINKS
++	{
++		.procname	= "protected_sticky_symlinks",
++		.data		= &sysctl_protected_sticky_symlinks,
++		.maxlen		= sizeof(int),
++		.mode		= 0600,
++		.proc_handler	= proc_dointvec_minmax,
++		.extra1		= &zero,
++		.extra2		= &one,
++	},
++#endif
+ 	{
+ 		.procname	= "suid_dumpable",
+ 		.data		= &suid_dumpable,
+-- 
+1.7.9.1
+

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/hwmon-it87-Add-IT8728F-support.patch (from r18697, dists/trunk/linux-2.6/debian/patches/features/all/hwmon-it87-Add-IT8728F-support.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/hwmon-it87-Add-IT8728F-support.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18697, dists/trunk/linux-2.6/debian/patches/features/all/hwmon-it87-Add-IT8728F-support.patch)
@@ -0,0 +1,270 @@
+From: Jean Delvare <khali at linux-fr.org>
+Date: Mon, 16 Jan 2012 22:51:48 +0100
+Subject: [PATCH] hwmon: (it87) Add IT8728F support
+
+commit 16b5dda22e3798e61bb008d2329d4f4d90ef764e upstream.
+
+Until we get a datasheet for the IT8728F, treat it as fully compatible
+with the IT8721F, as it seems to work reasonably well.
+
+This closes kernel bug #27262.
+
+Signed-off-by: Jean Delvare <khali at linux-fr.org>
+Acked-by: Guenter Roeck <guenter.roeck at ericsson.com>
+---
+ Documentation/hwmon/it87 |   13 +++++++--
+ drivers/hwmon/Kconfig    |    4 +-
+ drivers/hwmon/it87.c     |   61 ++++++++++++++++++++++++++++++++++-----------
+ 3 files changed, 58 insertions(+), 20 deletions(-)
+
+diff --git a/Documentation/hwmon/it87 b/Documentation/hwmon/it87
+index 6f496a5..23b7def 100644
+--- a/Documentation/hwmon/it87
++++ b/Documentation/hwmon/it87
+@@ -26,6 +26,10 @@ Supported chips:
+     Prefix: 'it8721'
+     Addresses scanned: from Super I/O config space (8 I/O ports)
+     Datasheet: Not publicly available
++  * IT8728F
++    Prefix: 'it8728'
++    Addresses scanned: from Super I/O config space (8 I/O ports)
++    Datasheet: Not publicly available
+   * SiS950   [clone of IT8705F]
+     Prefix: 'it87'
+     Addresses scanned: from Super I/O config space (8 I/O ports)
+@@ -71,7 +75,7 @@ Description
+ -----------
+ 
+ This driver implements support for the IT8705F, IT8712F, IT8716F,
+-IT8718F, IT8720F, IT8721F, IT8726F, IT8758E and SiS950 chips.
++IT8718F, IT8720F, IT8721F, IT8726F, IT8728F, IT8758E and SiS950 chips.
+ 
+ These chips are 'Super I/O chips', supporting floppy disks, infrared ports,
+ joysticks and other miscellaneous stuff. For hardware monitoring, they
+@@ -105,6 +109,9 @@ The IT8726F is just bit enhanced IT8716F with additional hardware
+ for AMD power sequencing. Therefore the chip will appear as IT8716F
+ to userspace applications.
+ 
++The IT8728F is considered compatible with the IT8721F, until a datasheet
++becomes available (hopefully.)
++
+ Temperatures are measured in degrees Celsius. An alarm is triggered once
+ when the Overtemperature Shutdown limit is crossed.
+ 
+@@ -121,8 +128,8 @@ alarm is triggered if the voltage has crossed a programmable minimum or
+ maximum limit. Note that minimum in this case always means 'closest to
+ zero'; this is important for negative voltage measurements. All voltage
+ inputs can measure voltages between 0 and 4.08 volts, with a resolution of
+-0.016 volt (except IT8721F/IT8758E: 0.012 volt.) The battery voltage in8 does
+-not have limit registers.
++0.016 volt (except IT8721F/IT8758E and IT8728F: 0.012 volt.) The battery
++voltage in8 does not have limit registers.
+ 
+ On the IT8721F/IT8758E, some voltage inputs are internal and scaled inside
+ the chip (in7, in8 and optionally in3). The driver handles this transparently
+diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
+index f468bbb..0226040 100644
+--- a/drivers/hwmon/Kconfig
++++ b/drivers/hwmon/Kconfig
+@@ -474,8 +474,8 @@ config SENSORS_IT87
+ 	select HWMON_VID
+ 	help
+ 	  If you say yes here you get support for ITE IT8705F, IT8712F,
+-	  IT8716F, IT8718F, IT8720F, IT8721F, IT8726F and IT8758E sensor
+-	  chips, and the SiS960 clone.
++	  IT8716F, IT8718F, IT8720F, IT8721F, IT8726F, IT8728F and IT8758E
++	  sensor chips, and the SiS960 clone.
+ 
+ 	  This driver can also be built as a module.  If so, the module
+ 	  will be called it87.
+diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c
+index 603ef2a..0054d6f 100644
+--- a/drivers/hwmon/it87.c
++++ b/drivers/hwmon/it87.c
+@@ -17,6 +17,7 @@
+  *            IT8720F  Super I/O chip w/LPC interface
+  *            IT8721F  Super I/O chip w/LPC interface
+  *            IT8726F  Super I/O chip w/LPC interface
++ *            IT8728F  Super I/O chip w/LPC interface
+  *            IT8758E  Super I/O chip w/LPC interface
+  *            Sis950   A clone of the IT8705F
+  *
+@@ -58,7 +59,7 @@
+ 
+ #define DRVNAME "it87"
+ 
+-enum chips { it87, it8712, it8716, it8718, it8720, it8721 };
++enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728 };
+ 
+ static unsigned short force_id;
+ module_param(force_id, ushort, 0);
+@@ -135,6 +136,7 @@ static inline void superio_exit(void)
+ #define IT8720F_DEVID 0x8720
+ #define IT8721F_DEVID 0x8721
+ #define IT8726F_DEVID 0x8726
++#define IT8728F_DEVID 0x8728
+ #define IT87_ACT_REG  0x30
+ #define IT87_BASE_REG 0x60
+ 
+@@ -274,11 +276,31 @@ struct it87_data {
+ 	s8 auto_temp[3][5];	/* [nr][0] is point1_temp_hyst */
+ };
+ 
++static inline int has_12mv_adc(const struct it87_data *data)
++{
++	/*
++	 * IT8721F and later have a 12 mV ADC, also with internal scaling
++	 * on selected inputs.
++	 */
++	return data->type == it8721
++	    || data->type == it8728;
++}
++
++static inline int has_newer_autopwm(const struct it87_data *data)
++{
++	/*
++	 * IT8721F and later have separate registers for the temperature
++	 * mapping and the manual duty cycle.
++	 */
++	return data->type == it8721
++	    || data->type == it8728;
++}
++
+ static u8 in_to_reg(const struct it87_data *data, int nr, long val)
+ {
+ 	long lsb;
+ 
+-	if (data->type == it8721) {
++	if (has_12mv_adc(data)) {
+ 		if (data->in_scaled & (1 << nr))
+ 			lsb = 24;
+ 		else
+@@ -292,7 +314,7 @@ static u8 in_to_reg(const struct it87_data *data, int nr, long val)
+ 
+ static int in_from_reg(const struct it87_data *data, int nr, int val)
+ {
+-	if (data->type == it8721) {
++	if (has_12mv_adc(data)) {
+ 		if (data->in_scaled & (1 << nr))
+ 			return val * 24;
+ 		else
+@@ -329,7 +351,7 @@ static inline u16 FAN16_TO_REG(long rpm)
+ 
+ static u8 pwm_to_reg(const struct it87_data *data, long val)
+ {
+-	if (data->type == it8721)
++	if (has_newer_autopwm(data))
+ 		return val;
+ 	else
+ 		return val >> 1;
+@@ -337,7 +359,7 @@ static u8 pwm_to_reg(const struct it87_data *data, long val)
+ 
+ static int pwm_from_reg(const struct it87_data *data, u8 reg)
+ {
+-	if (data->type == it8721)
++	if (has_newer_autopwm(data))
+ 		return reg;
+ 	else
+ 		return (reg & 0x7f) << 1;
+@@ -374,7 +396,8 @@ static inline int has_16bit_fans(const struct it87_data *data)
+ 	    || data->type == it8716
+ 	    || data->type == it8718
+ 	    || data->type == it8720
+-	    || data->type == it8721;
++	    || data->type == it8721
++	    || data->type == it8728;
+ }
+ 
+ static inline int has_old_autopwm(const struct it87_data *data)
+@@ -842,7 +865,7 @@ static ssize_t set_pwm_enable(struct device *dev,
+ 				 data->fan_main_ctrl);
+ 	} else {
+ 		if (val == 1)				/* Manual mode */
+-			data->pwm_ctrl[nr] = data->type == it8721 ?
++			data->pwm_ctrl[nr] = has_newer_autopwm(data) ?
+ 					     data->pwm_temp_map[nr] :
+ 					     data->pwm_duty[nr];
+ 		else					/* Automatic mode */
+@@ -870,7 +893,7 @@ static ssize_t set_pwm(struct device *dev, struct device_attribute *attr,
+ 		return -EINVAL;
+ 
+ 	mutex_lock(&data->update_lock);
+-	if (data->type == it8721) {
++	if (has_newer_autopwm(data)) {
+ 		/* If we are in automatic mode, the PWM duty cycle register
+ 		 * is read-only so we can't write the value */
+ 		if (data->pwm_ctrl[nr] & 0x80) {
+@@ -1311,8 +1334,8 @@ static ssize_t show_label(struct device *dev, struct device_attribute *attr,
+ 	struct it87_data *data = dev_get_drvdata(dev);
+ 	int nr = to_sensor_dev_attr(attr)->index;
+ 
+-	return sprintf(buf, "%s\n", data->type == it8721 ? labels_it8721[nr]
+-							 : labels[nr]);
++	return sprintf(buf, "%s\n", has_12mv_adc(data) ? labels_it8721[nr]
++						       : labels[nr]);
+ }
+ static SENSOR_DEVICE_ATTR(in3_label, S_IRUGO, show_label, NULL, 0);
+ static SENSOR_DEVICE_ATTR(in7_label, S_IRUGO, show_label, NULL, 1);
+@@ -1605,6 +1628,9 @@ static int __init it87_find(unsigned short *address,
+ 	case IT8721F_DEVID:
+ 		sio_data->type = it8721;
+ 		break;
++	case IT8728F_DEVID:
++		sio_data->type = it8728;
++		break;
+ 	case 0xffff:	/* No device at all */
+ 		goto exit;
+ 	default:
+@@ -1646,8 +1672,11 @@ static int __init it87_find(unsigned short *address,
+ 		superio_select(GPIO);
+ 
+ 		reg = superio_inb(IT87_SIO_GPIO3_REG);
+-		if (sio_data->type == it8721) {
+-			/* The IT8721F/IT8758E doesn't have VID pins at all */
++		if (sio_data->type == it8721 || sio_data->type == it8728) {
++			/*
++			 * The IT8721F/IT8758E doesn't have VID pins at all,
++			 * not sure about the IT8728F.
++			 */
+ 			sio_data->skip_vid = 1;
+ 		} else {
+ 			/* We need at least 4 VID pins */
+@@ -1692,7 +1721,8 @@ static int __init it87_find(unsigned short *address,
+ 		}
+ 		if (reg & (1 << 0))
+ 			sio_data->internal |= (1 << 0);
+-		if ((reg & (1 << 1)) || sio_data->type == it8721)
++		if ((reg & (1 << 1)) || sio_data->type == it8721 ||
++		    sio_data->type == it8728)
+ 			sio_data->internal |= (1 << 1);
+ 
+ 		sio_data->beep_pin = superio_inb(IT87_SIO_BEEP_PIN_REG) & 0x3f;
+@@ -1770,6 +1800,7 @@ static int __devinit it87_probe(struct platform_device *pdev)
+ 		"it8718",
+ 		"it8720",
+ 		"it8721",
++		"it8728",
+ 	};
+ 
+ 	res = platform_get_resource(pdev, IORESOURCE_IO, 0);
+@@ -1807,7 +1838,7 @@ static int __devinit it87_probe(struct platform_device *pdev)
+ 	enable_pwm_interface = it87_check_pwm(dev);
+ 
+ 	/* Starting with IT8721F, we handle scaling of internal voltages */
+-	if (data->type == it8721) {
++	if (has_12mv_adc(data)) {
+ 		if (sio_data->internal & (1 << 0))
+ 			data->in_scaled |= (1 << 3);	/* in3 is AVCC */
+ 		if (sio_data->internal & (1 << 1))
+@@ -2093,7 +2124,7 @@ static void __devinit it87_init_device(struct platform_device *pdev)
+ static void it87_update_pwm_ctrl(struct it87_data *data, int nr)
+ {
+ 	data->pwm_ctrl[nr] = it87_read_value(data, IT87_REG_PWM(nr));
+-	if (data->type == it8721) {
++	if (has_newer_autopwm(data)) {
+ 		data->pwm_temp_map[nr] = data->pwm_ctrl[nr] & 0x03;
+ 		data->pwm_duty[nr] = it87_read_value(data,
+ 						     IT87_REG_PWM_DUTY(nr));
+-- 
+1.7.9
+

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/arm-disable-highmem-on-rt.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/arm-disable-highmem-on-rt.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/arm-disable-highmem-on-rt.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -11,7 +11,7 @@
 ===================================================================
 --- linux-3.2.orig/arch/arm/Kconfig
 +++ linux-3.2/arch/arm/Kconfig
-@@ -1655,7 +1655,7 @@ config HAVE_ARCH_PFN_VALID
+@@ -1668,7 +1668,7 @@ config HAVE_ARCH_PFN_VALID
  
  config HIGHMEM
  	bool "High Memory Support"

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/arm-enable-interrupts-in-signal-code.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/arm-enable-interrupts-in-signal-code.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/arm-enable-interrupts-in-signal-code.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -11,7 +11,7 @@
 ===================================================================
 --- linux-3.2.orig/arch/arm/kernel/signal.c
 +++ linux-3.2/arch/arm/kernel/signal.c
-@@ -673,6 +673,9 @@ static void do_signal(struct pt_regs *re
+@@ -672,6 +672,9 @@ static void do_signal(struct pt_regs *re
  	if (!user_mode(regs))
  		return;
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/arm-mark-pmu-interupt-no-thread.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/arm-mark-pmu-interupt-no-thread.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/arm-mark-pmu-interupt-no-thread.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -14,7 +14,7 @@
 ===================================================================
 --- linux-3.2.orig/arch/arm/kernel/perf_event.c
 +++ linux-3.2/arch/arm/kernel/perf_event.c
-@@ -432,7 +432,7 @@ armpmu_reserve_hardware(struct arm_pmu *
+@@ -441,7 +441,7 @@ armpmu_reserve_hardware(struct arm_pmu *
  		}
  
  		err = request_irq(irq, handle_irq,

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/block-shorten-interrupt-disabled-regions.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/block-shorten-interrupt-disabled-regions.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/block-shorten-interrupt-disabled-regions.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -63,7 +63,7 @@
  	q->request_fn(q);
  }
  EXPORT_SYMBOL(__blk_run_queue);
-@@ -2742,11 +2746,11 @@ static void queue_unplugged(struct reque
+@@ -2745,11 +2749,11 @@ static void queue_unplugged(struct reque
  	 * this lock).
  	 */
  	if (from_schedule) {
@@ -77,7 +77,7 @@
  	}
  
  }
-@@ -2772,7 +2776,6 @@ static void flush_plug_callbacks(struct 
+@@ -2775,7 +2779,6 @@ static void flush_plug_callbacks(struct 
  void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
  {
  	struct request_queue *q;
@@ -85,7 +85,7 @@
  	struct request *rq;
  	LIST_HEAD(list);
  	unsigned int depth;
-@@ -2793,11 +2796,6 @@ void blk_flush_plug_list(struct blk_plug
+@@ -2796,11 +2799,6 @@ void blk_flush_plug_list(struct blk_plug
  	q = NULL;
  	depth = 0;
  
@@ -97,7 +97,7 @@
  	while (!list_empty(&list)) {
  		rq = list_entry_rq(list.next);
  		list_del_init(&rq->queuelist);
-@@ -2810,7 +2808,7 @@ void blk_flush_plug_list(struct blk_plug
+@@ -2813,7 +2811,7 @@ void blk_flush_plug_list(struct blk_plug
  				queue_unplugged(q, depth, from_schedule);
  			q = rq->q;
  			depth = 0;
@@ -106,7 +106,7 @@
  		}
  		/*
  		 * rq is already accounted, so use raw insert
-@@ -2828,8 +2826,6 @@ void blk_flush_plug_list(struct blk_plug
+@@ -2831,8 +2829,6 @@ void blk_flush_plug_list(struct blk_plug
  	 */
  	if (q)
  		queue_unplugged(q, depth, from_schedule);

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/check-series (from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/check-series)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/check-series	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/check-series)
@@ -0,0 +1,17 @@
+#! /bin/sh
+
+debian_series="$(mktemp)"
+rt_series="$(mktemp)"
+
+trap 'rm "$debian_series" "$rt_series"' INT QUIT EXIT
+
+# Pick all featureset=rt patches
+grep "featureset=rt$" debian/patches/series/base-extra > "$debian_series"
+
+# Remove comments and empty lines. Drop localversion patch as uname version
+# shouldn't be touched. Reformat to match series format.
+sed -r -e 's/ *#.*//; /^$/d; /^localversion.patch$/d; s,.*,+ features/all/rt/& featureset=rt,' "debian/patches/features/all/rt/series" > "$rt_series"
+
+# removed lines are OK if the rt patch contains fixes that are applied on
+# featureset=none kernels, too.
+diff -u --label "debian/patches/features/all/rt/series" --label "debian/patches/series/base-extra" "$rt_series" "$debian_series"

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/cond-resched-lock-rt-tweak.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/cond-resched-lock-rt-tweak.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/cond-resched-lock-rt-tweak.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -11,7 +11,7 @@
 ===================================================================
 --- linux-3.2.orig/include/linux/sched.h
 +++ linux-3.2/include/linux/sched.h
-@@ -2596,7 +2596,7 @@ extern int _cond_resched(void);
+@@ -2599,7 +2599,7 @@ extern int _cond_resched(void);
  
  extern int __cond_resched_lock(spinlock_t *lock);
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/cond-resched-softirq-rt.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/cond-resched-softirq-rt.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/cond-resched-softirq-rt.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -12,7 +12,7 @@
 ===================================================================
 --- linux-3.2.orig/include/linux/sched.h
 +++ linux-3.2/include/linux/sched.h
-@@ -2599,12 +2599,16 @@ extern int __cond_resched_lock(spinlock_
+@@ -2602,12 +2602,16 @@ extern int __cond_resched_lock(spinlock_
  	__cond_resched_lock(lock);				\
  })
  
@@ -33,7 +33,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/sched.c
 +++ linux-3.2/kernel/sched.c
-@@ -5813,6 +5813,7 @@ int __cond_resched_lock(spinlock_t *lock
+@@ -5826,6 +5826,7 @@ int __cond_resched_lock(spinlock_t *lock
  }
  EXPORT_SYMBOL(__cond_resched_lock);
  
@@ -41,7 +41,7 @@
  int __sched __cond_resched_softirq(void)
  {
  	BUG_ON(!in_softirq());
-@@ -5826,6 +5827,7 @@ int __sched __cond_resched_softirq(void)
+@@ -5839,6 +5840,7 @@ int __sched __cond_resched_softirq(void)
  	return 0;
  }
  EXPORT_SYMBOL(__cond_resched_softirq);

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch)
@@ -0,0 +1,115 @@
+Subject: cpu: Make hotplug.lock a "sleeping" spinlock on RT
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Fri, 02 Mar 2012 10:36:57 -0500
+
+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>
+diff --git a/kernel/cpu.c b/kernel/cpu.c
+index fa40834..c25b5ff 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.
+@@ -58,6 +63,14 @@ static struct {
+ 	.refcount = 0,
+ };
+ 
++#ifdef CONFIG_PREEMPT_RT_FULL
++# define hotplug_lock() spin_lock(&cpu_hotplug.lock)
++# define hotplug_unlock() spin_unlock(&cpu_hotplug.lock)
++#else
++# define hotplug_lock() mutex_lock(&cpu_hotplug.lock)
++# define hotplug_lock() mutex_unlock(&cpu_hotplug.lock)
++#endif
++
+ struct hotplug_pcp {
+ 	struct task_struct *unplug;
+ 	int refcount;
+@@ -87,8 +100,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 +174,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 +185,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 +220,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 +232,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();
+ }
+ 
+ #else /* #if CONFIG_HOTPLUG_CPU */
+
+
+
+

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/drivers-net-ehea-mark-rx-irq-no-thread.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/drivers-net-ehea-mark-rx-irq-no-thread.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/drivers-net-ehea-mark-rx-irq-no-thread.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -42,7 +42,7 @@
 ===================================================================
 --- linux-3.2.orig/drivers/net/ethernet/ibm/ehea/ehea_main.c
 +++ linux-3.2/drivers/net/ethernet/ibm/ehea/ehea_main.c
-@@ -1303,7 +1303,7 @@ static int ehea_reg_interrupts(struct ne
+@@ -1304,7 +1304,7 @@ static int ehea_reg_interrupts(struct ne
  			 "%s-queue%d", dev->name, i);
  		ret = ibmebus_request_irq(pr->eq->attr.ist1,
  					  ehea_recv_irq_handler,

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/early-printk-consolidate.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/early-printk-consolidate.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/early-printk-consolidate.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -228,7 +228,7 @@
 ===================================================================
 --- linux-3.2.orig/arch/sparc/kernel/setup_64.c
 +++ linux-3.2/arch/sparc/kernel/setup_64.c
-@@ -477,6 +477,12 @@ static void __init init_sparc64_elf_hwca
+@@ -487,6 +487,12 @@ static void __init init_sparc64_elf_hwca
  		popc_patch();
  }
  
@@ -241,7 +241,7 @@
  void __init setup_arch(char **cmdline_p)
  {
  	/* Initialize PROM console and command line. */
-@@ -488,7 +494,7 @@ void __init setup_arch(char **cmdline_p)
+@@ -498,7 +504,7 @@ void __init setup_arch(char **cmdline_p)
  #ifdef CONFIG_EARLYFB
  	if (btext_find_display())
  #endif

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/epoll-use-get-cpu-light.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/epoll-use-get-cpu-light.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/epoll-use-get-cpu-light.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -11,7 +11,7 @@
 ===================================================================
 --- linux-3.2.orig/fs/eventpoll.c
 +++ linux-3.2/fs/eventpoll.c
-@@ -438,12 +438,12 @@ static int ep_poll_wakeup_proc(void *pri
+@@ -464,12 +464,12 @@ static int ep_poll_wakeup_proc(void *pri
   */
  static void ep_poll_safewake(wait_queue_head_t *wq)
  {
@@ -25,4 +25,4 @@
 +	put_cpu_light();
  }
  
- /*
+ static void ep_remove_wait_queue(struct eppoll_entry *pwq)

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/filemap-fix-up.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/filemap-fix-up.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/filemap-fix-up.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -13,7 +13,7 @@
 ===================================================================
 --- linux-3.2.orig/mm/filemap.c
 +++ linux-3.2/mm/filemap.c
-@@ -2061,7 +2061,7 @@ size_t iov_iter_copy_from_user_atomic(st
+@@ -2044,7 +2044,7 @@ size_t iov_iter_copy_from_user_atomic(st
  	char *kaddr;
  	size_t copied;
  

Copied and modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch (from r18697, dists/trunk/linux-2.6/debian/patches/features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch)
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch	Fri Feb 17 02:25:49 2012	(r18697, copy source)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -18,10 +18,14 @@
 Signed-off-by: Steven Rostedt <rostedt at goodmis.org>
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 
-Index: linux-rt.git/arch/x86/kernel/traps.c
+---
+ arch/x86/kernel/traps.c |   32 +++++++++++++++++++++++---------
+ 1 file changed, 23 insertions(+), 9 deletions(-)
+
+Index: linux-3.2/arch/x86/kernel/traps.c
 ===================================================================
---- linux-rt.git.orig/arch/x86/kernel/traps.c
-+++ linux-rt.git/arch/x86/kernel/traps.c
+--- linux-3.2.orig/arch/x86/kernel/traps.c
++++ linux-3.2/arch/x86/kernel/traps.c
 @@ -87,9 +87,21 @@ static inline void conditional_sti(struc
  		local_irq_enable();
  }

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/fs-dentry-use-seqlock.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/fs-dentry-use-seqlock.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/fs-dentry-use-seqlock.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/fs-dentry-use-seqlock.patch)
@@ -0,0 +1,3033 @@
+Subject: fs: dentry use seqlock
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Mon, 27 Feb 2012 18:08:46 +0100
+
+Replace the open coded seqlock with a real seqlock, so RT can handle
+it.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+
+---
+ arch/powerpc/platforms/cell/spufs/inode.c |    6 
+ drivers/infiniband/hw/ipath/ipath_fs.c    |    6 
+ drivers/infiniband/hw/qib/qib_fs.c        |    6 
+ drivers/usb/core/inode.c                  |   12 -
+ fs/9p/vfs_dir.c                           |    4 
+ fs/afs/dir.c                              |    4 
+ fs/autofs4/autofs_i.h                     |   24 +-
+ fs/autofs4/expire.c                       |   44 ++---
+ fs/autofs4/root.c                         |   38 ++--
+ fs/btrfs/export.c                         |    4 
+ fs/btrfs/inode.c                          |    4 
+ fs/ceph/caps.c                            |    8 
+ fs/ceph/debugfs.c                         |    8 
+ fs/ceph/dir.c                             |   30 +--
+ fs/ceph/export.c                          |    4 
+ fs/ceph/inode.c                           |   20 +-
+ fs/ceph/mds_client.c                      |   18 +-
+ fs/cifs/dir.c                             |    6 
+ fs/coda/cache.c                           |    4 
+ fs/configfs/configfs_internal.h           |    4 
+ fs/configfs/inode.c                       |    6 
+ fs/dcache.c                               |  253 ++++++++++++++----------------
+ fs/dcookies.c                             |    8 
+ fs/exportfs/expfs.c                       |   12 -
+ fs/fat/inode.c                            |    4 
+ fs/fat/namei_vfat.c                       |    4 
+ fs/fs-writeback.c                         |    4 
+ fs/fuse/inode.c                           |    4 
+ fs/gfs2/export.c                          |    4 
+ fs/isofs/export.c                         |    4 
+ fs/libfs.c                                |   36 ++--
+ fs/namei.c                                |   42 ++--
+ fs/namespace.c                            |    8 
+ fs/ncpfs/dir.c                            |    6 
+ fs/ncpfs/ncplib_kernel.h                  |    8 
+ fs/nfs/dir.c                              |    6 
+ fs/nfs/getroot.c                          |   12 -
+ fs/nfs/namespace.c                        |   16 -
+ fs/nfs/unlink.c                           |   20 +-
+ fs/nilfs2/namei.c                         |    4 
+ fs/notify/fsnotify.c                      |    8 
+ fs/notify/vfsmount_mark.c                 |   24 +-
+ fs/ocfs2/dcache.c                         |    6 
+ fs/ocfs2/export.c                         |    4 
+ fs/reiserfs/inode.c                       |    4 
+ fs/udf/namei.c                            |    4 
+ fs/xfs/xfs_export.c                       |    8 
+ include/linux/dcache.h                    |   15 -
+ include/linux/fs.h                        |    4 
+ include/linux/fsnotify_backend.h          |    6 
+ kernel/cgroup.c                           |   22 +-
+ net/sunrpc/rpc_pipe.c                     |    6 
+ security/selinux/selinuxfs.c              |   14 -
+ 53 files changed, 418 insertions(+), 422 deletions(-)
+
+Index: linux-3.2/arch/powerpc/platforms/cell/spufs/inode.c
+===================================================================
+--- linux-3.2.orig/arch/powerpc/platforms/cell/spufs/inode.c
++++ linux-3.2/arch/powerpc/platforms/cell/spufs/inode.c
+@@ -165,18 +165,18 @@ static void spufs_prune_dir(struct dentr
+ 
+ 	mutex_lock(&dir->d_inode->i_mutex);
+ 	list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_u.d_child) {
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		if (!(d_unhashed(dentry)) && dentry->d_inode) {
+ 			dget_dlock(dentry);
+ 			__d_drop(dentry);
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 			simple_unlink(dir->d_inode, dentry);
+ 			/* XXX: what was dcache_lock protecting here? Other
+ 			 * filesystems (IB, configfs) release dcache_lock
+ 			 * before unlink */
+ 			dput(dentry);
+ 		} else {
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 		}
+ 	}
+ 	shrink_dcache_parent(dir);
+Index: linux-3.2/drivers/infiniband/hw/ipath/ipath_fs.c
+===================================================================
+--- linux-3.2.orig/drivers/infiniband/hw/ipath/ipath_fs.c
++++ linux-3.2/drivers/infiniband/hw/ipath/ipath_fs.c
+@@ -277,14 +277,14 @@ static int remove_file(struct dentry *pa
+ 		goto bail;
+ 	}
+ 
+-	spin_lock(&tmp->d_lock);
++	seq_spin_lock(&tmp->d_lock);
+ 	if (!(d_unhashed(tmp) && tmp->d_inode)) {
+ 		dget_dlock(tmp);
+ 		__d_drop(tmp);
+-		spin_unlock(&tmp->d_lock);
++		seq_spin_unlock(&tmp->d_lock);
+ 		simple_unlink(parent->d_inode, tmp);
+ 	} else
+-		spin_unlock(&tmp->d_lock);
++		seq_spin_unlock(&tmp->d_lock);
+ 
+ 	ret = 0;
+ bail:
+Index: linux-3.2/drivers/infiniband/hw/qib/qib_fs.c
+===================================================================
+--- linux-3.2.orig/drivers/infiniband/hw/qib/qib_fs.c
++++ linux-3.2/drivers/infiniband/hw/qib/qib_fs.c
+@@ -453,14 +453,14 @@ static int remove_file(struct dentry *pa
+ 		goto bail;
+ 	}
+ 
+-	spin_lock(&tmp->d_lock);
++	seq_spin_lock(&tmp->d_lock);
+ 	if (!(d_unhashed(tmp) && tmp->d_inode)) {
+ 		dget_dlock(tmp);
+ 		__d_drop(tmp);
+-		spin_unlock(&tmp->d_lock);
++		seq_spin_unlock(&tmp->d_lock);
+ 		simple_unlink(parent->d_inode, tmp);
+ 	} else {
+-		spin_unlock(&tmp->d_lock);
++		seq_spin_unlock(&tmp->d_lock);
+ 	}
+ 
+ 	ret = 0;
+Index: linux-3.2/drivers/usb/core/inode.c
+===================================================================
+--- linux-3.2.orig/drivers/usb/core/inode.c
++++ linux-3.2/drivers/usb/core/inode.c
+@@ -343,19 +343,19 @@ static int usbfs_empty (struct dentry *d
+ {
+ 	struct list_head *list;
+ 
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	list_for_each(list, &dentry->d_subdirs) {
+ 		struct dentry *de = list_entry(list, struct dentry, d_u.d_child);
+ 
+-		spin_lock_nested(&de->d_lock, DENTRY_D_LOCK_NESTED);
++		seq_spin_lock_nested(&de->d_lock, DENTRY_D_LOCK_NESTED);
+ 		if (usbfs_positive(de)) {
+-			spin_unlock(&de->d_lock);
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&de->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 			return 0;
+ 		}
+-		spin_unlock(&de->d_lock);
++		seq_spin_unlock(&de->d_lock);
+ 	}
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	return 1;
+ }
+ 
+Index: linux-3.2/fs/9p/vfs_dir.c
+===================================================================
+--- linux-3.2.orig/fs/9p/vfs_dir.c
++++ linux-3.2/fs/9p/vfs_dir.c
+@@ -107,7 +107,7 @@ static int v9fs_alloc_rdir_buf(struct fi
+ 			err = -ENOMEM;
+ 			goto exit;
+ 		}
+-		spin_lock(&filp->f_dentry->d_lock);
++		seq_spin_lock(&filp->f_dentry->d_lock);
+ 		if (!fid->rdir) {
+ 			rdir->buf = (uint8_t *)rdir + sizeof(struct p9_rdir);
+ 			mutex_init(&rdir->mutex);
+@@ -115,7 +115,7 @@ static int v9fs_alloc_rdir_buf(struct fi
+ 			fid->rdir = (void *) rdir;
+ 			rdir = NULL;
+ 		}
+-		spin_unlock(&filp->f_dentry->d_lock);
++		seq_spin_unlock(&filp->f_dentry->d_lock);
+ 		kfree(rdir);
+ 	}
+ exit:
+Index: linux-3.2/fs/afs/dir.c
+===================================================================
+--- linux-3.2.orig/fs/afs/dir.c
++++ linux-3.2/fs/afs/dir.c
+@@ -705,9 +705,9 @@ out_skip:
+ 
+ 	/* the dirent, if it exists, now points to a different vnode */
+ not_found:
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	dentry->d_flags |= DCACHE_NFSFS_RENAMED;
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 
+ out_bad:
+ 	if (dentry->d_inode) {
+Index: linux-3.2/fs/autofs4/autofs_i.h
+===================================================================
+--- linux-3.2.orig/fs/autofs4/autofs_i.h
++++ linux-3.2/fs/autofs4/autofs_i.h
+@@ -197,9 +197,9 @@ static inline void __managed_dentry_set_
+ 
+ static inline void managed_dentry_set_automount(struct dentry *dentry)
+ {
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	__managed_dentry_set_automount(dentry);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ }
+ 
+ static inline void __managed_dentry_clear_automount(struct dentry *dentry)
+@@ -209,9 +209,9 @@ static inline void __managed_dentry_clea
+ 
+ static inline void managed_dentry_clear_automount(struct dentry *dentry)
+ {
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	__managed_dentry_clear_automount(dentry);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ }
+ 
+ static inline void __managed_dentry_set_transit(struct dentry *dentry)
+@@ -221,9 +221,9 @@ static inline void __managed_dentry_set_
+ 
+ static inline void managed_dentry_set_transit(struct dentry *dentry)
+ {
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	__managed_dentry_set_transit(dentry);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ }
+ 
+ static inline void __managed_dentry_clear_transit(struct dentry *dentry)
+@@ -233,9 +233,9 @@ static inline void __managed_dentry_clea
+ 
+ static inline void managed_dentry_clear_transit(struct dentry *dentry)
+ {
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	__managed_dentry_clear_transit(dentry);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ }
+ 
+ static inline void __managed_dentry_set_managed(struct dentry *dentry)
+@@ -245,9 +245,9 @@ static inline void __managed_dentry_set_
+ 
+ static inline void managed_dentry_set_managed(struct dentry *dentry)
+ {
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	__managed_dentry_set_managed(dentry);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ }
+ 
+ static inline void __managed_dentry_clear_managed(struct dentry *dentry)
+@@ -257,9 +257,9 @@ static inline void __managed_dentry_clea
+ 
+ static inline void managed_dentry_clear_managed(struct dentry *dentry)
+ {
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	__managed_dentry_clear_managed(dentry);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ }
+ 
+ /* Initializing function */
+Index: linux-3.2/fs/autofs4/expire.c
+===================================================================
+--- linux-3.2.orig/fs/autofs4/expire.c
++++ linux-3.2/fs/autofs4/expire.c
+@@ -99,7 +99,7 @@ static struct dentry *get_next_positive_
+ 	spin_lock(&sbi->lookup_lock);
+ 
+ 	if (prev == NULL) {
+-		spin_lock(&root->d_lock);
++		seq_spin_lock(&root->d_lock);
+ 		prev = dget_dlock(root);
+ 		next = prev->d_subdirs.next;
+ 		p = prev;
+@@ -107,12 +107,12 @@ static struct dentry *get_next_positive_
+ 	}
+ 
+ 	p = prev;
+-	spin_lock(&p->d_lock);
++	seq_spin_lock(&p->d_lock);
+ again:
+ 	next = p->d_u.d_child.next;
+ start:
+ 	if (next == &root->d_subdirs) {
+-		spin_unlock(&p->d_lock);
++		seq_spin_unlock(&p->d_lock);
+ 		spin_unlock(&sbi->lookup_lock);
+ 		dput(prev);
+ 		return NULL;
+@@ -120,16 +120,16 @@ start:
+ 
+ 	q = list_entry(next, struct dentry, d_u.d_child);
+ 
+-	spin_lock_nested(&q->d_lock, DENTRY_D_LOCK_NESTED);
++	seq_spin_lock_nested(&q->d_lock, DENTRY_D_LOCK_NESTED);
+ 	/* Negative dentry - try next */
+ 	if (!simple_positive(q)) {
+-		spin_unlock(&p->d_lock);
++		seq_spin_unlock(&p->d_lock);
+ 		p = q;
+ 		goto again;
+ 	}
+ 	dget_dlock(q);
+-	spin_unlock(&q->d_lock);
+-	spin_unlock(&p->d_lock);
++	seq_spin_unlock(&q->d_lock);
++	seq_spin_unlock(&p->d_lock);
+ 	spin_unlock(&sbi->lookup_lock);
+ 
+ 	dput(prev);
+@@ -153,7 +153,7 @@ static struct dentry *get_next_positive_
+ 	spin_lock(&sbi->lookup_lock);
+ relock:
+ 	p = prev;
+-	spin_lock(&p->d_lock);
++	seq_spin_lock(&p->d_lock);
+ again:
+ 	next = p->d_subdirs.next;
+ 	if (next == &p->d_subdirs) {
+@@ -161,19 +161,19 @@ again:
+ 			struct dentry *parent;
+ 
+ 			if (p == root) {
+-				spin_unlock(&p->d_lock);
++				seq_spin_unlock(&p->d_lock);
+ 				spin_unlock(&sbi->lookup_lock);
+ 				dput(prev);
+ 				return NULL;
+ 			}
+ 
+ 			parent = p->d_parent;
+-			if (!spin_trylock(&parent->d_lock)) {
+-				spin_unlock(&p->d_lock);
++			if (!seq_spin_trylock(&parent->d_lock)) {
++				seq_spin_unlock(&p->d_lock);
+ 				cpu_relax();
+ 				goto relock;
+ 			}
+-			spin_unlock(&p->d_lock);
++			seq_spin_unlock(&p->d_lock);
+ 			next = p->d_u.d_child.next;
+ 			p = parent;
+ 			if (next != &parent->d_subdirs)
+@@ -182,16 +182,16 @@ again:
+ 	}
+ 	ret = list_entry(next, struct dentry, d_u.d_child);
+ 
+-	spin_lock_nested(&ret->d_lock, DENTRY_D_LOCK_NESTED);
++	seq_spin_lock_nested(&ret->d_lock, DENTRY_D_LOCK_NESTED);
+ 	/* Negative dentry - try next */
+ 	if (!simple_positive(ret)) {
+-		spin_unlock(&p->d_lock);
++		seq_spin_unlock(&p->d_lock);
+ 		p = ret;
+ 		goto again;
+ 	}
+ 	dget_dlock(ret);
+-	spin_unlock(&ret->d_lock);
+-	spin_unlock(&p->d_lock);
++	seq_spin_unlock(&ret->d_lock);
++	seq_spin_unlock(&p->d_lock);
+ 	spin_unlock(&sbi->lookup_lock);
+ 
+ 	dput(prev);
+@@ -462,11 +462,11 @@ found:
+ 	init_completion(&ino->expire_complete);
+ 	spin_unlock(&sbi->fs_lock);
+ 	spin_lock(&sbi->lookup_lock);
+-	spin_lock(&expired->d_parent->d_lock);
+-	spin_lock_nested(&expired->d_lock, DENTRY_D_LOCK_NESTED);
++	seq_spin_lock(&expired->d_parent->d_lock);
++	seq_spin_lock_nested(&expired->d_lock, DENTRY_D_LOCK_NESTED);
+ 	list_move(&expired->d_parent->d_subdirs, &expired->d_u.d_child);
+-	spin_unlock(&expired->d_lock);
+-	spin_unlock(&expired->d_parent->d_lock);
++	seq_spin_unlock(&expired->d_lock);
++	seq_spin_unlock(&expired->d_parent->d_lock);
+ 	spin_unlock(&sbi->lookup_lock);
+ 	return expired;
+ }
+@@ -556,7 +556,7 @@ int autofs4_do_expire_multi(struct super
+ 
+ 		spin_lock(&sbi->fs_lock);
+ 		ino->flags &= ~AUTOFS_INF_EXPIRING;
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		if (!ret) {
+ 			if ((IS_ROOT(dentry) ||
+ 			    (autofs_type_indirect(sbi->type) &&
+@@ -564,7 +564,7 @@ int autofs4_do_expire_multi(struct super
+ 			    !(dentry->d_flags & DCACHE_NEED_AUTOMOUNT))
+ 				__managed_dentry_set_automount(dentry);
+ 		}
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		complete_all(&ino->expire_complete);
+ 		spin_unlock(&sbi->fs_lock);
+ 		dput(dentry);
+Index: linux-3.2/fs/autofs4/root.c
+===================================================================
+--- linux-3.2.orig/fs/autofs4/root.c
++++ linux-3.2/fs/autofs4/root.c
+@@ -124,13 +124,13 @@ static int autofs4_dir_open(struct inode
+ 	 * it.
+ 	 */
+ 	spin_lock(&sbi->lookup_lock);
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	if (!d_mountpoint(dentry) && list_empty(&dentry->d_subdirs)) {
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		spin_unlock(&sbi->lookup_lock);
+ 		return -ENOENT;
+ 	}
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	spin_unlock(&sbi->lookup_lock);
+ 
+ out:
+@@ -179,7 +179,7 @@ static struct dentry *autofs4_lookup_act
+ 		ino = list_entry(p, struct autofs_info, active);
+ 		active = ino->dentry;
+ 
+-		spin_lock(&active->d_lock);
++		seq_spin_lock(&active->d_lock);
+ 
+ 		/* Already gone? */
+ 		if (active->d_count == 0)
+@@ -199,12 +199,12 @@ static struct dentry *autofs4_lookup_act
+ 
+ 		if (d_unhashed(active)) {
+ 			dget_dlock(active);
+-			spin_unlock(&active->d_lock);
++			seq_spin_unlock(&active->d_lock);
+ 			spin_unlock(&sbi->lookup_lock);
+ 			return active;
+ 		}
+ next:
+-		spin_unlock(&active->d_lock);
++		seq_spin_unlock(&active->d_lock);
+ 	}
+ 	spin_unlock(&sbi->lookup_lock);
+ 
+@@ -231,7 +231,7 @@ static struct dentry *autofs4_lookup_exp
+ 		ino = list_entry(p, struct autofs_info, expiring);
+ 		expiring = ino->dentry;
+ 
+-		spin_lock(&expiring->d_lock);
++		seq_spin_lock(&expiring->d_lock);
+ 
+ 		/* Bad luck, we've already been dentry_iput */
+ 		if (!expiring->d_inode)
+@@ -251,12 +251,12 @@ static struct dentry *autofs4_lookup_exp
+ 
+ 		if (d_unhashed(expiring)) {
+ 			dget_dlock(expiring);
+-			spin_unlock(&expiring->d_lock);
++			seq_spin_unlock(&expiring->d_lock);
+ 			spin_unlock(&sbi->lookup_lock);
+ 			return expiring;
+ 		}
+ next:
+-		spin_unlock(&expiring->d_lock);
++		seq_spin_unlock(&expiring->d_lock);
+ 	}
+ 	spin_unlock(&sbi->lookup_lock);
+ 
+@@ -382,12 +382,12 @@ static struct vfsmount *autofs4_d_automo
+ 			if (have_submounts(dentry))
+ 				goto done;
+ 		} else {
+-			spin_lock(&dentry->d_lock);
++			seq_spin_lock(&dentry->d_lock);
+ 			if (!list_empty(&dentry->d_subdirs)) {
+-				spin_unlock(&dentry->d_lock);
++				seq_spin_unlock(&dentry->d_lock);
+ 				goto done;
+ 			}
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 		}
+ 		ino->flags |= AUTOFS_INF_PENDING;
+ 		spin_unlock(&sbi->fs_lock);
+@@ -410,12 +410,12 @@ done:
+ 		 * an actual mount so ->d_automount() won't be called during
+ 		 * the follow.
+ 		 */
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		if ((!d_mountpoint(dentry) &&
+ 		    !list_empty(&dentry->d_subdirs)) ||
+ 		    (dentry->d_inode && S_ISLNK(dentry->d_inode->i_mode)))
+ 			__managed_dentry_clear_automount(dentry);
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 	}
+ 	spin_unlock(&sbi->fs_lock);
+ 
+@@ -597,9 +597,9 @@ static int autofs4_dir_unlink(struct ino
+ 
+ 	spin_lock(&sbi->lookup_lock);
+ 	__autofs4_add_expiring(dentry);
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	__d_drop(dentry);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	spin_unlock(&sbi->lookup_lock);
+ 
+ 	return 0;
+@@ -670,15 +670,15 @@ static int autofs4_dir_rmdir(struct inod
+ 		return -EACCES;
+ 
+ 	spin_lock(&sbi->lookup_lock);
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	if (!list_empty(&dentry->d_subdirs)) {
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		spin_unlock(&sbi->lookup_lock);
+ 		return -ENOTEMPTY;
+ 	}
+ 	__autofs4_add_expiring(dentry);
+ 	__d_drop(dentry);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	spin_unlock(&sbi->lookup_lock);
+ 
+ 	if (sbi->version < 5)
+Index: linux-3.2/fs/btrfs/export.c
+===================================================================
+--- linux-3.2.orig/fs/btrfs/export.c
++++ linux-3.2/fs/btrfs/export.c
+@@ -40,14 +40,14 @@ static int btrfs_encode_fh(struct dentry
+ 		struct inode *parent;
+ 		u64 parent_root_id;
+ 
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 
+ 		parent = dentry->d_parent->d_inode;
+ 		fid->parent_objectid = BTRFS_I(parent)->location.objectid;
+ 		fid->parent_gen = parent->i_generation;
+ 		parent_root_id = BTRFS_I(parent)->root->objectid;
+ 
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 
+ 		if (parent_root_id != fid->root_objectid) {
+ 			fid->parent_root_objectid = parent_root_id;
+Index: linux-3.2/fs/btrfs/inode.c
+===================================================================
+--- linux-3.2.orig/fs/btrfs/inode.c
++++ linux-3.2/fs/btrfs/inode.c
+@@ -4002,9 +4002,9 @@ static struct dentry *btrfs_lookup(struc
+ 
+ 	ret = d_splice_alias(btrfs_lookup_dentry(dir, dentry), dentry);
+ 	if (unlikely(d_need_lookup(dentry))) {
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		dentry->d_flags &= ~DCACHE_NEED_LOOKUP;
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 	}
+ 	return ret;
+ }
+Index: linux-3.2/fs/ceph/caps.c
+===================================================================
+--- linux-3.2.orig/fs/ceph/caps.c
++++ linux-3.2/fs/ceph/caps.c
+@@ -3066,14 +3066,14 @@ int ceph_encode_dentry_release(void **p,
+ 	 * doesn't have to be perfect; the mds will revoke anything we don't
+ 	 * release.
+ 	 */
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	if (di->lease_session && di->lease_session->s_mds == mds)
+ 		force = 1;
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 
+ 	ret = ceph_encode_inode_release(p, dir, mds, drop, unless, force);
+ 
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	if (ret && di->lease_session && di->lease_session->s_mds == mds) {
+ 		dout("encode_dentry_release %p mds%d seq %d\n",
+ 		     dentry, mds, (int)di->lease_seq);
+@@ -3083,6 +3083,6 @@ int ceph_encode_dentry_release(void **p,
+ 		rel->dname_seq = cpu_to_le32(di->lease_seq);
+ 		__ceph_mdsc_drop_dentry_lease(dentry);
+ 	}
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	return ret;
+ }
+Index: linux-3.2/fs/ceph/debugfs.c
+===================================================================
+--- linux-3.2.orig/fs/ceph/debugfs.c
++++ linux-3.2/fs/ceph/debugfs.c
+@@ -82,13 +82,13 @@ static int mdsc_show(struct seq_file *s,
+ 						    &pathbase, 0);
+ 			if (IS_ERR(path))
+ 				path = NULL;
+-			spin_lock(&req->r_dentry->d_lock);
++			seq_spin_lock(&req->r_dentry->d_lock);
+ 			seq_printf(s, " #%llx/%.*s (%s)",
+ 				   ceph_ino(req->r_dentry->d_parent->d_inode),
+ 				   req->r_dentry->d_name.len,
+ 				   req->r_dentry->d_name.name,
+ 				   path ? path : "");
+-			spin_unlock(&req->r_dentry->d_lock);
++			seq_spin_unlock(&req->r_dentry->d_lock);
+ 			kfree(path);
+ 		} else if (req->r_path1) {
+ 			seq_printf(s, " #%llx/%s", req->r_ino1.ino,
+@@ -100,13 +100,13 @@ static int mdsc_show(struct seq_file *s,
+ 						    &pathbase, 0);
+ 			if (IS_ERR(path))
+ 				path = NULL;
+-			spin_lock(&req->r_old_dentry->d_lock);
++			seq_spin_lock(&req->r_old_dentry->d_lock);
+ 			seq_printf(s, " #%llx/%.*s (%s)",
+ 			   ceph_ino(req->r_old_dentry_dir),
+ 				   req->r_old_dentry->d_name.len,
+ 				   req->r_old_dentry->d_name.name,
+ 				   path ? path : "");
+-			spin_unlock(&req->r_old_dentry->d_lock);
++			seq_spin_unlock(&req->r_old_dentry->d_lock);
+ 			kfree(path);
+ 		} else if (req->r_path2) {
+ 			if (req->r_ino2.ino)
+Index: linux-3.2/fs/ceph/dir.c
+===================================================================
+--- linux-3.2.orig/fs/ceph/dir.c
++++ linux-3.2/fs/ceph/dir.c
+@@ -44,7 +44,7 @@ int ceph_init_dentry(struct dentry *dent
+ 	if (!di)
+ 		return -ENOMEM;          /* oh well */
+ 
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	if (dentry->d_fsdata) {
+ 		/* lost a race */
+ 		kmem_cache_free(ceph_dentry_cachep, di);
+@@ -67,7 +67,7 @@ int ceph_init_dentry(struct dentry *dent
+ 	dentry->d_fsdata = di;
+ 	ceph_dentry_lru_add(dentry);
+ out_unlock:
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	return 0;
+ }
+ 
+@@ -78,12 +78,12 @@ struct inode *ceph_get_dentry_parent_ino
+ 	if (!dentry)
+ 		return NULL;
+ 
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	if (dentry->d_parent) {
+ 		inode = dentry->d_parent->d_inode;
+ 		ihold(inode);
+ 	}
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	return inode;
+ }
+ 
+@@ -130,7 +130,7 @@ static int __dcache_readdir(struct file 
+ 	dout("__dcache_readdir %p at %llu (last %p)\n", dir, filp->f_pos,
+ 	     last);
+ 
+-	spin_lock(&parent->d_lock);
++	seq_spin_lock(&parent->d_lock);
+ 
+ 	/* start at beginning? */
+ 	if (filp->f_pos == 2 || last == NULL ||
+@@ -154,7 +154,7 @@ more:
+ 			fi->flags |= CEPH_F_ATEND;
+ 			goto out_unlock;
+ 		}
+-		spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
++		seq_spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
+ 		if (!d_unhashed(dentry) && dentry->d_inode &&
+ 		    ceph_snap(dentry->d_inode) != CEPH_SNAPDIR &&
+ 		    ceph_ino(dentry->d_inode) != CEPH_INO_CEPH &&
+@@ -164,15 +164,15 @@ more:
+ 		     dentry->d_name.len, dentry->d_name.name, di->offset,
+ 		     filp->f_pos, d_unhashed(dentry) ? " unhashed" : "",
+ 		     !dentry->d_inode ? " null" : "");
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		p = p->prev;
+ 		dentry = list_entry(p, struct dentry, d_u.d_child);
+ 		di = ceph_dentry(dentry);
+ 	}
+ 
+ 	dget_dlock(dentry);
+-	spin_unlock(&dentry->d_lock);
+-	spin_unlock(&parent->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&parent->d_lock);
+ 
+ 	dout(" %llu (%llu) dentry %p %.*s %p\n", di->offset, filp->f_pos,
+ 	     dentry, dentry->d_name.len, dentry->d_name.name, dentry->d_inode);
+@@ -205,12 +205,12 @@ more:
+ 		goto out;
+ 	}
+ 
+-	spin_lock(&parent->d_lock);
++	seq_spin_lock(&parent->d_lock);
+ 	p = p->prev;	/* advance to next dentry */
+ 	goto more;
+ 
+ out_unlock:
+-	spin_unlock(&parent->d_lock);
++	seq_spin_unlock(&parent->d_lock);
+ out:
+ 	if (last)
+ 		dput(last);
+@@ -950,10 +950,10 @@ static int ceph_rename(struct inode *old
+  */
+ void ceph_invalidate_dentry_lease(struct dentry *dentry)
+ {
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	dentry->d_time = jiffies;
+ 	ceph_dentry(dentry)->lease_shared_gen = 0;
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ }
+ 
+ /*
+@@ -971,7 +971,7 @@ static int dentry_lease_is_valid(struct 
+ 	struct inode *dir = NULL;
+ 	u32 seq = 0;
+ 
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	di = ceph_dentry(dentry);
+ 	if (di && di->lease_session) {
+ 		s = di->lease_session;
+@@ -995,7 +995,7 @@ static int dentry_lease_is_valid(struct 
+ 			}
+ 		}
+ 	}
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 
+ 	if (session) {
+ 		ceph_mdsc_lease_send_msg(session, dir, dentry,
+Index: linux-3.2/fs/ceph/export.c
+===================================================================
+--- linux-3.2.orig/fs/ceph/export.c
++++ linux-3.2/fs/ceph/export.c
+@@ -55,9 +55,9 @@ static int ceph_encode_fh(struct dentry 
+ 	if (ceph_snap(inode) != CEPH_NOSNAP)
+ 		return -EINVAL;
+ 
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	parent = dget(dentry->d_parent);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 
+ 	if (*max_len >= connected_handle_length) {
+ 		dout("encode_fh %p connectable\n", dentry);
+Index: linux-3.2/fs/ceph/inode.c
+===================================================================
+--- linux-3.2.orig/fs/ceph/inode.c
++++ linux-3.2/fs/ceph/inode.c
+@@ -809,7 +809,7 @@ static void update_dentry_lease(struct d
+ 	if (dentry->d_op != &ceph_dentry_ops)
+ 		return;
+ 
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	dout("update_dentry_lease %p duration %lu ms ttl %lu\n",
+ 	     dentry, duration, ttl);
+ 
+@@ -837,7 +837,7 @@ static void update_dentry_lease(struct d
+ 	di->lease_renew_from = 0;
+ 	dentry->d_time = ttl;
+ out_unlock:
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	return;
+ }
+ 
+@@ -866,13 +866,13 @@ static void ceph_set_dentry_offset(struc
+ 	di->offset = ceph_inode(inode)->i_max_offset++;
+ 	spin_unlock(&ci->i_ceph_lock);
+ 
+-	spin_lock(&dir->d_lock);
+-	spin_lock_nested(&dn->d_lock, DENTRY_D_LOCK_NESTED);
++	seq_spin_lock(&dir->d_lock);
++	seq_spin_lock_nested(&dn->d_lock, DENTRY_D_LOCK_NESTED);
+ 	list_move(&dn->d_u.d_child, &dir->d_subdirs);
+ 	dout("set_dentry_offset %p %lld (%p %p)\n", dn, di->offset,
+ 	     dn->d_u.d_child.prev, dn->d_u.d_child.next);
+-	spin_unlock(&dn->d_lock);
+-	spin_unlock(&dir->d_lock);
++	seq_spin_unlock(&dn->d_lock);
++	seq_spin_unlock(&dir->d_lock);
+ }
+ 
+ /*
+@@ -1254,11 +1254,11 @@ retry_lookup:
+ 			goto retry_lookup;
+ 		} else {
+ 			/* reorder parent's d_subdirs */
+-			spin_lock(&parent->d_lock);
+-			spin_lock_nested(&dn->d_lock, DENTRY_D_LOCK_NESTED);
++			seq_spin_lock(&parent->d_lock);
++			seq_spin_lock_nested(&dn->d_lock, DENTRY_D_LOCK_NESTED);
+ 			list_move(&dn->d_u.d_child, &parent->d_subdirs);
+-			spin_unlock(&dn->d_lock);
+-			spin_unlock(&parent->d_lock);
++			seq_spin_unlock(&dn->d_lock);
++			seq_spin_unlock(&parent->d_lock);
+ 		}
+ 
+ 		di = dn->d_fsdata;
+Index: linux-3.2/fs/ceph/mds_client.c
+===================================================================
+--- linux-3.2.orig/fs/ceph/mds_client.c
++++ linux-3.2/fs/ceph/mds_client.c
+@@ -1488,25 +1488,25 @@ retry:
+ 	for (temp = dentry; !IS_ROOT(temp) && pos != 0; ) {
+ 		struct inode *inode;
+ 
+-		spin_lock(&temp->d_lock);
++		seq_spin_lock(&temp->d_lock);
+ 		inode = temp->d_inode;
+ 		if (inode && ceph_snap(inode) == CEPH_SNAPDIR) {
+ 			dout("build_path path+%d: %p SNAPDIR\n",
+ 			     pos, temp);
+ 		} else if (stop_on_nosnap && inode &&
+ 			   ceph_snap(inode) == CEPH_NOSNAP) {
+-			spin_unlock(&temp->d_lock);
++			seq_spin_unlock(&temp->d_lock);
+ 			break;
+ 		} else {
+ 			pos -= temp->d_name.len;
+ 			if (pos < 0) {
+-				spin_unlock(&temp->d_lock);
++				seq_spin_unlock(&temp->d_lock);
+ 				break;
+ 			}
+ 			strncpy(path + pos, temp->d_name.name,
+ 				temp->d_name.len);
+ 		}
+-		spin_unlock(&temp->d_lock);
++		seq_spin_unlock(&temp->d_lock);
+ 		if (pos)
+ 			path[--pos] = '/';
+ 		temp = temp->d_parent;
+@@ -2768,7 +2768,7 @@ static void handle_lease(struct ceph_mds
+ 	if (!dentry)
+ 		goto release;
+ 
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	di = ceph_dentry(dentry);
+ 	switch (h->action) {
+ 	case CEPH_MDS_LEASE_REVOKE:
+@@ -2796,7 +2796,7 @@ static void handle_lease(struct ceph_mds
+ 		}
+ 		break;
+ 	}
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	dput(dentry);
+ 
+ 	if (!release)
+@@ -2869,7 +2869,7 @@ void ceph_mdsc_lease_release(struct ceph
+ 	BUG_ON(dentry == NULL);
+ 
+ 	/* is dentry lease valid? */
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	di = ceph_dentry(dentry);
+ 	if (!di || !di->lease_session ||
+ 	    di->lease_session->s_mds < 0 ||
+@@ -2878,7 +2878,7 @@ void ceph_mdsc_lease_release(struct ceph
+ 		dout("lease_release inode %p dentry %p -- "
+ 		     "no lease\n",
+ 		     inode, dentry);
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		return;
+ 	}
+ 
+@@ -2886,7 +2886,7 @@ void ceph_mdsc_lease_release(struct ceph
+ 	session = ceph_get_mds_session(di->lease_session);
+ 	seq = di->lease_seq;
+ 	__ceph_mdsc_drop_dentry_lease(dentry);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 
+ 	dout("lease_release inode %p dentry %p to mds%d\n",
+ 	     inode, dentry, session->s_mds);
+Index: linux-3.2/fs/cifs/dir.c
+===================================================================
+--- linux-3.2.orig/fs/cifs/dir.c
++++ linux-3.2/fs/cifs/dir.c
+@@ -83,10 +83,10 @@ cifs_bp_rename_retry:
+ 	full_path[namelen] = 0;	/* trailing null */
+ 	rcu_read_lock();
+ 	for (temp = direntry; !IS_ROOT(temp);) {
+-		spin_lock(&temp->d_lock);
++		seq_spin_lock(&temp->d_lock);
+ 		namelen -= 1 + temp->d_name.len;
+ 		if (namelen < 0) {
+-			spin_unlock(&temp->d_lock);
++			seq_spin_unlock(&temp->d_lock);
+ 			break;
+ 		} else {
+ 			full_path[namelen] = dirsep;
+@@ -94,7 +94,7 @@ cifs_bp_rename_retry:
+ 				temp->d_name.len);
+ 			cFYI(0, "name: %s", full_path + namelen);
+ 		}
+-		spin_unlock(&temp->d_lock);
++		seq_spin_unlock(&temp->d_lock);
+ 		temp = temp->d_parent;
+ 		if (temp == NULL) {
+ 			cERROR(1, "corrupt dentry");
+Index: linux-3.2/fs/coda/cache.c
+===================================================================
+--- linux-3.2.orig/fs/coda/cache.c
++++ linux-3.2/fs/coda/cache.c
+@@ -92,7 +92,7 @@ static void coda_flag_children(struct de
+ 	struct list_head *child;
+ 	struct dentry *de;
+ 
+-	spin_lock(&parent->d_lock);
++	seq_spin_lock(&parent->d_lock);
+ 	list_for_each(child, &parent->d_subdirs)
+ 	{
+ 		de = list_entry(child, struct dentry, d_u.d_child);
+@@ -101,7 +101,7 @@ static void coda_flag_children(struct de
+ 			continue;
+ 		coda_flag_inode(de->d_inode, flag);
+ 	}
+-	spin_unlock(&parent->d_lock);
++	seq_spin_unlock(&parent->d_lock);
+ 	return; 
+ }
+ 
+Index: linux-3.2/fs/configfs/configfs_internal.h
+===================================================================
+--- linux-3.2.orig/fs/configfs/configfs_internal.h
++++ linux-3.2/fs/configfs/configfs_internal.h
+@@ -121,7 +121,7 @@ static inline struct config_item *config
+ {
+ 	struct config_item * item = NULL;
+ 
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	if (!d_unhashed(dentry)) {
+ 		struct configfs_dirent * sd = dentry->d_fsdata;
+ 		if (sd->s_type & CONFIGFS_ITEM_LINK) {
+@@ -130,7 +130,7 @@ static inline struct config_item *config
+ 		} else
+ 			item = config_item_get(sd->s_element);
+ 	}
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 
+ 	return item;
+ }
+Index: linux-3.2/fs/configfs/inode.c
+===================================================================
+--- linux-3.2.orig/fs/configfs/inode.c
++++ linux-3.2/fs/configfs/inode.c
+@@ -251,14 +251,14 @@ void configfs_drop_dentry(struct configf
+ 	struct dentry * dentry = sd->s_dentry;
+ 
+ 	if (dentry) {
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		if (!(d_unhashed(dentry) && dentry->d_inode)) {
+ 			dget_dlock(dentry);
+ 			__d_drop(dentry);
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 			simple_unlink(parent->d_inode, dentry);
+ 		} else
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 	}
+ }
+ 
+Index: linux-3.2/fs/dcache.c
+===================================================================
+--- linux-3.2.orig/fs/dcache.c
++++ linux-3.2/fs/dcache.c
+@@ -172,9 +172,9 @@ static void d_free(struct dentry *dentry
+  */
+ static inline void dentry_rcuwalk_barrier(struct dentry *dentry)
+ {
+-	assert_spin_locked(&dentry->d_lock);
++	assert_seq_spin_locked(&dentry->d_lock);
+ 	/* Go through a barrier */
+-	write_seqcount_barrier(&dentry->d_seq);
++	write_seqlock_barrier(&dentry->d_lock);
+ }
+ 
+ /*
+@@ -190,7 +190,7 @@ static void dentry_iput(struct dentry * 
+ 	if (inode) {
+ 		dentry->d_inode = NULL;
+ 		list_del_init(&dentry->d_alias);
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		spin_unlock(&inode->i_lock);
+ 		if (!inode->i_nlink)
+ 			fsnotify_inoderemove(inode);
+@@ -199,7 +199,7 @@ static void dentry_iput(struct dentry * 
+ 		else
+ 			iput(inode);
+ 	} else {
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 	}
+ }
+ 
+@@ -215,7 +215,7 @@ static void dentry_unlink_inode(struct d
+ 	dentry->d_inode = NULL;
+ 	list_del_init(&dentry->d_alias);
+ 	dentry_rcuwalk_barrier(dentry);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	spin_unlock(&inode->i_lock);
+ 	if (!inode->i_nlink)
+ 		fsnotify_inoderemove(inode);
+@@ -313,7 +313,7 @@ static struct dentry *d_kill(struct dent
+ 	 */
+ 	dentry->d_flags |= DCACHE_DISCONNECTED;
+ 	if (parent)
+-		spin_unlock(&parent->d_lock);
++		seq_spin_unlock(&parent->d_lock);
+ 	dentry_iput(dentry);
+ 	/*
+ 	 * dentry_iput drops the locks, at which point nobody (except
+@@ -370,9 +370,9 @@ EXPORT_SYMBOL(__d_drop);
+ 
+ void d_drop(struct dentry *dentry)
+ {
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	__d_drop(dentry);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ }
+ EXPORT_SYMBOL(d_drop);
+ 
+@@ -387,10 +387,10 @@ EXPORT_SYMBOL(d_drop);
+  */
+ void d_clear_need_lookup(struct dentry *dentry)
+ {
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	__d_drop(dentry);
+ 	dentry->d_flags &= ~DCACHE_NEED_LOOKUP;
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ }
+ EXPORT_SYMBOL(d_clear_need_lookup);
+ 
+@@ -409,7 +409,7 @@ static inline struct dentry *dentry_kill
+ 	inode = dentry->d_inode;
+ 	if (inode && !spin_trylock(&inode->i_lock)) {
+ relock:
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		cpu_relax();
+ 		return dentry; /* try again with same dentry */
+ 	}
+@@ -417,7 +417,7 @@ relock:
+ 		parent = NULL;
+ 	else
+ 		parent = dentry->d_parent;
+-	if (parent && !spin_trylock(&parent->d_lock)) {
++	if (parent && !seq_spin_trylock(&parent->d_lock)) {
+ 		if (inode)
+ 			spin_unlock(&inode->i_lock);
+ 		goto relock;
+@@ -470,11 +470,11 @@ void dput(struct dentry *dentry)
+ repeat:
+ 	if (dentry->d_count == 1)
+ 		might_sleep();
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	BUG_ON(!dentry->d_count);
+ 	if (dentry->d_count > 1) {
+ 		dentry->d_count--;
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		return;
+ 	}
+ 
+@@ -497,7 +497,7 @@ repeat:
+ 	dentry_lru_add(dentry);
+ 
+ 	dentry->d_count--;
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	return;
+ 
+ kill_it:
+@@ -524,9 +524,9 @@ int d_invalidate(struct dentry * dentry)
+ 	/*
+ 	 * If it's already been dropped, return OK.
+ 	 */
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	if (d_unhashed(dentry)) {
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		return 0;
+ 	}
+ 	/*
+@@ -534,9 +534,9 @@ int d_invalidate(struct dentry * dentry)
+ 	 * to get rid of unused child entries.
+ 	 */
+ 	if (!list_empty(&dentry->d_subdirs)) {
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		shrink_dcache_parent(dentry);
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 	}
+ 
+ 	/*
+@@ -553,13 +553,13 @@ int d_invalidate(struct dentry * dentry)
+ 	 */
+ 	if (dentry->d_count > 1 && dentry->d_inode) {
+ 		if (S_ISDIR(dentry->d_inode->i_mode) || d_mountpoint(dentry)) {
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 			return -EBUSY;
+ 		}
+ 	}
+ 
+ 	__d_drop(dentry);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	return 0;
+ }
+ EXPORT_SYMBOL(d_invalidate);
+@@ -572,9 +572,9 @@ static inline void __dget_dlock(struct d
+ 
+ static inline void __dget(struct dentry *dentry)
+ {
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	__dget_dlock(dentry);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ }
+ 
+ struct dentry *dget_parent(struct dentry *dentry)
+@@ -588,16 +588,16 @@ repeat:
+ 	 */
+ 	rcu_read_lock();
+ 	ret = dentry->d_parent;
+-	spin_lock(&ret->d_lock);
++	seq_spin_lock(&ret->d_lock);
+ 	if (unlikely(ret != dentry->d_parent)) {
+-		spin_unlock(&ret->d_lock);
++		seq_spin_unlock(&ret->d_lock);
+ 		rcu_read_unlock();
+ 		goto repeat;
+ 	}
+ 	rcu_read_unlock();
+ 	BUG_ON(!ret->d_count);
+ 	ret->d_count++;
+-	spin_unlock(&ret->d_lock);
++	seq_spin_unlock(&ret->d_lock);
+ 	return ret;
+ }
+ EXPORT_SYMBOL(dget_parent);
+@@ -625,31 +625,31 @@ static struct dentry *__d_find_alias(str
+ again:
+ 	discon_alias = NULL;
+ 	list_for_each_entry(alias, &inode->i_dentry, d_alias) {
+-		spin_lock(&alias->d_lock);
++		seq_spin_lock(&alias->d_lock);
+  		if (S_ISDIR(inode->i_mode) || !d_unhashed(alias)) {
+ 			if (IS_ROOT(alias) &&
+ 			    (alias->d_flags & DCACHE_DISCONNECTED)) {
+ 				discon_alias = alias;
+ 			} else if (!want_discon) {
+ 				__dget_dlock(alias);
+-				spin_unlock(&alias->d_lock);
++				seq_spin_unlock(&alias->d_lock);
+ 				return alias;
+ 			}
+ 		}
+-		spin_unlock(&alias->d_lock);
++		seq_spin_unlock(&alias->d_lock);
+ 	}
+ 	if (discon_alias) {
+ 		alias = discon_alias;
+-		spin_lock(&alias->d_lock);
++		seq_spin_lock(&alias->d_lock);
+ 		if (S_ISDIR(inode->i_mode) || !d_unhashed(alias)) {
+ 			if (IS_ROOT(alias) &&
+ 			    (alias->d_flags & DCACHE_DISCONNECTED)) {
+ 				__dget_dlock(alias);
+-				spin_unlock(&alias->d_lock);
++				seq_spin_unlock(&alias->d_lock);
+ 				return alias;
+ 			}
+ 		}
+-		spin_unlock(&alias->d_lock);
++		seq_spin_unlock(&alias->d_lock);
+ 		goto again;
+ 	}
+ 	return NULL;
+@@ -678,16 +678,16 @@ void d_prune_aliases(struct inode *inode
+ restart:
+ 	spin_lock(&inode->i_lock);
+ 	list_for_each_entry(dentry, &inode->i_dentry, d_alias) {
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		if (!dentry->d_count) {
+ 			__dget_dlock(dentry);
+ 			__d_drop(dentry);
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 			spin_unlock(&inode->i_lock);
+ 			dput(dentry);
+ 			goto restart;
+ 		}
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 	}
+ 	spin_unlock(&inode->i_lock);
+ }
+@@ -724,10 +724,10 @@ static void try_prune_one_dentry(struct 
+ 	/* Prune ancestors. */
+ 	dentry = parent;
+ 	while (dentry) {
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		if (dentry->d_count > 1) {
+ 			dentry->d_count--;
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 			return;
+ 		}
+ 		dentry = dentry_kill(dentry, 1);
+@@ -743,9 +743,9 @@ static void shrink_dentry_list(struct li
+ 		dentry = list_entry_rcu(list->prev, struct dentry, d_lru);
+ 		if (&dentry->d_lru == list)
+ 			break; /* empty */
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		if (dentry != list_entry(list->prev, struct dentry, d_lru)) {
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 			continue;
+ 		}
+ 
+@@ -756,7 +756,7 @@ static void shrink_dentry_list(struct li
+ 		 */
+ 		if (dentry->d_count) {
+ 			dentry_lru_del(dentry);
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 			continue;
+ 		}
+ 
+@@ -794,7 +794,7 @@ relock:
+ 				struct dentry, d_lru);
+ 		BUG_ON(dentry->d_sb != sb);
+ 
+-		if (!spin_trylock(&dentry->d_lock)) {
++		if (!seq_spin_trylock(&dentry->d_lock)) {
+ 			spin_unlock(&dcache_lru_lock);
+ 			cpu_relax();
+ 			goto relock;
+@@ -803,11 +803,11 @@ relock:
+ 		if (dentry->d_flags & DCACHE_REFERENCED) {
+ 			dentry->d_flags &= ~DCACHE_REFERENCED;
+ 			list_move(&dentry->d_lru, &referenced);
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 		} else {
+ 			list_move_tail(&dentry->d_lru, &tmp);
+ 			dentry->d_flags |= DCACHE_SHRINK_LIST;
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 			if (!--count)
+ 				break;
+ 		}
+@@ -960,8 +960,8 @@ static struct dentry *try_to_ascend(stru
+ 	struct dentry *new = old->d_parent;
+ 
+ 	rcu_read_lock();
+-	spin_unlock(&old->d_lock);
+-	spin_lock(&new->d_lock);
++	seq_spin_unlock(&old->d_lock);
++	seq_spin_lock(&new->d_lock);
+ 
+ 	/*
+ 	 * might go back up the wrong parent if we have had a rename
+@@ -970,7 +970,7 @@ static struct dentry *try_to_ascend(stru
+ 	if (new != old->d_parent ||
+ 		 (old->d_flags & DCACHE_DISCONNECTED) ||
+ 		 (!locked && read_seqretry(&rename_lock, seq))) {
+-		spin_unlock(&new->d_lock);
++		seq_spin_unlock(&new->d_lock);
+ 		new = NULL;
+ 	}
+ 	rcu_read_unlock();
+@@ -1004,7 +1004,7 @@ again:
+ 
+ 	if (d_mountpoint(parent))
+ 		goto positive;
+-	spin_lock(&this_parent->d_lock);
++	seq_spin_lock(&this_parent->d_lock);
+ repeat:
+ 	next = this_parent->d_subdirs.next;
+ resume:
+@@ -1013,21 +1013,21 @@ resume:
+ 		struct dentry *dentry = list_entry(tmp, struct dentry, d_u.d_child);
+ 		next = tmp->next;
+ 
+-		spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
++		seq_spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
+ 		/* Have we found a mount point ? */
+ 		if (d_mountpoint(dentry)) {
+-			spin_unlock(&dentry->d_lock);
+-			spin_unlock(&this_parent->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&this_parent->d_lock);
+ 			goto positive;
+ 		}
+ 		if (!list_empty(&dentry->d_subdirs)) {
+-			spin_unlock(&this_parent->d_lock);
+-			spin_release(&dentry->d_lock.dep_map, 1, _RET_IP_);
++			seq_spin_unlock(&this_parent->d_lock);
++			spin_release(&dentry->d_lock.lock.dep_map, 1, _RET_IP_);
+ 			this_parent = dentry;
+-			spin_acquire(&this_parent->d_lock.dep_map, 0, 1, _RET_IP_);
++			spin_acquire(&this_parent->d_lock.lock.dep_map, 0, 1, _RET_IP_);
+ 			goto repeat;
+ 		}
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 	}
+ 	/*
+ 	 * All done at this level ... ascend and resume the search.
+@@ -1040,7 +1040,7 @@ resume:
+ 		next = child->d_u.d_child.next;
+ 		goto resume;
+ 	}
+-	spin_unlock(&this_parent->d_lock);
++	seq_spin_unlock(&this_parent->d_lock);
+ 	if (!locked && read_seqretry(&rename_lock, seq))
+ 		goto rename_retry;
+ 	if (locked)
+@@ -1085,7 +1085,7 @@ static int select_parent(struct dentry *
+ 	seq = read_seqbegin(&rename_lock);
+ again:
+ 	this_parent = parent;
+-	spin_lock(&this_parent->d_lock);
++	seq_spin_lock(&this_parent->d_lock);
+ repeat:
+ 	next = this_parent->d_subdirs.next;
+ resume:
+@@ -1094,7 +1094,7 @@ resume:
+ 		struct dentry *dentry = list_entry(tmp, struct dentry, d_u.d_child);
+ 		next = tmp->next;
+ 
+-		spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
++		seq_spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
+ 
+ 		/*
+ 		 * move only zero ref count dentries to the dispose list.
+@@ -1117,7 +1117,7 @@ resume:
+ 		 * the rest.
+ 		 */
+ 		if (found && need_resched()) {
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 			goto out;
+ 		}
+ 
+@@ -1125,14 +1125,14 @@ resume:
+ 		 * Descend a level if the d_subdirs list is non-empty.
+ 		 */
+ 		if (!list_empty(&dentry->d_subdirs)) {
+-			spin_unlock(&this_parent->d_lock);
+-			spin_release(&dentry->d_lock.dep_map, 1, _RET_IP_);
++			seq_spin_unlock(&this_parent->d_lock);
++			spin_release(&dentry->d_lock.lock.dep_map, 1, _RET_IP_);
+ 			this_parent = dentry;
+-			spin_acquire(&this_parent->d_lock.dep_map, 0, 1, _RET_IP_);
++			spin_acquire(&this_parent->d_lock.lock.dep_map, 0, 1, _RET_IP_);
+ 			goto repeat;
+ 		}
+ 
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 	}
+ 	/*
+ 	 * All done at this level ... ascend and resume the search.
+@@ -1146,7 +1146,7 @@ resume:
+ 		goto resume;
+ 	}
+ out:
+-	spin_unlock(&this_parent->d_lock);
++	seq_spin_unlock(&this_parent->d_lock);
+ 	if (!locked && read_seqretry(&rename_lock, seq))
+ 		goto rename_retry;
+ 	if (locked)
+@@ -1214,8 +1214,7 @@ struct dentry *__d_alloc(struct super_bl
+ 
+ 	dentry->d_count = 1;
+ 	dentry->d_flags = 0;
+-	spin_lock_init(&dentry->d_lock);
+-	seqcount_init(&dentry->d_seq);
++	seqlock_init(&dentry->d_lock);
+ 	dentry->d_inode = NULL;
+ 	dentry->d_parent = dentry;
+ 	dentry->d_sb = sb;
+@@ -1248,7 +1247,7 @@ struct dentry *d_alloc(struct dentry * p
+ 	if (!dentry)
+ 		return NULL;
+ 
+-	spin_lock(&parent->d_lock);
++	seq_spin_lock(&parent->d_lock);
+ 	/*
+ 	 * don't need child lock because it is not subject
+ 	 * to concurrency here
+@@ -1256,7 +1255,7 @@ struct dentry *d_alloc(struct dentry * p
+ 	__dget_dlock(parent);
+ 	dentry->d_parent = parent;
+ 	list_add(&dentry->d_u.d_child, &parent->d_subdirs);
+-	spin_unlock(&parent->d_lock);
++	seq_spin_unlock(&parent->d_lock);
+ 
+ 	return dentry;
+ }
+@@ -1308,7 +1307,7 @@ EXPORT_SYMBOL(d_set_d_op);
+ 
+ static void __d_instantiate(struct dentry *dentry, struct inode *inode)
+ {
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	if (inode) {
+ 		if (unlikely(IS_AUTOMOUNT(inode)))
+ 			dentry->d_flags |= DCACHE_NEED_AUTOMOUNT;
+@@ -1316,7 +1315,7 @@ static void __d_instantiate(struct dentr
+ 	}
+ 	dentry->d_inode = inode;
+ 	dentry_rcuwalk_barrier(dentry);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	fsnotify_d_instantiate(dentry, inode);
+ }
+ 
+@@ -1516,14 +1515,14 @@ struct dentry *d_obtain_alias(struct ino
+ 	}
+ 
+ 	/* attach a disconnected dentry */
+-	spin_lock(&tmp->d_lock);
++	seq_spin_lock(&tmp->d_lock);
+ 	tmp->d_inode = inode;
+ 	tmp->d_flags |= DCACHE_DISCONNECTED;
+ 	list_add(&tmp->d_alias, &inode->i_dentry);
+ 	hlist_bl_lock(&tmp->d_sb->s_anon);
+ 	hlist_bl_add_head(&tmp->d_hash, &tmp->d_sb->s_anon);
+ 	hlist_bl_unlock(&tmp->d_sb->s_anon);
+-	spin_unlock(&tmp->d_lock);
++	seq_spin_unlock(&tmp->d_lock);
+ 	spin_unlock(&inode->i_lock);
+ 	security_d_instantiate(tmp, inode);
+ 
+@@ -1731,7 +1730,7 @@ struct dentry *__d_lookup_rcu(struct den
+ 			continue;
+ 
+ seqretry:
+-		*seq = read_seqcount_begin(&dentry->d_seq);
++		*seq = read_seqbegin(&dentry->d_lock);
+ 		if (dentry->d_parent != parent)
+ 			continue;
+ 		if (d_unhashed(dentry))
+@@ -1746,7 +1745,7 @@ seqretry:
+ 		 * edge of memory when walking. If we could load this
+ 		 * atomically some other way, we could drop this check.
+ 		 */
+-		if (read_seqcount_retry(&dentry->d_seq, *seq))
++		if (read_seqretry(&dentry->d_lock, *seq))
+ 			goto seqretry;
+ 		if (unlikely(parent->d_flags & DCACHE_OP_COMPARE)) {
+ 			if (parent->d_op->d_compare(parent, *inode,
+@@ -1849,7 +1848,7 @@ struct dentry *__d_lookup(struct dentry 
+ 		if (dentry->d_name.hash != hash)
+ 			continue;
+ 
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		if (dentry->d_parent != parent)
+ 			goto next;
+ 		if (d_unhashed(dentry))
+@@ -1873,10 +1872,10 @@ struct dentry *__d_lookup(struct dentry 
+ 
+ 		dentry->d_count++;
+ 		found = dentry;
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		break;
+ next:
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+  	}
+  	rcu_read_unlock();
+ 
+@@ -1924,17 +1923,17 @@ int d_validate(struct dentry *dentry, st
+ {
+ 	struct dentry *child;
+ 
+-	spin_lock(&dparent->d_lock);
++	seq_spin_lock(&dparent->d_lock);
+ 	list_for_each_entry(child, &dparent->d_subdirs, d_u.d_child) {
+ 		if (dentry == child) {
+-			spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
++			seq_spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
+ 			__dget_dlock(dentry);
+-			spin_unlock(&dentry->d_lock);
+-			spin_unlock(&dparent->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dparent->d_lock);
+ 			return 1;
+ 		}
+ 	}
+-	spin_unlock(&dparent->d_lock);
++	seq_spin_unlock(&dparent->d_lock);
+ 
+ 	return 0;
+ }
+@@ -1969,12 +1968,12 @@ void d_delete(struct dentry * dentry)
+ 	 * Are we the only user?
+ 	 */
+ again:
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	inode = dentry->d_inode;
+ 	isdir = S_ISDIR(inode->i_mode);
+ 	if (dentry->d_count == 1) {
+ 		if (inode && !spin_trylock(&inode->i_lock)) {
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 			cpu_relax();
+ 			goto again;
+ 		}
+@@ -1987,7 +1986,7 @@ again:
+ 	if (!d_unhashed(dentry))
+ 		__d_drop(dentry);
+ 
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 
+ 	fsnotify_nameremove(dentry, isdir);
+ }
+@@ -2016,9 +2015,9 @@ static void _d_rehash(struct dentry * en
+  
+ void d_rehash(struct dentry * entry)
+ {
+-	spin_lock(&entry->d_lock);
++	seq_spin_lock(&entry->d_lock);
+ 	_d_rehash(entry);
+-	spin_unlock(&entry->d_lock);
++	seq_spin_unlock(&entry->d_lock);
+ }
+ EXPORT_SYMBOL(d_rehash);
+ 
+@@ -2041,11 +2040,9 @@ void dentry_update_name_case(struct dent
+ 	BUG_ON(!mutex_is_locked(&dentry->d_parent->d_inode->i_mutex));
+ 	BUG_ON(dentry->d_name.len != name->len); /* d_lookup gives this */
+ 
+-	spin_lock(&dentry->d_lock);
+-	write_seqcount_begin(&dentry->d_seq);
++	write_seqlock(&dentry->d_lock);
+ 	memcpy((unsigned char *)dentry->d_name.name, name->name, name->len);
+-	write_seqcount_end(&dentry->d_seq);
+-	spin_unlock(&dentry->d_lock);
++	write_sequnlock(&dentry->d_lock);
+ }
+ EXPORT_SYMBOL(dentry_update_name_case);
+ 
+@@ -2096,24 +2093,24 @@ static void dentry_lock_for_move(struct 
+ 	 * XXXX: do we really need to take target->d_lock?
+ 	 */
+ 	if (IS_ROOT(dentry) || dentry->d_parent == target->d_parent)
+-		spin_lock(&target->d_parent->d_lock);
++		seq_spin_lock(&target->d_parent->d_lock);
+ 	else {
+ 		if (d_ancestor(dentry->d_parent, target->d_parent)) {
+-			spin_lock(&dentry->d_parent->d_lock);
+-			spin_lock_nested(&target->d_parent->d_lock,
+-						DENTRY_D_LOCK_NESTED);
++			seq_spin_lock(&dentry->d_parent->d_lock);
++			seq_spin_lock_nested(&target->d_parent->d_lock,
++					    DENTRY_D_LOCK_NESTED);
+ 		} else {
+-			spin_lock(&target->d_parent->d_lock);
+-			spin_lock_nested(&dentry->d_parent->d_lock,
+-						DENTRY_D_LOCK_NESTED);
++			seq_spin_lock(&target->d_parent->d_lock);
++			seq_spin_lock_nested(&dentry->d_parent->d_lock,
++					    DENTRY_D_LOCK_NESTED);
+ 		}
+ 	}
+ 	if (target < dentry) {
+-		spin_lock_nested(&target->d_lock, 2);
+-		spin_lock_nested(&dentry->d_lock, 3);
++		seq_spin_lock_nested(&target->d_lock, 2);
++		seq_spin_lock_nested(&dentry->d_lock, 3);
+ 	} else {
+-		spin_lock_nested(&dentry->d_lock, 2);
+-		spin_lock_nested(&target->d_lock, 3);
++		seq_spin_lock_nested(&dentry->d_lock, 2);
++		seq_spin_lock_nested(&target->d_lock, 3);
+ 	}
+ }
+ 
+@@ -2121,9 +2118,9 @@ static void dentry_unlock_parents_for_mo
+ 					struct dentry *target)
+ {
+ 	if (target->d_parent != dentry->d_parent)
+-		spin_unlock(&dentry->d_parent->d_lock);
++		seq_spin_unlock(&dentry->d_parent->d_lock);
+ 	if (target->d_parent != target)
+-		spin_unlock(&target->d_parent->d_lock);
++		seq_spin_unlock(&target->d_parent->d_lock);
+ }
+ 
+ /*
+@@ -2157,8 +2154,8 @@ static void __d_move(struct dentry * den
+ 
+ 	dentry_lock_for_move(dentry, target);
+ 
+-	write_seqcount_begin(&dentry->d_seq);
+-	write_seqcount_begin(&target->d_seq);
++	write_seqlock_begin(&dentry->d_lock);
++	write_seqlock_begin(&target->d_lock);
+ 
+ 	/* __d_drop does write_seqcount_barrier, but they're OK to nest. */
+ 
+@@ -2193,13 +2190,13 @@ static void __d_move(struct dentry * den
+ 
+ 	list_add(&dentry->d_u.d_child, &dentry->d_parent->d_subdirs);
+ 
+-	write_seqcount_end(&target->d_seq);
+-	write_seqcount_end(&dentry->d_seq);
++	write_seqlock_end(&target->d_lock);
++	write_seqlock_end(&dentry->d_lock);
+ 
+ 	dentry_unlock_parents_for_move(dentry, target);
+-	spin_unlock(&target->d_lock);
++	seq_spin_unlock(&target->d_lock);
+ 	fsnotify_d_move(dentry);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ }
+ 
+ /*
+@@ -2288,8 +2285,8 @@ static void __d_materialise_dentry(struc
+ 
+ 	dentry_lock_for_move(anon, dentry);
+ 
+-	write_seqcount_begin(&dentry->d_seq);
+-	write_seqcount_begin(&anon->d_seq);
++	write_seqlock_begin(&dentry->d_lock);
++	write_seqlock_begin(&anon->d_lock);
+ 
+ 	dparent = dentry->d_parent;
+ 	aparent = anon->d_parent;
+@@ -2311,11 +2308,11 @@ static void __d_materialise_dentry(struc
+ 	else
+ 		INIT_LIST_HEAD(&anon->d_u.d_child);
+ 
+-	write_seqcount_end(&dentry->d_seq);
+-	write_seqcount_end(&anon->d_seq);
++	write_seqlock_end(&dentry->d_lock);
++	write_seqlock_end(&anon->d_lock);
+ 
+ 	dentry_unlock_parents_for_move(anon, dentry);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 
+ 	/* anon->d_lock still locked, returns locked */
+ 	anon->d_flags &= ~DCACHE_DISCONNECTED;
+@@ -2391,10 +2388,10 @@ struct dentry *d_materialise_unique(stru
+ 	else
+ 		BUG_ON(!d_unhashed(actual));
+ 
+-	spin_lock(&actual->d_lock);
++	seq_spin_lock(&actual->d_lock);
+ found:
+ 	_d_rehash(actual);
+-	spin_unlock(&actual->d_lock);
++	seq_spin_unlock(&actual->d_lock);
+ 	spin_unlock(&inode->i_lock);
+ out_nolock:
+ 	if (actual == dentry) {
+@@ -2455,9 +2452,9 @@ static int prepend_path(const struct pat
+ 		}
+ 		parent = dentry->d_parent;
+ 		prefetch(parent);
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		error = prepend_name(buffer, buflen, &dentry->d_name);
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		if (!error)
+ 			error = prepend(buffer, buflen, "/", 1);
+ 		if (error)
+@@ -2682,9 +2679,9 @@ static char *__dentry_path(struct dentry
+ 		int error;
+ 
+ 		prefetch(parent);
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		error = prepend_name(&end, &buflen, &dentry->d_name);
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		if (error != 0 || prepend(&end, &buflen, "/", 1) != 0)
+ 			goto Elong;
+ 
+@@ -2874,7 +2871,7 @@ void d_genocide(struct dentry *root)
+ 	seq = read_seqbegin(&rename_lock);
+ again:
+ 	this_parent = root;
+-	spin_lock(&this_parent->d_lock);
++	seq_spin_lock(&this_parent->d_lock);
+ repeat:
+ 	next = this_parent->d_subdirs.next;
+ resume:
+@@ -2883,23 +2880,23 @@ resume:
+ 		struct dentry *dentry = list_entry(tmp, struct dentry, d_u.d_child);
+ 		next = tmp->next;
+ 
+-		spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
++		seq_spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
+ 		if (d_unhashed(dentry) || !dentry->d_inode) {
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 			continue;
+ 		}
+ 		if (!list_empty(&dentry->d_subdirs)) {
+-			spin_unlock(&this_parent->d_lock);
+-			spin_release(&dentry->d_lock.dep_map, 1, _RET_IP_);
++			seq_spin_unlock(&this_parent->d_lock);
++			spin_release(&dentry->d_lock.lock.dep_map, 1, _RET_IP_);
+ 			this_parent = dentry;
+-			spin_acquire(&this_parent->d_lock.dep_map, 0, 1, _RET_IP_);
++			spin_acquire(&this_parent->d_lock.lock.dep_map, 0, 1, _RET_IP_);
+ 			goto repeat;
+ 		}
+ 		if (!(dentry->d_flags & DCACHE_GENOCIDE)) {
+ 			dentry->d_flags |= DCACHE_GENOCIDE;
+ 			dentry->d_count--;
+ 		}
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 	}
+ 	if (this_parent != root) {
+ 		struct dentry *child = this_parent;
+@@ -2913,7 +2910,7 @@ resume:
+ 		next = child->d_u.d_child.next;
+ 		goto resume;
+ 	}
+-	spin_unlock(&this_parent->d_lock);
++	seq_spin_unlock(&this_parent->d_lock);
+ 	if (!locked && read_seqretry(&rename_lock, seq))
+ 		goto rename_retry;
+ 	if (locked)
+Index: linux-3.2/fs/dcookies.c
+===================================================================
+--- linux-3.2.orig/fs/dcookies.c
++++ linux-3.2/fs/dcookies.c
+@@ -98,9 +98,9 @@ static struct dcookie_struct *alloc_dcoo
+ 		return NULL;
+ 
+ 	d = path->dentry;
+-	spin_lock(&d->d_lock);
++	seq_spin_lock(&d->d_lock);
+ 	d->d_flags |= DCACHE_COOKIE;
+-	spin_unlock(&d->d_lock);
++	seq_spin_unlock(&d->d_lock);
+ 
+ 	dcs->path = *path;
+ 	path_get(path);
+@@ -267,9 +267,9 @@ static void free_dcookie(struct dcookie_
+ {
+ 	struct dentry *d = dcs->path.dentry;
+ 
+-	spin_lock(&d->d_lock);
++	seq_spin_lock(&d->d_lock);
+ 	d->d_flags &= ~DCACHE_COOKIE;
+-	spin_unlock(&d->d_lock);
++	seq_spin_unlock(&d->d_lock);
+ 
+ 	path_put(&dcs->path);
+ 	kmem_cache_free(dcookie_cache, dcs);
+Index: linux-3.2/fs/exportfs/expfs.c
+===================================================================
+--- linux-3.2.orig/fs/exportfs/expfs.c
++++ linux-3.2/fs/exportfs/expfs.c
+@@ -114,15 +114,15 @@ reconnect_path(struct vfsmount *mnt, str
+ 
+ 		if (!IS_ROOT(pd)) {
+ 			/* must have found a connected parent - great */
+-			spin_lock(&pd->d_lock);
++			seq_spin_lock(&pd->d_lock);
+ 			pd->d_flags &= ~DCACHE_DISCONNECTED;
+-			spin_unlock(&pd->d_lock);
++			seq_spin_unlock(&pd->d_lock);
+ 			noprogress = 0;
+ 		} else if (pd == mnt->mnt_sb->s_root) {
+ 			printk(KERN_ERR "export: Eeek filesystem root is not connected, impossible\n");
+-			spin_lock(&pd->d_lock);
++			seq_spin_lock(&pd->d_lock);
+ 			pd->d_flags &= ~DCACHE_DISCONNECTED;
+-			spin_unlock(&pd->d_lock);
++			seq_spin_unlock(&pd->d_lock);
+ 			noprogress = 0;
+ 		} else {
+ 			/*
+@@ -335,11 +335,11 @@ static int export_encode_fh(struct dentr
+ 	if (connectable && !S_ISDIR(inode->i_mode)) {
+ 		struct inode *parent;
+ 
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		parent = dentry->d_parent->d_inode;
+ 		fid->i32.parent_ino = parent->i_ino;
+ 		fid->i32.parent_gen = parent->i_generation;
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		len = 4;
+ 		type = FILEID_INO32_GEN_PARENT;
+ 	}
+Index: linux-3.2/fs/fat/inode.c
+===================================================================
+--- linux-3.2.orig/fs/fat/inode.c
++++ linux-3.2/fs/fat/inode.c
+@@ -772,9 +772,9 @@ fat_encode_fh(struct dentry *de, __u32 *
+ 	fh[1] = inode->i_generation;
+ 	fh[2] = ipos_h;
+ 	fh[3] = ipos_m | MSDOS_I(inode)->i_logstart;
+-	spin_lock(&de->d_lock);
++	seq_spin_lock(&de->d_lock);
+ 	fh[4] = ipos_l | MSDOS_I(de->d_parent->d_inode)->i_logstart;
+-	spin_unlock(&de->d_lock);
++	seq_spin_unlock(&de->d_lock);
+ 	return 3;
+ }
+ 
+Index: linux-3.2/fs/fat/namei_vfat.c
+===================================================================
+--- linux-3.2.orig/fs/fat/namei_vfat.c
++++ linux-3.2/fs/fat/namei_vfat.c
+@@ -34,10 +34,10 @@
+ static int vfat_revalidate_shortname(struct dentry *dentry)
+ {
+ 	int ret = 1;
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	if (dentry->d_time != dentry->d_parent->d_inode->i_version)
+ 		ret = 0;
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	return ret;
+ }
+ 
+Index: linux-3.2/fs/fs-writeback.c
+===================================================================
+--- linux-3.2.orig/fs/fs-writeback.c
++++ linux-3.2/fs/fs-writeback.c
+@@ -1010,7 +1010,7 @@ static noinline void block_dump___mark_i
+ 
+ 		dentry = d_find_alias(inode);
+ 		if (dentry) {
+-			spin_lock(&dentry->d_lock);
++			seq_spin_lock(&dentry->d_lock);
+ 			name = (const char *) dentry->d_name.name;
+ 		}
+ 		printk(KERN_DEBUG
+@@ -1018,7 +1018,7 @@ static noinline void block_dump___mark_i
+ 		       current->comm, task_pid_nr(current), inode->i_ino,
+ 		       name, inode->i_sb->s_id);
+ 		if (dentry) {
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 			dput(dentry);
+ 		}
+ 	}
+Index: linux-3.2/fs/fuse/inode.c
+===================================================================
+--- linux-3.2.orig/fs/fuse/inode.c
++++ linux-3.2/fs/fuse/inode.c
+@@ -652,11 +652,11 @@ static int fuse_encode_fh(struct dentry 
+ 	if (encode_parent) {
+ 		struct inode *parent;
+ 
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		parent = dentry->d_parent->d_inode;
+ 		nodeid = get_fuse_inode(parent)->nodeid;
+ 		generation = parent->i_generation;
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 
+ 		fh[3] = (u32)(nodeid >> 32);
+ 		fh[4] = (u32)(nodeid & 0xffffffff);
+Index: linux-3.2/fs/gfs2/export.c
+===================================================================
+--- linux-3.2.orig/fs/gfs2/export.c
++++ linux-3.2/fs/gfs2/export.c
+@@ -53,11 +53,11 @@ static int gfs2_encode_fh(struct dentry 
+ 	if (!connectable || inode == sb->s_root->d_inode)
+ 		return *len;
+ 
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	inode = dentry->d_parent->d_inode;
+ 	ip = GFS2_I(inode);
+ 	igrab(inode);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 
+ 	fh[4] = cpu_to_be32(ip->i_no_formal_ino >> 32);
+ 	fh[5] = cpu_to_be32(ip->i_no_formal_ino & 0xFFFFFFFF);
+Index: linux-3.2/fs/isofs/export.c
+===================================================================
+--- linux-3.2.orig/fs/isofs/export.c
++++ linux-3.2/fs/isofs/export.c
+@@ -139,13 +139,13 @@ isofs_export_encode_fh(struct dentry *de
+ 	if (connectable && !S_ISDIR(inode->i_mode)) {
+ 		struct inode *parent;
+ 		struct iso_inode_info *eparent;
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		parent = dentry->d_parent->d_inode;
+ 		eparent = ISOFS_I(parent);
+ 		fh32[3] = eparent->i_iget5_block;
+ 		fh16[3] = (__u16)eparent->i_iget5_offset;  /* fh16 [sic] */
+ 		fh32[4] = parent->i_generation;
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		len = 5;
+ 		type = 2;
+ 	}
+Index: linux-3.2/fs/libfs.c
+===================================================================
+--- linux-3.2.orig/fs/libfs.c
++++ linux-3.2/fs/libfs.c
+@@ -102,21 +102,21 @@ loff_t dcache_dir_lseek(struct file *fil
+ 			struct dentry *cursor = file->private_data;
+ 			loff_t n = file->f_pos - 2;
+ 
+-			spin_lock(&dentry->d_lock);
++			seq_spin_lock(&dentry->d_lock);
+ 			/* d_lock not required for cursor */
+ 			list_del(&cursor->d_u.d_child);
+ 			p = dentry->d_subdirs.next;
+ 			while (n && p != &dentry->d_subdirs) {
+ 				struct dentry *next;
+ 				next = list_entry(p, struct dentry, d_u.d_child);
+-				spin_lock_nested(&next->d_lock, DENTRY_D_LOCK_NESTED);
++				seq_spin_lock_nested(&next->d_lock, DENTRY_D_LOCK_NESTED);
+ 				if (simple_positive(next))
+ 					n--;
+-				spin_unlock(&next->d_lock);
++				seq_spin_unlock(&next->d_lock);
+ 				p = p->next;
+ 			}
+ 			list_add_tail(&cursor->d_u.d_child, p);
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 		}
+ 	}
+ 	mutex_unlock(&dentry->d_inode->i_mutex);
+@@ -159,35 +159,35 @@ int dcache_readdir(struct file * filp, v
+ 			i++;
+ 			/* fallthrough */
+ 		default:
+-			spin_lock(&dentry->d_lock);
++			seq_spin_lock(&dentry->d_lock);
+ 			if (filp->f_pos == 2)
+ 				list_move(q, &dentry->d_subdirs);
+ 
+ 			for (p=q->next; p != &dentry->d_subdirs; p=p->next) {
+ 				struct dentry *next;
+ 				next = list_entry(p, struct dentry, d_u.d_child);
+-				spin_lock_nested(&next->d_lock, DENTRY_D_LOCK_NESTED);
++				seq_spin_lock_nested(&next->d_lock, DENTRY_D_LOCK_NESTED);
+ 				if (!simple_positive(next)) {
+-					spin_unlock(&next->d_lock);
++					seq_spin_unlock(&next->d_lock);
+ 					continue;
+ 				}
+ 
+-				spin_unlock(&next->d_lock);
+-				spin_unlock(&dentry->d_lock);
++				seq_spin_unlock(&next->d_lock);
++				seq_spin_unlock(&dentry->d_lock);
+ 				if (filldir(dirent, next->d_name.name, 
+ 					    next->d_name.len, filp->f_pos, 
+ 					    next->d_inode->i_ino, 
+ 					    dt_type(next->d_inode)) < 0)
+ 					return 0;
+-				spin_lock(&dentry->d_lock);
+-				spin_lock_nested(&next->d_lock, DENTRY_D_LOCK_NESTED);
++				seq_spin_lock(&dentry->d_lock);
++				seq_spin_lock_nested(&next->d_lock, DENTRY_D_LOCK_NESTED);
+ 				/* next is still alive */
+ 				list_move(q, p);
+-				spin_unlock(&next->d_lock);
++				seq_spin_unlock(&next->d_lock);
+ 				p = q;
+ 				filp->f_pos++;
+ 			}
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 	}
+ 	return 0;
+ }
+@@ -281,18 +281,18 @@ int simple_empty(struct dentry *dentry)
+ 	struct dentry *child;
+ 	int ret = 0;
+ 
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	list_for_each_entry(child, &dentry->d_subdirs, d_u.d_child) {
+-		spin_lock_nested(&child->d_lock, DENTRY_D_LOCK_NESTED);
++		seq_spin_lock_nested(&child->d_lock, DENTRY_D_LOCK_NESTED);
+ 		if (simple_positive(child)) {
+-			spin_unlock(&child->d_lock);
++			seq_spin_unlock(&child->d_lock);
+ 			goto out;
+ 		}
+-		spin_unlock(&child->d_lock);
++		seq_spin_unlock(&child->d_lock);
+ 	}
+ 	ret = 1;
+ out:
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	return ret;
+ }
+ 
+Index: linux-3.2/fs/namei.c
+===================================================================
+--- linux-3.2.orig/fs/namei.c
++++ linux-3.2/fs/namei.c
+@@ -433,7 +433,7 @@ static int unlazy_walk(struct nameidata 
+ 				nd->root.dentry != fs->root.dentry)
+ 			goto err_root;
+ 	}
+-	spin_lock(&parent->d_lock);
++	seq_spin_lock(&parent->d_lock);
+ 	if (!dentry) {
+ 		if (!__d_rcu_to_refcount(parent, nd->seq))
+ 			goto err_parent;
+@@ -441,7 +441,7 @@ static int unlazy_walk(struct nameidata 
+ 	} else {
+ 		if (dentry->d_parent != parent)
+ 			goto err_parent;
+-		spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
++		seq_spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
+ 		if (!__d_rcu_to_refcount(dentry, nd->seq))
+ 			goto err_child;
+ 		/*
+@@ -453,9 +453,9 @@ static int unlazy_walk(struct nameidata 
+ 		BUG_ON(!IS_ROOT(dentry) && dentry->d_parent != parent);
+ 		BUG_ON(!parent->d_count);
+ 		parent->d_count++;
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 	}
+-	spin_unlock(&parent->d_lock);
++	seq_spin_unlock(&parent->d_lock);
+ 	if (want_root) {
+ 		path_get(&nd->root);
+ 		seq_spin_unlock(&fs->lock);
+@@ -468,9 +468,9 @@ static int unlazy_walk(struct nameidata 
+ 	return 0;
+ 
+ err_child:
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ err_parent:
+-	spin_unlock(&parent->d_lock);
++	seq_spin_unlock(&parent->d_lock);
+ err_root:
+ 	if (want_root)
+ 		seq_spin_unlock(&fs->lock);
+@@ -517,15 +517,15 @@ static int complete_walk(struct nameidat
+ 		nd->flags &= ~LOOKUP_RCU;
+ 		if (!(nd->flags & LOOKUP_ROOT))
+ 			nd->root.mnt = NULL;
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		if (unlikely(!__d_rcu_to_refcount(dentry, nd->seq))) {
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 			rcu_read_unlock();
+ 			br_read_unlock(vfsmount_lock);
+ 			return -ECHILD;
+ 		}
+ 		BUG_ON(nd->inode != dentry->d_inode);
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		mntget(nd->path.mnt);
+ 		rcu_read_unlock();
+ 		br_read_unlock(vfsmount_lock);
+@@ -569,7 +569,7 @@ static __always_inline void set_root_rcu
+ 		do {
+ 			seq = read_seqbegin(&fs->lock);
+ 			nd->root = fs->root;
+-			nd->seq = __read_seqcount_begin(&nd->root.dentry->d_seq);
++			nd->seq = __read_seqbegin(&nd->root.dentry->d_lock);
+ 		} while (read_seqretry(&fs->lock, seq));
+ 	}
+ }
+@@ -901,7 +901,7 @@ static bool __follow_mount_rcu(struct na
+ 		path->mnt = mounted;
+ 		path->dentry = mounted->mnt_root;
+ 		nd->flags |= LOOKUP_JUMPED;
+-		nd->seq = read_seqcount_begin(&path->dentry->d_seq);
++		nd->seq = read_seqbegin(&path->dentry->d_lock);
+ 		/*
+ 		 * Update the inode too. We don't need to re-check the
+ 		 * dentry sequence number here after this d_inode read,
+@@ -921,7 +921,7 @@ static void follow_mount_rcu(struct name
+ 			break;
+ 		nd->path.mnt = mounted;
+ 		nd->path.dentry = mounted->mnt_root;
+-		nd->seq = read_seqcount_begin(&nd->path.dentry->d_seq);
++		nd->seq = read_seqbegin(&nd->path.dentry->d_lock);
+ 	}
+ }
+ 
+@@ -939,8 +939,8 @@ static int follow_dotdot_rcu(struct name
+ 			struct dentry *parent = old->d_parent;
+ 			unsigned seq;
+ 
+-			seq = read_seqcount_begin(&parent->d_seq);
+-			if (read_seqcount_retry(&old->d_seq, nd->seq))
++			seq = read_seqbegin(&parent->d_lock);
++			if (read_seqretry(&old->d_lock, nd->seq))
+ 				goto failed;
+ 			nd->path.dentry = parent;
+ 			nd->seq = seq;
+@@ -948,7 +948,7 @@ static int follow_dotdot_rcu(struct name
+ 		}
+ 		if (!follow_up_rcu(&nd->path))
+ 			break;
+-		nd->seq = read_seqcount_begin(&nd->path.dentry->d_seq);
++		nd->seq = read_seqbegin(&nd->path.dentry->d_lock);
+ 	}
+ 	follow_mount_rcu(nd);
+ 	nd->inode = nd->path.dentry->d_inode;
+@@ -1134,7 +1134,7 @@ static int do_lookup(struct nameidata *n
+ 			goto unlazy;
+ 
+ 		/* Memory barrier in read_seqcount_begin of child is enough */
+-		if (__read_seqcount_retry(&parent->d_seq, nd->seq))
++		if (__read_seqretry(&parent->d_lock, nd->seq))
+ 			return -ECHILD;
+ 		nd->seq = seq;
+ 
+@@ -1491,7 +1491,7 @@ static int path_init(int dfd, const char
+ 		if (flags & LOOKUP_RCU) {
+ 			br_read_lock(vfsmount_lock);
+ 			rcu_read_lock();
+-			nd->seq = __read_seqcount_begin(&nd->path.dentry->d_seq);
++			nd->seq = __read_seqbegin(&nd->path.dentry->d_lock);
+ 		} else {
+ 			path_get(&nd->path);
+ 		}
+@@ -1521,7 +1521,7 @@ static int path_init(int dfd, const char
+ 			do {
+ 				seq = read_seqbegin(&fs->lock);
+ 				nd->path = fs->pwd;
+-				nd->seq = __read_seqcount_begin(&nd->path.dentry->d_seq);
++				nd->seq = __read_seqbegin(&nd->path.dentry->d_lock);
+ 			} while (read_seqretry(&fs->lock, seq));
+ 		} else {
+ 			get_fs_pwd(current->fs, &nd->path);
+@@ -1550,7 +1550,7 @@ static int path_init(int dfd, const char
+ 		if (flags & LOOKUP_RCU) {
+ 			if (fput_needed)
+ 				*fp = file;
+-			nd->seq = __read_seqcount_begin(&nd->path.dentry->d_seq);
++			nd->seq = __read_seqbegin(&nd->path.dentry->d_lock);
+ 			br_read_lock(vfsmount_lock);
+ 			rcu_read_lock();
+ 		} else {
+@@ -2615,10 +2615,10 @@ SYSCALL_DEFINE2(mkdir, const char __user
+ void dentry_unhash(struct dentry *dentry)
+ {
+ 	shrink_dcache_parent(dentry);
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	if (dentry->d_count == 1)
+ 		__d_drop(dentry);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ }
+ 
+ int vfs_rmdir(struct inode *dir, struct dentry *dentry)
+Index: linux-3.2/fs/namespace.c
+===================================================================
+--- linux-3.2.orig/fs/namespace.c
++++ linux-3.2/fs/namespace.c
+@@ -560,9 +560,9 @@ static void dentry_reset_mounted(struct 
+ 				return;
+ 		}
+ 	}
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	dentry->d_flags &= ~DCACHE_MOUNTED;
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ }
+ 
+ /*
+@@ -587,9 +587,9 @@ void mnt_set_mountpoint(struct vfsmount 
+ {
+ 	child_mnt->mnt_parent = mntget(mnt);
+ 	child_mnt->mnt_mountpoint = dget(dentry);
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	dentry->d_flags |= DCACHE_MOUNTED;
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ }
+ 
+ /*
+Index: linux-3.2/fs/ncpfs/dir.c
+===================================================================
+--- linux-3.2.orig/fs/ncpfs/dir.c
++++ linux-3.2/fs/ncpfs/dir.c
+@@ -388,7 +388,7 @@ ncp_dget_fpos(struct dentry *dentry, str
+ 	}
+ 
+ 	/* If a pointer is invalid, we search the dentry. */
+-	spin_lock(&parent->d_lock);
++	seq_spin_lock(&parent->d_lock);
+ 	next = parent->d_subdirs.next;
+ 	while (next != &parent->d_subdirs) {
+ 		dent = list_entry(next, struct dentry, d_u.d_child);
+@@ -397,12 +397,12 @@ ncp_dget_fpos(struct dentry *dentry, str
+ 				dget(dent);
+ 			else
+ 				dent = NULL;
+-			spin_unlock(&parent->d_lock);
++			seq_spin_unlock(&parent->d_lock);
+ 			goto out;
+ 		}
+ 		next = next->next;
+ 	}
+-	spin_unlock(&parent->d_lock);
++	seq_spin_unlock(&parent->d_lock);
+ 	return NULL;
+ 
+ out:
+Index: linux-3.2/fs/ncpfs/ncplib_kernel.h
+===================================================================
+--- linux-3.2.orig/fs/ncpfs/ncplib_kernel.h
++++ linux-3.2/fs/ncpfs/ncplib_kernel.h
+@@ -191,7 +191,7 @@ ncp_renew_dentries(struct dentry *parent
+ 	struct list_head *next;
+ 	struct dentry *dentry;
+ 
+-	spin_lock(&parent->d_lock);
++	seq_spin_lock(&parent->d_lock);
+ 	next = parent->d_subdirs.next;
+ 	while (next != &parent->d_subdirs) {
+ 		dentry = list_entry(next, struct dentry, d_u.d_child);
+@@ -203,7 +203,7 @@ ncp_renew_dentries(struct dentry *parent
+ 
+ 		next = next->next;
+ 	}
+-	spin_unlock(&parent->d_lock);
++	seq_spin_unlock(&parent->d_lock);
+ }
+ 
+ static inline void
+@@ -213,7 +213,7 @@ ncp_invalidate_dircache_entries(struct d
+ 	struct list_head *next;
+ 	struct dentry *dentry;
+ 
+-	spin_lock(&parent->d_lock);
++	seq_spin_lock(&parent->d_lock);
+ 	next = parent->d_subdirs.next;
+ 	while (next != &parent->d_subdirs) {
+ 		dentry = list_entry(next, struct dentry, d_u.d_child);
+@@ -221,7 +221,7 @@ ncp_invalidate_dircache_entries(struct d
+ 		ncp_age_dentry(server, dentry);
+ 		next = next->next;
+ 	}
+-	spin_unlock(&parent->d_lock);
++	seq_spin_unlock(&parent->d_lock);
+ }
+ 
+ struct ncp_cache_head {
+Index: linux-3.2/fs/nfs/dir.c
+===================================================================
+--- linux-3.2.orig/fs/nfs/dir.c
++++ linux-3.2/fs/nfs/dir.c
+@@ -1823,9 +1823,9 @@ static int nfs_unlink(struct inode *dir,
+ 	dfprintk(VFS, "NFS: unlink(%s/%ld, %s)\n", dir->i_sb->s_id,
+ 		dir->i_ino, dentry->d_name.name);
+ 
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	if (dentry->d_count > 1) {
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		/* Start asynchronous writeout of the inode */
+ 		write_inode_now(dentry->d_inode, 0);
+ 		error = nfs_sillyrename(dir, dentry);
+@@ -1835,7 +1835,7 @@ static int nfs_unlink(struct inode *dir,
+ 		__d_drop(dentry);
+ 		need_rehash = 1;
+ 	}
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	error = nfs_safe_remove(dentry);
+ 	if (!error || error == -ENOENT) {
+ 		nfs_set_verifier(dentry, nfs_save_change_attribute(dir));
+Index: linux-3.2/fs/nfs/getroot.c
+===================================================================
+--- linux-3.2.orig/fs/nfs/getroot.c
++++ linux-3.2/fs/nfs/getroot.c
+@@ -64,9 +64,9 @@ static int nfs_superblock_set_dummy_root
+ 		 * Oops, since the test for IS_ROOT() will fail.
+ 		 */
+ 		spin_lock(&sb->s_root->d_inode->i_lock);
+-		spin_lock(&sb->s_root->d_lock);
++		seq_spin_lock(&sb->s_root->d_lock);
+ 		list_del_init(&sb->s_root->d_alias);
+-		spin_unlock(&sb->s_root->d_lock);
++		seq_spin_unlock(&sb->s_root->d_lock);
+ 		spin_unlock(&sb->s_root->d_inode->i_lock);
+ 	}
+ 	return 0;
+@@ -126,12 +126,12 @@ struct dentry *nfs_get_root(struct super
+ 	}
+ 
+ 	security_d_instantiate(ret, inode);
+-	spin_lock(&ret->d_lock);
++	seq_spin_lock(&ret->d_lock);
+ 	if (IS_ROOT(ret) && !(ret->d_flags & DCACHE_NFSFS_RENAMED)) {
+ 		ret->d_fsdata = name;
+ 		name = NULL;
+ 	}
+-	spin_unlock(&ret->d_lock);
++	seq_spin_unlock(&ret->d_lock);
+ out:
+ 	if (name)
+ 		kfree(name);
+@@ -250,12 +250,12 @@ struct dentry *nfs4_get_root(struct supe
+ 	}
+ 
+ 	security_d_instantiate(ret, inode);
+-	spin_lock(&ret->d_lock);
++	seq_spin_lock(&ret->d_lock);
+ 	if (IS_ROOT(ret) && !(ret->d_flags & DCACHE_NFSFS_RENAMED)) {
+ 		ret->d_fsdata = name;
+ 		name = NULL;
+ 	}
+-	spin_unlock(&ret->d_lock);
++	seq_spin_unlock(&ret->d_lock);
+ out:
+ 	if (name)
+ 		kfree(name);
+Index: linux-3.2/fs/nfs/namespace.c
+===================================================================
+--- linux-3.2.orig/fs/nfs/namespace.c
++++ linux-3.2/fs/nfs/namespace.c
+@@ -60,7 +60,7 @@ rename_retry:
+ 	seq = read_seqbegin(&rename_lock);
+ 	rcu_read_lock();
+ 	while (1) {
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		if (IS_ROOT(dentry))
+ 			break;
+ 		namelen = dentry->d_name.len;
+@@ -70,17 +70,17 @@ rename_retry:
+ 		end -= namelen;
+ 		memcpy(end, dentry->d_name.name, namelen);
+ 		*--end = '/';
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		dentry = dentry->d_parent;
+ 	}
+ 	if (read_seqretry(&rename_lock, seq)) {
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		rcu_read_unlock();
+ 		goto rename_retry;
+ 	}
+ 	if (*end != '/') {
+ 		if (--buflen < 0) {
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 			rcu_read_unlock();
+ 			goto Elong;
+ 		}
+@@ -89,7 +89,7 @@ rename_retry:
+ 	*p = end;
+ 	base = dentry->d_fsdata;
+ 	if (!base) {
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		rcu_read_unlock();
+ 		WARN_ON(1);
+ 		return end;
+@@ -100,17 +100,17 @@ rename_retry:
+ 		namelen--;
+ 	buflen -= namelen;
+ 	if (buflen < 0) {
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		rcu_read_unlock();
+ 		goto Elong;
+ 	}
+ 	end -= namelen;
+ 	memcpy(end, base, namelen);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	rcu_read_unlock();
+ 	return end;
+ Elong_unlock:
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	rcu_read_unlock();
+ 	if (read_seqretry(&rename_lock, seq))
+ 		goto rename_retry;
+Index: linux-3.2/fs/nfs/unlink.c
+===================================================================
+--- linux-3.2.orig/fs/nfs/unlink.c
++++ linux-3.2/fs/nfs/unlink.c
+@@ -156,7 +156,7 @@ static int nfs_do_call_unlink(struct den
+ 		 */
+ 		nfs_free_dname(data);
+ 		ret = nfs_copy_dname(alias, data);
+-		spin_lock(&alias->d_lock);
++		seq_spin_lock(&alias->d_lock);
+ 		if (ret == 0 && alias->d_inode != NULL &&
+ 		    !(alias->d_flags & DCACHE_NFSFS_RENAMED)) {
+ 			devname_garbage = alias->d_fsdata;
+@@ -165,7 +165,7 @@ static int nfs_do_call_unlink(struct den
+ 			ret = 1;
+ 		} else
+ 			ret = 0;
+-		spin_unlock(&alias->d_lock);
++		seq_spin_unlock(&alias->d_lock);
+ 		nfs_dec_sillycount(dir);
+ 		dput(alias);
+ 		/*
+@@ -274,13 +274,13 @@ nfs_async_unlink(struct inode *dir, stru
+ 	data->res.dir_attr = &data->dir_attr;
+ 
+ 	status = -EBUSY;
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	if (dentry->d_flags & DCACHE_NFSFS_RENAMED)
+ 		goto out_unlock;
+ 	dentry->d_flags |= DCACHE_NFSFS_RENAMED;
+ 	devname_garbage = dentry->d_fsdata;
+ 	dentry->d_fsdata = data;
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	/*
+ 	 * If we'd displaced old cached devname, free it.  At that
+ 	 * point dentry is definitely not a root, so we won't need
+@@ -290,7 +290,7 @@ nfs_async_unlink(struct inode *dir, stru
+ 		kfree(devname_garbage);
+ 	return 0;
+ out_unlock:
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	put_rpccred(data->cred);
+ out_free:
+ 	kfree(data);
+@@ -312,13 +312,13 @@ nfs_complete_unlink(struct dentry *dentr
+ {
+ 	struct nfs_unlinkdata	*data = NULL;
+ 
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	if (dentry->d_flags & DCACHE_NFSFS_RENAMED) {
+ 		dentry->d_flags &= ~DCACHE_NFSFS_RENAMED;
+ 		data = dentry->d_fsdata;
+ 		dentry->d_fsdata = NULL;
+ 	}
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 
+ 	if (data != NULL && (NFS_STALE(inode) || !nfs_call_unlink(dentry, data)))
+ 		nfs_free_unlinkdata(data);
+@@ -328,17 +328,17 @@ nfs_complete_unlink(struct dentry *dentr
+ static void
+ nfs_cancel_async_unlink(struct dentry *dentry)
+ {
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	if (dentry->d_flags & DCACHE_NFSFS_RENAMED) {
+ 		struct nfs_unlinkdata *data = dentry->d_fsdata;
+ 
+ 		dentry->d_flags &= ~DCACHE_NFSFS_RENAMED;
+ 		dentry->d_fsdata = NULL;
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		nfs_free_unlinkdata(data);
+ 		return;
+ 	}
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ }
+ 
+ struct nfs_renamedata {
+Index: linux-3.2/fs/nilfs2/namei.c
+===================================================================
+--- linux-3.2.orig/fs/nilfs2/namei.c
++++ linux-3.2/fs/nilfs2/namei.c
+@@ -538,11 +538,11 @@ static int nilfs_encode_fh(struct dentry
+ 	if (connectable && !S_ISDIR(inode->i_mode)) {
+ 		struct inode *parent;
+ 
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		parent = dentry->d_parent->d_inode;
+ 		fid->parent_ino = parent->i_ino;
+ 		fid->parent_gen = parent->i_generation;
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 
+ 		type = FILEID_NILFS_WITH_PARENT;
+ 		*lenp = NILFS_FID_SIZE_CONNECTABLE;
+Index: linux-3.2/fs/notify/fsnotify.c
+===================================================================
+--- linux-3.2.orig/fs/notify/fsnotify.c
++++ linux-3.2/fs/notify/fsnotify.c
+@@ -68,19 +68,19 @@ void __fsnotify_update_child_dentry_flag
+ 		/* run all of the children of the original inode and fix their
+ 		 * d_flags to indicate parental interest (their parent is the
+ 		 * original inode) */
+-		spin_lock(&alias->d_lock);
++		seq_spin_lock(&alias->d_lock);
+ 		list_for_each_entry(child, &alias->d_subdirs, d_u.d_child) {
+ 			if (!child->d_inode)
+ 				continue;
+ 
+-			spin_lock_nested(&child->d_lock, DENTRY_D_LOCK_NESTED);
++			seq_spin_lock_nested(&child->d_lock, DENTRY_D_LOCK_NESTED);
+ 			if (watched)
+ 				child->d_flags |= DCACHE_FSNOTIFY_PARENT_WATCHED;
+ 			else
+ 				child->d_flags &= ~DCACHE_FSNOTIFY_PARENT_WATCHED;
+-			spin_unlock(&child->d_lock);
++			seq_spin_unlock(&child->d_lock);
+ 		}
+-		spin_unlock(&alias->d_lock);
++		seq_spin_unlock(&alias->d_lock);
+ 	}
+ 	spin_unlock(&inode->i_lock);
+ }
+Index: linux-3.2/fs/notify/vfsmount_mark.c
+===================================================================
+--- linux-3.2.orig/fs/notify/vfsmount_mark.c
++++ linux-3.2/fs/notify/vfsmount_mark.c
+@@ -35,13 +35,13 @@ void fsnotify_clear_marks_by_mount(struc
+ 	struct hlist_node *pos, *n;
+ 	LIST_HEAD(free_list);
+ 
+-	spin_lock(&mnt->mnt_root->d_lock);
++	seq_spin_lock(&mnt->mnt_root->d_lock);
+ 	hlist_for_each_entry_safe(mark, pos, n, &mnt->mnt_fsnotify_marks, m.m_list) {
+ 		list_add(&mark->m.free_m_list, &free_list);
+ 		hlist_del_init_rcu(&mark->m.m_list);
+ 		fsnotify_get_mark(mark);
+ 	}
+-	spin_unlock(&mnt->mnt_root->d_lock);
++	seq_spin_unlock(&mnt->mnt_root->d_lock);
+ 
+ 	list_for_each_entry_safe(mark, lmark, &free_list, m.free_m_list) {
+ 		fsnotify_destroy_mark(mark);
+@@ -63,7 +63,7 @@ static void fsnotify_recalc_vfsmount_mas
+ 	struct hlist_node *pos;
+ 	__u32 new_mask = 0;
+ 
+-	assert_spin_locked(&mnt->mnt_root->d_lock);
++	assert_seq_spin_locked(&mnt->mnt_root->d_lock);
+ 
+ 	hlist_for_each_entry(mark, pos, &mnt->mnt_fsnotify_marks, m.m_list)
+ 		new_mask |= mark->mask;
+@@ -76,9 +76,9 @@ static void fsnotify_recalc_vfsmount_mas
+  */
+ void fsnotify_recalc_vfsmount_mask(struct vfsmount *mnt)
+ {
+-	spin_lock(&mnt->mnt_root->d_lock);
++	seq_spin_lock(&mnt->mnt_root->d_lock);
+ 	fsnotify_recalc_vfsmount_mask_locked(mnt);
+-	spin_unlock(&mnt->mnt_root->d_lock);
++	seq_spin_unlock(&mnt->mnt_root->d_lock);
+ }
+ 
+ void fsnotify_destroy_vfsmount_mark(struct fsnotify_mark *mark)
+@@ -88,14 +88,14 @@ void fsnotify_destroy_vfsmount_mark(stru
+ 	assert_spin_locked(&mark->lock);
+ 	assert_spin_locked(&mark->group->mark_lock);
+ 
+-	spin_lock(&mnt->mnt_root->d_lock);
++	seq_spin_lock(&mnt->mnt_root->d_lock);
+ 
+ 	hlist_del_init_rcu(&mark->m.m_list);
+ 	mark->m.mnt = NULL;
+ 
+ 	fsnotify_recalc_vfsmount_mask_locked(mnt);
+ 
+-	spin_unlock(&mnt->mnt_root->d_lock);
++	seq_spin_unlock(&mnt->mnt_root->d_lock);
+ }
+ 
+ static struct fsnotify_mark *fsnotify_find_vfsmount_mark_locked(struct fsnotify_group *group,
+@@ -104,7 +104,7 @@ static struct fsnotify_mark *fsnotify_fi
+ 	struct fsnotify_mark *mark;
+ 	struct hlist_node *pos;
+ 
+-	assert_spin_locked(&mnt->mnt_root->d_lock);
++	assert_seq_spin_locked(&mnt->mnt_root->d_lock);
+ 
+ 	hlist_for_each_entry(mark, pos, &mnt->mnt_fsnotify_marks, m.m_list) {
+ 		if (mark->group == group) {
+@@ -124,9 +124,9 @@ struct fsnotify_mark *fsnotify_find_vfsm
+ {
+ 	struct fsnotify_mark *mark;
+ 
+-	spin_lock(&mnt->mnt_root->d_lock);
++	seq_spin_lock(&mnt->mnt_root->d_lock);
+ 	mark = fsnotify_find_vfsmount_mark_locked(group, mnt);
+-	spin_unlock(&mnt->mnt_root->d_lock);
++	seq_spin_unlock(&mnt->mnt_root->d_lock);
+ 
+ 	return mark;
+ }
+@@ -149,7 +149,7 @@ int fsnotify_add_vfsmount_mark(struct fs
+ 	assert_spin_locked(&mark->lock);
+ 	assert_spin_locked(&group->mark_lock);
+ 
+-	spin_lock(&mnt->mnt_root->d_lock);
++	seq_spin_lock(&mnt->mnt_root->d_lock);
+ 
+ 	mark->m.mnt = mnt;
+ 
+@@ -184,7 +184,7 @@ int fsnotify_add_vfsmount_mark(struct fs
+ 	hlist_add_after_rcu(last, &mark->m.m_list);
+ out:
+ 	fsnotify_recalc_vfsmount_mask_locked(mnt);
+-	spin_unlock(&mnt->mnt_root->d_lock);
++	seq_spin_unlock(&mnt->mnt_root->d_lock);
+ 
+ 	return ret;
+ }
+Index: linux-3.2/fs/ocfs2/dcache.c
+===================================================================
+--- linux-3.2.orig/fs/ocfs2/dcache.c
++++ linux-3.2/fs/ocfs2/dcache.c
+@@ -177,16 +177,16 @@ struct dentry *ocfs2_find_local_alias(st
+ 	list_for_each(p, &inode->i_dentry) {
+ 		dentry = list_entry(p, struct dentry, d_alias);
+ 
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		if (ocfs2_match_dentry(dentry, parent_blkno, skip_unhashed)) {
+ 			trace_ocfs2_find_local_alias(dentry->d_name.len,
+ 						     dentry->d_name.name);
+ 
+ 			dget_dlock(dentry);
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 			break;
+ 		}
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 
+ 		dentry = NULL;
+ 	}
+Index: linux-3.2/fs/ocfs2/export.c
+===================================================================
+--- linux-3.2.orig/fs/ocfs2/export.c
++++ linux-3.2/fs/ocfs2/export.c
+@@ -214,7 +214,7 @@ static int ocfs2_encode_fh(struct dentry
+ 	if (connectable && !S_ISDIR(inode->i_mode)) {
+ 		struct inode *parent;
+ 
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 
+ 		parent = dentry->d_parent->d_inode;
+ 		blkno = OCFS2_I(parent)->ip_blkno;
+@@ -224,7 +224,7 @@ static int ocfs2_encode_fh(struct dentry
+ 		fh[4] = cpu_to_le32((u32)(blkno & 0xffffffff));
+ 		fh[5] = cpu_to_le32(generation);
+ 
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 
+ 		len = 6;
+ 		type = 2;
+Index: linux-3.2/fs/reiserfs/inode.c
+===================================================================
+--- linux-3.2.orig/fs/reiserfs/inode.c
++++ linux-3.2/fs/reiserfs/inode.c
+@@ -1614,7 +1614,7 @@ int reiserfs_encode_fh(struct dentry *de
+ 	if (maxlen < 5 || !need_parent)
+ 		return 3;
+ 
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	inode = dentry->d_parent->d_inode;
+ 	data[3] = inode->i_ino;
+ 	data[4] = le32_to_cpu(INODE_PKEY(inode)->k_dir_id);
+@@ -1623,7 +1623,7 @@ int reiserfs_encode_fh(struct dentry *de
+ 		data[5] = inode->i_generation;
+ 		*lenp = 6;
+ 	}
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	return *lenp;
+ }
+ 
+Index: linux-3.2/fs/udf/namei.c
+===================================================================
+--- linux-3.2.orig/fs/udf/namei.c
++++ linux-3.2/fs/udf/namei.c
+@@ -1296,13 +1296,13 @@ static int udf_encode_fh(struct dentry *
+ 	fid->udf.generation = inode->i_generation;
+ 
+ 	if (connectable && !S_ISDIR(inode->i_mode)) {
+-		spin_lock(&de->d_lock);
++		seq_spin_lock(&de->d_lock);
+ 		inode = de->d_parent->d_inode;
+ 		location = UDF_I(inode)->i_location;
+ 		fid->udf.parent_block = location.logicalBlockNum;
+ 		fid->udf.parent_partref = location.partitionReferenceNum;
+ 		fid->udf.parent_generation = inode->i_generation;
+-		spin_unlock(&de->d_lock);
++		seq_spin_unlock(&de->d_lock);
+ 		*lenp = 5;
+ 		type = FILEID_UDF_WITH_PARENT;
+ 	}
+Index: linux-3.2/fs/xfs/xfs_export.c
+===================================================================
+--- linux-3.2.orig/fs/xfs/xfs_export.c
++++ linux-3.2/fs/xfs/xfs_export.c
+@@ -97,20 +97,20 @@ xfs_fs_encode_fh(
+ 
+ 	switch (fileid_type) {
+ 	case FILEID_INO32_GEN_PARENT:
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		fid->i32.parent_ino = XFS_I(dentry->d_parent->d_inode)->i_ino;
+ 		fid->i32.parent_gen = dentry->d_parent->d_inode->i_generation;
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		/*FALLTHRU*/
+ 	case FILEID_INO32_GEN:
+ 		fid->i32.ino = XFS_I(inode)->i_ino;
+ 		fid->i32.gen = inode->i_generation;
+ 		break;
+ 	case FILEID_INO32_GEN_PARENT | XFS_FILEID_TYPE_64FLAG:
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		fid64->parent_ino = XFS_I(dentry->d_parent->d_inode)->i_ino;
+ 		fid64->parent_gen = dentry->d_parent->d_inode->i_generation;
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 		/*FALLTHRU*/
+ 	case FILEID_INO32_GEN | XFS_FILEID_TYPE_64FLAG:
+ 		fid64->ino = XFS_I(inode)->i_ino;
+Index: linux-3.2/include/linux/dcache.h
+===================================================================
+--- linux-3.2.orig/include/linux/dcache.h
++++ linux-3.2/include/linux/dcache.h
+@@ -116,7 +116,7 @@ full_name_hash(const unsigned char *name
+ struct dentry {
+ 	/* RCU lookup touched fields */
+ 	unsigned int d_flags;		/* protected by d_lock */
+-	seqcount_t d_seq;		/* per dentry seqlock */
++	seqlock_t d_lock;		/* per dentry seqlock */
+ 	struct hlist_bl_node d_hash;	/* lookup hash list */
+ 	struct dentry *d_parent;	/* parent directory */
+ 	struct qstr d_name;
+@@ -126,7 +126,6 @@ struct dentry {
+ 
+ 	/* Ref lookup also touches following */
+ 	unsigned int d_count;		/* protected by d_lock */
+-	spinlock_t d_lock;		/* per dentry lock */
+ 	const struct dentry_operations *d_op;
+ 	struct super_block *d_sb;	/* The root of the dentry tree */
+ 	unsigned long d_time;		/* used by d_revalidate */
+@@ -323,8 +322,8 @@ static inline int __d_rcu_to_refcount(st
+ {
+ 	int ret = 0;
+ 
+-	assert_spin_locked(&dentry->d_lock);
+-	if (!read_seqcount_retry(&dentry->d_seq, seq)) {
++	assert_seq_spin_locked(&dentry->d_lock);
++	if (!read_seqretry(&dentry->d_lock, seq)) {
+ 		ret = 1;
+ 		dentry->d_count++;
+ 	}
+@@ -367,9 +366,9 @@ static inline struct dentry *dget_dlock(
+ static inline struct dentry *dget(struct dentry *dentry)
+ {
+ 	if (dentry) {
+-		spin_lock(&dentry->d_lock);
++		seq_spin_lock(&dentry->d_lock);
+ 		dget_dlock(dentry);
+-		spin_unlock(&dentry->d_lock);
++		seq_spin_unlock(&dentry->d_lock);
+ 	}
+ 	return dentry;
+ }
+@@ -400,9 +399,9 @@ static inline int cant_mount(struct dent
+ 
+ static inline void dont_mount(struct dentry *dentry)
+ {
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	dentry->d_flags |= DCACHE_CANT_MOUNT;
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ }
+ 
+ extern void dput(struct dentry *);
+Index: linux-3.2/include/linux/fs.h
+===================================================================
+--- linux-3.2.orig/include/linux/fs.h
++++ linux-3.2/include/linux/fs.h
+@@ -2603,9 +2603,9 @@ static inline ino_t parent_ino(struct de
+ 	 * Don't strictly need d_lock here? If the parent ino could change
+ 	 * then surely we'd have a deeper race in the caller?
+ 	 */
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	res = dentry->d_parent->d_inode->i_ino;
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ 	return res;
+ }
+ 
+Index: linux-3.2/include/linux/fsnotify_backend.h
+===================================================================
+--- linux-3.2.orig/include/linux/fsnotify_backend.h
++++ linux-3.2/include/linux/fsnotify_backend.h
+@@ -329,7 +329,7 @@ static inline void __fsnotify_update_dca
+ {
+ 	struct dentry *parent;
+ 
+-	assert_spin_locked(&dentry->d_lock);
++	assert_seq_spin_locked(&dentry->d_lock);
+ 
+ 	/*
+ 	 * Serialisation of setting PARENT_WATCHED on the dentries is provided
+@@ -353,9 +353,9 @@ static inline void __fsnotify_d_instanti
+ 	if (!inode)
+ 		return;
+ 
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	__fsnotify_update_dcache_flags(dentry);
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ }
+ 
+ /* called from fsnotify listeners, such as fanotify or dnotify */
+Index: linux-3.2/kernel/cgroup.c
+===================================================================
+--- linux-3.2.orig/kernel/cgroup.c
++++ linux-3.2/kernel/cgroup.c
+@@ -870,29 +870,29 @@ static void cgroup_clear_directory(struc
+ 	struct list_head *node;
+ 
+ 	BUG_ON(!mutex_is_locked(&dentry->d_inode->i_mutex));
+-	spin_lock(&dentry->d_lock);
++	seq_spin_lock(&dentry->d_lock);
+ 	node = dentry->d_subdirs.next;
+ 	while (node != &dentry->d_subdirs) {
+ 		struct dentry *d = list_entry(node, struct dentry, d_u.d_child);
+ 
+-		spin_lock_nested(&d->d_lock, DENTRY_D_LOCK_NESTED);
++		seq_spin_lock_nested(&d->d_lock, DENTRY_D_LOCK_NESTED);
+ 		list_del_init(node);
+ 		if (d->d_inode) {
+ 			/* This should never be called on a cgroup
+ 			 * directory with child cgroups */
+ 			BUG_ON(d->d_inode->i_mode & S_IFDIR);
+ 			dget_dlock(d);
+-			spin_unlock(&d->d_lock);
+-			spin_unlock(&dentry->d_lock);
++			seq_spin_unlock(&d->d_lock);
++			seq_spin_unlock(&dentry->d_lock);
+ 			d_delete(d);
+ 			simple_unlink(dentry->d_inode, d);
+ 			dput(d);
+-			spin_lock(&dentry->d_lock);
++			seq_spin_lock(&dentry->d_lock);
+ 		} else
+-			spin_unlock(&d->d_lock);
++			seq_spin_unlock(&d->d_lock);
+ 		node = dentry->d_subdirs.next;
+ 	}
+-	spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
+ }
+ 
+ /*
+@@ -905,11 +905,11 @@ static void cgroup_d_remove_dir(struct d
+ 	cgroup_clear_directory(dentry);
+ 
+ 	parent = dentry->d_parent;
+-	spin_lock(&parent->d_lock);
+-	spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
++	seq_spin_lock(&parent->d_lock);
++	seq_spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
+ 	list_del_init(&dentry->d_u.d_child);
+-	spin_unlock(&dentry->d_lock);
+-	spin_unlock(&parent->d_lock);
++	seq_spin_unlock(&dentry->d_lock);
++	seq_spin_unlock(&parent->d_lock);
+ 	remove_dir(dentry);
+ }
+ 
+Index: linux-3.2/net/sunrpc/rpc_pipe.c
+===================================================================
+--- linux-3.2.orig/net/sunrpc/rpc_pipe.c
++++ linux-3.2/net/sunrpc/rpc_pipe.c
+@@ -397,14 +397,14 @@ rpc_info_open(struct inode *inode, struc
+ 	if (!ret) {
+ 		struct seq_file *m = file->private_data;
+ 
+-		spin_lock(&file->f_path.dentry->d_lock);
++		seq_spin_lock(&file->f_path.dentry->d_lock);
+ 		if (!d_unhashed(file->f_path.dentry))
+ 			clnt = RPC_I(inode)->private;
+ 		if (clnt != NULL && atomic_inc_not_zero(&clnt->cl_count)) {
+-			spin_unlock(&file->f_path.dentry->d_lock);
++			seq_spin_unlock(&file->f_path.dentry->d_lock);
+ 			m->private = clnt;
+ 		} else {
+-			spin_unlock(&file->f_path.dentry->d_lock);
++			seq_spin_unlock(&file->f_path.dentry->d_lock);
+ 			single_release(inode, file);
+ 			ret = -EINVAL;
+ 		}
+Index: linux-3.2/security/selinux/selinuxfs.c
+===================================================================
+--- linux-3.2.orig/security/selinux/selinuxfs.c
++++ linux-3.2/security/selinux/selinuxfs.c
+@@ -1194,28 +1194,28 @@ static void sel_remove_entries(struct de
+ {
+ 	struct list_head *node;
+ 
+-	spin_lock(&de->d_lock);
++	seq_spin_lock(&de->d_lock);
+ 	node = de->d_subdirs.next;
+ 	while (node != &de->d_subdirs) {
+ 		struct dentry *d = list_entry(node, struct dentry, d_u.d_child);
+ 
+-		spin_lock_nested(&d->d_lock, DENTRY_D_LOCK_NESTED);
++		seq_spin_lock_nested(&d->d_lock, DENTRY_D_LOCK_NESTED);
+ 		list_del_init(node);
+ 
+ 		if (d->d_inode) {
+ 			dget_dlock(d);
+-			spin_unlock(&de->d_lock);
+-			spin_unlock(&d->d_lock);
++			seq_spin_unlock(&de->d_lock);
++			seq_spin_unlock(&d->d_lock);
+ 			d_delete(d);
+ 			simple_unlink(de->d_inode, d);
+ 			dput(d);
+-			spin_lock(&de->d_lock);
++			seq_spin_lock(&de->d_lock);
+ 		} else
+-			spin_unlock(&d->d_lock);
++			seq_spin_unlock(&d->d_lock);
+ 		node = de->d_subdirs.next;
+ 	}
+ 
+-	spin_unlock(&de->d_lock);
++	seq_spin_unlock(&de->d_lock);
+ }
+ 
+ #define BOOL_DIR_NAME "booleans"

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/fs-protect-opencoded-isize-seqcount.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/fs-protect-opencoded-isize-seqcount.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/fs-protect-opencoded-isize-seqcount.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/fs-protect-opencoded-isize-seqcount.patch)
@@ -0,0 +1,31 @@
+Subject: fs: Protect open coded isize seqcount
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Thu, 01 Mar 2012 16:12:47 +0100
+
+A writer might be preempted in the write side critical section on
+RT. Disable preemption to avoid endless spinning of a preempting
+reader.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+
+---
+ include/linux/fs.h |    2 ++
+ 1 file changed, 2 insertions(+)
+
+Index: linux-3.2/include/linux/fs.h
+===================================================================
+--- linux-3.2.orig/include/linux/fs.h
++++ linux-3.2/include/linux/fs.h
+@@ -903,9 +903,11 @@ static inline loff_t i_size_read(const s
+ static inline void i_size_write(struct inode *inode, loff_t i_size)
+ {
+ #if BITS_PER_LONG==32 && defined(CONFIG_SMP)
++	preempt_disable_rt();
+ 	write_seqcount_begin(&inode->i_size_seqcount);
+ 	inode->i_size = i_size;
+ 	write_seqcount_end(&inode->i_size_seqcount);
++	preempt_enable_rt();
+ #elif BITS_PER_LONG==32 && defined(CONFIG_PREEMPT)
+ 	preempt_disable();
+ 	inode->i_size = i_size;

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/fs-struct-use-seqlock.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/fs-struct-use-seqlock.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/fs-struct-use-seqlock.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/fs-struct-use-seqlock.patch)
@@ -0,0 +1,339 @@
+Subject: fs: fs_struct use seqlock
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Mon, 27 Feb 2012 17:58:13 +0100
+
+Replace the open coded seqlock with a real one, so RT can handle it.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+
+---
+ fs/exec.c                 |    4 ++--
+ fs/fhandle.c              |    4 ++--
+ fs/fs_struct.c            |   46 ++++++++++++++++++----------------------------
+ fs/namei.c                |   14 +++++++-------
+ include/linux/fs_struct.h |   16 +++++++---------
+ kernel/fork.c             |   10 +++++-----
+ 6 files changed, 41 insertions(+), 53 deletions(-)
+
+Index: linux-3.2/fs/exec.c
+===================================================================
+--- linux-3.2.orig/fs/exec.c
++++ linux-3.2/fs/exec.c
+@@ -1239,7 +1239,7 @@ int check_unsafe_exec(struct linux_binpr
+ 	}
+ 
+ 	n_fs = 1;
+-	spin_lock(&p->fs->lock);
++	seq_spin_lock(&p->fs->lock);
+ 	rcu_read_lock();
+ 	for (t = next_thread(p); t != p; t = next_thread(t)) {
+ 		if (t->fs == p->fs)
+@@ -1256,7 +1256,7 @@ int check_unsafe_exec(struct linux_binpr
+ 			res = 1;
+ 		}
+ 	}
+-	spin_unlock(&p->fs->lock);
++	seq_spin_unlock(&p->fs->lock);
+ 
+ 	return res;
+ }
+Index: linux-3.2/fs/fhandle.c
+===================================================================
+--- linux-3.2.orig/fs/fhandle.c
++++ linux-3.2/fs/fhandle.c
+@@ -115,10 +115,10 @@ static struct vfsmount *get_vfsmount_fro
+ 
+ 	if (fd == AT_FDCWD) {
+ 		struct fs_struct *fs = current->fs;
+-		spin_lock(&fs->lock);
++		seq_spin_lock(&fs->lock);
+ 		path = fs->pwd;
+ 		mntget(path.mnt);
+-		spin_unlock(&fs->lock);
++		seq_spin_unlock(&fs->lock);
+ 	} else {
+ 		int fput_needed;
+ 		struct file *file = fget_light(fd, &fput_needed);
+Index: linux-3.2/fs/fs_struct.c
+===================================================================
+--- linux-3.2.orig/fs/fs_struct.c
++++ linux-3.2/fs/fs_struct.c
+@@ -26,13 +26,11 @@ void set_fs_root(struct fs_struct *fs, s
+ {
+ 	struct path old_root;
+ 
+-	spin_lock(&fs->lock);
+-	write_seqcount_begin(&fs->seq);
++	write_seqlock(&fs->lock);
+ 	old_root = fs->root;
+ 	fs->root = *path;
+ 	path_get_longterm(path);
+-	write_seqcount_end(&fs->seq);
+-	spin_unlock(&fs->lock);
++	write_sequnlock(&fs->lock);
+ 	if (old_root.dentry)
+ 		path_put_longterm(&old_root);
+ }
+@@ -45,13 +43,11 @@ void set_fs_pwd(struct fs_struct *fs, st
+ {
+ 	struct path old_pwd;
+ 
+-	spin_lock(&fs->lock);
+-	write_seqcount_begin(&fs->seq);
++	write_seqlock(&fs->lock);
+ 	old_pwd = fs->pwd;
+ 	fs->pwd = *path;
+ 	path_get_longterm(path);
+-	write_seqcount_end(&fs->seq);
+-	spin_unlock(&fs->lock);
++	write_sequnlock(&fs->lock);
+ 
+ 	if (old_pwd.dentry)
+ 		path_put_longterm(&old_pwd);
+@@ -68,8 +64,7 @@ void chroot_fs_refs(struct path *old_roo
+ 		task_lock(p);
+ 		fs = p->fs;
+ 		if (fs) {
+-			spin_lock(&fs->lock);
+-			write_seqcount_begin(&fs->seq);
++			write_seqlock(&fs->lock);
+ 			if (fs->root.dentry == old_root->dentry
+ 			    && fs->root.mnt == old_root->mnt) {
+ 				path_get_longterm(new_root);
+@@ -82,8 +77,7 @@ void chroot_fs_refs(struct path *old_roo
+ 				fs->pwd = *new_root;
+ 				count++;
+ 			}
+-			write_seqcount_end(&fs->seq);
+-			spin_unlock(&fs->lock);
++			write_sequnlock(&fs->lock);
+ 		}
+ 		task_unlock(p);
+ 	} while_each_thread(g, p);
+@@ -106,12 +100,10 @@ void exit_fs(struct task_struct *tsk)
+ 	if (fs) {
+ 		int kill;
+ 		task_lock(tsk);
+-		spin_lock(&fs->lock);
+-		write_seqcount_begin(&fs->seq);
++		write_seqlock(&fs->lock);
+ 		tsk->fs = NULL;
+ 		kill = !--fs->users;
+-		write_seqcount_end(&fs->seq);
+-		spin_unlock(&fs->lock);
++		write_sequnlock(&fs->lock);
+ 		task_unlock(tsk);
+ 		if (kill)
+ 			free_fs_struct(fs);
+@@ -125,16 +117,15 @@ struct fs_struct *copy_fs_struct(struct 
+ 	if (fs) {
+ 		fs->users = 1;
+ 		fs->in_exec = 0;
+-		spin_lock_init(&fs->lock);
+-		seqcount_init(&fs->seq);
++		seqlock_init(&fs->lock);
+ 		fs->umask = old->umask;
+ 
+-		spin_lock(&old->lock);
++		seq_spin_lock(&old->lock);
+ 		fs->root = old->root;
+ 		path_get_longterm(&fs->root);
+ 		fs->pwd = old->pwd;
+ 		path_get_longterm(&fs->pwd);
+-		spin_unlock(&old->lock);
++		seq_spin_unlock(&old->lock);
+ 	}
+ 	return fs;
+ }
+@@ -149,10 +140,10 @@ int unshare_fs_struct(void)
+ 		return -ENOMEM;
+ 
+ 	task_lock(current);
+-	spin_lock(&fs->lock);
++	seq_spin_lock(&fs->lock);
+ 	kill = !--fs->users;
+ 	current->fs = new_fs;
+-	spin_unlock(&fs->lock);
++	seq_spin_unlock(&fs->lock);
+ 	task_unlock(current);
+ 
+ 	if (kill)
+@@ -171,8 +162,7 @@ EXPORT_SYMBOL(current_umask);
+ /* to be mentioned only in INIT_TASK */
+ struct fs_struct init_fs = {
+ 	.users		= 1,
+-	.lock		= __SPIN_LOCK_UNLOCKED(init_fs.lock),
+-	.seq		= SEQCNT_ZERO,
++	.lock		= __SEQLOCK_UNLOCKED(init_fs.lock),
+ 	.umask		= 0022,
+ };
+ 
+@@ -185,14 +175,14 @@ void daemonize_fs_struct(void)
+ 
+ 		task_lock(current);
+ 
+-		spin_lock(&init_fs.lock);
++		seq_spin_lock(&init_fs.lock);
+ 		init_fs.users++;
+-		spin_unlock(&init_fs.lock);
++		seq_spin_unlock(&init_fs.lock);
+ 
+-		spin_lock(&fs->lock);
++		seq_spin_lock(&fs->lock);
+ 		current->fs = &init_fs;
+ 		kill = !--fs->users;
+-		spin_unlock(&fs->lock);
++		seq_spin_unlock(&fs->lock);
+ 
+ 		task_unlock(current);
+ 		if (kill)
+Index: linux-3.2/fs/namei.c
+===================================================================
+--- linux-3.2.orig/fs/namei.c
++++ linux-3.2/fs/namei.c
+@@ -428,7 +428,7 @@ static int unlazy_walk(struct nameidata 
+ 	BUG_ON(!(nd->flags & LOOKUP_RCU));
+ 	if (nd->root.mnt && !(nd->flags & LOOKUP_ROOT)) {
+ 		want_root = 1;
+-		spin_lock(&fs->lock);
++		seq_spin_lock(&fs->lock);
+ 		if (nd->root.mnt != fs->root.mnt ||
+ 				nd->root.dentry != fs->root.dentry)
+ 			goto err_root;
+@@ -458,7 +458,7 @@ static int unlazy_walk(struct nameidata 
+ 	spin_unlock(&parent->d_lock);
+ 	if (want_root) {
+ 		path_get(&nd->root);
+-		spin_unlock(&fs->lock);
++		seq_spin_unlock(&fs->lock);
+ 	}
+ 	mntget(nd->path.mnt);
+ 
+@@ -473,7 +473,7 @@ err_parent:
+ 	spin_unlock(&parent->d_lock);
+ err_root:
+ 	if (want_root)
+-		spin_unlock(&fs->lock);
++		seq_spin_unlock(&fs->lock);
+ 	return -ECHILD;
+ }
+ 
+@@ -567,10 +567,10 @@ static __always_inline void set_root_rcu
+ 		unsigned seq;
+ 
+ 		do {
+-			seq = read_seqcount_begin(&fs->seq);
++			seq = read_seqbegin(&fs->lock);
+ 			nd->root = fs->root;
+ 			nd->seq = __read_seqcount_begin(&nd->root.dentry->d_seq);
+-		} while (read_seqcount_retry(&fs->seq, seq));
++		} while (read_seqretry(&fs->lock, seq));
+ 	}
+ }
+ 
+@@ -1519,10 +1519,10 @@ static int path_init(int dfd, const char
+ 			rcu_read_lock();
+ 
+ 			do {
+-				seq = read_seqcount_begin(&fs->seq);
++				seq = read_seqbegin(&fs->lock);
+ 				nd->path = fs->pwd;
+ 				nd->seq = __read_seqcount_begin(&nd->path.dentry->d_seq);
+-			} while (read_seqcount_retry(&fs->seq, seq));
++			} while (read_seqretry(&fs->lock, seq));
+ 		} else {
+ 			get_fs_pwd(current->fs, &nd->path);
+ 		}
+Index: linux-3.2/include/linux/fs_struct.h
+===================================================================
+--- linux-3.2.orig/include/linux/fs_struct.h
++++ linux-3.2/include/linux/fs_struct.h
+@@ -2,13 +2,11 @@
+ #define _LINUX_FS_STRUCT_H
+ 
+ #include <linux/path.h>
+-#include <linux/spinlock.h>
+ #include <linux/seqlock.h>
+ 
+ struct fs_struct {
+ 	int users;
+-	spinlock_t lock;
+-	seqcount_t seq;
++	seqlock_t lock;
+ 	int umask;
+ 	int in_exec;
+ 	struct path root, pwd;
+@@ -26,29 +24,29 @@ extern int unshare_fs_struct(void);
+ 
+ static inline void get_fs_root(struct fs_struct *fs, struct path *root)
+ {
+-	spin_lock(&fs->lock);
++	seq_spin_lock(&fs->lock);
+ 	*root = fs->root;
+ 	path_get(root);
+-	spin_unlock(&fs->lock);
++	seq_spin_unlock(&fs->lock);
+ }
+ 
+ static inline void get_fs_pwd(struct fs_struct *fs, struct path *pwd)
+ {
+-	spin_lock(&fs->lock);
++	seq_spin_lock(&fs->lock);
+ 	*pwd = fs->pwd;
+ 	path_get(pwd);
+-	spin_unlock(&fs->lock);
++	seq_spin_unlock(&fs->lock);
+ }
+ 
+ static inline void get_fs_root_and_pwd(struct fs_struct *fs, struct path *root,
+ 				       struct path *pwd)
+ {
+-	spin_lock(&fs->lock);
++	seq_spin_lock(&fs->lock);
+ 	*root = fs->root;
+ 	path_get(root);
+ 	*pwd = fs->pwd;
+ 	path_get(pwd);
+-	spin_unlock(&fs->lock);
++	seq_spin_unlock(&fs->lock);
+ }
+ 
+ #endif /* _LINUX_FS_STRUCT_H */
+Index: linux-3.2/kernel/fork.c
+===================================================================
+--- linux-3.2.orig/kernel/fork.c
++++ linux-3.2/kernel/fork.c
+@@ -825,13 +825,13 @@ static int copy_fs(unsigned long clone_f
+ 	struct fs_struct *fs = current->fs;
+ 	if (clone_flags & CLONE_FS) {
+ 		/* tsk->fs is already what we want */
+-		spin_lock(&fs->lock);
++		seq_spin_lock(&fs->lock);
+ 		if (fs->in_exec) {
+-			spin_unlock(&fs->lock);
++			seq_spin_unlock(&fs->lock);
+ 			return -EAGAIN;
+ 		}
+ 		fs->users++;
+-		spin_unlock(&fs->lock);
++		seq_spin_unlock(&fs->lock);
+ 		return 0;
+ 	}
+ 	tsk->fs = copy_fs_struct(fs);
+@@ -1717,13 +1717,13 @@ SYSCALL_DEFINE1(unshare, unsigned long, 
+ 
+ 		if (new_fs) {
+ 			fs = current->fs;
+-			spin_lock(&fs->lock);
++			seq_spin_lock(&fs->lock);
+ 			current->fs = new_fs;
+ 			if (--fs->users)
+ 				new_fs = NULL;
+ 			else
+ 				new_fs = fs;
+-			spin_unlock(&fs->lock);
++			seq_spin_unlock(&fs->lock);
+ 		}
+ 
+ 		if (new_fd) {

Copied and modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/futex-requeue-pi-fix.patch (from r18697, dists/trunk/linux-2.6/debian/patches/features/all/rt/futex-requeue-pi-fix.patch)
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/features/all/rt/futex-requeue-pi-fix.patch	Fri Feb 17 02:25:49 2012	(r18697, copy source)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/futex-requeue-pi-fix.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -49,11 +49,16 @@
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 
 
-diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
-index 991bc7f..9850dc0 100644
---- a/kernel/rtmutex.c
-+++ b/kernel/rtmutex.c
-@@ -75,7 +75,8 @@ static void fixup_rt_mutex_waiters(struct rt_mutex *lock)
+---
+ kernel/rtmutex.c        |   32 +++++++++++++++++++++++++++++++-
+ kernel/rtmutex_common.h |    1 +
+ 2 files changed, 32 insertions(+), 1 deletion(-)
+
+Index: linux-3.2/kernel/rtmutex.c
+===================================================================
+--- linux-3.2.orig/kernel/rtmutex.c
++++ linux-3.2/kernel/rtmutex.c
+@@ -69,7 +69,8 @@ static void fixup_rt_mutex_waiters(struc
  
  static int rt_mutex_real_waiter(struct rt_mutex_waiter *waiter)
  {
@@ -63,7 +68,7 @@
  }
  
  /*
-@@ -1353,6 +1354,35 @@ int rt_mutex_start_proxy_lock(struct rt_mutex *lock,
+@@ -1010,6 +1011,35 @@ int rt_mutex_start_proxy_lock(struct rt_
  		return 1;
  	}
  
@@ -99,11 +104,11 @@
  	ret = task_blocks_on_rt_mutex(lock, waiter, task, detect_deadlock);
  
  	if (ret && !rt_mutex_owner(lock)) {
-diff --git a/kernel/rtmutex_common.h b/kernel/rtmutex_common.h
-index a688a29..6ec3dc1 100644
---- a/kernel/rtmutex_common.h
-+++ b/kernel/rtmutex_common.h
-@@ -105,6 +105,7 @@ static inline struct task_struct *rt_mutex_owner(struct rt_mutex *lock)
+Index: linux-3.2/kernel/rtmutex_common.h
+===================================================================
+--- linux-3.2.orig/kernel/rtmutex_common.h
++++ linux-3.2/kernel/rtmutex_common.h
+@@ -104,6 +104,7 @@ static inline struct task_struct *rt_mut
   * PI-futex support (proxy locking functions, etc.):
   */
  #define PI_WAKEUP_INPROGRESS	((struct rt_mutex_waiter *) 1)
@@ -111,6 +116,3 @@
  
  extern struct task_struct *rt_mutex_next_owner(struct rt_mutex *lock);
  extern void rt_mutex_init_proxy_locked(struct rt_mutex *lock,
-
-
-

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/genirq-disable-irqpoll-on-rt.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/genirq-disable-irqpoll-on-rt.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/genirq-disable-irqpoll-on-rt.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -15,7 +15,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/irq/spurious.c
 +++ linux-3.2/kernel/irq/spurious.c
-@@ -339,6 +339,11 @@ MODULE_PARM_DESC(noirqdebug, "Disable ir
+@@ -341,6 +341,11 @@ MODULE_PARM_DESC(noirqdebug, "Disable ir
  
  static int __init irqfixup_setup(char *str)
  {
@@ -27,7 +27,7 @@
  	irqfixup = 1;
  	printk(KERN_WARNING "Misrouted IRQ fixup support enabled.\n");
  	printk(KERN_WARNING "This may impact system performance.\n");
-@@ -351,6 +356,11 @@ module_param(irqfixup, int, 0644);
+@@ -353,6 +358,11 @@ module_param(irqfixup, int, 0644);
  
  static int __init irqpoll_setup(char *str)
  {

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -60,7 +60,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/hrtimer.c
 +++ linux-3.2/kernel/hrtimer.c
-@@ -1040,6 +1040,7 @@ int __hrtimer_start_range_ns(struct hrti
+@@ -1042,6 +1042,7 @@ int __hrtimer_start_range_ns(struct hrti
  			 * remove it again and report a failure. This avoids
  			 * stale base->first entries.
  			 */

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/hrtimer-fix-reprogram-madness.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/hrtimer-fix-reprogram-madness.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/hrtimer-fix-reprogram-madness.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -11,7 +11,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/hrtimer.c
 +++ linux-3.2/kernel/hrtimer.c
-@@ -1315,7 +1315,11 @@ static void hrtimer_rt_reprogram(int res
+@@ -1317,7 +1317,11 @@ static void hrtimer_rt_reprogram(int res
  		if (!enqueue_hrtimer(timer, base))
  			return;
  
@@ -24,7 +24,7 @@
  			goto requeue;
  
  	} else if (hrtimer_active(timer)) {
-@@ -1324,6 +1328,7 @@ static void hrtimer_rt_reprogram(int res
+@@ -1326,6 +1330,7 @@ static void hrtimer_rt_reprogram(int res
  		 * the event device.
  		 */
  		if (&timer->node == base->active.next &&
@@ -32,7 +32,7 @@
  		    hrtimer_reprogram(timer, base))
  			goto requeue;
  	}
-@@ -1336,6 +1341,7 @@ requeue:
+@@ -1338,6 +1343,7 @@ requeue:
  	 */
  	__remove_hrtimer(timer, base, timer->state, 0);
  	list_add_tail(&timer->cb_entry, &base->expired);

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/hrtimers-prepare-full-preemption.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/hrtimers-prepare-full-preemption.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/hrtimers-prepare-full-preemption.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -80,7 +80,7 @@
  /*
   * enqueue_hrtimer - internal function to (re)start a timer
   *
-@@ -1071,7 +1097,7 @@ int hrtimer_cancel(struct hrtimer *timer
+@@ -1073,7 +1099,7 @@ int hrtimer_cancel(struct hrtimer *timer
  
  		if (ret >= 0)
  			return ret;
@@ -89,7 +89,7 @@
  	}
  }
  EXPORT_SYMBOL_GPL(hrtimer_cancel);
-@@ -1474,6 +1500,8 @@ void hrtimer_run_queues(void)
+@@ -1476,6 +1502,8 @@ void hrtimer_run_queues(void)
  		}
  		raw_spin_unlock(&cpu_base->lock);
  	}
@@ -98,7 +98,7 @@
  }
  
  /*
-@@ -1636,6 +1664,9 @@ static void __cpuinit init_hrtimers_cpu(
+@@ -1638,6 +1666,9 @@ static void __cpuinit init_hrtimers_cpu(
  	}
  
  	hrtimer_init_hres(cpu_base);

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/ia64-vdso-use-seqcount.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/ia64-vdso-use-seqcount.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/ia64-vdso-use-seqcount.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/ia64-vdso-use-seqcount.patch)
@@ -0,0 +1,91 @@
+Subject: ia64: vsyscall: Use seqcount instead of seqlock
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Tue, 28 Feb 2012 18:33:08 +0100
+
+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.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: Tony Luck <tony.luck at intel.com>
+---
+ arch/ia64/kernel/asm-offsets.c        |    4 ++--
+ arch/ia64/kernel/fsys.S               |    2 +-
+ arch/ia64/kernel/fsyscall_gtod_data.h |    2 +-
+ arch/ia64/kernel/time.c               |   10 +++-------
+ 4 files changed, 7 insertions(+), 11 deletions(-)
+
+Index: linux-2.6/arch/ia64/kernel/asm-offsets.c
+===================================================================
+--- linux-2.6.orig/arch/ia64/kernel/asm-offsets.c
++++ linux-2.6/arch/ia64/kernel/asm-offsets.c
+@@ -269,8 +269,8 @@ void foo(void)
+ 	BLANK();
+ 
+ 	/* used by fsys_gettimeofday in arch/ia64/kernel/fsys.S */
+-	DEFINE(IA64_GTOD_LOCK_OFFSET,
+-		offsetof (struct fsyscall_gtod_data_t, lock));
++	DEFINE(IA64_GTOD_SEQ_OFFSET,
++		offsetof (struct fsyscall_gtod_data_t, seq);
+ 	DEFINE(IA64_GTOD_WALL_TIME_OFFSET,
+ 		offsetof (struct fsyscall_gtod_data_t, wall_time));
+ 	DEFINE(IA64_GTOD_MONO_TIME_OFFSET,
+Index: linux-2.6/arch/ia64/kernel/fsys.S
+===================================================================
+--- linux-2.6.orig/arch/ia64/kernel/fsys.S
++++ linux-2.6/arch/ia64/kernel/fsys.S
+@@ -174,7 +174,7 @@ ENTRY(fsys_set_tid_address)
+ 	FSYS_RETURN
+ END(fsys_set_tid_address)
+ 
+-#if IA64_GTOD_LOCK_OFFSET !=0
++#if IA64_GTOD_SEQ_OFFSET !=0
+ #error fsys_gettimeofday incompatible with changes to struct fsyscall_gtod_data_t
+ #endif
+ #if IA64_ITC_JITTER_OFFSET !=0
+Index: linux-2.6/arch/ia64/kernel/fsyscall_gtod_data.h
+===================================================================
+--- linux-2.6.orig/arch/ia64/kernel/fsyscall_gtod_data.h
++++ linux-2.6/arch/ia64/kernel/fsyscall_gtod_data.h
+@@ -6,7 +6,7 @@
+  */
+ 
+ struct fsyscall_gtod_data_t {
+-	seqlock_t	lock;
++	seqcount_t	seq;
+ 	struct timespec	wall_time;
+ 	struct timespec monotonic_time;
+ 	cycle_t		clk_mask;
+Index: linux-2.6/arch/ia64/kernel/time.c
+===================================================================
+--- linux-2.6.orig/arch/ia64/kernel/time.c
++++ linux-2.6/arch/ia64/kernel/time.c
+@@ -35,9 +35,7 @@
+ 
+ static cycle_t itc_get_cycles(struct clocksource *cs);
+ 
+-struct fsyscall_gtod_data_t fsyscall_gtod_data = {
+-	.lock = __SEQLOCK_UNLOCKED(fsyscall_gtod_data.lock),
+-};
++struct fsyscall_gtod_data_t fsyscall_gtod_data;
+ 
+ struct itc_jitter_data_t itc_jitter_data;
+ 
+@@ -460,9 +458,7 @@ void update_vsyscall_tz(void)
+ void update_vsyscall(struct timespec *wall, struct timespec *wtm,
+ 			struct clocksource *c, u32 mult)
+ {
+-        unsigned long flags;
+-
+-        write_seqlock_irqsave(&fsyscall_gtod_data.lock, flags);
++	write_seqcount_begin(&fsyscall_gtod_data.seq);
+ 
+         /* copy fsyscall clock data */
+         fsyscall_gtod_data.clk_mask = c->mask;
+@@ -485,6 +481,6 @@ void update_vsyscall(struct timespec *wa
+ 		fsyscall_gtod_data.monotonic_time.tv_sec++;
+ 	}
+ 
+-        write_sequnlock_irqrestore(&fsyscall_gtod_data.lock, flags);
++	write_seqcount_end(&fsyscall_gtod_data.seq);
+ }
+ 

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/infiniband-mellanox-ib-use-nort-irq.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -22,7 +22,7 @@
 ===================================================================
 --- linux-3.2.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
 +++ linux-3.2/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
-@@ -801,7 +801,7 @@ void ipoib_mcast_restart_task(struct wor
+@@ -806,7 +806,7 @@ void ipoib_mcast_restart_task(struct wor
  
  	ipoib_mcast_stop_thread(dev, 0);
  
@@ -31,7 +31,7 @@
  	netif_addr_lock(dev);
  	spin_lock(&priv->lock);
  
-@@ -883,7 +883,7 @@ void ipoib_mcast_restart_task(struct wor
+@@ -888,7 +888,7 @@ void ipoib_mcast_restart_task(struct wor
  
  	spin_unlock(&priv->lock);
  	netif_addr_unlock(dev);

Copied and modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch (from r18697, dists/trunk/linux-2.6/debian/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch)
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch	Fri Feb 17 02:25:49 2012	(r18697, copy source)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -138,7 +138,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/softirq.c
 +++ linux-3.2/kernel/softirq.c
-@@ -431,6 +431,13 @@ void local_bh_enable_ip(unsigned long ip
+@@ -425,6 +425,13 @@ void local_bh_enable_ip(unsigned long ip
  }
  EXPORT_SYMBOL(local_bh_enable_ip);
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/kgb-serial-hackaround.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/kgb-serial-hackaround.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/kgb-serial-hackaround.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -35,7 +35,7 @@
  
  #include <asm/io.h>
  #include <asm/irq.h>
-@@ -2848,10 +2849,14 @@ serial8250_console_write(struct console 
+@@ -2855,10 +2856,14 @@ serial8250_console_write(struct console 
  
  	touch_nmi_watchdog();
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/latency-hist.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/latency-hist.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/latency-hist.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -219,7 +219,7 @@
 ===================================================================
 --- linux-3.2.orig/include/linux/sched.h
 +++ linux-3.2/include/linux/sched.h
-@@ -1567,6 +1567,12 @@ struct task_struct {
+@@ -1570,6 +1570,12 @@ struct task_struct {
  	unsigned long trace;
  	/* bitmask and counter of trace recursion */
  	unsigned long trace_recursion;
@@ -353,7 +353,7 @@
  
  /*
   * The timer bases:
-@@ -1234,6 +1235,8 @@ static void __run_hrtimer(struct hrtimer
+@@ -1236,6 +1237,8 @@ static void __run_hrtimer(struct hrtimer
  
  #ifdef CONFIG_HIGH_RES_TIMERS
  
@@ -362,7 +362,7 @@
  /*
   * High resolution timer interrupt
   * Called with interrupts disabled
-@@ -1278,6 +1281,14 @@ retry:
+@@ -1280,6 +1283,14 @@ retry:
  
  			timer = container_of(node, struct hrtimer, node);
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/lglocks-rt.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/lglocks-rt.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/lglocks-rt.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -4,24 +4,23 @@
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---
- include/linux/lglock.h |  100 +++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 100 insertions(+)
+ include/linux/lglock.h |   99 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 99 insertions(+)
 
 Index: linux-3.2/include/linux/lglock.h
 ===================================================================
 --- linux-3.2.orig/include/linux/lglock.h
 +++ linux-3.2/include/linux/lglock.h
-@@ -70,6 +70,9 @@
+@@ -71,6 +71,8 @@
   extern void name##_global_lock_online(void);				\
   extern void name##_global_unlock_online(void);				\
  
-+
 +#ifndef CONFIG_PREEMPT_RT_FULL
 +
  #define DEFINE_LGLOCK(name)						\
  									\
-  DEFINE_PER_CPU(arch_spinlock_t, name##_lock);				\
-@@ -169,4 +172,101 @@
+  DEFINE_SPINLOCK(name##_cpu_lock);					\
+@@ -197,4 +199,101 @@
  	preempt_enable();						\
   }									\
   EXPORT_SYMBOL(name##_global_unlock);

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/localversion.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/localversion.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/localversion.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -14,4 +14,4 @@
 --- /dev/null
 +++ linux-3.2/localversion-rt
 @@ -0,0 +1 @@
-+-rt8
++-rt15

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/lockdep-no-softirq-accounting-on-rt.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/lockdep-no-softirq-accounting-on-rt.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/lockdep-no-softirq-accounting-on-rt.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -42,7 +42,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/lockdep.c
 +++ linux-3.2/kernel/lockdep.c
-@@ -3488,6 +3488,7 @@ static void check_flags(unsigned long fl
+@@ -3494,6 +3494,7 @@ static void check_flags(unsigned long fl
  		}
  	}
  
@@ -50,7 +50,7 @@
  	/*
  	 * We dont accurately track softirq state in e.g.
  	 * hardirq contexts (such as on 4KSTACKS), so only
-@@ -3502,6 +3503,7 @@ static void check_flags(unsigned long fl
+@@ -3508,6 +3509,7 @@ static void check_flags(unsigned long fl
  			DEBUG_LOCKS_WARN_ON(!current->softirqs_enabled);
  		}
  	}

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/locking-various-init-fixes.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/locking-various-init-fixes.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/locking-various-init-fixes.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -46,7 +46,7 @@
 ===================================================================
 --- linux-3.2.orig/drivers/usb/gadget/ci13xxx_udc.c
 +++ linux-3.2/drivers/usb/gadget/ci13xxx_udc.c
-@@ -816,7 +816,7 @@ static struct {
+@@ -819,7 +819,7 @@ static struct {
  } dbg_data = {
  	.idx = 0,
  	.tty = 0,

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/md-raid5-percpu-handling-rt-aware.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/md-raid5-percpu-handling-rt-aware.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/md-raid5-percpu-handling-rt-aware.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -43,7 +43,7 @@
  }
  
  #ifdef CONFIG_MULTICORE_RAID456
-@@ -4531,6 +4533,7 @@ static int raid5_alloc_percpu(struct r5c
+@@ -4539,6 +4541,7 @@ static int raid5_alloc_percpu(struct r5c
  			break;
  		}
  		per_cpu_ptr(conf->percpu, cpu)->scribble = scribble;

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-page_alloc-reduce-lock-sections-further.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -174,7 +174,7 @@
  	}
  
  out:
-@@ -3696,12 +3733,14 @@ static int __zone_pcp_update(void *data)
+@@ -3702,12 +3739,14 @@ static int __zone_pcp_update(void *data)
  	for_each_possible_cpu(cpu) {
  		struct per_cpu_pageset *pset;
  		struct per_cpu_pages *pcp;

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-page_alloc-rt-friendly-per-cpu-pages.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -173,7 +173,7 @@
  	return NULL;
  }
  
-@@ -3678,10 +3700,10 @@ static int __zone_pcp_update(void *data)
+@@ -3684,10 +3706,10 @@ static int __zone_pcp_update(void *data)
  		pset = per_cpu_ptr(zone->pageset, cpu);
  		pcp = &pset->pcp;
  
@@ -186,7 +186,7 @@
  	}
  	return 0;
  }
-@@ -5047,6 +5069,7 @@ static int page_alloc_cpu_notify(struct 
+@@ -5053,6 +5075,7 @@ static int page_alloc_cpu_notify(struct 
  void __init page_alloc_init(void)
  {
  	hotcpu_notifier(page_alloc_cpu_notify, 0);

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-prepare-pf-disable-discoupling.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-prepare-pf-disable-discoupling.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-prepare-pf-disable-discoupling.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -19,7 +19,7 @@
 ===================================================================
 --- linux-3.2.orig/include/linux/sched.h
 +++ linux-3.2/include/linux/sched.h
-@@ -1431,6 +1431,7 @@ struct task_struct {
+@@ -1435,6 +1435,7 @@ struct task_struct {
  	/* mutex deadlock detection */
  	struct mutex_waiter *blocked_on;
  #endif
@@ -76,7 +76,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/fork.c
 +++ linux-3.2/kernel/fork.c
-@@ -1198,6 +1198,7 @@ static struct task_struct *copy_process(
+@@ -1193,6 +1193,7 @@ static struct task_struct *copy_process(
  	p->hardirq_context = 0;
  	p->softirq_context = 0;
  #endif

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-shrink-the-page-frame-to-rt-size.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-shrink-the-page-frame-to-rt-size.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-shrink-the-page-frame-to-rt-size.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -21,7 +21,7 @@
 ===================================================================
 --- linux-3.2.orig/include/linux/mm.h
 +++ linux-3.2/include/linux/mm.h
-@@ -1194,27 +1194,59 @@ static inline pmd_t *pmd_alloc(struct mm
+@@ -1195,27 +1195,59 @@ static inline pmd_t *pmd_alloc(struct mm
   * overflow into the next struct page (as it might with DEBUG_SPINLOCK).
   * When freeing, reset page->mapping so free_pages_check won't complain.
   */

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-slab-move-debug-out.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-slab-move-debug-out.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/mm-slab-move-debug-out.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -11,7 +11,7 @@
 ===================================================================
 --- linux-3.2.orig/mm/slab.c
 +++ linux-3.2/mm/slab.c
-@@ -3844,10 +3844,10 @@ void kmem_cache_free(struct kmem_cache *
+@@ -3851,10 +3851,10 @@ void kmem_cache_free(struct kmem_cache *
  {
  	unsigned long flags;
  
@@ -23,7 +23,7 @@
  	__cache_free(cachep, objp, __builtin_return_address(0));
  	local_irq_restore(flags);
  
-@@ -3873,11 +3873,11 @@ void kfree(const void *objp)
+@@ -3880,11 +3880,11 @@ void kfree(const void *objp)
  
  	if (unlikely(ZERO_OR_NULL_PTR(objp)))
  		return;

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-flip-lock-dep-thingy.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-flip-lock-dep-thingy.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-flip-lock-dep-thingy.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -97,7 +97,7 @@
 ===================================================================
 --- linux-3.2.orig/net/core/sock.c
 +++ linux-3.2/net/core/sock.c
-@@ -2035,12 +2035,11 @@ void lock_sock_nested(struct sock *sk, i
+@@ -2031,12 +2031,11 @@ void lock_sock_nested(struct sock *sk, i
  	if (sk->sk_lock.owned)
  		__lock_sock(sk);
  	sk->sk_lock.owned = 1;

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-ipv4-route-use-locks-on-up-rt.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-ipv4-route-use-locks-on-up-rt.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-ipv4-route-use-locks-on-up-rt.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -11,7 +11,7 @@
 ===================================================================
 --- linux-3.2.orig/net/ipv4/route.c
 +++ linux-3.2/net/ipv4/route.c
-@@ -245,7 +245,7 @@ struct rt_hash_bucket {
+@@ -251,7 +251,7 @@ struct rt_hash_bucket {
  };
  
  #if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK) || \

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-netif_rx_ni-migrate-disable.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-netif_rx_ni-migrate-disable.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-netif_rx_ni-migrate-disable.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -11,7 +11,7 @@
 ===================================================================
 --- linux-3.2.orig/net/core/dev.c
 +++ linux-3.2/net/core/dev.c
-@@ -3033,11 +3033,11 @@ int netif_rx_ni(struct sk_buff *skb)
+@@ -3034,11 +3034,11 @@ int netif_rx_ni(struct sk_buff *skb)
  {
  	int err;
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-tx-action-avoid-livelock-on-rt.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-tx-action-avoid-livelock-on-rt.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-tx-action-avoid-livelock-on-rt.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -46,7 +46,7 @@
 ===================================================================
 --- linux-3.2.orig/net/core/dev.c
 +++ linux-3.2/net/core/dev.c
-@@ -3043,6 +3043,36 @@ int netif_rx_ni(struct sk_buff *skb)
+@@ -3044,6 +3044,36 @@ int netif_rx_ni(struct sk_buff *skb)
  }
  EXPORT_SYMBOL(netif_rx_ni);
  
@@ -83,7 +83,7 @@
  static void net_tx_action(struct softirq_action *h)
  {
  	struct softnet_data *sd = &__get_cpu_var(softnet_data);
-@@ -3081,7 +3111,7 @@ static void net_tx_action(struct softirq
+@@ -3082,7 +3112,7 @@ static void net_tx_action(struct softirq
  			head = head->next_sched;
  
  			root_lock = qdisc_lock(q);

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-u64-stat-protect-seqcount.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/net-u64-stat-protect-seqcount.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-u64-stat-protect-seqcount.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/net-u64-stat-protect-seqcount.patch)
@@ -0,0 +1,34 @@
+Subject: net: u64_stat: Protect seqcount
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Thu, 01 Mar 2012 16:16:02 +0100
+
+On RT we must prevent that the writer gets preempted inside the write
+section. Otherwise a preempting reader might spin forever.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+
+---
+ include/linux/u64_stats_sync.h |    2 ++
+ 1 file changed, 2 insertions(+)
+
+Index: linux-3.2/include/linux/u64_stats_sync.h
+===================================================================
+--- linux-3.2.orig/include/linux/u64_stats_sync.h
++++ linux-3.2/include/linux/u64_stats_sync.h
+@@ -70,6 +70,7 @@ struct u64_stats_sync {
+ static inline void u64_stats_update_begin(struct u64_stats_sync *syncp)
+ {
+ #if BITS_PER_LONG==32 && defined(CONFIG_SMP)
++	preempt_disable_rt();
+ 	write_seqcount_begin(&syncp->seq);
+ #endif
+ }
+@@ -78,6 +79,7 @@ static inline void u64_stats_update_end(
+ {
+ #if BITS_PER_LONG==32 && defined(CONFIG_SMP)
+ 	write_seqcount_end(&syncp->seq);
++	preempt_enable_rt();
+ #endif
+ }
+ 

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-wireless-warn-nort.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-wireless-warn-nort.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/net-wireless-warn-nort.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -11,7 +11,7 @@
 ===================================================================
 --- linux-3.2.orig/net/mac80211/rx.c
 +++ linux-3.2/net/mac80211/rx.c
-@@ -2949,7 +2949,7 @@ void ieee80211_rx(struct ieee80211_hw *h
+@@ -2958,7 +2958,7 @@ void ieee80211_rx(struct ieee80211_hw *h
  	struct ieee80211_supported_band *sband;
  	struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/of-convert-devtree-lock.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/of-convert-devtree-lock.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/of-convert-devtree-lock.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -13,7 +13,7 @@
 ===================================================================
 --- linux-3.2.orig/arch/sparc/kernel/prom_common.c
 +++ linux-3.2/arch/sparc/kernel/prom_common.c
-@@ -67,7 +67,7 @@ int of_set_property(struct device_node *
+@@ -65,7 +65,7 @@ int of_set_property(struct device_node *
  	err = -ENODEV;
  
  	mutex_lock(&of_set_property_mutex);
@@ -22,7 +22,7 @@
  	prevp = &dp->properties;
  	while (*prevp) {
  		struct property *prop = *prevp;
-@@ -94,7 +94,7 @@ int of_set_property(struct device_node *
+@@ -92,7 +92,7 @@ int of_set_property(struct device_node *
  		}
  		prevp = &(*prevp)->next;
  	}

Copied and modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/oleg-signal-rt-fix.patch (from r18697, dists/trunk/linux-2.6/debian/patches/features/all/rt/oleg-signal-rt-fix.patch)
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/features/all/rt/oleg-signal-rt-fix.patch	Fri Feb 17 02:25:49 2012	(r18697, copy source)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/oleg-signal-rt-fix.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -29,15 +29,40 @@
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---
 
- arch/x86/kernel/signal.c |    9 +++++++++
- include/linux/sched.h    |    4 ++++
- kernel/signal.c          |   31 +++++++++++++++++++++++++++++--
- 3 files changed, 42 insertions(+), 2 deletions(-)
+ arch/x86/include/asm/signal.h |   13 +++++++++++++
+ arch/x86/kernel/signal.c      |    9 +++++++++
+ include/linux/sched.h         |    4 ++++
+ kernel/signal.c               |   37 +++++++++++++++++++++++++++++++++++--
+ 4 files changed, 61 insertions(+), 2 deletions(-)
 
-Index: linux-rt.git/arch/x86/kernel/signal.c
+Index: linux-3.2/arch/x86/include/asm/signal.h
 ===================================================================
---- linux-rt.git.orig/arch/x86/kernel/signal.c
-+++ linux-rt.git/arch/x86/kernel/signal.c
+--- linux-3.2.orig/arch/x86/include/asm/signal.h
++++ linux-3.2/arch/x86/include/asm/signal.h
+@@ -31,6 +31,19 @@ typedef struct {
+ 	unsigned long sig[_NSIG_WORDS];
+ } sigset_t;
+ 
++/*
++ * Because some traps use the IST stack, we must keep
++ * preemption disabled while calling do_trap(), but do_trap()
++ * may call force_sig_info() which will grab the signal spin_locks
++ * for the task, which in PREEMPT_RT_FULL are mutexes.
++ * By defining ARCH_RT_DELAYS_SIGNAL_SEND the force_sig_info() will
++ * set TIF_NOTIFY_RESUME and set up the signal to be sent on exit
++ * of the trap.
++ */
++#if defined(CONFIG_PREEMPT_RT_FULL) && defined(CONFIG_X86_64)
++#define ARCH_RT_DELAYS_SIGNAL_SEND
++#endif
++
+ #else
+ /* Here we must cater to libcs that poke about in kernel headers.  */
+ 
+Index: linux-3.2/arch/x86/kernel/signal.c
+===================================================================
+--- linux-3.2.orig/arch/x86/kernel/signal.c
++++ linux-3.2/arch/x86/kernel/signal.c
 @@ -820,6 +820,15 @@ do_notify_resume(struct pt_regs *regs, v
  		mce_notify_process();
  #endif /* CONFIG_X86_64 && CONFIG_X86_MCE */
@@ -54,11 +79,11 @@
  	/* deal with pending signal delivery */
  	if (thread_info_flags & _TIF_SIGPENDING)
  		do_signal(regs);
-Index: linux-rt.git/include/linux/sched.h
+Index: linux-3.2/include/linux/sched.h
 ===================================================================
---- linux-rt.git.orig/include/linux/sched.h
-+++ linux-rt.git/include/linux/sched.h
-@@ -1405,6 +1405,10 @@ struct task_struct {
+--- linux-3.2.orig/include/linux/sched.h
++++ linux-3.2/include/linux/sched.h
+@@ -1392,6 +1392,10 @@ struct task_struct {
  	sigset_t blocked, real_blocked;
  	sigset_t saved_sigmask;	/* restored if set_restore_sigmask() was used */
  	struct sigpending pending;
@@ -69,10 +94,10 @@
  
  	unsigned long sas_ss_sp;
  	size_t sas_ss_size;
-Index: linux-rt.git/kernel/signal.c
+Index: linux-3.2/kernel/signal.c
 ===================================================================
---- linux-rt.git.orig/kernel/signal.c
-+++ linux-rt.git/kernel/signal.c
+--- linux-3.2.orig/kernel/signal.c
++++ linux-3.2/kernel/signal.c
 @@ -1273,8 +1273,8 @@ int do_send_sig_info(int sig, struct sig
   * We don't want to have recursive SIGSEGV's etc, for example,
   * that is why we also clear SIGNAL_UNKILLABLE.
@@ -124,27 +149,3 @@
  /*
   * Nuke all other threads in the group.
   */
-Index: linux-rt.git/arch/x86/include/asm/signal.h
-===================================================================
---- linux-rt.git.orig/arch/x86/include/asm/signal.h
-+++ linux-rt.git/arch/x86/include/asm/signal.h
-@@ -31,6 +31,19 @@ typedef struct {
- 	unsigned long sig[_NSIG_WORDS];
- } sigset_t;
- 
-+/*
-+ * Because some traps use the IST stack, we must keep
-+ * preemption disabled while calling do_trap(), but do_trap()
-+ * may call force_sig_info() which will grab the signal spin_locks
-+ * for the task, which in PREEMPT_RT_FULL are mutexes.
-+ * By defining ARCH_RT_DELAYS_SIGNAL_SEND the force_sig_info() will
-+ * set TIF_NOTIFY_RESUME and set up the signal to be sent on exit
-+ * of the trap.
-+ */
-+#if defined(CONFIG_PREEMPT_RT_FULL) && defined(CONFIG_X86_64)
-+#define ARCH_RT_DELAYS_SIGNAL_SEND
-+#endif
-+
- #else
- /* Here we must cater to libcs that poke about in kernel headers.  */
- 

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/panic-disable-random-on-rt.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/panic-disable-random-on-rt.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/panic-disable-random-on-rt.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -8,7 +8,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/panic.c
 +++ linux-3.2/kernel/panic.c
-@@ -334,9 +334,11 @@ static u64 oops_id;
+@@ -343,9 +343,11 @@ static u64 oops_id;
  
  static int init_oops_id(void)
  {

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/patch-to-introduce-rcu-bh-qs-where-safe-from-softirq.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -137,7 +137,7 @@
  
  void __init softirq_early_init(void)
  {
-@@ -448,7 +454,7 @@ EXPORT_SYMBOL(in_serving_softirq);
+@@ -455,7 +461,7 @@ EXPORT_SYMBOL(in_serving_softirq);
   * Called with bh and local interrupts disabled. For full RT cpu must
   * be pinned.
   */
@@ -146,7 +146,7 @@
  {
  	u32 pending = local_softirq_pending();
  	int cpu = smp_processor_id();
-@@ -462,7 +468,7 @@ static void __do_softirq(void)
+@@ -469,7 +475,7 @@ static void __do_softirq(void)
  
  	lockdep_softirq_enter();
  
@@ -155,7 +155,7 @@
  
  	pending = local_softirq_pending();
  	if (pending)
-@@ -501,7 +507,7 @@ static int __thread_do_softirq(int cpu)
+@@ -508,7 +514,7 @@ static int __thread_do_softirq(int cpu)
  	 * schedule!
  	 */
  	if (local_softirq_pending())

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/pci-access-use-__wake_up_all_locked.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/pci-access-use-__wake_up_all_locked.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/pci-access-use-__wake_up_all_locked.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -8,11 +8,15 @@
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 Cc: stable-rt at vger.kernel.org
-Index: linux-rt/drivers/pci/access.c
+---
+ drivers/pci/access.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: linux-3.2/drivers/pci/access.c
 ===================================================================
---- linux-rt.orig/drivers/pci/access.c
-+++ linux-rt/drivers/pci/access.c
-@@ -441,7 +441,7 @@ void pci_unblock_user_cfg_access(struct
+--- linux-3.2.orig/drivers/pci/access.c
++++ linux-3.2/drivers/pci/access.c
+@@ -441,7 +441,7 @@ void pci_unblock_user_cfg_access(struct 
  	WARN_ON(!dev->block_ucfg_access);
  
  	dev->block_ucfg_access = 0;

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-frob-hrtimer.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-frob-hrtimer.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-frob-hrtimer.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -82,7 +82,7 @@
  	}
  
  	return 0;
-@@ -1044,8 +1031,19 @@ int __hrtimer_start_range_ns(struct hrti
+@@ -1046,8 +1033,19 @@ int __hrtimer_start_range_ns(struct hrti
  	 *
  	 * XXX send_remote_softirq() ?
  	 */

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable-2.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable-2.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable-2.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -77,7 +77,7 @@
  	cpumask_t cpus_allowed;
  
  #ifdef CONFIG_PREEMPT_RCU
-@@ -2678,11 +2680,22 @@ static inline void set_task_cpu(struct t
+@@ -2681,11 +2683,22 @@ static inline void set_task_cpu(struct t
  
  #endif /* CONFIG_SMP */
  
@@ -124,7 +124,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/sched.c
 +++ linux-3.2/kernel/sched.c
-@@ -6209,7 +6209,7 @@ static inline void sched_init_granularit
+@@ -6224,7 +6224,7 @@ static inline void sched_init_granularit
  #ifdef CONFIG_SMP
  void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask)
  {
@@ -133,7 +133,7 @@
  		if (p->sched_class && p->sched_class->set_cpus_allowed)
  			p->sched_class->set_cpus_allowed(p, new_mask);
  		p->rt.nr_cpus_allowed = cpumask_weight(new_mask);
-@@ -6265,7 +6265,7 @@ int set_cpus_allowed_ptr(struct task_str
+@@ -6280,7 +6280,7 @@ int set_cpus_allowed_ptr(struct task_str
  	do_set_cpus_allowed(p, new_mask);
  
  	/* Can the task run on the task's current CPU? If so, we're done */
@@ -142,7 +142,7 @@
  		goto out;
  
  	dest_cpu = cpumask_any_and(cpu_active_mask, new_mask);
-@@ -6284,6 +6284,7 @@ out:
+@@ -6299,6 +6299,7 @@ out:
  }
  EXPORT_SYMBOL_GPL(set_cpus_allowed_ptr);
  
@@ -150,7 +150,7 @@
  void migrate_disable(void)
  {
  	struct task_struct *p = current;
-@@ -6376,6 +6377,7 @@ void migrate_enable(void)
+@@ -6391,6 +6392,7 @@ void migrate_enable(void)
  	preempt_enable();
  }
  EXPORT_SYMBOL_GPL(migrate_enable);

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-frob-migrate_disable.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -15,7 +15,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/sched.c
 +++ linux-3.2/kernel/sched.c
-@@ -6304,7 +6304,19 @@ void migrate_disable(void)
+@@ -6319,7 +6319,19 @@ void migrate_disable(void)
  		preempt_enable();
  		return;
  	}
@@ -36,7 +36,7 @@
  	p->migrate_disable = 1;
  	mask = tsk_cpus_allowed(p);
  
-@@ -6315,7 +6327,7 @@ void migrate_disable(void)
+@@ -6330,7 +6342,7 @@ void migrate_disable(void)
  			p->sched_class->set_cpus_allowed(p, mask);
  		p->rt.nr_cpus_allowed = cpumask_weight(mask);
  	}
@@ -45,7 +45,7 @@
  	preempt_enable();
  }
  EXPORT_SYMBOL_GPL(migrate_disable);
-@@ -6343,7 +6355,11 @@ void migrate_enable(void)
+@@ -6358,7 +6370,11 @@ void migrate_enable(void)
  		return;
  	}
  
@@ -58,7 +58,7 @@
  	p->migrate_disable = 0;
  	mask = tsk_cpus_allowed(p);
  
-@@ -6355,7 +6371,7 @@ void migrate_enable(void)
+@@ -6370,7 +6386,7 @@ void migrate_enable(void)
  		p->rt.nr_cpus_allowed = cpumask_weight(mask);
  	}
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-frob-pagefault_disable.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-frob-pagefault_disable.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-frob-pagefault_disable.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -346,7 +346,7 @@
  
  #include <asm/processor.h>
  
-@@ -1431,7 +1432,9 @@ struct task_struct {
+@@ -1435,7 +1436,9 @@ struct task_struct {
  	/* mutex deadlock detection */
  	struct mutex_waiter *blocked_on;
  #endif
@@ -356,7 +356,7 @@
  #ifdef CONFIG_TRACE_IRQFLAGS
  	unsigned int irq_events;
  	unsigned long hardirq_enable_ip;
-@@ -1581,6 +1584,17 @@ struct task_struct {
+@@ -1584,6 +1587,17 @@ struct task_struct {
  /* Future-safe accessor for struct task_struct's cpus_allowed. */
  #define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed)
  
@@ -378,7 +378,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/fork.c
 +++ linux-3.2/kernel/fork.c
-@@ -1198,7 +1198,9 @@ static struct task_struct *copy_process(
+@@ -1193,7 +1193,9 @@ static struct task_struct *copy_process(
  	p->hardirq_context = 0;
  	p->softirq_context = 0;
  #endif

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-re-_3_0-rt4.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-re-_3_0-rt4.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/peter_zijlstra-re-_3_0-rt4.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -32,7 +32,7 @@
  
  #include <asm/pgtable.h>
  #include <asm/system.h>
-@@ -350,6 +351,41 @@ __switch_to(struct task_struct *prev_p, 
+@@ -339,6 +340,41 @@ __switch_to(struct task_struct *prev_p, 
  		     task_thread_info(next_p)->flags & _TIF_WORK_CTXSW_NEXT))
  		__switch_to_xtra(prev_p, next_p, tss);
  
@@ -71,9 +71,9 @@
 +	}
 +#endif
 +
- 	/* If we're going to preload the fpu context, make sure clts
- 	   is run while we're batching the cpu state updates. */
- 	if (preload_fpu)
+ 	/*
+ 	 * Leave lazy mode, flushing any hypercalls made here.
+ 	 * This must be done before restoring TLS segments so
 Index: linux-3.2/include/linux/sched.h
 ===================================================================
 --- linux-3.2.orig/include/linux/sched.h
@@ -86,7 +86,7 @@
  #include <asm/system.h>
  #include <asm/page.h>
  #include <asm/ptrace.h>
-@@ -1600,6 +1601,10 @@ struct task_struct {
+@@ -1603,6 +1604,10 @@ struct task_struct {
  	struct rcu_head put_rcu;
  	int softirq_nestcnt;
  #endif

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -73,7 +73,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/fork.c
 +++ linux-3.2/kernel/fork.c
-@@ -1028,6 +1028,9 @@ void mm_init_owner(struct mm_struct *mm,
+@@ -1023,6 +1023,9 @@ void mm_init_owner(struct mm_struct *mm,
   */
  static void posix_cpu_timers_init(struct task_struct *tsk)
  {

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/preempt-mark-legitimated-no-resched-sites.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/preempt-mark-legitimated-no-resched-sites.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/preempt-mark-legitimated-no-resched-sites.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -87,7 +87,7 @@
  	schedule();
  	preempt_disable();
  }
-@@ -5692,7 +5692,7 @@ SYSCALL_DEFINE0(sched_yield)
+@@ -5705,7 +5705,7 @@ SYSCALL_DEFINE0(sched_yield)
  	__release(rq->lock);
  	spin_release(&rq->lock.dep_map, 1, _THIS_IP_);
  	do_raw_spin_unlock(&rq->lock);

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/printk-disable-migration-instead-of-preemption.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/printk-disable-migration-instead-of-preemption.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/printk-disable-migration-instead-of-preemption.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -40,7 +40,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/printk.c
 +++ linux-3.2/kernel/printk.c
-@@ -902,7 +902,7 @@ asmlinkage int vprintk(const char *fmt, 
+@@ -901,7 +901,7 @@ asmlinkage int vprintk(const char *fmt, 
  	boot_delay_msec();
  	printk_delay();
  
@@ -49,7 +49,7 @@
  	/* This stops the holder of console_sem just where we want him */
  	raw_local_irq_save(flags);
  	this_cpu = smp_processor_id();
-@@ -1033,7 +1033,7 @@ asmlinkage int vprintk(const char *fmt, 
+@@ -1032,7 +1032,7 @@ asmlinkage int vprintk(const char *fmt, 
  out_restore_irqs:
  	raw_local_irq_restore(flags);
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/re-preempt_rt_full-arm-coredump-fails-for-cpu-3e-3d-4.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -37,7 +37,7 @@
 ===================================================================
 --- linux-3.2.orig/arch/arm/kernel/process.c
 +++ linux-3.2/arch/arm/kernel/process.c
-@@ -486,6 +486,31 @@ unsigned long arch_randomize_brk(struct 
+@@ -489,6 +489,31 @@ unsigned long arch_randomize_brk(struct 
  }
  
  #ifdef CONFIG_MMU

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch)
@@ -0,0 +1,53 @@
+Subject: futex/rt: Fix possible lockup when taking pi_lock in proxy handler
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Thu, 01 Mar 2012 13:55:29 -0500
+
+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 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/kernel/rtmutex.c b/kernel/rtmutex.c
+index 9850dc0..b525158 100644
+--- a/kernel/rtmutex.c
++++ b/kernel/rtmutex.c
+@@ -1373,14 +1373,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
+ 
+ 	ret = task_blocks_on_rt_mutex(lock, waiter, task, detect_deadlock);
+-- 
+1.7.3.4
+
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
+the body of a message to majordomo at vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+
+

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/rfc-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/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch)
@@ -0,0 +1,118 @@
+Subject: lglock/rt: Use non-rt for_each_cpu() in -rt code
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Thu, 01 Mar 2012 13:55:30 -0500
+
+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 files 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);				\
+ 									\
+-- 
+1.7.3.4
+
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
+the body of a message to majordomo at vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+
+

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch)
@@ -0,0 +1,33 @@
+Subject: ring-buffer/rt: Check for irqs disabled before grabbing reader lock
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Thu, 01 Mar 2012 13:55:32 -0500
+
+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(-)
+
+Index: linux-3.2/kernel/trace/ring_buffer.c
+===================================================================
+--- linux-3.2.orig/kernel/trace/ring_buffer.c
++++ linux-3.2/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/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch)
@@ -0,0 +1,58 @@
+Subject: sched/rt: Fix wait_task_interactive() to test rt_spin_lock state
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Thu, 01 Mar 2012 13:55:33 -0500
+
+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 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/kernel/sched.c b/kernel/sched.c
+index 81b340d..1cc706d 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);
+ 
+-- 
+1.7.3.4
+
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
+the body of a message to majordomo at vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+
+

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rfc-timer-fix-hotplug-for-rt.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/rfc-timer-fix-hotplug-for-rt.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rfc-timer-fix-hotplug-for-rt.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/rfc-timer-fix-hotplug-for-rt.patch)
@@ -0,0 +1,72 @@
+Subject: timer: Fix hotplug for -rt
+From: Steven Rostedt <rostedt at goodmis.org>
+Date: Thu, 01 Mar 2012 13:55:28 -0500
+
+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(-)
+
+Index: linux-3.2/kernel/timer.c
+===================================================================
+--- linux-3.2.orig/kernel/timer.c
++++ linux-3.2/kernel/timer.c
+@@ -1743,21 +1743,17 @@ static void __cpuinit migrate_timers(int
+ {
+ 	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);
+ 
+@@ -1771,10 +1767,8 @@ static void __cpuinit migrate_timers(int
+ 	}
+ 
+ 	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 */
+ 

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-mutex-add-sleeping-spinlocks-support.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-mutex-add-sleeping-spinlocks-support.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-mutex-add-sleeping-spinlocks-support.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -76,7 +76,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/futex.c
 +++ linux-3.2/kernel/futex.c
-@@ -2286,8 +2286,7 @@ static int futex_wait_requeue_pi(u32 __u
+@@ -2298,8 +2298,7 @@ static int futex_wait_requeue_pi(u32 __u
  	 * The waiter is allocated on our stack, manipulated by the requeue
  	 * code while we sleep on uaddr.
  	 */
@@ -103,7 +103,7 @@
   *  See Documentation/rt-mutex-design.txt for details.
   */
  #include <linux/spinlock.h>
-@@ -95,6 +101,12 @@ static inline void mark_rt_mutex_waiters
+@@ -96,6 +102,12 @@ static inline void mark_rt_mutex_waiters
  }
  #endif
  
@@ -116,7 +116,7 @@
  /*
   * Calculate task priority from the waiter list priority
   *
-@@ -141,6 +153,14 @@ static void rt_mutex_adjust_prio(struct 
+@@ -142,6 +154,14 @@ static void rt_mutex_adjust_prio(struct 
  	raw_spin_unlock_irqrestore(&task->pi_lock, flags);
  }
  
@@ -131,7 +131,7 @@
  /*
   * Max number of times we'll walk the boosting chain:
   */
-@@ -252,13 +272,15 @@ static int rt_mutex_adjust_prio_chain(st
+@@ -253,13 +273,15 @@ static int rt_mutex_adjust_prio_chain(st
  	/* Release the task */
  	raw_spin_unlock_irqrestore(&task->pi_lock, flags);
  	if (!rt_mutex_owner(lock)) {
@@ -150,7 +150,7 @@
  		raw_spin_unlock(&lock->wait_lock);
  		goto out_put_task;
  	}
-@@ -303,6 +325,25 @@ static int rt_mutex_adjust_prio_chain(st
+@@ -304,6 +326,25 @@ static int rt_mutex_adjust_prio_chain(st
  	return ret;
  }
  
@@ -176,7 +176,7 @@
  /*
   * Try to take an rt-mutex
   *
-@@ -312,8 +353,9 @@ static int rt_mutex_adjust_prio_chain(st
+@@ -313,8 +354,9 @@ static int rt_mutex_adjust_prio_chain(st
   * @task:   the task which wants to acquire the lock
   * @waiter: the waiter that is queued to the lock's wait list. (could be NULL)
   */
@@ -188,7 +188,7 @@
  {
  	/*
  	 * We have to be careful here if the atomic speedups are
-@@ -346,12 +388,14 @@ static int try_to_take_rt_mutex(struct r
+@@ -347,12 +389,14 @@ static int try_to_take_rt_mutex(struct r
  	 * 3) it is top waiter
  	 */
  	if (rt_mutex_has_waiters(lock)) {
@@ -207,7 +207,7 @@
  	if (waiter || rt_mutex_has_waiters(lock)) {
  		unsigned long flags;
  		struct rt_mutex_waiter *top;
-@@ -376,7 +420,6 @@ static int try_to_take_rt_mutex(struct r
+@@ -377,7 +421,6 @@ static int try_to_take_rt_mutex(struct r
  		raw_spin_unlock_irqrestore(&task->pi_lock, flags);
  	}
  
@@ -215,7 +215,7 @@
  	debug_rt_mutex_lock(lock);
  
  	rt_mutex_set_owner(lock, task);
-@@ -386,6 +429,13 @@ static int try_to_take_rt_mutex(struct r
+@@ -387,6 +430,13 @@ static int try_to_take_rt_mutex(struct r
  	return 1;
  }
  
@@ -229,7 +229,7 @@
  /*
   * Task blocks on lock.
   *
-@@ -500,7 +550,7 @@ static void wakeup_next_waiter(struct rt
+@@ -501,7 +551,7 @@ static void wakeup_next_waiter(struct rt
  
  	raw_spin_unlock_irqrestore(&current->pi_lock, flags);
  
@@ -238,7 +238,7 @@
  }
  
  /*
-@@ -579,18 +629,315 @@ void rt_mutex_adjust_pi(struct task_stru
+@@ -580,18 +630,315 @@ void rt_mutex_adjust_pi(struct task_stru
  		return;
  	}
  
@@ -557,7 +557,7 @@
   * @timeout:		 the pre-initialized and started timer, or NULL for none
   * @waiter:		 the pre-initialized rt_mutex_waiter
   *
-@@ -654,9 +1001,10 @@ rt_mutex_slowlock(struct rt_mutex *lock,
+@@ -655,9 +1002,10 @@ rt_mutex_slowlock(struct rt_mutex *lock,
  	struct rt_mutex_waiter waiter;
  	int ret = 0;
  
@@ -569,7 +569,7 @@
  
  	/* Try to acquire the lock again: */
  	if (try_to_take_rt_mutex(lock, current, NULL)) {
-@@ -709,6 +1057,7 @@ rt_mutex_slowtrylock(struct rt_mutex *lo
+@@ -710,6 +1058,7 @@ rt_mutex_slowtrylock(struct rt_mutex *lo
  	int ret = 0;
  
  	raw_spin_lock(&lock->wait_lock);
@@ -577,7 +577,7 @@
  
  	if (likely(rt_mutex_owner(lock) != current)) {
  
-@@ -941,7 +1290,6 @@ EXPORT_SYMBOL_GPL(rt_mutex_destroy);
+@@ -942,7 +1291,6 @@ EXPORT_SYMBOL_GPL(rt_mutex_destroy);
  void __rt_mutex_init(struct rt_mutex *lock, const char *name)
  {
  	lock->owner = NULL;
@@ -585,7 +585,7 @@
  	plist_head_init(&lock->wait_list);
  
  	debug_rt_mutex_init(lock, name);
-@@ -961,7 +1309,7 @@ EXPORT_SYMBOL_GPL(__rt_mutex_init);
+@@ -962,7 +1310,7 @@ EXPORT_SYMBOL_GPL(__rt_mutex_init);
  void rt_mutex_init_proxy_locked(struct rt_mutex *lock,
  				struct task_struct *proxy_owner)
  {
@@ -606,7 +606,7 @@
  #ifdef CONFIG_DEBUG_RT_MUTEXES
  	unsigned long		ip;
  	struct pid		*deadlock_task_pid;
-@@ -125,4 +126,12 @@ extern int rt_mutex_finish_proxy_lock(st
+@@ -126,4 +127,12 @@ extern int rt_mutex_finish_proxy_lock(st
  # include "rtmutex.h"
  #endif
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-rcutree-warn-fix.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-rcutree-warn-fix.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-rcutree-warn-fix.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -17,10 +17,10 @@
  kernel/rcutree.h |    1 -
  2 files changed, 2 insertions(+), 1 deletion(-)
 
-Index: tip/kernel/rcutree.c
+Index: linux-3.2/kernel/rcutree.c
 ===================================================================
---- tip.orig/kernel/rcutree.c
-+++ tip/kernel/rcutree.c
+--- linux-3.2.orig/kernel/rcutree.c
++++ linux-3.2/kernel/rcutree.c
 @@ -171,6 +171,8 @@ void rcu_sched_qs(int cpu)
  }
  
@@ -30,10 +30,10 @@
  void rcu_bh_qs(int cpu)
  {
  	rcu_preempt_qs(cpu);
-Index: tip/kernel/rcutree.h
+Index: linux-3.2/kernel/rcutree.h
 ===================================================================
---- tip.orig/kernel/rcutree.h
-+++ tip/kernel/rcutree.h
+--- linux-3.2.orig/kernel/rcutree.h
++++ linux-3.2/kernel/rcutree.h
 @@ -430,7 +430,6 @@ DECLARE_PER_CPU(char, rcu_cpu_has_work);
  /* Forward declarations for rcutree_plugin.h */
  static void rcu_bootup_announce(void);

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-sched-do-not-compare-cpu-masks-in-scheduler.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -16,7 +16,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/sched.c
 +++ linux-3.2/kernel/sched.c
-@@ -4383,16 +4383,12 @@ static inline void update_migrate_disabl
+@@ -4385,16 +4385,12 @@ static inline void update_migrate_disabl
  	 */
  	mask = tsk_cpus_allowed(p);
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-sched-have-migrate_disable-ignore-bounded-threads.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-sched-have-migrate_disable-ignore-bounded-threads.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-sched-have-migrate_disable-ignore-bounded-threads.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -16,7 +16,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/sched.c
 +++ linux-3.2/kernel/sched.c
-@@ -4395,7 +4395,7 @@ void migrate_disable(void)
+@@ -4397,7 +4397,7 @@ void migrate_disable(void)
  {
  	struct task_struct *p = current;
  
@@ -25,7 +25,7 @@
  #ifdef CONFIG_SCHED_DEBUG
  		p->migrate_disable_atomic++;
  #endif
-@@ -4426,7 +4426,7 @@ void migrate_enable(void)
+@@ -4428,7 +4428,7 @@ void migrate_enable(void)
  	unsigned long flags;
  	struct rq *rq;
  
@@ -34,7 +34,7 @@
  #ifdef CONFIG_SCHED_DEBUG
  		p->migrate_disable_atomic--;
  #endif
-@@ -4447,26 +4447,21 @@ void migrate_enable(void)
+@@ -4449,26 +4449,21 @@ void migrate_enable(void)
  
  	if (unlikely(migrate_disabled_updated(p))) {
  		/*

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-sched-postpone-actual-migration-disalbe-to-schedule.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -26,7 +26,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/sched.c
 +++ linux-3.2/kernel/sched.c
-@@ -4355,6 +4355,135 @@ static inline void schedule_debug(struct
+@@ -4357,6 +4357,135 @@ static inline void schedule_debug(struct
  	schedstat_inc(this_rq(), sched_count);
  }
  
@@ -162,7 +162,7 @@
  static void put_prev_task(struct rq *rq, struct task_struct *prev)
  {
  	if (prev->on_rq || rq->skip_clock_update < 0)
-@@ -4414,6 +4543,8 @@ need_resched:
+@@ -4416,6 +4545,8 @@ need_resched:
  
  	raw_spin_lock_irq(&rq->lock);
  
@@ -171,7 +171,7 @@
  	switch_count = &prev->nivcsw;
  	if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) {
  		if (unlikely(signal_pending_state(prev->state, prev))) {
-@@ -6209,7 +6340,7 @@ static inline void sched_init_granularit
+@@ -6224,7 +6355,7 @@ static inline void sched_init_granularit
  #ifdef CONFIG_SMP
  void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask)
  {
@@ -180,7 +180,7 @@
  		if (p->sched_class && p->sched_class->set_cpus_allowed)
  			p->sched_class->set_cpus_allowed(p, new_mask);
  		p->rt.nr_cpus_allowed = cpumask_weight(new_mask);
-@@ -6284,124 +6415,6 @@ out:
+@@ -6299,124 +6430,6 @@ out:
  }
  EXPORT_SYMBOL_GPL(set_cpus_allowed_ptr);
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-serial-warn-fix.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-serial-warn-fix.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-serial-warn-fix.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -15,11 +15,11 @@
  drivers/tty/serial/8250.c |   13 ++++++++++---
  1 file changed, 10 insertions(+), 3 deletions(-)
 
-Index: tip/drivers/tty/serial/8250.c
+Index: linux-3.2/drivers/tty/serial/8250.c
 ===================================================================
---- tip.orig/drivers/tty/serial/8250.c
-+++ tip/drivers/tty/serial/8250.c
-@@ -82,7 +82,16 @@ static unsigned int skip_txen_test; /* f
+--- linux-3.2.orig/drivers/tty/serial/8250.c
++++ linux-3.2/drivers/tty/serial/8250.c
+@@ -81,7 +81,16 @@ static unsigned int skip_txen_test; /* f
  #define DEBUG_INTR(fmt...)	do { } while (0)
  #endif
  
@@ -37,7 +37,7 @@
  
  #define BOTH_EMPTY 	(UART_LSR_TEMT | UART_LSR_THRE)
  
-@@ -1632,14 +1641,12 @@ static irqreturn_t serial8250_interrupt(
+@@ -1631,14 +1640,12 @@ static irqreturn_t serial8250_interrupt(
  
  		l = l->next;
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rt-slab-fix-__do_drain-to-use-the-right-array-cache.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -42,7 +42,7 @@
 ===================================================================
 --- linux-3.2.orig/mm/slab.c
 +++ linux-3.2/mm/slab.c
-@@ -2566,7 +2566,7 @@ static void __do_drain(void *arg, unsign
+@@ -2573,7 +2573,7 @@ static void __do_drain(void *arg, unsign
  	struct array_cache *ac;
  	int node = cpu_to_mem(cpu);
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rtmutex-futex-prepare-rt.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rtmutex-futex-prepare-rt.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/rtmutex-futex-prepare-rt.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -13,7 +13,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/futex.c
 +++ linux-3.2/kernel/futex.c
-@@ -1410,6 +1410,16 @@ retry_private:
+@@ -1422,6 +1422,16 @@ retry_private:
  				requeue_pi_wake_futex(this, &key2, hb2);
  				drop_count++;
  				continue;
@@ -30,7 +30,7 @@
  			} else if (ret) {
  				/* -EDEADLK */
  				this->pi_state = NULL;
-@@ -2254,7 +2264,7 @@ static int futex_wait_requeue_pi(u32 __u
+@@ -2266,7 +2276,7 @@ static int futex_wait_requeue_pi(u32 __u
  	struct hrtimer_sleeper timeout, *to = NULL;
  	struct rt_mutex_waiter rt_waiter;
  	struct rt_mutex *pi_mutex = NULL;
@@ -39,7 +39,7 @@
  	union futex_key key2 = FUTEX_KEY_INIT;
  	struct futex_q q = futex_q_init;
  	int res, ret;
-@@ -2298,20 +2308,55 @@ static int futex_wait_requeue_pi(u32 __u
+@@ -2310,20 +2320,55 @@ static int futex_wait_requeue_pi(u32 __u
  	/* Queue the futex_q, drop the hb lock, wait for wakeup. */
  	futex_wait_queue_me(hb, &q, to);
  
@@ -106,7 +106,7 @@
  
  	/* Check if the requeue code acquired the second futex for us. */
  	if (!q.rt_waiter) {
-@@ -2320,9 +2365,10 @@ static int futex_wait_requeue_pi(u32 __u
+@@ -2332,9 +2377,10 @@ static int futex_wait_requeue_pi(u32 __u
  		 * did a lock-steal - fix up the PI-state in that case.
  		 */
  		if (q.pi_state && (q.pi_state->owner != current)) {
@@ -119,7 +119,7 @@
  		}
  	} else {
  		/*
-@@ -2335,7 +2381,8 @@ static int futex_wait_requeue_pi(u32 __u
+@@ -2347,7 +2393,8 @@ static int futex_wait_requeue_pi(u32 __u
  		ret = rt_mutex_finish_proxy_lock(pi_mutex, to, &rt_waiter, 1);
  		debug_rt_mutex_free_waiter(&rt_waiter);
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-cond-resched.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-cond-resched.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-cond-resched.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -11,7 +11,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/sched.c
 +++ linux-3.2/kernel/sched.c
-@@ -5762,9 +5762,17 @@ static inline int should_resched(void)
+@@ -5775,9 +5775,17 @@ static inline int should_resched(void)
  
  static void __cond_resched(void)
  {

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-delay-put-task.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-delay-put-task.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-delay-put-task.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -12,7 +12,7 @@
 ===================================================================
 --- linux-3.2.orig/include/linux/sched.h
 +++ linux-3.2/include/linux/sched.h
-@@ -1588,6 +1588,9 @@ struct task_struct {
+@@ -1591,6 +1591,9 @@ struct task_struct {
  #ifdef CONFIG_HAVE_HW_BREAKPOINT
  	atomic_t ptrace_bp_refcnt;
  #endif
@@ -22,7 +22,7 @@
  };
  
  /* Future-safe accessor for struct task_struct's cpus_allowed. */
-@@ -1772,6 +1775,15 @@ extern struct pid *cad_pid;
+@@ -1775,6 +1778,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)
  
@@ -38,7 +38,7 @@
  extern void __put_task_struct(struct task_struct *t);
  
  static inline void put_task_struct(struct task_struct *t)
-@@ -1779,6 +1791,7 @@ static inline void put_task_struct(struc
+@@ -1782,6 +1794,7 @@ static inline void put_task_struct(struc
  	if (atomic_dec_and_test(&t->usage))
  		__put_task_struct(t);
  }
@@ -50,7 +50,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/fork.c
 +++ linux-3.2/kernel/fork.c
-@@ -197,7 +197,18 @@ void __put_task_struct(struct task_struc
+@@ -196,7 +196,18 @@ void __put_task_struct(struct task_struc
  	if (!profile_handoff_task(tsk))
  		free_task(tsk);
  }

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-distangle-worker-accounting-from-rq-3elock.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-distangle-worker-accounting-from-rq-3elock.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-distangle-worker-accounting-from-rq-3elock.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -32,7 +32,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/sched.c
 +++ linux-3.2/kernel/sched.c
-@@ -2643,10 +2643,6 @@ static void ttwu_activate(struct rq *rq,
+@@ -2644,10 +2644,6 @@ static void ttwu_activate(struct rq *rq,
  {
  	activate_task(rq, p, en_flags);
  	p->on_rq = 1;
@@ -43,7 +43,7 @@
  }
  
  /*
-@@ -2881,40 +2877,6 @@ out:
+@@ -2882,40 +2878,6 @@ out:
  }
  
  /**
@@ -84,7 +84,7 @@
   * wake_up_process - Wake up a specific process
   * @p: The process to be woken up.
   *
-@@ -4419,19 +4381,6 @@ need_resched:
+@@ -4420,19 +4382,6 @@ need_resched:
  		} else {
  			deactivate_task(rq, prev, DEQUEUE_SLEEP);
  			prev->on_rq = 0;
@@ -104,7 +104,7 @@
  		}
  		switch_count = &prev->nvcsw;
  	}
-@@ -4474,6 +4423,14 @@ static inline void sched_submit_work(str
+@@ -4475,6 +4424,14 @@ static inline void sched_submit_work(str
  {
  	if (!tsk->state)
  		return;
@@ -119,7 +119,7 @@
  	/*
  	 * If we are going to sleep and we have plugged IO queued,
  	 * make sure to submit it to avoid deadlocks.
-@@ -4482,12 +4439,19 @@ static inline void sched_submit_work(str
+@@ -4483,12 +4440,19 @@ static inline void sched_submit_work(str
  		blk_schedule_flush_plug(tsk);
  }
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-keep-period-timer-alive-when-throttled.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-keep-period-timer-alive-when-throttled.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-keep-period-timer-alive-when-throttled.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -19,7 +19,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/sched_rt.c
 +++ linux-3.2/kernel/sched_rt.c
-@@ -577,12 +577,9 @@ static inline int balance_runtime(struct
+@@ -580,12 +580,9 @@ static inline int balance_runtime(struct
  
  static int do_sched_rt_period_timer(struct rt_bandwidth *rt_b, int overrun)
  {
@@ -33,7 +33,7 @@
  	span = sched_rt_period_mask();
  	for_each_cpu(i, span) {
  		int enqueue = 0;
-@@ -617,12 +614,17 @@ static int do_sched_rt_period_timer(stru
+@@ -620,12 +617,17 @@ static int do_sched_rt_period_timer(stru
  			if (!rt_rq_throttled(rt_rq))
  				enqueue = 1;
  		}
@@ -51,7 +51,7 @@
  	return idle;
  }
  
-@@ -683,7 +685,8 @@ static void update_curr_rt(struct rq *rq
+@@ -686,7 +688,8 @@ static void update_curr_rt(struct rq *rq
  	if (unlikely((s64)delta_exec < 0))
  		delta_exec = 0;
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-load-balance-break-on-rq-contention.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-load-balance-break-on-rq-contention.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-load-balance-break-on-rq-contention.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -15,7 +15,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/sched_fair.c
 +++ linux-3.2/kernel/sched_fair.c
-@@ -2806,6 +2806,10 @@ balance_tasks(struct rq *this_rq, int th
+@@ -2899,6 +2899,10 @@ balance_tasks(struct rq *this_rq, int th
  		 */
  		if (idle == CPU_NEWLY_IDLE)
  			break;
@@ -26,7 +26,7 @@
  #endif
  
  		/*
-@@ -2946,6 +2950,20 @@ load_balance_fair(struct rq *this_rq, in
+@@ -3039,6 +3043,20 @@ load_balance_fair(struct rq *this_rq, in
  		rem_load_move -= moved_load;
  		if (rem_load_move < 0)
  			break;

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-might-sleep-do-not-account-rcu-depth.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -37,7 +37,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/sched.c
 +++ linux-3.2/kernel/sched.c
-@@ -8416,7 +8416,8 @@ void __init sched_init(void)
+@@ -8429,7 +8429,8 @@ void __init sched_init(void)
  #ifdef CONFIG_DEBUG_ATOMIC_SLEEP
  static inline int preempt_count_equals(int preempt_offset)
  {

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-migrate-disable.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-migrate-disable.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-migrate-disable.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -42,7 +42,7 @@
  	cpumask_t cpus_allowed;
  
  #ifdef CONFIG_PREEMPT_RCU
-@@ -1595,9 +1596,6 @@ struct task_struct {
+@@ -1598,9 +1599,6 @@ struct task_struct {
  #endif
  };
  
@@ -52,7 +52,7 @@
  #ifdef CONFIG_PREEMPT_RT_FULL
  static inline bool cur_pf_disabled(void) { return current->pagefault_disabled; }
  #else
-@@ -2680,6 +2678,15 @@ static inline void set_task_cpu(struct t
+@@ -2683,6 +2681,15 @@ static inline void set_task_cpu(struct t
  
  #endif /* CONFIG_SMP */
  
@@ -84,7 +84,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/sched.c
 +++ linux-3.2/kernel/sched.c
-@@ -6209,11 +6209,12 @@ static inline void sched_init_granularit
+@@ -6224,11 +6224,12 @@ static inline void sched_init_granularit
  #ifdef CONFIG_SMP
  void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask)
  {
@@ -101,7 +101,7 @@
  }
  
  /*
-@@ -6264,7 +6265,7 @@ int set_cpus_allowed_ptr(struct task_str
+@@ -6279,7 +6280,7 @@ int set_cpus_allowed_ptr(struct task_str
  	do_set_cpus_allowed(p, new_mask);
  
  	/* Can the task run on the task's current CPU? If so, we're done */
@@ -110,7 +110,7 @@
  		goto out;
  
  	dest_cpu = cpumask_any_and(cpu_active_mask, new_mask);
-@@ -6283,6 +6284,83 @@ out:
+@@ -6298,6 +6299,83 @@ out:
  }
  EXPORT_SYMBOL_GPL(set_cpus_allowed_ptr);
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-mmdrop-delayed.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-mmdrop-delayed.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-mmdrop-delayed.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -39,7 +39,7 @@
 ===================================================================
 --- linux-3.2.orig/include/linux/sched.h
 +++ linux-3.2/include/linux/sched.h
-@@ -2265,12 +2265,24 @@ extern struct mm_struct * mm_alloc(void)
+@@ -2268,12 +2268,24 @@ extern struct mm_struct * mm_alloc(void)
  
  /* mmdrop drops the mm and the page tables */
  extern void __mmdrop(struct mm_struct *);
@@ -68,7 +68,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/fork.c
 +++ linux-3.2/kernel/fork.c
-@@ -202,7 +202,7 @@ EXPORT_SYMBOL_GPL(__put_task_struct);
+@@ -201,7 +201,7 @@ EXPORT_SYMBOL_GPL(__put_task_struct);
  #else
  void __put_task_struct_cb(struct rcu_head *rhp)
  {
@@ -77,7 +77,7 @@
  
  	__put_task_struct(tsk);
  
-@@ -557,6 +557,19 @@ void __mmdrop(struct mm_struct *mm)
+@@ -552,6 +552,19 @@ void __mmdrop(struct mm_struct *mm)
  }
  EXPORT_SYMBOL_GPL(__mmdrop);
  
@@ -115,7 +115,7 @@
  	if (unlikely(prev_state == TASK_DEAD)) {
  		/*
  		 * Remove function-return probe instances associated with this
-@@ -6290,6 +6294,8 @@ static int migration_cpu_stop(void *data
+@@ -6303,6 +6307,8 @@ static int migration_cpu_stop(void *data
  
  #ifdef CONFIG_HOTPLUG_CPU
  
@@ -124,7 +124,7 @@
  /*
   * Ensures that the idle task is using init_mm right before its cpu goes
   * offline.
-@@ -6302,7 +6308,12 @@ void idle_task_exit(void)
+@@ -6315,7 +6321,12 @@ void idle_task_exit(void)
  
  	if (mm != &init_mm)
  		switch_mm(mm, &init_mm, current);
@@ -138,7 +138,7 @@
  }
  
  /*
-@@ -6647,6 +6658,12 @@ migration_call(struct notifier_block *nf
+@@ -6660,6 +6671,12 @@ migration_call(struct notifier_block *nf
  		migrate_nr_uninterruptible(rq);
  		calc_global_load_remove(rq);
  		break;

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-no-work-when-pi-blocked.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-no-work-when-pi-blocked.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-no-work-when-pi-blocked.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -12,7 +12,7 @@
 ===================================================================
 --- linux-3.2.orig/include/linux/sched.h
 +++ linux-3.2/include/linux/sched.h
-@@ -2092,12 +2092,20 @@ extern unsigned int sysctl_sched_cfs_ban
+@@ -2095,12 +2095,20 @@ extern unsigned int sysctl_sched_cfs_ban
  extern int rt_mutex_getprio(struct task_struct *p);
  extern void rt_mutex_setprio(struct task_struct *p, int prio);
  extern void rt_mutex_adjust_pi(struct task_struct *p);

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-prevent-boosting-from-throttling.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-prevent-boosting-from-throttling.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-prevent-boosting-from-throttling.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -19,7 +19,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/sched_rt.c
 +++ linux-3.2/kernel/sched_rt.c
-@@ -656,8 +656,24 @@ static int sched_rt_runtime_exceeded(str
+@@ -659,8 +659,24 @@ static int sched_rt_runtime_exceeded(str
  		return 0;
  
  	if (rt_rq->rt_time > runtime) {

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-prevent-idle-boost.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-prevent-idle-boost.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-prevent-idle-boost.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -11,7 +11,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/sched.c
 +++ linux-3.2/kernel/sched.c
-@@ -5024,6 +5024,24 @@ void rt_mutex_setprio(struct task_struct
+@@ -5037,6 +5037,24 @@ void rt_mutex_setprio(struct task_struct
  
  	rq = __task_rq_lock(p);
  
@@ -36,7 +36,7 @@
  	trace_sched_pi_setprio(p, prio);
  	oldprio = p->prio;
  	prev_class = p->sched_class;
-@@ -5047,11 +5065,10 @@ void rt_mutex_setprio(struct task_struct
+@@ -5060,11 +5078,10 @@ void rt_mutex_setprio(struct task_struct
  		enqueue_task(rq, p, oldprio < prio ? ENQUEUE_HEAD : 0);
  
  	check_class_changed(rq, p, prev_class, oldprio);

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-rt-fix-migrate_enable-thinko.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-rt-fix-migrate_enable-thinko.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-rt-fix-migrate_enable-thinko.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -24,7 +24,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/sched.c
 +++ linux-3.2/kernel/sched.c
-@@ -6361,12 +6361,14 @@ void migrate_enable(void)
+@@ -6376,12 +6376,14 @@ void migrate_enable(void)
  	 */
  	rq = this_rq();
  	raw_spin_lock_irqsave(&rq->lock, flags);

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-rt-mutex-wakeup.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-rt-mutex-wakeup.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-rt-mutex-wakeup.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -28,7 +28,7 @@
  	void *stack;
  	atomic_t usage;
  	unsigned int flags;	/* per process flags, defined below */
-@@ -2175,6 +2177,7 @@ extern void xtime_update(unsigned long t
+@@ -2178,6 +2180,7 @@ extern void xtime_update(unsigned long t
  
  extern int wake_up_state(struct task_struct *tsk, unsigned int state);
  extern int wake_up_process(struct task_struct *tsk);

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-teach-migrate_disable-about-atomic-contexts.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-teach-migrate_disable-about-atomic-contexts.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-teach-migrate_disable-about-atomic-contexts.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -55,7 +55,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/sched.c
 +++ linux-3.2/kernel/sched.c
-@@ -6292,6 +6292,17 @@ void migrate_disable(void)
+@@ -6307,6 +6307,17 @@ void migrate_disable(void)
  	unsigned long flags;
  	struct rq *rq;
  
@@ -73,7 +73,7 @@
  	preempt_disable();
  	if (p->migrate_disable) {
  		p->migrate_disable++;
-@@ -6340,6 +6351,16 @@ void migrate_enable(void)
+@@ -6355,6 +6366,16 @@ void migrate_enable(void)
  	unsigned long flags;
  	struct rq *rq;
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-ttwu-ensure-success-return-is-correct.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -22,7 +22,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/sched.c
 +++ linux-3.2/kernel/sched.c
-@@ -2839,8 +2839,10 @@ try_to_wake_up(struct task_struct *p, un
+@@ -2834,8 +2834,10 @@ try_to_wake_up(struct task_struct *p, un
  		 * if the wakeup condition is true.
  		 */
  		if (!(wake_flags & WF_LOCK_SLEEPER)) {

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-use-schedule-preempt-disabled.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-use-schedule-preempt-disabled.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/sched-use-schedule-preempt-disabled.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -40,7 +40,7 @@
 ===================================================================
 --- linux-3.2.orig/arch/arm/kernel/process.c
 +++ linux-3.2/arch/arm/kernel/process.c
-@@ -211,9 +211,7 @@ void cpu_idle(void)
+@@ -214,9 +214,7 @@ void cpu_idle(void)
  		}
  		leds_event(led_idle_end);
  		tick_nohz_restart_sched_tick();

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/scsi-fcoe-rt-aware.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/scsi-fcoe-rt-aware.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/scsi-fcoe-rt-aware.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -3,18 +3,17 @@
 Date: Sat, 12 Nov 2011 14:00:48 +0100
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-[bwh: Drop hunk applied in commit 7e1e7ead88dff75b11b86ee0d5232c4591be1326]
 ---
- drivers/scsi/fcoe/fcoe.c      |   17 +++++++++--------
+ drivers/scsi/fcoe/fcoe.c      |   16 ++++++++--------
  drivers/scsi/fcoe/fcoe_ctlr.c |    4 ++--
  drivers/scsi/libfc/fc_exch.c  |    4 ++--
- 3 files changed, 13 insertions(+), 12 deletions(-)
+ 3 files changed, 12 insertions(+), 12 deletions(-)
 
 Index: linux-3.2/drivers/scsi/fcoe/fcoe.c
 ===================================================================
 --- linux-3.2.orig/drivers/scsi/fcoe/fcoe.c
 +++ linux-3.2/drivers/scsi/fcoe/fcoe.c
-@@ -1147,7 +1147,7 @@ static void fcoe_percpu_thread_destroy(u
+@@ -1156,7 +1156,7 @@ static void fcoe_percpu_thread_destroy(u
  	struct sk_buff *skb;
  #ifdef CONFIG_SMP
  	struct fcoe_percpu_s *p0;
@@ -23,7 +22,7 @@
  #endif /* CONFIG_SMP */
  
  	FCOE_DBG("Destroying receive thread for CPU %d\n", cpu);
-@@ -1203,7 +1203,7 @@ static void fcoe_percpu_thread_destroy(u
+@@ -1212,7 +1212,7 @@ static void fcoe_percpu_thread_destroy(u
  			kfree_skb(skb);
  		spin_unlock_bh(&p->fcoe_rx_list.lock);
  	}
@@ -32,7 +31,7 @@
  #else
  	/*
  	 * This a non-SMP scenario where the singular Rx thread is
-@@ -1426,11 +1426,11 @@ err2:
+@@ -1435,11 +1435,11 @@ err2:
  static int fcoe_alloc_paged_crc_eof(struct sk_buff *skb, int tlen)
  {
  	struct fcoe_percpu_s *fps;
@@ -47,7 +46,7 @@
  
  	return rc;
  }
-@@ -1668,7 +1669,7 @@ static void fcoe_recv_frame(struct sk_bu
+@@ -1680,7 +1680,7 @@ static void fcoe_recv_frame(struct sk_bu
  	 */
  	hp = (struct fcoe_hdr *) skb_network_header(skb);
  
@@ -56,7 +55,7 @@
  	if (unlikely(FC_FCOE_DECAPS_VER(hp) != FC_FCOE_VER)) {
  		if (stats->ErrorFrames < 5)
  			printk(KERN_WARNING "fcoe: FCoE version "
-@@ -1700,13 +1701,13 @@ static void fcoe_recv_frame(struct sk_bu
+@@ -1712,13 +1712,13 @@ static void fcoe_recv_frame(struct sk_bu
  		goto drop;
  
  	if (!fcoe_filter_frames(lport, fp)) {
@@ -76,7 +75,7 @@
 ===================================================================
 --- linux-3.2.orig/drivers/scsi/fcoe/fcoe_ctlr.c
 +++ linux-3.2/drivers/scsi/fcoe/fcoe_ctlr.c
-@@ -716,7 +716,7 @@ static unsigned long fcoe_ctlr_age_fcfs(
+@@ -719,7 +719,7 @@ static unsigned long fcoe_ctlr_age_fcfs(
  	unsigned long sel_time = 0;
  	struct fcoe_dev_stats *stats;
  
@@ -85,7 +84,7 @@
  
  	list_for_each_entry_safe(fcf, next, &fip->fcfs, list) {
  		deadline = fcf->time + fcf->fka_period + fcf->fka_period / 2;
-@@ -749,7 +749,7 @@ static unsigned long fcoe_ctlr_age_fcfs(
+@@ -752,7 +752,7 @@ static unsigned long fcoe_ctlr_age_fcfs(
  				sel_time = fcf->time;
  		}
  	}

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/seqlock-prevent-rt-starvation.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/seqlock-prevent-rt-starvation.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/seqlock-prevent-rt-starvation.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/seqlock-prevent-rt-starvation.patch)
@@ -0,0 +1,56 @@
+Subject: seqlock: Prevent rt starvation
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 22 Feb 2012 12:03:30 +0100
+
+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.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+
+---
+ include/linux/seqlock.h |   23 +++++++++++++++++++++++
+ 1 file changed, 23 insertions(+)
+
+Index: linux-3.2/include/linux/seqlock.h
+===================================================================
+--- linux-3.2.orig/include/linux/seqlock.h
++++ linux-3.2/include/linux/seqlock.h
+@@ -177,10 +177,33 @@ typedef struct {
+ /*
+  * Read side functions for starting and finalizing a read side section.
+  */
++#ifndef CONFIG_PREEMPT_RT
+ 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)
+ {

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/seqlock-provide-seq-spin-lock.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/seqlock-provide-seq-spin-lock.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/seqlock-provide-seq-spin-lock.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/seqlock-provide-seq-spin-lock.patch)
@@ -0,0 +1,94 @@
+Subject: seqlock: Provide seq_spin_* functions
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Mon, 27 Feb 2012 17:55:11 +0100
+
+In some cases it's desirable to lock the seqlock w/o changing the
+seqcount. Provide functions for this, so we can avoid open coded
+constructs.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+---
+ include/linux/seqlock.h |   64 ++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 64 insertions(+)
+
+Index: rt/include/linux/seqlock.h
+===================================================================
+--- rt.orig/include/linux/seqlock.h
++++ rt/include/linux/seqlock.h
+@@ -188,6 +188,19 @@ static inline unsigned read_seqretry(con
+ }
+ 
+ /*
++ * Ditto w/o barriers
++ */
++static inline unsigned __read_seqbegin(const seqlock_t *sl)
++{
++	return __read_seqcount_begin(&sl->seqcount);
++}
++
++static inline unsigned __read_seqretry(const seqlock_t *sl, unsigned start)
++{
++	return __read_seqcount_retry(&sl->seqcount, start);
++}
++
++/*
+  * Lock out other writers and update the count.
+  * Acts like a normal spin_lock/unlock.
+  * Don't need preempt_disable() because that is in the spin_lock already.
+@@ -247,4 +260,55 @@ write_sequnlock_irqrestore(seqlock_t *sl
+ 	spin_unlock_irqrestore(&sl->lock, flags);
+ }
+ 
++/*
++ * Instead of open coding a spinlock and a seqcount, the following
++ * functions allow to serialize on the seqlock w/o touching seqcount.
++ */
++static inline void seq_spin_lock(seqlock_t *sl)
++{
++	spin_lock(&sl->lock);
++}
++
++static inline int seq_spin_trylock(seqlock_t *sl)
++{
++	return spin_trylock(&sl->lock);
++}
++
++static inline void seq_spin_unlock(seqlock_t *sl)
++{
++	spin_unlock(&sl->lock);
++}
++
++static inline void assert_seq_spin_locked(seqlock_t *sl)
++{
++	assert_spin_locked(&sl->lock);
++}
++
++static inline void seq_spin_lock_nested(seqlock_t *sl, int subclass)
++{
++	spin_lock_nested(&sl->lock, subclass);
++}
++
++/*
++ * For writers which need to take/release the lock w/o updating seqcount for
++ * whatever reasons the following functions allow to update the count
++ * after the lock has been acquired or before it is released.
++ */
++static inline void write_seqlock_begin(seqlock_t *sl)
++{
++	assert_spin_locked(&sl->lock);
++	write_seqcount_begin(&sl->seqcount);
++}
++
++static inline void write_seqlock_end(seqlock_t *sl)
++{
++	assert_spin_locked(&sl->lock);
++	write_seqcount_end(&sl->seqcount);
++}
++
++static inline void write_seqlock_barrier(seqlock_t *sl)
++{
++	write_seqcount_barrier(&sl->seqcount);
++}
++
+ #endif /* __LINUX_SEQLOCK_H */

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/seqlock-remove-unused-functions.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/seqlock-remove-unused-functions.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/seqlock-remove-unused-functions.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -1,4 +1,4 @@
-Subject: seqlock-remove-unused-functions.patch
+Subject: seqlock: Remove unused functions
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sat, 16 Jul 2011 18:38:22 +0200
 

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/seqlock-use-seqcount.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/seqlock-use-seqcount.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/seqlock-use-seqcount.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -1,16 +1,18 @@
-Subject: seqlock-use-seqcount.patch
+Subject: seqlock: Use seqcount
 From: Thomas Gleixner <tglx at linutronix.de>
 Date: Sat, 16 Jul 2011 18:40:26 +0200
 
+No point in having different implementations for the same thing.
+
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 ---
- include/linux/seqlock.h |  166 ++++++++++++++++++++++++------------------------
- 1 file changed, 83 insertions(+), 83 deletions(-)
+ include/linux/seqlock.h |  176 +++++++++++++++++++++++++-----------------------
+ 1 file changed, 93 insertions(+), 83 deletions(-)
 
-Index: linux-3.2/include/linux/seqlock.h
+Index: rt/include/linux/seqlock.h
 ===================================================================
---- linux-3.2.orig/include/linux/seqlock.h
-+++ linux-3.2/include/linux/seqlock.h
+--- rt.orig/include/linux/seqlock.h
++++ rt/include/linux/seqlock.h
 @@ -30,81 +30,12 @@
  #include <linux/preempt.h>
  #include <asm/processor.h>
@@ -101,7 +103,7 @@
  	return __read_seqcount_retry(s, start);
  }
  
-@@ -220,21 +150,91 @@ static inline void write_seqcount_barrie
+@@ -220,21 +150,101 @@ static inline void write_seqcount_barrie
  	s->sequence+=2;
  }
  
@@ -130,8 +132,18 @@
 +#define DEFINE_SEQLOCK(x) \
 +		seqlock_t x = __SEQLOCK_UNLOCKED(x)
 +
-+#define read_seqbegin(sl)		read_seqcount_begin(&(sl)->seqcount)
-+#define read_seqretry(sl, start)	read_seqcount_retry(&(sl)->seqcount, start)
++/*
++ * Read side functions for starting and finalizing a read side section.
++ */
++static inline unsigned read_seqbegin(const seqlock_t *sl)
++{
++	return read_seqcount_begin(&sl->seqcount);
++}
++
++static inline unsigned read_seqretry(const seqlock_t *sl, unsigned start)
++{
++	return read_seqcount_retry(&sl->seqcount, start);
++}
 +
 +/*
 + * Lock out other writers and update the count.

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/series
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/series	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/series	Sat Mar 10 17:58:57 2012	(r18803)
@@ -1,9 +1,9 @@
 ###########################################################
-# DELTA against a known Linus release (3.0.4)
+# DELTA against a known Linus release (3.2.5)
 ###########################################################
 
 ############################################################
-# UPSTREAM changes queued for 3.2 or in 3.1
+# UPSTREAM changes queued for 3.3 or 3.2
 ############################################################
 x86_64-patch-for-idle-notifiers.patch
 re-possible-slab-deadlock-while-doing-ifenslave-1.patch
@@ -17,7 +17,6 @@
 # rtc-fix-hrtimer-deadlock.patch -- 3.0.1
 # rtc-limit-frequency.patch -- 3.0.1
 
-
 # Some variant of this is in 3.1
 
 ############################################################
@@ -97,7 +96,21 @@
 # Stuff which should go upstream ASAP
 ############################################################
 
+# Timekeeping / VDSO
+time-remove-bogus-comments.patch
+x86-vdso-remove-bogus-locking-in-update_vsyscall_tz.patch
+x86-vdso-use-seqcount.patch
+ia64-vdso-use-seqcount.patch
+
+# SEQLOCK
+seqlock-remove-unused-functions.patch
+seqlock-use-seqcount.patch
+seqlock-provide-seq-spin-lock.patch
+fs-struct-use-seqlock.patch
+fs-dentry-use-seqlock.patch
+
 # RAW SPINLOCKS
+timekeeping-split-xtime-lock.patch
 intel_idle-convert-i7300_idle_lock-to-raw-spinlock.patch
 
 # MM memcg
@@ -122,6 +135,7 @@
 signals-do-not-wake-self.patch
 posix-timers-no-broadcast.patch
 signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch
+oleg-signal-rt-fix.patch
 
 # SCHED
 
@@ -185,6 +199,7 @@
 # X86
 x86-io-apic-migra-no-unmask.patch
 x86-32-fix-signal-crap.patch
+fix-rt-int3-x86_32-3.2-rt.patch
 
 # RCU
 rcu-reduce-lock-section.patch
@@ -193,25 +208,15 @@
 locking-various-init-fixes.patch
 # rtc-tegra-lock-init.patch -- 3.0.1
 
-# SEQLOCK
-seqlock-remove-unused-functions.patch
-seqlock-use-seqcount.patch
-
 # PCI
 wait-provide-__wake_up_all_locked.patch
 pci-access-use-__wake_up_all_locked.patch
 
-# ACPI
-acpi-make-gbl-hardware-lock-raw.patch
-acpi-make-ec-lock-raw-as-well.patch
-
 #####################################################
 # Stuff which should go mainline, but wants some care
 #####################################################
 
 # SEQLOCK
-seqlock-raw-seqlock.patch
-timekeeping-covert-xtimelock.patch
 
 # ANON RW SEMAPHORES
 
@@ -353,6 +358,7 @@
 peter_zijlstra-frob-hrtimer.patch
 hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch
 hrtimer-fix-reprogram-madness.patch
+timer-fd-avoid-live-lock.patch
 
 # POSIX-CPU-TIMERS
 posix-timers-thread-posix-cpu-timers-on-rt.patch
@@ -422,8 +428,8 @@
 softirq-fix-unplug-deadlock.patch
 softirq-disable-softirq-stacks-for-rt.patch
 softirq-make-fifo.patch
-
 tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch
+irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch
 
 # LOCAL VARS and GETCPU STUFF
 local-vars-migrate-disable.patch
@@ -436,6 +442,7 @@
 
 # FUTEX/RTMUTEX
 rtmutex-futex-prepare-rt.patch
+futex-requeue-pi-fix.patch
 
 # RTMUTEX 
 rt-mutex-add-sleeping-spinlocks-support.patch
@@ -554,17 +561,32 @@
 # Device mapper
 dm-make-rt-aware.patch
 
+# ACPI
+# Dropped those two as they cause a scheduling in atomic failure and
+# we have no clue why we made those locks raw in the first place.
+# acpi-make-gbl-hardware-lock-raw.patch
+# acpi-make-ec-lock-raw-as-well.patch
+
+# This one is just a follow up to the raw spin locks
 # Simple raw spinlock based waitqueue
-wait-simple-version.patch
-acpi-gpe-use-wait-simple.patch
+# wait-simple-version.patch
+# acpi-gpe-use-wait-simple.patch
 
 # CPUMASK OFFSTACK
 cpumask-disable-offstack-on-rt.patch
 
+# Various fixes - fold them back
+seqlock-prevent-rt-starvation.patch
+fs-protect-opencoded-isize-seqcount.patch
+net-u64-stat-protect-seqcount.patch
+rfc-timer-fix-hotplug-for-rt.patch
+rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch
+rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch
+rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch
+rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch
+
 # Enable full RT
+cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch
 kconfig-disable-a-few-options-rt.patch
 kconfig-preempt-rt-full.patch
 
-# Needs some thought and testing
-#softirq-preempt-fix.patch
-

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/signal-fix-up-rcu-wreckage.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/signal-fix-up-rcu-wreckage.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/signal-fix-up-rcu-wreckage.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -11,7 +11,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/signal.c
 +++ linux-3.2/kernel/signal.c
-@@ -1329,12 +1329,12 @@ struct sighand_struct *__lock_task_sigha
+@@ -1362,12 +1362,12 @@ struct sighand_struct *__lock_task_sigha
  	struct sighand_struct *sighand;
  
  	for (;;) {
@@ -26,7 +26,7 @@
  			break;
  		}
  
-@@ -1345,7 +1345,7 @@ struct sighand_struct *__lock_task_sigha
+@@ -1378,7 +1378,7 @@ struct sighand_struct *__lock_task_sigha
  		}
  		spin_unlock(&sighand->siglock);
  		rcu_read_unlock();

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -56,7 +56,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/fork.c
 +++ linux-3.2/kernel/fork.c
-@@ -1136,6 +1136,7 @@ static struct task_struct *copy_process(
+@@ -1131,6 +1131,7 @@ static struct task_struct *copy_process(
  	spin_lock_init(&p->alloc_lock);
  
  	init_sigpending(&p->pending);

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/skbufhead-raw-lock.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/skbufhead-raw-lock.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/skbufhead-raw-lock.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -67,7 +67,7 @@
  #endif
  }
  
-@@ -3406,7 +3406,7 @@ static void flush_backlog(void *arg)
+@@ -3407,7 +3407,7 @@ static void flush_backlog(void *arg)
  	skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) {
  		if (skb->dev == dev) {
  			__skb_unlink(skb, &sd->input_pkt_queue);
@@ -76,7 +76,7 @@
  			input_queue_head_incr(sd);
  		}
  	}
-@@ -3415,10 +3415,13 @@ static void flush_backlog(void *arg)
+@@ -3416,10 +3416,13 @@ static void flush_backlog(void *arg)
  	skb_queue_walk_safe(&sd->process_queue, skb, tmp) {
  		if (skb->dev == dev) {
  			__skb_unlink(skb, &sd->process_queue);
@@ -91,7 +91,7 @@
  }
  
  static int napi_gro_complete(struct sk_buff *skb)
-@@ -3895,10 +3898,17 @@ static void net_rx_action(struct softirq
+@@ -3896,10 +3899,17 @@ static void net_rx_action(struct softirq
  	struct softnet_data *sd = &__get_cpu_var(softnet_data);
  	unsigned long time_limit = jiffies + 2;
  	int budget = netdev_budget;
@@ -109,7 +109,7 @@
  	while (!list_empty(&sd->poll_list)) {
  		struct napi_struct *n;
  		int work, weight;
-@@ -6358,6 +6368,9 @@ static int dev_cpu_callback(struct notif
+@@ -6365,6 +6375,9 @@ static int dev_cpu_callback(struct notif
  		netif_rx(skb);
  		input_queue_head_incr(oldsd);
  	}
@@ -119,7 +119,7 @@
  
  	return NOTIFY_OK;
  }
-@@ -6624,8 +6637,9 @@ static int __init net_dev_init(void)
+@@ -6631,8 +6644,9 @@ static int __init net_dev_init(void)
  		struct softnet_data *sd = &per_cpu(softnet_data, i);
  
  		memset(sd, 0, sizeof(*sd));

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-disable-softirq-stacks-for-rt.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-disable-softirq-stacks-for-rt.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-disable-softirq-stacks-for-rt.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -19,7 +19,7 @@
 ===================================================================
 --- linux-3.2.orig/arch/powerpc/kernel/irq.c
 +++ linux-3.2/arch/powerpc/kernel/irq.c
-@@ -443,6 +443,7 @@ void irq_ctx_init(void)
+@@ -440,6 +440,7 @@ void irq_ctx_init(void)
  	}
  }
  
@@ -27,7 +27,7 @@
  static inline void do_softirq_onstack(void)
  {
  	struct thread_info *curtp, *irqtp;
-@@ -479,7 +480,7 @@ void do_softirq(void)
+@@ -476,7 +477,7 @@ void do_softirq(void)
  
  	local_irq_restore(flags);
  }
@@ -160,7 +160,7 @@
 ===================================================================
 --- linux-3.2.orig/arch/x86/kernel/irq_64.c
 +++ linux-3.2/arch/x86/kernel/irq_64.c
-@@ -62,7 +62,7 @@ bool handle_irq(unsigned irq, struct pt_
+@@ -65,7 +65,7 @@ bool handle_irq(unsigned irq, struct pt_
  	return true;
  }
  
@@ -169,7 +169,7 @@
  extern void call_softirq(void);
  
  asmlinkage void do_softirq(void)
-@@ -82,3 +82,4 @@ asmlinkage void do_softirq(void)
+@@ -85,3 +85,4 @@ asmlinkage void do_softirq(void)
  	}
  	local_irq_restore(flags);
  }

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-fix-unplug-deadlock.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-fix-unplug-deadlock.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-fix-unplug-deadlock.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -34,7 +34,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/softirq.c
 +++ linux-3.2/kernel/softirq.c
-@@ -1085,9 +1085,8 @@ static int __cpuinit cpu_callback(struct
+@@ -1086,9 +1086,8 @@ static int __cpuinit cpu_callback(struct
  	int hotcpu = (unsigned long)hcpu;
  	struct task_struct *p;
  
@@ -45,7 +45,7 @@
  		p = kthread_create_on_node(run_ksoftirqd,
  					   hcpu,
  					   cpu_to_node(hotcpu),
-@@ -1100,19 +1099,16 @@ static int __cpuinit cpu_callback(struct
+@@ -1101,19 +1100,16 @@ static int __cpuinit cpu_callback(struct
    		per_cpu(ksoftirqd, hotcpu) = p;
   		break;
  	case CPU_ONLINE:

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-local-lock.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-local-lock.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-local-lock.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -89,7 +89,7 @@
 ===================================================================
 --- linux-3.2.orig/include/linux/sched.h
 +++ linux-3.2/include/linux/sched.h
-@@ -1598,6 +1598,7 @@ struct task_struct {
+@@ -1601,6 +1601,7 @@ struct task_struct {
  #endif
  #ifdef CONFIG_PREEMPT_RT_BASE
  	struct rcu_head put_rcu;

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-make-fifo.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-make-fifo.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-make-fifo.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -20,7 +20,7 @@
  
  #else /* !PREEMPT_RT_FULL */
  
-@@ -525,6 +527,20 @@ static int ksoftirqd_do_softirq(int cpu)
+@@ -526,6 +528,20 @@ static int ksoftirqd_do_softirq(int cpu)
  static inline void local_bh_disable_nort(void) { }
  static inline void _local_bh_enable_nort(void) { }
  
@@ -41,7 +41,7 @@
  #endif /* PREEMPT_RT_FULL */
  /*
   * Enter an interrupt context.
-@@ -984,6 +1000,8 @@ void __init softirq_init(void)
+@@ -985,6 +1001,8 @@ void __init softirq_init(void)
  
  static int run_ksoftirqd(void * __bind_cpu)
  {
@@ -50,7 +50,7 @@
  	set_current_state(TASK_INTERRUPTIBLE);
  
  	while (!kthread_should_stop()) {
-@@ -1009,6 +1027,7 @@ static int run_ksoftirqd(void * __bind_c
+@@ -1010,6 +1028,7 @@ static int run_ksoftirqd(void * __bind_c
  
  wait_to_die:
  	preempt_enable();

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-thread-do-softirq.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-thread-do-softirq.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/softirq-thread-do-softirq.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -25,7 +25,7 @@
 ===================================================================
 --- linux-3.2.orig/net/core/dev.c
 +++ linux-3.2/net/core/dev.c
-@@ -3036,7 +3036,7 @@ int netif_rx_ni(struct sk_buff *skb)
+@@ -3037,7 +3037,7 @@ int netif_rx_ni(struct sk_buff *skb)
  	preempt_disable();
  	err = netif_rx(skb);
  	if (local_softirq_pending())

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/stomp-machine-mark-stomper-thread.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/stomp-machine-mark-stomper-thread.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/stomp-machine-mark-stomper-thread.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -12,7 +12,7 @@
 ===================================================================
 --- linux-3.2.orig/include/linux/sched.h
 +++ linux-3.2/include/linux/sched.h
-@@ -1819,6 +1819,7 @@ extern void thread_group_times(struct ta
+@@ -1822,6 +1822,7 @@ extern void thread_group_times(struct ta
  #define PF_FROZEN	0x00010000	/* frozen for system suspend */
  #define PF_FSTRANS	0x00020000	/* inside a filesystem transaction */
  #define PF_KSWAPD	0x00040000	/* I am kswapd */

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/suspend-prevernt-might-sleep-splats.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/suspend-prevernt-might-sleep-splats.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/suspend-prevernt-might-sleep-splats.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -40,7 +40,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/power/hibernate.c
 +++ linux-3.2/kernel/power/hibernate.c
-@@ -282,6 +282,8 @@ static int create_image(int platform_mod
+@@ -284,6 +284,8 @@ static int create_image(int platform_mod
  
  	local_irq_disable();
  
@@ -49,7 +49,7 @@
  	error = syscore_suspend();
  	if (error) {
  		printk(KERN_ERR "PM: Some system devices failed to power down, "
-@@ -309,6 +311,7 @@ static int create_image(int platform_mod
+@@ -311,6 +313,7 @@ static int create_image(int platform_mod
  	syscore_resume();
  
   Enable_irqs:
@@ -57,7 +57,7 @@
  	local_irq_enable();
  
   Enable_cpus:
-@@ -420,6 +423,7 @@ static int resume_target_kernel(bool pla
+@@ -437,6 +440,7 @@ static int resume_target_kernel(bool pla
  		goto Enable_cpus;
  
  	local_irq_disable();
@@ -65,7 +65,7 @@
  
  	error = syscore_suspend();
  	if (error)
-@@ -453,6 +457,7 @@ static int resume_target_kernel(bool pla
+@@ -470,6 +474,7 @@ static int resume_target_kernel(bool pla
  	syscore_resume();
  
   Enable_irqs:
@@ -73,7 +73,7 @@
  	local_irq_enable();
  
   Enable_cpus:
-@@ -532,6 +537,7 @@ int hibernation_platform_enter(void)
+@@ -549,6 +554,7 @@ int hibernation_platform_enter(void)
  		goto Platform_finish;
  
  	local_irq_disable();
@@ -81,7 +81,7 @@
  	syscore_suspend();
  	if (pm_wakeup_pending()) {
  		error = -EAGAIN;
-@@ -544,6 +550,7 @@ int hibernation_platform_enter(void)
+@@ -561,6 +567,7 @@ int hibernation_platform_enter(void)
  
   Power_up:
  	syscore_resume();

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -132,7 +132,7 @@
  #include <linux/ftrace.h>
  #include <linux/smp.h>
  #include <linux/tick.h>
-@@ -670,15 +671,45 @@ struct tasklet_head
+@@ -664,15 +665,45 @@ struct tasklet_head
  static DEFINE_PER_CPU(struct tasklet_head, tasklet_vec);
  static DEFINE_PER_CPU(struct tasklet_head, tasklet_hi_vec);
  
@@ -182,7 +182,7 @@
  	local_irq_restore(flags);
  }
  
-@@ -689,10 +720,7 @@ void __tasklet_hi_schedule(struct taskle
+@@ -683,10 +714,7 @@ void __tasklet_hi_schedule(struct taskle
  	unsigned long flags;
  
  	local_irq_save(flags);
@@ -194,7 +194,7 @@
  	local_irq_restore(flags);
  }
  
-@@ -700,50 +728,119 @@ EXPORT_SYMBOL(__tasklet_hi_schedule);
+@@ -694,50 +722,119 @@ EXPORT_SYMBOL(__tasklet_hi_schedule);
  
  void __tasklet_hi_schedule_first(struct tasklet_struct *t)
  {
@@ -340,7 +340,7 @@
  static void tasklet_hi_action(struct softirq_action *a)
  {
  	struct tasklet_struct *list;
-@@ -754,29 +851,7 @@ static void tasklet_hi_action(struct sof
+@@ -748,29 +845,7 @@ static void tasklet_hi_action(struct sof
  	__this_cpu_write(tasklet_hi_vec.tail, &__get_cpu_var(tasklet_hi_vec).head);
  	local_irq_enable();
  
@@ -371,7 +371,7 @@
  }
  
  
-@@ -799,7 +874,7 @@ void tasklet_kill(struct tasklet_struct 
+@@ -793,7 +868,7 @@ void tasklet_kill(struct tasklet_struct 
  
  	while (test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) {
  		do {
@@ -380,7 +380,7 @@
  		} while (test_bit(TASKLET_STATE_SCHED, &t->state));
  	}
  	tasklet_unlock_wait(t);
-@@ -1005,6 +1080,23 @@ void __init softirq_init(void)
+@@ -999,6 +1074,23 @@ void __init softirq_init(void)
  	open_softirq(HI_SOFTIRQ, tasklet_hi_action);
  }
  

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/time-remove-bogus-comments.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/time-remove-bogus-comments.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/time-remove-bogus-comments.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/time-remove-bogus-comments.patch)
@@ -0,0 +1,38 @@
+Subject: time: Remove bogus comments
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Tue, 28 Feb 2012 19:06:50 +0100
+
+There is no global irq lock which makes a syscall magically SMP
+safe. Remove the outdated comment concerning do_settimeofday() as
+well.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ kernel/time.c |    6 ------
+ 1 file changed, 6 deletions(-)
+
+Index: linux-3.2/kernel/time.c
+===================================================================
+--- linux-3.2.orig/kernel/time.c
++++ linux-3.2/kernel/time.c
+@@ -163,7 +163,6 @@ int do_sys_settimeofday(const struct tim
+ 		return error;
+ 
+ 	if (tz) {
+-		/* SMP safe, global irq locking makes it work. */
+ 		sys_tz = *tz;
+ 		update_vsyscall_tz();
+ 		if (firsttime) {
+@@ -173,12 +172,7 @@ int do_sys_settimeofday(const struct tim
+ 		}
+ 	}
+ 	if (tv)
+-	{
+-		/* SMP safe, again the code in arch/foo/time.c should
+-		 * globally block out interrupts when it runs.
+-		 */
+ 		return do_settimeofday(tv);
+-	}
+ 	return 0;
+ }
+ 

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/timekeeping-split-xtime-lock.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/timekeeping-split-xtime-lock.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/timekeeping-split-xtime-lock.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/timekeeping-split-xtime-lock.patch)
@@ -0,0 +1,533 @@
+Subject: timekeeping: Split xtime_lock
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Thu, 01 Mar 2012 15:14:06 +0100
+
+xtime_lock is going to be split apart in mainline, so we can shorten
+the seqcount protected regions and avoid updating seqcount in some
+code pathes. This is a straight forward split, so we can avoid the
+whole mess with raw seqlocks for RT.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ kernel/time/jiffies.c       |    4 -
+ kernel/time/ntp.c           |   24 +++++++----
+ kernel/time/tick-common.c   |   10 ++--
+ kernel/time/tick-internal.h |    3 -
+ kernel/time/tick-sched.c    |   16 ++++---
+ kernel/time/timekeeping.c   |   90 +++++++++++++++++++++++++-------------------
+ 6 files changed, 88 insertions(+), 59 deletions(-)
+
+Index: linux-3.2/kernel/time/jiffies.c
+===================================================================
+--- linux-3.2.orig/kernel/time/jiffies.c
++++ linux-3.2/kernel/time/jiffies.c
+@@ -74,9 +74,9 @@ u64 get_jiffies_64(void)
+ 	u64 ret;
+ 
+ 	do {
+-		seq = read_seqbegin(&xtime_lock);
++		seq = read_seqcount_begin(&xtime_seq);
+ 		ret = jiffies_64;
+-	} while (read_seqretry(&xtime_lock, seq));
++	} while (read_seqcount_retry(&xtime_seq, seq));
+ 	return ret;
+ }
+ EXPORT_SYMBOL(get_jiffies_64);
+Index: linux-3.2/kernel/time/ntp.c
+===================================================================
+--- linux-3.2.orig/kernel/time/ntp.c
++++ linux-3.2/kernel/time/ntp.c
+@@ -358,7 +358,8 @@ static enum hrtimer_restart ntp_leap_sec
+ {
+ 	enum hrtimer_restart res = HRTIMER_NORESTART;
+ 
+-	write_seqlock(&xtime_lock);
++	raw_spin_lock(&xtime_lock);
++	write_seqcount_begin(&xtime_seq);
+ 
+ 	switch (time_state) {
+ 	case TIME_OK:
+@@ -388,7 +389,8 @@ static enum hrtimer_restart ntp_leap_sec
+ 		break;
+ 	}
+ 
+-	write_sequnlock(&xtime_lock);
++	write_seqcount_end(&xtime_seq);
++	raw_spin_unlock(&xtime_lock);
+ 
+ 	return res;
+ }
+@@ -663,7 +665,8 @@ int do_adjtimex(struct timex *txc)
+ 
+ 	getnstimeofday(&ts);
+ 
+-	write_seqlock_irq(&xtime_lock);
++	raw_spin_lock_irq(&xtime_lock);
++	write_seqcount_begin(&xtime_seq);
+ 
+ 	if (txc->modes & ADJ_ADJTIME) {
+ 		long save_adjust = time_adjust;
+@@ -705,7 +708,8 @@ int do_adjtimex(struct timex *txc)
+ 	/* fill PPS status fields */
+ 	pps_fill_timex(txc);
+ 
+-	write_sequnlock_irq(&xtime_lock);
++	write_seqcount_end(&xtime_seq);
++	raw_spin_unlock_irq(&xtime_lock);
+ 
+ 	txc->time.tv_sec = ts.tv_sec;
+ 	txc->time.tv_usec = ts.tv_nsec;
+@@ -903,7 +907,8 @@ void hardpps(const struct timespec *phas
+ 
+ 	pts_norm = pps_normalize_ts(*phase_ts);
+ 
+-	write_seqlock_irqsave(&xtime_lock, flags);
++	raw_spin_lock_irqsave(&xtime_lock, flags);
++	write_seqcount_begin(&xtime_seq);
+ 
+ 	/* clear the error bits, they will be set again if needed */
+ 	time_status &= ~(STA_PPSJITTER | STA_PPSWANDER | STA_PPSERROR);
+@@ -916,7 +921,8 @@ void hardpps(const struct timespec *phas
+ 	 * just start the frequency interval */
+ 	if (unlikely(pps_fbase.tv_sec == 0)) {
+ 		pps_fbase = *raw_ts;
+-		write_sequnlock_irqrestore(&xtime_lock, flags);
++		write_seqcount_end(&xtime_seq);
++		raw_spin_unlock_irqrestore(&xtime_lock, flags);
+ 		return;
+ 	}
+ 
+@@ -931,7 +937,8 @@ void hardpps(const struct timespec *phas
+ 		time_status |= STA_PPSJITTER;
+ 		/* restart the frequency calibration interval */
+ 		pps_fbase = *raw_ts;
+-		write_sequnlock_irqrestore(&xtime_lock, flags);
++		write_seqcount_end(&xtime_seq);
++		raw_spin_unlock_irqrestore(&xtime_lock, flags);
+ 		pr_err("hardpps: PPSJITTER: bad pulse\n");
+ 		return;
+ 	}
+@@ -948,7 +955,8 @@ void hardpps(const struct timespec *phas
+ 
+ 	hardpps_update_phase(pts_norm.nsec);
+ 
+-	write_sequnlock_irqrestore(&xtime_lock, flags);
++	write_seqcount_end(&xtime_seq);
++	raw_spin_unlock_irqrestore(&xtime_lock, flags);
+ }
+ EXPORT_SYMBOL(hardpps);
+ 
+Index: linux-3.2/kernel/time/tick-common.c
+===================================================================
+--- linux-3.2.orig/kernel/time/tick-common.c
++++ linux-3.2/kernel/time/tick-common.c
+@@ -63,13 +63,15 @@ int tick_is_oneshot_available(void)
+ static void tick_periodic(int cpu)
+ {
+ 	if (tick_do_timer_cpu == cpu) {
+-		write_seqlock(&xtime_lock);
++		raw_spin_lock(&xtime_lock);
++		write_seqcount_begin(&xtime_seq);
+ 
+ 		/* Keep track of the next tick event */
+ 		tick_next_period = ktime_add(tick_next_period, tick_period);
+ 
+ 		do_timer(1);
+-		write_sequnlock(&xtime_lock);
++		write_seqcount_end(&xtime_seq);
++		raw_spin_unlock(&xtime_lock);
+ 	}
+ 
+ 	update_process_times(user_mode(get_irq_regs()));
+@@ -130,9 +132,9 @@ void tick_setup_periodic(struct clock_ev
+ 		ktime_t next;
+ 
+ 		do {
+-			seq = read_seqbegin(&xtime_lock);
++			seq = read_seqcount_begin(&xtime_seq);
+ 			next = tick_next_period;
+-		} while (read_seqretry(&xtime_lock, seq));
++		} while (read_seqcount_retry(&xtime_seq, seq));
+ 
+ 		clockevents_set_mode(dev, CLOCK_EVT_MODE_ONESHOT);
+ 
+Index: linux-3.2/kernel/time/tick-internal.h
+===================================================================
+--- linux-3.2.orig/kernel/time/tick-internal.h
++++ linux-3.2/kernel/time/tick-internal.h
+@@ -141,4 +141,5 @@ static inline int tick_device_is_functio
+ #endif
+ 
+ extern void do_timer(unsigned long ticks);
+-extern seqlock_t xtime_lock;
++extern raw_spinlock_t xtime_lock;
++extern seqcount_t xtime_seq;
+Index: linux-3.2/kernel/time/tick-sched.c
+===================================================================
+--- linux-3.2.orig/kernel/time/tick-sched.c
++++ linux-3.2/kernel/time/tick-sched.c
+@@ -56,7 +56,8 @@ static void tick_do_update_jiffies64(kti
+ 		return;
+ 
+ 	/* Reevalute with xtime_lock held */
+-	write_seqlock(&xtime_lock);
++	raw_spin_lock(&xtime_lock);
++	write_seqcount_begin(&xtime_seq);
+ 
+ 	delta = ktime_sub(now, last_jiffies_update);
+ 	if (delta.tv64 >= tick_period.tv64) {
+@@ -79,7 +80,8 @@ static void tick_do_update_jiffies64(kti
+ 		/* Keep the tick_next_period variable up to date */
+ 		tick_next_period = ktime_add(last_jiffies_update, tick_period);
+ 	}
+-	write_sequnlock(&xtime_lock);
++	write_seqcount_end(&xtime_seq);
++	raw_spin_unlock(&xtime_lock);
+ }
+ 
+ /*
+@@ -89,12 +91,14 @@ static ktime_t tick_init_jiffy_update(vo
+ {
+ 	ktime_t period;
+ 
+-	write_seqlock(&xtime_lock);
++	raw_spin_lock(&xtime_lock);
++	write_seqcount_begin(&xtime_seq);
+ 	/* Did we start the jiffies update yet ? */
+ 	if (last_jiffies_update.tv64 == 0)
+ 		last_jiffies_update = tick_next_period;
+ 	period = last_jiffies_update;
+-	write_sequnlock(&xtime_lock);
++	write_seqcount_end(&xtime_seq);
++	raw_spin_unlock(&xtime_lock);
+ 	return period;
+ }
+ 
+@@ -345,11 +349,11 @@ void tick_nohz_stop_sched_tick(int inidl
+ 	ts->idle_calls++;
+ 	/* Read jiffies and the time when jiffies were updated last */
+ 	do {
+-		seq = read_seqbegin(&xtime_lock);
++		seq = read_seqcount_begin(&xtime_seq);
+ 		last_update = last_jiffies_update;
+ 		last_jiffies = jiffies;
+ 		time_delta = timekeeping_max_deferment();
+-	} while (read_seqretry(&xtime_lock, seq));
++	} while (read_seqcount_retry(&xtime_seq, seq));
+ 
+ 	if (rcu_needs_cpu(cpu) || printk_needs_cpu(cpu) ||
+ 	    arch_needs_cpu(cpu)) {
+Index: linux-3.2/kernel/time/timekeeping.c
+===================================================================
+--- linux-3.2.orig/kernel/time/timekeeping.c
++++ linux-3.2/kernel/time/timekeeping.c
+@@ -139,8 +139,8 @@ static inline s64 timekeeping_get_ns_raw
+  * This read-write spinlock protects us from races in SMP while
+  * playing with xtime.
+  */
+-__cacheline_aligned_in_smp DEFINE_SEQLOCK(xtime_lock);
+-
++__cacheline_aligned_in_smp DEFINE_RAW_SPINLOCK(xtime_lock);
++seqcount_t xtime_seq;
+ 
+ /*
+  * The current time
+@@ -222,7 +222,7 @@ void getnstimeofday(struct timespec *ts)
+ 	WARN_ON(timekeeping_suspended);
+ 
+ 	do {
+-		seq = read_seqbegin(&xtime_lock);
++		seq = read_seqcount_begin(&xtime_seq);
+ 
+ 		*ts = xtime;
+ 		nsecs = timekeeping_get_ns();
+@@ -230,7 +230,7 @@ void getnstimeofday(struct timespec *ts)
+ 		/* If arch requires, add in gettimeoffset() */
+ 		nsecs += arch_gettimeoffset();
+ 
+-	} while (read_seqretry(&xtime_lock, seq));
++	} while (read_seqcount_retry(&xtime_seq, seq));
+ 
+ 	timespec_add_ns(ts, nsecs);
+ }
+@@ -245,14 +245,14 @@ ktime_t ktime_get(void)
+ 	WARN_ON(timekeeping_suspended);
+ 
+ 	do {
+-		seq = read_seqbegin(&xtime_lock);
++		seq = read_seqcount_begin(&xtime_seq);
+ 		secs = xtime.tv_sec + wall_to_monotonic.tv_sec;
+ 		nsecs = xtime.tv_nsec + wall_to_monotonic.tv_nsec;
+ 		nsecs += timekeeping_get_ns();
+ 		/* If arch requires, add in gettimeoffset() */
+ 		nsecs += arch_gettimeoffset();
+ 
+-	} while (read_seqretry(&xtime_lock, seq));
++	} while (read_seqcount_retry(&xtime_seq, seq));
+ 	/*
+ 	 * Use ktime_set/ktime_add_ns to create a proper ktime on
+ 	 * 32-bit architectures without CONFIG_KTIME_SCALAR.
+@@ -278,14 +278,14 @@ void ktime_get_ts(struct timespec *ts)
+ 	WARN_ON(timekeeping_suspended);
+ 
+ 	do {
+-		seq = read_seqbegin(&xtime_lock);
++		seq = read_seqcount_begin(&xtime_seq);
+ 		*ts = xtime;
+ 		tomono = wall_to_monotonic;
+ 		nsecs = timekeeping_get_ns();
+ 		/* If arch requires, add in gettimeoffset() */
+ 		nsecs += arch_gettimeoffset();
+ 
+-	} while (read_seqretry(&xtime_lock, seq));
++	} while (read_seqcount_retry(&xtime_seq, seq));
+ 
+ 	set_normalized_timespec(ts, ts->tv_sec + tomono.tv_sec,
+ 				ts->tv_nsec + tomono.tv_nsec + nsecs);
+@@ -313,7 +313,7 @@ void getnstime_raw_and_real(struct times
+ 	do {
+ 		u32 arch_offset;
+ 
+-		seq = read_seqbegin(&xtime_lock);
++		seq = read_seqcount_begin(&xtime_seq);
+ 
+ 		*ts_raw = raw_time;
+ 		*ts_real = xtime;
+@@ -326,7 +326,7 @@ void getnstime_raw_and_real(struct times
+ 		nsecs_raw += arch_offset;
+ 		nsecs_real += arch_offset;
+ 
+-	} while (read_seqretry(&xtime_lock, seq));
++	} while (read_seqcount_retry(&xtime_seq, seq));
+ 
+ 	timespec_add_ns(ts_raw, nsecs_raw);
+ 	timespec_add_ns(ts_real, nsecs_real);
+@@ -365,7 +365,8 @@ int do_settimeofday(const struct timespe
+ 	if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC)
+ 		return -EINVAL;
+ 
+-	write_seqlock_irqsave(&xtime_lock, flags);
++	raw_spin_lock_irqsave(&xtime_lock, flags);
++	write_seqcount_begin(&xtime_seq);
+ 
+ 	timekeeping_forward_now();
+ 
+@@ -381,7 +382,8 @@ int do_settimeofday(const struct timespe
+ 	update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
+ 				timekeeper.mult);
+ 
+-	write_sequnlock_irqrestore(&xtime_lock, flags);
++	write_seqcount_end(&xtime_seq);
++	raw_spin_unlock_irqrestore(&xtime_lock, flags);
+ 
+ 	/* signal hrtimers about time change */
+ 	clock_was_set();
+@@ -405,7 +407,8 @@ int timekeeping_inject_offset(struct tim
+ 	if ((unsigned long)ts->tv_nsec >= NSEC_PER_SEC)
+ 		return -EINVAL;
+ 
+-	write_seqlock_irqsave(&xtime_lock, flags);
++	raw_spin_lock_irqsave(&xtime_lock, flags);
++	write_seqcount_begin(&xtime_seq);
+ 
+ 	timekeeping_forward_now();
+ 
+@@ -418,7 +421,8 @@ int timekeeping_inject_offset(struct tim
+ 	update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
+ 				timekeeper.mult);
+ 
+-	write_sequnlock_irqrestore(&xtime_lock, flags);
++	write_seqcount_end(&xtime_seq);
++	raw_spin_unlock_irqrestore(&xtime_lock, flags);
+ 
+ 	/* signal hrtimers about time change */
+ 	clock_was_set();
+@@ -490,11 +494,11 @@ void getrawmonotonic(struct timespec *ts
+ 	s64 nsecs;
+ 
+ 	do {
+-		seq = read_seqbegin(&xtime_lock);
++		seq = read_seqcount_begin(&xtime_seq);
+ 		nsecs = timekeeping_get_ns_raw();
+ 		*ts = raw_time;
+ 
+-	} while (read_seqretry(&xtime_lock, seq));
++	} while (read_seqcount_retry(&xtime_seq, seq));
+ 
+ 	timespec_add_ns(ts, nsecs);
+ }
+@@ -510,11 +514,11 @@ int timekeeping_valid_for_hres(void)
+ 	int ret;
+ 
+ 	do {
+-		seq = read_seqbegin(&xtime_lock);
++		seq = read_seqcount_begin(&xtime_seq);
+ 
+ 		ret = timekeeper.clock->flags & CLOCK_SOURCE_VALID_FOR_HRES;
+ 
+-	} while (read_seqretry(&xtime_lock, seq));
++	} while (read_seqcount_retry(&xtime_seq, seq));
+ 
+ 	return ret;
+ }
+@@ -572,7 +576,8 @@ void __init timekeeping_init(void)
+ 	read_persistent_clock(&now);
+ 	read_boot_clock(&boot);
+ 
+-	write_seqlock_irqsave(&xtime_lock, flags);
++	raw_spin_lock_irqsave(&xtime_lock, flags);
++	write_seqcount_begin(&xtime_seq);
+ 
+ 	ntp_init();
+ 
+@@ -593,7 +598,8 @@ void __init timekeeping_init(void)
+ 				-boot.tv_sec, -boot.tv_nsec);
+ 	total_sleep_time.tv_sec = 0;
+ 	total_sleep_time.tv_nsec = 0;
+-	write_sequnlock_irqrestore(&xtime_lock, flags);
++	write_seqcount_end(&xtime_seq);
++	raw_spin_unlock_irqrestore(&xtime_lock, flags);
+ }
+ 
+ /* time in seconds when suspend began */
+@@ -640,7 +646,8 @@ void timekeeping_inject_sleeptime(struct
+ 	if (!(ts.tv_sec == 0 && ts.tv_nsec == 0))
+ 		return;
+ 
+-	write_seqlock_irqsave(&xtime_lock, flags);
++	raw_spin_lock_irqsave(&xtime_lock, flags);
++	write_seqcount_begin(&xtime_seq);
+ 	timekeeping_forward_now();
+ 
+ 	__timekeeping_inject_sleeptime(delta);
+@@ -650,7 +657,8 @@ void timekeeping_inject_sleeptime(struct
+ 	update_vsyscall(&xtime, &wall_to_monotonic, timekeeper.clock,
+ 				timekeeper.mult);
+ 
+-	write_sequnlock_irqrestore(&xtime_lock, flags);
++	write_seqcount_end(&xtime_seq);
++	raw_spin_unlock_irqrestore(&xtime_lock, flags);
+ 
+ 	/* signal hrtimers about time change */
+ 	clock_was_set();
+@@ -673,7 +681,8 @@ static void timekeeping_resume(void)
+ 
+ 	clocksource_resume();
+ 
+-	write_seqlock_irqsave(&xtime_lock, flags);
++	raw_spin_lock_irqsave(&xtime_lock, flags);
++	write_seqcount_begin(&xtime_seq);
+ 
+ 	if (timespec_compare(&ts, &timekeeping_suspend_time) > 0) {
+ 		ts = timespec_sub(ts, timekeeping_suspend_time);
+@@ -683,7 +692,8 @@ static void timekeeping_resume(void)
+ 	timekeeper.clock->cycle_last = timekeeper.clock->read(timekeeper.clock);
+ 	timekeeper.ntp_error = 0;
+ 	timekeeping_suspended = 0;
+-	write_sequnlock_irqrestore(&xtime_lock, flags);
++	write_seqcount_end(&xtime_seq);
++	raw_spin_unlock_irqrestore(&xtime_lock, flags);
+ 
+ 	touch_softlockup_watchdog();
+ 
+@@ -701,7 +711,8 @@ static int timekeeping_suspend(void)
+ 
+ 	read_persistent_clock(&timekeeping_suspend_time);
+ 
+-	write_seqlock_irqsave(&xtime_lock, flags);
++	raw_spin_lock_irqsave(&xtime_lock, flags);
++	write_seqcount_begin(&xtime_seq);
+ 	timekeeping_forward_now();
+ 	timekeeping_suspended = 1;
+ 
+@@ -724,7 +735,8 @@ static int timekeeping_suspend(void)
+ 		timekeeping_suspend_time =
+ 			timespec_add(timekeeping_suspend_time, delta_delta);
+ 	}
+-	write_sequnlock_irqrestore(&xtime_lock, flags);
++	write_seqcount_end(&xtime_seq);
++	raw_spin_unlock_irqrestore(&xtime_lock, flags);
+ 
+ 	clockevents_notify(CLOCK_EVT_NOTIFY_SUSPEND, NULL);
+ 	clocksource_suspend();
+@@ -1101,13 +1113,13 @@ void get_monotonic_boottime(struct times
+ 	WARN_ON(timekeeping_suspended);
+ 
+ 	do {
+-		seq = read_seqbegin(&xtime_lock);
++		seq = read_seqcount_begin(&xtime_seq);
+ 		*ts = xtime;
+ 		tomono = wall_to_monotonic;
+ 		sleep = total_sleep_time;
+ 		nsecs = timekeeping_get_ns();
+ 
+-	} while (read_seqretry(&xtime_lock, seq));
++	} while (read_seqcount_retry(&xtime_seq, seq));
+ 
+ 	set_normalized_timespec(ts, ts->tv_sec + tomono.tv_sec + sleep.tv_sec,
+ 			ts->tv_nsec + tomono.tv_nsec + sleep.tv_nsec + nsecs);
+@@ -1158,10 +1170,10 @@ struct timespec current_kernel_time(void
+ 	unsigned long seq;
+ 
+ 	do {
+-		seq = read_seqbegin(&xtime_lock);
++		seq = read_seqcount_begin(&xtime_seq);
+ 
+ 		now = xtime;
+-	} while (read_seqretry(&xtime_lock, seq));
++	} while (read_seqcount_retry(&xtime_seq, seq));
+ 
+ 	return now;
+ }
+@@ -1173,11 +1185,11 @@ struct timespec get_monotonic_coarse(voi
+ 	unsigned long seq;
+ 
+ 	do {
+-		seq = read_seqbegin(&xtime_lock);
++		seq = read_seqcount_begin(&xtime_seq);
+ 
+ 		now = xtime;
+ 		mono = wall_to_monotonic;
+-	} while (read_seqretry(&xtime_lock, seq));
++	} while (read_seqcount_retry(&xtime_seq, seq));
+ 
+ 	set_normalized_timespec(&now, now.tv_sec + mono.tv_sec,
+ 				now.tv_nsec + mono.tv_nsec);
+@@ -1209,11 +1221,11 @@ void get_xtime_and_monotonic_and_sleep_o
+ 	unsigned long seq;
+ 
+ 	do {
+-		seq = read_seqbegin(&xtime_lock);
++		seq = read_seqcount_begin(&xtime_seq);
+ 		*xtim = xtime;
+ 		*wtom = wall_to_monotonic;
+ 		*sleep = total_sleep_time;
+-	} while (read_seqretry(&xtime_lock, seq));
++	} while (read_seqcount_retry(&xtime_seq, seq));
+ }
+ 
+ /**
+@@ -1225,9 +1237,9 @@ ktime_t ktime_get_monotonic_offset(void)
+ 	struct timespec wtom;
+ 
+ 	do {
+-		seq = read_seqbegin(&xtime_lock);
++		seq = read_seqcount_begin(&xtime_seq);
+ 		wtom = wall_to_monotonic;
+-	} while (read_seqretry(&xtime_lock, seq));
++	} while (read_seqcount_retry(&xtime_seq, seq));
+ 	return timespec_to_ktime(wtom);
+ }
+ 
+@@ -1239,7 +1251,9 @@ ktime_t ktime_get_monotonic_offset(void)
+  */
+ void xtime_update(unsigned long ticks)
+ {
+-	write_seqlock(&xtime_lock);
++	raw_spin_lock(&xtime_lock);
++	write_seqcount_begin(&xtime_seq);
+ 	do_timer(ticks);
+-	write_sequnlock(&xtime_lock);
++	write_seqcount_end(&xtime_seq);
++	raw_spin_unlock(&xtime_lock);
+ }

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/timer-fd-avoid-live-lock.patch (from r18697, dists/trunk/linux-2.6/debian/patches/features/all/rt/timer-fd-avoid-live-lock.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/timer-fd-avoid-live-lock.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18697, dists/trunk/linux-2.6/debian/patches/features/all/rt/timer-fd-avoid-live-lock.patch)
@@ -0,0 +1,29 @@
+Subject: timer-fd: Prevent live lock
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Wed, 25 Jan 2012 11:08:40 +0100
+
+If hrtimer_try_to_cancel() requires a retry, then depending on the
+priority setting te retry loop might prevent timer callback completion
+on RT. Prevent that by waiting for completion on RT, no change for a
+non RT kernel.
+
+Reported-by: Sankara Muthukrishnan <sankara.m at gmail.com>
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+Cc: stable-rt at vger.kernel.org
+---
+ fs/timerfd.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: linux-3.2/fs/timerfd.c
+===================================================================
+--- linux-3.2.orig/fs/timerfd.c
++++ linux-3.2/fs/timerfd.c
+@@ -313,7 +313,7 @@ SYSCALL_DEFINE4(timerfd_settime, int, uf
+ 		if (hrtimer_try_to_cancel(&ctx->tmr) >= 0)
+ 			break;
+ 		spin_unlock_irq(&ctx->wqh.lock);
+-		cpu_relax();
++		hrtimer_wait_for_timer(&ctx->tmr);
+ 	}
+ 
+ 	/*

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/timer-handle-idle-trylock-in-get-next-timer-irq.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/timer-handle-idle-trylock-in-get-next-timer-irq.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/timer-handle-idle-trylock-in-get-next-timer-irq.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -36,7 +36,7 @@
 ===================================================================
 --- linux-3.2.orig/kernel/rtmutex.c
 +++ linux-3.2/kernel/rtmutex.c
-@@ -860,15 +860,10 @@ EXPORT_SYMBOL(rt_spin_unlock_wait);
+@@ -861,15 +861,10 @@ EXPORT_SYMBOL(rt_spin_unlock_wait);
  
  int __lockfunc rt_spin_trylock(spinlock_t *lock)
  {

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/tty-use-local-irq-nort.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/tty-use-local-irq-nort.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/tty-use-local-irq-nort.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -29,7 +29,7 @@
 ===================================================================
 --- linux-3.2.orig/drivers/tty/tty_ldisc.c
 +++ linux-3.2/drivers/tty/tty_ldisc.c
-@@ -70,7 +70,7 @@ static void put_ldisc(struct tty_ldisc *
+@@ -71,7 +71,7 @@ static void put_ldisc(struct tty_ldisc *
  	 * We really want an "atomic_dec_and_lock_irqsave()",
  	 * but we don't have it, so this does it by hand.
  	 */
@@ -38,7 +38,7 @@
  	if (atomic_dec_and_lock(&ld->users, &tty_ldisc_lock)) {
  		struct tty_ldisc_ops *ldo = ld->ops;
  
-@@ -81,7 +81,7 @@ static void put_ldisc(struct tty_ldisc *
+@@ -82,7 +82,7 @@ static void put_ldisc(struct tty_ldisc *
  		kfree(ld);
  		return;
  	}

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/usb-fix-mouse-problem-copying-large-data.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/usb-fix-mouse-problem-copying-large-data.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/usb-fix-mouse-problem-copying-large-data.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -19,7 +19,7 @@
 ===================================================================
 --- linux-3.2.orig/drivers/usb/host/ohci-hcd.c
 +++ linux-3.2/drivers/usb/host/ohci-hcd.c
-@@ -833,9 +833,13 @@ static irqreturn_t ohci_irq (struct usb_
+@@ -830,9 +830,13 @@ static irqreturn_t ohci_irq (struct usb_
  	}
  
  	if (ints & OHCI_INTR_WDH) {

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/usb-hcd-use-local-irq-nort.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/usb-hcd-use-local-irq-nort.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/usb-hcd-use-local-irq-nort.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -16,7 +16,7 @@
 ===================================================================
 --- linux-3.2.orig/drivers/usb/core/hcd.c
 +++ linux-3.2/drivers/usb/core/hcd.c
-@@ -2146,7 +2146,7 @@ irqreturn_t usb_hcd_irq (int irq, void *
+@@ -2145,7 +2145,7 @@ irqreturn_t usb_hcd_irq (int irq, void *
  	 * when the first handler doesn't use it.  So let's just
  	 * assume it's never used.
  	 */
@@ -25,7 +25,7 @@
  
  	if (unlikely(HCD_DEAD(hcd) || !HCD_HW_ACCESSIBLE(hcd))) {
  		rc = IRQ_NONE;
-@@ -2159,7 +2159,7 @@ irqreturn_t usb_hcd_irq (int irq, void *
+@@ -2158,7 +2158,7 @@ irqreturn_t usb_hcd_irq (int irq, void *
  		rc = IRQ_HANDLED;
  	}
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/wait-provide-__wake_up_all_locked.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/wait-provide-__wake_up_all_locked.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/wait-provide-__wake_up_all_locked.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -8,10 +8,15 @@
 
 Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
 Cc: stable-rt at vger.kernel.org
-Index: linux-rt/include/linux/wait.h
+---
+ include/linux/wait.h |    5 +++--
+ kernel/sched.c       |    4 ++--
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+Index: linux-3.2/include/linux/wait.h
 ===================================================================
---- linux-rt.orig/include/linux/wait.h
-+++ linux-rt/include/linux/wait.h
+--- linux-3.2.orig/include/linux/wait.h
++++ linux-3.2/include/linux/wait.h
 @@ -157,7 +157,7 @@ void __wake_up(wait_queue_head_t *q, uns
  void __wake_up_locked_key(wait_queue_head_t *q, unsigned int mode, void *key);
  void __wake_up_sync_key(wait_queue_head_t *q, unsigned int mode, int nr,
@@ -31,11 +36,11 @@
  
  #define wake_up_interruptible(x)	__wake_up(x, TASK_INTERRUPTIBLE, 1, NULL)
  #define wake_up_interruptible_nr(x, nr)	__wake_up(x, TASK_INTERRUPTIBLE, nr, NULL)
-Index: linux-rt/kernel/sched.c
+Index: linux-3.2/kernel/sched.c
 ===================================================================
---- linux-rt.orig/kernel/sched.c
-+++ linux-rt/kernel/sched.c
-@@ -4643,9 +4643,9 @@ EXPORT_SYMBOL(__wake_up);
+--- linux-3.2.orig/kernel/sched.c
++++ linux-3.2/kernel/sched.c
+@@ -4637,9 +4637,9 @@ EXPORT_SYMBOL(__wake_up);
  /*
   * Same as __wake_up but called with the spinlock in wait_queue_head_t held.
   */

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86-io-apic-migra-no-unmask.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86-io-apic-migra-no-unmask.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86-io-apic-migra-no-unmask.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -16,7 +16,7 @@
 ===================================================================
 --- linux-3.2.orig/arch/x86/kernel/apic/io_apic.c
 +++ linux-3.2/arch/x86/kernel/apic/io_apic.c
-@@ -2518,7 +2518,8 @@ static void ack_apic_level(struct irq_da
+@@ -2521,7 +2521,8 @@ static void ack_apic_level(struct irq_da
  	irq_complete_move(cfg);
  #ifdef CONFIG_GENERIC_PENDING_IRQ
  	/* If we are moving the irq we need to mask it */

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86-kvm-require-const-tsc-for-rt.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86-kvm-require-const-tsc-for-rt.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86-kvm-require-const-tsc-for-rt.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -11,7 +11,7 @@
 ===================================================================
 --- linux-3.2.orig/arch/x86/kvm/x86.c
 +++ linux-3.2/arch/x86/kvm/x86.c
-@@ -5185,6 +5185,13 @@ int kvm_arch_init(void *opaque)
+@@ -5184,6 +5184,13 @@ int kvm_arch_init(void *opaque)
  		goto out;
  	}
  

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86-mce-timer-hrtimer.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86-mce-timer-hrtimer.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86-mce-timer-hrtimer.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -103,7 +103,7 @@
  }
  
  /* Handle unconfigured int18 (should never happen) */
-@@ -2004,6 +2005,8 @@ static void __cpuinit mce_disable_cpu(vo
+@@ -2023,6 +2024,8 @@ static void __cpuinit mce_disable_cpu(vo
  	if (!mce_available(__this_cpu_ptr(&cpu_info)))
  		return;
  
@@ -112,7 +112,7 @@
  	if (!(action & CPU_TASKS_FROZEN))
  		cmci_clear();
  	for (i = 0; i < banks; i++) {
-@@ -2030,6 +2033,7 @@ static void __cpuinit mce_reenable_cpu(v
+@@ -2049,6 +2052,7 @@ static void __cpuinit mce_reenable_cpu(v
  		if (b->init)
  			wrmsrl(MSR_IA32_MCx_CTL(i), b->ctl);
  	}
@@ -120,7 +120,7 @@
  }
  
  /* Get notified when a cpu comes on/off. Be hotplug friendly. */
-@@ -2037,7 +2041,6 @@ static int __cpuinit
+@@ -2056,7 +2060,6 @@ static int __cpuinit
  mce_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu)
  {
  	unsigned int cpu = (unsigned long)hcpu;
@@ -128,7 +128,7 @@
  
  	switch (action) {
  	case CPU_ONLINE:
-@@ -2054,16 +2057,10 @@ mce_cpu_callback(struct notifier_block *
+@@ -2073,16 +2076,10 @@ mce_cpu_callback(struct notifier_block *
  		break;
  	case CPU_DOWN_PREPARE:
  	case CPU_DOWN_PREPARE_FROZEN:

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86-vdso-remove-bogus-locking-in-update_vsyscall_tz.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/x86-vdso-remove-bogus-locking-in-update_vsyscall_tz.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86-vdso-remove-bogus-locking-in-update_vsyscall_tz.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/x86-vdso-remove-bogus-locking-in-update_vsyscall_tz.patch)
@@ -0,0 +1,32 @@
+Subject: x86: vdso: Remove bogus locking in update_vsyscall_tz()
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Tue, 28 Feb 2012 19:10:46 +0100
+
+Changing the sequence count in update_vsyscall_tz() is completely
+pointless. 
+
+The vdso code copies the data unprotected. There is no point to change
+this as sys_tz is nowhere protected at all. See sys_gettimeofday().
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ arch/x86/kernel/vsyscall_64.c |    5 -----
+ 1 file changed, 5 deletions(-)
+
+Index: linux-2.6/arch/x86/kernel/vsyscall_64.c
+===================================================================
+--- linux-2.6.orig/arch/x86/kernel/vsyscall_64.c
++++ linux-2.6/arch/x86/kernel/vsyscall_64.c
+@@ -80,12 +80,7 @@ early_param("vsyscall", vsyscall_setup);
+ 
+ void update_vsyscall_tz(void)
+ {
+-	unsigned long flags;
+-
+-	write_seqlock_irqsave(&vsyscall_gtod_data.lock, flags);
+-	/* sys_tz has changed */
+ 	vsyscall_gtod_data.sys_tz = sys_tz;
+-	write_sequnlock_irqrestore(&vsyscall_gtod_data.lock, flags);
+ }
+ 
+ void update_vsyscall(struct timespec *wall_time, struct timespec *wtm,

Copied: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86-vdso-use-seqcount.patch (from r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/x86-vdso-use-seqcount.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86-vdso-use-seqcount.patch	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/patches/features/all/rt/x86-vdso-use-seqcount.patch)
@@ -0,0 +1,124 @@
+Subject: x86: vdso: Use seqcount instead of seqlock
+From: Thomas Gleixner <tglx at linutronix.de>
+Date: Tue, 28 Feb 2012 18:24:07 +0100
+
+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.
+
+Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
+---
+ arch/x86/include/asm/vgtod.h   |    2 +-
+ arch/x86/kernel/vsyscall_64.c  |   11 +++--------
+ arch/x86/vdso/vclock_gettime.c |   16 ++++++++--------
+ 3 files changed, 12 insertions(+), 17 deletions(-)
+
+Index: linux-3.2/arch/x86/include/asm/vgtod.h
+===================================================================
+--- linux-3.2.orig/arch/x86/include/asm/vgtod.h
++++ linux-3.2/arch/x86/include/asm/vgtod.h
+@@ -5,7 +5,7 @@
+ #include <linux/clocksource.h>
+ 
+ struct vsyscall_gtod_data {
+-	seqlock_t	lock;
++	seqcount_t	seq;
+ 
+ 	/* open coded 'struct timespec' */
+ 	time_t		wall_time_sec;
+Index: linux-3.2/arch/x86/kernel/vsyscall_64.c
+===================================================================
+--- linux-3.2.orig/arch/x86/kernel/vsyscall_64.c
++++ linux-3.2/arch/x86/kernel/vsyscall_64.c
+@@ -52,10 +52,7 @@
+ #include "vsyscall_trace.h"
+ 
+ DEFINE_VVAR(int, vgetcpu_mode);
+-DEFINE_VVAR(struct vsyscall_gtod_data, vsyscall_gtod_data) =
+-{
+-	.lock = __SEQLOCK_UNLOCKED(__vsyscall_gtod_data.lock),
+-};
++DEFINE_VVAR(struct vsyscall_gtod_data, vsyscall_gtod_data);
+ 
+ static enum { EMULATE, NATIVE, NONE } vsyscall_mode = NATIVE;
+ 
+@@ -86,9 +83,7 @@ void update_vsyscall_tz(void)
+ void update_vsyscall(struct timespec *wall_time, struct timespec *wtm,
+ 			struct clocksource *clock, u32 mult)
+ {
+-	unsigned long flags;
+-
+-	write_seqlock_irqsave(&vsyscall_gtod_data.lock, flags);
++	write_seqcount_begin(&vsyscall_gtod_data.seq);
+ 
+ 	/* copy vsyscall data */
+ 	vsyscall_gtod_data.clock.vclock_mode	= clock->archdata.vclock_mode;
+@@ -101,7 +96,7 @@ void update_vsyscall(struct timespec *wa
+ 	vsyscall_gtod_data.wall_to_monotonic	= *wtm;
+ 	vsyscall_gtod_data.wall_time_coarse	= __current_kernel_time();
+ 
+-	write_sequnlock_irqrestore(&vsyscall_gtod_data.lock, flags);
++	write_seqcount_end(&vsyscall_gtod_data.seq);
+ }
+ 
+ static void warn_bad_vsyscall(const char *level, struct pt_regs *regs,
+Index: linux-3.2/arch/x86/vdso/vclock_gettime.c
+===================================================================
+--- linux-3.2.orig/arch/x86/vdso/vclock_gettime.c
++++ linux-3.2/arch/x86/vdso/vclock_gettime.c
+@@ -86,11 +86,11 @@ notrace static noinline int do_realtime(
+ {
+ 	unsigned long seq, ns;
+ 	do {
+-		seq = read_seqbegin(&gtod->lock);
++		seq = read_seqcount_begin(&gtod->seq);
+ 		ts->tv_sec = gtod->wall_time_sec;
+ 		ts->tv_nsec = gtod->wall_time_nsec;
+ 		ns = vgetns();
+-	} while (unlikely(read_seqretry(&gtod->lock, seq)));
++	} while (unlikely(read_seqcount_retry(&gtod->seq, seq)));
+ 	timespec_add_ns(ts, ns);
+ 	return 0;
+ }
+@@ -99,12 +99,12 @@ notrace static noinline int do_monotonic
+ {
+ 	unsigned long seq, ns, secs;
+ 	do {
+-		seq = read_seqbegin(&gtod->lock);
++		seq = read_seqcount_begin(&gtod->seq);
+ 		secs = gtod->wall_time_sec;
+ 		ns = gtod->wall_time_nsec + vgetns();
+ 		secs += gtod->wall_to_monotonic.tv_sec;
+ 		ns += gtod->wall_to_monotonic.tv_nsec;
+-	} while (unlikely(read_seqretry(&gtod->lock, seq)));
++	} while (unlikely(read_seqcount_retry(&gtod->seq, seq)));
+ 
+ 	/* wall_time_nsec, vgetns(), and wall_to_monotonic.tv_nsec
+ 	 * are all guaranteed to be nonnegative.
+@@ -123,10 +123,10 @@ notrace static noinline int do_realtime_
+ {
+ 	unsigned long seq;
+ 	do {
+-		seq = read_seqbegin(&gtod->lock);
++		seq = read_seqcount_begin(&gtod->seq);
+ 		ts->tv_sec = gtod->wall_time_coarse.tv_sec;
+ 		ts->tv_nsec = gtod->wall_time_coarse.tv_nsec;
+-	} while (unlikely(read_seqretry(&gtod->lock, seq)));
++	} while (unlikely(read_seqcount_retry(&gtod->seq, seq)));
+ 	return 0;
+ }
+ 
+@@ -134,12 +134,12 @@ notrace static noinline int do_monotonic
+ {
+ 	unsigned long seq, ns, secs;
+ 	do {
+-		seq = read_seqbegin(&gtod->lock);
++		seq = read_seqcount_begin(&gtod->seq);
+ 		secs = gtod->wall_time_coarse.tv_sec;
+ 		ns = gtod->wall_time_coarse.tv_nsec;
+ 		secs += gtod->wall_to_monotonic.tv_sec;
+ 		ns += gtod->wall_to_monotonic.tv_nsec;
+-	} while (unlikely(read_seqretry(&gtod->lock, seq)));
++	} while (unlikely(read_seqcount_retry(&gtod->seq, seq)));
+ 
+ 	/* wall_time_nsec and wall_to_monotonic.tv_nsec are
+ 	 * guaranteed to be between 0 and NSEC_PER_SEC.

Modified: dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86_64-patch-for-idle-notifiers.patch
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86_64-patch-for-idle-notifiers.patch	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/features/all/rt/x86_64-patch-for-idle-notifiers.patch	Sat Mar 10 17:58:57 2012	(r18803)
@@ -51,7 +51,7 @@
 ===================================================================
 --- linux-3.2.orig/arch/x86/kernel/apic/apic.c
 +++ linux-3.2/arch/x86/kernel/apic/apic.c
-@@ -857,8 +857,8 @@ void __irq_entry smp_apic_timer_interrup
+@@ -876,8 +876,8 @@ void __irq_entry smp_apic_timer_interrup
  	 * Besides, if we don't timer interrupts ignore the global
  	 * interrupt lock, which is the WrongThing (tm) to do.
  	 */
@@ -61,7 +61,7 @@
  	local_apic_timer_interrupt();
  	irq_exit();
  
-@@ -1790,8 +1790,8 @@ void smp_spurious_interrupt(struct pt_re
+@@ -1809,8 +1809,8 @@ void smp_spurious_interrupt(struct pt_re
  {
  	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...
-@@ -1827,8 +1827,8 @@ void smp_error_interrupt(struct pt_regs 
+@@ -1846,8 +1846,8 @@ void smp_error_interrupt(struct pt_regs 
  		"Illegal register address",	/* APIC Error Bit 7 */
  	};
  
@@ -85,7 +85,7 @@
 ===================================================================
 --- linux-3.2.orig/arch/x86/kernel/apic/io_apic.c
 +++ linux-3.2/arch/x86/kernel/apic/io_apic.c
-@@ -2418,8 +2418,8 @@ asmlinkage void smp_irq_move_cleanup_int
+@@ -2421,8 +2421,8 @@ asmlinkage void smp_irq_move_cleanup_int
  	unsigned vector, me;
  
  	ack_APIC_irq();

Modified: dists/squeeze-backports/linux-2.6/debian/patches/series/base
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/series/base	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/series/base	Sat Mar 10 17:58:57 2012	(r18803)
@@ -73,4 +73,17 @@
 + bugfix/x86/KVM-nVMX-Fix-warning-causing-idt-vectoring-info-beha.patch
 + bugfix/x86/KVM-x86-extend-struct-x86_emulate_ops-with-get_cpuid.patch
 + bugfix/x86/KVM-x86-fix-missing-checks-in-syscall-emulation.patch
-+ bugfix/all/pci-rework-aspm-disable-code.patch
+
++ features/all/hwmon-it87-Add-IT8728F-support.patch
++ bugfix/arm/ARM-ixp4xx-mtd-oops.patch
+
++ bugfix/x86/drm-i915-do-not-enable-RC6p-on-Sandy-Bridge.patch
++ bugfix/x86/drm-i915-fix-operator-precedence-when-enabling-RC6p.patch
++ bugfix/all/ipsec-be-careful-of-non-existing-mac-headers.patch
+
++ features/all/fs-symlink-restrictions-on-sticky-directories.patch
++ features/all/fs-symlink-restrictions-on-sticky-directories-fix-2.patch
++ features/all/fs-hardlink-creation-restrictions.patch
++ features/all/fs-hardlink-creation-restrictions-fix.patch
++ features/all/fs-hardlink-creation-restriction-cleanup.patch
++ bugfix/all/iwlwifi-fix-key-removal.patch

Modified: dists/squeeze-backports/linux-2.6/debian/patches/series/base-extra
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/patches/series/base-extra	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/patches/series/base-extra	Sat Mar 10 17:58:57 2012	(r18803)
@@ -12,6 +12,16 @@
 + features/all/rt/power-allow-irq-threading.patch featureset=rt
 + features/all/rt/sched-keep-period-timer-alive-when-throttled.patch featureset=rt
 + features/all/rt/sched-prevent-boosting-from-throttling.patch featureset=rt
++ features/all/rt/time-remove-bogus-comments.patch featureset=rt
++ features/all/rt/x86-vdso-remove-bogus-locking-in-update_vsyscall_tz.patch featureset=rt
++ features/all/rt/x86-vdso-use-seqcount.patch featureset=rt
++ features/all/rt/ia64-vdso-use-seqcount.patch featureset=rt
++ features/all/rt/seqlock-remove-unused-functions.patch featureset=rt
++ features/all/rt/seqlock-use-seqcount.patch featureset=rt
++ features/all/rt/seqlock-provide-seq-spin-lock.patch featureset=rt
++ features/all/rt/fs-struct-use-seqlock.patch featureset=rt
++ features/all/rt/fs-dentry-use-seqlock.patch featureset=rt
++ features/all/rt/timekeeping-split-xtime-lock.patch featureset=rt
 + features/all/rt/intel_idle-convert-i7300_idle_lock-to-raw-spinlock.patch featureset=rt
 + features/all/rt/mm-memcg-shorten-preempt-disabled-section-around-event-checks.patch featureset=rt
 + features/all/rt/tracing-account-for-preempt-off-in-preempt_schedule.patch featureset=rt
@@ -24,6 +34,7 @@
 + features/all/rt/signals-do-not-wake-self.patch featureset=rt
 + features/all/rt/posix-timers-no-broadcast.patch featureset=rt
 + features/all/rt/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch featureset=rt
++ features/all/rt/oleg-signal-rt-fix.patch featureset=rt
 + features/all/rt/generic-cmpxchg-use-raw-local-irq.patch featureset=rt
 + features/all/rt/drivers-random-reduce-preempt-disabled-region.patch featureset=rt
 + features/all/rt/arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch featureset=rt
@@ -53,16 +64,11 @@
 + features/all/rt/softirq-split-out-code.patch featureset=rt
 + features/all/rt/x86-io-apic-migra-no-unmask.patch featureset=rt
 + features/all/rt/x86-32-fix-signal-crap.patch featureset=rt
++ features/all/rt/fix-rt-int3-x86_32-3.2-rt.patch featureset=rt
 + features/all/rt/rcu-reduce-lock-section.patch featureset=rt
 + features/all/rt/locking-various-init-fixes.patch featureset=rt
-+ features/all/rt/seqlock-remove-unused-functions.patch featureset=rt
-+ features/all/rt/seqlock-use-seqcount.patch featureset=rt
 + features/all/rt/wait-provide-__wake_up_all_locked.patch featureset=rt
 + features/all/rt/pci-access-use-__wake_up_all_locked.patch featureset=rt
-+ features/all/rt/acpi-make-gbl-hardware-lock-raw.patch featureset=rt
-+ features/all/rt/acpi-make-ec-lock-raw-as-well.patch featureset=rt
-+ features/all/rt/seqlock-raw-seqlock.patch featureset=rt
-+ features/all/rt/timekeeping-covert-xtimelock.patch featureset=rt
 + features/all/rt/latency-hist.patch featureset=rt
 + features/all/rt/hwlatdetect.patch featureset=rt
 + features/all/rt/early-printk-consolidate.patch featureset=rt
@@ -129,6 +135,7 @@
 + features/all/rt/peter_zijlstra-frob-hrtimer.patch featureset=rt
 + features/all/rt/hrtimer-add-missing-debug_activate-aid-was-re-announce-3-0-6-rt17.patch featureset=rt
 + features/all/rt/hrtimer-fix-reprogram-madness.patch featureset=rt
++ features/all/rt/timer-fd-avoid-live-lock.patch featureset=rt
 + features/all/rt/posix-timers-thread-posix-cpu-timers-on-rt.patch featureset=rt
 + features/all/rt/posix-timers-shorten-cpu-timers-thread.patch featureset=rt
 + features/all/rt/posix-timers-avoid-wakeups-when-no-timers-are-active.patch featureset=rt
@@ -179,10 +186,12 @@
 + features/all/rt/softirq-disable-softirq-stacks-for-rt.patch featureset=rt
 + features/all/rt/softirq-make-fifo.patch featureset=rt
 + features/all/rt/tasklet-rt-prevent-tasklets-from-going-into-infinite-spin-in-rt.patch featureset=rt
++ features/all/rt/irq-allow-disabling-of-softirq-processing-in-irq-thread-context.patch featureset=rt
 + features/all/rt/local-vars-migrate-disable.patch featureset=rt
 + features/all/rt/md-raid5-percpu-handling-rt-aware.patch featureset=rt
 + features/all/rt/rtmutex-lock-killable.patch featureset=rt
 + features/all/rt/rtmutex-futex-prepare-rt.patch featureset=rt
++ features/all/rt/futex-requeue-pi-fix.patch featureset=rt
 + features/all/rt/rt-mutex-add-sleeping-spinlocks-support.patch featureset=rt
 + features/all/rt/spinlock-types-separate-raw.patch featureset=rt
 + features/all/rt/rtmutex-avoid-include-hell.patch featureset=rt
@@ -241,8 +250,15 @@
 + features/all/rt/scsi-fcoe-rt-aware.patch featureset=rt
 + features/all/rt/x86-crypto-reduce-preempt-disabled-regions.patch featureset=rt
 + features/all/rt/dm-make-rt-aware.patch featureset=rt
-+ features/all/rt/wait-simple-version.patch featureset=rt
-+ features/all/rt/acpi-gpe-use-wait-simple.patch featureset=rt
 + features/all/rt/cpumask-disable-offstack-on-rt.patch featureset=rt
++ features/all/rt/seqlock-prevent-rt-starvation.patch featureset=rt
++ features/all/rt/fs-protect-opencoded-isize-seqcount.patch featureset=rt
++ features/all/rt/net-u64-stat-protect-seqcount.patch featureset=rt
++ features/all/rt/rfc-timer-fix-hotplug-for-rt.patch featureset=rt
++ features/all/rt/rfc-futex-rt-fix-possible-lockup-when-taking-pi_lock-in-proxy-handler.patch featureset=rt
++ features/all/rt/rfc-ring-buffer-rt-check-for-irqs-disabled-before-grabbing-reader-lock.patch featureset=rt
++ features/all/rt/rfc-sched-rt-fix-wait_task_interactive-to-test-rt_spin_lock-state.patch featureset=rt
++ features/all/rt/rfc-lglock-rt-use-non-rt-for_each_cpu-in-rt-code.patch featureset=rt
++ features/all/rt/cpu-rt-make-hotplug-lock-a-sleeping-spinlock-on-rt.patch featureset=rt
 + features/all/rt/kconfig-disable-a-few-options-rt.patch featureset=rt
 + features/all/rt/kconfig-preempt-rt-full.patch featureset=rt

Modified: dists/squeeze-backports/linux-2.6/debian/po/nl.po
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/po/nl.po	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/po/nl.po	Sat Mar 10 17:58:57 2012	(r18803)
@@ -7,10 +7,11 @@
 msgstr ""
 "Project-Id-Version: linux-2.6\n"
 "Report-Msgid-Bugs-To: linux-2.6 at packages.debian.org\n"
-"POT-Creation-Date: 2011-03-30 10:34+0200\n"
-"PO-Revision-Date: 2011-04-02 20:07+0100\n"
+"POT-Creation-Date: 2011-07-04 04:24+0100\n"
+"PO-Revision-Date: 2012-02-04 12:27+0100\n"
 "Last-Translator: willem kuyn <willemkuyn at gmail.com>\n"
 "Language-Team: Debian-Dutch <debian-l10n-dutch at lists.debian.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -19,7 +20,7 @@
 #. Description
 #: ../templates/temp.image.plain/templates:2001
 msgid "Abort installation after depmod error?"
-msgstr "Installatie afbreken na depmod fout? "
+msgstr "Installatie afbreken na depmod fout?"
 
 #. Type: boolean
 #. Description
@@ -37,7 +38,7 @@
 #. Description
 #: ../templates/temp.image.plain/templates:2001
 msgid "You should abort the installation and fix the errors in depmod, or regenerate the initrd image with a known good modules.dep file. If you don't abort the installation, there is a danger that the system will fail to boot."
-msgstr "U zou de installatie moeten afbreken en de fouten in depmod herstellen, of het initrd bestand opnieuw moeten genereren met een correct modules.dep bestand. Als u de installatie niet afbreekt dan bestaat het gevaar dat het systeem niet zal starten."
+msgstr "U zou de installatie moeten afbreken en de fouten in depmod herstellen, of het initrd-bestand opnieuw moeten genereren met een correct modules.dep bestand. Als u de installatie niet afbreekt dan bestaat het gevaar dat het systeem niet zal starten."
 
 #. Type: boolean
 #. Description
@@ -49,7 +50,7 @@
 #. Description
 #: ../templates/temp.image.plain/templates:3001
 msgid "You are running a kernel (version ${running}) and attempting to remove the same version."
-msgstr "U gebruikt kernel (versie ${running}) en probeert de zelfde versie te verwijderen."
+msgstr "U gebruikt kernel (versie ${running}) en probeert dezelfde versie te verwijderen."
 
 #. Type: boolean
 #. Description
@@ -67,35 +68,29 @@
 #. Description
 #: ../templates/temp.image.plain/templates:4001
 msgid "Required firmware files may be missing"
-msgstr "De vereiste firmware bestanden kunnen ontbreken"
+msgstr "De vereiste firmware-bestanden kunnen ontbreken"
 
 #. Type: note
 #. Description
 #: ../templates/temp.image.plain/templates:4001
 msgid "This system is currently running Linux ${runningversion} and you are installing Linux ${version}.  In the new version some of the drivers used on this system may require additional firmware files:"
-msgstr "Het systeem draait op dit moment Linux ${runningversion} en u installeert Linux ${version}. In de nieuwe versie kunnen enkele stuurprogramma's van het systeem aparte firmware bestanden nodig hebben."
+msgstr "Het systeem draait op dit moment Linux ${runningversion} en u installeert Linux ${version}. In de nieuwe versie kunnen enkele stuurprogramma's van het systeem aparte firmware-bestanden nodig hebben."
 
 #. Type: note
 #. Description
 #: ../templates/temp.image.plain/templates:4001
 msgid "Most firmware files are not included in the system because they do not conform to the Debian Free Software Guidelines. You may need to reconfigure the package manager to include the contrib and non-free sections of the package archive before you can install these firmware files."
-msgstr "Veel firmware bestanden zijn niet in het systeem opgenomen omdat zij niet voldoen aan de Debian Free Software Guidelines. Mogelijk moet u de configuratie van de pakket manager aanpassen en de contrib en non-free secties van het pakket archief toevoegen voordat u deze firmware bestanden kunt installeren. "
+msgstr "Veel firmware-bestanden zijn niet in het systeem opgenomen omdat zij niet voldoen aan de Debian Richtlijnen voor Vrije Software (DFSG). Mogelijk moet u de configuratie van de pakketbeheerprogramma aanpassen en de contrib en non-free secties van het pakketarchief toevoegen voordat u deze firmware bestanden kunt installeren. "
 
 #. Type: error
 #. Description
 #: ../templates/temp.image.plain/templates:5001
-msgid "Boot loader configuration must be updated"
-msgstr "De bootloader configuratie moet worden aangepast."
+#| msgid "Boot loader configuration must be updated"
+msgid "Ramdisk configuration must be updated"
+msgstr "De ramdisk-configuratie moet worden aangepast."
 
 #. Type: error
 #. Description
 #: ../templates/temp.image.plain/templates:5001
-msgid "Kernel packages no longer update a default boot loader.  You should remove 'do_bootloader = yes' from /etc/kernel-img.conf."
-msgstr "Kernel pakketten passen de bootloader configuratie niet langer aan. U dient do_bootloader = yes' uit /etc/kernel-img.conf te verwijderen."
-
-#. Type: error
-#. Description
-#: ../templates/temp.image.plain/templates:5001
-msgid "If the boot loader needs to be updated whenever a new kernel is installed, the boot loader package should install a script in /etc/kernel/postinst.d.  Alternately, you can specify the command to update the boot loader by setting the 'postinst_hook' variable in /etc/kernel-img.conf."
-msgstr "Als de bootloader configuratie aangepast moet worden bij de installatie van een nieuwe kernel dan dient het bootloader pakket eeen script in /etc/kernel/postinst.d te installeren. Anders kunt u de opdracht om de bootloader configuratie aanpassen door het aanzetten van de 'postinst_hook' variabele in /etc/kernel-img.conf."
-
+msgid "Kernel packages will no longer run a specific ramdisk creator.  The ramdisk creator package must install a script in /etc/kernel/postinst.d, and you should remove the line beginning 'ramdisk =' from /etc/kernel-img.conf."
+msgstr "Kernel pakketten starten niet langer een bepaalde ramdisk generator. Het ramdisk generator pakket moet een script in /etc/kernel/postinst.d installeren en u dient de regel te verwijderen die begint met 'ramdisk =' uit /etc/kernel-img.conf."

Copied: dists/squeeze-backports/linux-2.6/debian/po/pl.po (from r18788, dists/sid/linux-2.6/debian/po/pl.po)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/po/pl.po	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/po/pl.po)
@@ -0,0 +1,153 @@
+# Translation of linux-2.6 debconf templates to Polish.
+# Copyright (C) 2011
+# This file is distributed under the same license as the linux-2.6 package.
+#
+# Michał Kułach <michal.kulach at gmail.com>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: linux-2.6 at packages.debian.org\n"
+"POT-Creation-Date: 2011-07-04 04:24+0100\n"
+"PO-Revision-Date: 2012-02-05 18:38+0100\n"
+"Last-Translator: Michał Kułach <michal.kulach at gmail.com>\n"
+"Language-Team: Polish <debian-l10n-polish at lists.debian.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.2\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+
+#. Type: boolean
+#. Description
+#: ../templates/temp.image.plain/templates:2001
+msgid "Abort installation after depmod error?"
+msgstr "Przerwać instalację po błędzie depmod?"
+
+#. Type: boolean
+#. Description
+#: ../templates/temp.image.plain/templates:2001
+msgid ""
+"The 'depmod' command exited with the exit code ${exit_value} "
+"(${SIGNAL}${CORE})."
+msgstr ""
+"Polecenie \"depmod\" zakończyło się z kodem wyjścia ${exit_value} "
+"(${SIGNAL}${CORE})."
+
+#. Type: boolean
+#. Description
+#: ../templates/temp.image.plain/templates:2001
+msgid ""
+"Since this image uses initrd, the ${modules_base}/=V/modules.dep file will "
+"not be deleted, even though it may be invalid."
+msgstr ""
+"Ponieważ ten obraz używa initrd, plik ${modules_base}/=V/modules.dep nie "
+"zostanie usunięty, nawet jeśli może być nieprawidłowy."
+
+#. Type: boolean
+#. Description
+#: ../templates/temp.image.plain/templates:2001
+msgid ""
+"You should abort the installation and fix the errors in depmod, or "
+"regenerate the initrd image with a known good modules.dep file. If you don't "
+"abort the installation, there is a danger that the system will fail to boot."
+msgstr ""
+"Należy przerwać instalację i naprawić błędy depmod lub wygenerować obraz "
+"initrd ponownie z poprawnym, znanym plikiem modules.dep. Jeśli instalacja nie "
+"zostanie przerwana, istnieje niebezpieczeństwo, że system może się nie "
+"uruchomić."
+
+#. Type: boolean
+#. Description
+#: ../templates/temp.image.plain/templates:3001
+msgid "Abort kernel removal?"
+msgstr "Przerwać usuwanie jądra?"
+
+#. Type: boolean
+#. Description
+#: ../templates/temp.image.plain/templates:3001
+msgid ""
+"You are running a kernel (version ${running}) and attempting to remove the "
+"same version."
+msgstr ""
+"Aktualnie używane jest jądro (wersja ${running}) i próbuje się usunąć tę samą "
+"wersję."
+
+#. Type: boolean
+#. Description
+#: ../templates/temp.image.plain/templates:3001
+msgid ""
+"This can make the system unbootable as it will remove /boot/vmlinuz-"
+"${running} and all modules under the directory /lib/modules/${running}. This "
+"can only be fixed with a copy of the kernel image and the corresponding "
+"modules."
+msgstr ""
+"Skutkiem mogą być problemy z rozruchem systemu, ponieważ zostanie usunięty "
+"/boot/vmlinuz-${running} i wszystkie moduły z katalogu "
+"/lib/modules/${running}. Jedynym rozwiązaniem w takim wypadku jest "
+"skopiowanie obrazu jądra i towarzyszących mu modułów."
+
+#. Type: boolean
+#. Description
+#: ../templates/temp.image.plain/templates:3001
+msgid ""
+"It is highly recommended to abort the kernel removal unless you are prepared "
+"to fix the system after removal."
+msgstr ""
+"Jest wysoce zalecane, aby przerwać usuwanie jądra, chyba że użytkownik jest "
+"przygotowany do naprawy systemu po usunięciu."
+
+#. Type: note
+#. Description
+#: ../templates/temp.image.plain/templates:4001
+msgid "Required firmware files may be missing"
+msgstr "Wymagane pliki firmware mogą być niedostępne"
+
+#. Type: note
+#. Description
+#: ../templates/temp.image.plain/templates:4001
+msgid ""
+"This system is currently running Linux ${runningversion} and you are "
+"installing Linux ${version}.  In the new version some of the drivers used on "
+"this system may require additional firmware files:"
+msgstr ""
+"System działa obecnie na jądrze Linux ${runningversion}, a instalowany jest "
+"Linux ${version}. W nowej wersji niektóre ze sterowników używanych przez "
+"system, mogą wymagać dodatkowych plików firmware:"
+
+#. Type: note
+#. Description
+#: ../templates/temp.image.plain/templates:4001
+msgid ""
+"Most firmware files are not included in the system because they do not "
+"conform to the Debian Free Software Guidelines. You may need to reconfigure "
+"the package manager to include the contrib and non-free sections of the "
+"package archive before you can install these firmware files."
+msgstr ""
+"Większość plików firmware nie jest dołączonych do systemu, ponieważ nie "
+"spełniają Wytycznych Debiana dotyczących Wolnego Oprogramowania. Może zajść "
+"potrzeba ponownej konfiguracji menedżera pakietów, aby dołączyć sekcje "
+"contrib i non-free archiwum pakietów, przed możliwością zainstalowania "
+"potrzebnych plików firmware."
+
+#. Type: error
+#. Description
+#: ../templates/temp.image.plain/templates:5001
+msgid "Ramdisk configuration must be updated"
+msgstr "Konfiguracja ramdisku musi zostać zaktualizowana"
+
+#. Type: error
+#. Description
+#: ../templates/temp.image.plain/templates:5001
+msgid ""
+"Kernel packages will no longer run a specific ramdisk creator.  The ramdisk "
+"creator package must install a script in /etc/kernel/postinst.d, and you "
+"should remove the line beginning 'ramdisk =' from /etc/kernel-img.conf."
+msgstr ""
+"Pakiety jądra nie uruchamiają dłużej specjalnego kreatora ramdisku. Pakiet "
+"kreatora ramdisku musi zainstalować skrypt w /etc/kernel/postinst.d, a "
+"użytkownik powinien usunąć wszystkie wiersze zaczynające się od \"ramdisk =\" "
+"z pliku /etc/kernel-img.conf."
+
+

Copied: dists/squeeze-backports/linux-2.6/debian/po/tr.po (from r18788, dists/sid/linux-2.6/debian/po/tr.po)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/squeeze-backports/linux-2.6/debian/po/tr.po	Sat Mar 10 17:58:57 2012	(r18803, copy of r18788, dists/sid/linux-2.6/debian/po/tr.po)
@@ -0,0 +1,96 @@
+# Turkish translation of linux-2.6 debconf template.
+# Copyright (C) 2012
+# This file is distributed under the same license as the linux-2.6 package.
+# Mert Dirik <mertdirik at gmail.com>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: linux-2.6 3.2.4-1\n"
+"Report-Msgid-Bugs-To: linux-2.6 at packages.debian.org\n"
+"POT-Creation-Date: 2011-07-04 04:24+0100\n"
+"PO-Revision-Date: 2012-02-12 22:36+0200\n"
+"Last-Translator: Mert Dirik <mertdirik at gmail.com>\n"
+"Language-Team: Debian L10n Turkish <debian-l10n-turkish at lists.debian.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: boolean
+#. Description
+#: ../templates/temp.image.plain/templates:2001
+msgid "Abort installation after depmod error?"
+msgstr "depmod hatasından sonra kurulum iptal edilsin mi?"
+
+#. Type: boolean
+#. Description
+#: ../templates/temp.image.plain/templates:2001
+msgid "The 'depmod' command exited with the exit code ${exit_value} (${SIGNAL}${CORE})."
+msgstr "'depmod' komutu ${exit_value} (${SIGNAL}${CORE}) çıkış koduyla sonlandı."
+
+#. Type: boolean
+#. Description
+#: ../templates/temp.image.plain/templates:2001
+msgid "Since this image uses initrd, the ${modules_base}/=V/modules.dep file will not be deleted, even though it may be invalid."
+msgstr "Bu görüntü initrd kullandığından ötürü ${modules_base}/=V/modules.dep dosyası, dosya geçersiz olsa da silinmeyecektir."
+
+#. Type: boolean
+#. Description
+#: ../templates/temp.image.plain/templates:2001
+msgid "You should abort the installation and fix the errors in depmod, or regenerate the initrd image with a known good modules.dep file. If you don't abort the installation, there is a danger that the system will fail to boot."
+msgstr "Ya kurulumu iptal edip depmod'daki hataları düzeltmeli ya da initrd görüntüsünü düzgün olduğu bilinen bir modules.dep dosyasıyla yeniden oluşturmalısınız. Kurulumu iptal etmediğiniz takdirde sisteminizin başlamama olasılığı vardır."
+
+#. Type: boolean
+#. Description
+#: ../templates/temp.image.plain/templates:3001
+msgid "Abort kernel removal?"
+msgstr "Çekirdeği kaldırma işlemi iptal edilsin mi?"
+
+#. Type: boolean
+#. Description
+#: ../templates/temp.image.plain/templates:3001
+msgid "You are running a kernel (version ${running}) and attempting to remove the same version."
+msgstr "Kullandığınız çekirdekle (${running}) aynı sürümdeki çekirdeği kaldırmaya çalışıyorsunuz."
+
+#. Type: boolean
+#. Description
+#: ../templates/temp.image.plain/templates:3001
+msgid "This can make the system unbootable as it will remove /boot/vmlinuz-${running} and all modules under the directory /lib/modules/${running}. This can only be fixed with a copy of the kernel image and the corresponding modules."
+msgstr "Bu eylem sisteminizi başlatılamaz hale getirebilir ( /boot/vmlinuz-${running} dosyasını ve  /lib/modules/${running} dizinindeki tüm modülleri kaldıracağından dolayı). Bu durum yalnızca bir çekirdek görüntüsü ve bu görüntüye uygun modüller yardımıyla düzeltilebilir."
+
+#. Type: boolean
+#. Description
+#: ../templates/temp.image.plain/templates:3001
+msgid "It is highly recommended to abort the kernel removal unless you are prepared to fix the system after removal."
+msgstr "Kaldırma işlemi sonrasında sistemi düzeltmeye hazır olmadığınız takdirde kaldırma işleminden vazgeçmeniz şiddetle tavsiye edilir."
+
+#. Type: note
+#. Description
+#: ../templates/temp.image.plain/templates:4001
+msgid "Required firmware files may be missing"
+msgstr "Gerekli aygıt yazılımları eksik"
+
+#. Type: note
+#. Description
+#: ../templates/temp.image.plain/templates:4001
+msgid "This system is currently running Linux ${runningversion} and you are installing Linux ${version}.  In the new version some of the drivers used on this system may require additional firmware files:"
+msgstr "Bu sistem şu anda Linux ${runningversion} kullanıyor ve siz Linux ${version} sürümünü kurmak üzeresiniz. Yeni sürümde bu sistemde kullanmakta olduğunuz bazı sürücüler ek aygıt yazılımları (firmware) gerektirebilir:"
+
+#. Type: note
+#. Description
+#: ../templates/temp.image.plain/templates:4001
+msgid "Most firmware files are not included in the system because they do not conform to the Debian Free Software Guidelines. You may need to reconfigure the package manager to include the contrib and non-free sections of the package archive before you can install these firmware files."
+msgstr "Çoğu aygıt yazılımı Debian Özgür Yazılım Yönergeleri'ne uymadığı için sisteme dahil edilmez. Bu aygıt yazılımlarını kurabilmek için öncelikle paket yöneticisini paket arşivinin contrib ve non-free kısımlarını kullanacak şekilde ayarlamanız gerekir."
+
+#. Type: error
+#. Description
+#: ../templates/temp.image.plain/templates:5001
+msgid "Ramdisk configuration must be updated"
+msgstr "Ramdisk yapılandırılmasının güncellenmesi gerekli"
+
+#. Type: error
+#. Description
+#: ../templates/temp.image.plain/templates:5001
+msgid "Kernel packages will no longer run a specific ramdisk creator.  The ramdisk creator package must install a script in /etc/kernel/postinst.d, and you should remove the line beginning 'ramdisk =' from /etc/kernel-img.conf."
+msgstr "Çekirdek paketleri bundan böyle özel ramdisk oluşturucularını kullanamaz. ramdisk oluşturucu paket /etc/kernel/postinst.d konumuna bir betik kurmalıdır. Sizin de /etc/kernel-img.conf dosyasında 'ramdisk =' ile başlayan satırı kaldırmanız gerekmektedir."
+

Modified: dists/squeeze-backports/linux-2.6/debian/rules
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/rules	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/rules	Sat Mar 10 17:58:57 2012	(r18803)
@@ -5,7 +5,7 @@
 SOURCE := $(shell dpkg-parsechangelog | sed -ne 's,^Source: *\(.*\)$$,\1,p')
 VERSION := $(shell dpkg-parsechangelog | sed -ne 's,^Version: *\(.*\)$$,\1,p')
 VERSION_UPSTREAM := $(shell echo "$(VERSION)" | sed -e 's,-[^-]*$$,,')
-VERSION_BINNMU := $(shell echo "$(VERSION)" | sed -ne 's,.*\+b\(.*\)$$,\1,p')
+VERSION_BINNMU := $(shell echo "$(VERSION)" | sed -ne 's,.*+b\(.*\)$$,\1,p')
 
 include debian/rules.defs
 

Modified: dists/squeeze-backports/linux-2.6/debian/rules.real
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/rules.real	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/rules.real	Sat Mar 10 17:58:57 2012	(r18803)
@@ -10,7 +10,7 @@
 DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -a'$(ARCH)' -qDEB_HOST_GNU_TYPE)
 DEB_HOST_MULTIARCH:= $(shell dpkg-architecture -a'$(ARCH)' -qDEB_HOST_MULTIARCH)
 DEB_BUILD_ARCH    := $(shell dpkg-architecture -a'$(ARCH)' -qDEB_BUILD_ARCH)
-UPLOADER  := $(shell dpkg-parsechangelog | sed -ne 's,^Maintainer: .[^<]*<\([^>]*\)>,\1,p')
+MAINTAINER := $(shell sed -ne 's,^Maintainer: .[^<]*<\([^>]*\)>,\1,p' debian/control)
 DISTRIBUTION := $(shell dpkg-parsechangelog | sed -ne 's,^Distribution: ,,p')
 
 export PYTHONPATH = $(CURDIR)/debian/lib/python
@@ -26,7 +26,7 @@
 stamp = [ -d $(dir $@) ] || mkdir $(dir $@); touch $@
 
 setup_env := env -u ABINAME -u ABINAME_PART -u ARCH -u FEATURESET -u FLAVOUR -u VERSION -u LOCALVERSION
-setup_env += DISTRIBUTION_OFFICIAL_BUILD=1 DISTRIBUTION_UPLOADER=$(UPLOADER) DISTRIBUTION_VERSION="$(SOURCEVERSION)"
+setup_env += DISTRIBUTION_OFFICIAL_BUILD=1 DISTRIBUTION_MAINTAINER=$(MAINTAINER) DISTRIBUTION_VERSION="$(SOURCEVERSION)"
 
 MAKE_CLEAN = $(setup_env) $(MAKE)
 MAKE_SELF := $(MAKE) -f debian/rules.real $(MAKEOVERRIDES)
@@ -149,7 +149,6 @@
 	dh_compress
 	dh_fixperms
 	dh_installdeb
-	dh_shlibdeps
 	dh_gencontrol -- $(GENCONTROL_ARGS)
 	dh_md5sums
 	dh_builddeb -- -Zxz $(BUILDDEB_ARGS)

Modified: dists/squeeze-backports/linux-2.6/debian/templates/control.image.type-plain.in
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/templates/control.image.type-plain.in	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/templates/control.image.type-plain.in	Sat Mar 10 17:58:57 2012	(r18803)
@@ -1,8 +1,9 @@
 Package: linux-image- at abiname@@localversion@
 Provides: linux-image, linux-modules- at abiname@@localversion@
 Pre-Depends: debconf | debconf-2.0
-Depends: module-init-tools, linux-base (>= 3~), ${shlibs:Depends}, ${misc:Depends}
+Depends: kmod | module-init-tools, linux-base (>= 3~), ${misc:Depends}
 Recommends: firmware-linux-free (>= 3~)
 Suggests: linux-doc- at version@
+Breaks: at (<< 3.1.12-1+squeeze1)
 Description: Linux @upstreamversion@ for @class@
  The Linux kernel @upstreamversion@ and modules for use on @longclass at .

Modified: dists/squeeze-backports/linux-2.6/debian/templates/control.image.type-standalone.in
==============================================================================
--- dists/squeeze-backports/linux-2.6/debian/templates/control.image.type-standalone.in	Fri Mar  9 05:28:36 2012	(r18802)
+++ dists/squeeze-backports/linux-2.6/debian/templates/control.image.type-standalone.in	Sat Mar 10 17:58:57 2012	(r18803)
@@ -1,6 +1,6 @@
 Package: linux-image- at abiname@@localversion@
 Provides: linux-image
 Suggests: linux-doc- at version@
-Depends: ${shlibs:Depends}, ${misc:Depends}
+Depends: ${misc:Depends}
 Description: Linux @upstreamversion@ for @class@
  The Linux kernel @upstreamversion@ for use on @longclass at .



More information about the Kernel-svn-changes mailing list