Merge branch 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 6 Jan 2011 18:42:43 +0000 (10:42 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 6 Jan 2011 18:42:43 +0000 (10:42 -0800)
* 'timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  MAINTAINERS: Update timer related entries
  timers: Use this_cpu_read
  timerqueue: Make timerqueue_getnext() static inline
  hrtimer: fix timerqueue conversion flub
  hrtimers: Convert hrtimers to use timerlist infrastructure
  timers: Fixup allmodconfig build issue
  timers: Rename timerlist infrastructure to timerqueue
  timers: Introduce timerlist infrastructure.
  hrtimer: Remove stale comment on curr_timer
  timer: Warn when del_timer_sync() is called in hardirq context
  timer: Del_timer_sync() can be used in softirq context
  timer: Make try_to_del_timer_sync() the same on SMP and UP
  posix-timers: Annotate lock_timer()
  timer: Permit statically-declared work with deferrable timers
  time: Use ARRAY_SIZE macro in timecompare.c
  timer: Initialize the field slack of timer_list
  timer_list: Remove alignment padding on 64 bit when CONFIG_TIMER_STATS
  time: Compensate for rounding on odd-frequency clocksources

Fix up trivial conflict in MAINTAINERS

1  2 
MAINTAINERS
include/linux/workqueue.h
kernel/hrtimer.c
kernel/timer.c

diff --combined MAINTAINERS
@@@ -157,11 -157,9 +157,11 @@@ S:       Maintaine
  F:    drivers/net/r8169.c
  
  8250/16?50 (AND CLONE UARTS) SERIAL DRIVER
 +M:    Greg Kroah-Hartman <gregkh@suse.de>
  L:    linux-serial@vger.kernel.org
  W:    http://serial.sourceforge.net
 -S:    Orphan
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6.git
  F:    drivers/serial/8250*
  F:    include/linux/serial_8250.h
  
@@@ -243,6 -241,21 +243,6 @@@ F:        drivers/pnp/pnpacpi
  F:    include/linux/acpi.h
  F:    include/acpi/
  
 -ACPI BATTERY DRIVERS
 -M:    Alexey Starikovskiy <astarikovskiy@suse.de>
 -L:    linux-acpi@vger.kernel.org
 -W:    http://www.lesswatts.org/projects/acpi/
 -S:    Supported
 -F:    drivers/acpi/battery.c
 -F:    drivers/acpi/*sbs*
 -
 -ACPI EC DRIVER
 -M:    Alexey Starikovskiy <astarikovskiy@suse.de>
 -L:    linux-acpi@vger.kernel.org
 -W:    http://www.lesswatts.org/projects/acpi/
 -S:    Supported
 -F:    drivers/acpi/ec.c
 -
  ACPI FAN DRIVER
  M:    Zhang Rui <rui.zhang@intel.com>
  L:    linux-acpi@vger.kernel.org
@@@ -405,7 -418,7 +405,7 @@@ S: Supporte
  F:    drivers/usb/gadget/amd5536udc.*
  
  AMD GEODE PROCESSOR/CHIPSET SUPPORT
 -P:    Jordan Crouse
 +P:    Andres Salomon <dilinger@queued.net>
  L:    linux-geode@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.amd.com/us-en/ConnectivitySolutions/TechnicalResources/0,,50_2334_2452_11363,00.html
  S:    Supported
@@@ -432,7 -445,7 +432,7 @@@ AMS (Apple Motion Sensor) DRIVE
  M:    Stelian Pop <stelian@popies.net>
  M:    Michael Hanselmann <linux-kernel@hansmi.ch>
  S:    Supported
 -F:    drivers/hwmon/ams/
 +F:    drivers/macintosh/ams/
  
  AMSO1100 RNIC DRIVER
  M:    Tom Tucker <tom@opengridcomputing.com>
@@@ -559,14 -572,14 +559,14 @@@ W:      http://maxim.org.za/at91_26.htm
  S:    Maintained
  
  ARM/BCMRING ARM ARCHITECTURE
 -M:    Leo Chen <leochen@broadcom.com>
 +M:    Jiandong Zheng <jdzheng@broadcom.com>
  M:    Scott Branden <sbranden@broadcom.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-bcmring
  
  ARM/BCMRING MTD NAND DRIVER
 -M:    Leo Chen <leochen@broadcom.com>
 +M:    Jiandong Zheng <jdzheng@broadcom.com>
  M:    Scott Branden <sbranden@broadcom.com>
  L:    linux-mtd@lists.infradead.org
  S:    Maintained
@@@ -642,7 -655,7 +642,7 @@@ ARM/FARADAY FA526 POR
  M:    Hans Ulli Kroll <ulli.kroll@googlemail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -T:    git://git.berlios.de/gemini-board
 +T:    git git://git.berlios.de/gemini-board
  F:    arch/arm/mm/*-fa*
  
  ARM/FOOTBRIDGE ARCHITECTURE
@@@ -657,7 -670,7 +657,7 @@@ ARM/FREESCALE IMX / MXC ARM ARCHITECTUR
  M:    Sascha Hauer <kernel@pengutronix.de>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -T:    git://git.pengutronix.de/git/imx/linux-2.6.git
 +T:    git git://git.pengutronix.de/git/imx/linux-2.6.git
  F:    arch/arm/mach-mx*/
  F:    arch/arm/plat-mxc/
  
@@@ -695,7 -708,8 +695,7 @@@ ARM/INCOME PXA270 SUPPOR
  M:    Marek Vasut <marek.vasut@gmail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
 -F:    arch/arm/mach-pxa/income.c
 -F:    arch/arm/mach-pxa/include/mach-pxa/income.h
 +F:    arch/arm/mach-pxa/colibri-pxa270-income.c
  
  ARM/INTEL IOP32X ARM ARCHITECTURE
  M:    Lennert Buytenhek <kernel@wantstofly.org>
@@@ -742,7 -756,13 +742,7 @@@ L:        linux-arm-kernel@lists.infradead.or
  S:    Maintained
  F:    arch/arm/mach-ixp4xx/
  
 -ARM/INTEL RESEARCH IMOTE 2 MACHINE SUPPORT
 -M:    Jonathan Cameron <jic23@cam.ac.uk>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Maintained
 -F:    arch/arm/mach-pxa/imote2.c
 -
 -ARM/INTEL RESEARCH STARGATE 2 MACHINE SUPPORT
 +ARM/INTEL RESEARCH IMOTE/STARGATE 2 MACHINE SUPPORT
  M:    Jonathan Cameron <jic23@cam.ac.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
@@@ -792,14 -812,11 +792,14 @@@ S:      Maintaine
  
  ARM/NOMADIK ARCHITECTURE
  M:    Alessandro Rubini <rubini@unipv.it>
 +M:    Linus Walleij <linus.walleij@stericsson.com>
  M:    STEricsson <STEricsson_nomadik_linux@list.st.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-nomadik/
  F:    arch/arm/plat-nomadik/
 +F:    drivers/i2c/busses/i2c-nomadik.c
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson.git
  
  ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT
  M:    Nelson Castillo <arhuaco@freaks-unidos.net>
@@@ -818,7 -835,7 +818,7 @@@ F: drivers/mmc/host/msm_sdcc.
  F:    drivers/mmc/host/msm_sdcc.h
  F:    drivers/serial/msm_serial.h
  F:    drivers/serial/msm_serial.c
 -T:    git git://codeaurora.org/quic/kernel/dwalker/linux-msm.git
 +T:    git git://codeaurora.org/quic/kernel/davidb/linux-msm.git
  S:    Maintained
  
  ARM/TOSA MACHINE SUPPORT
@@@ -910,37 -927,40 +910,37 @@@ W:      http://www.fluff.org/ben/linux
  S:    Maintained
  F:    arch/arm/mach-s3c2410/
  
 -ARM/S3C2440 ARM ARCHITECTURE
 +ARM/S3C244x ARM ARCHITECTURE
  M:    Ben Dooks <ben-linux@fluff.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.fluff.org/ben/linux/
  S:    Maintained
  F:    arch/arm/mach-s3c2440/
 +F:    arch/arm/mach-s3c2443/
  
 -ARM/S3C2442 ARM ARCHITECTURE
 -M:    Ben Dooks <ben-linux@fluff.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.fluff.org/ben/linux/
 -S:    Maintained
 -F:    arch/arm/mach-s3c2442/
 -
 -ARM/S3C2443 ARM ARCHITECTURE
 +ARM/S3C64xx ARM ARCHITECTURE
  M:    Ben Dooks <ben-linux@fluff.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.fluff.org/ben/linux/
  S:    Maintained
 -F:    arch/arm/mach-s3c2443/
 +F:    arch/arm/mach-s3c64xx/
  
 -ARM/S3C6400 ARM ARCHITECTURE
 -M:    Ben Dooks <ben-linux@fluff.org>
 +ARM/S5P ARM ARCHITECTURES
 +M:    Kukjin Kim <kgene.kim@samsung.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.fluff.org/ben/linux/
 +L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
  S:    Maintained
 -F:    arch/arm/mach-s3c6400/
 +F:    arch/arm/mach-s5p*/
  
 -ARM/S3C6410 ARM ARCHITECTURE
 -M:    Ben Dooks <ben-linux@fluff.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.fluff.org/ben/linux/
 +ARM/SAMSUNG S5P SERIES FIMC SUPPORT
 +M:    Kyungmin Park <kyungmin.park@samsung.com>
 +M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
 +L:    linux-arm-kernel@lists.infradead.org
 +L:    linux-media@vger.kernel.org
  S:    Maintained
 -F:    arch/arm/mach-s3c6410/
 +F:    arch/arm/plat-s5p/dev-fimc*
 +F:    arch/arm/plat-samsung/include/plat/*fimc*
 +F:    drivers/media/video/s5p-fimc/
  
  ARM/SHMOBILE ARM ARCHITECTURE
  M:    Paul Mundt <lethal@linux-sh.org>
@@@ -948,28 -968,16 +948,28 @@@ M:      Magnus Damm <magnus.damm@gmail.com
  L:    linux-sh@vger.kernel.org
  W:    http://oss.renesas.com
  Q:    http://patchwork.kernel.org/project/linux-sh/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/genesis-2.6.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6.git rmobile-latest
  S:    Supported
  F:    arch/arm/mach-shmobile/
  F:    drivers/sh/
  
 +ARM/TELECHIPS ARM ARCHITECTURE
 +M:    "Hans J. Koch" <hjk@linutronix.de>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    arch/arm/plat-tcc/
 +F:    arch/arm/mach-tcc8k/
 +
  ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  
 +ARM/TETON BGA MACHINE SUPPORT
 +M:    Mark F. Brown <mark.brown314@gmail.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +
  ARM/THECUS N2100 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1001,24 -1009,12 +1001,24 @@@ F:   drivers/i2c/busses/i2c-stu300.
  F:    drivers/rtc/rtc-coh901331.c
  F:    drivers/watchdog/coh901327_wdt.c
  F:    drivers/dma/coh901318*
 +F:    drivers/mfd/ab3100*
 +F:    drivers/rtc/rtc-ab3100.c
 +F:    drivers/rtc/rtc-coh901331.c
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson.git
  
 -ARM/U8500 ARM ARCHITECTURE
 +ARM/Ux500 ARM ARCHITECTURE
  M:    Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
 +M:    Linus Walleij <linus.walleij@stericsson.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-ux500/
 +F:    drivers/dma/ste_dma40*
 +F:    drivers/mfd/ab3550*
 +F:    drivers/mfd/abx500*
 +F:    drivers/mfd/ab8500*
 +F:    drivers/mfd/stmpe*
 +F:    drivers/rtc/rtc-ab8500.c
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson.git
  
  ARM/VFP SUPPORT
  M:    Russell King <linux@arm.linux.org.uk>
@@@ -1124,13 -1120,6 +1124,13 @@@ W:    http://wireless.kernel.org/en/users/
  S:    Maintained
  F:    drivers/net/wireless/ath/ar9170/
  
 +CARL9170 LINUX COMMUNITY WIRELESS DRIVER
 +M:    Christian Lamparter <chunkeey@googlemail.com>
 +L:    linux-wireless@vger.kernel.org
 +W:    http://wireless.kernel.org/en/users/Drivers/carl9170
 +S:    Maintained
 +F:    drivers/net/wireless/ath/carl9170/
 +
  ATK0110 HWMON DRIVER
  M:    Luca Tettamanti <kronos.it@gmail.com>
  L:    lm-sensors@lm-sensors.org
@@@ -1146,7 -1135,7 +1146,7 @@@ ATLX ETHERNET DRIVER
  M:    Jay Cliburn <jcliburn@gmail.com>
  M:    Chris Snook <chris.snook@gmail.com>
  M:    Jie Yang <jie.yang@atheros.com>
 -L:    atl1-devel@lists.sourceforge.net
 +L:    netdev@vger.kernel.org
  W:    http://sourceforge.net/projects/atl1
  W:    http://atl1.sourceforge.net
  S:    Maintained
@@@ -1231,7 -1220,7 +1231,7 @@@ F:      drivers/auxdisplay
  F:    include/linux/cfag12864b.h
  
  AVR32 ARCHITECTURE
 -M:    Haavard Skinnemoen <hskinnemoen@atmel.com>
 +M:    Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
  W:    http://www.atmel.com/products/AVR32/
  W:    http://avr32linux.org/
  W:    http://avrfreaks.net/
@@@ -1239,7 -1228,7 +1239,7 @@@ S:      Supporte
  F:    arch/avr32/
  
  AVR32/AT32AP MACHINE SUPPORT
 -M:    Haavard Skinnemoen <hskinnemoen@atmel.com>
 +M:    Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
  S:    Supported
  F:    arch/avr32/mach-at32ap/
  
@@@ -1355,26 -1344,23 +1355,26 @@@ F:   drivers/mtd/devices/block2mtd.
  
  BLUETOOTH DRIVERS
  M:    Marcel Holtmann <marcel@holtmann.org>
 +M:    Gustavo F. Padovan <padovan@profusion.mobi>
  L:    linux-bluetooth@vger.kernel.org
  W:    http://www.bluez.org/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-2.6.git
  S:    Maintained
  F:    drivers/bluetooth/
  
  BLUETOOTH SUBSYSTEM
  M:    Marcel Holtmann <marcel@holtmann.org>
 +M:    Gustavo F. Padovan <padovan@profusion.mobi>
  L:    linux-bluetooth@vger.kernel.org
  W:    http://www.bluez.org/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-2.6.git
  S:    Maintained
  F:    net/bluetooth/
  F:    include/net/bluetooth/
  
  BONDING DRIVER
  M:    Jay Vosburgh <fubar@us.ibm.com>
 -L:    bonding-devel@lists.sourceforge.net
 +L:    netdev@vger.kernel.org
  W:    http://sourceforge.net/projects/bonding/
  S:    Supported
  F:    drivers/net/bonding/
@@@ -1406,27 -1392,12 +1406,27 @@@ L:   netdev@vger.kernel.or
  S:    Supported
  F:    drivers/net/tg3.*
  
 +BROADCOM BRCM80211 IEEE802.11n WIRELESS DRIVER
 +M:    Brett Rudley <brudley@broadcom.com>
 +M:    Henry Ptasinski <henryp@broadcom.com>
 +M:    Nohee Ko <noheek@broadcom.com>
 +L:    linux-wireless@vger.kernel.org
 +S:    Supported
 +F:    drivers/staging/brcm80211/
 +
  BROCADE BFA FC SCSI DRIVER
  M:    Jing Huang <huangj@brocade.com>
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    drivers/scsi/bfa/
  
 +BROCADE BNA 10 GIGABIT ETHERNET DRIVER
 +M:    Rasesh Mody <rmody@brocade.com>
 +M:    Debashis Dutt <ddutt@brocade.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/bna/
 +
  BSG (block layer generic sg v4 driver)
  M:    FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
  L:    linux-scsi@vger.kernel.org
@@@ -1474,16 -1445,6 +1474,16 @@@ S:    Maintaine
  F:    Documentation/video4linux/cafe_ccic
  F:    drivers/media/video/cafe_ccic*
  
 +CAIF NETWORK LAYER
 +M:    Sjur Braendeland <sjur.brandeland@stericsson.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    Documentation/networking/caif/
 +F:    drivers/net/caif/
 +F:    include/linux/caif/
 +F:    include/net/caif/
 +F:    net/caif/
 +
  CALGARY x86-64 IOMMU
  M:    Muli Ben-Yehuda <muli@il.ibm.com>
  M:    "Jon D. Mason" <jdmason@kudzu.us>
@@@ -1539,12 -1500,11 +1539,12 @@@ T:   git git://git.kernel.org/pub/scm/lin
  S:    Supported
  F:    Documentation/filesystems/ceph.txt
  F:    fs/ceph
 +F:    net/ceph
 +F:    include/linux/ceph
  
  CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM:
 -M:    David Vrabel <david.vrabel@csr.com>
  L:    linux-usb@vger.kernel.org
 -S:    Supported
 +S:    Orphan
  F:    Documentation/usb/WUSB-Design-overview.txt
  F:    Documentation/usb/wusb-cbaf
  F:    drivers/usb/host/hwa-hc.c
@@@ -1583,9 -1543,9 +1583,9 @@@ S:      Supporte
  F:    scripts/checkpatch.pl
  
  CISCO VIC ETHERNET NIC DRIVER
 -M:    Scott Feldman <scofeldm@cisco.com>
  M:    Vasanthy Kolluri <vkolluri@cisco.com>
  M:    Roopa Prabhu <roprabhu@cisco.com>
 +M:    David Wang <dwang2@cisco.com>
  S:    Supported
  F:    drivers/net/enic/
  
@@@ -1628,7 -1588,7 +1628,7 @@@ F:      drivers/platform/x86/classmate-lapto
  COCCINELLE/Semantic Patches (SmPL)
  M:    Julia Lawall <julia@diku.dk>
  M:    Gilles Muller <Gilles.Muller@lip6.fr>
 -M:    Nicolas Palix <npalix@diku.dk>
 +M:    Nicolas Palix <npalix.work@gmail.com>
  L:    cocci@diku.dk (moderated for non-subscribers)
  W:    http://coccinelle.lip6.fr/
  S:    Supported
@@@ -1772,7 -1732,6 +1772,7 @@@ L:      linux-cris-kernel@axis.co
  W:    http://developer.axis.com
  S:    Maintained
  F:    arch/cris/
 +F:    drivers/serial/crisv10.*
  
  CRYPTO API
  M:    Herbert Xu <herbert@gondor.apana.org.au>
@@@ -1844,13 -1803,6 +1844,13 @@@ W:    http://www.chelsio.co
  S:    Supported
  F:    drivers/net/cxgb4vf/
  
 +STMMAC ETHERNET DRIVER
 +M:    Giuseppe Cavallaro <peppe.cavallaro@st.com>
 +L:    netdev@vger.kernel.org
 +W:    http://www.stlinux.com
 +S:    Supported
 +F:    drivers/net/stmmac/
 +
  CYBERPRO FB DRIVER
  M:    Russell King <linux@arm.linux.org.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -2030,7 -1982,6 +2030,7 @@@ F:      drivers/hwmon/dme1737.
  DOCBOOK FOR DOCUMENTATION
  M:    Randy Dunlap <rdunlap@xenotime.net>
  S:    Maintained
 +F:    scripts/kernel-doc
  
  DOCKING STATION DRIVER
  M:    Shaohua Li <shaohua.li@intel.com>
@@@ -2041,7 -1992,6 +2041,7 @@@ F:      drivers/acpi/dock.
  DOCUMENTATION
  M:    Randy Dunlap <rdunlap@xenotime.net>
  L:    linux-doc@vger.kernel.org
 +T:    quilt oss.oracle.com/~rdunlap/kernel-doc-patches/current/
  S:    Maintained
  F:    Documentation/
  
@@@ -2073,16 -2023,14 +2073,16 @@@ F:   drivers/block/drbd
  F:    lib/lru_cache.c
  F:    Documentation/blockdev/drbd/
  
 -DRIVER CORE, KOBJECTS, AND SYSFS
 +DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS
  M:    Greg Kroah-Hartman <gregkh@suse.de>
 -T:    quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6.git
  S:    Supported
  F:    Documentation/kobject.txt
  F:    drivers/base/
  F:    fs/sysfs/
 +F:    fs/debugfs/
  F:    include/linux/kobj*
 +F:    include/linux/debugfs.h
  F:    lib/kobj*
  
  DRM DRIVERS
@@@ -2093,15 -2041,6 +2093,15 @@@ S:    Maintaine
  F:    drivers/gpu/drm/
  F:    include/drm/
  
 +INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets)
 +M:    Chris Wilson <chris@chris-wilson.co.uk>
 +L:    intel-gfx@lists.freedesktop.org (subscribers-only)
 +L:    dri-devel@lists.freedesktop.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ickle/drm-intel.git
 +S:    Supported
 +F:    drivers/gpu/drm/i915
 +F:    include/drm/i915*
 +
  DSCC4 DRIVER
  M:    Francois Romieu <romieu@fr.zoreil.com>
  L:    netdev@vger.kernel.org
@@@ -2211,13 -2150,6 +2211,13 @@@ W:    bluesmoke.sourceforge.ne
  S:    Maintained
  F:    drivers/edac/i5400_edac.c
  
 +EDAC-I7300
 +M:    Mauro Carvalho Chehab <mchehab@redhat.com>
 +L:    linux-edac@vger.kernel.org
 +W:    bluesmoke.sourceforge.net
 +S:    Maintained
 +F:    drivers/edac/i7300_edac.c
 +
  EDAC-I7CORE
  M:    Mauro Carvalho Chehab <mchehab@redhat.com>
  L:    linux-edac@vger.kernel.org
@@@ -2257,12 -2189,6 +2257,12 @@@ W:    http://acpi4asus.sf.ne
  S:    Maintained
  F:    drivers/platform/x86/eeepc-laptop.c
  
 +EFIFB FRAMEBUFFER DRIVER
 +L:    linux-fbdev@vger.kernel.org
 +M:    Peter Jones <pjones@redhat.com>
 +S:    Maintained
 +F:    drivers/video/efifb.c
 +
  EFS FILESYSTEM
  W:    http://aeschi.ch.eu.org/efs/
  S:    Orphan
@@@ -2459,12 -2385,9 +2459,12 @@@ F:    drivers/net/wan/sdla.
  FRAMEBUFFER LAYER
  L:    linux-fbdev@vger.kernel.org
  W:    http://linux-fbdev.sourceforge.net/
 +Q:    http://patchwork.kernel.org/project/linux-fbdev/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-2.6.git
  S:    Orphan
  F:    Documentation/fb/
 -F:    drivers/video/fb*
 +F:    drivers/video/
 +F:    include/video/
  F:    include/linux/fb.h
  
  FREESCALE DMA DRIVER
@@@ -2589,7 -2512,7 +2589,7 @@@ S:      Supporte
  F:    drivers/scsi/gdt*
  
  GENERIC GPIO I2C DRIVER
 -M:    Haavard Skinnemoen <hskinnemoen@atmel.com>
 +M:    Haavard Skinnemoen <hskinnemoen@gmail.com>
  S:    Supported
  F:    drivers/i2c/busses/i2c-gpio.c
  F:    include/linux/i2c-gpio.h
@@@ -2648,10 -2571,10 +2648,10 @@@ F:   drivers/net/greth
  
  HARD DRIVE ACTIVE PROTECTION SYSTEM (HDAPS) DRIVER
  M:    Frank Seidel <frank@f-seidel.de>
 -L:    lm-sensors@lm-sensors.org
 +L:    platform-driver-x86@vger.kernel.org
  W:    http://www.kernel.org/pub/linux/kernel/people/fseidel/hdaps/
  S:    Maintained
 -F:    drivers/hwmon/hdaps.c
 +F:    drivers/platform/x86/hdaps.c
  
  HWPOISON MEMORY FAILURE HANDLING
  M:    Andi Kleen <andi@firstfloor.org>
@@@ -2724,14 -2647,9 +2724,14 @@@ S:    Maintaine
  F:    drivers/media/video/gspca/
  
  HARDWARE MONITORING
 +M:    Jean Delvare <khali@linux-fr.org>
 +M:    Guenter Roeck <guenter.roeck@ericsson.com>
  L:    lm-sensors@lm-sensors.org
  W:    http://www.lm-sensors.org/
 -S:    Orphan
 +T:    quilt kernel.org/pub/linux/kernel/people/jdelvare/linux-2.6/jdelvare-hwmon/
 +T:    quilt kernel.org/pub/linux/kernel/people/groeck/linux-staging/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git
 +S:    Maintained
  F:    Documentation/hwmon/
  F:    drivers/hwmon/
  F:    include/linux/hwmon*.h
@@@ -2812,6 -2730,10 +2812,10 @@@ M:    Thomas Gleixner <tglx@linutronix.de
  S:    Maintained
  F:    Documentation/timers/
  F:    kernel/hrtimer.c
+ F:    kernel/time/clockevents.c
+ F:    kernel/time/tick*.*
+ F:    kernel/time/timer_*.c
+ F     include/linux/clockevents.h
  F:    include/linux/hrtimer.h
  
  HIGH-SPEED SCC DRIVER FOR AX.25
@@@ -2869,6 -2791,11 +2873,6 @@@ S:     Maintaine
  F:    arch/x86/kernel/hpet.c
  F:    arch/x86/include/asm/hpet.h
  
 -HPET: ACPI
 -M:    Bob Picco <bob.picco@hp.com>
 -S:    Maintained
 -F:    drivers/char/hpet.c
 -
  HPFS FILESYSTEM
  M:    Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz>
  W:    http://artax.karlin.mff.cuni.cz/~mikulas/vyplody/hpfs/index-e.cgi
@@@ -2948,12 -2875,6 +2952,12 @@@ M:    Brian King <brking@us.ibm.com
  S:    Supported
  F:    drivers/scsi/ipr.*
  
 +IBM Power Virtual Ethernet Device Driver
 +M:    Santiago Leon <santil@linux.vnet.ibm.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/ibmveth.*
 +
  IBM ServeRAID RAID DRIVER
  P:    Jack Hammer
  M:    Dave Jeffery <ipslinux@adaptec.com>
@@@ -3018,7 -2939,7 +3022,7 @@@ M:      Roland Dreier <rolandd@cisco.com
  M:    Sean Hefty <sean.hefty@intel.com>
  M:    Hal Rosenstock <hal.rosenstock@gmail.com>
  L:    linux-rdma@vger.kernel.org
 -W:    http://www.openib.org/
 +W:    http://www.openfabrics.org/
  Q:    http://patchwork.kernel.org/project/linux-rdma/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git
  S:    Supported
@@@ -3123,27 -3044,16 +3127,27 @@@ L:   netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ixp2000/
  
 -INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe)
 +INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe/ixgbevf)
  M:    Jeff Kirsher <jeffrey.t.kirsher@intel.com>
  M:    Jesse Brandeburg <jesse.brandeburg@intel.com>
  M:    Bruce Allan <bruce.w.allan@intel.com>
 -M:    Alex Duyck <alexander.h.duyck@intel.com>
 +M:    Carolyn Wyborny <carolyn.wyborny@intel.com>
 +M:    Don Skidmore <donald.c.skidmore@intel.com>
 +M:    Greg Rose <gregory.v.rose@intel.com>
  M:    PJ Waskiewicz <peter.p.waskiewicz.jr@intel.com>
 +M:    Alex Duyck <alexander.h.duyck@intel.com>
  M:    John Ronciak <john.ronciak@intel.com>
  L:    e1000-devel@lists.sourceforge.net
  W:    http://e1000.sourceforge.net/
  S:    Supported
 +F:    Documentation/networking/e100.txt
 +F:    Documentation/networking/e1000.txt
 +F:    Documentation/networking/e1000e.txt
 +F:    Documentation/networking/igb.txt
 +F:    Documentation/networking/igbvf.txt
 +F:    Documentation/networking/ixgb.txt
 +F:    Documentation/networking/ixgbe.txt
 +F:    Documentation/networking/ixgbevf.txt
  F:    drivers/net/e100.c
  F:    drivers/net/e1000/
  F:    drivers/net/e1000e/
@@@ -3151,7 -3061,6 +3155,7 @@@ F:      drivers/net/igb
  F:    drivers/net/igbvf/
  F:    drivers/net/ixgb/
  F:    drivers/net/ixgbe/
 +F:    drivers/net/ixgbevf/
  
  INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
  L:    linux-wireless@vger.kernel.org
@@@ -3212,7 -3121,7 +3216,7 @@@ F:      drivers/net/ioc3-eth.
  
  IOC3 SERIAL DRIVER
  M:    Pat Gefre <pfg@sgi.com>
 -L:    linux-mips@linux-mips.org
 +L:    linux-serial@vger.kernel.org
  S:    Maintained
  F:    drivers/serial/ioc3_serial.c
  
@@@ -3289,12 -3198,6 +3293,12 @@@ F:    drivers/net/irda
  F:    include/net/irda/
  F:    net/irda/
  
 +IRQ SUBSYSTEM
 +M:    Thomas Gleixner <tglx@linutronix.de>
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git irq/core
 +F:    kernel/irq/
 +
  ISAPNP
  M:    Jaroslav Kysela <perex@perex.cz>
  S:    Maintained
@@@ -3387,12 -3290,6 +3391,12 @@@ F:    fs/jbd*
  F:    include/linux/ext*jbd*.h
  F:    include/linux/jbd*.h
  
 +JSM Neo PCI based serial card
 +M:    Breno Leitao <leitao@linux.vnet.ibm.com>
 +L:    linux-serial@vger.kernel.org
 +S:    Maintained
 +F:    drivers/serial/jsm/
 +
  K8TEMP HARDWARE MONITORING DRIVER
  M:    Rudolf Marek <r.marek@assembler.cz>
  L:    lm-sensors@lm-sensors.org
@@@ -3419,8 -3316,8 +3423,8 @@@ F:      Documentation/kdump
  KERNEL AUTOMOUNTER (AUTOFS)
  M:    "H. Peter Anvin" <hpa@zytor.com>
  L:    autofs@linux.kernel.org
 -S:    Odd Fixes
 -F:    fs/autofs/
 +S:    Obsolete
 +F:    drivers/staging/autofs/
  
  KERNEL AUTOMOUNTER v4 (AUTOFS4)
  M:    Ian Kent <raven@themaw.net>
@@@ -3443,7 -3340,7 +3447,7 @@@ F:      scripts/package
  
  KERNEL JANITORS
  L:    kernel-janitors@vger.kernel.org
 -W:    http://janitor.kernelnewbies.org/
 +W:    http://kernelnewbies.org/KernelJanitors
  S:    Odd Fixes
  
  KERNEL NFSD, SUNRPC, AND LOCKD SERVERS
@@@ -3511,7 -3408,7 +3515,7 @@@ F:      drivers/s390/kvm
  
  KEXEC
  M:    Eric Biederman <ebiederm@xmission.com>
 -W:    http://ftp.kernel.org/pub/linux/kernel/people/horms/kexec-tools/
 +W:    http://kernel.org/pub/linux/utils/kernel/kexec/
  L:    kexec@lists.infradead.org
  S:    Maintained
  F:    include/linux/kexec.h
@@@ -3768,13 -3665,6 +3772,13 @@@ L:    linux-scsi@vger.kernel.or
  S:    Maintained
  F:    drivers/scsi/sym53c8xx_2/
  
 +LTC4261 HARDWARE MONITOR DRIVER
 +M:    Guenter Roeck <linux@roeck-us.net>
 +L:    lm-sensors@lm-sensors.org
 +S:    Maintained
 +F:    Documentation/hwmon/ltc4261
 +F:    drivers/hwmon/ltc4261.c
 +
  LTP (Linux Test Project)
  M:    Rishikesh K Rajak <risrajak@linux.vnet.ibm.com>
  M:    Garrett Cooper <yanegomi@gmail.com>
@@@ -3870,7 -3760,7 +3874,7 @@@ F:      drivers/net/wireless/mwl8k.
  MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER
  M:    Nicolas Pitre <nico@fluxnic.net>
  S:    Odd Fixes
 -F: drivers/mmc/host/mvsdio.*
 +F:    drivers/mmc/host/mvsdio.*
  
  MARVELL YUKON / SYSKONNECT DRIVER
  M:    Mirko Lindner <mlindner@syskonnect.de>
@@@ -3879,8 -3769,9 +3883,8 @@@ W:      http://www.syskonnect.co
  S:    Supported
  
  MATROX FRAMEBUFFER DRIVER
 -M:    Petr Vandrovec <vandrove@vc.cvut.cz>
  L:    linux-fbdev@vger.kernel.org
 -S:    Maintained
 +S:    Orphan
  F:    drivers/video/matrox/matroxfb_*
  F:    include/linux/matroxfb.h
  
@@@ -4004,8 -3895,10 +4008,8 @@@ F:     Documentation/serial/moxa-smarti
  F:    drivers/char/mxser.*
  
  MSI LAPTOP SUPPORT
 -M:    Lennart Poettering <mzxreary@0pointer.de>
 +M:    Lee, Chun-Yi <jlee@novell.com>
  L:    platform-driver-x86@vger.kernel.org
 -W:    https://tango.0pointer.de/mailman/listinfo/s270-linux
 -W:    http://0pointer.de/lennart/tchibo.html
  S:    Maintained
  F:    drivers/platform/x86/msi-laptop.c
  
@@@ -4022,10 -3915,8 +4026,10 @@@ S:    Supporte
  F:    drivers/mfd/
  
  MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM
 -S:    Orphan
 +M:    Chris Ball <cjb@laptop.org>
  L:    linux-mmc@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc.git
 +S:    Maintained
  F:    drivers/mmc/
  F:    include/linux/mmc/
  
@@@ -4047,7 -3938,7 +4051,7 @@@ F:      drivers/char/isicom.
  F:    include/linux/isicom.h
  
  MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER
 -M:    Felipe Balbi <felipe.balbi@nokia.com>
 +M:    Felipe Balbi <balbi@ti.com>
  L:    linux-usb@vger.kernel.org
  T:    git git://gitorious.org/usb/usb.git
  S:    Maintained
@@@ -4067,8 -3958,8 +4071,8 @@@ S:      Maintaine
  F:    drivers/net/natsemi.c
  
  NCP FILESYSTEM
 -M:    Petr Vandrovec <vandrove@vc.cvut.cz>
 -S:    Maintained
 +M:    Petr Vandrovec <petr@vandrovec.name>
 +S:    Odd Fixes
  F:    fs/ncpfs/
  
  NCR DUAL 700 SCSI DRIVER (MICROCHANNEL)
@@@ -4079,8 -3970,9 +4083,8 @@@ F:      drivers/scsi/NCR_D700.
  
  NETEFFECT IWARP RNIC DRIVER (IW_NES)
  M:    Faisal Latif <faisal.latif@intel.com>
 -M:    Chien Tung <chien.tin.tung@intel.com>
  L:    linux-rdma@vger.kernel.org
 -W:    http://www.neteffect.com
 +W:    http://www.intel.com/Products/Server/Adapters/Server-Cluster/Server-Cluster-overview.htm
  S:    Supported
  F:    drivers/infiniband/hw/nes/
  
@@@ -4344,7 -4236,7 +4348,7 @@@ S:      Maintaine
  F:    drivers/char/hw_random/omap-rng.c
  
  OMAP USB SUPPORT
 -M:    Felipe Balbi <felipe.balbi@nokia.com>
 +M:    Felipe Balbi <balbi@ti.com>
  M:    David Brownell <dbrownell@users.sourceforge.net>
  L:    linux-usb@vger.kernel.org
  L:    linux-omap@vger.kernel.org
@@@ -4430,12 -4322,13 +4434,12 @@@ F:   Documentation/filesystems/dlmfs.tx
  F:    fs/ocfs2/
  
  ORINOCO DRIVER
 -M:    Pavel Roskin <proski@gnu.org>
 -M:    David Gibson <hermes@gibson.dropbear.id.au>
  L:    linux-wireless@vger.kernel.org
  L:    orinoco-users@lists.sourceforge.net
  L:    orinoco-devel@lists.sourceforge.net
 +W:    http://linuxwireless.org/en/users/Drivers/orinoco
  W:    http://www.nongnu.org/orinoco/
 -S:    Maintained
 +S:    Orphan
  F:    drivers/net/wireless/orinoco/
  
  OSD LIBRARY and FILESYSTEM
@@@ -4468,22 -4361,13 +4472,22 @@@ L:   linux-i2c@vger.kernel.or
  S:    Maintained
  F:    drivers/i2c/busses/i2c-pasemi.c
  
 +PADATA PARALLEL EXECUTION MECHANISM
 +M:    Steffen Klassert <steffen.klassert@secunet.com>
 +L:    linux-kernel@vger.kernel.org
 +L:    linux-crypto@vger.kernel.org
 +S:    Maintained
 +F:    kernel/padata.c
 +F:    include/linux/padata.h
 +F:    Documentation/padata.txt
 +
  PANASONIC LAPTOP ACPI EXTRAS DRIVER
  M:    Harald Welte <laforge@gnumonks.org>
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
  F:    drivers/platform/x86/panasonic-laptop.c
  
 -PANASONIC MN10300/AM33 PORT
 +PANASONIC MN10300/AM33/AM34 PORT
  M:    David Howells <dhowells@redhat.com>
  M:    Koichi Yasutake <yasutake.koichi@jp.panasonic.com>
  L:    linux-am33-list@redhat.com (moderated for non-subscribers)
@@@ -4556,12 -4440,6 +4560,12 @@@ S:    Maintaine
  F:    drivers/leds/leds-pca9532.c
  F:    include/linux/leds-pca9532.h
  
 +PCA9541 I2C BUS MASTER SELECTOR DRIVER
 +M:    Guenter Roeck <guenter.roeck@ericsson.com>
 +L:    linux-i2c@vger.kernel.org
 +S:    Maintained
 +F:    drivers/i2c/muxes/pca9541.c
 +
  PCA9564/PCA9665 I2C BUS DRIVER
  M:    Wolfram Sang <w.sang@pengutronix.de>
  L:    linux-i2c@vger.kernel.org
@@@ -4605,18 -4483,11 +4609,18 @@@ F:   drivers/pcmcia
  F:    include/pcmcia/
  
  PCNET32 NETWORK DRIVER
 -M:    Don Fry <pcnet32@verizon.net>
 +M:    Don Fry <pcnet32@frontier.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/pcnet32.c
  
 +PCRYPT PARALLEL CRYPTO ENGINE
 +M:    Steffen Klassert <steffen.klassert@secunet.com>
 +L:    linux-crypto@vger.kernel.org
 +S:    Maintained
 +F:    crypto/pcrypt.c
 +F:    include/crypto/pcrypt.h
 +
  PER-TASK DELAY ACCOUNTING
  M:    Balbir Singh <balbir@linux.vnet.ibm.com>
  S:    Maintained
@@@ -4627,7 -4498,7 +4631,7 @@@ PERFORMANCE EVENTS SUBSYSTE
  M:    Peter Zijlstra <a.p.zijlstra@chello.nl>
  M:    Paul Mackerras <paulus@samba.org>
  M:    Ingo Molnar <mingo@elte.hu>
 -M:    Arnaldo Carvalho de Melo <acme@redhat.com>
 +M:    Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
  S:    Supported
  F:    kernel/perf_event*.c
  F:    include/linux/perf_event.h
@@@ -4645,14 -4516,6 +4649,14 @@@ L:    linux-abi-devel@lists.sourceforge.ne
  S:    Maintained
  F:    include/linux/personality.h
  
 +PHONET PROTOCOL
 +M:    Remi Denis-Courmont <remi.denis-courmont@nokia.com>
 +S:    Supported
 +F:    Documentation/networking/phonet.txt
 +F:    include/linux/phonet.h
 +F:    include/net/phonet/
 +F:    net/phonet/
 +
  PHRAM MTD DRIVER
  M:    Joern Engel <joern@lazybastard.org>
  L:    linux-mtd@lists.infradead.org
@@@ -4902,15 -4765,6 +4906,15 @@@ F:    fs/qnx4
  F:    include/linux/qnx4_fs.h
  F:    include/linux/qnxtypes.h
  
 +RADOS BLOCK DEVICE (RBD)
 +F:    include/linux/qnxtypes.h
 +M:    Yehuda Sadeh <yehuda@hq.newdream.net>
 +M:    Sage Weil <sage@newdream.net>
 +M:    ceph-devel@vger.kernel.org
 +S:    Supported
 +F:    drivers/block/rbd.c
 +F:    drivers/block/rbd_types.h
 +
  RADEON FRAMEBUFFER DISPLAY DRIVER
  M:    Benjamin Herrenschmidt <benh@kernel.crashing.org>
  L:    linux-fbdev@vger.kernel.org
@@@ -4960,7 -4814,6 +4964,7 @@@ RCUTORTURE MODUL
  M:    Josh Triplett <josh@freedesktop.org>
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
  S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-2.6-rcu.git
  F:    Documentation/RCU/torture.txt
  F:    kernel/rcutorture.c
  
@@@ -4985,7 -4838,6 +4989,7 @@@ M:      Dipankar Sarma <dipankar@in.ibm.com
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
  W:    http://www.rdrop.com/users/paulmck/rclock/
  S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-2.6-rcu.git
  F:    Documentation/RCU/
  F:    include/linux/rcu*
  F:    include/linux/srcu*
@@@ -4993,10 -4845,12 +4997,10 @@@ F:   kernel/rcu
  F:    kernel/srcu*
  X:    kernel/rcutorture.c
  
 -REAL TIME CLOCK DRIVER
 +REAL TIME CLOCK DRIVER (LEGACY)
  M:    Paul Gortmaker <p_gortmaker@yahoo.com>
  S:    Maintained
 -F:    Documentation/rtc.txt
 -F:    drivers/rtc/
 -F:    include/linux/rtc.h
 +F:    drivers/char/rtc.c
  
  REAL TIME CLOCK (RTC) SUBSYSTEM
  M:    Alessandro Zummo <a.zummo@towertech.it>
@@@ -5136,12 -4990,18 +5140,24 @@@ F:   drivers/media/common/saa7146
  F:    drivers/media/video/*7146*
  F:    include/media/*7146*
  
 +SAMSUNG AUDIO (ASoC) DRIVERS
 +M:    Jassi Brar <jassi.brar@samsung.com>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Supported
 +F:    sound/soc/s3c24xx
 +
+ TIMEKEEPING, NTP
+ M:    John Stultz <johnstul@us.ibm.com>
+ M:    Thomas Gleixner <tglx@linutronix.de>
+ S:    Supported
+ F:    include/linux/clocksource.h
+ F:    include/linux/time.h
+ F:    include/linux/timex.h
+ F:    include/linux/timekeeping.h
+ F:    kernel/time/clocksource.c
+ F:    kernel/time/time*.c
+ F:    kernel/time/ntp.c
  TLG2300 VIDEO4LINUX-2 DRIVER
  M:    Huang Shijie <shijie8@gmail.com>
  M:    Kang Yong <kangyong@telegent.com>
@@@ -5175,16 -5035,6 +5191,16 @@@ W:    http://www.kernel.d
  S:    Maintained
  F:    drivers/scsi/sr*
  
 +SCSI RDMA PROTOCOL (SRP) INITIATOR
 +M:    David Dillow <dillowda@ornl.gov>
 +L:    linux-rdma@vger.kernel.org
 +S:    Supported
 +W:    http://www.openfabrics.org
 +Q:    http://patchwork.kernel.org/project/linux-rdma/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/dad/srp-initiator.git
 +F:    drivers/infiniband/ulp/srp/
 +F:    include/scsi/srp.h
 +
  SCSI SG DRIVER
  M:    Doug Gilbert <dgilbert@interlog.com>
  L:    linux-scsi@vger.kernel.org
@@@ -5249,10 -5099,8 +5265,10 @@@ S:    Maintaine
  F:    drivers/mmc/host/sdricoh_cs.c
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER
 -S:    Orphan
 +M:    Chris Ball <cjb@laptop.org>
  L:    linux-mmc@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc.git
 +S:    Maintained
  F:    drivers/mmc/host/sdhci.*
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE, OPEN FIRMWARE BINDINGS (SDHCI-OF)
@@@ -5407,8 -5255,8 +5423,8 @@@ F:      drivers/*/*s3c2410
  F:    drivers/*/*/*s3c2410*
  
  TI DAVINCI MACHINE SUPPORT
 -P:    Kevin Hilman
 -M:    davinci-linux-open-source@linux.davincidsp.com
 +M:    Kevin Hilman <khilman@deeprootsystems.com>
 +L:    davinci-linux-open-source@linux.davincidsp.com (subscribers-only)
  Q:    http://patchwork.kernel.org/project/linux-davinci/list/
  S:    Supported
  F:    arch/arm/mach-davinci
@@@ -5702,7 -5550,7 +5718,7 @@@ S:      Maintaine
  
  STAGING SUBSYSTEM
  M:    Greg Kroah-Hartman <gregkh@suse.de>
 -T:    quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6.git
  L:    devel@driverdev.osuosl.org
  S:    Maintained
  F:    drivers/staging/
@@@ -5731,7 -5579,7 +5747,7 @@@ M:      Paul Mundt <lethal@linux-sh.org
  L:    linux-sh@vger.kernel.org
  W:    http://www.linux-sh.org
  Q:    http://patchwork.kernel.org/project/linux-sh/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6.git sh-latest
  S:    Supported
  F:    Documentation/sh/
  F:    arch/sh/
@@@ -5853,8 -5701,6 +5869,8 @@@ M:      Chris Metcalf <cmetcalf@tilera.com
  W:    http://www.tilera.com/scm/
  S:    Supported
  F:    arch/tile/
 +F:    drivers/char/hvc_tile.c
 +F:    drivers/net/tile/
  
  TLAN NETWORK DRIVER
  M:    Samuel Chessman <chessman@tux.org>
@@@ -5938,7 -5784,7 +5954,7 @@@ S:      Maintaine
  TTY LAYER
  M:    Greg Kroah-Hartman <gregkh@suse.de>
  S:    Maintained
 -T:    quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6.git
  F:    drivers/char/tty_*
  F:    drivers/serial/serial_core.c
  F:    include/linux/serial_core.h
@@@ -5947,6 -5793,7 +5963,6 @@@ F:      include/linux/tty.
  
  TULIP NETWORK DRIVERS
  M:    Grant Grundler <grundler@parisc-linux.org>
 -M:    Kyle McMartin <kyle@mcmartin.ca>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/tulip/
@@@ -6010,9 -5857,13 +6026,9 @@@ F:     Documentation/filesystems/ufs.tx
  F:    fs/ufs/
  
  ULTRA-WIDEBAND (UWB) SUBSYSTEM:
 -M:    David Vrabel <david.vrabel@csr.com>
  L:    linux-usb@vger.kernel.org
 -S:    Supported
 +S:    Orphan
  F:    drivers/uwb/
 -X:    drivers/uwb/wlp/
 -X:    drivers/uwb/i1480/i1480u-wlp/
 -X:    drivers/uwb/i1480/i1480-wlp.h
  F:    include/linux/uwb.h
  F:    include/linux/uwb/
  
@@@ -6047,14 -5898,6 +6063,14 @@@ S:    Maintaine
  F:    Documentation/usb/acm.txt
  F:    drivers/usb/class/cdc-acm.*
  
 +USB ATTACHED SCSI
 +M:    Matthew Wilcox <willy@linux.intel.com>
 +M:    Sarah Sharp <sarah.a.sharp@linux.intel.com>
 +L:    linux-usb@vger.kernel.org
 +L:    linux-scsi@vger.kernel.org
 +S:    Supported
 +F:    drivers/usb/storage/uas.c
 +
  USB BLOCK DRIVER (UB ub)
  M:    Pete Zaitcev <zaitcev@redhat.com>
  L:    linux-usb@vger.kernel.org
@@@ -6154,6 -5997,13 +6170,6 @@@ L:     linux-usb@vger.kernel.or
  S:    Maintained
  F:    drivers/usb/serial/option.c
  
 -USB OV511 DRIVER
 -M:    Mark McClelland <mmcclell@bigfoot.com>
 -L:    linux-usb@vger.kernel.org
 -W:    http://alpha.dyndns.org/ov511/
 -S:    Maintained
 -F:    drivers/media/video/ov511.*
 -
  USB PEGASUS DRIVER
  M:    Petko Manolov <petkan@users.sourceforge.net>
  L:    linux-usb@vger.kernel.org
@@@ -6260,7 -6110,7 +6276,7 @@@ USB SUBSYSTE
  M:    Greg Kroah-Hartman <gregkh@suse.de>
  L:    linux-usb@vger.kernel.org
  W:    http://www.linux-usb.org
 -T:    quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6.git
  S:    Supported
  F:    Documentation/usb/
  F:    drivers/net/usb/
@@@ -6314,6 -6164,16 +6330,6 @@@ S:     Supporte
  F:    drivers/usb/host/xhci*
  F:    drivers/usb/host/pci-quirks*
  
 -USB ZC0301 DRIVER
 -M:    Luca Risolia <luca.risolia@studio.unibo.it>
 -L:    linux-usb@vger.kernel.org
 -L:    linux-media@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
 -W:    http://www.linux-projects.org
 -S:    Maintained
 -F:    Documentation/video4linux/zc0301.txt
 -F:    drivers/media/video/zc0301/
 -
  USB ZD1201 DRIVER
  L:    linux-wireless@vger.kernel.org
  W:    http://linux-lc100020.sourceforge.net
@@@ -6493,12 -6353,6 +6509,12 @@@ S:    Maintaine
  F:    Documentation/hwmon/w83793
  F:    drivers/hwmon/w83793.c
  
 +W83795 HARDWARE MONITORING DRIVER
 +M:    Jean Delvare <khali@linux-fr.org>
 +L:    lm-sensors@lm-sensors.org
 +S:    Maintained
 +F:    drivers/hwmon/w83795.c
 +
  W83L51xD SD/MMC CARD INTERFACE DRIVER
  M:    Pierre Ossman <pierre@ossman.eu>
  S:    Maintained
@@@ -6537,27 -6391,36 +6553,27 @@@ F:   include/linux/wimax/debug.
  F:    include/net/wimax.h
  F:    net/wimax/
  
 -WIMEDIA LLC PROTOCOL (WLP) SUBSYSTEM
 -M:    David Vrabel <david.vrabel@csr.com>
 -L:    netdev@vger.kernel.org
 -S:    Maintained
 -F:    include/linux/wlp.h
 -F:    drivers/uwb/wlp/
 -F:    drivers/uwb/i1480/i1480u-wlp/
 -F:    drivers/uwb/i1480/i1480-wlp.h
 -
  WISTRON LAPTOP BUTTON DRIVER
  M:    Miloslav Trmac <mitr@volny.cz>
  S:    Maintained
  F:    drivers/input/misc/wistron_btns.c
  
  WL1251 WIRELESS DRIVER
 -M:    Kalle Valo <kalle.valo@iki.fi>
 +M:    Kalle Valo <kvalo@adurom.com>
  L:    linux-wireless@vger.kernel.org
  W:    http://wireless.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
  S:    Maintained
 -F:    drivers/net/wireless/wl12xx/*
 -X:    drivers/net/wireless/wl12xx/wl1271*
 +F:    drivers/net/wireless/wl1251/*
  
  WL1271 WIRELESS DRIVER
  M:    Luciano Coelho <luciano.coelho@nokia.com>
  L:    linux-wireless@vger.kernel.org
  W:    http://wireless.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git
  S:    Maintained
  F:    drivers/net/wireless/wl12xx/wl1271*
 +F:    include/linux/wl12xx.h
  
  WL3501 WIRELESS PCMCIA CARD DRIVER
  M:    Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
@@@ -6579,10 -6442,8 +6595,10 @@@ F:    include/linux/wm97xx.
  WOLFSON MICROELECTRONICS DRIVERS
  M:    Mark Brown <broonie@opensource.wolfsonmicro.com>
  M:    Ian Lartey <ian@opensource.wolfsonmicro.com>
 +M:    Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
 +T:    git git://opensource.wolfsonmicro.com/linux-2.6-asoc
  T:    git git://opensource.wolfsonmicro.com/linux-2.6-audioplus
 -W:    http://opensource.wolfsonmicro.com/node/8
 +W:    http://opensource.wolfsonmicro.com/content/linux-drivers-wolfson-devices
  S:    Supported
  F:    Documentation/hwmon/wm83??
  F:    drivers/leds/leds-wm83*.c
@@@ -6598,15 -6459,6 +6614,15 @@@ F:    include/linux/mfd/wm8400
  F:    include/sound/wm????.h
  F:    sound/soc/codecs/wm*
  
 +WORKQUEUE
 +M:    Tejun Heo <tj@kernel.org>
 +L:    linux-kernel@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git
 +S:    Maintained
 +F:    include/linux/workqueue.h
 +F:    kernel/workqueue.c
 +F:    Documentation/workqueue.txt
 +
  X.25 NETWORK LAYER
  M:    Andrew Hendry <andrew.hendry@gmail.com>
  L:    linux-x25@vger.kernel.org
@@@ -6632,25 -6484,11 +6648,25 @@@ T:   git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    drivers/platform/x86
  
 +XEN PCI SUBSYSTEM
 +M:    Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
 +L:    xen-devel@lists.xensource.com (moderated for non-subscribers)
 +S:    Supported
 +F:    arch/x86/pci/*xen*
 +F:    drivers/pci/*xen*
 +
 +XEN SWIOTLB SUBSYSTEM
 +M:    Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
 +L:    xen-devel@lists.xensource.com (moderated for non-subscribers)
 +S:    Supported
 +F:    arch/x86/xen/*swiotlb*
 +F:    drivers/xen/*swiotlb*
 +
  XEN HYPERVISOR INTERFACE
 -M:    Jeremy Fitzhardinge <jeremy@xensource.com>
 -M:    Chris Wright <chrisw@sous-sol.org>
 +M:    Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
 +M:    Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
 +L:    xen-devel@lists.xensource.com (moderated for non-subscribers)
  L:    virtualization@lists.osdl.org
 -L:    xen-devel@lists.xensource.com
  S:    Supported
  F:    arch/x86/xen/
  F:    drivers/*/xen-*front.c
@@@ -6727,20 -6565,6 +6743,20 @@@ M:    "Maciej W. Rozycki" <macro@linux-mip
  S:    Maintained
  F:    drivers/serial/zs.*
  
 +GRE DEMULTIPLEXER DRIVER
 +M:    Dmitry Kozlov <xeb@mail.ru>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    net/ipv4/gre.c
 +F:    include/net/gre.h
 +
 +PPTP DRIVER
 +M:    Dmitry Kozlov <xeb@mail.ru>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/pptp.c
 +W:    http://sourceforge.net/projects/accel-pptp
 +
  THE REST
  M:    Linus Torvalds <torvalds@linux-foundation.org>
  L:    linux-kernel@vger.kernel.org
@@@ -127,12 -127,20 +127,20 @@@ struct execute_work 
        .timer = TIMER_INITIALIZER(NULL, 0, 0),                 \
        }
  
+ #define __DEFERRED_WORK_INITIALIZER(n, f) {                   \
+       .work = __WORK_INITIALIZER((n).work, (f)),              \
+       .timer = TIMER_DEFERRED_INITIALIZER(NULL, 0, 0),        \
+       }
  #define DECLARE_WORK(n, f)                                    \
        struct work_struct n = __WORK_INITIALIZER(n, f)
  
  #define DECLARE_DELAYED_WORK(n, f)                            \
        struct delayed_work n = __DELAYED_WORK_INITIALIZER(n, f)
  
+ #define DECLARE_DEFERRED_WORK(n, f)                           \
+       struct delayed_work n = __DEFERRED_WORK_INITIALIZER(n, f)
  /*
   * initialize a work item's function pointer
   */
@@@ -190,7 -198,7 +198,7 @@@ static inline unsigned int work_static(
                __INIT_WORK((_work), (_func), 0);               \
        } while (0)
  
 -#define INIT_WORK_ON_STACK(_work, _func)                      \
 +#define INIT_WORK_ONSTACK(_work, _func)                               \
        do {                                                    \
                __INIT_WORK((_work), (_func), 1);               \
        } while (0)
                init_timer(&(_work)->timer);                    \
        } while (0)
  
 -#define INIT_DELAYED_WORK_ON_STACK(_work, _func)              \
 +#define INIT_DELAYED_WORK_ONSTACK(_work, _func)                       \
        do {                                                    \
 -              INIT_WORK_ON_STACK(&(_work)->work, (_func));    \
 +              INIT_WORK_ONSTACK(&(_work)->work, (_func));     \
                init_timer_on_stack(&(_work)->timer);           \
        } while (0)
  
  #define work_clear_pending(work) \
        clear_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(work))
  
 +/*
 + * Workqueue flags and constants.  For details, please refer to
 + * Documentation/workqueue.txt.
 + */
  enum {
        WQ_NON_REENTRANT        = 1 << 0, /* guarantee non-reentrance */
        WQ_UNBOUND              = 1 << 1, /* not bound to any cpu */
        WQ_FREEZEABLE           = 1 << 2, /* freeze during suspend */
 -      WQ_RESCUER              = 1 << 3, /* has an rescue worker */
 +      WQ_MEM_RECLAIM          = 1 << 3, /* may be used for memory reclaim */
        WQ_HIGHPRI              = 1 << 4, /* high priority */
        WQ_CPU_INTENSIVE        = 1 << 5, /* cpu instensive workqueue */
  
        WQ_DYING                = 1 << 6, /* internal: workqueue is dying */
 +      WQ_RESCUER              = 1 << 7, /* internal: workqueue has rescuer */
  
        WQ_MAX_ACTIVE           = 512,    /* I like 512, better ideas? */
        WQ_MAX_UNBOUND_PER_CPU  = 4,      /* 4 * #cpus for unbound wq */
@@@ -307,30 -310,12 +315,30 @@@ __alloc_workqueue_key(const char *name
        __alloc_workqueue_key((name), (flags), (max_active), NULL, NULL)
  #endif
  
 +/**
 + * alloc_ordered_workqueue - allocate an ordered workqueue
 + * @name: name of the workqueue
 + * @flags: WQ_* flags (only WQ_FREEZEABLE and WQ_MEM_RECLAIM are meaningful)
 + *
 + * Allocate an ordered workqueue.  An ordered workqueue executes at
 + * most one work item at any given time in the queued order.  They are
 + * implemented as unbound workqueues with @max_active of one.
 + *
 + * RETURNS:
 + * Pointer to the allocated workqueue on success, %NULL on failure.
 + */
 +static inline struct workqueue_struct *
 +alloc_ordered_workqueue(const char *name, unsigned int flags)
 +{
 +      return alloc_workqueue(name, WQ_UNBOUND | flags, 1);
 +}
 +
  #define create_workqueue(name)                                        \
 -      alloc_workqueue((name), WQ_RESCUER, 1)
 +      alloc_workqueue((name), WQ_MEM_RECLAIM, 1)
  #define create_freezeable_workqueue(name)                     \
 -      alloc_workqueue((name), WQ_FREEZEABLE | WQ_UNBOUND | WQ_RESCUER, 1)
 +      alloc_workqueue((name), WQ_FREEZEABLE | WQ_UNBOUND | WQ_MEM_RECLAIM, 1)
  #define create_singlethread_workqueue(name)                   \
 -      alloc_workqueue((name), WQ_UNBOUND | WQ_RESCUER, 1)
 +      alloc_workqueue((name), WQ_UNBOUND | WQ_MEM_RECLAIM, 1)
  
  extern void destroy_workqueue(struct workqueue_struct *wq);
  
@@@ -344,6 -329,7 +352,6 @@@ extern int queue_delayed_work_on(int cp
  
  extern void flush_workqueue(struct workqueue_struct *wq);
  extern void flush_scheduled_work(void);
 -extern void flush_delayed_work(struct delayed_work *work);
  
  extern int schedule_work(struct work_struct *work);
  extern int schedule_work_on(int cpu, struct work_struct *work);
@@@ -355,13 -341,8 +363,13 @@@ extern int keventd_up(void)
  
  int execute_in_process_context(work_func_t fn, struct execute_work *);
  
 -extern int flush_work(struct work_struct *work);
 -extern int cancel_work_sync(struct work_struct *work);
 +extern bool flush_work(struct work_struct *work);
 +extern bool flush_work_sync(struct work_struct *work);
 +extern bool cancel_work_sync(struct work_struct *work);
 +
 +extern bool flush_delayed_work(struct delayed_work *dwork);
 +extern bool flush_delayed_work_sync(struct delayed_work *work);
 +extern bool cancel_delayed_work_sync(struct delayed_work *dwork);
  
  extern void workqueue_set_max_active(struct workqueue_struct *wq,
                                     int max_active);
@@@ -375,9 -356,9 +383,9 @@@ extern unsigned int work_busy(struct wo
   * it returns 1 and the work doesn't re-arm itself. Run flush_workqueue() or
   * cancel_work_sync() to wait on it.
   */
 -static inline int cancel_delayed_work(struct delayed_work *work)
 +static inline bool cancel_delayed_work(struct delayed_work *work)
  {
 -      int ret;
 +      bool ret;
  
        ret = del_timer_sync(&work->timer);
        if (ret)
   * if it returns 0 the timer function may be running and the queueing is in
   * progress.
   */
 -static inline int __cancel_delayed_work(struct delayed_work *work)
 +static inline bool __cancel_delayed_work(struct delayed_work *work)
  {
 -      int ret;
 +      bool ret;
  
        ret = del_timer(&work->timer);
        if (ret)
        return ret;
  }
  
 -extern int cancel_delayed_work_sync(struct delayed_work *work);
 -
  /* Obsolete. use cancel_delayed_work_sync() */
  static inline
  void cancel_rearming_delayed_workqueue(struct workqueue_struct *wq,
@@@ -430,4 -413,8 +438,4 @@@ extern bool freeze_workqueues_busy(void
  extern void thaw_workqueues(void);
  #endif /* CONFIG_FREEZER */
  
 -#ifdef CONFIG_LOCKDEP
 -int in_workqueue_context(struct workqueue_struct *wq);
 -#endif
 -
  #endif
diff --combined kernel/hrtimer.c
@@@ -516,10 -516,13 +516,13 @@@ hrtimer_force_reprogram(struct hrtimer_
  
        for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++, base++) {
                struct hrtimer *timer;
+               struct timerqueue_node *next;
  
-               if (!base->first)
+               next = timerqueue_getnext(&base->active);
+               if (!next)
                        continue;
-               timer = rb_entry(base->first, struct hrtimer, node);
+               timer = container_of(next, struct hrtimer, node);
                expires = ktime_sub(hrtimer_get_expires(timer), base->offset);
                /*
                 * clock_was_set() has changed base->offset so the
@@@ -840,48 -843,17 +843,17 @@@ EXPORT_SYMBOL_GPL(hrtimer_forward)
  static int enqueue_hrtimer(struct hrtimer *timer,
                           struct hrtimer_clock_base *base)
  {
-       struct rb_node **link = &base->active.rb_node;
-       struct rb_node *parent = NULL;
-       struct hrtimer *entry;
-       int leftmost = 1;
        debug_activate(timer);
  
-       /*
-        * Find the right place in the rbtree:
-        */
-       while (*link) {
-               parent = *link;
-               entry = rb_entry(parent, struct hrtimer, node);
-               /*
-                * We dont care about collisions. Nodes with
-                * the same expiry time stay together.
-                */
-               if (hrtimer_get_expires_tv64(timer) <
-                               hrtimer_get_expires_tv64(entry)) {
-                       link = &(*link)->rb_left;
-               } else {
-                       link = &(*link)->rb_right;
-                       leftmost = 0;
-               }
-       }
-       /*
-        * Insert the timer to the rbtree and check whether it
-        * replaces the first pending timer
-        */
-       if (leftmost)
-               base->first = &timer->node;
+       timerqueue_add(&base->active, &timer->node);
  
-       rb_link_node(&timer->node, parent, link);
-       rb_insert_color(&timer->node, &base->active);
        /*
         * HRTIMER_STATE_ENQUEUED is or'ed to the current state to preserve the
         * state of a possibly running callback.
         */
        timer->state |= HRTIMER_STATE_ENQUEUED;
  
-       return leftmost;
+       return (&timer->node == base->active.next);
  }
  
  /*
@@@ -901,12 -873,7 +873,7 @@@ static void __remove_hrtimer(struct hrt
        if (!(timer->state & HRTIMER_STATE_ENQUEUED))
                goto out;
  
-       /*
-        * Remove the timer from the rbtree and replace the first
-        * entry pointer if necessary.
-        */
-       if (base->first == &timer->node) {
-               base->first = rb_next(&timer->node);
+       if (&timer->node == timerqueue_getnext(&base->active)) {
  #ifdef CONFIG_HIGH_RES_TIMERS
                /* Reprogram the clock event device. if enabled */
                if (reprogram && hrtimer_hres_active()) {
                }
  #endif
        }
-       rb_erase(&timer->node, &base->active);
+       timerqueue_del(&base->active, &timer->node);
  out:
        timer->state = newstate;
  }
@@@ -931,7 -898,6 +898,7 @@@ static inline in
  remove_hrtimer(struct hrtimer *timer, struct hrtimer_clock_base *base)
  {
        if (hrtimer_is_queued(timer)) {
 +              unsigned long state;
                int reprogram;
  
                /*
                debug_deactivate(timer);
                timer_stats_hrtimer_clear_start_info(timer);
                reprogram = base->cpu_base == &__get_cpu_var(hrtimer_bases);
 -              __remove_hrtimer(timer, base, HRTIMER_STATE_INACTIVE,
 -                               reprogram);
 +              /*
 +               * We must preserve the CALLBACK state flag here,
 +               * otherwise we could move the timer base in
 +               * switch_hrtimer_base.
 +               */
 +              state = timer->state & HRTIMER_STATE_CALLBACK;
 +              __remove_hrtimer(timer, base, state, reprogram);
                return 1;
        }
        return 0;
@@@ -1097,10 -1058,11 +1064,10 @@@ EXPORT_SYMBOL_GPL(hrtimer_cancel)
   */
  ktime_t hrtimer_get_remaining(const struct hrtimer *timer)
  {
 -      struct hrtimer_clock_base *base;
        unsigned long flags;
        ktime_t rem;
  
 -      base = lock_hrtimer_base(timer, &flags);
 +      lock_hrtimer_base(timer, &flags);
        rem = hrtimer_expires_remaining(timer);
        unlock_hrtimer_base(timer, &flags);
  
@@@ -1128,11 -1090,13 +1095,13 @@@ ktime_t hrtimer_get_next_event(void
        if (!hrtimer_hres_active()) {
                for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++, base++) {
                        struct hrtimer *timer;
+                       struct timerqueue_node *next;
  
-                       if (!base->first)
+                       next = timerqueue_getnext(&base->active);
+                       if (!next)
                                continue;
  
-                       timer = rb_entry(base->first, struct hrtimer, node);
+                       timer = container_of(next, struct hrtimer, node);
                        delta.tv64 = hrtimer_get_expires_tv64(timer);
                        delta = ktime_sub(delta, base->get_time());
                        if (delta.tv64 < mindelta.tv64)
@@@ -1162,6 -1126,7 +1131,7 @@@ static void __hrtimer_init(struct hrtim
  
        timer->base = &cpu_base->clock_base[clock_id];
        hrtimer_init_timer_hres(timer);
+       timerqueue_init(&timer->node);
  
  #ifdef CONFIG_TIMER_STATS
        timer->start_site = NULL;
@@@ -1237,9 -1202,6 +1207,9 @@@ static void __run_hrtimer(struct hrtime
                BUG_ON(timer->state != HRTIMER_STATE_CALLBACK);
                enqueue_hrtimer(timer, base);
        }
 +
 +      WARN_ON_ONCE(!(timer->state & HRTIMER_STATE_CALLBACK));
 +
        timer->state &= ~HRTIMER_STATE_CALLBACK;
  }
  
@@@ -1278,14 -1240,14 +1248,14 @@@ retry
  
        for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++) {
                ktime_t basenow;
-               struct rb_node *node;
+               struct timerqueue_node *node;
  
                basenow = ktime_add(now, base->offset);
  
-               while ((node = base->first)) {
+               while ((node = timerqueue_getnext(&base->active))) {
                        struct hrtimer *timer;
  
-                       timer = rb_entry(node, struct hrtimer, node);
+                       timer = container_of(node, struct hrtimer, node);
  
                        /*
                         * The immediate goal for using the softexpires is
@@@ -1441,7 -1403,7 +1411,7 @@@ void hrtimer_run_pending(void
   */
  void hrtimer_run_queues(void)
  {
-       struct rb_node *node;
+       struct timerqueue_node *node;
        struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases);
        struct hrtimer_clock_base *base;
        int index, gettime = 1;
  
        for (index = 0; index < HRTIMER_MAX_CLOCK_BASES; index++) {
                base = &cpu_base->clock_base[index];
-               if (!base->first)
+               if (!timerqueue_getnext(&base->active))
                        continue;
  
                if (gettime) {
  
                raw_spin_lock(&cpu_base->lock);
  
-               while ((node = base->first)) {
+               while ((node = timerqueue_getnext(&base->active))) {
                        struct hrtimer *timer;
  
-                       timer = rb_entry(node, struct hrtimer, node);
+                       timer = container_of(node, struct hrtimer, node);
                        if (base->softirq_time.tv64 <=
                                        hrtimer_get_expires_tv64(timer))
                                break;
@@@ -1630,8 -1591,10 +1599,10 @@@ static void __cpuinit init_hrtimers_cpu
  
        raw_spin_lock_init(&cpu_base->lock);
  
-       for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++)
+       for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++) {
                cpu_base->clock_base[i].cpu_base = cpu_base;
+               timerqueue_init_head(&cpu_base->clock_base[i].active);
+       }
  
        hrtimer_init_hres(cpu_base);
  }
@@@ -1642,10 -1605,10 +1613,10 @@@ static void migrate_hrtimer_list(struc
                                struct hrtimer_clock_base *new_base)
  {
        struct hrtimer *timer;
-       struct rb_node *node;
+       struct timerqueue_node *node;
  
-       while ((node = rb_first(&old_base->active))) {
-               timer = rb_entry(node, struct hrtimer, node);
+       while ((node = timerqueue_getnext(&old_base->active))) {
+               timer = container_of(node, struct hrtimer, node);
                BUG_ON(hrtimer_callback_running(timer));
                debug_deactivate(timer);
  
diff --combined kernel/timer.c
@@@ -37,7 -37,7 +37,7 @@@
  #include <linux/delay.h>
  #include <linux/tick.h>
  #include <linux/kallsyms.h>
 -#include <linux/perf_event.h>
 +#include <linux/irq_work.h>
  #include <linux/sched.h>
  #include <linux/slab.h>
  
@@@ -88,18 -88,6 +88,6 @@@ struct tvec_base boot_tvec_bases
  EXPORT_SYMBOL(boot_tvec_bases);
  static DEFINE_PER_CPU(struct tvec_base *, tvec_bases) = &boot_tvec_bases;
  
- /*
-  * Note that all tvec_bases are 2 byte aligned and lower bit of
-  * base in timer_list is guaranteed to be zero. Use the LSB to
-  * indicate whether the timer is deferrable.
-  *
-  * A deferrable timer will work normally when the system is busy, but
-  * will not cause a CPU to come out of idle just to service it; instead,
-  * the timer will be serviced when the CPU eventually wakes up with a
-  * subsequent non-deferrable timer.
-  */
- #define TBASE_DEFERRABLE_FLAG         (0x1)
  /* Functions below help us manage 'deferrable' flag */
  static inline unsigned int tbase_get_deferrable(struct tvec_base *base)
  {
@@@ -113,8 -101,7 +101,7 @@@ static inline struct tvec_base *tbase_g
  
  static inline void timer_set_deferrable(struct timer_list *timer)
  {
-       timer->base = ((struct tvec_base *)((unsigned long)(timer->base) |
-                                      TBASE_DEFERRABLE_FLAG));
+       timer->base = TBASE_MAKE_DEFERRED(timer->base);
  }
  
  static inline void
@@@ -343,15 -330,6 +330,6 @@@ void set_timer_slack(struct timer_list 
  }
  EXPORT_SYMBOL_GPL(set_timer_slack);
  
- static inline void set_running_timer(struct tvec_base *base,
-                                       struct timer_list *timer)
- {
- #ifdef CONFIG_SMP
-       base->running_timer = timer;
- #endif
- }
  static void internal_add_timer(struct tvec_base *base, struct timer_list *timer)
  {
        unsigned long expires = timer->expires;
@@@ -936,15 -914,12 +914,12 @@@ int del_timer(struct timer_list *timer
  }
  EXPORT_SYMBOL(del_timer);
  
- #ifdef CONFIG_SMP
  /**
   * try_to_del_timer_sync - Try to deactivate a timer
   * @timer: timer do del
   *
   * This function tries to deactivate a timer. Upon successful (ret >= 0)
   * exit the timer is not queued and the handler is not running on any CPU.
-  *
-  * It must not be called from interrupt contexts.
   */
  int try_to_del_timer_sync(struct timer_list *timer)
  {
@@@ -973,6 -948,7 +948,7 @@@ out
  }
  EXPORT_SYMBOL(try_to_del_timer_sync);
  
+ #ifdef CONFIG_SMP
  /**
   * del_timer_sync - deactivate a timer and wait for the handler to finish.
   * @timer: the timer to be deactivated
   *
   * Synchronization rules: Callers must prevent restarting of the timer,
   * otherwise this function is meaningless. It must not be called from
-  * interrupt contexts. The caller must not hold locks which would prevent
+  * hardirq contexts. The caller must not hold locks which would prevent
   * completion of the timer's handler. The timer's handler must not call
   * add_timer_on(). Upon exit the timer is not queued and the handler is
   * not running on any CPU.
  int del_timer_sync(struct timer_list *timer)
  {
  #ifdef CONFIG_LOCKDEP
-       unsigned long flags;
-       local_irq_save(flags);
+       local_bh_disable();
        lock_map_acquire(&timer->lockdep_map);
        lock_map_release(&timer->lockdep_map);
-       local_irq_restore(flags);
+       local_bh_enable();
  #endif
+       /*
+        * don't use it in hardirq context, because it
+        * could lead to deadlock.
+        */
+       WARN_ON(in_irq());
        for (;;) {
                int ret = try_to_del_timer_sync(timer);
                if (ret >= 0)
@@@ -1111,7 -1089,7 +1089,7 @@@ static inline void __run_timers(struct 
  
                        timer_stats_account_timer(timer);
  
-                       set_running_timer(base, timer);
+                       base->running_timer = timer;
                        detach_timer(timer, 1);
  
                        spin_unlock_irq(&base->lock);
                        spin_lock_irq(&base->lock);
                }
        }
-       set_running_timer(base, NULL);
+       base->running_timer = NULL;
        spin_unlock_irq(&base->lock);
  }
  
@@@ -1249,15 -1227,9 +1227,15 @@@ static unsigned long cmp_next_hrtimer_e
   */
  unsigned long get_next_timer_interrupt(unsigned long now)
  {
-       struct tvec_base *base = __get_cpu_var(tvec_bases);
+       struct tvec_base *base = __this_cpu_read(tvec_bases);
        unsigned long expires;
  
 +      /*
 +       * Pretend that there is no timer pending if the cpu is offline.
 +       * Possible pending timers will be migrated later to an active cpu.
 +       */
 +      if (cpu_is_offline(smp_processor_id()))
 +              return now + NEXT_TIMER_MAX_DELTA;
        spin_lock(&base->lock);
        if (time_before_eq(base->next_timer, base->timer_jiffies))
                base->next_timer = __next_timer_interrupt(base);
@@@ -1285,10 -1257,7 +1263,10 @@@ void update_process_times(int user_tick
        run_local_timers();
        rcu_check_callbacks(cpu, user_tick);
        printk_tick();
 -      perf_event_do_pending();
 +#ifdef CONFIG_IRQ_WORK
 +      if (in_irq())
 +              irq_work_run();
 +#endif
        scheduler_tick();
        run_posix_cpu_timers(p);
  }
   */
  static void run_timer_softirq(struct softirq_action *h)
  {
-       struct tvec_base *base = __get_cpu_var(tvec_bases);
+       struct tvec_base *base = __this_cpu_read(tvec_bases);
  
        hrtimer_run_pending();
  
@@@ -1325,7 -1294,7 +1303,7 @@@ void do_timer(unsigned long ticks
  {
        jiffies_64 += ticks;
        update_wall_time();
 -      calc_global_load();
 +      calc_global_load(ticks);
  }
  
  #ifdef __ARCH_WANT_SYS_ALARM